[lld-macho] Emit load command LC_BUILD_VERSION
[lldb.git] / lld / test / MachO / headerpad.s
1 # REQUIRES: x86
2
3 ## NOTE: Here we check that the first non-header section -- __text -- appears
4 ## *exactly* `-headerpad` bytes from the end of the header. ld64 actually
5 ## starts laying out the non-header sections in the __TEXT segment from the end
6 ## of the (page-aligned) segment rather than the front, so its binaries
7 ## typically have more than `-headerpad` bytes of actual padding. `-headerpad`
8 ## just enforces a lower bound. We should consider implementing the same
9 ## alignment behavior.
10
11 # RUN: llvm-mc -filetype=obj -triple=x86_64-apple-darwin %s -o %t.o
12 # RUN: lld -flavor darwinnew -o %t %t.o -headerpad 0
13 # RUN: llvm-objdump --macho --all-headers %t | FileCheck %s --check-prefix=PAD0
14 # PAD0:      magic        cputype  cpusubtype  caps    filetype ncmds sizeofcmds               flags
15 # PAD0-NEXT: MH_MAGIC_64  X86_64   ALL         LIB64   EXECUTE  9     [[#%u, CMDSIZE:]] {{.*}}
16 # PAD0:      sectname __text
17 # PAD0-NEXT: segname __TEXT
18 # PAD0-NEXT: addr
19 # PAD0-NEXT: size
20 # PAD0-NEXT: offset [[#%u, CMDSIZE + 32]]
21
22 # RUN: lld -flavor darwinnew -o %t %t.o -headerpad 11
23 # RUN: llvm-objdump --macho --all-headers %t | FileCheck %s --check-prefix=PAD11
24 # PAD11:      magic        cputype  cpusubtype  caps    filetype ncmds sizeofcmds               flags
25 # PAD11-NEXT: MH_MAGIC_64  X86_64   ALL         LIB64   EXECUTE  9     [[#%u, CMDSIZE:]] {{.*}}
26 # PAD11:      sectname __text
27 # PAD11-NEXT: segname __TEXT
28 # PAD11-NEXT: addr
29 # PAD11-NEXT: size
30 # PAD11-NEXT: offset [[#%u, CMDSIZE + 32 + 0x11]]
31
32 .globl _main
33 _main:
34   ret