| # REQUIRES: x86-registered-target |
| |
| # RUN: llvm-mc -filetype=obj -triple=x86_64-apple-macos %s -o %t |
| |
| ## A non-existent symbol does not error. |
| # RUN: llvm-objcopy --redefine-sym _func=_cnuf1234 --redefine-sym _foo=_ba --redefine-sym=_notexist= %t %t2 2>&1 | count 0 |
| # RUN: llvm-readobj --symbols %t2 | FileCheck %s |
| |
| # RUN: echo '_func _cnuf1234 #rename func' > %t.rename.txt |
| # RUN: echo ' _foo _ba ' >> %t.rename.txt |
| # RUN: echo '_notexist _notexist' >> %t.rename.txt |
| # RUN: llvm-objcopy --redefine-syms %t.rename.txt %t %t3 2>&1 | count 0 |
| # RUN: cmp %t2 %t3 |
| |
| # CHECK: Symbol { |
| # CHECK-NEXT: Name: _ba (1) |
| # CHECK-NEXT: Extern |
| # CHECK-NEXT: Type: Section (0xE) |
| # CHECK-NEXT: Section: __const (0x2) |
| # CHECK-NEXT: RefType: UndefinedNonLazy (0x0) |
| # CHECK-NEXT: Flags [ (0x0) |
| # CHECK-NEXT: ] |
| # CHECK-NEXT: Value: 0x0 |
| # CHECK-NEXT: } |
| # CHECK-NEXT: Symbol { |
| # CHECK-NEXT: Name: _cnuf1234 (5) |
| # CHECK-NEXT: Extern |
| # CHECK-NEXT: Type: Section (0xE) |
| # CHECK-NEXT: Section: __text (0x1) |
| # CHECK-NEXT: RefType: UndefinedNonLazy (0x0) |
| # CHECK-NEXT: Flags [ (0x0) |
| # CHECK-NEXT: ] |
| # CHECK-NEXT: Value: 0x0 |
| # CHECK-NEXT: } |
| |
| ## Check that --redefine-sym executes before --strip-symbol. |
| # RUN: llvm-objcopy --strip-symbol _foo --redefine-sym _foo=_ba %t %t.notstripped |
| # RUN: llvm-readobj --symbols %t.notstripped | FileCheck %s --check-prefix=NOTSTRIPPED |
| # NOTSTRIPPED: Name: _ba |
| # NOTSTRIPPED: Name: _func |
| |
| ## FIXME: _ba should be stripped after --strip-symbol is implemented. |
| # RUN: llvm-objcopy --strip-symbol _ba --redefine-sym _foo=_ba %t %t.noba |
| # RUN: llvm-readobj --symbols %t.noba | FileCheck %s --check-prefix=NOTSTRIPPED |
| |
| .globl _func |
| _func: |
| |
| .section __TEXT,__const |
| .globl _foo |
| _foo: |