Adds -L<search-path> and -l<library> options that are analogous to ld's
versions.
Each instance of -L<search-path> or -l<library> will apply to the most recent
-jd option on the command line (-jd <name> creates a JITDylib with the given
name). Library names will match against JITDylibs first, then llvm-jitlink will
look through the search paths for files named <search-path>/lib<library>.dylib
or <search-path>/lib<library>.a.
The default "main" JITDylib will link against all JITDylibs created by -jd
options, and all JITDylibs will link against the process symbols (unless
-no-process-symbols is specified).
The -dlopen option is renamed -preload, and will load dylibs into the JITDylib
for the ORC runtime only.
The effect of these changes is to make it easier to describe a non-trivial
program layout to llvm-jitlink for testing purposes. E.g. the following
invocation describes a program consisting of three JITDylibs: "main" (created
implicitly) containing main.o, "Foo" containing foo1.o and foo2.o, and linking
against library "bar" (not a JITDylib, so it must be a .dylib or .a on disk)
and "Baz" (which is a JITDylib), and "Baz" containing baz.o.
llvm-jitlink \
main.o \
-jd Foo foo1.o foo2.o -L${HOME}/lib -lbar -lBaz
-jd Baz baz.o
40 lines
1.0 KiB
ArmAsm
40 lines
1.0 KiB
ArmAsm
# RUN: rm -rf %t && mkdir -p %t
|
|
# RUN: llvm-mc -triple x86_64-apple-macosx10.9 -filetype=obj \
|
|
# RUN: -o %t/MachO_extra_def_weak.o %S/Inputs/MachO_extra_def_weak.s
|
|
# RUN: llvm-mc -triple x86_64-apple-macosx10.9 -filetype=obj \
|
|
# RUN: -o %t/MachO_weak_definitions.o %s
|
|
# RUN: llvm-jitlink -noexec -check=%s %t/MachO_weak_definitions.o \
|
|
# RUN: %t/MachO_extra_def_weak.o
|
|
#
|
|
# Check that objects linked separately agree on the address of weak symbols.
|
|
#
|
|
# jitlink-check: *{8}ExtraDefAddrInThisFile = *{8}ExtraDefAddrInExtraFile
|
|
|
|
.section __TEXT,__text,regular,pure_instructions
|
|
.build_version macos, 10, 14 sdk_version 10, 14
|
|
.globl _main
|
|
.p2align 4, 0x90
|
|
_main:
|
|
retq
|
|
|
|
.section __DATA,__data
|
|
.globl ExtraDef
|
|
.weak_definition ExtraDef
|
|
.p2align 2
|
|
ExtraDef:
|
|
.long 1
|
|
|
|
.globl ExtraDefAddrInThisFile
|
|
.p2align 3
|
|
ExtraDefAddrInThisFile:
|
|
.quad ExtraDef
|
|
|
|
# Take the address of ExtraDefAddrInExtraFile to force its materialization
|
|
.globl extra_file_anchor
|
|
.p2align 3
|
|
extra_file_anchor:
|
|
.quad ExtraDefAddrInExtraFile
|
|
|
|
|
|
.subsections_via_symbols
|