1c3e4f3b2SGreg McGary# REQUIRES: x86 2c3e4f3b2SGreg McGary 3c3e4f3b2SGreg McGary# RUN: rm -rf %t && mkdir -p %t 4c3e4f3b2SGreg McGary# RUN: llvm-mc -filetype=obj -triple=x86_64-apple-darwin %s -o %t/test.o 5c3e4f3b2SGreg McGary# RUN: %lld -execute -o %t/exec %t/test.o -lSystem 6c3e4f3b2SGreg McGary# RUN: %lld -dylib -o %t/dylib %t/test.o -lSystem 7c3e4f3b2SGreg McGary# RUN: %lld -bundle -o %t/bundle %t/test.o -lSystem 8c3e4f3b2SGreg McGary 9c3e4f3b2SGreg McGary# RUN: llvm-objdump --macho --all-headers %t/exec | \ 10c3e4f3b2SGreg McGary# RUN: FileCheck %s --check-prefixes=EXEC,COMMON 11c3e4f3b2SGreg McGary# RUN: llvm-objdump --macho --all-headers %t/dylib | \ 12c3e4f3b2SGreg McGary# RUN: FileCheck %s --check-prefixes=DYLIB,COMMON 13c3e4f3b2SGreg McGary# RUN: llvm-objdump --macho --all-headers %t/bundle | \ 14830ead58SFangrui Song# RUN: FileCheck %s --check-prefix=COMMON 15c3e4f3b2SGreg McGary 16c3e4f3b2SGreg McGary## Check that load commands and sections within segments occur in the proper 17c3e4f3b2SGreg McGary## sequence. On ARM64 kernel is especially picky about layout, and will 18c3e4f3b2SGreg McGary## barf with errno=EBADMACHO when the sequence is wrong. 19c3e4f3b2SGreg McGary 20c3e4f3b2SGreg McGary# EXEC: cmd LC_SEGMENT_64 21c3e4f3b2SGreg McGary# EXEC: segname __PAGEZERO 22c3e4f3b2SGreg McGary 23c3e4f3b2SGreg McGary# COMMON: cmd LC_SEGMENT_64 24c3e4f3b2SGreg McGary# COMMON: segname __TEXT 25c3e4f3b2SGreg McGary# COMMON: sectname __text 26c3e4f3b2SGreg McGary# COMMON: segname __TEXT 27c3e4f3b2SGreg McGary# COMMON: sectname __cstring 28c3e4f3b2SGreg McGary# COMMON: segname __TEXT 29c3e4f3b2SGreg McGary# COMMON: cmd LC_SEGMENT_64 30c3e4f3b2SGreg McGary# COMMON: segname __DATA_CONST 31c3e4f3b2SGreg McGary# COMMON: sectname __got 32c3e4f3b2SGreg McGary# COMMON: segname __DATA_CONST 33fcab06bdSJez Ng# COMMON: sectname __const 34fcab06bdSJez Ng# COMMON: segname __DATA_CONST 35c3e4f3b2SGreg McGary# COMMON: cmd LC_SEGMENT_64 36c3e4f3b2SGreg McGary# COMMON: segname __DATA 37c3e4f3b2SGreg McGary# COMMON: sectname __data 38c3e4f3b2SGreg McGary# COMMON: segname __DATA 39c3e4f3b2SGreg McGary# COMMON: cmd LC_SEGMENT_64 40c3e4f3b2SGreg McGary# COMMON: segname __LINKEDIT 41c3e4f3b2SGreg McGary# COMMON: cmd LC_DYLD_INFO_ONLY 42c3e4f3b2SGreg McGary# COMMON: cmd LC_SYMTAB 43c3e4f3b2SGreg McGary# COMMON: cmd LC_DYSYMTAB 44c3e4f3b2SGreg McGary 45c3e4f3b2SGreg McGary# EXEC: cmd LC_LOAD_DYLINKER 46c3e4f3b2SGreg McGary# DYLIB: cmd LC_ID_DYLIB 47c3e4f3b2SGreg McGary 48c3e4f3b2SGreg McGary# COMMON: cmd LC_UUID 49fd28f718SJez Ng# COMMON: cmd LC_BUILD_VERSION 50*bcbb3066SNico Weber 51*bcbb3066SNico Weber# EXEC: cmd LC_MAIN 52*bcbb3066SNico Weber 53c3e4f3b2SGreg McGary# COMMON: cmd LC_LOAD_DYLIB 54c3e4f3b2SGreg McGary 55c3e4f3b2SGreg McGary.section __TEXT,__cstring 56c3e4f3b2SGreg McGary_str: 57c3e4f3b2SGreg McGary .asciz "Help me! I'm trapped in a test!\n" 58c3e4f3b2SGreg McGary 59c3e4f3b2SGreg McGary.globl _mutable 60c3e4f3b2SGreg McGary.section __DATA,__data 61c3e4f3b2SGreg McGarymutable: 62c3e4f3b2SGreg McGary .long 0x1234 63c3e4f3b2SGreg McGary 64c3e4f3b2SGreg McGary.globl _constant 65c3e4f3b2SGreg McGary.section __DATA,__const 66c3e4f3b2SGreg McGaryconstant: 67c3e4f3b2SGreg McGary .long 0x4567 68c3e4f3b2SGreg McGary 69c3e4f3b2SGreg McGary.text 70c3e4f3b2SGreg McGary.global _main 71c3e4f3b2SGreg McGary_main: 72c3e4f3b2SGreg McGary mov ___nan@GOTPCREL(%rip), %rax 73c3e4f3b2SGreg McGary ret 74