| ## An empty dynamic section is invalid. Test we report a warning instead of an |
| ## error, so that dumping can continue with other objects. |
| # RUN: yaml2obj %s --docnum=1 -o %t.empty |
| # RUN: llvm-objdump -p %t.empty 2>&1 | FileCheck %s -DFILE=%t.empty --check-prefix=EMPTY |
| |
| # EMPTY: Program Header: |
| # EMPTY-NEXT: warning: '[[FILE]]': invalid empty dynamic section |
| # EMPTY-EMPTY: |
| |
| --- !ELF |
| FileHeader: |
| Class: ELFCLASS64 |
| Data: ELFDATA2LSB |
| Type: ET_EXEC |
| Sections: |
| - Name: .dynamic |
| Type: SHT_DYNAMIC |
| |
| # RUN: yaml2obj %s --docnum=2 -o %t.nonull |
| # RUN: llvm-objdump -p %t.nonull 2>&1 | FileCheck %s -DFILE=%t.nonull --check-prefix=NONULL |
| |
| # NONULL: Program Header: |
| # NONULL-NEXT: warning: '[[FILE]]': dynamic sections must be DT_NULL terminated |
| # NONULL-EMPTY: |
| |
| --- !ELF |
| FileHeader: |
| Class: ELFCLASS64 |
| Data: ELFDATA2LSB |
| Type: ET_EXEC |
| Sections: |
| - Name: .dynamic |
| Type: SHT_DYNAMIC |
| Entries: |
| - Tag: DT_SONAME |
| Value: 1 |
| |
| # RUN: yaml2obj %s --docnum=3 -o %t.invalidaddr |
| # RUN: llvm-objdump -p %t.invalidaddr 2>&1 | \ |
| # RUN: FileCheck %s -DFILE=%t.invalidaddr --implicit-check-not=warning: --check-prefix=ADDR |
| |
| # ADDR: Dynamic Section: |
| # ADDR-NEXT: warning: '[[FILE]]': virtual address is not in any segment: 0x474 |
| # ADDR-NEXT: NEEDED 0xffffffffbe5a0b5f |
| # ADDR-NEXT: STRTAB 0x0000000000000474 |
| |
| --- |
| !ELF |
| FileHeader: |
| Class: ELFCLASS64 |
| Data: ELFDATA2LSB |
| Type: ET_DYN |
| Sections: |
| - Name: .dynamic |
| Type: SHT_DYNAMIC |
| Entries: |
| - Tag: DT_NEEDED |
| Value: 0xFFFFFFFFBE5A0B5F |
| - Tag: DT_STRTAB |
| Value: 0x474 |
| - Tag: DT_NULL |
| Value: 0x0 |