| ## Test how --syms/-t prints the static symbol table. |
| # RUN: yaml2obj --docnum=1 %s -o %t |
| # RUN: llvm-objdump --syms %t > %t.txt |
| # RUN: llvm-objdump -t %t | cmp - %t.txt |
| # RUN: FileCheck %s --input-file=%t.txt --match-full-lines --strict-whitespace |
| |
| # CHECK:{{.*}}file format elf64-x86-64 |
| #CHECK-EMPTY: |
| # CHECK-NEXT:SYMBOL TABLE: |
| # CHECK-NEXT:0000000000000000 l df *ABS* 0000000000000000 a.c |
| # CHECK-NEXT:0000000000000000 l d .text 0000000000000000 .text |
| # CHECK-NEXT:0000000000002000 l O .data 0000000000000000 local_object |
| # CHECK-NEXT:0000000000001fff l F .text 0000000000000000 local_func |
| # CHECK-NEXT:0000000000000000 l *ABS* 0000000000000000 local_abs |
| # CHECK-NEXT:0000000000000000 g .data 0000000000000000 notype |
| # CHECK-NEXT:0000000000000000 g O .data 0000000000000010 object |
| # CHECK-NEXT:0000000000000000 g F .text 000000000000000f func |
| # CHECK-NEXT:0000000000000000 g O *COM* 0000000000000000 common |
| # CHECK-NEXT:0000000000000000 g .data 0000000000000000 tls |
| # CHECK-NEXT:0000000000000000 g i .text 0000000000000000 ifunc |
| # CHECK-NEXT:0000000000000000 g .text 0000000000000000 invalid_type |
| # CHECK-NEXT:0000000000000000 g .text 0000000000000000 STT_HIOS |
| # CHECK-NEXT:0000000000000000 g .text 0000000000000000 STT_LOPROC |
| # CHECK-NEXT:0000000000000000 *UND* 0000000000000000 undef |
| # CHECK-NEXT:0000000000000000 *UND* 0000000000000000 SHN_LOPROC |
| # CHECK-NEXT:0000000000000000 *UND* 0000000000000000 SHN_LOOS |
| # CHECK-NEXT:0000000000000000 *UND* 0000000000000000 reserve |
| # CHECK-NEXT:0000000000000000 g *ABS* 0000000000000000 abs |
| # CHECK-NEXT:0000000000000000 *COM* 0000000000000000 common2 |
| # CHECK-NEXT:0000000000000000 u O .data 0000000000000000 gnu_unique |
| # CHECK-NEXT:0000000000000000 g .data 0000000000000000 invalid_binding |
| # CHECK-NEXT:0000000000000000 g .data 0000000000000000 STB_HIOS |
| # CHECK-NEXT:0000000000000000 g .data 0000000000000000 STB_LOPROC |
| |
| --- !ELF |
| FileHeader: |
| Class: ELFCLASS64 |
| Data: ELFDATA2LSB |
| Type: ET_EXEC |
| Machine: EM_X86_64 |
| Sections: |
| - Name: .text |
| Type: SHT_PROGBITS |
| - Name: .data |
| Type: SHT_PROGBITS |
| Symbols: |
| - Name: "a.c" |
| Type: STT_FILE |
| Index: SHN_ABS |
| - Type: STT_SECTION |
| Section: .text |
| - Name: local_object |
| Type: STT_OBJECT |
| Section: .data |
| Value: 0x2000 |
| - Name: local_func |
| Type: STT_FUNC |
| Section: .text |
| Value: 0x1fff |
| - Name: local_abs |
| Index: SHN_ABS |
| - Name: notype |
| Binding: STB_GLOBAL |
| Section: .data |
| - Name: object |
| Type: STT_OBJECT |
| Size: 0x10 |
| Binding: STB_GLOBAL |
| Section: .data |
| - Name: func |
| Type: STT_FUNC |
| Size: 0xf |
| Binding: STB_GLOBAL |
| Section: .text |
| - Name: common |
| Type: STT_COMMON |
| Binding: STB_GLOBAL |
| Section: .data |
| - Name: tls |
| Type: STT_TLS |
| Binding: STB_GLOBAL |
| Section: .data |
| - Name: ifunc |
| Type: STT_GNU_IFUNC |
| Binding: STB_GLOBAL |
| Section: .text |
| - Name: invalid_type |
| Type: 7 |
| Binding: STB_GLOBAL |
| Section: .text |
| - Name: STT_HIOS |
| Type: 12 |
| Binding: STB_GLOBAL |
| Section: .text |
| - Name: STT_LOPROC |
| Type: 13 |
| Binding: STB_GLOBAL |
| Section: .text |
| - Name: undef |
| Binding: STB_GLOBAL |
| - Name: SHN_LOPROC |
| Binding: STB_GLOBAL |
| Index: 0xff00 |
| - Name: SHN_LOOS |
| Binding: STB_GLOBAL |
| Index: 0xff20 |
| - Name: reserve |
| Binding: STB_GLOBAL |
| Index: 0xff40 |
| - Name: abs |
| Index: SHN_ABS |
| Binding: STB_GLOBAL |
| - Name: common2 |
| Binding: STB_GLOBAL |
| Index: SHN_COMMON |
| - Name: gnu_unique |
| Type: STT_OBJECT |
| Binding: STB_GNU_UNIQUE |
| Section: .data |
| - Name: invalid_binding |
| Binding: 3 |
| Section: .data |
| - Name: STB_HIOS |
| Binding: 12 |
| Section: .data |
| - Name: STB_LOPROC |
| Binding: 13 |
| Section: .data |
| |
| ## For an ELF32 object, print the address and size fields as 32-bit hexadecimals. |
| # RUN: yaml2obj --docnum=2 -D BITS=32 %s -o %t.32 |
| # RUN: llvm-objdump --syms %t.32 | FileCheck --check-prefix=ELF32 %s --match-full-lines --strict-whitespace |
| ## For an ELF64 object, print the address and size fields as 64-bit hexadecimals. |
| # RUN: yaml2obj --docnum=2 -D BITS=64 %s -o %t.64 |
| # RUN: llvm-objdump --syms %t.64 | FileCheck --check-prefix=ELF64 %s --match-full-lines --strict-whitespace |
| |
| # ELF32:SYMBOL TABLE: |
| # ELF32-NEXT:00000000 *UND* 00000000 sym |
| |
| # ELF64:SYMBOL TABLE: |
| # ELF64-NEXT:0000000000000000 *UND* 0000000000000000 sym |
| |
| --- !ELF |
| FileHeader: |
| Class: ELFCLASS[[BITS]] |
| Data: ELFDATA2LSB |
| Type: ET_EXEC |
| Machine: EM_X86_64 |
| Symbols: |
| - Name: sym |