mirror of
https://github.com/capstone-engine/llvm-capstone.git
synced 2025-01-12 19:01:55 +00:00
c4a12a08e2
An upcoming commit will change how we choose to reference a dylib. Currently dylibs are only given an LC_LOAD_DYLIB in the final image if an atom is used. This is different from ld64 which adds the load command when the dylib is referenced on the cmdline. In order to change this behaviour, we need libSystem.yaml to actually contain a mach header so that it is parsed as a dylib, instead of currently being parsed as a normalised file. To get a mach header, we also require an arch, so now we have one libsystem per arch and all the tests have been updated to choose the correct one. llvm-svn: 278372
46 lines
1.4 KiB
YAML
46 lines
1.4 KiB
YAML
# RUN: lld -flavor darwin -arch x86_64 -dylib %p/Inputs/bar.yaml \
|
|
# RUN: -install_name /usr/lib/libbar.dylib %p/Inputs/x86_64/libSystem.yaml -o %t1.dylib
|
|
# RUN: lld -flavor darwin -arch x86_64 -dylib %s -all_load %t1.dylib \
|
|
# RUN: -install_name /usr/lib/libfoo.dylib %p/Inputs/x86_64/libSystem.yaml -o %t
|
|
# RUN: llvm-nm -m %t | FileCheck %s
|
|
#
|
|
#
|
|
# Test -all_load does not break linking with dylibs
|
|
#
|
|
|
|
--- !mach-o
|
|
arch: x86_64
|
|
file-type: MH_OBJECT
|
|
flags: [ MH_SUBSECTIONS_VIA_SYMBOLS ]
|
|
sections:
|
|
- segment: __TEXT
|
|
section: __text
|
|
type: S_REGULAR
|
|
attributes: [ S_ATTR_PURE_INSTRUCTIONS, S_ATTR_SOME_INSTRUCTIONS ]
|
|
address: 0x0000000000000000
|
|
content: [ 0x55, 0x48, 0x89, 0xE5, 0x31, 0xC0, 0x5D, 0xE9,
|
|
0x00, 0x00, 0x00, 0x00 ]
|
|
relocations:
|
|
- offset: 0x00000008
|
|
type: X86_64_RELOC_BRANCH
|
|
length: 2
|
|
pc-rel: true
|
|
extern: true
|
|
symbol: 1
|
|
global-symbols:
|
|
- name: _foo
|
|
type: N_SECT
|
|
scope: [ N_EXT ]
|
|
sect: 1
|
|
value: 0x0000000000000000
|
|
undefined-symbols:
|
|
- name: _bar
|
|
type: N_UNDF
|
|
scope: [ N_EXT ]
|
|
value: 0x0000000000000000
|
|
|
|
...
|
|
|
|
|
|
# CHECK: (__TEXT,__text) external _foo
|