brintos

brintos / llvm-project-archived public Read only

0
0
Text · 3.6 KiB · f82da13 Raw
75 lines · plain
1# REQUIRES: x862# RUN: rm -rf %t; split-file %s %t3# RUN: llvm-mc -filetype=obj -triple=x86_64-apple-darwin %t/dylib.s -o %t/dylib.o4# RUN: %lld -lSystem -dylib %t/dylib.o -o %t/libdylib.dylib5 6## FileCheck does not like wrapping arithmetic, so we specify all 3 check variables manually:7##   ADDEND  := inline/outline addend, unsigned8##   OUTLINE := outline addend, signed9##   REBASE  := target of rebase; 0x1000 + ADDEND, unsigned10 11## We can use the DYLD_CHAINED_IMPORT import format if 0 <= ADDEND <= 255 bytes.12# RUN: llvm-mc -filetype=obj -triple=x86_64-apple-darwin %t/main.s -o %t/main.o --defsym ADDEND=013# RUN: %lld -lSystem -dylib %t/main.o -L%t -ldylib -fixup_chains -o %t/out14# RUN: llvm-objdump --macho --chained-fixups --dyld-info %t/out | \15# RUN:     FileCheck %s -D#OUTLINE=0 -D#ADDEND=0 -D#%x,REBASE=0x1000 --check-prefixes=IMPORT,COMMON16# RUN: llvm-mc -filetype=obj -triple=x86_64-apple-darwin %t/main.s -o %t/main.o --defsym ADDEND=25517# RUN: %lld -lSystem -dylib %t/main.o -L%t -ldylib -fixup_chains -o %t/out18# RUN: llvm-objdump --macho --chained-fixups --dyld-info %t/out | \19# RUN:     FileCheck %s -D#OUTLINE=0 -D#ADDEND=255 -D#%x,REBASE=0x10FF --check-prefixes=IMPORT,COMMON20 21## DYLD_CHAINED_IMPORT_ADDEND is used if the addend fits in a 32-bit signed integer.22# RUN: llvm-mc -filetype=obj -triple=x86_64-apple-darwin %t/main.s -o %t/main.o --defsym ADDEND=-123# RUN: %lld -lSystem -dylib %t/main.o -L%t -ldylib -fixup_chains -o %t/out24# RUN: llvm-objdump --macho --chained-fixups --dyld-info %t/out | \25# RUN:     FileCheck %s -D#%d,OUTLINE=-1 -D#%x,ADDEND=0xFFFFFFFFFFFFFFFF -D#%x,REBASE=0xFFF \26# RUN:     --check-prefixes=IMPORT-ADDEND,COMMON27# RUN: llvm-mc -filetype=obj -triple=x86_64-apple-darwin %t/main.s -o %t/main.o --defsym ADDEND=25628# RUN: %lld -lSystem -dylib %t/main.o -L%t -ldylib -fixup_chains -o %t/out29# RUN: llvm-objdump --macho --chained-fixups --dyld-info %t/out | \30# RUN:     FileCheck %s -D#OUTLINE=256 -D#ADDEND=256 -D#%x,REBASE=0x1100 \31# RUN:     --check-prefixes=IMPORT-ADDEND,COMMON32 33## Otherwise, DYLD_CHAINED_IMPORT_ADDEND64 is used.34# RUN: llvm-mc -filetype=obj -triple=x86_64-apple-darwin %t/main.s -o %t/main.o --defsym ADDEND=0x10000000035# RUN: %lld -lSystem -dylib %t/main.o -L%t -ldylib -fixup_chains -o %t/out36# RUN: llvm-objdump --macho --chained-fixups --dyld-info %t/out | \37# RUN:     FileCheck %s -D#%x,OUTLINE=0x100000000 -D#%x,ADDEND=0x100000000 \38# RUN:     -D#%x,REBASE=0x100001000 --check-prefixes=IMPORT-ADDEND64,COMMON39 40# COMMON:      dyld information:41# COMMON-NEXT: segment  section address pointer  type  addend            dylib     symbol/vm address42# COMMON-NEXT: __DATA   __data    {{.*}}         bind  0x[[#%X, ADDEND]] libdylib  _dysym43# COMMON-NEXT: __DATA   __data    {{.*}}         rebase                            0x[[#%X, REBASE]]44 45# COMMON:        chained fixups header (LC_DYLD_CHAINED_FIXUPS)46# IMPORT:          imports_format = 1 (DYLD_CHAINED_IMPORT)47# IMPORT-ADDEND:   imports_format = 2 (DYLD_CHAINED_IMPORT_ADDEND)48# IMPORT-ADDEND64: imports_format = 3 (DYLD_CHAINED_IMPORT_ADDEND64)49 50# IMPORT:             dyld chained import[0]51# IMPORT-ADDEND:      dyld chained import addend[0]52# IMPORT-ADDEND64:    dyld chained import addend64[0]53# COMMON-NEXT:          lib_ordinal = 2 (libdylib)54# COMMON-NEXT:          weak_import = 055# COMMON-NEXT:          name_offset = 0 (_dysym)56# IMPORT-ADDEND-NEXT:   addend      = [[#%d, OUTLINE]]57# IMPORT-ADDEND64-NEXT: addend      = [[#%d, OUTLINE]]58 59#--- dylib.s60.globl _dysym61 62_dysym:63  ret64 65#--- main.s66.globl _dysym, _local67 68.data69_local:70.skip 12871 72.p2align 373.quad _dysym + ADDEND74.quad _local + ADDEND75