# REQUIRES: x86 # RUN: rm -rf %t && mkdir -p %t # RUN: llvm-mc -filetype=obj -triple=x86_64-apple-darwin %s -o %t/test.o # RUN: %lld -execute -o %t/exec %t/test.o -lSystem # RUN: %lld -dylib -o %t/dylib %t/test.o -lSystem # RUN: %lld -bundle -o %t/bundle %t/test.o -lSystem # RUN: llvm-objdump --macho --all-headers %t/exec | \ # RUN: FileCheck %s --check-prefixes=EXEC,COMMON # RUN: llvm-objdump --macho --all-headers %t/dylib | \ # RUN: FileCheck %s --check-prefixes=DYLIB,COMMON # RUN: llvm-objdump --macho --all-headers %t/bundle | \ # RUN: FileCheck %s --check-prefix=COMMON ## Check that load commands and sections within segments occur in the proper ## sequence. On ARM64 kernel is especially picky about layout, and will ## barf with errno=EBADMACHO when the sequence is wrong. # EXEC: cmd LC_SEGMENT_64 # EXEC: segname __PAGEZERO # COMMON: cmd LC_SEGMENT_64 # COMMON: segname __TEXT # COMMON: sectname __text # COMMON: segname __TEXT # COMMON: sectname __cstring # COMMON: segname __TEXT # COMMON: cmd LC_SEGMENT_64 # COMMON: segname __DATA_CONST # COMMON: sectname __got # COMMON: segname __DATA_CONST # COMMON: sectname __const # COMMON: segname __DATA_CONST # COMMON: cmd LC_SEGMENT_64 # COMMON: segname __DATA # COMMON: sectname __data # COMMON: segname __DATA # COMMON: cmd LC_SEGMENT_64 # COMMON: segname __LINKEDIT # COMMON: cmd LC_DYLD_INFO_ONLY # COMMON: cmd LC_SYMTAB # COMMON: cmd LC_DYSYMTAB # EXEC: cmd LC_LOAD_DYLINKER # DYLIB: cmd LC_ID_DYLIB # COMMON: cmd LC_UUID # COMMON: cmd LC_BUILD_VERSION # EXEC: cmd LC_MAIN # COMMON: cmd LC_LOAD_DYLIB .section __TEXT,__cstring _str: .asciz "Help me! I'm trapped in a test!\n" .globl _mutable .section __DATA,__data mutable: .long 0x1234 .globl _constant .section __DATA,__const constant: .long 0x4567 .text .global _main _main: mov ___nan@GOTPCREL(%rip), %rax ret