| # RUN: yaml2obj %s -o %t |
| # RUN: llvm-objcopy --remove-symbol-prefix __pf_ %t %t2 |
| # RUN: llvm-readelf --symbols %t2 | FileCheck %s |
| |
| ## Show that an empty string is permitted as the argument to |
| ## --remove-symbol-prefix. |
| # RUN: llvm-objcopy --remove-symbol-prefix= %t2 %t3 |
| # RUN: cmp %t2 %t3 |
| |
| ## When both options are present, llvm-objcopy should remove |
| ## prefixes first, before adding prefixes. |
| # RUN: llvm-objcopy --prefix-symbols=__1_ %t %t4 |
| # RUN: llvm-objcopy --prefix-symbols=__2_ %t %t5 |
| # RUN: llvm-objcopy --remove-symbol-prefix=__1_ --prefix-symbols=__2_ %t4 %t6 |
| # RUN: cmp %t5 %t6 |
| |
| ## Show that the last --remove-symbol-prefix option wins. |
| # RUN: llvm-objcopy --remove-symbol-prefix=__pf_ --remove-symbol-prefix=__ %t %t7 |
| # RUN: llvm-objcopy --remove-symbol-prefix=__ %t %t8 |
| # RUN: cmp %t7 %t8 |
| |
| !ELF |
| FileHeader: |
| Class: ELFCLASS64 |
| Data: ELFDATA2LSB |
| Type: ET_REL |
| Machine: EM_X86_64 |
| Sections: |
| - Name: .text |
| Type: SHT_PROGBITS |
| Flags: [ SHF_ALLOC, SHF_EXECINSTR ] |
| Address: 0x1000 |
| AddressAlign: 0x0000000000000010 |
| Size: 64 |
| Symbols: |
| - Name: __pf_foo |
| Type: STT_SECTION |
| Section: .text |
| - Name: __pf_bar |
| Type: STT_FILE |
| Section: .text |
| - Name: foobar |
| Type: STT_FUNC |
| Section: .text |
| Binding: STB_GLOBAL |
| - Name: foo__pf_bar1 |
| Type: STT_FUNC |
| Section: .text |
| Binding: STB_GLOBAL |
| - Name: __pf_foo__pf_bar2 |
| Type: STT_FUNC |
| Section: .text |
| Binding: STB_GLOBAL |
| - Name: undef |
| Binding: STB_GLOBAL |
| |
| # CHECK: Symbol table '.symtab' contains 7 entries: |
| # CHECK-NEXT: Name |
| # CHECK-NEXT: {{ $}} |
| # CHECK-NEXT: __pf_foo |
| # CHECK-NEXT: bar |
| # CHECK-NEXT: foobar |
| # CHECK-NEXT: foo__pf_bar1 |
| # CHECK-NEXT: foo__pf_bar2 |
| # CHECK-NEXT: undef |