# REQUIRES: x86 # RUN: split-file %s %t # RUN: llvm-mc -filetype=obj -triple=x86_64 %t/main.s -o %t/main.o # RUN: llvm-mc -filetype=obj -triple=x86_64 %t/a.s -o %t/a.o # RUN: llvm-mc -filetype=obj -triple=x86_64 %t/b.s -o %t/b.o ## foo and __foo are interconnected and defined in two lazy object files. ## Test we resolve both to the same file. # RUN: ld.lld -y a -y foo -y __foo %t/main.o --start-lib %t/a.o %t/b.o --end-lib -o /dev/null | FileCheck %s # CHECK: a.o: lazy definition of a # CHECK-NEXT: a.o: lazy definition of foo # CHECK-NEXT: a.o: lazy definition of __foo # CHECK-NEXT: b.o: definition of foo # CHECK-NEXT: b.o: definition of __foo # CHECK-NEXT: b.o: reference to a # CHECK-NEXT: a.o: definition of a #--- main.s .globl _start _start: call b #--- a.s .globl a .weak foo a: foo: .weak __foo __foo: #--- b.s .globl b .weak foo b: call a foo: .weak __foo __foo: