Files
clang-p2996/lld/test/mach-o/write-final-sections.yaml
Jez Ng 415c0cd698 [lld-macho] Switch default to new Darwin backend
The new Darwin backend for LLD is now able to link reasonably large
real-world programs on x86_64. For instance, we have achieved
self-hosting for the X86_64 target, where all LLD tests pass when
building lld with itself on macOS. As such, we would like to make it the
default back-end.

The new port is now named `ld64.lld`, and the old port remains
accessible as `ld64.lld.darwinold`

This [annoucement email][1] has some context. (But note that, unlike
what the email says, we are no longer doing this as part of the LLVM 12
branch cut -- instead we will go into LLVM 13.)

Numerous mechanical test changes were required to make this change; in
the interest of creating something that's reviewable on Phabricator,
I've split out the boring changes into a separate diff (D95905). I plan to
merge its contents with those in this diff before landing.

(@gkm made the original draft of this diff, and he has agreed to let me
take over.)

[1]: https://lists.llvm.org/pipermail/llvm-dev/2021-January/147665.html

Reviewed By: #lld-macho, thakis

Differential Revision: https://reviews.llvm.org/D95204
2021-03-01 12:30:10 -05:00

166 lines
5.0 KiB
YAML

# RUN: ld64.lld.darwinold -arch x86_64 %s %p/Inputs/write-final-sections.yaml \
# RUN: -o %t -e _foo
# RUN: llvm-readobj --sections --section-data %t | FileCheck %s
--- !native
defined-atoms:
# For __TEXT, __text (with typeCode)
- name: _foo
scope: global
content: [ 55 ]
# CHECK: Name: __text
# CHECK: Segment: __TEXT
# CHECK: SectionData (
# CHECK-NEXT: 0000: 55
# CHECK-NEXT: )
# For __TEXT, __const (with typeConstant),
- type: constant
content: [ 01, 00, 00, 00 ]
# From __TEXT, __literal4, (with typeLiteral4)
- scope: hidden
type: const-4-byte
content: [ 02, 00, 00, 00 ]
# From __TEXT, __literal8, (with typeLiteral8)
- scope: hidden
type: const-8-byte
content: [ 03, 00, 00, 00, 00, 00, 00, 00 ]
# From __TEXT, __literal16, (with typeLiteral16)
- scope: hidden
type: const-16-byte
content: [ 04, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00 ]
# CHECK: Name: __const
# CHECK: Segment: __TEXT
# CHECK: SectionData (
# CHECK-NEXT: 0000: 01000000 02000000 03000000 00000000
# CHECK-NEXT: 0010: 04000000 00000000 00000000 00000000
# CHECK-NEXT: )
# For __TEXT, __cstring (with typeCString)
- scope: hidden
type: c-string
content: [ 57, 69, 62, 62, 6C, 65, 00 ]
merge: by-content
# CHECK: Name: __cstring
# CHECK: Segment: __TEXT
# CHECK: SectionData (
# CHECK-NEXT: 0000: 57696262 6C6500
# CHECK-NEXT: )
# For __TEXT, __ustring (with typeUTF16String)
- scope: hidden
type: utf16-string
content: [ 05, 00 ]
merge: by-content
# CHECK: Name: __ustring
# CHECK: Segment: __TEXT
# CHECK: SectionData (
# CHECK-NEXT: 0000: 0500
# CHECK-NEXT: )
# For __TEXT, __gcc_except_tab, (with typeLSDA)
- name: GCC_except_table0
type: unwind-lsda
content: [ 06, 00 ]
# CHECK: Name: __gcc_except_tab
# CHECK: Segment: __TEXT
# CHECK: SectionData (
# CHECK-NEXT: 0000: 0600
# CHECK-NEXT: )
# For __TEXT, __eh_frame, (with typeCFI)
- name: LCIE
type: unwind-cfi
content: [ 14, 00, 00, 00, 00, 00, 00, 00, 01, 7A, 52, 00,
01, 78, 10, 01, 10, 0C, 07, 08, 90, 01, 00, 00 ]
- type: unwind-cfi
content: [ 24, 00, 00, 00, 1C, 00, 00, 00, C8, FE, FF, FF,
FF, FF, FF, FF, 01, 00, 00, 00, 00, 00, 00, 00,
00, 41, 0E, 10, 86, 02, 43, 0D, 06, 00, 00, 00,
00, 00, 00, 00 ]
references:
- kind: unwindFDEToFunction
offset: 8
target: _foo
- kind: negDelta32
offset: 4
target: LCIE
# CHECK: Name: __eh_frame
# CHECK: Segment: __TEXT
# CHECK: SectionData (
# CHECK-NEXT: 0000: 14000000 00000000 017A5200 01781001
# CHECK-NEXT: 0010: 100C0708 90010000 24000000 1C000000
# CHECK-NEXT: 0020: 70FFFFFF FFFFFFFF 01000000 00000000
# CHECK-NEXT: 0030: 00410E10 8602430D 06000000 00000000
# CHECK-NEXT: )
# For __DATA, __data, (with typeData)
- name: var
type: data
content: [ 08 ]
# CHECK: Name: __data
# CHECK: Segment: __DATA
# CHECK: SectionData (
# CHECK-NEXT: 0000: 08
# CHECK-NEXT: )
# For __DATA, __bss (with typeZeroFill)
# FIXME: Attributes & tags of __bss are mostly broken. Should be at end of
# __DATA, should have size, should have S_ZEROFILL flag.
- type: zero-fill
size: 8
# CHECK: Name: __bss
# CHECK: Segment: __DATA
# For __DATA, __const, (with typeConstData)
- type: const-data
content: [ 09, 00, 00, 00 ]
# CHECK: Name: __const
# CHECK: Segment: __DATA
# CHECK: SectionData (
# CHECK-NEXT: 0000: 09000000
# CHECK-NEXT: )
# For __DATA, __cfstring, (with typeCFString)
- type: cfstring
content: [ 0A, 00 ]
# CHECK: Name: __cfstring
# CHECK: Segment: __DATA
# CHECK: SectionData (
# CHECK-NEXT: 0000: 0A00
# CHECK-NEXT: )
# For __DATA, __got (with typeGOT)
- type: got
content: [ 0B, 00, 00, 00, 00, 00, 00, 00 ]
# CHECK: Name: __got
# CHECK: Segment: __DATA
# CHECK: SectionData (
# CHECK-NEXT: 0000: 0B000000 00000000
# CHECK-NEXT: )
# For __DATA, __mod_init_func (with typeInitializerPtr)
- type: initializer-pointer
content: [ 0C, 00, 00, 00, 00, 00, 00, 00 ]
# CHECK: Name: __mod_init_func
# CHECK: Segment: __DATA
# CHECK: SectionData (
# CHECK-NEXT: 0000: 0C000000 00000000
# CHECK-NEXT: )
# For __DATA, __mod_term_func (with typeTerminatorPointer)
- type: terminator-pointer
content: [ 0D, 00, 00, 00, 00, 00, 00, 00 ]
# CHECK: Name: __mod_term_func
# CHECK: Segment: __DATA
# CHECK: SectionData (
# CHECK-NEXT: 0000: 0D000000 00000000
# CHECK-NEXT: )
- type: compact-unwind
content: [ 0E, 00, 00, 00, 00, 00, 00, 00 ]
# CHECK-NOT: Name: __compact_unwind