forked from OSchip/llvm-project
lld: improve the `-arch` handling for MachO
Use the default target triple configured by the user to determine the default architecture for `ld64.lld`. Stash the architecture in the configuration as when linking against TBDs, we will need to filter out the symbols based upon the architecture. Treat the Haswell slice as it is equivalent to `x86_64` but with the extra Haswell extensions (e.g. AVX2, FMA3, BMI1, etc). This will make it easier to add new architectures in the future. This change also changes the failure mode where an invalid `-arch` parameter will result in the linker exiting without further processing.
This commit is contained in:
parent
22c2dc5931
commit
fcdf7578aa
|
@ -12,6 +12,7 @@
|
|||
#include "llvm/ADT/DenseMap.h"
|
||||
#include "llvm/ADT/StringRef.h"
|
||||
#include "llvm/BinaryFormat/MachO.h"
|
||||
#include "llvm/TextAPI/MachO/Architecture.h"
|
||||
|
||||
#include <vector>
|
||||
|
||||
|
@ -26,6 +27,7 @@ struct Configuration {
|
|||
bool hasReexports = false;
|
||||
llvm::StringRef installName;
|
||||
llvm::StringRef outputFile;
|
||||
llvm::MachO::Architecture arch;
|
||||
llvm::MachO::HeaderFileType outputType;
|
||||
std::vector<llvm::StringRef> searchPaths;
|
||||
llvm::DenseMap<llvm::StringRef, SymbolPriorityEntry> priorities;
|
||||
|
|
|
@ -27,6 +27,7 @@
|
|||
#include "llvm/ADT/StringRef.h"
|
||||
#include "llvm/BinaryFormat/MachO.h"
|
||||
#include "llvm/BinaryFormat/Magic.h"
|
||||
#include "llvm/Config/config.h"
|
||||
#include "llvm/Object/Archive.h"
|
||||
#include "llvm/Option/ArgList.h"
|
||||
#include "llvm/Option/Option.h"
|
||||
|
@ -90,10 +91,16 @@ static Optional<std::string> findLibrary(StringRef name) {
|
|||
}
|
||||
|
||||
static TargetInfo *createTargetInfo(opt::InputArgList &args) {
|
||||
StringRef s = args.getLastArgValue(OPT_arch, "x86_64");
|
||||
if (s != "x86_64")
|
||||
error("missing or unsupported -arch " + s);
|
||||
return createX86_64TargetInfo();
|
||||
StringRef arch = llvm::Triple(LLVM_DEFAULT_TARGET_TRIPLE).getArchName();
|
||||
config->arch = llvm::MachO::getArchitectureFromName(
|
||||
args.getLastArgValue(OPT_arch, arch));
|
||||
switch (config->arch) {
|
||||
case llvm::MachO::AK_x86_64:
|
||||
case llvm::MachO::AK_x86_64h:
|
||||
return createX86_64TargetInfo();
|
||||
default:
|
||||
fatal("missing or unsupported -arch " + args.getLastArgValue(OPT_arch));
|
||||
}
|
||||
}
|
||||
|
||||
static std::vector<StringRef> getSearchPaths(opt::InputArgList &args) {
|
||||
|
|
|
@ -7,7 +7,7 @@
|
|||
|
||||
# RUN: rm -f %t/test.a
|
||||
# RUN: llvm-ar rcs %t/test.a %t/2.o %t/3.o %t/4.o
|
||||
# RUN: lld -flavor darwinnew %t/main.o %t/test.a -o %t/test.out
|
||||
# RUN: lld -flavor darwinnew -arch x86_64 %t/main.o %t/test.a -o %t/test.out
|
||||
|
||||
## TODO: Run llvm-nm -p to validate symbol order
|
||||
# RUN: llvm-nm %t/test.out | FileCheck %s
|
||||
|
@ -16,7 +16,7 @@
|
|||
# CHECK: T _main
|
||||
|
||||
## Linking with the archive first in the command line shouldn't change anything
|
||||
# RUN: lld -flavor darwinnew %t/test.a %t/main.o -o %t/test.out
|
||||
# RUN: lld -flavor darwinnew -arch x86_64 %t/test.a %t/main.o -o %t/test.out
|
||||
# RUN: llvm-nm %t/test.out | FileCheck %s --check-prefix ARCHIVE-FIRST
|
||||
# ARCHIVE-FIRST: T _bar
|
||||
# ARCHIVE-FIRST: T _boo
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
# REQUIRES: x86
|
||||
# RUN: llvm-mc -filetype=obj -triple=x86_64-apple-darwin %s -o %t.o
|
||||
|
||||
# RUN: lld -flavor darwinnew -dylib -install_name @executable_path/libfoo.dylib \
|
||||
# RUN: lld -flavor darwinnew -arch x86_64 -dylib -install_name @executable_path/libfoo.dylib \
|
||||
# RUN: %t.o -o %t.dylib
|
||||
# RUN: llvm-objdump --macho --dylib-id %t.dylib | FileCheck %s
|
||||
# CHECK: @executable_path/libfoo.dylib
|
||||
|
@ -10,7 +10,7 @@
|
|||
## a flag for a missing entry symbol (since dylibs don't have entry symbols).
|
||||
## Also check that we come up with the right install name if one isn't
|
||||
## specified.
|
||||
# RUN: lld -flavor darwinnew -dylib %t.o -o %t.defaultInstallName.dylib -e missing_entry
|
||||
# RUN: lld -flavor darwinnew -arch x86_64 -dylib %t.o -o %t.defaultInstallName.dylib -e missing_entry
|
||||
# RUN: obj2yaml %t.defaultInstallName.dylib | FileCheck %s -DOUTPUT=%t.defaultInstallName.dylib --check-prefix=DEFAULT-INSTALL-NAME
|
||||
# DEFAULT-INSTALL-NAME: [[OUTPUT]]
|
||||
|
||||
|
|
|
@ -4,13 +4,13 @@
|
|||
# RUN: -o %t/libhello.o
|
||||
# RUN: llvm-mc -filetype=obj -triple=x86_64-apple-darwin %p/Inputs/libgoodbye.s \
|
||||
# RUN: -o %t/libgoodbye.o
|
||||
# RUN: lld -flavor darwinnew -dylib -install_name \
|
||||
# RUN: lld -flavor darwinnew -arch x86_64 -dylib -install_name \
|
||||
# RUN: @executable_path/libhello.dylib %t/libhello.o -o %t/libhello.dylib
|
||||
# RUN: lld -flavor darwinnew -dylib -install_name \
|
||||
# RUN: lld -flavor darwinnew -arch x86_64 -dylib -install_name \
|
||||
# RUN: @executable_path/libgoodbye.dylib %t/libgoodbye.o -o %t/libgoodbye.dylib
|
||||
|
||||
# RUN: llvm-mc -filetype=obj -triple=x86_64-apple-darwin %s -o %t/dylink-lazy.o
|
||||
# RUN: lld -flavor darwinnew -o %t/dylink-lazy -L%t -lhello -lgoodbye %t/dylink-lazy.o
|
||||
# RUN: lld -flavor darwinnew -arch x86_64 -o %t/dylink-lazy -L%t -lhello -lgoodbye %t/dylink-lazy.o
|
||||
|
||||
## When looking at the __stubs section alone, we are unable to easily tell which
|
||||
## symbol each entry points to. So we call objdump twice in order to get the
|
||||
|
|
|
@ -4,9 +4,9 @@
|
|||
# RUN: -o %t/libhello.o
|
||||
# RUN: llvm-mc -filetype=obj -triple=x86_64-apple-darwin %p/Inputs/libgoodbye.s \
|
||||
# RUN: -o %t/libgoodbye.o
|
||||
# RUN: lld -flavor darwinnew -dylib -install_name \
|
||||
# RUN: lld -flavor darwinnew -arch x86_64 -dylib -install_name \
|
||||
# RUN: @executable_path/libhello.dylib %t/libhello.o -o %t/libhello.dylib
|
||||
# RUN: lld -flavor darwinnew -dylib -install_name \
|
||||
# RUN: lld -flavor darwinnew -arch x86_64 -dylib -install_name \
|
||||
# RUN: @executable_path/libgoodbye.dylib %t/libgoodbye.o -o %t/libgoodbye.dylib
|
||||
|
||||
## Make sure we are using the export trie and not the symbol table when linking
|
||||
|
@ -18,7 +18,7 @@
|
|||
# NOSYM: no symbols
|
||||
|
||||
# RUN: llvm-mc -filetype=obj -triple=x86_64-apple-darwin %s -o %t/dylink.o
|
||||
# RUN: lld -flavor darwinnew -o %t/dylink -Z -L%t -lhello -lgoodbye %t/dylink.o
|
||||
# RUN: lld -flavor darwinnew -arch x86_64 -o %t/dylink -Z -L%t -lhello -lgoodbye %t/dylink.o
|
||||
# RUN: llvm-objdump --bind -d %t/dylink | FileCheck %s
|
||||
|
||||
# CHECK: movq [[#%u, HELLO_OFF:]](%rip), %rsi
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
# REQUIRES: x86
|
||||
# RUN: llvm-mc -filetype=obj -triple=x86_64-apple-darwin %s -o %t.o
|
||||
# RUN: lld -flavor darwinnew -o %t %t.o -e _not_main
|
||||
# RUN: lld -flavor darwinnew -arch x86_64 -o %t %t.o -e _not_main
|
||||
# RUN: llvm-objdump --macho --all-headers --syms %t | FileCheck %s
|
||||
# CHECK-LABEL: SYMBOL TABLE
|
||||
# CHECK-NEXT: {{0*}}[[#%x, ENTRY_ADDR:]] {{.*}} __TEXT,__text _not_main
|
||||
|
@ -16,9 +16,9 @@
|
|||
# CHECK-NEXT: offset [[#ENTRYOFF]]
|
||||
|
||||
|
||||
# RUN: not lld -flavor darwinnew -o /dev/null %t.o -e _missing 2>&1 | FileCheck %s --check-prefix=UNDEFINED
|
||||
# RUN: not lld -flavor darwinnew -arch x86_64 -o /dev/null %t.o -e _missing 2>&1 | FileCheck %s --check-prefix=UNDEFINED
|
||||
# UNDEFINED: error: undefined symbol: _missing
|
||||
# RUN: not lld -flavor darwinnew -o /dev/null %t.o 2>&1 | FileCheck %s --check-prefix=DEFAULT-ENTRY
|
||||
# RUN: not lld -flavor darwinnew -arch x86_64 -o /dev/null %t.o 2>&1 | FileCheck %s --check-prefix=DEFAULT-ENTRY
|
||||
# DEFAULT-ENTRY: error: undefined symbol: _main
|
||||
|
||||
.text
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
# REQUIRES: x86
|
||||
# RUN: llvm-mc -filetype=obj -triple=x86_64-apple-darwin %s -o %t.o
|
||||
# RUN: lld -flavor darwinnew -dylib %t.o -o %t.dylib
|
||||
# RUN: lld -flavor darwinnew -arch x86_64 -dylib %t.o -o %t.dylib
|
||||
|
||||
# RUN: llvm-objdump --syms --exports-trie %t.dylib | \
|
||||
# RUN: FileCheck %s --check-prefix=EXPORTS
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
# RUN: yaml2obj %s -o %t.o
|
||||
# RUN: not lld -flavor darwinnew -o %t %t.o 2>&1 | FileCheck %s
|
||||
# RUN: not lld -flavor darwinnew -arch x86_64 -o %t %t.o 2>&1 | FileCheck %s
|
||||
#
|
||||
# CHECK: error: alignment 32 of section __text is too large
|
||||
--- !mach-o
|
||||
|
|
|
@ -8,7 +8,7 @@
|
|||
# RUN: rm -f %t/test.a
|
||||
# RUN: llvm-ar rcS %t/test.a %t/2.o %t/3.o %t/4.o
|
||||
|
||||
# RUN: not lld -flavor darwinnew %t/test.o %t/test.a -o /dev/null 2>&1 | FileCheck %s
|
||||
# RUN: not lld -flavor darwinnew -arch x86_64 %t/test.o %t/test.a -o /dev/null 2>&1 | FileCheck %s
|
||||
# CHECK: error: {{.*}}.a: archive has no index; run ranlib to add one
|
||||
|
||||
.global _main
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
# RUN: echo "foo" >> %t.a
|
||||
# RUN: llvm-mc -filetype=obj -triple=x86_64-apple-darwin %s -o %t.o
|
||||
|
||||
# RUN: not lld -flavor darwinnew %t.o %t.a -o /dev/null 2>&1 | FileCheck -DFILE=%t.a %s
|
||||
# RUN: not lld -flavor darwinnew -arch x86_64 %t.o %t.a -o /dev/null 2>&1 | FileCheck -DFILE=%t.a %s
|
||||
# CHECK: error: [[FILE]]: failed to parse archive: truncated or malformed archive (remaining size of archive too small for next archive member header at offset 8)
|
||||
|
||||
.global _main
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
# REQUIRES: x86
|
||||
# RUN: llvm-mc -filetype=obj -triple=x86_64-apple-darwin %s -o %t.o
|
||||
# RUN: llvm-mc -filetype=obj -triple=x86_64-apple-darwin %s -o %t-dup.o
|
||||
# RUN: not lld -flavor darwinnew -o /dev/null %t-dup.o %t.o 2>&1 | FileCheck %s
|
||||
# RUN: not lld -flavor darwinnew -arch x86_64 -o /dev/null %t-dup.o %t.o 2>&1 | FileCheck %s
|
||||
|
||||
# CHECK: error: duplicate symbol: _main
|
||||
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
# REQUIRES: x86
|
||||
# RUN: llvm-mc -filetype=obj -triple=x86_64-unknown-darwin %s -o %t.o
|
||||
# RUN: lld -flavor darwinnew -o %t %t.o
|
||||
# RUN: not lld -flavor darwinnew -o /dev/null %t 2>&1 | FileCheck %s -DFILE=%t
|
||||
# RUN: lld -flavor darwinnew -arch x86_64 -o %t %t.o
|
||||
# RUN: not lld -flavor darwinnew -arch x86_64 -o /dev/null %t 2>&1 | FileCheck %s -DFILE=%t
|
||||
# CHECK: error: [[FILE]]: unhandled file type
|
||||
|
||||
.text
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
# REQUIRES: x86
|
||||
# RUN: yaml2obj %s -o %t.o
|
||||
# RUN: not lld -flavor darwinnew -o %t %t.o 2>&1 | FileCheck %s -DFILE=%t.o
|
||||
# RUN: not lld -flavor darwinnew -arch x86_64 -o %t %t.o 2>&1 | FileCheck %s -DFILE=%t.o
|
||||
#
|
||||
# CHECK: error: invalid relocation at offset 1 of __TEXT,__text in [[FILE]]: relocations of type 0 must not be pcrel
|
||||
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
# REQUIRES: x86
|
||||
# RUN: llvm-mc -filetype=obj -triple=x86_64-apple-darwin %s -o %t.o
|
||||
# RUN: not lld -flavor darwinnew -Z -o %t -lmissing %t.o 2>&1 | FileCheck %s
|
||||
# RUN: not lld -flavor darwinnew -arch x86_64 -Z -o %t -lmissing %t.o 2>&1 | FileCheck %s
|
||||
|
||||
# CHECK: error: library not found for -lmissing
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
# RUN: mkdir -p %t
|
||||
# RUN: yaml2obj %s -o %t/libnoid.dylib
|
||||
# RUN: echo ".globl _main; .text; _main: ret" | llvm-mc -filetype=obj -triple=x86_64-apple-darwin -o %t/no-id-dylink.o
|
||||
# RUN: not lld -flavor darwinnew -o %t/no-id-dylink -Z -L%t -lnoid %t/no-id-dylink.o 2>&1 | FileCheck %s
|
||||
# RUN: not lld -flavor darwinnew -arch x86_64 -o %t/no-id-dylink -Z -L%t -lnoid %t/no-id-dylink.o 2>&1 | FileCheck %s
|
||||
# CHECK: error: dylib {{.*}}libnoid.dylib missing LC_ID_DYLIB load command
|
||||
|
||||
## This YAML file was originally generated from linking the following source
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
# REQUIRES: x86
|
||||
# RUN: not lld -flavor darwinnew -o /dev/null %t-no-such-file.o 2>&1 | FileCheck %s
|
||||
# RUN: not lld -flavor darwinnew -arch x86_64 -o /dev/null %t-no-such-file.o 2>&1 | FileCheck %s
|
||||
|
||||
# CHECK: error: cannot open {{.*}}no-such-file.o
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
# REQUIRES: x86
|
||||
# RUN: echo ".globl _main; .text; _main: ret" | llvm-mc -filetype=obj -triple=x86_64-apple-darwin -o %t.o
|
||||
# RUN: not lld -flavor darwinnew -o %t %t.o -order_file %s 2>&1 | FileCheck %s
|
||||
# RUN: not lld -flavor darwinnew -arch x86_64 -o %t %t.o -order_file %s 2>&1 | FileCheck %s
|
||||
# CHECK: error: invalid arch "sparc" in order file: expected one of arm, arm64, i386, x86_64, ppc, ppc64
|
||||
# CHECK-EMPTY:
|
||||
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
# REQUIRES: x86
|
||||
# RUN: echo ".globl _main; .text; _main: ret" | llvm-mc -filetype=obj -triple=x86_64-apple-darwin -o %t.o
|
||||
# RUN: not lld -flavor darwinnew -o %t %t.o -order_file %s 2>&1 | FileCheck %s
|
||||
# RUN: not lld -flavor darwinnew -arch x86_64 -o %t %t.o -order_file %s 2>&1 | FileCheck %s
|
||||
# CHECK: invalid object file name "helloo" in order file: should end with .o
|
||||
# CHECK: invalid object file name "z80" in order file: should end with .o
|
||||
# CHECK-EMPTY:
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
# REQUIRES: x86
|
||||
# RUN: llvm-mc -filetype=obj -triple=x86_64-apple-darwin %s -o %t.o
|
||||
# RUN: not lld -flavor darwinnew -Z -o %t %t.o 2>&1 | FileCheck %s -DBASENAME=%basename_t
|
||||
# RUN: not lld -flavor darwinnew -arch x86_64 -Z -o %t %t.o 2>&1 | FileCheck %s -DBASENAME=%basename_t
|
||||
# CHECK: error: undefined symbol _foo, referenced from [[BASENAME]]
|
||||
|
||||
.globl _main
|
||||
|
|
|
@ -3,14 +3,14 @@
|
|||
# RUN: mkdir -p %t
|
||||
#
|
||||
# RUN: llvm-mc -filetype obj -triple x86_64-apple-darwin %p/Inputs/libhello.s -o %t/hello.o
|
||||
# RUN: lld -flavor darwinnew -dylib -install_name @executable_path/libhello.dylib %t/hello.o -o %t/libhello.dylib
|
||||
# RUN: lld -flavor darwinnew -arch x86_64 -dylib -install_name @executable_path/libhello.dylib %t/hello.o -o %t/libhello.dylib
|
||||
#
|
||||
# RUN: llvm-mc -filetype obj -triple x86_64-apple-darwin %p/Inputs/libgoodbye.s -o %t/goodbye.o
|
||||
# RUN: lld -flavor darwinnew -dylib -install_name @executable_path/libgoodbye.dylib %t/goodbye.o -o %t/libgoodbye.dylib
|
||||
# RUN: lld -flavor darwinnew -arch x86_64 -dylib -install_name @executable_path/libgoodbye.dylib %t/goodbye.o -o %t/libgoodbye.dylib
|
||||
# RUN: llvm-ar --format=darwin crs %t/libgoodbye.a %t/goodbye.o
|
||||
#
|
||||
# RUN: llvm-mc -filetype obj -triple x86_64-apple-darwin %s -o %t/test.o
|
||||
# RUN: lld -flavor darwinnew -o %t/test -Z -L%t -lhello -lgoodbye %t/test.o
|
||||
# RUN: lld -flavor darwinnew -arch x86_64 -o %t/test -Z -L%t -lhello -lgoodbye %t/test.o
|
||||
#
|
||||
# RUN: llvm-objdump --macho --dylibs-used %t/test | FileCheck %s
|
||||
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
# REQUIRES: x86
|
||||
# RUN: llvm-mc -filetype=obj -triple=x86_64-apple-darwin %s -o %t.o
|
||||
# RUN: lld -flavor darwinnew -o %t %t.o
|
||||
# RUN: lld -flavor darwinnew -arch x86_64 -o %t %t.o
|
||||
|
||||
## Check for the presence of load commands that are essential for a working
|
||||
## executable.
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
# REQUIRES: x86
|
||||
# RUN: llvm-mc -filetype=obj -triple=x86_64-apple-darwin %s -o %t.o
|
||||
# RUN: lld -flavor darwinnew -dylib %t.o -o %t.dylib
|
||||
# RUN: lld -flavor darwinnew -arch x86_64 -dylib %t.o -o %t.dylib
|
||||
|
||||
# RUN: obj2yaml %t.dylib | FileCheck %s
|
||||
# CHECK: export_size: 0
|
||||
|
|
|
@ -14,67 +14,67 @@
|
|||
|
||||
# RUN: echo "_foo # just a comment" > %t/ord-1
|
||||
# RUN: echo "_main # another comment" >> %t/ord-1
|
||||
# RUN: lld -flavor darwinnew -o %t/test-1 %t/test.o %t/foo.o -order_file %t/ord-1
|
||||
# RUN: lld -flavor darwinnew -arch x86_64 -o %t/test-1 %t/test.o %t/foo.o -order_file %t/ord-1
|
||||
# RUN: llvm-objdump -d %t/test-1 | FileCheck %s --check-prefix=FOO-FIRST
|
||||
## Output should be the same regardless of the command-line order of object files
|
||||
# RUN: lld -flavor darwinnew -o %t/test-1 %t/foo.o %t/test.o -order_file %t/ord-1
|
||||
# RUN: lld -flavor darwinnew -arch x86_64 -o %t/test-1 %t/foo.o %t/test.o -order_file %t/ord-1
|
||||
# RUN: llvm-objdump -d %t/test-1 | FileCheck %s --check-prefix=FOO-FIRST
|
||||
|
||||
# RUN: echo "_main # just a comment" > %t/ord-2
|
||||
# RUN: echo "_foo # another comment" >> %t/ord-2
|
||||
# RUN: lld -flavor darwinnew -o %t/test-2 %t/test.o %t/foo.o -order_file %t/ord-2
|
||||
# RUN: lld -flavor darwinnew -arch x86_64 -o %t/test-2 %t/test.o %t/foo.o -order_file %t/ord-2
|
||||
# RUN: llvm-objdump -d %t/test-2 | FileCheck %s --check-prefix=FOO-SECOND
|
||||
# RUN: lld -flavor darwinnew -o %t/test-2 %t/foo.o %t/test.o -order_file %t/ord-2
|
||||
# RUN: lld -flavor darwinnew -arch x86_64 -o %t/test-2 %t/foo.o %t/test.o -order_file %t/ord-2
|
||||
# RUN: llvm-objdump -d %t/test-2 | FileCheck %s --check-prefix=FOO-SECOND
|
||||
|
||||
# RUN: echo "foo.o:_foo" > %t/ord-file-match
|
||||
# RUN: echo "_main" >> %t/ord-file-match
|
||||
# RUN: lld -flavor darwinnew -o %t/test-file-match %t/test.o %t/foo.o -order_file %t/ord-file-match
|
||||
# RUN: lld -flavor darwinnew -arch x86_64 -o %t/test-file-match %t/test.o %t/foo.o -order_file %t/ord-file-match
|
||||
# RUN: llvm-objdump -d %t/test-file-match | FileCheck %s --check-prefix=FOO-FIRST
|
||||
## Output should be the same regardless of the command-line order of object files
|
||||
# RUN: lld -flavor darwinnew -o %t/test-file-match %t/foo.o %t/test.o -order_file %t/ord-file-match
|
||||
# RUN: lld -flavor darwinnew -arch x86_64 -o %t/test-file-match %t/foo.o %t/test.o -order_file %t/ord-file-match
|
||||
# RUN: llvm-objdump -d %t/test-file-match | FileCheck %s --check-prefix=FOO-FIRST
|
||||
|
||||
# RUN: echo "bar.o:_foo" > %t/ord-file-nomatch
|
||||
# RUN: echo "_main" >> %t/ord-file-nomatch
|
||||
# RUN: echo "_foo" >> %t/ord-file-nomatch
|
||||
# RUN: lld -flavor darwinnew -o %t/test-file-nomatch %t/test.o %t/foo.o -order_file %t/ord-file-nomatch
|
||||
# RUN: lld -flavor darwinnew -arch x86_64 -o %t/test-file-nomatch %t/test.o %t/foo.o -order_file %t/ord-file-nomatch
|
||||
# RUN: llvm-objdump -d %t/test-file-nomatch | FileCheck %s --check-prefix=FOO-SECOND
|
||||
# RUN: lld -flavor darwinnew -o %t/test-file-nomatch %t/foo.o %t/test.o -order_file %t/ord-file-nomatch
|
||||
# RUN: lld -flavor darwinnew -arch x86_64 -o %t/test-file-nomatch %t/foo.o %t/test.o -order_file %t/ord-file-nomatch
|
||||
# RUN: llvm-objdump -d %t/test-file-nomatch | FileCheck %s --check-prefix=FOO-SECOND
|
||||
|
||||
# RUN: echo "x86_64:_foo" > %t/ord-arch-match
|
||||
# RUN: echo "_main" >> %t/ord-arch-match
|
||||
# RUN: lld -flavor darwinnew -o %t/test-arch-match %t/test.o %t/foo.o -order_file %t/ord-arch-match
|
||||
# RUN: lld -flavor darwinnew -arch x86_64 -o %t/test-arch-match %t/test.o %t/foo.o -order_file %t/ord-arch-match
|
||||
# RUN: llvm-objdump -d %t/test-arch-match | FileCheck %s --check-prefix=FOO-FIRST
|
||||
# RUN: lld -flavor darwinnew -o %t/test-arch-match %t/foo.o %t/test.o -order_file %t/ord-arch-match
|
||||
# RUN: lld -flavor darwinnew -arch x86_64 -o %t/test-arch-match %t/foo.o %t/test.o -order_file %t/ord-arch-match
|
||||
# RUN: llvm-objdump -d %t/test-arch-match | FileCheck %s --check-prefix=FOO-FIRST
|
||||
|
||||
# RUN: echo "ppc:_foo" > %t/ord-arch-nomatch
|
||||
# RUN: echo "_main" >> %t/ord-arch-nomatch
|
||||
# RUN: echo "_foo" >> %t/ord-arch-nomatch
|
||||
# RUN: lld -flavor darwinnew -o %t/test-arch-nomatch %t/test.o %t/foo.o -order_file %t/ord-arch-nomatch
|
||||
# RUN: lld -flavor darwinnew -arch x86_64 -o %t/test-arch-nomatch %t/test.o %t/foo.o -order_file %t/ord-arch-nomatch
|
||||
# RUN: llvm-objdump -d %t/test-arch-nomatch | FileCheck %s --check-prefix=FOO-SECOND
|
||||
# RUN: lld -flavor darwinnew -o %t/test-arch-nomatch %t/foo.o %t/test.o -order_file %t/ord-arch-nomatch
|
||||
# RUN: lld -flavor darwinnew -arch x86_64 -o %t/test-arch-nomatch %t/foo.o %t/test.o -order_file %t/ord-arch-nomatch
|
||||
# RUN: llvm-objdump -d %t/test-arch-nomatch | FileCheck %s --check-prefix=FOO-SECOND
|
||||
|
||||
# RUN: echo "x86_64:bar.o:_foo" > %t/ord-arch-file-match
|
||||
# RUN: echo "_main" >> %t/ord-arch-match
|
||||
# RUN: lld -flavor darwinnew -o %t/test-arch-match %t/test.o %t/foo.o -order_file %t/ord-arch-match
|
||||
# RUN: lld -flavor darwinnew -arch x86_64 -o %t/test-arch-match %t/test.o %t/foo.o -order_file %t/ord-arch-match
|
||||
# RUN: llvm-objdump -d %t/test-arch-match | FileCheck %s --check-prefix=FOO-FIRST
|
||||
# RUN: lld -flavor darwinnew -o %t/test-arch-match %t/foo.o %t/test.o -order_file %t/ord-arch-match
|
||||
# RUN: lld -flavor darwinnew -arch x86_64 -o %t/test-arch-match %t/foo.o %t/test.o -order_file %t/ord-arch-match
|
||||
# RUN: llvm-objdump -d %t/test-arch-match | FileCheck %s --check-prefix=FOO-FIRST
|
||||
|
||||
## Test archives
|
||||
|
||||
# RUN: lld -flavor darwinnew -o %t/test-archive-1 %t/test.o %t/foo.a -order_file %t/ord-1
|
||||
# RUN: lld -flavor darwinnew -arch x86_64 -o %t/test-archive-1 %t/test.o %t/foo.a -order_file %t/ord-1
|
||||
# RUN: llvm-objdump -d %t/test-archive-1 | FileCheck %s --check-prefix=FOO-FIRST
|
||||
# RUN: lld -flavor darwinnew -o %t/test-archive-1 %t/foo.a %t/test.o -order_file %t/ord-1
|
||||
# RUN: lld -flavor darwinnew -arch x86_64 -o %t/test-archive-1 %t/foo.a %t/test.o -order_file %t/ord-1
|
||||
# RUN: llvm-objdump -d %t/test-archive-1 | FileCheck %s --check-prefix=FOO-FIRST
|
||||
|
||||
# RUN: lld -flavor darwinnew -o %t/test-archive-file-no-match %t/test.o %t/foo.a -order_file %t/ord-file-nomatch
|
||||
# RUN: lld -flavor darwinnew -arch x86_64 -o %t/test-archive-file-no-match %t/test.o %t/foo.a -order_file %t/ord-file-nomatch
|
||||
# RUN: llvm-objdump -d %t/test-archive-file-no-match | FileCheck %s --check-prefix=FOO-SECOND
|
||||
# RUN: lld -flavor darwinnew -o %t/test-archive %t/foo.a %t/test.o -order_file %t/ord-file-nomatch
|
||||
# RUN: lld -flavor darwinnew -arch x86_64 -o %t/test-archive %t/foo.a %t/test.o -order_file %t/ord-file-nomatch
|
||||
# RUN: llvm-objdump -d %t/test-archive-file-no-match | FileCheck %s --check-prefix=FOO-SECOND
|
||||
|
||||
## The following tests check that if an address is matched by multiple order
|
||||
|
@ -83,33 +83,33 @@
|
|||
# RUN: echo "_foo" > %t/ord-multiple-1
|
||||
# RUN: echo "_main" >> %t/ord-multiple-1
|
||||
# RUN: echo "foo.o:_foo" >> %t/ord-multiple-1
|
||||
# RUN: lld -flavor darwinnew -o %t/test-1 %t/test.o %t/foo.o -order_file %t/ord-multiple-1
|
||||
# RUN: lld -flavor darwinnew -arch x86_64 -o %t/test-1 %t/test.o %t/foo.o -order_file %t/ord-multiple-1
|
||||
# RUN: llvm-objdump -d %t/test-1 | FileCheck %s --check-prefix=FOO-FIRST
|
||||
# RUN: lld -flavor darwinnew -o %t/test-1 %t/foo.o %t/test.o -order_file %t/ord-multiple-1
|
||||
# RUN: lld -flavor darwinnew -arch x86_64 -o %t/test-1 %t/foo.o %t/test.o -order_file %t/ord-multiple-1
|
||||
# RUN: llvm-objdump -d %t/test-1 | FileCheck %s --check-prefix=FOO-FIRST
|
||||
|
||||
# RUN: echo "foo.o:_foo" > %t/ord-multiple-2
|
||||
# RUN: echo "_main" >> %t/ord-multiple-2
|
||||
# RUN: echo "_foo" >> %t/ord-multiple-2
|
||||
# RUN: lld -flavor darwinnew -o %t/test-2 %t/test.o %t/foo.o -order_file %t/ord-multiple-2
|
||||
# RUN: lld -flavor darwinnew -arch x86_64 -o %t/test-2 %t/test.o %t/foo.o -order_file %t/ord-multiple-2
|
||||
# RUN: llvm-objdump -d %t/test-2 | FileCheck %s --check-prefix=FOO-FIRST
|
||||
# RUN: lld -flavor darwinnew -o %t/test-2 %t/foo.o %t/test.o -order_file %t/ord-multiple-2
|
||||
# RUN: lld -flavor darwinnew -arch x86_64 -o %t/test-2 %t/foo.o %t/test.o -order_file %t/ord-multiple-2
|
||||
# RUN: llvm-objdump -d %t/test-2 | FileCheck %s --check-prefix=FOO-FIRST
|
||||
|
||||
# RUN: echo "_foo" > %t/ord-multiple-3
|
||||
# RUN: echo "_main" >> %t/ord-multiple-3
|
||||
# RUN: echo "_foo" >> %t/ord-multiple-3
|
||||
# RUN: lld -flavor darwinnew -o %t/test-3 %t/test.o %t/foo.o -order_file %t/ord-multiple-3
|
||||
# RUN: lld -flavor darwinnew -arch x86_64 -o %t/test-3 %t/test.o %t/foo.o -order_file %t/ord-multiple-3
|
||||
# RUN: llvm-objdump -d %t/test-3 | FileCheck %s --check-prefix=FOO-FIRST
|
||||
# RUN: lld -flavor darwinnew -o %t/test-3 %t/foo.o %t/test.o -order_file %t/ord-multiple-3
|
||||
# RUN: lld -flavor darwinnew -arch x86_64 -o %t/test-3 %t/foo.o %t/test.o -order_file %t/ord-multiple-3
|
||||
# RUN: llvm-objdump -d %t/test-3 | FileCheck %s --check-prefix=FOO-FIRST
|
||||
|
||||
# RUN: echo "foo.o:_foo" > %t/ord-multiple-4
|
||||
# RUN: echo "_main" >> %t/ord-multiple-4
|
||||
# RUN: echo "foo.o:_foo" >> %t/ord-multiple-4
|
||||
# RUN: lld -flavor darwinnew -o %t/test-4 %t/test.o %t/foo.o -order_file %t/ord-multiple-4
|
||||
# RUN: lld -flavor darwinnew -arch x86_64 -o %t/test-4 %t/test.o %t/foo.o -order_file %t/ord-multiple-4
|
||||
# RUN: llvm-objdump -d %t/test-4 | FileCheck %s --check-prefix=FOO-FIRST
|
||||
# RUN: lld -flavor darwinnew -o %t/test-4 %t/foo.o %t/test.o -order_file %t/ord-multiple-4
|
||||
# RUN: lld -flavor darwinnew -arch x86_64 -o %t/test-4 %t/foo.o %t/test.o -order_file %t/ord-multiple-4
|
||||
# RUN: llvm-objdump -d %t/test-4 | FileCheck %s --check-prefix=FOO-FIRST
|
||||
|
||||
## _foo and _bar both point to the same location. When both symbols appear in
|
||||
|
@ -118,9 +118,9 @@
|
|||
# RUN: echo "_bar" > %t/ord-alias
|
||||
# RUN: echo "_main" >> %t/ord-alias
|
||||
# RUN: echo "_foo" >> %t/ord-alias
|
||||
# RUN: lld -flavor darwinnew -o %t/test-alias %t/test.o %t/foo.o -order_file %t/ord-alias
|
||||
# RUN: lld -flavor darwinnew -arch x86_64 -o %t/test-alias %t/test.o %t/foo.o -order_file %t/ord-alias
|
||||
# RUN: llvm-objdump -d %t/test-alias | FileCheck %s --check-prefix=FOO-FIRST
|
||||
# RUN: lld -flavor darwinnew -o %t/test-alias %t/foo.o %t/test.o -order_file %t/ord-alias
|
||||
# RUN: lld -flavor darwinnew -arch x86_64 -o %t/test-alias %t/foo.o %t/test.o -order_file %t/ord-alias
|
||||
# RUN: llvm-objdump -d %t/test-alias | FileCheck %s --check-prefix=FOO-FIRST
|
||||
|
||||
.text
|
||||
|
|
|
@ -1,14 +1,14 @@
|
|||
# RUN: not lld -flavor darwinnew -platform_version 2>&1 \
|
||||
# RUN: not lld -flavor darwinnew -arch x86_64 -platform_version 2>&1 \
|
||||
# RUN: | FileCheck --check-prefix=FAIL %s
|
||||
# RUN: not lld -flavor darwinnew -platform_version macos 2>&1 \
|
||||
# RUN: not lld -flavor darwinnew -arch x86_64 -platform_version macos 2>&1 \
|
||||
# RUN: | FileCheck --check-prefix=FAIL %s
|
||||
# RUN: not lld -flavor darwinnew -platform_version macos 10.15 2>&1 \
|
||||
# RUN: not lld -flavor darwinnew -arch x86_64 -platform_version macos 10.15 2>&1 \
|
||||
# RUN: | FileCheck --check-prefix=FAIL %s
|
||||
# RUN: not lld -flavor darwinnew -platform_version macos -lfoo 10.15 2>&1 \
|
||||
# RUN: not lld -flavor darwinnew -arch x86_64 -platform_version macos -lfoo 10.15 2>&1 \
|
||||
# RUN: | FileCheck --check-prefix=FAIL %s
|
||||
# RUN: not lld -flavor darwinnew -platform_version macos 10.15 10.15.4 2>&1 \
|
||||
# RUN: not lld -flavor darwinnew -arch x86_64 -platform_version macos 10.15 10.15.4 2>&1 \
|
||||
# RUN: | FileCheck --check-prefix=GOOD %s
|
||||
# RUN: not lld -flavor darwinnew -platform_version macos 10.15 10.15.4 foobar 2>&1 \
|
||||
# RUN: not lld -flavor darwinnew -arch x86_64 -platform_version macos 10.15 10.15.4 foobar 2>&1 \
|
||||
# RUN: | FileCheck --check-prefix=FAIL_FILE %s
|
||||
|
||||
FAIL: usage: -platform_version platform min_version sdk_version
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
# REQUIRES: x86
|
||||
# RUN: llvm-mc -filetype=obj -triple=x86_64-apple-darwin %s -o %t.o
|
||||
# RUN: lld -flavor darwinnew -o %t %t.o
|
||||
# RUN: lld -flavor darwinnew -arch x86_64 -o %t %t.o
|
||||
# RUN: llvm-objdump --section-headers --syms -d %t | FileCheck %s
|
||||
|
||||
# CHECK-LABEL: Sections:
|
||||
|
|
|
@ -2,19 +2,19 @@
|
|||
# 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: lld -flavor darwinnew -arch x86_64 -dylib -install_name \
|
||||
# RUN: @executable_path/libresolution.dylib %t/libresolution.o -o %t/libresolution.dylib
|
||||
# RUN: lld -flavor darwinnew -dylib -install_name \
|
||||
# RUN: lld -flavor darwinnew -arch x86_64 -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: lld -flavor darwinnew -arch x86_64 -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: lld -flavor darwinnew -arch x86_64 -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
|
||||
|
||||
|
@ -24,7 +24,7 @@
|
|||
|
||||
## 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: lld -flavor darwinnew -arch x86_64 -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.
|
||||
|
|
|
@ -1,12 +1,12 @@
|
|||
RUN: mkdir -p %t
|
||||
|
||||
RUN: lld -flavor darwinnew -v -L%t 2>&1 | FileCheck -DDIR=%t %s
|
||||
RUN: lld -flavor darwinnew -arch x86_64 -v -L%t 2>&1 | FileCheck -DDIR=%t %s
|
||||
CHECK: Library search paths:
|
||||
CHECK-NEXT: [[DIR]]
|
||||
CHECK-NEXT: /usr/lib
|
||||
CHECK-NEXT: /usr/local/lib
|
||||
|
||||
RUN: lld -flavor darwinnew -v -L%t -Z 2>&1 | FileCheck -DDIR=%t --check-prefix=CHECK_Z %s
|
||||
RUN: lld -flavor darwinnew -arch x86_64 -v -L%t -Z 2>&1 | FileCheck -DDIR=%t --check-prefix=CHECK_Z %s
|
||||
CHECK_Z: Library search paths:
|
||||
CHECK_Z-NEXT: [[DIR]]
|
||||
CHECK_Z-NOT: /usr/
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
# REQUIRES: x86
|
||||
# RUN: llvm-mc -filetype=obj -triple=x86_64-apple-darwin %s -o %t.o
|
||||
# RUN: lld -flavor darwinnew -o %t %t.o
|
||||
# RUN: lld -flavor darwinnew -arch x86_64 -o %t %t.o
|
||||
# RUN: llvm-readobj --section-headers %t | FileCheck %s
|
||||
|
||||
# CHECK: Name: __text
|
||||
|
|
|
@ -8,7 +8,7 @@
|
|||
# RUN: -o %t/libfunction.o
|
||||
# RUN: llvm-mc -filetype=obj -triple=x86_64-apple-darwin %s \
|
||||
# RUN: -o %t/main.o
|
||||
# RUN: lld -flavor darwinnew -o %t/output %t/libfunction.o %t/libgoodbye.o %t/libhello.o %t/main.o
|
||||
# RUN: lld -flavor darwinnew -arch x86_64 -o %t/output %t/libfunction.o %t/libgoodbye.o %t/libhello.o %t/main.o
|
||||
|
||||
# RUN: llvm-objdump --syms %t/output | FileCheck %s
|
||||
# CHECK: SYMBOL TABLE:
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
# REQUIRES: x86
|
||||
# RUN: llvm-mc -filetype=obj -triple=x86_64-apple-darwin %s -o %t.o
|
||||
# RUN: lld -flavor darwinnew -o %t %t.o
|
||||
# RUN: lld -flavor darwinnew -arch x86_64 -o %t %t.o
|
||||
# RUN: llvm-readobj --macho-segment %t | FileCheck %s
|
||||
|
||||
## These two segments must always be present at the start of an executable.
|
||||
|
|
|
@ -1,9 +1,9 @@
|
|||
RUN: lld -flavor darwinnew -v \
|
||||
RUN: lld -flavor darwinnew -arch x86_64 -v \
|
||||
RUN: -demangle \
|
||||
RUN: -dynamic \
|
||||
RUN: -no_deduplicate \
|
||||
RUN: -lto_library /lib/foo \
|
||||
RUN: -macosx_version_min 0 \
|
||||
RUN: -syslibroot /path/to/MacOSX.platform/Developer/SDKs/MacOSX.sdk
|
||||
RUN: not lld -flavor darwinnew -v --not-an-ignored-argument 2>&1 | FileCheck %s
|
||||
RUN: not lld -flavor darwinnew -arch x86_64 -v --not-an-ignored-argument 2>&1 | FileCheck %s
|
||||
CHECK: error: unknown argument: --not-an-ignored-argument
|
||||
|
|
|
@ -6,7 +6,7 @@
|
|||
# RUN: llvm-ar --format=darwin crs %t/libgoodbye.a %t/goodbye.o
|
||||
#
|
||||
# RUN: llvm-mc -filetype obj -triple x86_64-apple-darwin %s -o %t/test.o
|
||||
# RUN: lld -flavor darwinnew -o %t/test -Z -L%t -lgoodbye %t/test.o
|
||||
# RUN: lld -flavor darwinnew -arch x86_64 -o %t/test -Z -L%t -lgoodbye %t/test.o
|
||||
#
|
||||
# RUN: llvm-objdump --syms -d -r %t/test | FileCheck %s
|
||||
|
||||
|
|
|
@ -8,10 +8,10 @@
|
|||
# RUN: llvm-mc -filetype=obj -triple=x86_64-apple-darwin %p/Inputs/libgoodbye.s \
|
||||
# RUN: -o %t/libgoodbye.o
|
||||
# RUN: echo "" | llvm-mc -filetype=obj -triple=x86_64-apple-darwin -o %t/libsuper.o
|
||||
# RUN: lld -flavor darwinnew -dylib %t/libhello.o -o %t/libhello.dylib
|
||||
# RUN: lld -flavor darwinnew -dylib -L%t -sub_library libhello -lhello \
|
||||
# RUN: lld -flavor darwinnew -arch x86_64 -dylib %t/libhello.o -o %t/libhello.dylib
|
||||
# RUN: lld -flavor darwinnew -arch x86_64 -dylib -L%t -sub_library libhello -lhello \
|
||||
# RUN: %t/libgoodbye.o -o %t/libgoodbye.dylib
|
||||
# RUN: lld -flavor darwinnew -dylib -L%t -sub_library libgoodbye -lgoodbye -install_name \
|
||||
# RUN: lld -flavor darwinnew -arch x86_64 -dylib -L%t -sub_library libgoodbye -lgoodbye -install_name \
|
||||
# RUN: @executable_path/libsuper.dylib %t/libsuper.o -o %t/libsuper.dylib
|
||||
|
||||
|
||||
|
@ -37,7 +37,7 @@
|
|||
# SUPER-HEADERS: name [[DIR]]/libgoodbye.dylib
|
||||
|
||||
# RUN: llvm-mc -filetype=obj -triple=x86_64-apple-darwin %s -o %t/sub-library.o
|
||||
# RUN: lld -flavor darwinnew -o %t/sub-library -L%t -lsuper %t/sub-library.o
|
||||
# RUN: lld -flavor darwinnew -arch x86_64 -o %t/sub-library -L%t -lsuper %t/sub-library.o
|
||||
|
||||
# RUN: llvm-objdump --macho --bind %t/sub-library | FileCheck %s
|
||||
# CHECK-LABEL: Bind table:
|
||||
|
@ -46,11 +46,11 @@
|
|||
|
||||
|
||||
## Check that we fail gracefully if the sub-library is missing
|
||||
# RUN: not lld -flavor darwinnew -dylib -Z -o %t/sub-library -sub_library libmissing %t/sub-library.o 2>&1 \
|
||||
# RUN: not lld -flavor darwinnew -arch x86_64 -dylib -Z -o %t/sub-library -sub_library libmissing %t/sub-library.o 2>&1 \
|
||||
# RUN: | FileCheck %s --check-prefix=MISSING-SUB-LIBRARY
|
||||
# MISSING-SUB-LIBRARY: error: -sub_library libmissing does not match a supplied dylib
|
||||
# RUN: rm -f %t/libgoodbye.dylib
|
||||
# RUN: not lld -flavor darwinnew -o %t/sub-library -Z -L%t -lsuper %t/sub-library.o 2>&1 \
|
||||
# RUN: not lld -flavor darwinnew -arch x86_64 -o %t/sub-library -Z -L%t -lsuper %t/sub-library.o 2>&1 \
|
||||
# RUN: | FileCheck %s --check-prefix=MISSING-REEXPORT -DDIR=%t
|
||||
# MISSING-REEXPORT: error: unable to read re-exported dylib at [[DIR]]/libgoodbye.dylib
|
||||
|
||||
|
|
|
@ -5,7 +5,7 @@
|
|||
# RUN: echo "_bar_str" > %t/order-file
|
||||
# RUN: echo "_foo_str" >> %t/order-file
|
||||
|
||||
# RUN: lld -flavor darwinnew -o %t/test %t/test.o -order_file %t/order-file
|
||||
# RUN: lld -flavor darwinnew -arch x86_64 -o %t/test %t/test.o -order_file %t/order-file
|
||||
# RUN: llvm-objdump --section-headers -d --no-show-raw-insn %t/test | FileCheck %s
|
||||
# CHECK-LABEL: Sections:
|
||||
# CHECK: __cstring {{[^ ]*}} {{0*}}[[#%x, CSTRING_ADDR:]]
|
||||
|
|
|
@ -17,9 +17,9 @@
|
|||
# RUN: echo "_main" >> %t/order-file-2
|
||||
# RUN: echo "_qux" >> %t/order-file-2
|
||||
|
||||
# RUN: lld -flavor darwinnew -o %t/test-1 %t/test.o -order_file %t/order-file-1
|
||||
# RUN: lld -flavor darwinnew -arch x86_64 -o %t/test-1 %t/test.o -order_file %t/order-file-1
|
||||
# RUN: llvm-objdump -d --no-show-raw-insn %t/test-1 | FileCheck %s
|
||||
# RUN: lld -flavor darwinnew -o %t/test-2 %t/test.o -order_file %t/order-file-2
|
||||
# RUN: lld -flavor darwinnew -arch x86_64 -o %t/test-2 %t/test.o -order_file %t/order-file-2
|
||||
# RUN: llvm-objdump -d --no-show-raw-insn %t/test-2 | FileCheck %s
|
||||
# CHECK-LABEL: Disassembly of section __TEXT,__text:
|
||||
# CHECK: <_bar>:
|
||||
|
|
|
@ -5,7 +5,7 @@
|
|||
# RUN: echo ".global f; .section __TEXT,test_f2; f: ret" | llvm-mc -filetype=obj -triple=x86_64-apple-darwin -o %t/f2.o
|
||||
# RUN: echo ".global f, g; .section __TEXT,test_fg; f: ret; g: callq f" | llvm-mc -filetype=obj -triple=x86_64-apple-darwin -o %t/fg.o
|
||||
# RUN: llvm-mc -filetype=obj -triple=x86_64-apple-darwin %s -o %t/test.o
|
||||
# RUN: lld -flavor darwinnew -dylib -o %t/libf1.dylib %t/f1.o
|
||||
# RUN: lld -flavor darwinnew -arch x86_64 -dylib -o %t/libf1.dylib %t/f1.o
|
||||
|
||||
# RUN: rm -f %t/libf2_g.a
|
||||
# RUN: llvm-ar rcs %t/libf2_g.a %t/f2.o %t/g.o
|
||||
|
@ -13,7 +13,7 @@
|
|||
# RUN: rm -f %t/libfg.a
|
||||
# RUN: llvm-ar rcs %t/libfg.a %t/fg.o
|
||||
|
||||
# RUN: lld -flavor darwinnew %t/libf1.dylib %t/libf2_g.a %t/test.o -o %t/test.out
|
||||
# RUN: lld -flavor darwinnew -arch x86_64 %t/libf1.dylib %t/libf2_g.a %t/test.o -o %t/test.out
|
||||
# RUN: llvm-objdump --syms --macho --lazy-bind %t/test.out | FileCheck %s --check-prefix DYLIB-FIRST
|
||||
# DYLIB-FIRST: SYMBOL TABLE:
|
||||
# DYLIB-FIRST-DAG: __TEXT,test_g g
|
||||
|
@ -21,7 +21,7 @@
|
|||
# DYLIB-FIRST-NEXT: segment section address dylib symbol
|
||||
# DYLIB-FIRST-NEXT: __DATA __la_symbol_ptr {{[0-9a-z]+}} libf1 f
|
||||
|
||||
# RUN: lld -flavor darwinnew %t/libf2_g.a %t/libf1.dylib %t/test.o -o %t/test.out
|
||||
# RUN: lld -flavor darwinnew -arch x86_64 %t/libf2_g.a %t/libf1.dylib %t/test.o -o %t/test.out
|
||||
# RUN: llvm-objdump --syms --macho --lazy-bind %t/test.out | FileCheck %s --check-prefix ARCHIVE-FIRST
|
||||
# ARCHIVE-FIRST: SYMBOL TABLE:
|
||||
# ARCHIVE-FIRST-DAG: __TEXT,test_f2 f
|
||||
|
@ -30,7 +30,7 @@
|
|||
# ARCHIVE-FIRST-NEXT: segment section address dylib symbol
|
||||
# ARCHIVE-FIRST-EMPTY:
|
||||
|
||||
# RUN: lld -flavor darwinnew %t/libf1.dylib %t/libfg.a %t/test.o -o %t/test.out
|
||||
# RUN: lld -flavor darwinnew -arch x86_64 %t/libf1.dylib %t/libfg.a %t/test.o -o %t/test.out
|
||||
# RUN: llvm-objdump --syms --macho --lazy-bind %t/test.out | FileCheck %s --check-prefix ARCHIVE-PRIORITY
|
||||
# ARCHIVE-PRIORITY: SYMBOL TABLE:
|
||||
# ARCHIVE-PRIORITY-DAG: __TEXT,test_fg f
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
# REQUIRES: x86
|
||||
# RUN: llvm-mc -filetype=obj -triple=x86_64-apple-darwin %s -o %t.o
|
||||
# RUN: lld -flavor darwinnew -o %t %t.o
|
||||
# RUN: lld -flavor darwinnew -arch x86_64 -o %t %t.o
|
||||
# RUN: llvm-readobj -symbols %t | FileCheck %s
|
||||
|
||||
# CHECK: Symbols [
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
# REQUIRES: x86
|
||||
# RUN: llvm-mc -filetype=obj -triple=x86_64-apple-darwin %s -o %t.o
|
||||
# RUN: lld -flavor darwinnew -o %t %t.o
|
||||
# RUN: lld -flavor darwinnew -arch x86_64 -o %t %t.o
|
||||
# RUN: llvm-objdump -D %t | FileCheck %s
|
||||
|
||||
# CHECK: <_main>:
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
# REQUIRES: x86
|
||||
# RUN: llvm-mc -filetype=obj -triple=x86_64-apple-darwin %s -o %t.o
|
||||
# RUN: lld -flavor darwinnew -o %t %t.o
|
||||
# RUN: lld -flavor darwinnew -arch x86_64 -o %t %t.o
|
||||
# RUN: llvm-objdump --full-contents %t | FileCheck %s
|
||||
# CHECK: Contents of section foo:
|
||||
# CHECK: 100001000 08100000 01000000
|
||||
|
|
Loading…
Reference in New Issue