brintos

brintos / llvm-project-archived public Read only

0
0
Text · 2.6 KiB · e85b312 Raw
80 lines · plain
1# REQUIRES: x862# RUN: rm -rf %t; split-file %s %t3 4## codesign requires that each section in __LINKEDIT ends where the next one5## starts and that they follow a certain order. This test enforces that invariant.6## It also checks that the last section in __LINKEDIT covers the last byte of7## the segment.8 9# RUN: llvm-mc -filetype=obj -triple=x86_64-apple-darwin %t/foo.s -o %t/foo.o10# RUN: %lld %t/foo.o -dylib -o %t/libfoo.dylib11 12# RUN: llvm-mc -filetype=obj -triple=x86_64-apple-darwin %t/test.s -o %t/test.o13 14# RUN: %lld -lSystem -adhoc_codesign -o %t/test %t/libfoo.dylib %t/test.o15# RUN: llvm-objdump --macho --all-headers %t/test | FileCheck --check-prefixes=CHECK,OPCODE %s16 17# RUN: %lld -lSystem -adhoc_codesign -fixup_chains -o %t/chained_test %t/libfoo.dylib %t/test.o18# RUN: llvm-objdump --macho --all-headers %t/chained_test | FileCheck --check-prefixes=CHECK,CHAINED %s19 20# CHECK:      segname __LINKEDIT21# CHECK-NEXT: vmaddr22# CHECK-NEXT: vmsize23# CHECK-NEXT: fileoff [[#LINKEDIT_OFF:]]24# CHECK-NEXT: filesize [[#LINKEDIT_SIZE:]]25 26# OPCODE:      cmd LC_DYLD_INFO_ONLY27# OPCODE-NEXT: cmdsize 4828# OPCODE-NEXT: rebase_off [[#REBASE_OFF:]]29# OPCODE-NEXT: rebase_size [[#REBASE_SIZE:]]30# OPCODE-NEXT: bind_off [[#BIND_OFF: REBASE_OFF + REBASE_SIZE]]31# OPCODE-NEXT: bind_size [[#BIND_SIZE:]]32# OPCODE-NEXT: weak_bind_off [[#WEAK_OFF: BIND_OFF + BIND_SIZE]]33# OPCODE-NEXT: weak_bind_size [[#WEAK_SIZE:]]34# OPCODE-NEXT: lazy_bind_off [[#LAZY_OFF: WEAK_OFF + WEAK_SIZE]]35# OPCODE-NEXT: lazy_bind_size [[#LAZY_SIZE:]]36# OPCODE-NEXT: export_off [[#EXPORT_OFF: LAZY_OFF + LAZY_SIZE]]37# OPCODE-NEXT: export_size [[#EXPORT_SIZE:]]38 39# CHAINED:      cmd LC_DYLD_CHAINED_FIXUPS40# CHAINED-NEXT: cmdsize41# CHAINED-NEXT: dataoff [[#FIXUPS_OFF: LINKEDIT_OFF]]42# CHAINED-NEXT: datasize [[#FIXUPS_SIZE:]]43 44# CHAINED:      cmd LC_DYLD_EXPORTS_TRIE45# CHAINED-NEXT: cmdsize46# CHAINED-NEXT: dataoff [[#EXPORT_OFF: FIXUPS_OFF + FIXUPS_SIZE]]47# CHAINED-NEXT: datasize [[#EXPORT_SIZE:]]48 49# CHECK:      cmd LC_FUNCTION_STARTS50# CHECK-NEXT: cmdsize51# CHECK-NEXT: dataoff [[#FUNCSTARTS_OFF: EXPORT_OFF + EXPORT_SIZE]]52# CHECK-NEXT: datasize [[#FUNCSTARTS_SIZE:]]53 54# CHECK:      cmd LC_DATA_IN_CODE55# CHECK-NEXT: cmdsize56# CHECK-NEXT: dataoff [[#DIC_OFF: FUNCSTARTS_OFF + FUNCSTARTS_SIZE]]57 58# CHECK:      cmd LC_CODE_SIGNATURE59# CHECK-NEXT: cmdsize 1660# CHECK-NEXT: dataoff [[#SIG_OFF:]]61# CHECK-NEXT: datasize [[#SIG_SIZE: LINKEDIT_OFF + LINKEDIT_SIZE - SIG_OFF]]62 63#--- foo.s64.globl _foo, _weak_foo65.weak_definition _weak_foo66_foo:67_weak_foo:68 69#--- test.s70.globl _main71_main:72  callq _foo73  callq _weak_foo74  ret75 76.p2align 2, 0x9077.data_region jt3278.long 079.end_data_region80