1 # RUN: yaml2obj %s > %t 2 # RUN: cp %t %t1 3 # RUN: llvm-objcopy --strip-all --keep-symbol foo %t %t2 4 # RUN: llvm-readobj -sections -symbols %t2 | FileCheck %s 5 6 # Verify that the first run of llvm-objcopy 7 # has not modified the input binary. 8 # RUN: cmp %t %t1 9 10 # RUN: llvm-strip -keep-symbol=foo %t1 11 # RUN: cmp %t1 %t2 12 13 # RUN: cp %t %t3 14 # RUN: llvm-strip --keep-symbol foo %t3 15 # RUN: cmp %t1 %t3 16 17 !ELF 18 FileHeader: 19 Class: ELFCLASS64 20 Data: ELFDATA2LSB 21 Type: ET_REL 22 Machine: EM_X86_64 23 Sections: 24 - Name: .text 25 Type: SHT_PROGBITS 26 Flags: [ SHF_ALLOC, SHF_EXECINSTR ] 27 Address: 0x1000 28 AddressAlign: 0x0000000000000010 29 Size: 64 30 - Name: .gnu.warning.foo 31 Type: SHT_PROGBITS 32 - Name: .debug_bar 33 Type: SHT_PROGBITS 34 Symbols: 35 Local: 36 - Name: foo 37 Type: STT_FUNC 38 Section: .text 39 Value: 0x1000 40 Size: 8 41 - Name: bar 42 Type: STT_FUNC 43 Section: .text 44 Value: 0x1008 45 Size: 8 46 - Name: baz 47 Type: STT_FUNC 48 Section: .text 49 Value: 0x1010 50 Size: 8 51 52 # CHECK: Name: .text 53 # CHECK: Name: .gnu.warning.foo 54 # CHECK: Name: .symtab 55 # CHECK: Name: .strtab 56 # CHECK: Name: .shstrtab 57 # CHECK-NOT: Name: .debug_bar 58 59 #CHECK: Symbols [ 60 #CHECK-NEXT: Symbol { 61 #CHECK-NEXT: Name: 62 #CHECK-NEXT: Value: 0x0 63 #CHECK-NEXT: Size: 0 64 #CHECK-NEXT: Binding: Local 65 #CHECK-NEXT: Type: None 66 #CHECK-NEXT: Other: 0 67 #CHECK-NEXT: Section: Undefined 68 #CHECK-NEXT: } 69 #CHECK-NEXT: Symbol { 70 #CHECK-NEXT: Name: foo 71 #CHECK-NEXT: Value: 0x1000 72 #CHECK-NEXT: Size: 8 73 #CHECK-NEXT: Binding: Local 74 #CHECK-NEXT: Type: Function 75 #CHECK-NEXT: Other: 0 76 #CHECK-NEXT: Section: .text 77 #CHECK-NEXT: } 78 #CHECK-NEXT:] 79