155c81d42SFangrui Song# RUN: yaml2obj %s -o %t 26e4dc6f2SAlexander Shaposhnikov# RUN: llvm-objcopy --discard-all -K foo --keep-symbol bar %t %t2 36e4dc6f2SAlexander Shaposhnikov# RUN: llvm-objcopy -K foo -N foo -N bar --keep-symbol bar -N baz %t %t3 4f324f6dcSEugene Leviant# RUN: llvm-objcopy --discard-all --regex -K '^ba.*' %t %t4 5298ea3f5SJordan Rupprecht# RUN: llvm-readobj --symbols %t2 | FileCheck %s 6298ea3f5SJordan Rupprecht# RUN: llvm-readobj --symbols %t3 | FileCheck %s 7f324f6dcSEugene Leviant# RUN: llvm-readobj --symbols %t4 | FileCheck %s --check-prefix=REGEX 86e4dc6f2SAlexander Shaposhnikov 9f2baddb0SYi Kong# RUN: echo 'foo' > %t.symbols 10f2baddb0SYi Kong# RUN: echo 'bar' >> %t.symbols 11*1562e455SJames Henderson# RUN: echo '.* # no regex without --regex' >> %t.symbols 12f2baddb0SYi Kong# RUN: llvm-objcopy --discard-all --keep-symbols %t.symbols %t %t5 13f2baddb0SYi Kong# RUN: llvm-objcopy -K foo -N foo -N bar --keep-symbols %t.symbols -N baz %t %t6 14f2baddb0SYi Kong# RUN: llvm-readobj --symbols %t5 | FileCheck %s 15f2baddb0SYi Kong# RUN: llvm-readobj --symbols %t6 | FileCheck %s 16f2baddb0SYi Kong 17*1562e455SJames Henderson# RUN: echo 'f.*' > %t.symbols.regex 18*1562e455SJames Henderson# RUN: echo '.*ar' >> %t.symbols.regex 19*1562e455SJames Henderson# RUN: llvm-objcopy --discard-all --keep-symbols %t.symbols.regex --regex %t %t7 20*1562e455SJames Henderson# RUN: cmp %t6 %t7 21*1562e455SJames Henderson 226e4dc6f2SAlexander Shaposhnikov!ELF 236e4dc6f2SAlexander ShaposhnikovFileHeader: 246e4dc6f2SAlexander Shaposhnikov Class: ELFCLASS64 256e4dc6f2SAlexander Shaposhnikov Data: ELFDATA2LSB 266e4dc6f2SAlexander Shaposhnikov Type: ET_REL 276e4dc6f2SAlexander Shaposhnikov Machine: EM_X86_64 286e4dc6f2SAlexander ShaposhnikovSections: 296e4dc6f2SAlexander Shaposhnikov - Name: .text 306e4dc6f2SAlexander Shaposhnikov Type: SHT_PROGBITS 316e4dc6f2SAlexander Shaposhnikov Flags: [ SHF_ALLOC, SHF_EXECINSTR ] 326e4dc6f2SAlexander Shaposhnikov Address: 0x1000 336e4dc6f2SAlexander Shaposhnikov AddressAlign: 0x0000000000000010 346e4dc6f2SAlexander Shaposhnikov Size: 64 356e4dc6f2SAlexander ShaposhnikovSymbols: 366e4dc6f2SAlexander Shaposhnikov - Name: foo 376e4dc6f2SAlexander Shaposhnikov Type: STT_FUNC 386e4dc6f2SAlexander Shaposhnikov Section: .text 396e4dc6f2SAlexander Shaposhnikov Value: 0x1000 406e4dc6f2SAlexander Shaposhnikov Size: 8 416e4dc6f2SAlexander Shaposhnikov - Name: bar 426e4dc6f2SAlexander Shaposhnikov Type: STT_FUNC 436e4dc6f2SAlexander Shaposhnikov Section: .text 446e4dc6f2SAlexander Shaposhnikov Value: 0x1008 456e4dc6f2SAlexander Shaposhnikov Size: 8 466e4dc6f2SAlexander Shaposhnikov - Name: baz 476e4dc6f2SAlexander Shaposhnikov Type: STT_FUNC 486e4dc6f2SAlexander Shaposhnikov Section: .text 496e4dc6f2SAlexander Shaposhnikov Value: 0x1010 506e4dc6f2SAlexander Shaposhnikov Size: 8 516e4dc6f2SAlexander Shaposhnikov 526e4dc6f2SAlexander Shaposhnikov#CHECK: Symbols [ 536e4dc6f2SAlexander Shaposhnikov#CHECK-NEXT: Symbol { 546e4dc6f2SAlexander Shaposhnikov#CHECK-NEXT: Name: 556e4dc6f2SAlexander Shaposhnikov#CHECK-NEXT: Value: 0x0 566e4dc6f2SAlexander Shaposhnikov#CHECK-NEXT: Size: 0 576e4dc6f2SAlexander Shaposhnikov#CHECK-NEXT: Binding: Local 586e4dc6f2SAlexander Shaposhnikov#CHECK-NEXT: Type: None 596e4dc6f2SAlexander Shaposhnikov#CHECK-NEXT: Other: 0 606e4dc6f2SAlexander Shaposhnikov#CHECK-NEXT: Section: Undefined 616e4dc6f2SAlexander Shaposhnikov#CHECK-NEXT: } 626e4dc6f2SAlexander Shaposhnikov#CHECK-NEXT: Symbol { 636e4dc6f2SAlexander Shaposhnikov#CHECK-NEXT: Name: foo 646e4dc6f2SAlexander Shaposhnikov#CHECK-NEXT: Value: 0x1000 656e4dc6f2SAlexander Shaposhnikov#CHECK-NEXT: Size: 8 666e4dc6f2SAlexander Shaposhnikov#CHECK-NEXT: Binding: Local 676e4dc6f2SAlexander Shaposhnikov#CHECK-NEXT: Type: Function 686e4dc6f2SAlexander Shaposhnikov#CHECK-NEXT: Other: 0 696e4dc6f2SAlexander Shaposhnikov#CHECK-NEXT: Section: .text 706e4dc6f2SAlexander Shaposhnikov#CHECK-NEXT: } 716e4dc6f2SAlexander Shaposhnikov#CHECK-NEXT: Symbol { 726e4dc6f2SAlexander Shaposhnikov#CHECK-NEXT: Name: bar 736e4dc6f2SAlexander Shaposhnikov#CHECK-NEXT: Value: 0x1008 746e4dc6f2SAlexander Shaposhnikov#CHECK-NEXT: Size: 8 756e4dc6f2SAlexander Shaposhnikov#CHECK-NEXT: Binding: Local 766e4dc6f2SAlexander Shaposhnikov#CHECK-NEXT: Type: Function 776e4dc6f2SAlexander Shaposhnikov#CHECK-NEXT: Other: 0 786e4dc6f2SAlexander Shaposhnikov#CHECK-NEXT: Section: .text 796e4dc6f2SAlexander Shaposhnikov#CHECK-NEXT: } 806e4dc6f2SAlexander Shaposhnikov#CHECK-NEXT:] 81f324f6dcSEugene Leviant 82f324f6dcSEugene Leviant#REGEX: Symbols [ 83f324f6dcSEugene Leviant#REGEX-NOT: foo 84f324f6dcSEugene Leviant#REGEX: Name: bar 85f324f6dcSEugene Leviant#REGEX: Name: baz 86f324f6dcSEugene Leviant#REGEX: ] 87