xref: /llvm-project/lld/test/MachO/weak-header-flags.s (revision 4b8962940322fe732126ec583013ecb5b6a1112e)
13da2130eSJez Ng# REQUIRES: x86
2*4b896294SGreg McGary# RUN: rm -rf %t; split-file %s %t
33da2130eSJez Ng
43da2130eSJez Ng# RUN: llvm-mc -filetype=obj -triple=x86_64-apple-darwin %t/libweak-defines.s -o %t/libweak-defines.o
5643ec67aSJez Ng# RUN: %lld -dylib %t/libweak-defines.o -o %t/libweak-defines.dylib
63da2130eSJez Ng# RUN: llvm-readobj --file-headers %t/libweak-defines.dylib | FileCheck %s --check-prefix=WEAK-DEFINES-AND-BINDS
73da2130eSJez Ng
83da2130eSJez Ng# RUN: llvm-mc -filetype=obj -triple=x86_64-apple-darwin %t/binds-to-weak.s -o %t/binds-to-weak.o
9643ec67aSJez Ng# RUN: %lld -lSystem -L%t -lweak-defines -o %t/binds-to-weak %t/binds-to-weak.o
103da2130eSJez Ng# RUN: llvm-readobj --file-headers %t/binds-to-weak | FileCheck %s --check-prefix=WEAK-BINDS-ONLY
113da2130eSJez Ng
122a38dba7SJez Ng# RUN: llvm-mc -filetype=obj -triple=x86_64-apple-darwin %t/overrides-weak.s -o %t/overrides-weak.o
13643ec67aSJez Ng# RUN: %lld -lSystem -L%t -lweak-defines -o %t/overrides-weak %t/overrides-weak.o
142a38dba7SJez Ng# RUN: llvm-readobj --file-headers %t/overrides-weak | FileCheck %s --check-prefix=WEAK-DEFINES-ONLY
152a38dba7SJez Ng
163da2130eSJez Ng# WEAK-DEFINES-AND-BINDS: MH_BINDS_TO_WEAK
173da2130eSJez Ng# WEAK-DEFINES-AND-BINDS: MH_WEAK_DEFINES
183da2130eSJez Ng
193da2130eSJez Ng# WEAK-BINDS-ONLY-NOT:    MH_WEAK_DEFINES
203da2130eSJez Ng# WEAK-BINDS-ONLY:        MH_BINDS_TO_WEAK
213da2130eSJez Ng# WEAK-BINDS-ONLY-NOT:    MH_WEAK_DEFINES
223da2130eSJez Ng
232a38dba7SJez Ng# WEAK-DEFINES-ONLY-NOT:  MH_BINDS_TO_WEAK
242a38dba7SJez Ng# WEAK-DEFINES-ONLY:      MH_WEAK_DEFINES
252a38dba7SJez Ng# WEAK-DEFINES-ONLY-NOT:  MH_BINDS_TO_WEAK
262a38dba7SJez Ng
273da2130eSJez Ng#--- libweak-defines.s
283da2130eSJez Ng
293da2130eSJez Ng.globl _foo
303da2130eSJez Ng.weak_definition _foo
313da2130eSJez Ng_foo:
323da2130eSJez Ng  ret
333da2130eSJez Ng
343da2130eSJez Ng#--- binds-to-weak.s
353da2130eSJez Ng
363da2130eSJez Ng.globl _main
373da2130eSJez Ng_main:
383da2130eSJez Ng  callq _foo
393da2130eSJez Ng  ret
403da2130eSJez Ng
413da2130eSJez Ng## Don't generate MH_WEAK_DEFINES for weak locals
423da2130eSJez Ng.weak_definition _weak_local
433da2130eSJez Ng_weak_local:
442a38dba7SJez Ng
452a38dba7SJez Ng#--- overrides-weak.s
462a38dba7SJez Ng
472a38dba7SJez Ng.globl _main, _foo
482a38dba7SJez Ng_foo:
492a38dba7SJez Ng
502a38dba7SJez Ng_main:
512a38dba7SJez Ng  ret
52