1# REQUIRES: x86 2 3# RUN: llvm-mc -filetype=obj -triple=x86_64-apple-darwin %s -o %t.o 4# RUN: %lld -dylib %t.o -o %t.dylib 5# RUN: obj2yaml %t.dylib | FileCheck %s 6 7## Test that: 8## 1/ Consecutive rebases are encoded as REBASE_OPCODE_DO_REBASE_IMM_TIMES. 9## 2/ Gaps smaller than 15 words are encoded as REBASE_OPCODE_ADD_ADDR_IMM_SCALED. 10## 3/ Gaps larger than that become REBASE_OPCODE_ADD_ADDR_ULEB. 11## FIXME: The last rebase could be transformed into a REBASE_OPCODE_DO_REBASE_ADD_ADDR_ULEB. 12 13# CHECK: RebaseOpcodes: 14# CHECK-NEXT: Opcode: REBASE_OPCODE_SET_TYPE_IMM 15# CHECK-NEXT: Imm: 1 16# CHECK-NEXT: Opcode: REBASE_OPCODE_SET_SEGMENT_AND_OFFSET_ULEB 17# CHECK-NEXT: Imm: 1 18# CHECK-NEXT: ExtraData: [ 0x0 ] 19# CHECK-NEXT: Opcode: REBASE_OPCODE_DO_REBASE_IMM_TIMES 20# CHECK-NEXT: Imm: 1 21# CHECK-NEXT: Opcode: REBASE_OPCODE_ADD_ADDR_IMM_SCALED 22# CHECK-NEXT: Imm: 14 23# CHECK-NEXT: Opcode: REBASE_OPCODE_DO_REBASE_IMM_TIMES 24# CHECK-NEXT: Imm: 3 25# CHECK-NEXT: Opcode: REBASE_OPCODE_ADD_ADDR_ULEB 26# CHECK-NEXT: Imm: 0 27# CHECK-NEXT: ExtraData: [ 0x78 ] 28# CHECK-NEXT: Opcode: REBASE_OPCODE_DO_REBASE_IMM_TIMES 29# CHECK-NEXT: Imm: 1 30# CHECK-NEXT: Opcode: REBASE_OPCODE_DONE 31# CHECK-NEXT: Imm: 0 32 33 34.text 35.globl _foo 36_foo: 37 38.data 39.quad _foo 40.space 112 41.quad _foo 42.quad _foo 43.quad _foo 44.space 120 45.quad _foo 46