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