90 lines · plain
1# REQUIRES: x86-registered-target2 3# RUN: llvm-mc -filetype=obj -triple=x86_64-apple-macos %s -o %t4 5# RUN: llvm-objcopy -W _func %t %t26# RUN: llvm-readobj --symbols %t2 | FileCheck %s -check-prefix=CHECK-17 8# CHECK-1: Symbol {9# CHECK-1-NEXT: Name: _foo (1)10# CHECK-1-NEXT: Extern11# CHECK-1-NEXT: Type: Section (0xE)12# CHECK-1-NEXT: Section: __const (0x2)13# CHECK-1-NEXT: RefType: UndefinedNonLazy (0x0)14# CHECK-1-NEXT: Flags [ (0x0)15# CHECK-1-NEXT: ]16# CHECK-1-NEXT: Value: 0x017# CHECK-1-NEXT: }18# CHECK-1-NEXT: Symbol {19# CHECK-1-NEXT: Name: _func (6)20# CHECK-1-NEXT: Extern21# CHECK-1-NEXT: Type: Section (0xE)22# CHECK-1-NEXT: Section: __text (0x1)23# CHECK-1-NEXT: RefType: UndefinedNonLazy (0x0)24# CHECK-1-NEXT: Flags [ (0x80)25# CHECK-1-NEXT: WeakDef (0x80)26# CHECK-1-NEXT: ]27# CHECK-1-NEXT: Value: 0x028# CHECK-1-NEXT: }29 30# RUN: echo _foo > %t.weaken.txt31# RUN: echo _func >> %t.weaken.txt32# RUN: llvm-objcopy --weaken-symbols %t.weaken.txt %t %t333# RUN: llvm-readobj --symbols %t3 | FileCheck %s -check-prefix=CHECK-234 35# CHECK-2: Symbol {36# CHECK-2-NEXT: Name: _foo (1)37# CHECK-2-NEXT: Extern38# CHECK-2-NEXT: Type: Section (0xE)39# CHECK-2-NEXT: Section: __const (0x2)40# CHECK-2-NEXT: RefType: UndefinedNonLazy (0x0)41# CHECK-2-NEXT: Flags [ (0x80)42# CHECK-2-NEXT: WeakDef (0x80)43# CHECK-2-NEXT: ]44# CHECK-2-NEXT: Value: 0x045# CHECK-2-NEXT: }46# CHECK-2-NEXT: Symbol {47# CHECK-2-NEXT: Name: _func (6)48# CHECK-2-NEXT: Extern49# CHECK-2-NEXT: Type: Section (0xE)50# CHECK-2-NEXT: Section: __text (0x1)51# CHECK-2-NEXT: RefType: UndefinedNonLazy (0x0)52# CHECK-2-NEXT: Flags [ (0x80)53# CHECK-2-NEXT: WeakDef (0x80)54# CHECK-2-NEXT: ]55# CHECK-2-NEXT: Value: 0x056# CHECK-2-NEXT: }57 58## Verify --weaken-symbol plays nice with --redefine-sym.59# RUN: llvm-objcopy -W _foo --redefine-sym _foo=_bar %t %t460# RUN: llvm-readobj --symbols %t4 | FileCheck %s -check-prefix=CHECK-361 62# CHECK-3: Symbol {63# CHECK-3-NEXT: Name: _bar (1)64# CHECK-3-NEXT: Extern65# CHECK-3-NEXT: Type: Section (0xE)66# CHECK-3-NEXT: Section: __const (0x2)67# CHECK-3-NEXT: RefType: UndefinedNonLazy (0x0)68# CHECK-3-NEXT: Flags [ (0x80)69# CHECK-3-NEXT: WeakDef (0x80)70# CHECK-3-NEXT: ]71# CHECK-3-NEXT: Value: 0x072# CHECK-3-NEXT: }73# CHECK-3-NEXT: Symbol {74# CHECK-3-NEXT: Name: _func (6)75# CHECK-3-NEXT: Extern76# CHECK-3-NEXT: Type: Section (0xE)77# CHECK-3-NEXT: Section: __text (0x1)78# CHECK-3-NEXT: RefType: UndefinedNonLazy (0x0)79# CHECK-3-NEXT: Flags [ (0x0)80# CHECK-3-NEXT: ]81# CHECK-3-NEXT: Value: 0x082# CHECK-3-NEXT: }83 84.globl _func85_func:86 87.section __TEXT,__const88.globl _foo89_foo:90