# RUN: llvm-objdump -d %t.exe | FileCheck %s --check-prefix DISASM
# RUN: llvm-readobj --coff-imports %t.exe | FileCheck %s -check-prefix IMPORTS
-# DISASM: 140001014: 11 00 00 d0 adrp x17, #8192
+# DISASM: 140001014: 11 00 00 d0 adrp x17, 0x140003000
# DISASM: 140001018: 31 22 00 91 add x17, x17, #8
# DISASM: 14000101c: 01 00 00 14 b 0x140001020 <.text+0x20>
# DISASM: 140001020: fd 7b b3 a9 stp x29, x30, [sp, #-208]!
# DISASM: 140001040: e4 97 04 ad stp q4, q5, [sp, #144]
# DISASM: 140001044: e6 9f 05 ad stp q6, q7, [sp, #176]
# DISASM: 140001048: e1 03 11 aa mov x1, x17
-# DISASM: 14000104c: 00 00 00 b0 adrp x0, #4096
+# DISASM: 14000104c: 00 00 00 b0 adrp x0, 0x140002000
# DISASM: 140001050: 00 00 00 91 add x0, x0, #0
# DISASM: 140001054: eb ff ff 97 bl 0x140001000 <.text>
# DISASM: 140001058: f0 03 00 aa mov x16, x0
# AFTER: 140001004: 06 00 00 94 bl 0x14000101c
# AFTER: 140001008: c0 03 5f d6 ret
# AFTER: 14000100c: ff cc cc cc <unknown>
-# AFTER: 140001010: 10 00 00 b0 adrp x16, #4096
+# AFTER: 140001010: 10 00 00 b0 adrp x16, 0x140002000
# AFTER: 140001014: 10 32 40 f9 ldr x16, [x16, #96]
# AFTER: 140001018: 00 02 1f d6 br x16
-# AFTER: 14000101c: 10 00 00 b0 adrp x16, #4096
+# AFTER: 14000101c: 10 00 00 b0 adrp x16, 0x140002000
# AFTER: 140001020: 10 3a 40 f9 ldr x16, [x16, #112]
# AFTER: 140001024: 00 02 1f d6 br x16
# BEFORE: Disassembly of section .text:
# BEFORE-EMPTY:
# BEFORE: 0: fe 0f 1f f8 str x30, [sp, #-16]!
-# BEFORE: 4: 00 00 00 90 adrp x0, #0
+# BEFORE: 4: 00 00 00 90 adrp x0, 0x0
# BEFORE: 8: 00 08 00 91 add x0, x0, #2
# BEFORE: c: 00 00 00 94 bl 0xc
# BEFORE: 10: 00 01 40 39 ldrb w0, [x8]
# BEFORE: 50: 00 01 00 fd str d0, [x8]
# BEFORE: 54: 00 01 80 3d str q0, [x8]
# BEFORE: 58: 00 05 40 f9 ldr x0, [x8, #8]
-# BEFORE: 5c: 20 1a 01 b0 adrp x0, #36982784
+# BEFORE: 5c: 20 1a 01 b0 adrp x0, 0x2345000
# BEFORE: 60: 00 fc 4f f9 ldr x0, [x0, #8184]
# BEFORE: 64: e0 03 1f 2a mov w0, wzr
# BEFORE: 68: fe 07 41 f8 ldr x30, [sp], #16
# AFTER: Disassembly of section .text:
# AFTER-EMPTY:
# AFTER: 140001000: fe 0f 1f f8 str x30, [sp, #-16]!
-# AFTER: 140001004: 00 00 00 b0 adrp x0, #4096
+# AFTER: 140001004: 00 00 00 b0 adrp x0, 0x140002000
# AFTER: 140001008: 00 18 00 91 add x0, x0, #6
# AFTER: 14000100c: 25 00 00 94 bl 0x1400010a0
# AFTER: 140001010: 00 21 40 39 ldrb w0, [x8, #8]
# AFTER: 140001050: 00 09 00 fd str d0, [x8, #16]
# AFTER: 140001054: 00 05 80 3d str q0, [x8, #16]
# AFTER: 140001058: 00 09 40 f9 ldr x0, [x8, #16]
-# AFTER: 14000105c: 00 00 00 f0 adrp x0, #12288
+# AFTER: 14000105c: 00 00 00 f0 adrp x0, 0x140004000
# AFTER: 140001060: 00 fc 47 f9 ldr x0, [x0, #4088]
# AFTER: 140001064: e0 03 1f 2a mov w0, wzr
# AFTER: 140001068: fe 07 41 f8 ldr x30, [sp], #16
# AFTER: 140001094: 61 00 00 54 b.ne 0x1400010a0
# AFTER: 140001098: 40 00 00 36 tbz w0, #0, 0x1400010a0
# AFTER: 14000109c: 61 ff ff ff <unknown>
-# AFTER: 1400010a0: 10 00 00 b0 adrp x16, #4096
+# AFTER: 1400010a0: 10 00 00 b0 adrp x16, 0x140002000
# AFTER: 1400010a4: 10 2a 40 f9 ldr x16, [x16, #80]
# AFTER: 1400010a8: 00 02 1f d6 br x16
// DISASM: 0000000140001000 <.text>:
// DISASM: 140001000: 40 00 00 36 tbz w0, #0, 0x140001008 <.text+0x8>
// DISASM: 140001004: c0 03 5f d6 ret
-// DISASM: 140001008: 50 00 00 90 adrp x16, #32768
+// DISASM: 140001008: 50 00 00 90 adrp x16, 0x140009000
// DISASM: 14000100c: 10 52 00 91 add x16, x16, #20
// DISASM: 140001010: 00 02 1f d6 br x16
// DISASM: 140009014: 60 00 00 36 tbz w0, #0, 0x140009020 <.text+0x8020>
// DISASM: 140009018: c0 03 5f d6 ret
-// DISASM: 140009020: 50 00 00 90 adrp x16, #32768
+// DISASM: 140009020: 50 00 00 90 adrp x16, 0x140011000
// DISASM: 140009024: 10 b2 00 91 add x16, x16, #44
// DISASM: 140009028: 00 02 1f d6 br x16
#DSO-EMPTY:
#DSO-NEXT: <.plt>:
#DSO-NEXT: 10370: stp x16, x30, [sp, #-16]!
-#DSO-NEXT: 10374: adrp x16, #131072
+#DSO-NEXT: 10374: adrp x16, 0x30000
#DSO-NEXT: 10378: ldr x17, [x16, #1152]
#DSO-NEXT: 1037c: add x16, x16, #1152
#DSO-NEXT: 10380: br x17
#DSO-NEXT: 1038c: nop
#DSO-EMPTY:
#DSO-NEXT: <_foo@plt>:
-#DSO-NEXT: 10390: adrp x16, #131072
+#DSO-NEXT: 10390: adrp x16, 0x30000
#DSO-NEXT: 10394: ldr x17, [x16, #1160]
#DSO-NEXT: 10398: add x16, x16, #1160
#DSO-NEXT: 1039c: br x17
#DSO-EMPTY:
#DSO-NEXT: <_bar@plt>:
-#DSO-NEXT: 103a0: adrp x16, #131072
+#DSO-NEXT: 103a0: adrp x16, 0x30000
#DSO-NEXT: 103a4: ldr x17, [x16, #1168]
#DSO-NEXT: 103a8: add x16, x16, #1168
#DSO-NEXT: 103ac: br x17
#DSO-EMPTY:
#DSO-NEXT: <_dah@plt>:
-#DSO-NEXT: 103b0: adrp x16, #131072
+#DSO-NEXT: 103b0: adrp x16, 0x30000
#DSO-NEXT: 103b4: ldr x17, [x16, #1176]
#DSO-NEXT: 103b8: add x16, x16, #1176
#DSO-NEXT: 103bc: br x17
// S + A - P = 0x2303f0 + 0 - 0x21031c = 131284
// CODE-NEXT: 21031c: adr x1, #131284
// Page(S + A) - Page(P) = Page(0x230400) - Page(0x210320) = 131072
-// CODE-NEXT: 210320: adrp x2, #131072
+// CODE-NEXT: 210320: adrp x2, 0x230000
// (S + A) & 0xFFF = (0x230400 + 0) & 0xFFF = 1024
// CODE-NEXT: 210324: add x2, x2, #1024
// CHECK-PRINT: detected cortex-a53-843419 erratum sequence starting at FF8 in unpatched output.
// CHECK: <t3_ff8_ldr>:
-// CHECK-NEXT: ff8: 20 00 00 d0 adrp x0, #24576
+// CHECK-NEXT: ff8: 20 00 00 d0 adrp x0, 0x6000
// CHECK-NEXT: ffc: 21 00 40 f9 ldr x1, [x1]
// CHECK-NEXT: 1000: f9 0f 00 14 b 0x4fe4
// CHECK-NEXT: 1004: c0 03 5f d6 ret
$x.999:
// CHECK-PRINT-NEXT: detected cortex-a53-843419 erratum sequence starting at 1FFC in unpatched output.
// CHECK: <t3_ffc_ldrsimd>:
-// CHECK-NEXT: 1ffc: 20 00 00 b0 adrp x0, #20480
+// CHECK-NEXT: 1ffc: 20 00 00 b0 adrp x0, 0x6000
// CHECK-NEXT: 2000: 21 00 40 bd ldr s1, [x1]
// CHECK-NEXT: 2004: fa 0b 00 14 b 0x4fec
// CHECK-NEXT: 2008: c0 03 5f d6 ret
// CHECK-PRINT-NEXT: detected cortex-a53-843419 erratum sequence starting at 3FF8 in unpatched output.
// CHECK: <t3_ffc_ldr>:
-// CHECK-NEXT: 3ff8: 00 00 00 f0 adrp x0, #12288
+// CHECK-NEXT: 3ff8: 00 00 00 f0 adrp x0, 0x6000
// CHECK-NEXT: 3ffc: 21 00 40 f9 ldr x1, [x1]
// CHECK-NEXT: 4000: fd 03 00 14 b 0x4ff4
// CHECK-NEXT: 4004: c0 03 5f d6 ret
// CHECK-PRINT-NEXT: detected cortex-a53-843419 erratum sequence starting at 4FFC in unpatched output
// CHECK: <t3_ffc_str>:
-// CHECK-NEXT: 4ffc: 00 00 00 d0 adrp x0, #8192
+// CHECK-NEXT: 4ffc: 00 00 00 d0 adrp x0, 0x6000
// CHECK-NEXT: 5000: 21 00 00 f9 str x1, [x1]
// CHECK-NEXT: 5004: fb 03 00 14 b 0x5ff0
// CHECK-NEXT: 5008: c0 03 5f d6 ret
//CHECK-PRINT-NEXT: detected cortex-a53-843419 erratum sequence starting at 5FF8 in unpatched output
// CHECK: <t3_ff8_str>:
-// CHECK-NEXT: 5ff8: 00 00 00 b0 adrp x0, #4096
+// CHECK-NEXT: 5ff8: 00 00 00 b0 adrp x0, 0x6000
// CHECK-NEXT: 5ffc: 21 00 00 f9 str x1, [x1]
// CHECK-NEXT: 6000: 03 00 00 14 b 0x600c
// CHECK-NEXT: 6004: c0 03 5f d6 ret
ret
// CHECK3: <t3_ff8_ldr>:
-// CHECK3-NEXT: 211ff8: e0 00 04 f0 adrp x0, #134344704
+// CHECK3-NEXT: 211ff8: e0 00 04 f0 adrp x0, 0x8230000
// CHECK3-NEXT: 211ffc: 21 00 40 f9 ldr x1, [x1]
// CHECK3-NEXT: 212000: 02 08 80 15 b 0x6214008
// CHECK3-NEXT: 212004: c0 03 5f d6 ret
ret
// CHECK4: <t3_ff8_str>:
-// CHECK4-NEXT: 4213ff8: e0 00 02 b0 adrp x0, #67227648
+// CHECK4-NEXT: 4213ff8: e0 00 02 b0 adrp x0, 0x8230000
// CHECK4-NEXT: 4213ffc: 21 00 40 f9 ldr x1, [x1]
// CHECK4-NEXT: 4214000: 04 00 80 14 b 0x6214010
// CHECK4-NEXT: 4214004: c0 03 5f d6 ret
ret
// CHECK7: <t3_ffc_ldr>:
-// CHECK7-NEXT: 8211ffc: e0 00 00 f0 adrp x0, #126976
+// CHECK7-NEXT: 8211ffc: e0 00 00 f0 adrp x0, 0x8230000
// CHECK7-NEXT: 8212000: 21 00 40 f9 ldr x1, [x1]
// CHECK7-NEXT: 8212004: 02 00 00 14 b 0x821200c
// CHECK7-NEXT: 8212008: c0 03 5f d6 ret
// CHECK-PRINT: detected cortex-a53-843419 erratum sequence starting at 211FF8 in unpatched output.
// CHECK: <t3_ff8_ldr>:
-// CHECK-NEXT: 211ff8: 60 02 00 f0 adrp x0, #323584
+// CHECK-NEXT: 211ff8: 60 02 00 f0 adrp x0, 0x260000
// CHECK-NEXT: 211ffc: 21 00 40 f9 ldr x1, [x1]
// CHECK-FIX: 212000: 03 c8 00 14 b 0x24400c
// CHECK-NOFIX: 212000: 00 00 40 f9 ldr x0, [x0]
// CHECK-NEXT: 212004: c0 03 5f d6 ret
// CHECK-RELOCATABLE: <t3_ff8_ldr>:
-// CHECK-RELOCATABLE-NEXT: ff8: 00 00 00 90 adrp x0, #0
+// CHECK-RELOCATABLE-NEXT: ff8: 00 00 00 90 adrp x0, 0x0
// CHECK-RELOCATABLE-NEXT: ffc: 21 00 40 f9 ldr x1, [x1]
// CHECK-RELOCATABLE-NEXT: 1000: 00 00 40 f9 ldr x0, [x0]
// CHECK-RELOCATABLE-NEXT: 1004: c0 03 5f d6 ret
// CHECK-PRINT: detected cortex-a53-843419 erratum sequence starting at 213FF8 in unpatched output.
// CHECK: <t3_ff8_ldrsimd>:
-// CHECK-NEXT: 213ff8: 60 02 00 b0 adrp x0, #315392
+// CHECK-NEXT: 213ff8: 60 02 00 b0 adrp x0, 0x260000
// CHECK-NEXT: 213ffc: 21 00 40 bd ldr s1, [x1]
// CHECK-FIX: 214000: 05 c0 00 14 b 0x244014
// CHECK-NOFIX: 214000: 02 04 40 f9 ldr x2, [x0, #8]
// CHECK-PRINT: detected cortex-a53-843419 erratum sequence starting at 215FFC in unpatched output.
// CHECK: <t3_ffc_ldrpost>:
-// CHECK-NEXT: 215ffc: 40 02 00 f0 adrp x0, #307200
+// CHECK-NEXT: 215ffc: 40 02 00 f0 adrp x0, 0x260000
// CHECK-NEXT: 216000: 21 84 40 bc ldr s1, [x1], #8
// CHECK-FIX: 216004: 06 b8 00 14 b 0x24401c
// CHECK-NOFIX: 216004: 03 08 40 f9 ldr x3, [x0, #16]
// CHECK-PRINT: detected cortex-a53-843419 erratum sequence starting at 217FF8 in unpatched output.
// CHECK: <t3_ff8_strpre>:
-// CHECK-NEXT: 217ff8: 40 02 00 b0 adrp x0, #299008
+// CHECK-NEXT: 217ff8: 40 02 00 b0 adrp x0, 0x260000
// CHECK-NEXT: 217ffc: 21 8c 00 bc str s1, [x1, #8]!
// CHECK-FIX: 218000: 09 b0 00 14 b 0x244024
// CHECK-NOFIX: 218000: 02 0c 40 f9 ldr x2, [x0, #24]
// CHECK-PRINT: detected cortex-a53-843419 erratum sequence starting at 219FFC in unpatched output.
// CHECK: <t3_ffc_str>:
-// CHECK-NEXT: 219ffc: 3c 02 00 f0 adrp x28, #290816
+// CHECK-NEXT: 219ffc: 3c 02 00 f0 adrp x28, 0x260000
// CHECK-NEXT: 21a000: 42 00 00 f9 str x2, [x2]
// CHECK-FIX: 21a004: 0a a8 00 14 b 0x24402c
// CHECK-NOFIX: 21a004: 9c 13 00 f9 str x28, [x28, #32]
// CHECK-PRINT: detected cortex-a53-843419 erratum sequence starting at 21BFFC in unpatched output.
// CHECK: <t3_ffc_strsimd>:
-// CHECK-NEXT: 21bffc: 3c 02 00 b0 adrp x28, #282624
+// CHECK-NEXT: 21bffc: 3c 02 00 b0 adrp x28, 0x260000
// CHECK-NEXT: 21c000: 44 00 00 b9 str w4, [x2]
// CHECK-FIX: 21c004: 0c a0 00 14 b 0x244034
// CHECK-NOFIX: 21c004: 84 17 00 f9 str x4, [x28, #40]
// CHECK-PRINT: detected cortex-a53-843419 erratum sequence starting at 21DFF8 in unpatched output.
// CHECK: <t3_ff8_ldrunpriv>:
-// CHECK-NEXT: 21dff8: 1d 02 00 f0 adrp x29, #274432
+// CHECK-NEXT: 21dff8: 1d 02 00 f0 adrp x29, 0x260000
// CHECK-NEXT: 21dffc: 41 08 40 38 ldtrb w1, [x2]
// CHECK-FIX: 21e000: 0f 98 00 14 b 0x24403c
// CHECK-NOFIX: 21e000: bd 03 40 f9 ldr x29, [x29]
// CHECK-PRINT: detected cortex-a53-843419 erratum sequence starting at 21FFFC in unpatched output.
// CHECK: <t3_ffc_ldur>:
-// CHECK-NEXT: 21fffc: 1d 02 00 b0 adrp x29, #266240
+// CHECK-NEXT: 21fffc: 1d 02 00 b0 adrp x29, 0x260000
// CHECK-NEXT: 220000: 42 40 40 b8 ldur w2, [x2, #4]
// CHECK-FIX: 220004: 10 90 00 14 b 0x244044
// CHECK-NOFIX: 220004: bd 07 40 f9 ldr x29, [x29, #8]
// CHECK-PRINT: detected cortex-a53-843419 erratum sequence starting at 221FFC in unpatched output.
// CHECK: <t3_ffc_sturh>:
-// CHECK-NEXT: 221ffc: f2 01 00 f0 adrp x18, #258048
+// CHECK-NEXT: 221ffc: f2 01 00 f0 adrp x18, 0x260000
// CHECK-NEXT: 222000: 43 40 00 78 sturh w3, [x2, #4]
// CHECK-FIX: 222004: 12 88 00 14 b 0x24404c
// CHECK-NOFIX: 222004: 41 0a 40 f9 ldr x1, [x18, #16]
// CHECK-PRINT: detected cortex-a53-843419 erratum sequence starting at 223FF8 in unpatched output.
// CHECK: <t3_ff8_literal>:
-// CHECK-NEXT: 223ff8: f2 01 00 b0 adrp x18, #249856
+// CHECK-NEXT: 223ff8: f2 01 00 b0 adrp x18, 0x260000
// CHECK-NEXT: 223ffc: e3 ff ff 58 ldr x3, 0x223ff8
// CHECK-FIX: 224000: 15 80 00 14 b 0x244054
// CHECK-NOFIX: 224000: 52 0e 40 f9 ldr x18, [x18, #24]
// CHECK-PRINT: detected cortex-a53-843419 erratum sequence starting at 225FFC in unpatched output.
// CHECK: <t3_ffc_register>:
-// CHECK-NEXT: 225ffc: cf 01 00 f0 adrp x15, #241664
+// CHECK-NEXT: 225ffc: cf 01 00 f0 adrp x15, 0x260000
// CHECK-NEXT: 226000: 43 68 61 f8 ldr x3, [x2, x1]
// CHECK-FIX: 226004: 16 78 00 14 b 0x24405c
// CHECK-NOFIX: 226004: ea 11 40 f9 ldr x10, [x15, #32]
// CHECK-PRINT: detected cortex-a53-843419 erratum sequence starting at 227FF8 in unpatched output.
// CHECK: <t3_ff8_stp>:
-// CHECK-NEXT: 227ff8: d0 01 00 b0 adrp x16, #233472
+// CHECK-NEXT: 227ff8: d0 01 00 b0 adrp x16, 0x260000
// CHECK-NEXT: 227ffc: 61 08 00 a9 stp x1, x2, [x3]
// CHECK-FIX: 228000: 19 70 00 14 b 0x244064
// CHECK-NOFIX: 228000: 0d 16 40 f9 ldr x13, [x16, #40]
// CHECK-PRINT: detected cortex-a53-843419 erratum sequence starting at 229FFC in unpatched output.
// CHECK: <t3_ffc_stnp>:
-// CHECK-NEXT: 229ffc: a7 01 00 f0 adrp x7, #225280
+// CHECK-NEXT: 229ffc: a7 01 00 f0 adrp x7, 0x260000
// CHECK-NEXT: 22a000: 61 08 00 a8 stnp x1, x2, [x3]
// CHECK-FIX: 22a004: 1a 68 00 14 b 0x24406c
// CHECK-NOFIX: 22a004: e9 0c 40 f9 ldr x9, [x7, #24]
// CHECK-PRINT: detected cortex-a53-843419 erratum sequence starting at 22BFFC in unpatched output.
// CHECK: <t3_ffc_st1singlepost>:
-// CHECK-NEXT: 22bffc: b7 01 00 b0 adrp x23, #217088
+// CHECK-NEXT: 22bffc: b7 01 00 b0 adrp x23, 0x260000
// CHECK-NEXT: 22c000: 20 04 82 0d st1 { v0.b }[1], [x1], x2
// CHECK-FIX: 22c004: 1c 60 00 14 b 0x244074
// CHECK-NOFIX: 22c004: f6 12 40 f9 ldr x22, [x23, #32]
// CHECK-PRINT: detected cortex-a53-843419 erratum sequence starting at 22DFF8 in unpatched output.
// CHECK: <t3_ff8_st1multiple>:
-// CHECK-NEXT: 22dff8: 97 01 00 f0 adrp x23, #208896
+// CHECK-NEXT: 22dff8: 97 01 00 f0 adrp x23, 0x260000
// CHECK-NEXT: 22dffc: 20 a0 00 4c st1 { v0.16b, v1.16b }, [x1]
// CHECK-FIX: 22e000: 1f 58 00 14 b 0x24407c
// CHECK-NOFIX: 22e000: f8 16 40 f9 ldr x24, [x23, #40]
// CHECK-PRINT: detected cortex-a53-843419 erratum sequence starting at 22FFF8 in unpatched output.
// CHECK: <t4_ff8_ldr>:
-// CHECK-NEXT: 22fff8: 80 01 00 b0 adrp x0, #200704
+// CHECK-NEXT: 22fff8: 80 01 00 b0 adrp x0, 0x260000
// CHECK-NEXT: 22fffc: 21 00 40 f9 ldr x1, [x1]
// CHECK-NEXT: 230000: 42 00 00 8b add x2, x2, x0
// CHECK-FIX: 230004: 20 50 00 14 b 0x244084
// CHECK-PRINT: detected cortex-a53-843419 erratum sequence starting at 231FFC in unpatched output.
// CHECK: <t4_ffc_str>:
-// CHECK-NEXT: 231ffc: 7c 01 00 f0 adrp x28, #192512
+// CHECK-NEXT: 231ffc: 7c 01 00 f0 adrp x28, 0x260000
// CHECK-NEXT: 232000: 42 00 00 f9 str x2, [x2]
// CHECK-NEXT: 232004: 20 00 02 cb sub x0, x1, x2
// CHECK-FIX: 232008: 21 48 00 14 b 0x24408c
// CHECK-PRINT: detected cortex-a53-843419 erratum sequence starting at 233FF8 in unpatched output.
// CHECK: <t4_ff8_stp>:
-// CHECK-NEXT: 233ff8: 70 01 00 b0 adrp x16, #184320
+// CHECK-NEXT: 233ff8: 70 01 00 b0 adrp x16, 0x260000
// CHECK-NEXT: 233ffc: 61 08 00 a9 stp x1, x2, [x3]
// CHECK-NEXT: 234000: 03 7e 10 9b mul x3, x16, x16
// CHECK-FIX: 234004: 24 40 00 14 b 0x244094
// CHECK-PRINT: detected cortex-a53-843419 erratum sequence starting at 235FF8 in unpatched output.
// CHECK: <t4_ff8_stppre>:
-// CHECK-NEXT: 235ff8: 50 01 00 f0 adrp x16, #176128
+// CHECK-NEXT: 235ff8: 50 01 00 f0 adrp x16, 0x260000
// CHECK-NEXT: 235ffc: 61 08 81 a9 stp x1, x2, [x3, #16]!
// CHECK-NEXT: 236000: 03 7e 10 9b mul x3, x16, x16
// CHECK-FIX: 236004: 26 38 00 14 b 0x24409c
// CHECK-PRINT: detected cortex-a53-843419 erratum sequence starting at 237FF8 in unpatched output.
// CHECK: <t4_ff8_stppost>:
-// CHECK-NEXT: 237ff8: 50 01 00 b0 adrp x16, #167936
+// CHECK-NEXT: 237ff8: 50 01 00 b0 adrp x16, 0x260000
// CHECK-NEXT: 237ffc: 61 08 81 a8 stp x1, x2, [x3], #16
// CHECK-NEXT: 238000: 03 7e 10 9b mul x3, x16, x16
// CHECK-FIX: 238004: 28 30 00 14 b 0x2440a4
// CHECK-PRINT: detected cortex-a53-843419 erratum sequence starting at 239FFC in unpatched output.
// CHECK: <t4_ffc_stpsimd>:
-// CHECK-NEXT: 239ffc: 30 01 00 f0 adrp x16, #159744
+// CHECK-NEXT: 239ffc: 30 01 00 f0 adrp x16, 0x260000
// CHECK-NEXT: 23a000: 61 08 00 ad stp q1, q2, [x3]
// CHECK-NEXT: 23a004: 03 7e 10 9b mul x3, x16, x16
// CHECK-FIX: 23a008: 29 28 00 14 b 0x2440ac
// CHECK-PRINT: detected cortex-a53-843419 erratum sequence starting at 23BFFC in unpatched output.
// CHECK: <t4_ffc_stnp>:
-// CHECK-NEXT: 23bffc: 27 01 00 b0 adrp x7, #151552
+// CHECK-NEXT: 23bffc: 27 01 00 b0 adrp x7, 0x260000
// CHECK-NEXT: 23c000: 61 08 00 a8 stnp x1, x2, [x3]
// CHECK-NEXT: 23c004: 1f 20 03 d5 nop
// CHECK-FIX: 23c008: 2b 20 00 14 b 0x2440b4
// CHECK-PRINT: detected cortex-a53-843419 erratum sequence starting at 23DFFC in unpatched output.
// CHECK: <t4_ffc_st1>:
-// CHECK-NEXT: 23dffc: 18 01 00 f0 adrp x24, #143360
+// CHECK-NEXT: 23dffc: 18 01 00 f0 adrp x24, 0x260000
// CHECK-NEXT: 23e000: 20 80 00 4d st1 { v0.s }[2], [x1]
// CHECK-NEXT: 23e004: f6 06 40 f9 ldr x22, [x23, #8]
// CHECK-FIX: 23e008: 2d 18 00 14 b 0x2440bc
// CHECK-PRINT: detected cortex-a53-843419 erratum sequence starting at 23FFF8 in unpatched output.
// CHECK: <t3_ff8_ldr_once>:
-// CHECK-NEXT: 23fff8: 00 01 00 b0 adrp x0, #135168
+// CHECK-NEXT: 23fff8: 00 01 00 b0 adrp x0, 0x260000
// CHECK-NEXT: 23fffc: 20 70 82 4c st1 { v0.16b }, [x1], x2
// CHECK-FIX: 240000: 31 10 00 14 b 0x2440c4
// CHECK-NOFIX: 240000: 01 08 40 f9 ldr x1, [x0, #16]
// CHECK-PRINT: detected cortex-a53-843419 erratum sequence starting at 241FF8 in unpatched output.
// CHECK: <t3_ff8_ldxr>:
-// CHECK-NEXT: 241ff8: e0 00 00 f0 adrp x0, #126976
+// CHECK-NEXT: 241ff8: e0 00 00 f0 adrp x0, 0x260000
// CHECK-NEXT: 241ffc: 03 7c 5f c8 ldxr x3, [x0]
// CHECK-FIX: 242000: 33 08 00 14 b 0x2440cc
// CHECK-NOFIX: 242000: 01 08 40 f9 ldr x1, [x0, #16]
// CHECK-PRINT: detected cortex-a53-843419 erratum sequence starting at 243FF8 in unpatched output.
// CHECK: <t3_ff8_stxr>:
-// CHECK-NEXT: 243ff8: e0 00 00 b0 adrp x0, #118784
+// CHECK-NEXT: 243ff8: e0 00 00 b0 adrp x0, 0x260000
// CHECK-NEXT: 243ffc: 03 7c 04 c8 stxr w4, x3, [x0]
// CHECK-FIX: 244000: 35 00 00 14 b 0x2440d4
// CHECK-NOFIX: 244000: 01 08 40 f9 ldr x1, [x0, #16]
// CHECK-PRINT: detected cortex-a53-843419 erratum sequence starting at 10FF8 in unpatched output.
// CHECK: 0000000000010ff8 <t3_ff8_ldr>:
-// CHECK-NEXT: adrp x0, #134217728
+// CHECK-NEXT: adrp x0, 0x8010000
// CHECK-NEXT: ldr x1, [x1]
// CHECK-NEXT: b 0x11008
// CHECK-NEXT: ret
# NOBTI: Disassembly of section .plt:
# NOBTI: 00000000000102d0 <.plt>:
# NOBTI-NEXT: 102d0: stp x16, x30, [sp, #-16]!
-# NOBTI-NEXT: 102d4: adrp x16, #131072
+# NOBTI-NEXT: 102d4: adrp x16, 0x30000
# NOBTI-NEXT: 102d8: ldr x17, [x16, #960]
# NOBTI-NEXT: 102dc: add x16, x16, #960
# NOBTI-NEXT: 102e0: br x17
# NOBTI-NEXT: 102e8: nop
# NOBTI-NEXT: 102ec: nop
# NOBTI: 00000000000102f0 <func3@plt>:
-# NOBTI-NEXT: 102f0: adrp x16, #131072
+# NOBTI-NEXT: 102f0: adrp x16, 0x30000
# NOBTI-NEXT: 102f4: ldr x17, [x16, #968]
# NOBTI-NEXT: 102f8: add x16, x16, #968
# NOBTI-NEXT: 102fc: br x17
# BTISO: 0000000000010360 <.plt>:
# BTISO-NEXT: 10360: bti c
# BTISO-NEXT: stp x16, x30, [sp, #-16]!
-# BTISO-NEXT: adrp x16, #131072
+# BTISO-NEXT: adrp x16, 0x30000
# BTISO-NEXT: ldr x17, [x16, #1136]
# BTISO-NEXT: add x16, x16, #1136
# BTISO-NEXT: br x17
# BTISO-NEXT: nop
# BTISO-NEXT: nop
# BTISO: 0000000000010380 <func3@plt>:
-# BTISO-NEXT: 10380: adrp x16, #131072
+# BTISO-NEXT: 10380: adrp x16, 0x30000
# BTISO-NEXT: ldr x17, [x16, #1144]
# BTISO-NEXT: add x16, x16, #1144
# BTISO-NEXT: br x17
# EXECBTI: 0000000000210350 <.plt>:
# EXECBTI-NEXT: 210350: bti c
# EXECBTI-NEXT: stp x16, x30, [sp, #-16]!
-# EXECBTI-NEXT: adrp x16, #131072
+# EXECBTI-NEXT: adrp x16, 0x230000
# EXECBTI-NEXT: ldr x17, [x16, #1160]
# EXECBTI-NEXT: add x16, x16, #1160
# EXECBTI-NEXT: br x17
# EXECBTI-NEXT: nop
# EXECBTI: 0000000000210370 <func2@plt>:
# EXECBTI-NEXT: 210370: bti c
-# EXECBTI-NEXT: adrp x16, #131072
+# EXECBTI-NEXT: adrp x16, 0x230000
# EXECBTI-NEXT: ldr x17, [x16, #1168]
# EXECBTI-NEXT: add x16, x16, #1168
# EXECBTI-NEXT: br x17
# PIE: 0000000000010350 <.plt>:
# PIE-NEXT: 10350: bti c
# PIE-NEXT: stp x16, x30, [sp, #-16]!
-# PIE-NEXT: adrp x16, #131072
+# PIE-NEXT: adrp x16, 0x30000
# PIE-NEXT: ldr x17, [x16, #1176]
# PIE-NEXT: add x16, x16, #1176
# PIE-NEXT: br x17
# PIE-NEXT: nop
# PIE: 0000000000010370 <func2@plt>:
# PIE-NEXT: 10370: bti c
-# PIE-NEXT: adrp x16, #131072
+# PIE-NEXT: adrp x16, 0x30000
# PIE-NEXT: ldr x17, [x16, #1184]
# PIE-NEXT: add x16, x16, #1184
# PIE-NEXT: br x17
# NOEX: Disassembly of section .plt:
# NOEX: 00000000002102f0 <.plt>:
# NOEX-NEXT: 2102f0: stp x16, x30, [sp, #-16]!
-# NOEX-NEXT: adrp x16, #131072
+# NOEX-NEXT: adrp x16, 0x230000
# NOEX-NEXT: ldr x17, [x16, #1024]
# NOEX-NEXT: add x16, x16, #1024
# NOEX-NEXT: br x17
# NOEX-NEXT: nop
# NOEX-NEXT: nop
# NOEX: 0000000000210310 <func2@plt>:
-# NOEX-NEXT: 210310: adrp x16, #131072
+# NOEX-NEXT: 210310: adrp x16, 0x230000
# NOEX-NEXT: ldr x17, [x16, #1032]
# NOEX-NEXT: add x16, x16, #1032
# NOEX-NEXT: br x17
# FORCE: 0000000000210380 <.plt>:
# FORCE-NEXT: 210380: bti c
# FORCE-NEXT: stp x16, x30, [sp, #-16]!
-# FORCE-NEXT: adrp x16, #131072
+# FORCE-NEXT: adrp x16, 0x230000
# FORCE-NEXT: ldr x17, [x16, #1192]
# FORCE-NEXT: add x16, x16, #1192
# FORCE-NEXT: br x17
# FORCE-NEXT: nop
# FORCE: 00000000002103a0 <func2@plt>:
# FORCE-NEXT: 2103a0: bti c
-# FORCE-NEXT: adrp x16, #131072
+# FORCE-NEXT: adrp x16, 0x230000
# FORCE-NEXT: ldr x17, [x16, #1200]
# FORCE-NEXT: add x16, x16, #1200
# FORCE-NEXT: br x17
# BTIPACSO: 0000000000010360 <.plt>:
# BTIPACSO-NEXT: 10360: bti c
# BTIPACSO-NEXT: stp x16, x30, [sp, #-16]!
-# BTIPACSO-NEXT: adrp x16, #131072
+# BTIPACSO-NEXT: adrp x16, 0x30000
# BTIPACSO-NEXT: ldr x17, [x16, #1136]
# BTIPACSO-NEXT: add x16, x16, #1136
# BTIPACSO-NEXT: br x17
# BTIPACSO-NEXT: nop
# BTIPACSO-NEXT: nop
# BTIPACSO: 0000000000010380 <func3@plt>:
-# BTIPACSO-NEXT: 10380: adrp x16, #131072
+# BTIPACSO-NEXT: 10380: adrp x16, 0x30000
# BTIPACSO-NEXT: ldr x17, [x16, #1144]
# BTIPACSO-NEXT: add x16, x16, #1144
# BTIPACSO-NEXT: br x17
# BTIPACEX: 0000000000210380 <.plt>:
# BTIPACEX-NEXT: 210380: bti c
# BTIPACEX-NEXT: stp x16, x30, [sp, #-16]!
-# BTIPACEX-NEXT: adrp x16, #131072
+# BTIPACEX-NEXT: adrp x16, 0x230000
# BTIPACEX-NEXT: ldr x17, [x16, #1192]
# BTIPACEX-NEXT: add x16, x16, #1192
# BTIPACEX-NEXT: br x17
# BTIPACEX-NEXT: nop
# BTIPACEX: 00000000002103a0 <func2@plt>:
# BTIPACEX-NEXT: 2103a0: bti c
-# BTIPACEX-NEXT: adrp x16, #131072
+# BTIPACEX-NEXT: adrp x16, 0x230000
# BTIPACEX-NEXT: ldr x17, [x16, #1200]
# BTIPACEX-NEXT: add x16, x16, #1200
# BTIPACEX-NEXT: br x17
# EX: Disassembly of section .plt:
# EX: 00000000002102f0 <.plt>:
# EX-NEXT: 2102f0: stp x16, x30, [sp, #-16]!
-# EX-NEXT: adrp x16, #131072
+# EX-NEXT: adrp x16, 0x230000
# EX-NEXT: ldr x17, [x16, #1024]
# EX-NEXT: add x16, x16, #1024
# EX-NEXT: br x17
# EX-NEXT: nop
# EX-NEXT: nop
# EX: 0000000000210310 <func2@plt>:
-# EX: 210310: adrp x16, #131072
+# EX: 210310: adrp x16, 0x230000
# EX-NEXT: ldr x17, [x16, #1032]
# EX-NEXT: add x16, x16, #1032
# EX-NEXT: br x17
# BTIPACEX2: 0000000000210380 <.plt>:
# BTIPACEX2-NEXT: 210380: bti c
# BTIPACEX2-NEXT: stp x16, x30, [sp, #-16]!
-# BTIPACEX2-NEXT: adrp x16, #131072
+# BTIPACEX2-NEXT: adrp x16, 0x230000
# BTIPACEX2-NEXT: ldr x17, [x16, #1208]
# BTIPACEX2-NEXT: add x16, x16, #1208
# BTIPACEX2-NEXT: br x17
# BTIPACEX2-NEXT: nop
# BTIPACEX2: 00000000002103a0 <func2@plt>:
# BTIPACEX2-NEXT: 2103a0: bti c
-# BTIPACEX2-NEXT: adrp x16, #131072
+# BTIPACEX2-NEXT: adrp x16, 0x230000
# BTIPACEX2-NEXT: ldr x17, [x16, #1216]
# BTIPACEX2-NEXT: add x16, x16, #1216
# BTIPACEX2-NEXT: autia1716
# BTIPACEX2-NEXT: br x17
# BTIPACDYN2: 0x0000000070000001 (AARCH64_BTI_PLT)
-# BTIPACDYN2-NEXT: 0x0000000070000003 (AARCH64_PAC_PLT)
\ No newline at end of file
+# BTIPACDYN2-NEXT: 0x0000000070000003 (AARCH64_PAC_PLT)
# NOPAC: Disassembly of section .plt:
# NOPAC: 00000000000102d0 <.plt>:
# NOPAC-NEXT: 102d0: stp x16, x30, [sp, #-16]!
-# NOPAC-NEXT: adrp x16, #131072
+# NOPAC-NEXT: adrp x16, 0x30000
# NOPAC-NEXT: ldr x17, [x16, #960]
# NOPAC-NEXT: add x16, x16, #960
# NOPAC-NEXT: br x17
# NOPAC-NEXT: nop
# NOPAC-NEXT: nop
# NOPAC: 00000000000102f0 <func3@plt>:
-# NOPAC-NEXT: 102f0: adrp x16, #131072
+# NOPAC-NEXT: 102f0: adrp x16, 0x30000
# NOPAC-NEXT: ldr x17, [x16, #968]
# NOPAC-NEXT: add x16, x16, #968
# NOPAC-NEXT: br x17
# PACSO: Disassembly of section .plt:
# PACSO: 0000000000010360 <.plt>:
# PACSO-NEXT: 10360: stp x16, x30, [sp, #-16]!
-# PACSO-NEXT: adrp x16, #131072
+# PACSO-NEXT: adrp x16, 0x30000
# PACSO-NEXT: ldr x17, [x16, #1120]
# PACSO-NEXT: add x16, x16, #1120
# PACSO-NEXT: br x17
# PACSO-NEXT: nop
# PACSO-NEXT: nop
# PACSO: 0000000000010380 <func3@plt>:
-# PACSO-NEXT: 10380: adrp x16, #131072
+# PACSO-NEXT: 10380: adrp x16, 0x30000
# PACSO-NEXT: ldr x17, [x16, #1128]
# PACSO-NEXT: add x16, x16, #1128
# PACSO-NEXT: br x17
# PACPLT: Disassembly of section .plt:
# PACPLT: 0000000000210380 <.plt>:
# PACPLT-NEXT: 210380: stp x16, x30, [sp, #-16]!
-# PACPLT-NEXT: adrp x16, #131072
+# PACPLT-NEXT: adrp x16, 0x230000
# PACPLT-NEXT: ldr x17, [x16, #1192]
# PACPLT-NEXT: add x16, x16, #1192
# PACPLT-NEXT: br x17
# PACPLT-NEXT: nop
# PACPLT-NEXT: nop
# PACPLT: 00000000002103a0 <func2@plt>:
-# PACPLT-NEXT: 2103a0: adrp x16, #131072
+# PACPLT-NEXT: 2103a0: adrp x16, 0x230000
# PACPLT-NEXT: ldr x17, [x16, #1200]
# PACPLT-NEXT: add x16, x16, #1200
# PACPLT-NEXT: autia1716
## page(0x220320) - page(0x210000) = 65536
## page(0x220320) & 0xff8 = 800
# DIS: <_start>:
-# DIS-NEXT: 210258: adrp x0, #65536
+# DIS-NEXT: 210258: adrp x0, 0x220000
# DIS-NEXT: 21025c: ldr x0, [x0, #800]
.globl _start
ret
# CHECK: 0000000000010284 <main>:
## myfunc's got entry = page(0x20330)-page(0x10284) + 0x330 = 65536 + 816
-# CHECK-NEXT: 10284: adrp x8, #65536
+# CHECK-NEXT: 10284: adrp x8, 0x20000
# CHECK-NEXT: 10288: ldr x8, [x8, #816]
# CHECK-NEXT: 1028c: ret
# PDE: <myfunc_resolver>:
# PDE-NEXT: 210170: ret
# PDE: <main>:
-# PDE-NEXT: 210174: adrp x8, #0
+# PDE-NEXT: 210174: adrp x8, 0x210000
# PDE-NEXT: 210178: add x8, x8, #384
# PDE-NEXT: 21017c: ret
# PDE-EMPTY:
# PDE-EMPTY:
# PDE-NEXT: <myfunc>:
## page(.got.plt) - page(0x210010) = 65536
-# PDE-NEXT: 210180: adrp x16, #65536
+# PDE-NEXT: 210180: adrp x16, 0x220000
# PDE-NEXT: 210184: ldr x17, [x16, #400]
# PDE-NEXT: 210188: add x16, x16, #400
# PDE-NEXT: 21018c: br x17
# PIE: <myfunc_resolver>:
# PIE-NEXT: 10260: ret
# PIE: <main>:
-# PIE-NEXT: 10264: adrp x8, #0
+# PIE-NEXT: 10264: adrp x8, 0x10000
# PIE-NEXT: 10268: add x8, x8, #624
# PIE-NEXT: 1026c: ret
# PIE-EMPTY:
# PIE-NEXT: Disassembly of section .iplt:
# PIE-EMPTY:
# PIE-NEXT: <myfunc>:
-# PIE-NEXT: 10270: adrp x16, #131072
+# PIE-NEXT: 10270: adrp x16, 0x30000
# PIE-NEXT: 10274: ldr x17, [x16, #896]
# PIE-NEXT: 10278: add x16, x16, #896
# PIE-NEXT: 1027c: br x17
// DISASM-EMPTY:
// DISASM-NEXT: <.plt>:
// DISASM-NEXT: 2102f0: stp x16, x30, [sp, #-16]!
-// DISASM-NEXT: 2102f4: adrp x16, #131072
+// DISASM-NEXT: 2102f4: adrp x16, 0x230000
// DISASM-NEXT: 2102f8: ldr x17, [x16, #1104]
// DISASM-NEXT: 2102fc: add x16, x16, #1104
// DISASM-NEXT: 210300: br x17
// DISASM-NEXT: 21030c: nop
// DISASM-EMPTY:
// DISASM-NEXT: <bar2@plt>:
-// DISASM-NEXT: 210310: adrp x16, #131072
+// DISASM-NEXT: 210310: adrp x16, 0x230000
// DISASM-NEXT: 210314: ldr x17, [x16, #1112]
// DISASM-NEXT: 210318: add x16, x16, #1112
// DISASM-NEXT: 21031c: br x17
// DISASM-EMPTY:
// DISASM-NEXT: <zed2@plt>:
-// DISASM-NEXT: 210320: adrp x16, #131072
+// DISASM-NEXT: 210320: adrp x16, 0x230000
// DISASM-NEXT: 210324: ldr x17, [x16, #1120]
// DISASM-NEXT: 210328: add x16, x16, #1120
// DISASM-NEXT: 21032c: br x17
// DISASM-NEXT: Disassembly of section .iplt:
// DISASM-EMPTY:
// DISASM-NEXT: <.iplt>:
-// DISASM-NEXT: 210330: adrp x16, #131072
+// DISASM-NEXT: 210330: adrp x16, 0x230000
// DISASM-NEXT: 210334: ldr x17, [x16, #1128]
// DISASM-NEXT: 210338: add x16, x16, #1128
// DISASM-NEXT: 21033c: br x17
-// DISASM-NEXT: 210340: adrp x16, #131072
+// DISASM-NEXT: 210340: adrp x16, 0x230000
// DISASM-NEXT: 210344: ldr x17, [x16, #1136]
// DISASM-NEXT: 210348: add x16, x16, #1136
// DISASM-NEXT: 21034c: br x17
// DISASM-NEXT: Disassembly of section .iplt:
// DISASM-EMPTY:
// DISASM-NEXT: <.iplt>:
-// DISASM-NEXT: 2101a0: adrp x16, #65536
+// DISASM-NEXT: 2101a0: adrp x16, 0x220000
// DISASM-NEXT: 2101a4: ldr x17, [x16, #448]
// DISASM-NEXT: 2101a8: add x16, x16, #448
// DISASM-NEXT: 2101ac: br x17
-// DISASM-NEXT: 2101b0: adrp x16, #65536
+// DISASM-NEXT: 2101b0: adrp x16, 0x220000
// DISASM-NEXT: 2101b4: ldr x17, [x16, #456]
// DISASM-NEXT: 2101b8: add x16, x16, #456
// DISASM-NEXT: 2101bc: br x17
# CHECK: <main>:
# .got.plt - page(0x210174) = 0x220190 - 0x210000 = 0x10190
-# CHECK-NEXT: 210174: adrp x8, #0x10000
+# CHECK-NEXT: 210174: adrp x8, 0x220000
# CHECK-NEXT: 210178: ldr x8, [x8, #0x190]
# CHECK-NEXT: 21017c: ret
# CHECK-EMPTY:
# CHECK-NEXT: <.iplt>:
# .got.plt - page(0x210180) = 0x220190 - 0x210000 = 0x10190
-# CHECK-NEXT: 210180: adrp x16, #0x10000
+# CHECK-NEXT: 210180: adrp x16, 0x220000
# CHECK-NEXT: 210184: ldr x17, [x16, #0x190]
# CHECK-NEXT: 210188: add x16, x16, #0x190
# CHECK-NEXT: 21018c: br x17
// RUN: llvm-objdump -d %t | FileCheck %s
foo = . + 0x1100000000000000
-// CHECK: adrp x0, #0
+// CHECK: adrp x0, 0x210000
adrp x0, :pg_hi21_nc:foo
# CHECK: 0000000000010380 <.plt>:
# CHECK-NEXT: 10380: bti c
# CHECK-NEXT: stp x16, x30, [sp, #-16]!
-# CHECK-NEXT: adrp x16, #131072
+# CHECK-NEXT: adrp x16, 0x30000
# CHECK-NEXT: ldr x17, [x16, #1288]
# CHECK-NEXT: add x16, x16, #1288
# CHECK-NEXT: br x17
# CHECK-NEXT: nop
# CHECK: 00000000000103a0 <func1@plt>:
# CHECK-NEXT: 103a0: bti c
-# CHECK-NEXT: adrp x16, #131072
+# CHECK-NEXT: adrp x16, 0x30000
# CHECK-NEXT: ldr x17, [x16, #1296]
# CHECK-NEXT: add x16, x16, #1296
# CHECK-NEXT: br x17
# CHECK-EMPTY:
# CHECK-NEXT: 00000000000103c0 <myfunc>:
# CHECK-NEXT: 103c0: bti c
-# CHECK-NEXT: adrp x16, #131072
+# CHECK-NEXT: adrp x16, 0x30000
# CHECK-NEXT: ldr x17, [x16, #1304]
# CHECK-NEXT: add x16, x16, #1304
# CHECK-NEXT: br x17
// DISASMDSO-NEXT: <.plt>:
// DISASMDSO-NEXT: 10340: stp x16, x30, [sp, #-0x10]!
// &(.got.plt[2]) = 0x30450 + 2 * 8 = 0x30460
-// DISASMDSO-NEXT: 10344: adrp x16, #0x20000
+// DISASMDSO-NEXT: 10344: adrp x16, 0x30000
// DISASMDSO-NEXT: 10348: ldr x17, [x16, #0x460]
// DISASMDSO-NEXT: 1034c: add x16, x16, #0x460
// DISASMDSO-NEXT: 10350: br x17
// &.got.plt[foo] = 0x30468
// DISASMDSO-EMPTY:
// DISASMDSO-NEXT: <foo@plt>:
-// DISASMDSO-NEXT: 10360: adrp x16, #0x20000
+// DISASMDSO-NEXT: 10360: adrp x16, 0x30000
// DISASMDSO-NEXT: 10364: ldr x17, [x16, #0x468]
// DISASMDSO-NEXT: 10368: add x16, x16, #0x468
// DISASMDSO-NEXT: 1036c: br x17
// &.got.plt[foo] = 0x30470
// DISASMDSO-EMPTY:
// DISASMDSO-NEXT: <bar@plt>:
-// DISASMDSO-NEXT: 10370: adrp x16, #0x20000
+// DISASMDSO-NEXT: 10370: adrp x16, 0x30000
// DISASMDSO-NEXT: 10374: ldr x17, [x16, #0x470]
// DISASMDSO-NEXT: 10378: add x16, x16, #0x470
// DISASMDSO-NEXT: 1037c: br x17
// 0x30468 = 0x10000 + 131072 + 1128
// DISASMDSO-EMPTY:
// DISASMDSO-NEXT: <weak@plt>:
-// DISASMDSO-NEXT: 10380: adrp x16, #0x20000
+// DISASMDSO-NEXT: 10380: adrp x16, 0x30000
// DISASMDSO-NEXT: 10384: ldr x17, [x16, #0x478]
// DISASMDSO-NEXT: 10388: add x16, x16, #0x478
// DISASMDSO-NEXT: 1038c: br x17
// DISASMEXE-NEXT: <.plt>:
// DISASMEXE-NEXT: 2102e0: stp x16, x30, [sp, #-0x10]!
// &(.got.plt[2]) = 0x2303f0 + 2 * 8 = 0x230400
-// DISASMEXE-NEXT: 2102e4: adrp x16, #0x20000
+// DISASMEXE-NEXT: 2102e4: adrp x16, 0x230000
// DISASMEXE-NEXT: 2102e8: ldr x17, [x16, #0x400]
// DISASMEXE-NEXT: 2102ec: add x16, x16, #0x400
// DISASMEXE-NEXT: 2102f0: br x17
// bar@plt
// DISASMEXE-EMPTY:
// DISASMEXE-NEXT: <bar@plt>:
-// DISASMEXE-NEXT: 210300: adrp x16, #0x20000
+// DISASMEXE-NEXT: 210300: adrp x16, 0x230000
// DISASMEXE-NEXT: 210304: ldr x17, [x16, #0x408]
// DISASMEXE-NEXT: 210308: add x16, x16, #0x408
// DISASMEXE-NEXT: 21030c: br x17
// weak@plt
// DISASMEXE-EMPTY:
// DISASMEXE-NEXT: <weak@plt>:
-// DISASMEXE-NEXT: 210310: adrp x16, #0x20000
+// DISASMEXE-NEXT: 210310: adrp x16, 0x230000
// DISASMEXE-NEXT: 210314: ldr x17, [x16, #0x410]
// DISASMEXE-NEXT: 210318: add x16, x16, #0x410
// DISASMEXE-NEXT: 21031c: br x17
# CHECK: Disassembly of section .R_AARCH64_ADR_PREL_PG_H121:
# CHECK-EMPTY:
# CHECK-NEXT: <$x.2>:
-# CHECK-NEXT: 210132: 01 00 00 90 adrp x1, #0
+# CHECK-NEXT: 210132: 01 00 00 90 adrp x1, 0x210000
.section .R_AARCH64_ADD_ABS_LO12_NC,"ax",@progbits
add x0, x0, :lo12:.L.str
// Expect range extension thunks for .text_low
// adrp calculation is (PC + signed immediate) & (!0xfff)
// CHECK: <__AArch64ADRPThunk_high_target>:
-// CHECK-NEXT: ec: adrp x16, #0x10000000
+// CHECK-NEXT: ec: adrp x16, 0x10000000
// CHECK-NEXT: add x16, x16, #0x40
// CHECK-NEXT: br x16
// CHECK: <__AArch64ADRPThunk_high_target2>:
-// CHECK-NEXT: f8: adrp x16, #0x10000000
+// CHECK-NEXT: f8: adrp x16, 0x10000000
// CHECK-NEXT: add x16, x16, #0x8
// CHECK-NEXT: br x16
/// Identical to the previous one, but for the target .text_high+8.
// CHECK: <__AArch64ADRPThunk_>:
-// CHECK-NEXT: 104: adrp x16, #0x10000000
+// CHECK-NEXT: 104: adrp x16, 0x10000000
// CHECK-NEXT: add x16, x16, #0x8
// CHECK-NEXT: br x16
// Expect Thunk for .text.high
// CHECK: <__AArch64ADRPThunk_low_target2>:
-// CHECK-NEXT: 10000010: adrp x16, #-0x10000000
+// CHECK-NEXT: 10000010: adrp x16, 0x0
// CHECK-NEXT: add x16, x16, #0xe0
// CHECK-NEXT: br x16
// CHECK-EMPTY:
// CHECK-NEXT: <.plt>:
// CHECK-NEXT: 10000020: stp x16, x30, [sp, #-0x10]!
-// CHECK-NEXT: adrp x16, #0
+// CHECK-NEXT: adrp x16, 0x10000000
// CHECK-NEXT: ldr x17, [x16, #0x120]
// CHECK-NEXT: add x16, x16, #0x120
// CHECK-NEXT: br x17
// CHECK-NEXT: nop
// CHECK-EMPTY:
// CHECK-NEXT: <high_target@plt>:
-// CHECK-NEXT: 10000040: adrp x16, #0x0
+// CHECK-NEXT: 10000040: adrp x16, 0x10000000
// CHECK-NEXT: ldr x17, [x16, #0x128]
// CHECK-NEXT: add x16, x16, #0x128
// CHECK-NEXT: br x17
// CHECK-EMPTY:
// CHECK-NEXT: <low_target@plt>:
-// CHECK-NEXT: 10000050: adrp x16, #0x0
+// CHECK-NEXT: 10000050: adrp x16, 0x10000000
// CHECK-NEXT: ldr x17, [x16, #0x130]
// CHECK-NEXT: add x16, x16, #0x130
// CHECK-NEXT: br x17
// CHECK: <_start>:
// CHECK-NEXT: 210238: nop
-// CHECK-NEXT: 21023c: adrp x0, #65536
+// CHECK-NEXT: 21023c: adrp x0, 0x220000
// CHECK-NEXT: 210240: ldr x0, [x0, #768]
// CHECK-NEXT: 210244: nop
// CHECK-NEXT: 210248: nop
## Page(0x2200B8) - Page(0x210000) = 0x10000 = 65536
## 0x2200B8 & 0xff8 = 0xB8 = 184
# CHECK: <_start>:
-# CHECK-NEXT: 210278: adrp x0, #65536
+# CHECK-NEXT: 210278: adrp x0, 0x220000
# CHECK-NEXT: 21027c: ldr x0, [x0, #824]
-# CHECK-NEXT: 210280: adrp x0, #65536
+# CHECK-NEXT: 210280: adrp x0, 0x220000
# CHECK-NEXT: 210284: ldr x0, [x0, #832]
.globl _start
// create target specific dynamic TLSDESC relocation where addend is
// the symbol VMA in tls block.
-// CHECK: 10298: adrp x0, #65536
+// CHECK: 10298: adrp x0, 0x20000
// CHECK-NEXT: 1029c: ldr x1, [x0, #856]
// CHECK-NEXT: 102a0: add x0, x0, #856
// CHECK-NEXT: 102a4: blr x1
.tlsdesccall a
blr x1
-// CHECK: 102a8: adrp x0, #65536
+// CHECK: 102a8: adrp x0, 0x20000
// CHECK-NEXT: 102ac: ldr x1, [x0, #872]
// CHECK-NEXT: 102b0: add x0, x0, #872
// CHECK-NEXT: 102b4: blr x1
.tlsdesccall a
blr x1
-// CHECK: 102b8: adrp x0, #65536
+// CHECK: 102b8: adrp x0, 0x20000
// CHECK-NEXT: 102bc: ldr x1, [x0, #888]
// CHECK-NEXT: 102c0: add x0, x0, #888
// CHECK-NEXT: 102c4: blr x1
#DSO-EMPTY:
#DSO-NEXT: <.plt>:
#DSO-NEXT: 10330: stp x16, x30, [sp, #-16]!
-#DSO-NEXT: 10334: adrp x16, #131072
+#DSO-NEXT: 10334: adrp x16, 0x30000
#DSO-NEXT: 10338: ldr x17, [x16, #1072]
#DSO-NEXT: 1033c: add x16, x16, #1072
#DSO-NEXT: 10340: br x17
#DSO-NEXT: 1034c: nop
#DSO-EMPTY:
#DSO-NEXT: <_foo@plt>:
-#DSO-NEXT: 10350: adrp x16, #131072
+#DSO-NEXT: 10350: adrp x16, 0x30000
#DSO-NEXT: 10354: ldr x17, [x16, #1080]
#DSO-NEXT: 10358: add x16, x16, #1080
#DSO-NEXT: 1035c: br x17
#DSO-EMPTY:
#DSO-NEXT: <_bar@plt>:
-#DSO-NEXT: 10360: adrp x16, #131072
+#DSO-NEXT: 10360: adrp x16, 0x30000
#DSO-NEXT: 10364: ldr x17, [x16, #1088]
#DSO-NEXT: 10368: add x16, x16, #1088
#DSO-NEXT: 1036c: br x17
// CHECK-NEXT: 10010128: b.eq 0x1001012c
// CHECK-NEXT: 1001012c: cbz x1, 0x10010130
// CHECK-NEXT: 10010130: adr x0, #0
-// CHECK-NEXT: 10010134: adrp x0, #0
+// CHECK-NEXT: 10010134: adrp x0, 0x10010000
// CHECK-NEXT: 10010138: ldr x8, 0x10010138
// CHECK: 1001013c: 00 00 00 00 .word 0x00000000
// CHECK-NEXT: 10010140: 00 00 00 00 .word 0x00000000
let EncoderMethod = "getAdrLabelOpValue";
let PrintMethod = "printAdrpLabel";
let ParserMatchClass = AdrpOperand;
+ let OperandType = "OPERAND_PCREL";
}
def AdrOperand : AsmOperandClass {
}
}
-void AArch64InstPrinter::printAdrpLabel(const MCInst *MI, unsigned OpNum,
+void AArch64InstPrinter::printAdrpLabel(const MCInst *MI, uint64_t Address,
+ unsigned OpNum,
const MCSubtargetInfo &STI,
raw_ostream &O) {
const MCOperand &Op = MI->getOperand(OpNum);
// If the label has already been resolved to an immediate offset (say, when
// we're running the disassembler), just print the immediate.
if (Op.isImm()) {
- O << "#" << formatImm(Op.getImm() * (1 << 12));
+ const int64_t Offset = Op.getImm() << 12;
+ if (PrintBranchImmAsAddress)
+ O << formatHex((Address & -4096) + Offset);
+ else
+ O << "#" << Offset;
return;
}
void printVectorIndex(const MCInst *MI, unsigned OpNum,
const MCSubtargetInfo &STI, raw_ostream &O);
- void printAdrpLabel(const MCInst *MI, unsigned OpNum,
+ void printAdrpLabel(const MCInst *MI, uint64_t Address, unsigned OpNum,
const MCSubtargetInfo &STI, raw_ostream &O);
void printBarrierOption(const MCInst *MI, unsigned OpNum,
const MCSubtargetInfo &STI, raw_ostream &O);
adr x5, (0xffffffff000f1000 - 0xffffffff00000000 + Symbol)
adr x6, Symbol + (0xffffffff000f1000 - 0xffffffff00000000)
-// CHECK-NEXT: adrp x0, #0
+// CHECK-NEXT: adrp x0, 0x0
// CHECK-NEXT: R_AARCH64_ADR_PREL_PG_HI21 Symbol
-// CHECK-NEXT: adrp x2, #0
+// CHECK-NEXT: adrp x2, 0x0
// CHECK-NEXT: R_AARCH64_ADR_PREL_PG_HI21 Symbol
-// CHECK-NEXT: adrp x3, #0
+// CHECK-NEXT: adrp x3, 0x0
// CHECK-NEXT: R_AARCH64_ADR_PREL_PG_HI21 Symbol+0xf1000
-// CHECK-NEXT: adrp x4, #0
+// CHECK-NEXT: adrp x4, 0x0
// CHECK-NEXT: R_AARCH64_ADR_PREL_PG_HI21 Symbol+0xf1000
-// CHECK-NEXT: adrp x5, #0
+// CHECK-NEXT: adrp x5, 0x0
// CHECK-NEXT: R_AARCH64_ADR_PREL_PG_HI21 Symbol+0xf1000
adrp x0, Symbol
; CHECK: }
; CHECK: ]
-; DISASM: 30: 20 1a 09 b0 adrp x0, #305418240
+; DISASM: 30: 20 1a 09 b0 adrp x0, 0x12345000
; DISASM: 34: 00 14 0d 91 add x0, x0, #837
; DISASM: 38: 00 14 4d 39 ldrb w0, [x0, #837]
; DISASM: 3c: 00 a4 41 f9 ldr x0, [x0, #840]
# CHECK: 10: 0a 00 .short 0x000a
# CHECK: Disassembly of section .myothersection:
# CHECK: <$x.2>:
-# CHECK: 0: 01 00 00 90 adrp x1, #0
+# CHECK: 0: 01 00 00 90 adrp x1, 0x0
# CHECK: <mystr>:
# CHECK: 4: 62 6c 61 68 .word
# CHECK: 8: 00 .byte 0x01
--- /dev/null
+# RUN: yaml2obj %s -o %t
+# RUN: llvm-objdump %t -d --no-show-raw-insn --no-leading-addr | FileCheck %s
+
+# CHECK-LABEL: <_start>:
+# CHECK-NEXT: adrp x2, 0x220000 <_start+0x80>
+
+--- !ELF
+FileHeader:
+ Class: ELFCLASS64
+ Data: ELFDATA2LSB
+ Type: ET_EXEC
+ Machine: EM_AARCH64
+Sections:
+ - Name: .text
+ Type: SHT_PROGBITS
+ Address: 0x200100
+ Flags: [SHF_ALLOC, SHF_EXECINSTR]
+ Content: '02010090'
+ - Name: .data
+ Type: SHT_PROGBITS
+ Flags: [SHF_ALLOC, SHF_WRITE]
+ Address: 0x220000
+Symbols:
+ - Name: _start
+ Section: .text
+ Value: 0x200100