# REQUIRES: x86-registered-target # RUN: llvm-mc -filetype=obj -triple=x86_64-apple-macos %s -o %t # RUN: llvm-objcopy -W _func %t %t2 # RUN: llvm-readobj --symbols %t2 | FileCheck %s -check-prefix=CHECK-1 # CHECK-1: Symbol { # CHECK-1-NEXT: Name: _foo (1) # CHECK-1-NEXT: Extern # CHECK-1-NEXT: Type: Section (0xE) # CHECK-1-NEXT: Section: __const (0x2) # CHECK-1-NEXT: RefType: UndefinedNonLazy (0x0) # CHECK-1-NEXT: Flags [ (0x0) # CHECK-1-NEXT: ] # CHECK-1-NEXT: Value: 0x0 # CHECK-1-NEXT: } # CHECK-1-NEXT: Symbol { # CHECK-1-NEXT: Name: _func (6) # CHECK-1-NEXT: Extern # CHECK-1-NEXT: Type: Section (0xE) # CHECK-1-NEXT: Section: __text (0x1) # CHECK-1-NEXT: RefType: UndefinedNonLazy (0x0) # CHECK-1-NEXT: Flags [ (0x80) # CHECK-1-NEXT: WeakDef (0x80) # CHECK-1-NEXT: ] # CHECK-1-NEXT: Value: 0x0 # CHECK-1-NEXT: } # RUN: echo _foo > %t.weaken.txt # RUN: echo _func >> %t.weaken.txt # RUN: llvm-objcopy --weaken-symbols %t.weaken.txt %t %t3 # RUN: llvm-readobj --symbols %t3 | FileCheck %s -check-prefix=CHECK-2 # CHECK-2: Symbol { # CHECK-2-NEXT: Name: _foo (1) # CHECK-2-NEXT: Extern # CHECK-2-NEXT: Type: Section (0xE) # CHECK-2-NEXT: Section: __const (0x2) # CHECK-2-NEXT: RefType: UndefinedNonLazy (0x0) # CHECK-2-NEXT: Flags [ (0x80) # CHECK-2-NEXT: WeakDef (0x80) # CHECK-2-NEXT: ] # CHECK-2-NEXT: Value: 0x0 # CHECK-2-NEXT: } # CHECK-2-NEXT: Symbol { # CHECK-2-NEXT: Name: _func (6) # CHECK-2-NEXT: Extern # CHECK-2-NEXT: Type: Section (0xE) # CHECK-2-NEXT: Section: __text (0x1) # CHECK-2-NEXT: RefType: UndefinedNonLazy (0x0) # CHECK-2-NEXT: Flags [ (0x80) # CHECK-2-NEXT: WeakDef (0x80) # CHECK-2-NEXT: ] # CHECK-2-NEXT: Value: 0x0 # CHECK-2-NEXT: } ## Verify --weaken-symbol plays nice with --redefine-sym. # RUN: llvm-objcopy -W _foo --redefine-sym _foo=_bar %t %t4 # RUN: llvm-readobj --symbols %t4 | FileCheck %s -check-prefix=CHECK-3 # CHECK-3: Symbol { # CHECK-3-NEXT: Name: _bar (1) # CHECK-3-NEXT: Extern # CHECK-3-NEXT: Type: Section (0xE) # CHECK-3-NEXT: Section: __const (0x2) # CHECK-3-NEXT: RefType: UndefinedNonLazy (0x0) # CHECK-3-NEXT: Flags [ (0x80) # CHECK-3-NEXT: WeakDef (0x80) # CHECK-3-NEXT: ] # CHECK-3-NEXT: Value: 0x0 # CHECK-3-NEXT: } # CHECK-3-NEXT: Symbol { # CHECK-3-NEXT: Name: _func (6) # CHECK-3-NEXT: Extern # CHECK-3-NEXT: Type: Section (0xE) # CHECK-3-NEXT: Section: __text (0x1) # CHECK-3-NEXT: RefType: UndefinedNonLazy (0x0) # CHECK-3-NEXT: Flags [ (0x0) # CHECK-3-NEXT: ] # CHECK-3-NEXT: Value: 0x0 # CHECK-3-NEXT: } .globl _func _func: .section __TEXT,__const .globl _foo _foo: