xref: /llvm-project-15.0.7/lld/test/MachO/rebase-opcodes.s (revision 643dfd97)
  • Home
  • History
  • Annotate
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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

served by {OpenGrok

Last Index Update: Fri May 15 20:09:11 GMT 2026