xref: /llvm-project/llvm/test/tools/llvm-objcopy/ELF/strip-all-and-keep-symbol.test (revision 55c81d4282c5da0189711261a11537bc8a7fe85c)
1*55c81d42SFangrui Song# RUN: yaml2obj %s -o %t
26e4dc6f2SAlexander Shaposhnikov# RUN: cp %t %t1
36e4dc6f2SAlexander Shaposhnikov# RUN: llvm-objcopy --strip-all --keep-symbol foo %t %t2
4298ea3f5SJordan Rupprecht# RUN: llvm-readobj --sections --symbols %t2 | FileCheck %s
56e4dc6f2SAlexander Shaposhnikov
66e4dc6f2SAlexander Shaposhnikov# Verify that the first run of llvm-objcopy
76e4dc6f2SAlexander Shaposhnikov# has not modified the input binary.
86e4dc6f2SAlexander Shaposhnikov# RUN: cmp %t %t1
96e4dc6f2SAlexander Shaposhnikov
10298ea3f5SJordan Rupprecht# RUN: llvm-strip --keep-symbol=foo %t1
116e4dc6f2SAlexander Shaposhnikov# RUN: cmp %t1 %t2
126e4dc6f2SAlexander Shaposhnikov
136e4dc6f2SAlexander Shaposhnikov# RUN: cp %t %t3
146e4dc6f2SAlexander Shaposhnikov# RUN: llvm-strip --keep-symbol foo %t3
156e4dc6f2SAlexander Shaposhnikov# RUN: cmp %t1 %t3
166e4dc6f2SAlexander Shaposhnikov
176e4dc6f2SAlexander Shaposhnikov!ELF
186e4dc6f2SAlexander ShaposhnikovFileHeader:
196e4dc6f2SAlexander Shaposhnikov  Class:           ELFCLASS64
206e4dc6f2SAlexander Shaposhnikov  Data:            ELFDATA2LSB
216e4dc6f2SAlexander Shaposhnikov  Type:            ET_REL
226e4dc6f2SAlexander Shaposhnikov  Machine:         EM_X86_64
236e4dc6f2SAlexander ShaposhnikovSections:
246e4dc6f2SAlexander Shaposhnikov  - Name:            .text
256e4dc6f2SAlexander Shaposhnikov    Type:            SHT_PROGBITS
266e4dc6f2SAlexander Shaposhnikov    Flags:           [ SHF_ALLOC, SHF_EXECINSTR ]
276e4dc6f2SAlexander Shaposhnikov    Address:         0x1000
286e4dc6f2SAlexander Shaposhnikov    AddressAlign:    0x0000000000000010
296e4dc6f2SAlexander Shaposhnikov    Size:            64
306e4dc6f2SAlexander Shaposhnikov  - Name:            .gnu.warning.foo
316e4dc6f2SAlexander Shaposhnikov    Type:            SHT_PROGBITS
326e4dc6f2SAlexander Shaposhnikov  - Name:            .debug_bar
336e4dc6f2SAlexander Shaposhnikov    Type:            SHT_PROGBITS
346e4dc6f2SAlexander ShaposhnikovSymbols:
356e4dc6f2SAlexander Shaposhnikov  - Name:     foo
366e4dc6f2SAlexander Shaposhnikov    Type:     STT_FUNC
376e4dc6f2SAlexander Shaposhnikov    Section:  .text
386e4dc6f2SAlexander Shaposhnikov    Value:    0x1000
396e4dc6f2SAlexander Shaposhnikov    Size:     8
406e4dc6f2SAlexander Shaposhnikov  - Name:     bar
416e4dc6f2SAlexander Shaposhnikov    Type:     STT_FUNC
426e4dc6f2SAlexander Shaposhnikov    Section:  .text
436e4dc6f2SAlexander Shaposhnikov    Value:    0x1008
446e4dc6f2SAlexander Shaposhnikov    Size:     8
456e4dc6f2SAlexander Shaposhnikov  - Name:     baz
466e4dc6f2SAlexander Shaposhnikov    Type:     STT_FUNC
476e4dc6f2SAlexander Shaposhnikov    Section:  .text
486e4dc6f2SAlexander Shaposhnikov    Value:    0x1010
496e4dc6f2SAlexander Shaposhnikov    Size:     8
506e4dc6f2SAlexander Shaposhnikov
516e4dc6f2SAlexander Shaposhnikov# CHECK:     Name: .text
526e4dc6f2SAlexander Shaposhnikov# CHECK:     Name: .gnu.warning.foo
536e4dc6f2SAlexander Shaposhnikov# CHECK:     Name: .symtab
546e4dc6f2SAlexander Shaposhnikov# CHECK:     Name: .strtab
556e4dc6f2SAlexander Shaposhnikov# CHECK:     Name: .shstrtab
566e4dc6f2SAlexander Shaposhnikov# CHECK-NOT: Name: .debug_bar
576e4dc6f2SAlexander Shaposhnikov
586e4dc6f2SAlexander Shaposhnikov#CHECK: Symbols [
596e4dc6f2SAlexander Shaposhnikov#CHECK-NEXT:  Symbol {
606e4dc6f2SAlexander Shaposhnikov#CHECK-NEXT:    Name:
616e4dc6f2SAlexander Shaposhnikov#CHECK-NEXT:    Value: 0x0
626e4dc6f2SAlexander Shaposhnikov#CHECK-NEXT:    Size: 0
636e4dc6f2SAlexander Shaposhnikov#CHECK-NEXT:    Binding: Local
646e4dc6f2SAlexander Shaposhnikov#CHECK-NEXT:    Type: None
656e4dc6f2SAlexander Shaposhnikov#CHECK-NEXT:    Other: 0
666e4dc6f2SAlexander Shaposhnikov#CHECK-NEXT:    Section: Undefined
676e4dc6f2SAlexander Shaposhnikov#CHECK-NEXT:  }
686e4dc6f2SAlexander Shaposhnikov#CHECK-NEXT:  Symbol {
696e4dc6f2SAlexander Shaposhnikov#CHECK-NEXT:    Name: foo
706e4dc6f2SAlexander Shaposhnikov#CHECK-NEXT:    Value: 0x1000
716e4dc6f2SAlexander Shaposhnikov#CHECK-NEXT:    Size: 8
726e4dc6f2SAlexander Shaposhnikov#CHECK-NEXT:    Binding: Local
736e4dc6f2SAlexander Shaposhnikov#CHECK-NEXT:    Type: Function
746e4dc6f2SAlexander Shaposhnikov#CHECK-NEXT:    Other: 0
756e4dc6f2SAlexander Shaposhnikov#CHECK-NEXT:    Section: .text
766e4dc6f2SAlexander Shaposhnikov#CHECK-NEXT:  }
776e4dc6f2SAlexander Shaposhnikov#CHECK-NEXT:]
78