Files
clang-p2996/lld/test/mach-o/interposing-section.yaml
Pete Cooper c4a12a08e2 Have one version of libSystem for each arch. NFC.
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
2016-08-11 18:08:59 +00:00

73 lines
2.3 KiB
YAML

# RUN: lld -flavor darwin -arch x86_64 %s %p/Inputs/interposing-section.yaml \
# RUN: -dylib -o %t %p/Inputs/x86_64/libSystem.yaml
# RUN: llvm-objdump -private-headers %t | FileCheck %s
#
# RUN: lld -flavor darwin -arch x86_64 %s -r -o %t1
# RUN: llvm-objdump -private-headers %t1 | FileCheck %s
#
# Test that interposing section is preserved by linker.
#
--- !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: 2
- segment: __DATA
section: __interpose
type: S_INTERPOSING
attributes: [ ]
alignment: 8
address: 0x0000000000000010
content: [ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 ]
relocations:
- offset: 0x00000008
type: X86_64_RELOC_UNSIGNED
length: 3
pc-rel: false
extern: true
symbol: 2
- offset: 0x00000000
type: X86_64_RELOC_UNSIGNED
length: 3
pc-rel: false
extern: true
symbol: 0
local-symbols:
- name: _my_open
type: N_SECT
sect: 1
value: 0x0000000000000000
- name: __interpose_open
type: N_SECT
sect: 2
desc: [ N_NO_DEAD_STRIP ]
value: 0x0000000000000010
undefined-symbols:
- name: _open
type: N_UNDF
scope: [ N_EXT ]
value: 0x0000000000000000
...
# CHECK: sectname __interposing
# CHECK: segname __DATA
# CHECK: type S_INTERPOSING