1 # RUN: yaml2obj %s > %t 2 # RUN: cp %t %t1 3 # RUN: llvm-objcopy --strip-unneeded %t %t2 4 # Verify that llvm-objcopy has not modified the input. 5 # RUN: cmp %t %t1 6 # RUN: llvm-readobj -symbols %t2 | FileCheck %s 7 8 # Verify that llvm-strip modifies the symbol table the same way. 9 # RUN: llvm-strip --strip-unneeded %t 10 # RUN: cmp %t %t2 11 12 !ELF 13 FileHeader: 14 Class: ELFCLASS64 15 Data: ELFDATA2LSB 16 Type: ET_REL 17 Machine: EM_X86_64 18 Sections: 19 - Name: .text 20 Type: SHT_PROGBITS 21 Flags: [ SHF_ALLOC, SHF_EXECINSTR ] 22 Address: 0x1000 23 AddressAlign: 0x0000000000000010 24 Size: 64 25 - Name: .group 26 Type: SHT_GROUP 27 Link: .symtab 28 AddressAlign: 0x0000000000000004 29 Info: barfoo 30 Members: 31 - SectionOrType: GRP_COMDAT 32 - SectionOrType: .text 33 - Name: .rel.text 34 Type: SHT_REL 35 Link: .symtab 36 Info: .text 37 Relocations: 38 - Offset: 0x1000 39 Symbol: foo 40 Type: R_X86_64_PC32 41 Symbols: 42 Local: 43 - Name: foo 44 Type: STT_FUNC 45 Section: .text 46 Value: 0x1000 47 Size: 8 48 - Name: bar 49 Type: STT_FUNC 50 Size: 8 51 Section: .text 52 Value: 0x1008 53 - Name: barfoo 54 Type: STT_FUNC 55 Size: 8 56 Section: .text 57 Value: 0x1010 58 - Name: fileSymbol 59 Type: STT_FILE 60 - Name: sectionSymbol 61 Type: STT_SECTION 62 Weak: 63 - Name: baz 64 Type: STT_FUNC 65 Size: 8 66 Section: .text 67 Value: 0x1018 68 - Name: foobaz 69 Type: STT_FUNC 70 Global: 71 - Name: foobar 72 Type: STT_FUNC 73 - Name: barbaz 74 Type: STT_FUNC 75 Size: 8 76 Section: .text 77 Value: 0x1020 78 79 #CHECK: Symbols [ 80 #CHECK-NEXT: Symbol { 81 #CHECK-NEXT: Name: 82 #CHECK-NEXT: Value: 0x0 83 #CHECK-NEXT: Size: 0 84 #CHECK-NEXT: Binding: Local 85 #CHECK-NEXT: Type: None 86 #CHECK-NEXT: Other: 0 87 #CHECK-NEXT: Section: Undefined 88 #CHECK-NEXT: } 89 #CHECK-NEXT: Symbol { 90 #CHECK-NEXT: Name: foo 91 #CHECK-NEXT: Value: 0x1000 92 #CHECK-NEXT: Size: 8 93 #CHECK-NEXT: Binding: Local 94 #CHECK-NEXT: Type: Function 95 #CHECK-NEXT: Other: 0 96 #CHECK-NEXT: Section: .text 97 #CHECK-NEXT: } 98 #CHECK-NEXT: Symbol { 99 #CHECK-NEXT: Name: barfoo 100 #CHECK-NEXT: Value: 0x1010 101 #CHECK-NEXT: Size: 8 102 #CHECK-NEXT: Binding: Local 103 #CHECK-NEXT: Type: Function 104 #CHECK-NEXT: Other: 0 105 #CHECK-NEXT: Section: .text 106 #CHECK-NEXT: } 107 #CHECK-NEXT: Symbol { 108 #CHECK-NEXT: Name: fileSymbol 109 #CHECK-NEXT: Value: 0x0 110 #CHECK-NEXT: Size: 0 111 #CHECK-NEXT: Binding: Local 112 #CHECK-NEXT: Type: File 113 #CHECK-NEXT: Other: 0 114 #CHECK-NEXT: Section: Undefined 115 #CHECK-NEXT: } 116 #CHECK-NEXT: Symbol { 117 #CHECK-NEXT: Name: sectionSymbol 118 #CHECK-NEXT: Value: 0x0 119 #CHECK-NEXT: Size: 0 120 #CHECK-NEXT: Binding: Local 121 #CHECK-NEXT: Type: Section 122 #CHECK-NEXT: Other: 0 123 #CHECK-NEXT: Section: Undefined 124 #CHECK-NEXT: } 125 #CHECK-NEXT: Symbol { 126 #CHECK-NEXT: Name: barbaz 127 #CHECK-NEXT: Value: 0x1020 128 #CHECK-NEXT: Size: 8 129 #CHECK-NEXT: Binding: Global 130 #CHECK-NEXT: Type: Function 131 #CHECK-NEXT: Other: 0 132 #CHECK-NEXT: Section: .text 133 #CHECK-NEXT: } 134 #CHECK-NEXT: Symbol { 135 #CHECK-NEXT: Name: baz 136 #CHECK-NEXT: Value: 0x1018 137 #CHECK-NEXT: Size: 8 138 #CHECK-NEXT: Binding: Weak 139 #CHECK-NEXT: Type: Function 140 #CHECK-NEXT: Other: 0 141 #CHECK-NEXT: Section: .text 142 #CHECK-NEXT: } 143 #CHECK-NEXT:] 144