## 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: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 O .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