1# REQUIRES: x86 2# RUN: rm -rf %t; split-file %s %t 3 4## This test demonstrates that when we have two weak symbols of the same type, 5## we pick the one whose containing file appears earlier in the command-line 6## invocation. 7 8# RUN: llvm-mc -filetype=obj -triple=x86_64-apple-darwin %t/test.s -o %t/test.o 9# RUN: llvm-mc -filetype=obj -triple=x86_64-apple-darwin %t/weak1.s -o %t/weak1.o 10# RUN: llvm-mc -filetype=obj -triple=x86_64-apple-darwin %t/weak2.s -o %t/weak2.o 11 12# RUN: %lld -lSystem -o %t/obj12 %t/weak1.o %t/weak2.o %t/test.o 13# RUN: llvm-objdump --syms %t/obj12 | FileCheck %s --check-prefix=WEAK1 14# RUN: %lld -lSystem -o %t/obj21 %t/weak2.o %t/weak1.o %t/test.o 15# RUN: llvm-objdump --syms %t/obj21 | FileCheck %s --check-prefix=WEAK2 16 17# WEAK1: O __TEXT,weak1 _foo 18# WEAK2: O __TEXT,weak2 _foo 19 20# RUN: %lld -dylib -install_name \ 21# RUN: @executable_path/libweak1.dylib %t/weak1.o -o %t/libweak1.dylib 22# RUN: %lld -dylib -install_name \ 23# RUN: @executable_path/libweak2.dylib %t/weak2.o -o %t/libweak2.dylib 24 25# RUN: %lld -lSystem -o %t/dylib12 -L%t -lweak1 -lweak2 %t/test.o 26# RUN: llvm-objdump --macho --bind %t/dylib12 | FileCheck %s --check-prefix=DYLIB1 27# RUN: %lld -lSystem -o %t/dylib21 -L%t -lweak2 -lweak1 %t/test.o 28# RUN: llvm-objdump --macho --bind %t/dylib21 | FileCheck %s --check-prefix=DYLIB2 29# DYLIB1: __DATA __la_symbol_ptr 0x{{[0-9a-f]*}} pointer 0 libweak1 _foo 30# DYLIB2: __DATA __la_symbol_ptr 0x{{[0-9a-f]*}} pointer 0 libweak2 _foo 31 32#--- weak1.s 33.globl _foo 34.weak_definition _foo 35.section __TEXT,weak1; 36_foo: 37 38#--- weak2.s 39.globl _foo 40.weak_definition _foo 41.section __TEXT,weak2 42_foo: 43 44#--- test.s 45.globl _main 46_main: 47 callq _foo 48 ret 49