llvm-project/lld/test/MachO/resolution.s
Jez Ng 2f4cfa3c7a [lld-macho] Avoid explicit -arch in tests by defaulting to x86-64
Summary:
As mentioned in https://reviews.llvm.org/D81326#2093931, I'm not sure it
makes sense to use the default target triple to determine -arch.
Long-term we should probably detect it from the input object files, but
in the meantime it would be nice not to have to add it to all our tests
by using a convenient default.

Reviewers: #lld-macho

Subscribers: arphaman, llvm-commits

Tags: #llvm

Differential Revision: https://reviews.llvm.org/D81983
2020-06-17 20:41:27 -07:00

45 lines
1.9 KiB
ArmAsm

# REQUIRES: x86
# RUN: mkdir -p %t
# RUN: echo '.globl _foo, _bar, _baz; _foo: _bar: _baz:' | \
# RUN: llvm-mc -filetype=obj -triple=x86_64-apple-darwin -o %t/libresolution.o
# RUN: lld -flavor darwinnew -dylib -install_name \
# RUN: @executable_path/libresolution.dylib %t/libresolution.o -o %t/libresolution.dylib
# RUN: lld -flavor darwinnew -dylib -install_name \
# RUN: @executable_path/libresolution2.dylib %t/libresolution.o -o %t/libresolution2.dylib
# RUN: llvm-mc -filetype=obj -triple=x86_64-apple-darwin %s -o %t/resolution.o
## Check that we select the symbol defined in the first dylib passed on the
## command line.
# RUN: lld -flavor darwinnew -o %t/dylib-first -Z -L%t -lresolution -lresolution2 %t/resolution.o
# RUN: llvm-objdump --macho --bind %t/dylib-first | FileCheck %s --check-prefix=DYLIB-FIRST
# DYLIB-FIRST: libresolution _foo
# RUN: lld -flavor darwinnew -o %t/dylib2-first -Z -L%t -lresolution2 -lresolution %t/resolution.o
# RUN: llvm-objdump --macho --bind %t/dylib2-first | FileCheck %s --check-prefix=DYLIB2-FIRST
# DYLIB2-FIRST: libresolution2 _foo
## Also check that defined symbols take precedence over dylib symbols.
# DYLIB-FIRST-NOT: libresolution _bar
# DYLIB-FIRST-NOT: libresolution _baz
## Check that we pick the dylib symbol over the undefined symbol in the object
## file, even if the object file appears first on the command line.
# RUN: lld -flavor darwinnew -o %t/obj-first -Z -L%t %t/resolution.o -lresolution
# RUN: llvm-objdump --macho --bind %t/obj-first | FileCheck %s --check-prefix=OBJ-FIRST
# OBJ-FIRST: libresolution _foo
## But defined symbols should still take precedence.
# OBJ-FIRST-NOT: libresolution _bar
# OBJ-FIRST-NOT: libresolution _baz
.globl _main, _bar
# Global defined symbol
_bar:
# Local defined symbol
_baz:
_main:
movq _foo@GOTPCREL(%rip), %rsi
movq _bar@GOTPCREL(%rip), %rsi
movq _baz@GOTPCREL(%rip), %rsi
ret