Index: lld/trunk/ELF/Writer.cpp =================================================================== --- lld/trunk/ELF/Writer.cpp +++ lld/trunk/ELF/Writer.cpp @@ -2219,7 +2219,8 @@ // and non-executable segments. // // TODO Enable this technique on all targets. - bool enable = config->emachine == EM_PPC64; + bool enable = + config->emachine == EM_AARCH64 || config->emachine == EM_PPC64; if (!enable || (config->zSeparateCode && prev && (prev->p_flags & PF_X) != (p->p_flags & PF_X))) Index: lld/trunk/test/ELF/aarch64-abs16.s =================================================================== --- lld/trunk/test/ELF/aarch64-abs16.s +++ lld/trunk/test/ELF/aarch64-abs16.s @@ -14,11 +14,11 @@ // RUN: llvm-objdump -s -section=.data %t2 | FileCheck %s // CHECK: Contents of section .data: -// 210000: S = 0x100, A = 0xfeff +// 220158: S = 0x100, A = 0xfeff // S + A = 0xffff -// 210002: S = 0x100, A = -0x8100 +// 22015c: S = 0x100, A = -0x8100 // S + A = 0x8000 -// CHECK-NEXT: 210000 ffff0080 +// CHECK-NEXT: 220158 ffff0080 // RUN: not ld.lld %t.o %t255.o -o /dev/null 2>&1 | FileCheck %s --check-prefix=OVERFLOW1 // OVERFLOW1: relocation R_AARCH64_ABS16 out of range: -32769 is not in [-32768, 65535] Index: lld/trunk/test/ELF/aarch64-abs32.s =================================================================== --- lld/trunk/test/ELF/aarch64-abs32.s +++ lld/trunk/test/ELF/aarch64-abs32.s @@ -14,11 +14,11 @@ // RUN: llvm-objdump -s -section=.data %t2 | FileCheck %s // CHECK: Contents of section .data: -// 210000: S = 0x100, A = 0xfffffeff +// 220158: S = 0x100, A = 0xfffffeff // S + A = 0xffffffff -// 210004: S = 0x100, A = -0x80000100 +// 22015c: S = 0x100, A = -0x80000100 // S + A = 0x80000000 -// CHECK-NEXT: 210000 ffffffff 00000080 +// CHECK-NEXT: 220158 ffffffff 00000080 // RUN: not ld.lld %t.o %t255.o -o /dev/null 2>&1 | FileCheck %s --check-prefix=OVERFLOW1 // OVERFLOW1: relocation R_AARCH64_ABS32 out of range: -2147483649 is not in [-2147483648, 4294967295] Index: lld/trunk/test/ELF/aarch64-call26-thunk.s =================================================================== --- lld/trunk/test/ELF/aarch64-call26-thunk.s +++ lld/trunk/test/ELF/aarch64-call26-thunk.s @@ -12,11 +12,11 @@ // CHECK: Disassembly of section .text: // CHECK-EMPTY: // CHECK-NEXT: _start: -// CHECK-NEXT: 210000: 02 00 00 94 bl #8 +// CHECK-NEXT: 210120: 02 00 00 94 bl #8 // CHECK: __AArch64AbsLongThunk_big: -// CHECK-NEXT: 210008: 50 00 00 58 ldr x16, #8 -// CHECK-NEXT: 21000c: 00 02 1f d6 br x16 +// CHECK-NEXT: 210128: 50 00 00 58 ldr x16, #8 +// CHECK-NEXT: 21012c: 00 02 1f d6 br x16 // CHECK: $d: -// CHECK-NEXT: 210010: 00 00 00 00 .word 0x00000000 -// CHECK-NEXT: 210014: 10 00 00 00 .word 0x00000010 +// CHECK-NEXT: 210130: 00 00 00 00 .word 0x00000000 +// CHECK-NEXT: 210134: 10 00 00 00 .word 0x00000010 Index: lld/trunk/test/ELF/aarch64-condb-reloc.s =================================================================== --- lld/trunk/test/ELF/aarch64-condb-reloc.s +++ lld/trunk/test/ELF/aarch64-condb-reloc.s @@ -13,21 +13,21 @@ # CHECK: Disassembly of section .text: # CHECK-EMPTY: # CHECK-NEXT: _foo: -# CHECK-NEXT: 210000: nop -# CHECK-NEXT: 210004: nop -# CHECK-NEXT: 210008: nop -# CHECK-NEXT: 21000c: nop +# CHECK-NEXT: 210120: nop +# CHECK-NEXT: 210124: nop +# CHECK-NEXT: 210128: nop +# CHECK-NEXT: 21012c: nop # CHECK: _bar: -# CHECK-NEXT: 210010: nop -# CHECK-NEXT: 210014: nop -# CHECK-NEXT: 210018: nop +# CHECK-NEXT: 210130: nop +# CHECK-NEXT: 210134: nop +# CHECK-NEXT: 210138: nop # CHECK: _dah: -# CHECK-NEXT: 21001c: nop -# CHECK-NEXT: 210020: nop +# CHECK-NEXT: 21013c: nop +# CHECK-NEXT: 210140: nop # CHECK: _start: -# CHECK-NEXT: 210024: b.eq #-36 <_foo> -# CHECK-NEXT: 210028: b.eq #-24 <_bar> -# CHECK-NEXT: 21002c: b.eq #-16 <_dah> +# CHECK-NEXT: 210144: b.eq #-36 <_foo> +# CHECK-NEXT: 210148: b.eq #-24 <_bar> +# CHECK-NEXT: 21014c: b.eq #-16 <_dah> #DSOREL: Section { #DSOREL: Index: @@ -37,8 +37,8 @@ #DSOREL-NEXT: SHF_ALLOC #DSOREL-NEXT: SHF_WRITE #DSOREL-NEXT: ] -#DSOREL-NEXT: Address: 0x30000 -#DSOREL-NEXT: Offset: 0x30000 +#DSOREL-NEXT: Address: 0x30470 +#DSOREL-NEXT: Offset: 0x470 #DSOREL-NEXT: Size: 48 #DSOREL-NEXT: Link: 0 #DSOREL-NEXT: Info: 0 @@ -47,60 +47,60 @@ #DSOREL-NEXT: } #DSOREL: Relocations [ #DSOREL-NEXT: Section ({{.*}}) .rela.plt { -#DSOREL-NEXT: 0x30018 R_AARCH64_JUMP_SLOT _foo -#DSOREL-NEXT: 0x30020 R_AARCH64_JUMP_SLOT _bar -#DSOREL-NEXT: 0x30028 R_AARCH64_JUMP_SLOT _dah +#DSOREL-NEXT: 0x30488 R_AARCH64_JUMP_SLOT _foo +#DSOREL-NEXT: 0x30490 R_AARCH64_JUMP_SLOT _bar +#DSOREL-NEXT: 0x30498 R_AARCH64_JUMP_SLOT _dah #DSOREL-NEXT: } #DSOREL-NEXT:] #DSO: Disassembly of section .text: #DSO-EMPTY: #DSO-NEXT: _foo: -#DSO-NEXT: 10000: nop -#DSO-NEXT: 10004: nop -#DSO-NEXT: 10008: nop -#DSO-NEXT: 1000c: nop +#DSO-NEXT: 10338: nop +#DSO-NEXT: 1033c: nop +#DSO-NEXT: 10340: nop +#DSO-NEXT: 10344: nop #DSO: _bar: -#DSO-NEXT: 10010: nop -#DSO-NEXT: 10014: nop -#DSO-NEXT: 10018: nop +#DSO-NEXT: 10348: nop +#DSO-NEXT: 1034c: nop +#DSO-NEXT: 10350: nop #DSO: _dah: -#DSO-NEXT: 1001c: nop -#DSO-NEXT: 10020: nop +#DSO-NEXT: 10354: nop +#DSO-NEXT: 10358: nop #DSO: _start: -#DSO-NEXT: 10024: b.eq #44 <_foo@plt> -#DSO-NEXT: 10028: b.eq #56 <_bar@plt> -#DSO-NEXT: 1002c: b.eq #68 <_dah@plt> +#DSO-NEXT: 1035c: b.eq #52 <_foo@plt> +#DSO-NEXT: 10360: b.eq #64 <_bar@plt> +#DSO-NEXT: 10364: b.eq #76 <_dah@plt> #DSO-EMPTY: #DSO-NEXT: Disassembly of section .plt: #DSO-EMPTY: #DSO-NEXT: .plt: -#DSO-NEXT: 10030: stp x16, x30, [sp, #-16]! -#DSO-NEXT: 10034: adrp x16, #131072 -#DSO-NEXT: 10038: ldr x17, [x16, #16] -#DSO-NEXT: 1003c: add x16, x16, #16 -#DSO-NEXT: 10040: br x17 -#DSO-NEXT: 10044: nop -#DSO-NEXT: 10048: nop -#DSO-NEXT: 1004c: nop +#DSO-NEXT: 10370: stp x16, x30, [sp, #-16]! +#DSO-NEXT: 10374: adrp x16, #131072 +#DSO-NEXT: 10378: ldr x17, [x16, #1152] +#DSO-NEXT: 1037c: add x16, x16, #1152 +#DSO-NEXT: 10380: br x17 +#DSO-NEXT: 10384: nop +#DSO-NEXT: 10388: nop +#DSO-NEXT: 1038c: nop #DSO-EMPTY: #DSO-NEXT: _foo@plt: -#DSO-NEXT: 10050: adrp x16, #131072 -#DSO-NEXT: 10054: ldr x17, [x16, #24] -#DSO-NEXT: 10058: add x16, x16, #24 -#DSO-NEXT: 1005c: br x17 +#DSO-NEXT: 10390: adrp x16, #131072 +#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: 10060: adrp x16, #131072 -#DSO-NEXT: 10064: ldr x17, [x16, #32] -#DSO-NEXT: 10068: add x16, x16, #32 -#DSO-NEXT: 1006c: br x17 +#DSO-NEXT: 103a0: adrp x16, #131072 +#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: 10070: adrp x16, #131072 -#DSO-NEXT: 10074: ldr x17, [x16, #40] -#DSO-NEXT: 10078: add x16, x16, #40 -#DSO-NEXT: 1007c: br x17 +#DSO-NEXT: 103b0: adrp x16, #131072 +#DSO-NEXT: 103b4: ldr x17, [x16, #1176] +#DSO-NEXT: 103b8: add x16, x16, #1176 +#DSO-NEXT: 103bc: br x17 .globl _start _start: Index: lld/trunk/test/ELF/aarch64-copy.s =================================================================== --- lld/trunk/test/ELF/aarch64-copy.s +++ lld/trunk/test/ELF/aarch64-copy.s @@ -22,7 +22,7 @@ // CHECK-NEXT: SHF_ALLOC // CHECK-NEXT: SHF_WRITE // CHECK-NEXT: ] -// CHECK-NEXT: Address: 0x230000 +// CHECK-NEXT: Address: 0x2303F0 // CHECK-NEXT: Offset: // CHECK-NEXT: Size: 24 // CHECK-NEXT: Link: @@ -31,29 +31,29 @@ // CHECK: Relocations [ // CHECK-NEXT: Section ({{.*}}) .rela.dyn { -// CHECK-NEXT: 0x230000 R_AARCH64_COPY x 0x0 -// CHECK-NEXT: 0x230010 R_AARCH64_COPY y 0x0 -// CHECK-NEXT: 0x230014 R_AARCH64_COPY z 0x0 +// CHECK-NEXT: 0x2303F0 R_AARCH64_COPY x 0x0 +// CHECK-NEXT: 0x230400 R_AARCH64_COPY y 0x0 +// CHECK-NEXT: 0x230404 R_AARCH64_COPY z 0x0 // CHECK-NEXT: } // CHECK-NEXT: ] // CHECK: Symbols [ // CHECK: Name: x -// CHECK-NEXT: Value: 0x230000 +// CHECK-NEXT: Value: 0x2303F0 // CHECK-NEXT: Size: 4 // CHECK-NEXT: Binding: Global // CHECK-NEXT: Type: Object // CHECK-NEXT: Other: // CHECK-NEXT: Section: .bss // CHECK: Name: y -// CHECK-NEXT: Value: 0x230010 +// CHECK-NEXT: Value: 0x230400 // CHECK-NEXT: Size: 4 // CHECK-NEXT: Binding: Global // CHECK-NEXT: Type: Object // CHECK-NEXT: Other: // CHECK-NEXT: Section: .bss // CHECK: Name: z -// CHECK-NEXT: Value: 0x230014 +// CHECK-NEXT: Value: 0x230404 // CHECK-NEXT: Size: 4 // CHECK-NEXT: Binding: Global // CHECK-NEXT: Type: Object @@ -64,16 +64,13 @@ // CODE: Disassembly of section .text: // CODE-EMPTY: // CODE-NEXT: _start: -// S(x) = 0x230000, A = 0, P = 0x210000 -// S + A - P = 0x20000 = 131072 -// CODE-NEXT: 210000: adr x1, #131072 -// S(y) = 0x230010, A = 0, P = 0x210004 -// Page(S + A) - Page(P) = 0x230000 - 0x210000 = 0x20000 = 131072 -// CODE-NEXT: 210004: adrp x2, #131072 -// S(y) = 0x230010, A = 0 -// (S + A) & 0xFFF = 0x10 = 16 -// CODE-NEXT: 210008: add x2, x2, #16 +// 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 +// (S + A) & 0xFFF = (0x230400 + 0) & 0xFFF = 1024 +// CODE-NEXT: 210324: add x2, x2, #1024 // RODATA: Contents of section .rodata: -// S(z) = 0x230014 -// RODATA-NEXT: 200318 14002300 +// S(z) = 0x230404 +// RODATA-NEXT: 200318 04042300 Index: lld/trunk/test/ELF/aarch64-cortex-a53-843419-large.s =================================================================== --- lld/trunk/test/ELF/aarch64-cortex-a53-843419-large.s +++ lld/trunk/test/ELF/aarch64-cortex-a53-843419-large.s @@ -1,6 +1,6 @@ // REQUIRES: aarch64 // RUN: llvm-mc -filetype=obj -triple=aarch64-none-linux %s -o %t.o -// RUN: ld.lld --fix-cortex-a53-843419 %t.o -o %t2 +// RUN: ld.lld --fix-cortex-a53-843419 -z separate-code %t.o -o %t2 // RUN: llvm-objdump -triple=aarch64-linux-gnu -d %t2 -start-address=2162688 -stop-address=2162700 | FileCheck --check-prefix=CHECK1 %s // RUN: llvm-objdump -triple=aarch64-linux-gnu -d %t2 -start-address=2166784 -stop-address=2166788 | FileCheck --check-prefix=CHECK2 %s // RUN: llvm-objdump -triple=aarch64-linux-gnu -d %t2 -start-address=2170872 -stop-address=2170888 | FileCheck --check-prefix=CHECK3 %s Index: lld/trunk/test/ELF/aarch64-cortex-a53-843419-recognize.s =================================================================== --- lld/trunk/test/ELF/aarch64-cortex-a53-843419-recognize.s +++ lld/trunk/test/ELF/aarch64-cortex-a53-843419-recognize.s @@ -1,8 +1,8 @@ // REQUIRES: aarch64 // RUN: llvm-mc -filetype=obj -triple=aarch64-none-linux %s -o %t.o -// RUN: ld.lld -fix-cortex-a53-843419 -verbose %t.o -o %t2 2>&1 | FileCheck -check-prefix CHECK-PRINT %s +// RUN: ld.lld -fix-cortex-a53-843419 -z separate-code -verbose %t.o -o %t2 2>&1 | FileCheck -check-prefix CHECK-PRINT %s // RUN: llvm-objdump -triple=aarch64-linux-gnu -d %t2 | FileCheck %s -check-prefixes=CHECK,CHECK-FIX -// RUN: ld.lld %t.o -o %t3 +// RUN: ld.lld %t.o -z separate-code -o %t3 // RUN: llvm-objdump -triple=aarch64-linux-gnu -d %t3 | FileCheck %s -check-prefixes=CHECK,CHECK-NOFIX // Test cases for Cortex-A53 Erratum 843419 // See ARM-EPM-048406 Cortex_A53_MPCore_Software_Developers_Errata_Notice.pdf @@ -85,7 +85,7 @@ // CHECK-NEXT: 217ff8: 40 02 00 b0 adrp x0, #299008 // CHECK-NEXT: 217ffc: 21 8c 00 bc str s1, [x1, #8]! // CHECK-FIX: 218000: 09 b0 00 14 b #180260 -// CHECK-NOFIX: 218000: 02 00 40 f9 ldr x2, [x0] +// CHECK-NOFIX: 218000: 02 0c 40 f9 ldr x2, [x0, #24] // CHECK-NEXT: 218004: c0 03 5f d6 ret .section .text.04, "ax", %progbits .balign 4096 @@ -103,7 +103,7 @@ // CHECK-NEXT: 219ffc: 3c 02 00 f0 adrp x28, #290816 // CHECK-NEXT: 21a000: 42 00 00 f9 str x2, [x2] // CHECK-FIX: 21a004: 0a a8 00 14 b #172072 -// CHECK-NOFIX: 21a004: 9c 07 00 f9 str x28, [x28, #8] +// CHECK-NOFIX: 21a004: 9c 13 00 f9 str x28, [x28, #32] // CHECK-NEXT: 21a008: c0 03 5f d6 ret .section .text.05, "ax", %progbits .balign 4096 @@ -121,7 +121,7 @@ // CHECK-NEXT: 21bffc: 3c 02 00 b0 adrp x28, #282624 // CHECK-NEXT: 21c000: 44 00 00 b9 str w4, [x2] // CHECK-FIX: 21c004: 0c a0 00 14 b #163888 -// CHECK-NOFIX: 21c004: 84 0b 00 f9 str x4, [x28, #16] +// CHECK-NOFIX: 21c004: 84 17 00 f9 str x4, [x28, #40] // CHECK-NEXT: 21c008: c0 03 5f d6 ret .section .text.06, "ax", %progbits .balign 4096 @@ -192,7 +192,7 @@ // CHECK-NEXT: 223ff8: f2 01 00 b0 adrp x18, #249856 // CHECK-NEXT: 223ffc: e3 ff ff 58 ldr x3, #-4 // CHECK-FIX: 224000: 15 80 00 14 b #131156 -// CHECK-NOFIX: 224000: 52 02 40 f9 ldr x18, [x18] +// CHECK-NOFIX: 224000: 52 0e 40 f9 ldr x18, [x18, #24] // CHECK-NEXT: 224004: c0 03 5f d6 ret .section .text.10, "ax", %progbits .balign 4096 @@ -210,7 +210,7 @@ // CHECK-NEXT: 225ffc: cf 01 00 f0 adrp x15, #241664 // CHECK-NEXT: 226000: 43 68 61 f8 ldr x3, [x2, x1] // CHECK-FIX: 226004: 16 78 00 14 b #122968 -// CHECK-NOFIX: 226004: ea 05 40 f9 ldr x10, [x15, #8] +// CHECK-NOFIX: 226004: ea 11 40 f9 ldr x10, [x15, #32] // CHECK-NEXT: 226008: c0 03 5f d6 ret .section .text.11, "ax", %progbits .balign 4096 @@ -228,7 +228,7 @@ // CHECK-NEXT: 227ff8: d0 01 00 b0 adrp x16, #233472 // CHECK-NEXT: 227ffc: 61 08 00 a9 stp x1, x2, [x3] // CHECK-FIX: 228000: 19 70 00 14 b #114788 -// CHECK-NOFIX: 228000: 0d 0a 40 f9 ldr x13, [x16, #16] +// CHECK-NOFIX: 228000: 0d 16 40 f9 ldr x13, [x16, #40] // CHECK-NEXT: 228004: c0 03 5f d6 ret .section .text.12, "ax", %progbits .balign 4096 @@ -246,7 +246,7 @@ // CHECK-NEXT: 229ffc: a7 01 00 f0 adrp x7, #225280 // CHECK-NEXT: 22a000: 61 08 00 a8 stnp x1, x2, [x3] // CHECK-FIX: 22a004: 1a 68 00 14 b #106600 -// CHECK-NOFIX: 22a004: e9 00 40 f9 ldr x9, [x7] +// CHECK-NOFIX: 22a004: e9 0c 40 f9 ldr x9, [x7, #24] // CHECK-NEXT: 22a008: c0 03 5f d6 ret .section .text.13, "ax", %progbits .balign 4096 @@ -264,7 +264,7 @@ // CHECK-NEXT: 22bffc: b7 01 00 b0 adrp x23, #217088 // CHECK-NEXT: 22c000: 20 04 82 0d st1 { v0.b }[1], [x1], x2 // CHECK-FIX: 22c004: 1c 60 00 14 b #98416 -// CHECK-NOFIX: 22c004: f6 06 40 f9 ldr x22, [x23, #8] +// CHECK-NOFIX: 22c004: f6 12 40 f9 ldr x22, [x23, #32] // CHECK-NEXT: 22c008: c0 03 5f d6 ret .section .text.14, "ax", %progbits .balign 4096 @@ -282,7 +282,7 @@ // CHECK-NEXT: 22dff8: 97 01 00 f0 adrp x23, #208896 // CHECK-NEXT: 22dffc: 20 a0 00 4c st1 { v0.16b, v1.16b }, [x1] // CHECK-FIX: 22e000: 1f 58 00 14 b #90236 -// CHECK-NOFIX: 22e000: f8 0a 40 f9 ldr x24, [x23, #16] +// CHECK-NOFIX: 22e000: f8 16 40 f9 ldr x24, [x23, #40] // CHECK-NEXT: 22e004: c0 03 5f d6 ret .section .text.15, "ax", %progbits .balign 4096 @@ -531,13 +531,13 @@ // CHECK-FIX-NEXT: 24401c: 03 08 40 f9 ldr x3, [x0, #16] // CHECK-FIX-NEXT: 244020: fa 47 ff 17 b #-188440 // CHECK-FIX: __CortexA53843419_218000: -// CHECK-FIX-NEXT: 244024: 02 00 40 f9 ldr x2, [x0] +// CHECK-FIX-NEXT: 244024: 02 0c 40 f9 ldr x2, [x0, #24] // CHECK-FIX-NEXT: 244028: f7 4f ff 17 b #-180260 // CHECK-FIX: __CortexA53843419_21A004: -// CHECK-FIX-NEXT: 24402c: 9c 07 00 f9 str x28, [x28, #8] +// CHECK-FIX-NEXT: 24402c: 9c 13 00 f9 str x28, [x28, #32] // CHECK-FIX-NEXT: 244030: f6 57 ff 17 b #-172072 // CHECK-FIX: __CortexA53843419_21C004: -// CHECK-FIX-NEXT: 244034: 84 0b 00 f9 str x4, [x28, #16] +// CHECK-FIX-NEXT: 244034: 84 17 00 f9 str x4, [x28, #40] // CHECK-FIX-NEXT: 244038: f4 5f ff 17 b #-163888 // CHECK-FIX: __CortexA53843419_21E000: // CHECK-FIX-NEXT: 24403c: bd 03 40 f9 ldr x29, [x29] @@ -549,22 +549,22 @@ // CHECK-FIX-NEXT: 24404c: 41 0a 40 f9 ldr x1, [x18, #16] // CHECK-FIX-NEXT: 244050: ee 77 ff 17 b #-139336 // CHECK-FIX: __CortexA53843419_224000: -// CHECK-FIX-NEXT: 244054: 52 02 40 f9 ldr x18, [x18] +// CHECK-FIX-NEXT: 244054: 52 0e 40 f9 ldr x18, [x18, #24] // CHECK-FIX-NEXT: 244058: eb 7f ff 17 b #-131156 // CHECK-FIX: __CortexA53843419_226004: -// CHECK-FIX-NEXT: 24405c: ea 05 40 f9 ldr x10, [x15, #8] +// CHECK-FIX-NEXT: 24405c: ea 11 40 f9 ldr x10, [x15, #32] // CHECK-FIX-NEXT: 244060: ea 87 ff 17 b #-122968 // CHECK-FIX: __CortexA53843419_228000: -// CHECK-FIX-NEXT: 244064: 0d 0a 40 f9 ldr x13, [x16, #16] +// CHECK-FIX-NEXT: 244064: 0d 16 40 f9 ldr x13, [x16, #40] // CHECK-FIX-NEXT: 244068: e7 8f ff 17 b #-114788 // CHECK-FIX: __CortexA53843419_22A004: -// CHECK-FIX-NEXT: 24406c: e9 00 40 f9 ldr x9, [x7] +// CHECK-FIX-NEXT: 24406c: e9 0c 40 f9 ldr x9, [x7, #24] // CHECK-FIX-NEXT: 244070: e6 97 ff 17 b #-106600 // CHECK-FIX: __CortexA53843419_22C004: -// CHECK-FIX-NEXT: 244074: f6 06 40 f9 ldr x22, [x23, #8] +// CHECK-FIX-NEXT: 244074: f6 12 40 f9 ldr x22, [x23, #32] // CHECK-FIX-NEXT: 244078: e4 9f ff 17 b #-98416 // CHECK-FIX: __CortexA53843419_22E000: -// CHECK-FIX-NEXT: 24407c: f8 0a 40 f9 ldr x24, [x23, #16] +// CHECK-FIX-NEXT: 24407c: f8 16 40 f9 ldr x24, [x23, #40] // CHECK-FIX-NEXT: 244080: e1 a7 ff 17 b #-90236 // CHECK-FIX: __CortexA53843419_230004: // CHECK-FIX-NEXT: 244084: 02 00 40 f9 ldr x2, [x0] Index: lld/trunk/test/ELF/aarch64-cortex-a53-843419-tlsrelax.s =================================================================== --- lld/trunk/test/ELF/aarch64-cortex-a53-843419-tlsrelax.s +++ lld/trunk/test/ELF/aarch64-cortex-a53-843419-tlsrelax.s @@ -24,12 +24,12 @@ ret // CHECK: _start: -// CHECK-NEXT: 210ff8: 41 d0 3b d5 mrs x1, TPIDR_EL0 -// CHECK-NEXT: 210ffc: 00 00 a0 d2 movz x0, #0, lsl #16 -// CHECK-NEXT: 211000: 01 02 80 f2 movk x1, #16 -// CHECK-NEXT: 211004: 00 00 a0 d2 movz x0, #0, lsl #16 -// CHECK-NEXT: 211008: 01 02 80 f2 movk x1, #16 -// CHECK-NEXT: 21100c: c0 03 5f d6 ret +// CHECK-NEXT: 211ff8: 41 d0 3b d5 mrs x1, TPIDR_EL0 +// CHECK-NEXT: 211ffc: 00 00 a0 d2 movz x0, #0, lsl #16 +// CHECK-NEXT: 212000: 01 02 80 f2 movk x1, #16 +// CHECK-NEXT: 212004: 00 00 a0 d2 movz x0, #0, lsl #16 +// CHECK-NEXT: 212008: 01 02 80 f2 movk x1, #16 +// CHECK-NEXT: 21200c: c0 03 5f d6 ret .type v,@object .section .tbss,"awT",@nobits Index: lld/trunk/test/ELF/aarch64-data-relocs.s =================================================================== --- lld/trunk/test/ELF/aarch64-data-relocs.s +++ lld/trunk/test/ELF/aarch64-data-relocs.s @@ -12,12 +12,11 @@ // S = 0x100, A = 0x24 // S + A = 0x124 // CHECK: Contents of section .R_AARCH64_ABS64: -// CHECK-NEXT: 210000 24010000 00000000 +// CHECK-NEXT: 210120 24010000 00000000 .section .R_AARCH64_PREL64, "ax",@progbits .xword foo - . + 0x24 -// S = 0x100, A = 0x24, P = 0x20008 -// S + A - P = 0xfffffffffffe011c +// S + A - P = 0x100 + 0x24 - 0x210128 = 0xffffffffffdefffc // CHECK: Contents of section .R_AARCH64_PREL64: -// CHECK-NEXT: 210008 1c01dfff ffffffff +// CHECK-NEXT: 210128 fcffdeff ffffffff Index: lld/trunk/test/ELF/aarch64-feature-bti.s =================================================================== --- lld/trunk/test/ELF/aarch64-feature-bti.s +++ lld/trunk/test/ELF/aarch64-feature-bti.s @@ -16,33 +16,38 @@ # NOBTIDYN-NOT: 0x0000000070000001 (AARCH64_BTI_PLT) # NOBTIDYN-NOT: 0x0000000070000003 (AARCH64_PAC_PLT) -# NOBTI: 0000000000010000 func2: -# NOBTI-NEXT: 10000: bl #48 -# NOBTI-NEXT: 10004: ret +# NOBTI: 00000000000102b8 func2: +# NOBTI-NEXT: 102b8: bl #56 +# NOBTI-NEXT: 102bc: ret # NOBTI: Disassembly of section .plt: -# NOBTI: 0000000000010010 .plt: -# NOBTI-NEXT: 10010: stp x16, x30, [sp, #-16]! -# NOBTI-NEXT: 10014: adrp x16, #131072 -# NOBTI-NEXT: 10018: ldr x17, [x16, #16] -# NOBTI-NEXT: 1001c: add x16, x16, #16 -# NOBTI-NEXT: 10020: br x17 -# NOBTI-NEXT: 10024: nop -# NOBTI-NEXT: 10028: nop -# NOBTI-NEXT: 1002c: nop -# NOBTI: 0000000000010030 func3@plt: -# NOBTI-NEXT: 10030: adrp x16, #131072 -# NOBTI-NEXT: 10034: ldr x17, [x16, #24] -# NOBTI-NEXT: 10038: add x16, x16, #24 -# NOBTI-NEXT: 1003c: br x17 +# NOBTI: 00000000000102d0 .plt: +# NOBTI-NEXT: 102d0: stp x16, x30, [sp, #-16]! +# NOBTI-NEXT: 102d4: adrp x16, #131072 +# NOBTI-NEXT: 102d8: ldr x17, [x16, #960] +# NOBTI-NEXT: 102dc: add x16, x16, #960 +# NOBTI-NEXT: 102e0: br x17 +# NOBTI-NEXT: 102e4: nop +# NOBTI-NEXT: 102e8: nop +# NOBTI-NEXT: 102ec: nop +# NOBTI: 00000000000102f0 func3@plt: +# NOBTI-NEXT: 102f0: adrp x16, #131072 +# NOBTI-NEXT: 102f4: ldr x17, [x16, #968] +# NOBTI-NEXT: 102f8: add x16, x16, #968 +# NOBTI-NEXT: 102fc: br x17 + +## The .got.plt should be identical between the BTI and no BTI DSO PLT. +# SOGOTPLT: Hex dump of section '.got.plt' +# SOGOTPLT-NEXT: 0x000303b0 00000000 00000000 00000000 00000000 +# SOGOTPLT-NEXT: 0x000303c0 00000000 00000000 d0020100 00000000 ## Expect a bti c at the start of plt[0], the plt entries do not need bti c as ## their address doesn't escape the shared object, so they can't be indirectly ## called. Expect no other difference. -# RUN: ld.lld %t1.o %t3.o --shared -o %t.so +# RUN: ld.lld %t1.o %t3.o --shared --soname=t.so -o %t.so # RUN: llvm-readelf -n %t.so | FileCheck --check-prefix BTIPROP %s # RUN: llvm-objdump -d -mattr=+bti --no-show-raw-insn %t.so | FileCheck --check-prefix BTISO %s -# RUN: llvm-readelf -x .got.plt %t.so | FileCheck --check-prefix SOGOTPLT %s +# RUN: llvm-readelf -x .got.plt %t.so | FileCheck --check-prefix SOGOTPLT2 %s # RUN: llvm-readelf --dynamic-table %t.so | FileCheck --check-prefix BTIDYN %s # BTIPROP: Properties: aarch64 feature: BTI @@ -50,61 +55,60 @@ # BTIDYN: 0x0000000070000001 (AARCH64_BTI_PLT) # BTIDYN-NOT: 0x0000000070000003 (AARCH64_PAC_PLT) -# BTISO: 0000000000010000 func2: -# BTISO-NEXT: 10000: bl #48 -# BTISO-NEXT: 10004: ret +# BTISO: 0000000000010310 func2: +# BTISO-NEXT: 10310: bl #48 +# BTISO-NEXT: 10314: ret # BTISO: Disassembly of section .plt: -# BTISO: 0000000000010010 .plt: -# BTISO-NEXT: 10010: bti c -# BTISO-NEXT: 10014: stp x16, x30, [sp, #-16]! -# BTISO-NEXT: 10018: adrp x16, #131072 -# BTISO-NEXT: 1001c: ldr x17, [x16, #16] -# BTISO-NEXT: 10020: add x16, x16, #16 -# BTISO-NEXT: 10024: br x17 -# BTISO-NEXT: 10028: nop -# BTISO-NEXT: 1002c: nop -# BTISO: 0000000000010030 func3@plt: -# BTISO-NEXT: 10030: adrp x16, #131072 -# BTISO-NEXT: 10034: ldr x17, [x16, #24] -# BTISO-NEXT: 10038: add x16, x16, #24 -# BTISO-NEXT: 1003c: br x17 - -## The .got.plt should be identical between the BTI and no BTI DSO PLT. -# SOGOTPLT: Hex dump of section '.got.plt' -# SOGOTPLT-NEXT: 0x00030000 00000000 00000000 00000000 00000000 -# SOGOTPLT-NEXT: 0x00030010 00000000 00000000 10000100 00000000 +# BTISO: 0000000000010320 .plt: +# BTISO-NEXT: 10320: bti c +# BTISO-NEXT: 10324: stp x16, x30, [sp, #-16]! +# BTISO-NEXT: 10328: adrp x16, #131072 +# BTISO-NEXT: 1032c: ldr x17, [x16, #1072] +# BTISO-NEXT: 10330: add x16, x16, #1072 +# BTISO-NEXT: 10334: br x17 +# BTISO-NEXT: 10338: nop +# BTISO-NEXT: 1033c: nop +# BTISO: 0000000000010340 func3@plt: +# BTISO-NEXT: 10340: adrp x16, #131072 +# BTISO-NEXT: 10344: ldr x17, [x16, #1080] +# BTISO-NEXT: 10348: add x16, x16, #1080 +# BTISO-NEXT: 1034c: br x17 + +# SOGOTPLT2: Hex dump of section '.got.plt' +# SOGOTPLT2-NEXT: 0x00030420 00000000 00000000 00000000 00000000 +# SOGOTPLT2-NEXT: 0x00030430 00000000 00000000 20030100 00000000 ## Build an executable with all relocatable inputs having the BTI ## .note.gnu.property. We expect a bti c in front of all PLT entries as the ## address of a PLT entry can escape an executable. -# RUN: ld.lld %t2.o --shared -o %t2.so +# RUN: ld.lld %t2.o --shared --soname=t2.so -o %t2.so # RUN: ld.lld %t.o %t.so %t2.so -o %t.exe # RUN: llvm-readelf --dynamic-table -n %t.exe | FileCheck --check-prefix=BTIPROP %s # RUN: llvm-objdump -d -mattr=+bti --no-show-raw-insn %t.exe | FileCheck --check-prefix=EXECBTI %s # EXECBTI: Disassembly of section .text: -# EXECBTI: 0000000000210000 func1: -# EXECBTI-NEXT: 210000: bl #48 -# EXECBTI-NEXT: 210004: ret +# EXECBTI: 0000000000210310 func1: +# EXECBTI-NEXT: 210310: bl #48 +# EXECBTI-NEXT: 210314: ret # EXECBTI: Disassembly of section .plt: -# EXECBTI: 0000000000210010 .plt: -# EXECBTI-NEXT: 210010: bti c -# EXECBTI-NEXT: 210014: stp x16, x30, [sp, #-16]! -# EXECBTI-NEXT: 210018: adrp x16, #131072 -# EXECBTI-NEXT: 21001c: ldr x17, [x16, #16] -# EXECBTI-NEXT: 210020: add x16, x16, #16 -# EXECBTI-NEXT: 210024: br x17 -# EXECBTI-NEXT: 210028: nop -# EXECBTI-NEXT: 21002c: nop -# EXECBTI: 0000000000210030 func2@plt: -# EXECBTI-NEXT: 210030: bti c -# EXECBTI-NEXT: 210034: adrp x16, #131072 -# EXECBTI-NEXT: 210038: ldr x17, [x16, #24] -# EXECBTI-NEXT: 21003c: add x16, x16, #24 -# EXECBTI-NEXT: 210040: br x17 -# EXECBTI-NEXT: 210044: nop +# EXECBTI: 0000000000210320 .plt: +# EXECBTI-NEXT: 210320: bti c +# EXECBTI-NEXT: 210324: stp x16, x30, [sp, #-16]! +# EXECBTI-NEXT: 210328: adrp x16, #131072 +# EXECBTI-NEXT: 21032c: ldr x17, [x16, #1112] +# EXECBTI-NEXT: 210330: add x16, x16, #1112 +# EXECBTI-NEXT: 210334: br x17 +# EXECBTI-NEXT: 210338: nop +# EXECBTI-NEXT: 21033c: nop +# EXECBTI: 0000000000210340 func2@plt: +# EXECBTI-NEXT: 210340: bti c +# EXECBTI-NEXT: 210344: adrp x16, #131072 +# EXECBTI-NEXT: 210348: ldr x17, [x16, #1120] +# EXECBTI-NEXT: 21034c: add x16, x16, #1120 +# EXECBTI-NEXT: 210350: br x17 +# EXECBTI-NEXT: 210354: nop ## We expect the same for PIE, as the address of an ifunc can escape # RUN: ld.lld --pie %t.o %t.so %t2.so -o %tpie.exe @@ -113,26 +117,26 @@ # RUN: llvm-objdump -d -mattr=+bti --no-show-raw-insn %tpie.exe | FileCheck --check-prefix=PIE %s # PIE: Disassembly of section .text: -# PIE: 0000000000010000 func1: -# PIE-NEXT: 10000: bl #48 -# PIE-NEXT: 10004: ret +# PIE: 0000000000010310 func1: +# PIE-NEXT: 10310: bl #48 +# PIE-NEXT: 10314: ret # PIE: Disassembly of section .plt: -# PIE: 0000000000010010 .plt: -# PIE-NEXT: 10010: bti c -# PIE-NEXT: 10014: stp x16, x30, [sp, #-16]! -# PIE-NEXT: 10018: adrp x16, #131072 -# PIE-NEXT: 1001c: ldr x17, [x16, #16] -# PIE-NEXT: 10020: add x16, x16, #16 -# PIE-NEXT: 10024: br x17 -# PIE-NEXT: 10028: nop -# PIE-NEXT: 1002c: nop -# PIE: 0000000000010030 func2@plt: -# PIE-NEXT: 10030: bti c -# PIE-NEXT: 10034: adrp x16, #131072 -# PIE-NEXT: 10038: ldr x17, [x16, #24] -# PIE-NEXT: 1003c: add x16, x16, #24 -# PIE-NEXT: 10040: br x17 -# PIE-NEXT: 10044: nop +# PIE: 0000000000010320 .plt: +# PIE-NEXT: 10320: bti c +# PIE-NEXT: 10324: stp x16, x30, [sp, #-16]! +# PIE-NEXT: 10328: adrp x16, #131072 +# PIE-NEXT: 1032c: ldr x17, [x16, #1112] +# PIE-NEXT: 10330: add x16, x16, #1112 +# PIE-NEXT: 10334: br x17 +# PIE-NEXT: 10338: nop +# PIE-NEXT: 1033c: nop +# PIE: 0000000000010340 func2@plt: +# PIE-NEXT: 10340: bti c +# PIE-NEXT: 10344: adrp x16, #131072 +# PIE-NEXT: 10348: ldr x17, [x16, #1120] +# PIE-NEXT: 1034c: add x16, x16, #1120 +# PIE-NEXT: 10350: br x17 +# PIE-NEXT: 10354: nop ## Build and executable with not all relocatable inputs having the BTI ## .note.property, expect no bti c and no .note.gnu.property entry @@ -142,26 +146,26 @@ # RUN: llvm-objdump -d -mattr=+bti --no-show-raw-insn %tnobti.exe | FileCheck --check-prefix=NOEX %s # NOEX: Disassembly of section .text: -# NOEX: 0000000000210000 func1: -# NOEX-NEXT: 210000: bl #48 -# NOEX-NEXT: 210004: ret -# NOEX: 0000000000210008 func3: -# NOEX-NEXT: 210008: ret +# NOEX: 00000000002102e0 func1: +# NOEX-NEXT: 2102e0: bl #48 +# NOEX-NEXT: 2102e4: ret +# NOEX: 00000000002102e8 func3: +# NOEX-NEXT: 2102e8: ret # NOEX: Disassembly of section .plt: -# NOEX: 0000000000210010 .plt: -# NOEX-NEXT: 210010: stp x16, x30, [sp, #-16]! -# NOEX-NEXT: 210014: adrp x16, #131072 -# NOEX-NEXT: 210018: ldr x17, [x16, #16] -# NOEX-NEXT: 21001c: add x16, x16, #16 -# NOEX-NEXT: 210020: br x17 -# NOEX-NEXT: 210024: nop -# NOEX-NEXT: 210028: nop -# NOEX-NEXT: 21002c: nop -# NOEX: 0000000000210030 func2@plt: -# NOEX-NEXT: 210030: adrp x16, #131072 -# NOEX-NEXT: 210034: ldr x17, [x16, #24] -# NOEX-NEXT: 210038: add x16, x16, #24 -# NOEX-NEXT: 21003c: br x17 +# NOEX: 00000000002102f0 .plt: +# NOEX-NEXT: 2102f0: stp x16, x30, [sp, #-16]! +# NOEX-NEXT: 2102f4: adrp x16, #131072 +# NOEX-NEXT: 2102f8: ldr x17, [x16, #1024] +# NOEX-NEXT: 2102fc: add x16, x16, #1024 +# NOEX-NEXT: 210300: br x17 +# NOEX-NEXT: 210304: nop +# NOEX-NEXT: 210308: nop +# NOEX-NEXT: 21030c: nop +# NOEX: 0000000000210310 func2@plt: +# NOEX-NEXT: 210310: adrp x16, #131072 +# NOEX-NEXT: 210314: ldr x17, [x16, #1032] +# NOEX-NEXT: 210318: add x16, x16, #1032 +# NOEX-NEXT: 21031c: br x17 ## Force BTI entries with the --force-bti command line option. Expect a warning ## from the file without the .note.gnu.property. @@ -176,28 +180,28 @@ # RUN: llvm-objdump -d -mattr=+bti --no-show-raw-insn %tforcebti.exe | FileCheck --check-prefix=FORCE %s # FORCE: Disassembly of section .text: -# FORCE: 0000000000210000 func1: -# FORCE-NEXT: 210000: bl #48 -# FORCE-NEXT: 210004: ret -# FORCE: 0000000000210008 func3: -# FORCE-NEXT: 210008: ret +# FORCE: 0000000000210338 func1: +# FORCE-NEXT: 210338: bl #56 +# FORCE-NEXT: 21033c: ret +# FORCE: 0000000000210340 func3: +# FORCE-NEXT: 210340: ret # FORCE: Disassembly of section .plt: -# FORCE: 0000000000210010 .plt: -# FORCE-NEXT: 210010: bti c -# FORCE-NEXT: 210014: stp x16, x30, [sp, #-16]! -# FORCE-NEXT: 210018: adrp x16, #131072 -# FORCE-NEXT: 21001c: ldr x17, [x16, #16] -# FORCE-NEXT: 210020: add x16, x16, #16 -# FORCE-NEXT: 210024: br x17 -# FORCE-NEXT: 210028: nop -# FORCE-NEXT: 21002c: nop -# FORCE: 0000000000210030 func2@plt: -# FORCE-NEXT: 210030: bti c -# FORCE-NEXT: 210034: adrp x16, #131072 -# FORCE-NEXT: 210038: ldr x17, [x16, #24] -# FORCE-NEXT: 21003c: add x16, x16, #24 -# FORCE-NEXT: 210040: br x17 -# FORCE-NEXT: 210044: nop +# FORCE: 0000000000210350 .plt: +# FORCE-NEXT: 210350: bti c +# FORCE-NEXT: 210354: stp x16, x30, [sp, #-16]! +# FORCE-NEXT: 210358: adrp x16, #131072 +# FORCE-NEXT: 21035c: ldr x17, [x16, #1144] +# FORCE-NEXT: 210360: add x16, x16, #1144 +# FORCE-NEXT: 210364: br x17 +# FORCE-NEXT: 210368: nop +# FORCE-NEXT: 21036c: nop +# FORCE: 0000000000210370 func2@plt: +# FORCE-NEXT: 210370: bti c +# FORCE-NEXT: 210374: adrp x16, #131072 +# FORCE-NEXT: 210378: ldr x17, [x16, #1152] +# FORCE-NEXT: 21037c: add x16, x16, #1152 +# FORCE-NEXT: 210380: br x17 +# FORCE-NEXT: 210384: nop .section ".note.gnu.property", "a" .long 4 Index: lld/trunk/test/ELF/aarch64-feature-btipac.s =================================================================== --- lld/trunk/test/ELF/aarch64-feature-btipac.s +++ lld/trunk/test/ELF/aarch64-feature-btipac.s @@ -9,34 +9,34 @@ ## PLT[0] has bti c at start ## PLT[n] has autia1716 before br x17 -# RUN: ld.lld %t1.o %t3btipac.o --shared -o %t.so +# RUN: ld.lld %t1.o %t3btipac.o --shared --soname=t.so -o %t.so # RUN: llvm-readelf -n %t.so | FileCheck --check-prefix BTIPACPROP %s # RUN: llvm-objdump -d -mattr=+v8.5a --no-show-raw-insn %t.so | FileCheck --check-prefix BTIPACSO %s # RUN: llvm-readelf --dynamic-table %t.so | FileCheck --check-prefix BTIPACDYN %s # BTIPACSO: Disassembly of section .text: -# BTIPACSO: 0000000000010000 func2: -# BTIPACSO-NEXT: 10000: bl #48 -# BTIPACSO-NEXT: 10004: ret -# BTIPACSO: 0000000000010008 func3: -# BTIPACSO-NEXT: 10008: ret +# BTIPACSO: 0000000000010310 func2: +# BTIPACSO-NEXT: 10310: bl #48 +# BTIPACSO-NEXT: 10314: ret +# BTIPACSO: 0000000000010318 func3: +# BTIPACSO-NEXT: 10318: ret # BTIPACSO: Disassembly of section .plt: -# BTIPACSO: 0000000000010010 .plt: -# BTIPACSO-NEXT: 10010: bti c -# BTIPACSO-NEXT: 10014: stp x16, x30, [sp, #-16]! -# BTIPACSO-NEXT: 10018: adrp x16, #131072 -# BTIPACSO-NEXT: 1001c: ldr x17, [x16, #16] -# BTIPACSO-NEXT: 10020: add x16, x16, #16 -# BTIPACSO-NEXT: 10024: br x17 -# BTIPACSO-NEXT: 10028: nop -# BTIPACSO-NEXT: 1002c: nop -# BTIPACSO: 0000000000010030 func3@plt: -# BTIPACSO-NEXT: 10030: adrp x16, #131072 -# BTIPACSO-NEXT: 10034: ldr x17, [x16, #24] -# BTIPACSO-NEXT: 10038: add x16, x16, #24 -# BTIPACSO-NEXT: 1003c: autia1716 -# BTIPACSO-NEXT: 10040: br x17 -# BTIPACSO-NEXT: 10044: nop +# BTIPACSO: 0000000000010320 .plt: +# BTIPACSO-NEXT: 10320: bti c +# BTIPACSO-NEXT: 10324: stp x16, x30, [sp, #-16]! +# BTIPACSO-NEXT: 10328: adrp x16, #131072 +# BTIPACSO-NEXT: 1032c: ldr x17, [x16, #1096] +# BTIPACSO-NEXT: 10330: add x16, x16, #1096 +# BTIPACSO-NEXT: 10334: br x17 +# BTIPACSO-NEXT: 10338: nop +# BTIPACSO-NEXT: 1033c: nop +# BTIPACSO: 0000000000010340 func3@plt: +# BTIPACSO-NEXT: 10340: adrp x16, #131072 +# BTIPACSO-NEXT: 10344: ldr x17, [x16, #1104] +# BTIPACSO-NEXT: 10348: add x16, x16, #1104 +# BTIPACSO-NEXT: 1034c: autia1716 +# BTIPACSO-NEXT: 10350: br x17 +# BTIPACSO-NEXT: 10354: nop # BTIPACPROP: Properties: aarch64 feature: BTI, PAC @@ -53,29 +53,29 @@ # RUN: llvm-readelf --dynamic-table %t.exe | FileCheck --check-prefix BTIPACDYN %s # BTIPACEX: Disassembly of section .text: -# BTIPACEX: 0000000000210000 func1: -# BTIPACEX-NEXT: 210000: bl #48 -# BTIPACEX-NEXT: 210004: ret -# BTIPACEX-NEXT: 210008: ret -# BTIPACEX: 000000000021000c func3: -# BTIPACEX-NEXT: 21000c: ret +# BTIPACEX: 0000000000210338 func1: +# BTIPACEX-NEXT: 210338: bl #56 +# BTIPACEX-NEXT: 21033c: ret +# BTIPACEX-NEXT: 210340: ret +# BTIPACEX: 0000000000210344 func3: +# BTIPACEX-NEXT: 210344: ret # BTIPACEX: Disassembly of section .plt: -# BTIPACEX: 0000000000210010 .plt: -# BTIPACEX-NEXT: 210010: bti c -# BTIPACEX-NEXT: 210014: stp x16, x30, [sp, #-16]! -# BTIPACEX-NEXT: 210018: adrp x16, #131072 -# BTIPACEX-NEXT: 21001c: ldr x17, [x16, #16] -# BTIPACEX-NEXT: 210020: add x16, x16, #16 -# BTIPACEX-NEXT: 210024: br x17 -# BTIPACEX-NEXT: 210028: nop -# BTIPACEX-NEXT: 21002c: nop -# BTIPACEX: 0000000000210030 func2@plt: -# BTIPACEX-NEXT: 210030: bti c -# BTIPACEX-NEXT: 210034: adrp x16, #131072 -# BTIPACEX-NEXT: 210038: ldr x17, [x16, #24] -# BTIPACEX-NEXT: 21003c: add x16, x16, #24 -# BTIPACEX-NEXT: 210040: autia1716 -# BTIPACEX-NEXT: 210044: br x17 +# BTIPACEX: 0000000000210350 .plt: +# BTIPACEX-NEXT: 210350: bti c +# BTIPACEX-NEXT: 210354: stp x16, x30, [sp, #-16]! +# BTIPACEX-NEXT: 210358: adrp x16, #131072 +# BTIPACEX-NEXT: 21035c: ldr x17, [x16, #1160] +# BTIPACEX-NEXT: 210360: add x16, x16, #1160 +# BTIPACEX-NEXT: 210364: br x17 +# BTIPACEX-NEXT: 210368: nop +# BTIPACEX-NEXT: 21036c: nop +# BTIPACEX: 0000000000210370 func2@plt: +# BTIPACEX-NEXT: 210370: bti c +# BTIPACEX-NEXT: 210374: adrp x16, #131072 +# BTIPACEX-NEXT: 210378: ldr x17, [x16, #1168] +# BTIPACEX-NEXT: 21037c: add x16, x16, #1168 +# BTIPACEX-NEXT: 210380: autia1716 +# BTIPACEX-NEXT: 210384: br x17 ## Check that combinations of BTI+PAC with 0 properties results in standard PLT @@ -84,27 +84,27 @@ # RUN: llvm-readelf --dynamic-table %t.exe | FileCheck --check-prefix=NODYN %s # EX: Disassembly of section .text: -# EX: 0000000000210000 func1: -# EX-NEXT: 210000: bl #48 -# EX-NEXT: 210004: ret -# EX-NEXT: 210008: ret -# EX: 000000000021000c func3: -# EX-NEXT: 21000c: ret +# EX: 00000000002102e0 func1: +# EX-NEXT: 2102e0: bl #48 +# EX-NEXT: 2102e4: ret +# EX-NEXT: 2102e8: ret +# EX: 00000000002102ec func3: +# EX-NEXT: 2102ec: ret # EX: Disassembly of section .plt: -# EX: 0000000000210010 .plt: -# EX-NEXT: 210010: stp x16, x30, [sp, #-16]! -# EX-NEXT: 210014: adrp x16, #131072 -# EX-NEXT: 210018: ldr x17, [x16, #16] -# EX-NEXT: 21001c: add x16, x16, #16 -# EX-NEXT: 210020: br x17 -# EX-NEXT: 210024: nop -# EX-NEXT: 210028: nop -# EX-NEXT: 21002c: nop -# EX: 0000000000210030 func2@plt: -# EX: 210030: adrp x16, #131072 -# EX-NEXT: 210034: ldr x17, [x16, #24] -# EX-NEXT: 210038: add x16, x16, #24 -# EX-NEXT: 21003c: br x17 +# EX: 00000000002102f0 .plt: +# EX-NEXT: 2102f0: stp x16, x30, [sp, #-16]! +# EX-NEXT: 2102f4: adrp x16, #131072 +# EX-NEXT: 2102f8: ldr x17, [x16, #1024] +# EX-NEXT: 2102fc: add x16, x16, #1024 +# EX-NEXT: 210300: br x17 +# EX-NEXT: 210304: nop +# EX-NEXT: 210308: nop +# EX-NEXT: 21030c: nop +# EX: 0000000000210310 func2@plt: +# EX: 210310: adrp x16, #131072 +# EX-NEXT: 210314: ldr x17, [x16, #1032] +# EX-NEXT: 210318: add x16, x16, #1032 +# EX-NEXT: 21031c: br x17 # NODYN-NOT: 0x0000000070000001 (AARCH64_BTI_PLT) # NODYN-NOT: 0x0000000070000003 (AARCH64_PAC_PLT) Index: lld/trunk/test/ELF/aarch64-feature-pac.s =================================================================== --- lld/trunk/test/ELF/aarch64-feature-pac.s +++ lld/trunk/test/ELF/aarch64-feature-pac.s @@ -13,62 +13,65 @@ # RUN: llvm-readelf -x .got.plt %tno.so | FileCheck --check-prefix SOGOTPLT %s # RUN: llvm-readelf --dynamic-table %tno.so | FileCheck --check-prefix NOPACDYN %s -# NOPAC: 0000000000010000 func2: -# NOPAC-NEXT: 10000: bl #48 -# NOPAC-NEXT: 10004: ret +# NOPAC: 00000000000102b8 func2: +# NOPAC-NEXT: 102b8: bl #56 +# NOPAC-NEXT: 102bc: ret # NOPAC: Disassembly of section .plt: -# NOPAC: 0000000000010010 .plt: -# NOPAC-NEXT: 10010: stp x16, x30, [sp, #-16]! -# NOPAC-NEXT: 10014: adrp x16, #131072 -# NOPAC-NEXT: 10018: ldr x17, [x16, #16] -# NOPAC-NEXT: 1001c: add x16, x16, #16 -# NOPAC-NEXT: 10020: br x17 -# NOPAC-NEXT: 10024: nop -# NOPAC-NEXT: 10028: nop -# NOPAC-NEXT: 1002c: nop -# NOPAC: 0000000000010030 func3@plt: -# NOPAC-NEXT: 10030: adrp x16, #131072 -# NOPAC-NEXT: 10034: ldr x17, [x16, #24] -# NOPAC-NEXT: 10038: add x16, x16, #24 -# NOPAC-NEXT: 1003c: br x17 +# NOPAC: 00000000000102d0 .plt: +# NOPAC-NEXT: 102d0: stp x16, x30, [sp, #-16]! +# NOPAC-NEXT: 102d4: adrp x16, #131072 +# NOPAC-NEXT: 102d8: ldr x17, [x16, #960] +# NOPAC-NEXT: 102dc: add x16, x16, #960 +# NOPAC-NEXT: 102e0: br x17 +# NOPAC-NEXT: 102e4: nop +# NOPAC-NEXT: 102e8: nop +# NOPAC-NEXT: 102ec: nop +# NOPAC: 00000000000102f0 func3@plt: +# NOPAC-NEXT: 102f0: adrp x16, #131072 +# NOPAC-NEXT: 102f4: ldr x17, [x16, #968] +# NOPAC-NEXT: 102f8: add x16, x16, #968 +# NOPAC-NEXT: 102fc: br x17 # NOPACDYN-NOT: 0x0000000070000001 (AARCH64_BTI_PLT) # NOPACDYN-NOT: 0x0000000070000003 (AARCH64_PAC_PLT) -# RUN: ld.lld %t1.o %t3.o --shared -o %t.so +# RUN: ld.lld %t1.o %t3.o --shared --soname=t.so -o %t.so # RUN: llvm-readelf -n %t.so | FileCheck --check-prefix PACPROP %s # RUN: llvm-objdump -d -mattr=+v8.3a --no-show-raw-insn %t.so | FileCheck --check-prefix PACSO %s -# RUN: llvm-readelf -x .got.plt %t.so | FileCheck --check-prefix SOGOTPLT %s +# RUN: llvm-readelf -x .got.plt %t.so | FileCheck --check-prefix SOGOTPLT2 %s # RUN: llvm-readelf --dynamic-table %t.so | FileCheck --check-prefix PACDYN %s ## PAC has no effect on PLT[0], for PLT[N] autia1716 is used to authenticate ## the address in x17 (context in x16) before branching to it. The dynamic ## loader is responsible for calling pacia1716 on the entry. -# PACSO: 0000000000010000 func2: -# PACSO-NEXT: 10000: bl #48 -# PACSO-NEXT: 10004: ret +# PACSO: 0000000000010310 func2: +# PACSO-NEXT: 10310: bl #48 +# PACSO-NEXT: 10314: ret # PACSO: Disassembly of section .plt: -# PACSO: 0000000000010010 .plt: -# PACSO-NEXT: 10010: stp x16, x30, [sp, #-16]! -# PACSO-NEXT: 10014: adrp x16, #131072 -# PACSO-NEXT: 10018: ldr x17, [x16, #16] -# PACSO-NEXT: 1001c: add x16, x16, #16 -# PACSO-NEXT: 10020: br x17 -# PACSO-NEXT: 10024: nop -# PACSO-NEXT: 10028: nop -# PACSO-NEXT: 1002c: nop -# PACSO: 0000000000010030 func3@plt: -# PACSO-NEXT: 10030: adrp x16, #131072 -# PACSO-NEXT: 10034: ldr x17, [x16, #24] -# PACSO-NEXT: 10038: add x16, x16, #24 -# PACSO-NEXT: 1003c: autia1716 -# PACSO-NEXT: 10040: br x17 -# PACSO-NEXT: 10044: nop +# PACSO: 0000000000010320 .plt: +# PACSO-NEXT: 10320: stp x16, x30, [sp, #-16]! +# PACSO-NEXT: 10324: adrp x16, #131072 +# PACSO-NEXT: 10328: ldr x17, [x16, #1080] +# PACSO-NEXT: 1032c: add x16, x16, #1080 +# PACSO-NEXT: 10330: br x17 +# PACSO-NEXT: 10334: nop +# PACSO-NEXT: 10338: nop +# PACSO-NEXT: 1033c: nop +# PACSO: 0000000000010340 func3@plt: +# PACSO-NEXT: 10340: adrp x16, #131072 +# PACSO-NEXT: 10344: ldr x17, [x16, #1088] +# PACSO-NEXT: 10348: add x16, x16, #1088 +# PACSO-NEXT: 1034c: autia1716 +# PACSO-NEXT: 10350: br x17 +# PACSO-NEXT: 10354: nop -# The .got.plt should be identical between the PAC and no PAC DSO PLT. # SOGOTPLT: Hex dump of section '.got.plt': -# SOGOTPLT-NEXT: 0x00030000 00000000 00000000 00000000 00000000 -# SOGOTPLT-NEXT: 0x00030010 00000000 00000000 10000100 00000000 +# SOGOTPLT-NEXT: 0x000303b0 00000000 00000000 00000000 00000000 +# SOGOTPLT-NEXT: 0x000303c0 00000000 00000000 d0020100 00000000 + +# SOGOTPLT2: Hex dump of section '.got.plt': +# SOGOTPLT2-NEXT: 0x00030428 00000000 00000000 00000000 00000000 +# SOGOTPLT2-NEXT: 0x00030438 00000000 00000000 20030100 00000000 # PACPROP: Properties: aarch64 feature: PAC @@ -86,28 +89,28 @@ # RUN: llvm-objdump -d -mattr=+v8.3a --no-show-raw-insn %tpacplt.exe | FileCheck --check-prefix PACPLT %s # PACPLT: Disassembly of section .text: -# PACPLT: 0000000000210000 func1: -# PACPLT-NEXT: 210000: bl #48 -# PACPLT-NEXT: 210004: ret -# PACPLT: 0000000000210008 func3: -# PACPLT-NEXT: 210008: ret +# PACPLT: 0000000000210338 func1: +# PACPLT-NEXT: 210338: bl #56 +# PACPLT-NEXT: 21033c: ret +# PACPLT: 0000000000210340 func3: +# PACPLT-NEXT: 210340: ret # PACPLT: Disassembly of section .plt: -# PACPLT: 0000000000210010 .plt: -# PACPLT-NEXT: 210010: stp x16, x30, [sp, #-16]! -# PACPLT-NEXT: 210014: adrp x16, #131072 -# PACPLT-NEXT: 210018: ldr x17, [x16, #16] -# PACPLT-NEXT: 21001c: add x16, x16, #16 -# PACPLT-NEXT: 210020: br x17 -# PACPLT-NEXT: 210024: nop -# PACPLT-NEXT: 210028: nop -# PACPLT-NEXT: 21002c: nop -# PACPLT: 0000000000210030 func2@plt: -# PACPLT-NEXT: 210030: adrp x16, #131072 -# PACPLT-NEXT: 210034: ldr x17, [x16, #24] -# PACPLT-NEXT: 210038: add x16, x16, #24 -# PACPLT-NEXT: 21003c: autia1716 -# PACPLT-NEXT: 210040: br x17 -# PACPLT-NEXT: 210044: nop +# PACPLT: 0000000000210350 .plt: +# PACPLT-NEXT: 210350: stp x16, x30, [sp, #-16]! +# PACPLT-NEXT: 210354: adrp x16, #131072 +# PACPLT-NEXT: 210358: ldr x17, [x16, #1144] +# PACPLT-NEXT: 21035c: add x16, x16, #1144 +# PACPLT-NEXT: 210360: br x17 +# PACPLT-NEXT: 210364: nop +# PACPLT-NEXT: 210368: nop +# PACPLT-NEXT: 21036c: nop +# PACPLT: 0000000000210370 func2@plt: +# PACPLT-NEXT: 210370: adrp x16, #131072 +# PACPLT-NEXT: 210374: ldr x17, [x16, #1152] +# PACPLT-NEXT: 210378: add x16, x16, #1152 +# PACPLT-NEXT: 21037c: autia1716 +# PACPLT-NEXT: 210380: br x17 +# PACPLT-NEXT: 210384: nop .section ".note.gnu.property", "a" Index: lld/trunk/test/ELF/aarch64-fpic-got.s =================================================================== --- lld/trunk/test/ELF/aarch64-fpic-got.s +++ lld/trunk/test/ELF/aarch64-fpic-got.s @@ -2,7 +2,7 @@ # RUN: llvm-mc -filetype=obj -triple=aarch64-none-linux %s -o %t.o # RUN: llvm-mc -filetype=obj -triple=aarch64-none-linux %p/Inputs/shared.s -o %t-lib.o -# RUN: ld.lld -shared %t-lib.o -o %t-lib.so +# RUN: ld.lld -shared %t-lib.o -soname t-lib.so -o %t-lib.so # RUN: ld.lld %t-lib.so %t.o -o %t.exe # RUN: llvm-readobj -r %t.exe | FileCheck --check-prefix=RELOC %s @@ -11,14 +11,14 @@ ## Checks if got access to dynamic objects is done through a got relative ## dynamic relocation and not using plt relative (R_AARCH64_JUMP_SLOT). # RELOC: .rela.dyn { -# RELOC-NEXT: 0x2200C0 R_AARCH64_GLOB_DAT bar 0x0 +# RELOC-NEXT: 0x220320 R_AARCH64_GLOB_DAT bar 0x0 # RELOC-NEXT: } -## page(0x2200C0) - page(0x210000) = 65536 -## page(0x2200C0) & 0xff8 = 192 +## page(0x220320) - page(0x210000) = 65536 +## page(0x220320) & 0xff8 = 800 # DIS: _start: -# DIS-NEXT: 210000: adrp x0, #65536 -# DIS-NEXT: 210004: ldr x0, [x0, #192] +# DIS-NEXT: 210258: adrp x0, #65536 +# DIS-NEXT: 21025c: ldr x0, [x0, #800] .globl _start _start: Index: lld/trunk/test/ELF/aarch64-gnu-ifunc-address.s =================================================================== --- lld/trunk/test/ELF/aarch64-gnu-ifunc-address.s +++ lld/trunk/test/ELF/aarch64-gnu-ifunc-address.s @@ -20,19 +20,18 @@ adrp x8, :got:myfunc ldr x8, [x8, :got_lo12:myfunc] ret -# CHECK: 0000000000010004 main: -# x8 = 0x20000 -# CHECK-NEXT: 10004: adrp x8, #65536 -# x8 = 0x200a0 = .got entry for myfunc with R_AARCH64_GLOB_DAT -# CHECK-NEXT: 10008: ldr x8, [x8, #160] -# CHECK-NEXT: 1000c: ret +# CHECK: 0000000000010284 main: +## myfunc's got entry = page(0x20330)-page(0x10284) + 0x330 = 65536 + 816 +# CHECK-NEXT: 10284: adrp x8, #65536 +# CHECK-NEXT: 10288: ldr x8, [x8, #816] +# CHECK-NEXT: 1028c: ret # CHECK: Disassembly of section .got: # CHECK-EMPTY: -# CHECK-NEXT: 00000000000200a0 .got: +# CHECK-NEXT: 0000000000020330 .got: # CHECK-RELOCS: Relocations [ # CHECK-RELOCS-NEXT: Section {{.*}} .rela.dyn { -# CHECK-RELOCS-NEXT: 0x200A0 R_AARCH64_GLOB_DAT myfunc 0x0 +# CHECK-RELOCS-NEXT: 0x20330 R_AARCH64_GLOB_DAT myfunc 0x0 # CHECK-RELOCS-NEXT: } # CHECK-RELOCS-NEXT: ] Index: lld/trunk/test/ELF/aarch64-gnu-ifunc-nonpreemptable.s =================================================================== --- lld/trunk/test/ELF/aarch64-gnu-ifunc-nonpreemptable.s +++ lld/trunk/test/ELF/aarch64-gnu-ifunc-nonpreemptable.s @@ -31,42 +31,42 @@ ## The address of myfunc is the address of the PLT entry for myfunc. # PDE: myfunc_resolver: -# PDE-NEXT: 210000: ret +# PDE-NEXT: 210170: ret # PDE: main: -# PDE-NEXT: 210004: adrp x8, #0 -# PDE-NEXT: 210008: add x8, x8, #16 -# PDE-NEXT: 21000c: ret +# PDE-NEXT: 210174: adrp x8, #0 +# PDE-NEXT: 210178: add x8, x8, #384 +# PDE-NEXT: 21017c: ret # PDE-EMPTY: # PDE-NEXT: Disassembly of section .plt: # PDE-EMPTY: # PDE-NEXT: myfunc: ## page(.got.plt) - page(0x210010) = 65536 -# PDE-NEXT: 210010: adrp x16, #65536 -# PDE-NEXT: 210014: ldr x17, [x16] -# PDE-NEXT: 210018: add x16, x16, #0 -# PDE-NEXT: 21001c: br x17 +# PDE-NEXT: 210180: adrp x16, #65536 +# PDE-NEXT: 210184: ldr x17, [x16, #400] +# PDE-NEXT: 210188: add x16, x16, #400 +# PDE-NEXT: 21018c: br x17 ## The adrp to myfunc should generate a PLT entry and a GOT entry with an ## irelative relocation. # PDE-RELOC: .rela.dyn { -# PDE-RELOC-NEXT: 0x220000 R_AARCH64_IRELATIVE - 0x210000 +# PDE-RELOC-NEXT: 0x220190 R_AARCH64_IRELATIVE - 0x210170 # PDE-RELOC-NEXT: } # PIE: myfunc_resolver: -# PIE-NEXT: 10000: ret +# PIE-NEXT: 10260: ret # PIE: main: -# PIE-NEXT: 10004: adrp x8, #0 -# PIE-NEXT: 10008: add x8, x8, #16 -# PIE-NEXT: 1000c: ret +# PIE-NEXT: 10264: adrp x8, #0 +# PIE-NEXT: 10268: add x8, x8, #624 +# PIE-NEXT: 1026c: ret # PIE-EMPTY: # PIE-NEXT: Disassembly of section .plt: # PIE-EMPTY: # PIE-NEXT: myfunc: -# PIE-NEXT: 10010: adrp x16, #131072 -# PIE-NEXT: 10014: ldr x17, [x16] -# PIE-NEXT: 10018: add x16, x16, #0 -# PIE-NEXT: 1001c: br x17 +# PIE-NEXT: 10270: adrp x16, #131072 +# PIE-NEXT: 10274: ldr x17, [x16, #880] +# PIE-NEXT: 10278: add x16, x16, #880 +# PIE-NEXT: 1027c: br x17 # PIE-RELOC: .rela.dyn { -# PIE-RELOC-NEXT: 0x30000 R_AARCH64_IRELATIVE - 0x10000 +# PIE-RELOC-NEXT: 0x30370 R_AARCH64_IRELATIVE - 0x10260 # PIE-RELOC-NEXT: } Index: lld/trunk/test/ELF/aarch64-gnu-ifunc-nonpreemptable2.s =================================================================== --- lld/trunk/test/ELF/aarch64-gnu-ifunc-nonpreemptable2.s +++ lld/trunk/test/ELF/aarch64-gnu-ifunc-nonpreemptable2.s @@ -8,18 +8,18 @@ ## ifunc is a non-preemptable STT_GNU_IFUNC. Check we create a canonical PLT ## and redirect .rodata and .data references to it. -# SEC: .text PROGBITS 0000000000210000 -# SEC: .got.plt PROGBITS 0000000000220008 -# SEC: 0000000000210010 0 FUNC GLOBAL DEFAULT 4 ifunc +# SEC: .text PROGBITS 0000000000210178 +# SEC: .got.plt PROGBITS 0000000000220198 +# SEC: 0000000000210180 0 FUNC GLOBAL DEFAULT 4 ifunc ## .rodata[0] and .data[0] store the address of the canonical PLT. # HEX: section '.rodata': -# HEX-NEXT: 0x00200170 10002100 00000000 +# HEX-NEXT: 0x00200170 80012100 00000000 # HEX: section '.data': -# HEX-NEXT: 0x00220000 10002100 00000000 +# HEX-NEXT: 0x00220190 80012100 00000000 # RELOC: .rela.dyn { -# RELOC-NEXT: 0x220008 R_AARCH64_IRELATIVE - 0x210000 +# RELOC-NEXT: 0x220198 R_AARCH64_IRELATIVE - 0x210178 # RELOC-NEXT: } .globl ifunc Index: lld/trunk/test/ELF/aarch64-gnu-ifunc-plt.s =================================================================== --- lld/trunk/test/ELF/aarch64-gnu-ifunc-plt.s +++ lld/trunk/test/ELF/aarch64-gnu-ifunc-plt.s @@ -10,21 +10,21 @@ // Check that the IRELATIVE relocations are after the JUMP_SLOT in the plt // CHECK: Relocations [ // CHECK-NEXT: Section (4) .rela.dyn { -// CHECK-NEXT: 0x230028 R_AARCH64_IRELATIVE - 0x210000 -// CHECK-NEXT: 0x230030 R_AARCH64_IRELATIVE - 0x210004 +// CHECK-NEXT: 0x230468 R_AARCH64_IRELATIVE - 0x2102D8 +// CHECK-NEXT: 0x230470 R_AARCH64_IRELATIVE - 0x2102DC // CHECK-NEXT: } // CHECK-NEXT: Section (5) .rela.plt { -// CHECK-NEXT: 0x230018 R_AARCH64_JUMP_SLOT bar2 0x0 -// CHECK-NEXT: 0x230020 R_AARCH64_JUMP_SLOT zed2 0x0 +// CHECK-NEXT: 0x230458 R_AARCH64_JUMP_SLOT bar2 0x0 +// CHECK-NEXT: 0x230460 R_AARCH64_JUMP_SLOT zed2 0x0 // CHECK-NEXT: } // CHECK-NEXT: ] // Check that .got.plt entries point back to PLT header // GOTPLT: Contents of section .got.plt: -// GOTPLT-NEXT: 230000 00000000 00000000 00000000 00000000 -// GOTPLT-NEXT: 230010 00000000 00000000 20002100 00000000 -// GOTPLT-NEXT: 230020 20002100 00000000 20002100 00000000 -// GOTPLT-NEXT: 230030 20002100 00000000 +// GOTPLT-NEXT: 230440 00000000 00000000 00000000 00000000 +// GOTPLT-NEXT: 230450 00000000 00000000 f0022100 00000000 +// GOTPLT-NEXT: 230460 f0022100 00000000 f0022100 00000000 +// GOTPLT-NEXT: 230470 f0022100 00000000 // Check that the PLTRELSZ tag does not include the IRELATIVE relocations // CHECK: DynamicSection [ @@ -35,46 +35,46 @@ // DISASM: Disassembly of section .text: // DISASM-EMPTY: // DISASM-NEXT: foo: -// DISASM-NEXT: 210000: ret +// DISASM-NEXT: 2102d8: ret // DISASM: bar: -// DISASM-NEXT: 210004: ret +// DISASM-NEXT: 2102dc: ret // DISASM: _start: -// DISASM-NEXT: 210008: bl #88 -// DISASM-NEXT: 21000c: bl #100 -// DISASM-NEXT: 210010: bl #48 -// DISASM-NEXT: 210014: bl #60 +// DISASM-NEXT: 2102e0: bl #80 +// DISASM-NEXT: 2102e4: bl #92 +// DISASM-NEXT: 2102e8: bl #40 +// DISASM-NEXT: 2102ec: bl #52 // DISASM-EMPTY: // DISASM-NEXT: Disassembly of section .plt: // DISASM-EMPTY: // DISASM-NEXT: .plt: -// DISASM-NEXT: 210020: stp x16, x30, [sp, #-16]! -// DISASM-NEXT: 210024: adrp x16, #131072 -// DISASM-NEXT: 210028: ldr x17, [x16, #16] -// DISASM-NEXT: 21002c: add x16, x16, #16 -// DISASM-NEXT: 210030: br x17 -// DISASM-NEXT: 210034: nop -// DISASM-NEXT: 210038: nop -// DISASM-NEXT: 21003c: nop +// DISASM-NEXT: 2102f0: stp x16, x30, [sp, #-16]! +// DISASM-NEXT: 2102f4: adrp x16, #131072 +// DISASM-NEXT: 2102f8: ldr x17, [x16, #1104] +// DISASM-NEXT: 2102fc: add x16, x16, #1104 +// DISASM-NEXT: 210300: br x17 +// DISASM-NEXT: 210304: nop +// DISASM-NEXT: 210308: nop +// DISASM-NEXT: 21030c: nop // DISASM-EMPTY: // DISASM-NEXT: bar2@plt: -// DISASM-NEXT: 210040: adrp x16, #131072 -// DISASM-NEXT: 210044: ldr x17, [x16, #24] -// DISASM-NEXT: 210048: add x16, x16, #24 -// DISASM-NEXT: 21004c: br x17 +// DISASM-NEXT: 210310: adrp x16, #131072 +// 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: 210050: adrp x16, #131072 -// DISASM-NEXT: 210054: ldr x17, [x16, #32] -// DISASM-NEXT: 210058: add x16, x16, #32 -// DISASM-NEXT: 21005c: br x17 -// DISASM-NEXT: 210060: adrp x16, #131072 -// DISASM-NEXT: 210064: ldr x17, [x16, #40] -// DISASM-NEXT: 210068: add x16, x16, #40 -// DISASM-NEXT: 21006c: br x17 -// DISASM-NEXT: 210070: adrp x16, #131072 -// DISASM-NEXT: 210074: ldr x17, [x16, #48] -// DISASM-NEXT: 210078: add x16, x16, #48 -// DISASM-NEXT: 21007c: br x17 +// DISASM-NEXT: 210320: adrp x16, #131072 +// DISASM-NEXT: 210324: ldr x17, [x16, #1120] +// DISASM-NEXT: 210328: add x16, x16, #1120 +// DISASM-NEXT: 21032c: br x17 +// DISASM-NEXT: 210330: adrp x16, #131072 +// 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: 210344: ldr x17, [x16, #1136] +// DISASM-NEXT: 210348: add x16, x16, #1136 +// DISASM-NEXT: 21034c: br x17 .text .type foo STT_GNU_IFUNC Index: lld/trunk/test/ELF/aarch64-gnu-ifunc.s =================================================================== --- lld/trunk/test/ELF/aarch64-gnu-ifunc.s +++ lld/trunk/test/ELF/aarch64-gnu-ifunc.s @@ -1,7 +1,7 @@ // REQUIRES: aarch64 // RUN: llvm-mc -filetype=obj -triple=aarch64-none-linux-gnu %s -o %t.o // RUN: ld.lld -static %t.o -o %tout -// RUN: llvm-objdump -d %tout | FileCheck %s --check-prefix=DISASM +// RUN: llvm-objdump -d --no-show-raw-insn %tout | FileCheck %s --check-prefix=DISASM // RUN: llvm-readobj -r --symbols --sections %tout | FileCheck %s // CHECK: Sections [ @@ -22,8 +22,8 @@ // CHECK-NEXT: } // CHECK: Relocations [ // CHECK-NEXT: Section ({{.*}}) .rela.dyn { -// CHECK-NEXT: 0x220000 R_AARCH64_IRELATIVE -// CHECK-NEXT: 0x220008 R_AARCH64_IRELATIVE +// CHECK-NEXT: 0x2201C0 R_AARCH64_IRELATIVE +// CHECK-NEXT: 0x2201C8 R_AARCH64_IRELATIVE // CHECK-NEXT: } // CHECK-NEXT: ] // CHECK: Symbols [ @@ -38,7 +38,7 @@ // CHECK-NEXT: } // CHECK-NEXT: Symbol { // CHECK-NEXT: Name: $x.0 -// CHECK-NEXT: Value: 0x210000 +// CHECK-NEXT: Value: 0x210188 // CHECK-NEXT: Size: 0 // CHECK-NEXT: Binding: Local // CHECK-NEXT: Type: None @@ -69,7 +69,7 @@ // CHECK-NEXT: } // CHECK-NEXT: Symbol { // CHECK-NEXT: Name: _start -// CHECK-NEXT: Value: 0x210008 +// CHECK-NEXT: Value: 0x210190 // CHECK-NEXT: Size: 0 // CHECK-NEXT: Binding: Global // CHECK-NEXT: Type: None @@ -78,7 +78,7 @@ // CHECK-NEXT: } // CHECK-NEXT: Symbol { // CHECK-NEXT: Name: bar -// CHECK-NEXT: Value: 0x210004 +// CHECK-NEXT: Value: 0x21018C // CHECK-NEXT: Size: 0 // CHECK-NEXT: Binding: Global // CHECK-NEXT: Type: GNU_IFunc @@ -87,7 +87,7 @@ // CHECK-NEXT: } // CHECK-NEXT: Symbol { // CHECK-NEXT: Name: foo -// CHECK-NEXT: Value: 0x210000 +// CHECK-NEXT: Value: 0x210188 // CHECK-NEXT: Size: 0 // CHECK-NEXT: Binding: Global // CHECK-NEXT: Type: GNU_IFunc @@ -102,26 +102,26 @@ // DISASM: Disassembly of section .text: // DISASM-EMPTY: // DISASM-NEXT: foo: -// DISASM-NEXT: 210000: c0 03 5f d6 ret +// DISASM-NEXT: 210188: ret // DISASM: bar: -// DISASM-NEXT: 210004: c0 03 5f d6 ret +// DISASM-NEXT: 21018c: ret // DISASM: _start: -// DISASM-NEXT: 210008: 06 00 00 94 bl #24 -// DISASM-NEXT: 21000c: 09 00 00 94 bl #36 -// DISASM-NEXT: 210010: 42 60 05 91 add x2, x2, #344 -// DISASM-NEXT: 210014: 42 20 06 91 add x2, x2, #392 +// DISASM-NEXT: 210190: bl #16 +// DISASM-NEXT: 210194: bl #28 +// DISASM-NEXT: 210198: add x2, x2, #344 +// DISASM-NEXT: 21019c: add x2, x2, #392 // DISASM-EMPTY: // DISASM-NEXT: Disassembly of section .plt: // DISASM-EMPTY: // DISASM-NEXT: .plt: -// DISASM-NEXT: 210020: 90 00 00 90 adrp x16, #65536 -// DISASM-NEXT: 210024: 11 02 40 f9 ldr x17, [x16] -// DISASM-NEXT: 210028: 10 02 00 91 add x16, x16, #0 -// DISASM-NEXT: 21002c: 20 02 1f d6 br x17 -// DISASM-NEXT: 210030: 90 00 00 90 adrp x16, #65536 -// DISASM-NEXT: 210034: 11 06 40 f9 ldr x17, [x16, #8] -// DISASM-NEXT: 210038: 10 22 00 91 add x16, x16, #8 -// DISASM-NEXT: 21003c: 20 02 1f d6 br x17 +// DISASM-NEXT: 2101a0: adrp x16, #65536 +// 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: 2101b4: ldr x17, [x16, #456] +// DISASM-NEXT: 2101b8: add x16, x16, #456 +// DISASM-NEXT: 2101bc: br x17 .text .type foo STT_GNU_IFUNC Index: lld/trunk/test/ELF/aarch64-gnu-ifunc2.s =================================================================== --- lld/trunk/test/ELF/aarch64-gnu-ifunc2.s +++ lld/trunk/test/ELF/aarch64-gnu-ifunc2.s @@ -1,35 +1,35 @@ # REQUIRES: aarch64 # RUN: llvm-mc -filetype=obj -triple=aarch64-none-linux-gnu %s -o %t.o # RUN: ld.lld %t.o -o %t -# RUN: llvm-objdump -d --no-show-raw-insn %t | FileCheck %s +# RUN: llvm-objdump -d --no-show-raw-insn --print-imm-hex %t | FileCheck %s # RUN: llvm-readelf -S %t | FileCheck %s --check-prefix=SEC # RUN: llvm-readobj -r %t | FileCheck %s --check-prefix=RELOC # CHECK: Disassembly of section .text: # CHECK-EMPTY: # CHECK-NEXT: myfunc: -# CHECK-NEXT: 210000: +# CHECK-NEXT: 210170: # CHECK: main: -# adrp x8, 0x220000, 0x220000 == address in .got.plt -# CHECK-NEXT: 210004: adrp x8, #65536 -# CHECK-NEXT: 210008: ldr x8, [x8] -# CHECK-NEXT: 21000c: ret +# .got.plt - page(0x210174) = 0x220190 - 0x210000 = 0x10190 +# CHECK-NEXT: 210174: adrp x8, #0x10000 +# CHECK-NEXT: 210178: ldr x8, [x8, #0x190] +# CHECK-NEXT: 21017c: ret # CHECK: Disassembly of section .plt: # CHECK-EMPTY: # CHECK-NEXT: .plt: -# adrp x16, 0x220000, 0x220000 == address in .got.plt -# CHECK-NEXT: 210010: adrp x16, #65536 -# CHECK-NEXT: 210014: ldr x17, [x16] -# CHECK-NEXT: 210018: add x16, x16, #0 -# CHECK-NEXT: 21001c: br x17 +# .got.plt - page(0x210180) = 0x220190 - 0x210000 = 0x10190 +# CHECK-NEXT: 210180: adrp x16, #0x10000 +# CHECK-NEXT: 210184: ldr x17, [x16, #0x190] +# CHECK-NEXT: 210188: add x16, x16, #0x190 +# CHECK-NEXT: 21018c: br x17 -# SEC: .got.plt PROGBITS 0000000000220000 020000 000008 00 WA 0 0 8 +# SEC: .got.plt PROGBITS 0000000000220190 000190 000008 00 WA 0 0 8 # RELOC: Relocations [ # RELOC-NEXT: Section {{.*}} .rela.dyn { -# RELOC-NEXT: 0x220000 R_AARCH64_IRELATIVE - 0x210000 +# RELOC-NEXT: 0x220190 R_AARCH64_IRELATIVE - 0x210170 # RELOC-NEXT: } # RELOC-NEXT: ] Index: lld/trunk/test/ELF/aarch64-got-weak-undef.s =================================================================== --- lld/trunk/test/ELF/aarch64-got-weak-undef.s +++ lld/trunk/test/ELF/aarch64-got-weak-undef.s @@ -6,7 +6,7 @@ // RELOC: no relocations -// CHECK: 0x00220000 00000000 00000000 +// CHECK: 0x002201a0 00000000 00000000 .globl _start _start: Index: lld/trunk/test/ELF/aarch64-ifunc-bti.s =================================================================== --- lld/trunk/test/ELF/aarch64-ifunc-bti.s +++ lld/trunk/test/ELF/aarch64-ifunc-bti.s @@ -2,7 +2,7 @@ # RUN: llvm-mc -filetype=obj -triple=aarch64-none-linux-gnu %s -o %t.o # RUN: llvm-mc -filetype=obj -triple=aarch64-none-linux-gnu %p/Inputs/aarch64-addrifunc.s -o %t1.o -# RUN: ld.lld --shared %t1.o -o %t1.so +# RUN: ld.lld --shared --soname=t1.so %t1.o -o %t1.so # RUN: ld.lld --pie %t1.so %t.o -o %t # RUN: llvm-objdump -d -mattr=+bti -triple=aarch64-linux-gnu %t | FileCheck %s @@ -11,30 +11,30 @@ # we must use bti c. # CHECK: Disassembly of section .plt: -# CHECK: 0000000000010020 .plt: -# CHECK-NEXT: 10020: 5f 24 03 d5 bti c -# CHECK-NEXT: 10024: f0 7b bf a9 stp x16, x30, [sp, #-16]! -# CHECK-NEXT: 10028: 10 01 00 90 adrp x16, #131072 -# CHECK-NEXT: 1002c: 11 0a 40 f9 ldr x17, [x16, #16] -# CHECK-NEXT: 10030: 10 42 00 91 add x16, x16, #16 -# CHECK-NEXT: 10034: 20 02 1f d6 br x17 -# CHECK-NEXT: 10038: 1f 20 03 d5 nop -# CHECK-NEXT: 1003c: 1f 20 03 d5 nop -# CHECK: 0000000000010040 func1@plt: -# CHECK-NEXT: 10040: 5f 24 03 d5 bti c -# CHECK-NEXT: 10044: 10 01 00 90 adrp x16, #131072 -# CHECK-NEXT: 10048: 11 0e 40 f9 ldr x17, [x16, #24] -# CHECK-NEXT: 1004c: 10 62 00 91 add x16, x16, #24 -# CHECK-NEXT: 10050: 20 02 1f d6 br x17 -# CHECK-NEXT: 10054: 1f 20 03 d5 nop +# CHECK: 0000000000010340 .plt: +# CHECK-NEXT: 10340: 5f 24 03 d5 bti c +# CHECK-NEXT: 10344: f0 7b bf a9 stp x16, x30, [sp, #-16]! +# CHECK-NEXT: 10348: 10 01 00 90 adrp x16, #131072 +# CHECK-NEXT: 1034c: 11 5e 42 f9 ldr x17, [x16, #1208] +# CHECK-NEXT: 10350: 10 e2 12 91 add x16, x16, #1208 +# CHECK-NEXT: 10354: 20 02 1f d6 br x17 +# CHECK-NEXT: 10358: 1f 20 03 d5 nop +# CHECK-NEXT: 1035c: 1f 20 03 d5 nop +# CHECK: 0000000000010360 func1@plt: +# CHECK-NEXT: 10360: 5f 24 03 d5 bti c +# CHECK-NEXT: 10364: 10 01 00 90 adrp x16, #131072 +# CHECK-NEXT: 10368: 11 62 42 f9 ldr x17, [x16, #1216] +# CHECK-NEXT: 1036c: 10 02 13 91 add x16, x16, #1216 +# CHECK-NEXT: 10370: 20 02 1f d6 br x17 +# CHECK-NEXT: 10374: 1f 20 03 d5 nop # CHECK-NEXT: ... -# CHECK: 0000000000010060 myfunc: -# CHECK-NEXT: 10060: 5f 24 03 d5 bti c -# CHECK-NEXT: 10064: 10 01 00 90 adrp x16, #131072 -# CHECK-NEXT: 10068: 11 12 40 f9 ldr x17, [x16, #32] -# CHECK-NEXT: 1006c: 10 82 00 91 add x16, x16, #32 -# CHECK-NEXT: 10070: 20 02 1f d6 br x17 -# CHECK-NEXT: 10074: 1f 20 03 d5 nop +# CHECK: 0000000000010380 myfunc: +# CHECK-NEXT: 10380: 5f 24 03 d5 bti c +# CHECK-NEXT: 10384: 10 01 00 90 adrp x16, #131072 +# CHECK-NEXT: 10388: 11 66 42 f9 ldr x17, [x16, #1224] +# CHECK-NEXT: 1038c: 10 22 13 91 add x16, x16, #1224 +# CHECK-NEXT: 10390: 20 02 1f d6 br x17 +# CHECK-NEXT: 10394: 1f 20 03 d5 nop .section ".note.gnu.property", "a" .long 4 Index: lld/trunk/test/ELF/aarch64-jump26-thunk.s =================================================================== --- lld/trunk/test/ELF/aarch64-jump26-thunk.s +++ lld/trunk/test/ELF/aarch64-jump26-thunk.s @@ -12,10 +12,10 @@ // CHECK: Disassembly of section .text: // CHECK-EMPTY: // CHECK-NEXT: _start: -// CHECK-NEXT: 210000: b #8 +// CHECK-NEXT: 210120: b #8 // CHECK: __AArch64AbsLongThunk_big: -// CHECK-NEXT: 210008: ldr x16, #8 -// CHECK-NEXT: 21000c: br x16 +// CHECK-NEXT: 210128: ldr x16, #8 +// CHECK-NEXT: 21012c: br x16 // CHECK: $d: -// CHECK-NEXT: 210010: 00 00 00 00 .word 0x00000000 -// CHECK-NEXT: 210014: 10 00 00 00 .word 0x00000010 +// CHECK-NEXT: 210130: 00 00 00 00 .word 0x00000000 +// CHECK-NEXT: 210134: 10 00 00 00 .word 0x00000010 Index: lld/trunk/test/ELF/aarch64-ldprel-lo19-invalid.s =================================================================== --- lld/trunk/test/ELF/aarch64-ldprel-lo19-invalid.s +++ lld/trunk/test/ELF/aarch64-ldprel-lo19-invalid.s @@ -3,7 +3,7 @@ # RUN: llvm-mc -filetype=obj -triple=aarch64-linux-none %s -o %t.o # RUN: not ld.lld -shared %t.o -o /dev/null 2>&1 | FileCheck %s -# CHECK: relocation R_AARCH64_LD_PREL_LO19 out of range: 2131072 is not in [-1048576, 1048575] +# CHECK: relocation R_AARCH64_LD_PREL_LO19 out of range: 2131192 is not in [-1048576, 1048575] ldr x8, patatino .data Index: lld/trunk/test/ELF/aarch64-lo12-alignment.s =================================================================== --- lld/trunk/test/ELF/aarch64-lo12-alignment.s +++ lld/trunk/test/ELF/aarch64-lo12-alignment.s @@ -39,7 +39,7 @@ foo8: .space 8 -// CHECK: improper alignment for relocation R_AARCH64_LDST16_ABS_LO12_NC: 0x220001 is not aligned to 2 bytes -// CHECK-NEXT: improper alignment for relocation R_AARCH64_LDST32_ABS_LO12_NC: 0x220002 is not aligned to 4 bytes -// CHECK-NEXT: improper alignment for relocation R_AARCH64_LDST64_ABS_LO12_NC: 0x220004 is not aligned to 8 bytes -// CHECK-NEXT: improper alignment for relocation R_AARCH64_LDST128_ABS_LO12_NC: 0x220008 is not aligned to 16 bytes +// CHECK: improper alignment for relocation R_AARCH64_LDST16_ABS_LO12_NC: 0x220181 is not aligned to 2 bytes +// CHECK-NEXT: improper alignment for relocation R_AARCH64_LDST32_ABS_LO12_NC: 0x220182 is not aligned to 4 bytes +// CHECK-NEXT: improper alignment for relocation R_AARCH64_LDST64_ABS_LO12_NC: 0x220184 is not aligned to 8 bytes +// CHECK-NEXT: improper alignment for relocation R_AARCH64_LDST128_ABS_LO12_NC: 0x220188 is not aligned to 16 bytes Index: lld/trunk/test/ELF/aarch64-load-alignment.s =================================================================== --- lld/trunk/test/ELF/aarch64-load-alignment.s +++ lld/trunk/test/ELF/aarch64-load-alignment.s @@ -3,7 +3,7 @@ # RUN: llvm-mc -filetype=obj -triple=aarch64-linux-none %s -o %t.o # RUN: not ld.lld -shared %t.o -o /dev/null 2>&1 | FileCheck %s -# CHECK: improper alignment for relocation R_AARCH64_LD_PREL_LO19: 0x20005 is not aligned to 4 bytes +# CHECK: improper alignment for relocation R_AARCH64_LD_PREL_LO19: 0x2007D is not aligned to 4 bytes ldr x8, patatino .data Index: lld/trunk/test/ELF/aarch64-nopic-plt.s =================================================================== --- lld/trunk/test/ELF/aarch64-nopic-plt.s +++ lld/trunk/test/ELF/aarch64-nopic-plt.s @@ -19,7 +19,7 @@ // CHECK-NEXT: Section: Undefined // CHECK: Name: foo -// CHECK-NEXT: Value: 0x210030 +// CHECK-NEXT: Value: 0x2102F0 // CHECK-NEXT: Size: 0 // CHECK-NEXT: Binding: Global // CHECK-NEXT: Type: Function Index: lld/trunk/test/ELF/aarch64-prel16.s =================================================================== --- lld/trunk/test/ELF/aarch64-prel16.s +++ lld/trunk/test/ELF/aarch64-prel16.s @@ -7,8 +7,8 @@ .globl _start _start: .data - .hword foo - . + 0x210eff - .hword foo - . + 0x1f8f02 + .hword foo - . + 0x212057 + .hword foo - . + 0x1fa05a // Note: If this test fails, it probably happens because of // the change of the address of the .data section. @@ -18,11 +18,11 @@ // RUN: llvm-objdump -s -section=.data %t2 | FileCheck %s // CHECK: Contents of section .data: -// 201000: S = 0x100, A = 0x210eff, P = 0x201000 +// 202158: S = 0x100, A = 0x212157, P = 0x202158 // S + A - P = 0xffff -// 201002: S = 0x100, A = 0x1f8f02, P = 0x201002 +// 212a5a: S = 0x100, A = 0x1fa05a, P = 0x20215a // S + A - P = 0x8000 -// CHECK-NEXT: 201000 ffff0080 +// CHECK-NEXT: 202158 ffff0080 // RUN: not ld.lld -z max-page-size=4096 %t.o %t255.o -o %t2 2>&1 | FileCheck %s --check-prefix=OVERFLOW1 // OVERFLOW1: relocation R_AARCH64_PREL16 out of range: -32769 is not in [-32768, 65535] Index: lld/trunk/test/ELF/aarch64-prel32.s =================================================================== --- lld/trunk/test/ELF/aarch64-prel32.s +++ lld/trunk/test/ELF/aarch64-prel32.s @@ -7,8 +7,8 @@ .globl _start _start: .data - .word foo - . + 0x100200eff - .word foo - . - 0x7fdff0fc + .word foo - . + 0x100202057 + .word foo - . - 0x7fdfdfa4 // Note: If this test fails, it probably happens because of // the change of the address of the .data section. @@ -18,11 +18,11 @@ // RUN: llvm-objdump -s -section=.data %t2 | FileCheck %s // CHECK: Contents of section .data: -// 201000: S = 0x100, A = 0x100200eff, P = 0x201000 +// 202158: S = 0x100, A = 0x100202057, P = 0x202158 // S + A - P = 0xffffffff -// 201004: S = 0x100, A = -0x7fdff0fc, P = 0x201004 +// 20215c: S = 0x100, A = -0x7fdfdfa4, P = 0x20215c // S + A - P = 0x80000000 -// CHECK-NEXT: 201000 ffffffff 00000080 +// CHECK-NEXT: 202158 ffffffff 00000080 // RUN: not ld.lld -z max-page-size=4096 %t.o %t255.o -o %t2 2>&1 | FileCheck %s --check-prefix=OVERFLOW1 // OVERFLOW1: relocation R_AARCH64_PREL32 out of range: -2147483649 is not in [-2147483648, 4294967295] Index: lld/trunk/test/ELF/aarch64-relative.s =================================================================== --- lld/trunk/test/ELF/aarch64-relative.s +++ lld/trunk/test/ELF/aarch64-relative.s @@ -3,6 +3,7 @@ // RUN: ld.lld %t.o -o %t.so -shared // RUN: llvm-readobj -r %t.so | FileCheck %s +.p2align 4 adr x8, .Lfoo // R_AARCH64_ADR_PREL_LO21 adrp x8, .Lfoo // R_AARCH64_ADR_PREL_PG_HI21 strb w9, [x8, :lo12:.Lfoo] // R_AARCH64_LDST8_ABS_LO12_NC Index: lld/trunk/test/ELF/aarch64-relocs.s =================================================================== --- lld/trunk/test/ELF/aarch64-relocs.s +++ lld/trunk/test/ELF/aarch64-relocs.s @@ -25,14 +25,12 @@ .asciz "blah" .size mystr, 4 -# S = 0x210012, A = 0x4, P = 0x210012 -# PAGE(S + A) = 0x210000 -# PAGE(P) = 0x210000 +# PAGE(S + A) - PAGE(P) = PAGE(210136) - PAGE(0x210132) = 0 # # CHECK: Disassembly of section .R_AARCH64_ADR_PREL_PG_H121: # CHECK-EMPTY: # CHECK-NEXT: $x.2: -# CHECK-NEXT: 210012: 01 00 00 90 adrp x1, #0 +# CHECK-NEXT: 210132: 01 00 00 90 adrp x1, #0 .section .R_AARCH64_ADD_ABS_LO12_NC,"ax",@progbits add x0, x0, :lo12:.L.str @@ -40,14 +38,13 @@ .asciz "blah" .size mystr, 4 -# S = 0x21001b, A = 0x4 -# R = (S + A) & 0xFFF = 0x1f -# R << 10 = 0x7c00 +# S = 0x21013b, A = 0x4 +# R = (S + A) & 0xFFF = 319 # # CHECK: Disassembly of section .R_AARCH64_ADD_ABS_LO12_NC: # CHECK-EMPTY: # CHECK-NEXT: $x.4: -# CHECK-NEXT: 21001b: 00 7c 00 91 add x0, x0, #31 +# CHECK-NEXT: 21013b: 00 fc 04 91 add x0, x0, #319 .section .R_AARCH64_LDST64_ABS_LO12_NC,"ax",@progbits ldr x28, [x27, :lo12:foo] @@ -55,13 +52,13 @@ .asciz "foo" .size mystr, 3 -# S = 0x210024, A = 0x4 -# R = ((S + A) & 0xFFF) << 7 = 0x00001400 -# 0x00001400 | 0xf940177c = 0xf940177c +# S = 0x210144, A = 0x4 +# R = ((S + A) & 0xFFF) << 7 = 0x0000a400 +# 0x0000a400 | 0xf940177c = 0xf940a77c # CHECK: Disassembly of section .R_AARCH64_LDST64_ABS_LO12_NC: # CHECK-EMPTY: # CHECK-NEXT: $x.6: -# CHECK-NEXT: 210024: 7c 17 40 f9 ldr x28, [x27, #40] +# CHECK-NEXT: 210144: 7c a7 40 f9 ldr x28, [x27, #328] .section .SUB,"ax",@progbits nop @@ -71,35 +68,35 @@ # CHECK: Disassembly of section .SUB: # CHECK-EMPTY: # CHECK-NEXT: $x.8: -# CHECK-NEXT: 21002c: 1f 20 03 d5 nop +# CHECK-NEXT: 21014c: 1f 20 03 d5 nop # CHECK: sub: -# CHECK-NEXT: 210030: 1f 20 03 d5 nop +# CHECK-NEXT: 210150: 1f 20 03 d5 nop .section .R_AARCH64_CALL26,"ax",@progbits call26: bl sub -# S = 0x21002c, A = 0x4, P = 0x210034 +# S = 0x21014c, A = 0x4, P = 0x210154 # R = S + A - P = -0x4 = 0xfffffffc # (R & 0x0ffffffc) >> 2 = 0x03ffffff # 0x94000000 | 0x03ffffff = 0x97ffffff # CHECK: Disassembly of section .R_AARCH64_CALL26: # CHECK-EMPTY: # CHECK-NEXT: call26: -# CHECK-NEXT: 210034: ff ff ff 97 bl #-4 +# CHECK-NEXT: 210154: ff ff ff 97 bl #-4 .section .R_AARCH64_JUMP26,"ax",@progbits jump26: b sub -# S = 0x21002c, A = 0x4, P = 0x210038 +# S = 0x21014c, A = 0x4, P = 0x210158 # R = S + A - P = -0x8 = 0xfffffff8 # (R & 0x0ffffffc) >> 2 = 0x03fffffe # 0x14000000 | 0x03fffffe = 0x17fffffe # CHECK: Disassembly of section .R_AARCH64_JUMP26: # CHECK-EMPTY: # CHECK-NEXT: jump26: -# CHECK-NEXT: 210038: fe ff ff 17 b #-8 +# CHECK-NEXT: 210158: fe ff ff 17 b #-8 .section .R_AARCH64_LDST32_ABS_LO12_NC,"ax",@progbits ldst32: @@ -108,13 +105,13 @@ .asciz "foo" .size mystr, 3 -# S = 0x21003c, A = 0x4 -# R = ((S + A) & 0xFFC) << 8 = 0x00004000 -# 0x00004000 | 0xbd4000a4 = 0xbd4040a4 +# S = 0x21015c, A = 0x4 +# R = ((S + A) & 0xFFC) << 8 = 0x00016000 +# 0x00016000 | 0xbd4000a4 = 0xbd4160a4 # CHECK: Disassembly of section .R_AARCH64_LDST32_ABS_LO12_NC: # CHECK-EMPTY: # CHECK-NEXT: ldst32: -# CHECK-NEXT: 21003c: a4 40 40 bd ldr s4, [x5, #64] +# CHECK-NEXT: 21015c: a4 60 41 bd ldr s4, [x5, #352] .section .R_AARCH64_LDST8_ABS_LO12_NC,"ax",@progbits ldst8: @@ -123,13 +120,13 @@ .asciz "foo" .size mystr, 3 -# S = 0x210044, A = 0x4 -# R = ((S + A) & 0xFFF) << 10 = 0x00012000 -# 0x00012000 | 0x398001ab = 0x398121ab +# S = 0x210164, A = 0x4 +# R = ((S + A) & 0xFFF) << 10 = 0x0005a000 +# 0x0005a000 | 0x398001ab = 0x3985a1ab # CHECK: Disassembly of section .R_AARCH64_LDST8_ABS_LO12_NC: # CHECK-EMPTY: # CHECK-NEXT: ldst8: -# CHECK-NEXT: 210044: ab 21 81 39 ldrsb x11, [x13, #72] +# CHECK-NEXT: 210164: ab a1 85 39 ldrsb x11, [x13, #360] .section .R_AARCH64_LDST128_ABS_LO12_NC,"ax",@progbits ldst128: @@ -138,15 +135,15 @@ .asciz "foo" .size mystr, 3 -# S = 0x21004c, A = 0x4 -# R = ((S + A) & 0xFF8) << 6 = 0x00001400 -# 0x00001400 | 0x3dc00274 = 0x3dc01674 +# S = 0x21016c, A = 0x4 +# R = ((S + A) & 0xFF8) << 6 = 0x00005c00 +# 0x00005c00 | 0x3dc00274 = 0x3dc05e74 # CHECK: Disassembly of section .R_AARCH64_LDST128_ABS_LO12_NC: # CHECK-EMPTY: # CHECK: ldst128: -# CHECK: 21004c: 74 16 c0 3d ldr q20, [x19, #80] +# CHECK: 21016c: 74 5e c0 3d ldr q20, [x19, #368] #foo128: -# 210050: 66 6f 6f 00 .word +# 210170: 66 6f 6f 00 .word .section .R_AARCH64_LDST16_ABS_LO12_NC,"ax",@progbits ldst16: @@ -157,15 +154,15 @@ .asciz "foo" .size mystr, 4 -# S = 0x210054, A = 0x4 -# R = ((S + A) & 0x0FFC) << 9 = 0xb000 -# 0xb000 | 0x7d400271 = 0x7d40b271 +# S = 0x210174, A = 0x4 +# R = ((S + A) & 0x0FFC) << 9 = 0x2f000 +# 0x2f000 | 0x7d400271 = 0x7d430271 # CHECK: Disassembly of section .R_AARCH64_LDST16_ABS_LO12_NC: # CHECK-EMPTY: # CHECK-NEXT: ldst16: -# CHECK-NEXT: 210054: 71 c2 40 7d ldr h17, [x19, #96] -# CHECK-NEXT: 210058: 61 c2 40 79 ldrh w1, [x19, #96] -# CHECK-NEXT: 21005c: 62 c6 40 79 ldrh w2, [x19, #98] +# CHECK-NEXT: 210174: 71 02 43 7d ldr h17, [x19, #384] +# CHECK-NEXT: 210178: 61 02 43 79 ldrh w1, [x19, #384] +# CHECK-NEXT: 21017c: 62 06 43 79 ldrh w2, [x19, #386] .section .R_AARCH64_MOVW_UABS,"ax",@progbits movz1: @@ -234,24 +231,24 @@ # CHECK: Disassembly of section .R_AARCH64_MOVW_PREL: # CHECK-EMPTY: # CHECK-NEXT: : -# CHECK-NEXT: 21009c: 21 00 80 d2 mov x1, #1 -# CHECK-NEXT: 2100a0: 01 00 80 92 mov x1, #-1 -# CHECK-NEXT: 2100a4: 21 00 80 f2 movk x1, #1 -# CHECK-NEXT: 2100a8: e1 ff 9f f2 movk x1, #65535 -# CHECK-NEXT: 2100ac: 42 00 a0 d2 mov x2, #131072 +# CHECK-NEXT: 2101bc: 21 00 80 d2 mov x1, #1 +# CHECK-NEXT: 2101c0: 01 00 80 92 mov x1, #-1 +# CHECK-NEXT: 2101c4: 21 00 80 f2 movk x1, #1 +# CHECK-NEXT: 2101c8: e1 ff 9f f2 movk x1, #65535 +# CHECK-NEXT: 2101cc: 42 00 a0 d2 mov x2, #131072 ## -65537 = 0xfffffffffffeffff -# CHECK-NEXT: 2100b0: 22 00 a0 92 mov x2, #-65537 -# CHECK-NEXT: 2100b4: 42 00 a0 f2 movk x2, #2, lsl #16 -# CHECK-NEXT: 2100b8: c2 ff bf f2 movk x2, #65534, lsl #16 +# CHECK-NEXT: 2101d0: 22 00 a0 92 mov x2, #-65537 +# CHECK-NEXT: 2101d4: 42 00 a0 f2 movk x2, #2, lsl #16 +# CHECK-NEXT: 2101d8: c2 ff bf f2 movk x2, #65534, lsl #16 ## 12884901888 = 0x300000000 -# CHECK-NEXT: 2100bc: 63 00 c0 d2 mov x3, #12884901888 +# CHECK-NEXT: 2101dc: 63 00 c0 d2 mov x3, #12884901888 ## -8589934593 = #0xfffffffdffffffff -# CHECK-NEXT: 2100c0: 43 00 c0 92 mov x3, #-8589934593 -# CHECK-NEXT: 2100c4: 63 00 c0 f2 movk x3, #3, lsl #32 -# CHECK-NEXT: 2100c8: a3 ff df f2 movk x3, #65533, lsl #32 -# CHECK-NEXT: 2100cc: 63 00 c0 d2 mov x3, #12884901888 +# CHECK-NEXT: 2101e0: 43 00 c0 92 mov x3, #-8589934593 +# CHECK-NEXT: 2101e4: 63 00 c0 f2 movk x3, #3, lsl #32 +# CHECK-NEXT: 2101e8: a3 ff df f2 movk x3, #65533, lsl #32 +# CHECK-NEXT: 2101ec: 63 00 c0 d2 mov x3, #12884901888 ## 1125899906842624 = 0x4000000000000 -# CHECK-NEXT: 2100d0: 84 00 e0 d2 mov x4, #1125899906842624 -# CHECK-NEXT: 2100d4: 84 ff ff d2 mov x4, #-1125899906842624 -# CHECK-NEXT: 2100d8: 84 00 e0 f2 movk x4, #4, lsl #48 -# CHECK-NEXT: 2100dc: 84 ff ff f2 movk x4, #65532, lsl #48 +# CHECK-NEXT: 2101f0: 84 00 e0 d2 mov x4, #1125899906842624 +# CHECK-NEXT: 2101f4: 84 ff ff d2 mov x4, #-1125899906842624 +# CHECK-NEXT: 2101f8: 84 00 e0 f2 movk x4, #4, lsl #48 +# CHECK-NEXT: 2101fc: 84 ff ff f2 movk x4, #65532, lsl #48 Index: lld/trunk/test/ELF/aarch64-relro.s =================================================================== --- lld/trunk/test/ELF/aarch64-relro.s +++ lld/trunk/test/ELF/aarch64-relro.s @@ -5,10 +5,10 @@ # CHECK: Type: PT_GNU_RELRO # CHECK-NEXT: Offset: -# CHECK-NEXT: VirtualAddress: +# CHECK-NEXT: VirtualAddress: 0x220190 # CHECK-NEXT: PhysicalAddress: # CHECK-NEXT: FileSize: -# CHECK-NEXT: MemSize: 4096 +# CHECK-NEXT: MemSize: 3696 .section .data.rel.ro,"aw",%progbits .byte 1 Index: lld/trunk/test/ELF/aarch64-thunk-section-location.s =================================================================== --- lld/trunk/test/ELF/aarch64-thunk-section-location.s +++ lld/trunk/test/ELF/aarch64-thunk-section-location.s @@ -1,7 +1,7 @@ // REQUIRES: aarch64 // RUN: llvm-mc -filetype=obj -triple=aarch64-linux-gnu %s -o %t // RUN: ld.lld %t -o %t2 2>&1 -// RUN: llvm-objdump -d -start-address=136118280 -stop-address=136118292 -triple=aarch64-linux-gnu %t2 | FileCheck %s +// RUN: llvm-objdump -d --start-address=0x81d1008 -stop-address=0x81d1014 -triple=aarch64-linux-gnu %t2 | FileCheck %s // Check that the range extension thunks are dumped close to the aarch64 branch // range of 128 MiB .section .text.1, "ax", %progbits @@ -35,7 +35,7 @@ ret // CHECK: __AArch64AbsLongThunk_high_target: -// CHECK-NEXT: 81d0008: 50 00 00 58 ldr x16, #8 -// CHECK-NEXT: 81d000c: 00 02 1f d6 br x16 +// CHECK-NEXT: 81d1008: 50 00 00 58 ldr x16, #8 +// CHECK-NEXT: 81d100c: 00 02 1f d6 br x16 // CHECK: $d: -// CHECK-NEXT: 81d0010: 00 10 21 08 .word 0x08211000 +// CHECK-NEXT: 81d1010: 00 20 21 08 .word 0x08212000 Index: lld/trunk/test/ELF/aarch64-tls-gdie.s =================================================================== --- lld/trunk/test/ELF/aarch64-tls-gdie.s +++ lld/trunk/test/ELF/aarch64-tls-gdie.s @@ -21,14 +21,14 @@ // SEC-NEXT: SHF_ALLOC // SEC-NEXT: SHF_WRITE // SEC-NEXT: ] -// SEC-NEXT: Address: 0x2200B0 +// SEC-NEXT: Address: 0x220300 -// page(0x2200B0) - page(0x20004) = 65536 -// 0x0B0 = 176 +// page(0x220300) - page(0x21023c) = 65536 +// 0x23c = 768 // CHECK: _start: -// CHECK-NEXT: 210000: nop -// CHECK-NEXT: 210004: adrp x0, #65536 -// CHECK-NEXT: 210008: ldr x0, [x0, #176] -// CHECK-NEXT: 21000c: nop -// CHECK-NEXT: 210010: nop +// CHECK-NEXT: 210238: nop +// CHECK-NEXT: 21023c: adrp x0, #65536 +// CHECK-NEXT: 210240: ldr x0, [x0, #768] +// CHECK-NEXT: 210244: nop +// CHECK-NEXT: 210248: nop Index: lld/trunk/test/ELF/aarch64-tls-gdle.s =================================================================== --- lld/trunk/test/ELF/aarch64-tls-gdle.s +++ lld/trunk/test/ELF/aarch64-tls-gdle.s @@ -11,10 +11,10 @@ # TCB size = 0x16 and foo is first element from TLS register. # CHECK-LABEL: _start: -# CHECK-NEXT: 210000: movz x0, #0, lsl #16 -# CHECK-NEXT: 210004: movk x0, #16 -# CHECK-NEXT: 210008: nop -# CHECK-NEXT: 21000c: nop +# CHECK-NEXT: 2101c8: movz x0, #0, lsl #16 +# CHECK-NEXT: 2101cc: movk x0, #16 +# CHECK-NEXT: 2101d0: nop +# CHECK-NEXT: 2101d4: nop .globl _start _start: Index: lld/trunk/test/ELF/aarch64-tls-ie.s =================================================================== --- lld/trunk/test/ELF/aarch64-tls-ie.s +++ lld/trunk/test/ELF/aarch64-tls-ie.s @@ -14,8 +14,8 @@ # RELOC-NEXT: SHF_ALLOC # RELOC-NEXT: SHF_WRITE # RELOC-NEXT: ] -# RELOC-NEXT: Address: 0x2200B0 -# RELOC-NEXT: Offset: 0x200B0 +# RELOC-NEXT: Address: 0x220338 +# RELOC-NEXT: Offset: 0x338 # RELOC-NEXT: Size: 16 # RELOC-NEXT: Link: 0 # RELOC-NEXT: Info: 0 @@ -24,8 +24,8 @@ # RELOC-NEXT: } # RELOC: Relocations [ # RELOC-NEXT: Section ({{.*}}) .rela.dyn { -# RELOC-NEXT: 0x2200B8 R_AARCH64_TLS_TPREL64 bar 0x0 -# RELOC-NEXT: 0x2200B0 R_AARCH64_TLS_TPREL64 foo 0x0 +# RELOC-NEXT: 0x220340 R_AARCH64_TLS_TPREL64 bar 0x0 +# RELOC-NEXT: 0x220338 R_AARCH64_TLS_TPREL64 foo 0x0 # RELOC-NEXT: } # RELOC-NEXT:] @@ -34,10 +34,10 @@ ## Page(0x2200B8) - Page(0x210000) = 0x10000 = 65536 ## 0x2200B8 & 0xff8 = 0xB8 = 184 # CHECK: _start: -# CHECK-NEXT: 210000: adrp x0, #65536 -# CHECK-NEXT: 210004: ldr x0, [x0, #176] -# CHECK-NEXT: 210008: adrp x0, #65536 -# CHECK-NEXT: 21000c: ldr x0, [x0, #184] +# CHECK-NEXT: 210278: adrp x0, #65536 +# CHECK-NEXT: 21027c: ldr x0, [x0, #824] +# CHECK-NEXT: 210280: adrp x0, #65536 +# CHECK-NEXT: 210284: ldr x0, [x0, #832] .globl _start _start: Index: lld/trunk/test/ELF/aarch64-tls-le.s =================================================================== --- lld/trunk/test/ELF/aarch64-tls-le.s +++ lld/trunk/test/ELF/aarch64-tls-le.s @@ -20,12 +20,12 @@ # TCB size = 0x16 and foo is first element from TLS register. #CHECK: Disassembly of section .text: #CHECK: _start: -#CHECK: 210000: 40 d0 3b d5 mrs x0, TPIDR_EL0 -#CHECK: 210004: 00 00 40 91 add x0, x0, #0, lsl #12 -#CHECK: 210008: 00 40 00 91 add x0, x0, #16 -#CHECK: 21000c: 40 d0 3b d5 mrs x0, TPIDR_EL0 -#CHECK: 210010: 00 fc 7f 91 add x0, x0, #4095, lsl #12 -#CHECK: 210014: 00 e0 3f 91 add x0, x0, #4088 +#CHECK: 210158: 40 d0 3b d5 mrs x0, TPIDR_EL0 +#CHECK: 21015c: 00 00 40 91 add x0, x0, #0, lsl #12 +#CHECK: 210160: 00 40 00 91 add x0, x0, #16 +#CHECK: 210164: 40 d0 3b d5 mrs x0, TPIDR_EL0 +#CHECK: 210168: 00 fc 7f 91 add x0, x0, #4095, lsl #12 +#CHECK: 21016c: 00 e0 3f 91 add x0, x0, #4088 .section .tbss,"awT",@nobits Index: lld/trunk/test/ELF/aarch64-tls-vaddr-align.s =================================================================== --- lld/trunk/test/ELF/aarch64-tls-vaddr-align.s +++ lld/trunk/test/ELF/aarch64-tls-vaddr-align.s @@ -0,0 +1,31 @@ +# REQUIRES: aarch64 + +# RUN: llvm-mc -filetype=obj -triple=aarch64 %s -o %t.o +# RUN: ld.lld %t.o -o %t +# RUN: llvm-readelf -S -l %t | FileCheck --check-prefix=SEC %s +# RUN: llvm-objdump -d %t | FileCheck --check-prefix=DIS %s + +# SEC: Name Type Address Off Size ES Flg Lk Inf Al +# SEC: .tdata PROGBITS 0000000000220200 000200 000001 00 WAT 0 0 1 +# SEC: .tbss NOBITS 0000000000220300 000201 000008 00 WAT 0 0 256 + +# SEC: Type Offset VirtAddr PhysAddr FileSiz MemSiz Flg Align +# SEC: TLS 0x000200 0x0000000000220200 0x0000000000220200 0x000001 0x000108 R 0x100 + +## We currently have a hack in Writer.cpp:fixSectionAlignments() to force +## p_vaddr(PT_TLS)%p_align(PT_TLS)=0, to work around bugs in some dynamic loaders. + +## a@tprel = st_value(a) + GAP + (p_vaddr-GAP_ABOVE_TP & p_align-1) = +## .tbss-.tdata + 16 + GAP_ABOVE_TP + (p_vaddr-GAP_ABOVE_TP & p_align-1) = +## 0x220300-0x220200 + 16 + (0x220200-16 & 0x100-1) = 512 +# DIS: add x0, x0, #512 + +add x0, x0, :tprel_lo12_nc:a + +.section .tdata,"awT" +.byte 0 + +.section .tbss,"awT" +.p2align 8 +a: +.quad 0 Index: lld/trunk/test/ELF/aarch64-tlsdesc.s =================================================================== --- lld/trunk/test/ELF/aarch64-tlsdesc.s +++ lld/trunk/test/ELF/aarch64-tlsdesc.s @@ -15,10 +15,10 @@ // create target specific dynamic TLSDESC relocation where addend is // the symbol VMA in tls block. -// CHECK: 10000: adrp x0, #65536 -// CHECK-NEXT: 10004: ldr x1, [x0, #144] -// CHECK-NEXT: 10008: add x0, x0, #144 -// CHECK-NEXT: 1000c: blr x1 +// CHECK: 10298: adrp x0, #65536 +// CHECK-NEXT: 1029c: ldr x1, [x0, #856] +// CHECK-NEXT: 102a0: add x0, x0, #856 +// CHECK-NEXT: 102a4: blr x1 adrp x0, :tlsdesc:local1 ldr x1, [x0, :tlsdesc_lo12:local1] @@ -26,10 +26,10 @@ .tlsdesccall a blr x1 -// CHECK: 10010: adrp x0, #65536 -// CHECK-NEXT: 10014: ldr x1, [x0, #160] -// CHECK-NEXT: 10018: add x0, x0, #160 -// CHECK-NEXT: 1001c: blr x1 +// CHECK: 102a8: adrp x0, #65536 +// CHECK-NEXT: 102ac: ldr x1, [x0, #872] +// CHECK-NEXT: 102b0: add x0, x0, #872 +// CHECK-NEXT: 102b4: blr x1 adrp x0, :tlsdesc:local2 ldr x1, [x0, :tlsdesc_lo12:local2] @@ -37,10 +37,10 @@ .tlsdesccall a blr x1 -// CHECK: 10020: adrp x0, #65536 -// CHECK-NEXT: 10024: ldr x1, [x0, #176] -// CHECK-NEXT: 10028: add x0, x0, #176 -// CHECK-NEXT: 1002c: blr x1 +// CHECK: 102b8: adrp x0, #65536 +// CHECK-NEXT: 102bc: ldr x1, [x0, #888] +// CHECK-NEXT: 102c0: add x0, x0, #888 +// CHECK-NEXT: 102c4: blr x1 .section .tbss,"awT",@nobits .type local1,@object @@ -65,8 +65,8 @@ // REL: Relocations [ // REL-NEXT: Section (4) .rela.dyn { -// REL-NEXT: 0x200A0 R_AARCH64_TLSDESC - 0x0 -// REL-NEXT: 0x200B0 R_AARCH64_TLSDESC - 0x8 -// REL-NEXT: 0x20090 R_AARCH64_TLSDESC a 0x0 +// REL-NEXT: 0x20368 R_AARCH64_TLSDESC - 0x0 +// REL-NEXT: 0x20378 R_AARCH64_TLSDESC - 0x8 +// REL-NEXT: 0x20358 R_AARCH64_TLSDESC a 0x0 // REL-NEXT: } // REL-NEXT: ] Index: lld/trunk/test/ELF/aarch64-tlsld-ldst.s =================================================================== --- lld/trunk/test/ELF/aarch64-tlsld-ldst.s +++ lld/trunk/test/ELF/aarch64-tlsld-ldst.s @@ -25,22 +25,22 @@ ldrb w0, [x8, :tprel_lo12_nc:var4] // CHECK: _start: -// CHECK-NEXT: 210000: mrs x8, TPIDR_EL0 +// CHECK-NEXT: 210158: mrs x8, TPIDR_EL0 // 0x0 + c10 = 0xc10 = tcb (16-bytes) + var0 -// CHECK-NEXT: 210004: add x8, x8, #0, lsl #12 -// CHECK-NEXT: 210008: ldr q20, [x8, #3088] +// CHECK-NEXT: 21015c: add x8, x8, #0, lsl #12 +// CHECK-NEXT: 210160: ldr q20, [x8, #3088] // 0x1000 + 0x820 = 0x1820 = tcb + var1 -// CHECK-NEXT: 21000c: add x8, x8, #1, lsl #12 -// CHECK-NEXT: 210010: ldr x0, [x8, #2080] +// CHECK-NEXT: 210164: add x8, x8, #1, lsl #12 +// CHECK-NEXT: 210168: ldr x0, [x8, #2080] // 0x2000 + 0x428 = 0x2428 = tcb + var2 -// CHECK-NEXT: 210014: add x8, x8, #2, lsl #12 -// CHECK-NEXT: 210018: ldr w0, [x8, #1064] +// CHECK-NEXT: 21016c: add x8, x8, #2, lsl #12 +// CHECK-NEXT: 210170: ldr w0, [x8, #1064] // 0x3000 + 0x2c = 0x302c = tcb + var3 -// CHECK-NEXT: 21001c: add x8, x8, #3, lsl #12 -// CHECK-NEXT: 210020: ldrh w0, [x8, #44] +// CHECK-NEXT: 210174: add x8, x8, #3, lsl #12 +// CHECK-NEXT: 210178: ldrh w0, [x8, #44] // 0x3000 + 0xc2e = 0x32ce = tcb + var4 -// CHECK-NEXT: 210024: add x8, x8, #3, lsl #12 -// CHECK-NEXT: 210028: ldrb w0, [x8, #3118] +// CHECK-NEXT: 21017c: add x8, x8, #3, lsl #12 +// CHECK-NEXT: 210180: ldrb w0, [x8, #3118] // CHECK-SYMS: 0000000000000c00 0 TLS GLOBAL DEFAULT 2 var0 // CHECK-SYMS-NEXT: 0000000000001810 4 TLS GLOBAL DEFAULT 2 var1 Index: lld/trunk/test/ELF/aarch64-tstbr14-reloc.s =================================================================== --- lld/trunk/test/ELF/aarch64-tstbr14-reloc.s +++ lld/trunk/test/ELF/aarch64-tstbr14-reloc.s @@ -7,26 +7,20 @@ # RUN: llvm-objdump -d --no-show-raw-insn %t3 | FileCheck -check-prefix=DSO %s # RUN: llvm-readobj -S -r %t3 | FileCheck -check-prefix=DSOREL %s -# 0x1101c - 28 = 0x20000 -# 0x11020 - 16 = 0x20010 -# 0x11024 - 36 = 0x20000 -# 0x11028 - 24 = 0x20010 -# CHECK: Disassembly of section .text: -# CHECK-EMPTY: -# CHECK-NEXT: _foo: -# CHECK-NEXT: 210000: nop -# CHECK-NEXT: 210004: nop -# CHECK-NEXT: 210008: nop -# CHECK-NEXT: 21000c: nop +# CHECK: _foo: +# CHECK-NEXT: 210120: nop +# CHECK-NEXT: 210124: nop +# CHECK-NEXT: 210128: nop +# CHECK-NEXT: 21012c: nop # CHECK: _bar: -# CHECK-NEXT: 210010: nop -# CHECK-NEXT: 210014: nop -# CHECK-NEXT: 210018: nop +# CHECK-NEXT: 210130: nop +# CHECK-NEXT: 210134: nop +# CHECK-NEXT: 210138: nop # CHECK: _start: -# CHECK-NEXT: 21001c: tbnz w3, #15, #-28 -# CHECK-NEXT: 210020: tbnz w3, #15, #-16 -# CHECK-NEXT: 210024: tbz x6, #45, #-36 -# CHECK-NEXT: 210028: tbz x6, #45, #-24 +# CHECK-NEXT: 21013c: tbnz w3, #15, #-28 <_foo> +# CHECK-NEXT: 210140: tbnz w3, #15, #-16 <_bar> +# CHECK-NEXT: 210144: tbz x6, #45, #-36 <_foo> +# CHECK-NEXT: 210148: tbz x6, #45, #-24 <_bar> #DSOREL: Section { #DSOREL: Index: @@ -36,8 +30,8 @@ #DSOREL-NEXT: SHF_ALLOC #DSOREL-NEXT: SHF_WRITE #DSOREL-NEXT: ] -#DSOREL-NEXT: Address: 0x30000 -#DSOREL-NEXT: Offset: 0x30000 +#DSOREL-NEXT: Address: 0x30420 +#DSOREL-NEXT: Offset: 0x420 #DSOREL-NEXT: Size: 40 #DSOREL-NEXT: Link: 0 #DSOREL-NEXT: Info: 0 @@ -46,55 +40,51 @@ #DSOREL-NEXT: } #DSOREL: Relocations [ #DSOREL-NEXT: Section ({{.*}}) .rela.plt { -#DSOREL-NEXT: 0x30018 R_AARCH64_JUMP_SLOT _foo -#DSOREL-NEXT: 0x30020 R_AARCH64_JUMP_SLOT _bar +#DSOREL-NEXT: 0x30438 R_AARCH64_JUMP_SLOT _foo +#DSOREL-NEXT: 0x30440 R_AARCH64_JUMP_SLOT _bar #DSOREL-NEXT: } #DSOREL-NEXT:] #DSO: Disassembly of section .text: #DSO-EMPTY: #DSO-NEXT: _foo: -#DSO-NEXT: 10000: nop -#DSO-NEXT: 10004: nop -#DSO-NEXT: 10008: nop -#DSO-NEXT: 1000c: nop +#DSO-NEXT: 102f8: nop +#DSO-NEXT: 102fc: nop +#DSO-NEXT: 10300: nop +#DSO-NEXT: 10304: nop #DSO: _bar: -#DSO-NEXT: 10010: nop -#DSO-NEXT: 10014: nop -#DSO-NEXT: 10018: nop +#DSO-NEXT: 10308: nop +#DSO-NEXT: 1030c: nop +#DSO-NEXT: 10310: nop #DSO: _start: -# 0x1001c + 52 = 0x10050 = PLT[1] -# 0x10020 + 64 = 0x10060 = PLT[2] -# 0x10024 + 44 = 0x10050 = PLT[1] -# 0x10028 + 56 = 0x10060 = PLT[2] -#DSO-NEXT: 1001c: tbnz w3, #15, #52 -#DSO-NEXT: 10020: tbnz w3, #15, #64 -#DSO-NEXT: 10024: tbz x6, #45, #44 -#DSO-NEXT: 10028: tbz x6, #45, #56 +#DSO-NEXT: 10314: tbnz w3, #15, #60 <_foo@plt> +#DSO-NEXT: 10318: tbnz w3, #15, #72 <_bar@plt> +#DSO-NEXT: 1031c: tbz x6, #45, #52 <_foo@plt> +#DSO-NEXT: 10320: tbz x6, #45, #64 <_bar@plt> #DSO-EMPTY: #DSO-NEXT: Disassembly of section .plt: #DSO-EMPTY: #DSO-NEXT: .plt: -#DSO-NEXT: 10030: stp x16, x30, [sp, #-16]! -#DSO-NEXT: 10034: adrp x16, #131072 -#DSO-NEXT: 10038: ldr x17, [x16, #16] -#DSO-NEXT: 1003c: add x16, x16, #16 -#DSO-NEXT: 10040: br x17 -#DSO-NEXT: 10044: nop -#DSO-NEXT: 10048: nop -#DSO-NEXT: 1004c: nop +#DSO-NEXT: 10330: stp x16, x30, [sp, #-16]! +#DSO-NEXT: 10334: adrp x16, #131072 +#DSO-NEXT: 10338: ldr x17, [x16, #1072] +#DSO-NEXT: 1033c: add x16, x16, #1072 +#DSO-NEXT: 10340: br x17 +#DSO-NEXT: 10344: nop +#DSO-NEXT: 10348: nop +#DSO-NEXT: 1034c: nop #DSO-EMPTY: #DSO-NEXT: _foo@plt: -#DSO-NEXT: 10050: adrp x16, #131072 -#DSO-NEXT: 10054: ldr x17, [x16, #24] -#DSO-NEXT: 10058: add x16, x16, #24 -#DSO-NEXT: 1005c: br x17 +#DSO-NEXT: 10350: adrp x16, #131072 +#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: 10060: adrp x16, #131072 -#DSO-NEXT: 10064: ldr x17, [x16, #32] -#DSO-NEXT: 10068: add x16, x16, #32 -#DSO-NEXT: 1006c: br x17 +#DSO-NEXT: 10360: adrp x16, #131072 +#DSO-NEXT: 10364: ldr x17, [x16, #1088] +#DSO-NEXT: 10368: add x16, x16, #1088 +#DSO-NEXT: 1036c: br x17 .globl _start _start: Index: lld/trunk/test/ELF/aarch64-undefined-weak.s =================================================================== --- lld/trunk/test/ELF/aarch64-undefined-weak.s +++ lld/trunk/test/ELF/aarch64-undefined-weak.s @@ -36,15 +36,15 @@ // CHECK: Disassembly of section .text: // CHECK-EMPTY: // 2162688 = 0x210000 -// CHECK: 210000: b #4 -// CHECK-NEXT: 210004: bl #4 -// CHECK-NEXT: 210008: b.eq #4 -// CHECK-NEXT: 21000c: cbz x1, #4 -// CHECK-NEXT: 210010: adr x0, #0 -// CHECK-NEXT: 210014: adrp x0, #0 -// CHECK: 210018: 00 00 00 00 .word 0x00000000 -// CHECK-NEXT: 21001c: 00 00 00 00 .word 0x00000000 -// CHECK-NEXT: 210020: 00 00 00 00 .word 0x00000000 -// CHECK-NEXT: 210024: 00 00 .short 0x0000 +// CHECK: 210120: b #4 +// CHECK-NEXT: 210124: bl #4 +// CHECK-NEXT: 210128: b.eq #4 +// CHECK-NEXT: 21012c: cbz x1, #4 +// CHECK-NEXT: 210130: adr x0, #0 +// CHECK-NEXT: 210134: adrp x0, #0 +// CHECK: 210138: 00 00 00 00 .word 0x00000000 +// CHECK-NEXT: 21013c: 00 00 00 00 .word 0x00000000 +// CHECK-NEXT: 210140: 00 00 00 00 .word 0x00000000 +// CHECK-NEXT: 210144: 00 00 .short 0x0000 // CHECK: $x.2: -// CHECK-NEXT: 210026: ldr x8, #0 +// CHECK-NEXT: 210146: ldr x8, #0 Index: lld/trunk/test/ELF/basic-aarch64.s =================================================================== --- lld/trunk/test/ELF/basic-aarch64.s +++ lld/trunk/test/ELF/basic-aarch64.s @@ -26,7 +26,7 @@ # CHECK-NEXT: Version: 1 # CHECK-NEXT: Entry: [[ENTRY:0x[0-9A-F]+]] # CHECK-NEXT: ProgramHeaderOffset: 0x40 -# CHECK-NEXT: SectionHeaderOffset: 0x10098 +# CHECK-NEXT: SectionHeaderOffset: 0x1B8 # CHECK-NEXT: Flags [ (0x0) # CHECK-NEXT: ] # CHECK-NEXT: HeaderSize: 64 @@ -59,8 +59,8 @@ # CHECK-NEXT: SHF_ALLOC (0x2) # CHECK-NEXT: SHF_EXECINSTR (0x4) # CHECK-NEXT: ] -# CHECK-NEXT: Address: 0x210000 -# CHECK-NEXT: Offset: 0x10000 +# CHECK-NEXT: Address: 0x210120 +# CHECK-NEXT: Offset: 0x120 # CHECK-NEXT: Size: 12 # CHECK-NEXT: Link: 0 # CHECK-NEXT: Info: 0 @@ -76,7 +76,7 @@ # CHECK-NEXT: SHF_STRINGS (0x20) # CHECK-NEXT: ] # CHECK-NEXT: Address: 0x0 -# CHECK-NEXT: Offset: 0x1000C +# CHECK-NEXT: Offset: 0x12C # CHECK-NEXT: Size: 8 # CHECK-NEXT: Link: 0 # CHECK-NEXT: Info: 0 @@ -90,7 +90,7 @@ # CHECK-NEXT: Flags [ (0x0) # CHECK-NEXT: ] # CHECK-NEXT: Address: 0x0 -# CHECK-NEXT: Offset: 0x10018 +# CHECK-NEXT: Offset: 0x138 # CHECK-NEXT: Size: 72 # CHECK-NEXT: Link: 5 # CHECK-NEXT: Info: 2 @@ -104,7 +104,7 @@ # CHECK-NEXT: Flags [ (0x0) # CHECK-NEXT: ] # CHECK-NEXT: Address: 0x0 -# CHECK-NEXT: Offset: 0x10060 +# CHECK-NEXT: Offset: 0x180 # CHECK-NEXT: Size: 42 # CHECK-NEXT: Link: 0 # CHECK-NEXT: Info: 0 @@ -118,7 +118,7 @@ # CHECK-NEXT: Flags [ (0x0) # CHECK-NEXT: ] # CHECK-NEXT: Address: 0x0 -# CHECK-NEXT: Offset: 0x1008A +# CHECK-NEXT: Offset: 0x1AA # CHECK-NEXT: Size: 13 # CHECK-NEXT: Link: 0 # CHECK-NEXT: Info: 0 @@ -138,7 +138,7 @@ # CHECK-NEXT: } # CHECK-NEXT: Symbol { # CHECK-NEXT: Name: $x.0 -# CHECK-NEXT: Value: 0x210000 +# CHECK-NEXT: Value: 0x210120 # CHECK-NEXT: Size: 0 # CHECK-NEXT: Binding: Local (0x0) # CHECK-NEXT: Type: None (0x0) @@ -159,8 +159,8 @@ # CHECK-NEXT: ProgramHeader { # CHECK-NEXT: Type: PT_PHDR (0x6) # CHECK-NEXT: Offset: 0x40 -# CHECK-NEXT: VirtualAddress: 0x200040 -# CHECK-NEXT: PhysicalAddress: 0x200040 +# CHECK-NEXT: VirtualAddress: 0x210040 +# CHECK-NEXT: PhysicalAddress: 0x210040 # CHECK-NEXT: FileSize: 224 # CHECK-NEXT: MemSize: 224 # CHECK-NEXT: Flags [ (0x4) @@ -171,8 +171,8 @@ # CHECK-NEXT: ProgramHeader { # CHECK-NEXT: Type: PT_LOAD (0x1) # CHECK-NEXT: Offset: 0x0 -# CHECK-NEXT: VirtualAddress: 0x200000 -# CHECK-NEXT: PhysicalAddress: 0x200000 +# CHECK-NEXT: VirtualAddress: 0x210000 +# CHECK-NEXT: PhysicalAddress: 0x210000 # CHECK-NEXT: FileSize: 288 # CHECK-NEXT: MemSize: 288 # CHECK-NEXT: Flags [ @@ -182,9 +182,9 @@ # CHECK-NEXT: } # CHECK-NEXT: ProgramHeader { # CHECK-NEXT: Type: PT_LOAD (0x1) -# CHECK-NEXT: Offset: 0x1000 -# CHECK-NEXT: VirtualAddress: 0x210000 -# CHECK-NEXT: PhysicalAddress: 0x210000 +# CHECK-NEXT: Offset: 0x120 +# CHECK-NEXT: VirtualAddress: 0x210120 +# CHECK-NEXT: PhysicalAddress: 0x210120 # CHECK-NEXT: FileSize: 12 # CHECK-NEXT: MemSize: 12 # CHECK-NEXT: Flags [ (0x5) Index: lld/trunk/test/ELF/global-offset-table-position-aarch64.s =================================================================== --- lld/trunk/test/ELF/global-offset-table-position-aarch64.s +++ lld/trunk/test/ELF/global-offset-table-position-aarch64.s @@ -20,7 +20,7 @@ .long _GLOBAL_OFFSET_TABLE_ - . // CHECK: Name: _GLOBAL_OFFSET_TABLE_ (11) -// CHECK-NEXT: Value: 0x30008 +// CHECK-NEXT: Value: 0x30360 // CHECK-NEXT: Size: 0 // CHECK-NEXT: Binding: Local (0x0) // CHECK-NEXT: Type: None (0x0) Index: lld/trunk/test/ELF/pack-dyn-relocs-loop.s =================================================================== --- lld/trunk/test/ELF/pack-dyn-relocs-loop.s +++ lld/trunk/test/ELF/pack-dyn-relocs-loop.s @@ -1,7 +1,7 @@ // REQUIRES: arm, aarch64 // RUN: llvm-mc -filetype=obj -triple=aarch64-none-linux-android %s -o %t.o -// RUN: ld.lld -shared %t.o -o %t.so --pack-dyn-relocs=android -z norelro +// RUN: ld.lld -shared %t.o -o %t.so --pack-dyn-relocs=android -z norelro -z separate-code // RUN: llvm-readobj -S %t.so | FileCheck %s // This test is making sure the Android packed relocation support doesn't Index: lld/trunk/test/ELF/pack-dyn-relocs.s =================================================================== --- lld/trunk/test/ELF/pack-dyn-relocs.s +++ lld/trunk/test/ELF/pack-dyn-relocs.s @@ -1,7 +1,7 @@ // REQUIRES: arm, aarch64 // RUN: llvm-mc -filetype=obj -triple=armv7a-none-linux-gnueabi %p/Inputs/arm-shared.s -o %t.a32.so.o -// RUN: ld.lld -shared %t.a32.so.o -o %t.a32.so +// RUN: ld.lld -shared %t.a32.so.o -soname=so -o %t.a32.so // RUN: llvm-mc -filetype=obj -triple=armv7a-none-linux-gnueabi %s -o %t.a32 // RUN: ld.lld -pie --pack-dyn-relocs=none %t.a32 %t.a32.so -o %t2.a32 // RUN: llvm-readobj -r %t2.a32 | FileCheck --check-prefix=UNPACKED32 %s @@ -168,42 +168,42 @@ // RELR32-NEXT: } // RUN: llvm-mc -filetype=obj -triple=aarch64-unknown-linux %p/Inputs/shared2.s -o %t.a64.so.o -// RUN: ld.lld -shared %t.a64.so.o -o %t.a64.so +// RUN: ld.lld -shared %t.a64.so.o -soname=so -o %t.a64.so // RUN: llvm-mc -filetype=obj -triple=aarch64-unknown-linux %s -o %t.a64 // RUN: ld.lld -pie --pack-dyn-relocs=none %t.a64 %t.a64.so -o %t2.a64 // RUN: llvm-readobj -r %t2.a64 | FileCheck --check-prefix=UNPACKED64 %s // UNPACKED64: Section ({{.+}}) .rela.dyn { -// UNPACKED64-NEXT: 0x20000 R_AARCH64_RELATIVE - 0x1 -// UNPACKED64-NEXT: 0x20008 R_AARCH64_RELATIVE - 0x2 -// UNPACKED64-NEXT: 0x20010 R_AARCH64_RELATIVE - 0x3 -// UNPACKED64-NEXT: 0x20018 R_AARCH64_RELATIVE - 0x4 -// UNPACKED64-NEXT: 0x20020 R_AARCH64_RELATIVE - 0x5 -// UNPACKED64-NEXT: 0x20028 R_AARCH64_RELATIVE - 0x6 -// UNPACKED64-NEXT: 0x20030 R_AARCH64_RELATIVE - 0x7 -// UNPACKED64-NEXT: 0x20038 R_AARCH64_RELATIVE - 0x8 - -// UNPACKED64-NEXT: 0x20048 R_AARCH64_RELATIVE - 0x1 -// UNPACKED64-NEXT: 0x20050 R_AARCH64_RELATIVE - 0x2 -// UNPACKED64-NEXT: 0x20058 R_AARCH64_RELATIVE - 0x3 -// UNPACKED64-NEXT: 0x20060 R_AARCH64_RELATIVE - 0x4 -// UNPACKED64-NEXT: 0x20068 R_AARCH64_RELATIVE - 0x5 -// UNPACKED64-NEXT: 0x20070 R_AARCH64_RELATIVE - 0x6 -// UNPACKED64-NEXT: 0x20078 R_AARCH64_RELATIVE - 0x7 - -// UNPACKED64-NEXT: 0x20088 R_AARCH64_RELATIVE - 0x1 -// UNPACKED64-NEXT: 0x20090 R_AARCH64_RELATIVE - 0x2 -// UNPACKED64-NEXT: 0x20098 R_AARCH64_RELATIVE - 0x3 -// UNPACKED64-NEXT: 0x200A0 R_AARCH64_RELATIVE - 0x4 -// UNPACKED64-NEXT: 0x200A8 R_AARCH64_RELATIVE - 0x5 -// UNPACKED64-NEXT: 0x200B0 R_AARCH64_RELATIVE - 0x6 -// UNPACKED64-NEXT: 0x200B8 R_AARCH64_RELATIVE - 0x7 -// UNPACKED64-NEXT: 0x200C0 R_AARCH64_RELATIVE - 0x8 -// UNPACKED64-NEXT: 0x200C8 R_AARCH64_RELATIVE - 0x9 - -// UNPACKED64-NEXT: 0x200D1 R_AARCH64_RELATIVE - 0xA -// UNPACKED64-NEXT: 0x20040 R_AARCH64_ABS64 bar2 0x1 -// UNPACKED64-NEXT: 0x20080 R_AARCH64_ABS64 zed2 0x0 +// UNPACKED64-NEXT: 0x305F0 R_AARCH64_RELATIVE - 0x1 +// UNPACKED64-NEXT: 0x305F8 R_AARCH64_RELATIVE - 0x2 +// UNPACKED64-NEXT: 0x30600 R_AARCH64_RELATIVE - 0x3 +// UNPACKED64-NEXT: 0x30608 R_AARCH64_RELATIVE - 0x4 +// UNPACKED64-NEXT: 0x30610 R_AARCH64_RELATIVE - 0x5 +// UNPACKED64-NEXT: 0x30618 R_AARCH64_RELATIVE - 0x6 +// UNPACKED64-NEXT: 0x30620 R_AARCH64_RELATIVE - 0x7 +// UNPACKED64-NEXT: 0x30628 R_AARCH64_RELATIVE - 0x8 + +// UNPACKED64-NEXT: 0x30638 R_AARCH64_RELATIVE - 0x1 +// UNPACKED64-NEXT: 0x30640 R_AARCH64_RELATIVE - 0x2 +// UNPACKED64-NEXT: 0x30648 R_AARCH64_RELATIVE - 0x3 +// UNPACKED64-NEXT: 0x30650 R_AARCH64_RELATIVE - 0x4 +// UNPACKED64-NEXT: 0x30658 R_AARCH64_RELATIVE - 0x5 +// UNPACKED64-NEXT: 0x30660 R_AARCH64_RELATIVE - 0x6 +// UNPACKED64-NEXT: 0x30668 R_AARCH64_RELATIVE - 0x7 + +// UNPACKED64-NEXT: 0x30678 R_AARCH64_RELATIVE - 0x1 +// UNPACKED64-NEXT: 0x30680 R_AARCH64_RELATIVE - 0x2 +// UNPACKED64-NEXT: 0x30688 R_AARCH64_RELATIVE - 0x3 +// UNPACKED64-NEXT: 0x30690 R_AARCH64_RELATIVE - 0x4 +// UNPACKED64-NEXT: 0x30698 R_AARCH64_RELATIVE - 0x5 +// UNPACKED64-NEXT: 0x306A0 R_AARCH64_RELATIVE - 0x6 +// UNPACKED64-NEXT: 0x306A8 R_AARCH64_RELATIVE - 0x7 +// UNPACKED64-NEXT: 0x306B0 R_AARCH64_RELATIVE - 0x8 +// UNPACKED64-NEXT: 0x306B8 R_AARCH64_RELATIVE - 0x9 + +// UNPACKED64-NEXT: 0x306C1 R_AARCH64_RELATIVE - 0xA +// UNPACKED64-NEXT: 0x30630 R_AARCH64_ABS64 bar2 0x1 +// UNPACKED64-NEXT: 0x30670 R_AARCH64_ABS64 zed2 0x0 // UNPACKED64-NEXT: } // RUN: ld.lld -pie --pack-dyn-relocs=android %t.a64 %t.a64.so -o %t3.a64 @@ -230,36 +230,36 @@ // ANDROID64-HEADERS: 0x0000000060000012 ANDROID_RELASZ [[SIZE]] // ANDROID64: Section ({{.+}}) .rela.dyn { -// ANDROID64-NEXT: 0x20000 R_AARCH64_RELATIVE - 0x1 -// ANDROID64-NEXT: 0x20008 R_AARCH64_RELATIVE - 0x2 -// ANDROID64-NEXT: 0x20010 R_AARCH64_RELATIVE - 0x3 -// ANDROID64-NEXT: 0x20018 R_AARCH64_RELATIVE - 0x4 -// ANDROID64-NEXT: 0x20020 R_AARCH64_RELATIVE - 0x5 -// ANDROID64-NEXT: 0x20028 R_AARCH64_RELATIVE - 0x6 -// ANDROID64-NEXT: 0x20030 R_AARCH64_RELATIVE - 0x7 -// ANDROID64-NEXT: 0x20038 R_AARCH64_RELATIVE - 0x8 - -// ANDROID64-NEXT: 0x20088 R_AARCH64_RELATIVE - 0x1 -// ANDROID64-NEXT: 0x20090 R_AARCH64_RELATIVE - 0x2 -// ANDROID64-NEXT: 0x20098 R_AARCH64_RELATIVE - 0x3 -// ANDROID64-NEXT: 0x200A0 R_AARCH64_RELATIVE - 0x4 -// ANDROID64-NEXT: 0x200A8 R_AARCH64_RELATIVE - 0x5 -// ANDROID64-NEXT: 0x200B0 R_AARCH64_RELATIVE - 0x6 -// ANDROID64-NEXT: 0x200B8 R_AARCH64_RELATIVE - 0x7 -// ANDROID64-NEXT: 0x200C0 R_AARCH64_RELATIVE - 0x8 -// ANDROID64-NEXT: 0x200C8 R_AARCH64_RELATIVE - 0x9 - -// ANDROID64-NEXT: 0x20048 R_AARCH64_RELATIVE - 0x1 -// ANDROID64-NEXT: 0x20050 R_AARCH64_RELATIVE - 0x2 -// ANDROID64-NEXT: 0x20058 R_AARCH64_RELATIVE - 0x3 -// ANDROID64-NEXT: 0x20060 R_AARCH64_RELATIVE - 0x4 -// ANDROID64-NEXT: 0x20068 R_AARCH64_RELATIVE - 0x5 -// ANDROID64-NEXT: 0x20070 R_AARCH64_RELATIVE - 0x6 -// ANDROID64-NEXT: 0x20078 R_AARCH64_RELATIVE - 0x7 - -// ANDROID64-NEXT: 0x200D1 R_AARCH64_RELATIVE - 0xA -// ANDROID64-NEXT: 0x20040 R_AARCH64_ABS64 bar2 0x1 -// ANDROID64-NEXT: 0x20080 R_AARCH64_ABS64 zed2 0x0 +// ANDROID64-NEXT: 0x303C0 R_AARCH64_RELATIVE - 0x1 +// ANDROID64-NEXT: 0x303C8 R_AARCH64_RELATIVE - 0x2 +// ANDROID64-NEXT: 0x303D0 R_AARCH64_RELATIVE - 0x3 +// ANDROID64-NEXT: 0x303D8 R_AARCH64_RELATIVE - 0x4 +// ANDROID64-NEXT: 0x303E0 R_AARCH64_RELATIVE - 0x5 +// ANDROID64-NEXT: 0x303E8 R_AARCH64_RELATIVE - 0x6 +// ANDROID64-NEXT: 0x303F0 R_AARCH64_RELATIVE - 0x7 +// ANDROID64-NEXT: 0x303F8 R_AARCH64_RELATIVE - 0x8 + +// ANDROID64-NEXT: 0x30448 R_AARCH64_RELATIVE - 0x1 +// ANDROID64-NEXT: 0x30450 R_AARCH64_RELATIVE - 0x2 +// ANDROID64-NEXT: 0x30458 R_AARCH64_RELATIVE - 0x3 +// ANDROID64-NEXT: 0x30460 R_AARCH64_RELATIVE - 0x4 +// ANDROID64-NEXT: 0x30468 R_AARCH64_RELATIVE - 0x5 +// ANDROID64-NEXT: 0x30470 R_AARCH64_RELATIVE - 0x6 +// ANDROID64-NEXT: 0x30478 R_AARCH64_RELATIVE - 0x7 +// ANDROID64-NEXT: 0x30480 R_AARCH64_RELATIVE - 0x8 +// ANDROID64-NEXT: 0x30488 R_AARCH64_RELATIVE - 0x9 + +// ANDROID64-NEXT: 0x30408 R_AARCH64_RELATIVE - 0x1 +// ANDROID64-NEXT: 0x30410 R_AARCH64_RELATIVE - 0x2 +// ANDROID64-NEXT: 0x30418 R_AARCH64_RELATIVE - 0x3 +// ANDROID64-NEXT: 0x30420 R_AARCH64_RELATIVE - 0x4 +// ANDROID64-NEXT: 0x30428 R_AARCH64_RELATIVE - 0x5 +// ANDROID64-NEXT: 0x30430 R_AARCH64_RELATIVE - 0x6 +// ANDROID64-NEXT: 0x30438 R_AARCH64_RELATIVE - 0x7 + +// ANDROID64-NEXT: 0x30491 R_AARCH64_RELATIVE - 0xA +// ANDROID64-NEXT: 0x30400 R_AARCH64_ABS64 bar2 0x1 +// ANDROID64-NEXT: 0x30440 R_AARCH64_ABS64 zed2 0x0 // ANDROID64-NEXT: } // RUN: ld.lld -pie --pack-dyn-relocs=relr %t.a64 %t.a64.so -o %t4.a64 @@ -290,7 +290,7 @@ // SHT_RELR section contains address/bitmap entries // encoding the offsets for relative relocation. // RAW-RELR64: Section ({{.+}}) .relr.dyn { -// RAW-RELR64-NEXT: 0x20000 +// RAW-RELR64-NEXT: 0x303F0 // RAW-RELR64-NEXT: 0x3FEFEFF // RAW-RELR64-NEXT: } @@ -298,37 +298,37 @@ // but contains only the relative relocations. // Any relative relocations with odd offset stay in SHT_RELA. // RELR64: Section ({{.+}}) .rela.dyn { -// RELR64-NEXT: 0x200D1 R_AARCH64_RELATIVE - 0xA -// RELR64-NEXT: 0x20040 R_AARCH64_ABS64 bar2 0x1 -// RELR64-NEXT: 0x20080 R_AARCH64_ABS64 zed2 0x0 +// RELR64-NEXT: 0x304C1 R_AARCH64_RELATIVE - 0xA +// RELR64-NEXT: 0x30430 R_AARCH64_ABS64 bar2 0x1 +// RELR64-NEXT: 0x30470 R_AARCH64_ABS64 zed2 0x0 // RELR64-NEXT: } // RELR64-NEXT: Section ({{.+}}) .relr.dyn { -// RELR64-NEXT: 0x20000 R_AARCH64_RELATIVE - 0x0 -// RELR64-NEXT: 0x20008 R_AARCH64_RELATIVE - 0x0 -// RELR64-NEXT: 0x20010 R_AARCH64_RELATIVE - 0x0 -// RELR64-NEXT: 0x20018 R_AARCH64_RELATIVE - 0x0 -// RELR64-NEXT: 0x20020 R_AARCH64_RELATIVE - 0x0 -// RELR64-NEXT: 0x20028 R_AARCH64_RELATIVE - 0x0 -// RELR64-NEXT: 0x20030 R_AARCH64_RELATIVE - 0x0 -// RELR64-NEXT: 0x20038 R_AARCH64_RELATIVE - 0x0 - -// RELR64-NEXT: 0x20048 R_AARCH64_RELATIVE - 0x0 -// RELR64-NEXT: 0x20050 R_AARCH64_RELATIVE - 0x0 -// RELR64-NEXT: 0x20058 R_AARCH64_RELATIVE - 0x0 -// RELR64-NEXT: 0x20060 R_AARCH64_RELATIVE - 0x0 -// RELR64-NEXT: 0x20068 R_AARCH64_RELATIVE - 0x0 -// RELR64-NEXT: 0x20070 R_AARCH64_RELATIVE - 0x0 -// RELR64-NEXT: 0x20078 R_AARCH64_RELATIVE - 0x0 - -// RELR64-NEXT: 0x20088 R_AARCH64_RELATIVE - 0x0 -// RELR64-NEXT: 0x20090 R_AARCH64_RELATIVE - 0x0 -// RELR64-NEXT: 0x20098 R_AARCH64_RELATIVE - 0x0 -// RELR64-NEXT: 0x200A0 R_AARCH64_RELATIVE - 0x0 -// RELR64-NEXT: 0x200A8 R_AARCH64_RELATIVE - 0x0 -// RELR64-NEXT: 0x200B0 R_AARCH64_RELATIVE - 0x0 -// RELR64-NEXT: 0x200B8 R_AARCH64_RELATIVE - 0x0 -// RELR64-NEXT: 0x200C0 R_AARCH64_RELATIVE - 0x0 -// RELR64-NEXT: 0x200C8 R_AARCH64_RELATIVE - 0x0 +// RELR64-NEXT: 0x303F0 R_AARCH64_RELATIVE - 0x0 +// RELR64-NEXT: 0x303F8 R_AARCH64_RELATIVE - 0x0 +// RELR64-NEXT: 0x30400 R_AARCH64_RELATIVE - 0x0 +// RELR64-NEXT: 0x30408 R_AARCH64_RELATIVE - 0x0 +// RELR64-NEXT: 0x30410 R_AARCH64_RELATIVE - 0x0 +// RELR64-NEXT: 0x30418 R_AARCH64_RELATIVE - 0x0 +// RELR64-NEXT: 0x30420 R_AARCH64_RELATIVE - 0x0 +// RELR64-NEXT: 0x30428 R_AARCH64_RELATIVE - 0x0 + +// RELR64-NEXT: 0x30438 R_AARCH64_RELATIVE - 0x0 +// RELR64-NEXT: 0x30440 R_AARCH64_RELATIVE - 0x0 +// RELR64-NEXT: 0x30448 R_AARCH64_RELATIVE - 0x0 +// RELR64-NEXT: 0x30450 R_AARCH64_RELATIVE - 0x0 +// RELR64-NEXT: 0x30458 R_AARCH64_RELATIVE - 0x0 +// RELR64-NEXT: 0x30460 R_AARCH64_RELATIVE - 0x0 +// RELR64-NEXT: 0x30468 R_AARCH64_RELATIVE - 0x0 + +// RELR64-NEXT: 0x30478 R_AARCH64_RELATIVE - 0x0 +// RELR64-NEXT: 0x30480 R_AARCH64_RELATIVE - 0x0 +// RELR64-NEXT: 0x30488 R_AARCH64_RELATIVE - 0x0 +// RELR64-NEXT: 0x30490 R_AARCH64_RELATIVE - 0x0 +// RELR64-NEXT: 0x30498 R_AARCH64_RELATIVE - 0x0 +// RELR64-NEXT: 0x304A0 R_AARCH64_RELATIVE - 0x0 +// RELR64-NEXT: 0x304A8 R_AARCH64_RELATIVE - 0x0 +// RELR64-NEXT: 0x304B0 R_AARCH64_RELATIVE - 0x0 +// RELR64-NEXT: 0x304B8 R_AARCH64_RELATIVE - 0x0 // RELR64-NEXT: } .data Index: lld/trunk/test/ELF/plt-aarch64.s =================================================================== --- lld/trunk/test/ELF/plt-aarch64.s +++ lld/trunk/test/ELF/plt-aarch64.s @@ -1,15 +1,15 @@ // REQUIRES: aarch64 // RUN: llvm-mc -filetype=obj -triple=aarch64-pc-freebsd %s -o %t.o // RUN: llvm-mc -filetype=obj -triple=aarch64-pc-freebsd %p/Inputs/plt-aarch64.s -o %t2.o -// RUN: ld.lld -shared %t2.o -o %t2.so +// RUN: ld.lld -shared %t2.o -soname=t2.so -o %t2.so // RUN: ld.lld -shared %t.o %t2.so -o %t.so // RUN: ld.lld %t.o %t2.so -o %t.exe // RUN: llvm-readobj -S -r %t.so | FileCheck --check-prefix=CHECKDSO %s // RUN: llvm-objdump -s -section=.got.plt %t.so | FileCheck --check-prefix=DUMPDSO %s -// RUN: llvm-objdump -d %t.so | FileCheck --check-prefix=DISASMDSO %s +// RUN: llvm-objdump -d --no-show-raw-insn --print-imm-hex %t.so | FileCheck --check-prefix=DISASMDSO %s // RUN: llvm-readobj -S -r %t.exe | FileCheck --check-prefix=CHECKEXE %s // RUN: llvm-objdump -s -section=.got.plt %t.exe | FileCheck --check-prefix=DUMPEXE %s -// RUN: llvm-objdump -d %t.exe | FileCheck --check-prefix=DISASMEXE %s +// RUN: llvm-objdump -d --no-show-raw-insn --print-imm-hex %t.exe | FileCheck --check-prefix=DISASMEXE %s // CHECKDSO: Name: .plt // CHECKDSO-NEXT: Type: SHT_PROGBITS @@ -17,7 +17,7 @@ // CHECKDSO-NEXT: SHF_ALLOC // CHECKDSO-NEXT: SHF_EXECINSTR // CHECKDSO-NEXT: ] -// CHECKDSO-NEXT: Address: 0x10010 +// CHECKDSO-NEXT: Address: 0x10340 // CHECKDSO-NEXT: Offset: // CHECKDSO-NEXT: Size: 80 // CHECKDSO-NEXT: Link: @@ -30,7 +30,7 @@ // CHECKDSO-NEXT: SHF_ALLOC // CHECKDSO-NEXT: SHF_WRITE // CHECKDSO-NEXT: ] -// CHECKDSO-NEXT: Address: 0x30000 +// CHECKDSO-NEXT: Address: 0x30450 // CHECKDSO-NEXT: Offset: // CHECKDSO-NEXT: Size: 48 // CHECKDSO-NEXT: Link: @@ -40,79 +40,71 @@ // CHECKDSO: Relocations [ // CHECKDSO-NEXT: Section ({{.*}}) .rela.plt { -// &(.got.plt[3]) = 0x30000 + 3 * 8 = 0x30018 -// CHECKDSO-NEXT: 0x30018 R_AARCH64_JUMP_SLOT foo +// &(.got.plt[3]) = 0x30450 + 3 * 8 = 0x30468 +// CHECKDSO-NEXT: 0x30468 R_AARCH64_JUMP_SLOT foo -// &(.got.plt[4]) = 0x30000 + 4 * 8 = 0x30020 -// CHECKDSO-NEXT: 0x30020 R_AARCH64_JUMP_SLOT bar +// &(.got.plt[4]) = 0x30450 + 4 * 8 = 0x30470 +// CHECKDSO-NEXT: 0x30470 R_AARCH64_JUMP_SLOT bar -// &(.got.plt[5]) = 0x30000 + 5 * 8 = 0x30028 -// CHECKDSO-NEXT: 0x30028 R_AARCH64_JUMP_SLOT weak +// &(.got.plt[5]) = 0x30000 + 5 * 8 = 0x30470 +// CHECKDSO-NEXT: 0x30478 R_AARCH64_JUMP_SLOT weak // CHECKDSO-NEXT: } // CHECKDSO-NEXT: ] // DUMPDSO: Contents of section .got.plt: // .got.plt[0..2] = 0 (reserved) // .got.plt[3..5] = .plt = 0x10010 -// DUMPDSO-NEXT: 30000 00000000 00000000 00000000 00000000 ................ -// DUMPDSO-NEXT: 30010 00000000 00000000 10000100 00000000 ................ -// DUMPDSO-NEXT: 30020 10000100 00000000 10000100 00000000 ................ +// DUMPDSO-NEXT: 30450 00000000 00000000 00000000 00000000 +// DUMPDSO-NEXT: 30460 00000000 00000000 40030100 00000000 +// DUMPDSO-NEXT: 30470 40030100 00000000 40030100 00000000 // DISASMDSO: _start: -// 0x10030 - 0x10000 = 0x30 = 48 -// DISASMDSO-NEXT: 10000: 0c 00 00 14 b #48 -// 0x10040 - 0x10004 = 0x3c = 60 -// DISASMDSO-NEXT: 10004: 0f 00 00 14 b #60 -// 0x10050 - 0x10008 = 0x48 = 72 -// DISASMDSO-NEXT: 10008: 12 00 00 14 b #72 +// DISASMDSO-NEXT: 10330: b #0x30 +// DISASMDSO-NEXT: 10334: b #0x3c +// DISASMDSO-NEXT: 10338: b #0x48 // DISASMDSO: foo: -// DISASMDSO-NEXT: 1000c: 1f 20 03 d5 nop +// DISASMDSO-NEXT: 1033c: nop // DISASMDSO: Disassembly of section .plt: // DISASMDSO-EMPTY: // DISASMDSO-NEXT: .plt: -// DISASMDSO-NEXT: 10010: f0 7b bf a9 stp x16, x30, [sp, #-16]! -// &(.got.plt[2]) = 0x3000 + 2 * 8 = 0x3010 -// Page(0x30010) - Page(0x10014) = 0x30000 - 0x10000 = 0x20000 = 131072 -// DISASMDSO-NEXT: 10014: 10 01 00 90 adrp x16, #131072 -// 0x3010 & 0xFFF = 0x10 = 16 -// DISASMDSO-NEXT: 10018: 11 0a 40 f9 ldr x17, [x16, #16] -// DISASMDSO-NEXT: 1001c: 10 42 00 91 add x16, x16, #16 -// DISASMDSO-NEXT: 10020: 20 02 1f d6 br x17 -// DISASMDSO-NEXT: 10024: 1f 20 03 d5 nop -// DISASMDSO-NEXT: 10028: 1f 20 03 d5 nop -// DISASMDSO-NEXT: 1002c: 1f 20 03 d5 nop +// DISASMDSO-NEXT: 10340: stp x16, x30, [sp, #-0x10]! +// &(.got.plt[2]) = 0x30450 + 2 * 8 = 0x30460 +// DISASMDSO-NEXT: 10344: adrp x16, #0x20000 +// DISASMDSO-NEXT: 10348: ldr x17, [x16, #0x460] +// DISASMDSO-NEXT: 1034c: add x16, x16, #0x460 +// DISASMDSO-NEXT: 10350: br x17 +// DISASMDSO-NEXT: 10354: nop +// DISASMDSO-NEXT: 10358: nop +// DISASMDSO-NEXT: 1035c: nop -// foo@plt -// Page(0x30018) - Page(0x10030) = 0x30000 - 0x10000 = 0x20000 = 131072 +// foo@plt 0x30468 +// &.got.plt[foo] = 0x30468 // DISASMDSO-EMPTY: // DISASMDSO-NEXT: foo@plt: -// DISASMDSO-NEXT: 10030: 10 01 00 90 adrp x16, #131072 -// 0x3018 & 0xFFF = 0x18 = 24 -// DISASMDSO-NEXT: 10034: 11 0e 40 f9 ldr x17, [x16, #24] -// DISASMDSO-NEXT: 10038: 10 62 00 91 add x16, x16, #24 -// DISASMDSO-NEXT: 1003c: 20 02 1f d6 br x17 +// DISASMDSO-NEXT: 10360: adrp x16, #0x20000 +// DISASMDSO-NEXT: 10364: ldr x17, [x16, #0x468] +// DISASMDSO-NEXT: 10368: add x16, x16, #0x468 +// DISASMDSO-NEXT: 1036c: br x17 // bar@plt -// Page(0x30020) - Page(0x10040) = 0x30000 - 0x10000 = 0x20000 = 131072 +// &.got.plt[foo] = 0x30470 // DISASMDSO-EMPTY: // DISASMDSO-NEXT: bar@plt: -// DISASMDSO-NEXT: 10040: 10 01 00 90 adrp x16, #131072 -// 0x3020 & 0xFFF = 0x20 = 32 -// DISASMDSO-NEXT: 10044: 11 12 40 f9 ldr x17, [x16, #32] -// DISASMDSO-NEXT: 10048: 10 82 00 91 add x16, x16, #32 -// DISASMDSO-NEXT: 1004c: 20 02 1f d6 br x17 +// DISASMDSO-NEXT: 10370: adrp x16, #0x20000 +// DISASMDSO-NEXT: 10374: ldr x17, [x16, #0x470] +// DISASMDSO-NEXT: 10378: add x16, x16, #0x470 +// DISASMDSO-NEXT: 1037c: br x17 // weak@plt -// Page(0x30028) - Page(0x10050) = 0x30000 - 0x10000 = 0x20000 = 131072 +// 0x30468 = 0x10000 + 131072 + 1128 // DISASMDSO-EMPTY: // DISASMDSO-NEXT: weak@plt: -// DISASMDSO-NEXT: 10050: 10 01 00 90 adrp x16, #131072 -// 0x3028 & 0xFFF = 0x28 = 40 -// DISASMDSO-NEXT: 10054: 11 16 40 f9 ldr x17, [x16, #40] -// DISASMDSO-NEXT: 10058: 10 a2 00 91 add x16, x16, #40 -// DISASMDSO-NEXT: 1005c: 20 02 1f d6 br x17 +// DISASMDSO-NEXT: 10380: adrp x16, #0x20000 +// DISASMDSO-NEXT: 10384: ldr x17, [x16, #0x478] +// DISASMDSO-NEXT: 10388: add x16, x16, #0x478 +// DISASMDSO-NEXT: 1038c: br x17 // CHECKEXE: Name: .plt // CHECKEXE-NEXT: Type: SHT_PROGBITS @@ -120,7 +112,7 @@ // CHECKEXE-NEXT: SHF_ALLOC // CHECKEXE-NEXT: SHF_EXECINSTR // CHECKEXE-NEXT: ] -// CHECKEXE-NEXT: Address: 0x210010 +// CHECKEXE-NEXT: Address: 0x2102E0 // CHECKEXE-NEXT: Offset: // CHECKEXE-NEXT: Size: 64 // CHECKEXE-NEXT: Link: @@ -133,7 +125,7 @@ // CHECKEXE-NEXT: SHF_ALLOC // CHECKEXE-NEXT: SHF_WRITE // CHECKEXE-NEXT: ] -// CHECKEXE-NEXT: Address: 0x230000 +// CHECKEXE-NEXT: Address: 0x2303F0 // CHECKEXE-NEXT: Offset: // CHECKEXE-NEXT: Size: 40 // CHECKEXE-NEXT: Link: @@ -143,64 +135,57 @@ // CHECKEXE: Relocations [ // CHECKEXE-NEXT: Section ({{.*}}) .rela.plt { -// &(.got.plt[3]) = 0x230000 + 3 * 8 = 0x230018 -// CHECKEXE-NEXT: 0x230018 R_AARCH64_JUMP_SLOT bar 0x0 +// &(.got.plt[3]) = 0x2303f0 + 3 * 8 = 0x230408 +// CHECKEXE-NEXT: 0x230408 R_AARCH64_JUMP_SLOT bar 0x0 -// &(.got.plt[4]) = 0x230000 + 4 * 8 = 0x230020 -// CHECKEXE-NEXT: 0x230020 R_AARCH64_JUMP_SLOT weak 0x0 +// &(.got.plt[4]) = 0x2303f0 + 4 * 8 = 0x230410 +// CHECKEXE-NEXT: 0x230410 R_AARCH64_JUMP_SLOT weak 0x0 // CHECKEXE-NEXT: } // CHECKEXE-NEXT: ] // DUMPEXE: Contents of section .got.plt: // .got.plt[0..2] = 0 (reserved) // .got.plt[3..4] = .plt = 0x40010 -// DUMPEXE-NEXT: 230000 00000000 00000000 00000000 00000000 -// DUMPEXE-NEXT: 230010 00000000 00000000 10002100 00000000 -// DUMPEXE-NEXT: 230020 10002100 00000000 +// DUMPEXE-NEXT: 2303f0 00000000 00000000 00000000 00000000 +// DUMPEXE-NEXT: 230400 00000000 00000000 e0022100 00000000 +// DUMPEXE-NEXT: 230410 e0022100 00000000 // DISASMEXE: _start: -// 0x21000c - 0x210000 = 0xc = 12 -// DISASMEXE-NEXT: 210000: 03 00 00 14 b #12 -// 0x210030 - 0x210004 = 0x2c = 44 -// DISASMEXE-NEXT: 210004: 0b 00 00 14 b #44 -// 0x210040 - 0x210008 = 0x38 = 56 -// DISASMEXE-NEXT: 210008: 0e 00 00 14 b #56 +// DISASMEXE-NEXT: 2102c8: b #0xc +// DISASMEXE-NEXT: 2102cc: b #0x34 +// DISASMEXE-NEXT: 2102d0: b #0x40 // DISASMEXE: foo: -// DISASMEXE-NEXT: 21000c: 1f 20 03 d5 nop +// DISASMEXE-NEXT: 2102d4: nop // DISASMEXE: Disassembly of section .plt: // DISASMEXE-EMPTY: // DISASMEXE-NEXT: .plt: -// DISASMEXE-NEXT: 210010: f0 7b bf a9 stp x16, x30, [sp, #-16]! -// &(.got.plt[2]) = 0x2200B0 + 2 * 8 = 0x2200C0 -// Page(0x230010) - Page(0x210014) = 0x230000 - 0x210000 = 0x20000 = 131072 -// DISASMEXE-NEXT: 210014: 10 01 00 90 adrp x16, #131072 -// 0x120c0 & 0xFFF = 0xC0 = 192 -// DISASMEXE-NEXT: 210018: 11 0a 40 f9 ldr x17, [x16, #16] -// DISASMEXE-NEXT: 21001c: 10 42 00 91 add x16, x16, #16 -// DISASMEXE-NEXT: 210020: 20 02 1f d6 br x17 -// DISASMEXE-NEXT: 210024: 1f 20 03 d5 nop -// DISASMEXE-NEXT: 210028: 1f 20 03 d5 nop -// DISASMEXE-NEXT: 21002c: 1f 20 03 d5 nop +// DISASMEXE-NEXT: 2102e0: stp x16, x30, [sp, #-0x10]! +// &(.got.plt[2]) = 0x2303f0 + 2 * 8 = 0x230400 +// DISASMEXE-NEXT: 2102e4: adrp x16, #0x20000 +// DISASMEXE-NEXT: 2102e8: ldr x17, [x16, #0x400] +// DISASMEXE-NEXT: 2102ec: add x16, x16, #0x400 +// DISASMEXE-NEXT: 2102f0: br x17 +// DISASMEXE-NEXT: 2102f4: nop +// DISASMEXE-NEXT: 2102f8: nop +// DISASMEXE-NEXT: 2102fc: nop // bar@plt -// Page(0x230018) - Page(0x210030) = 0x230000 - 0x210000 = 0x20000 = 131072 // DISASMEXE-EMPTY: // DISASMEXE-NEXT: bar@plt: -// DISASMEXE-NEXT: 210030: 10 01 00 90 adrp x16, #131072 -// DISASMEXE-NEXT: 210034: 11 0e 40 f9 ldr x17, [x16, #24] -// DISASMEXE-NEXT: 210038: 10 62 00 91 add x16, x16, #24 -// DISASMEXE-NEXT: 21003c: 20 02 1f d6 br x17 +// DISASMEXE-NEXT: 210300: adrp x16, #0x20000 +// DISASMEXE-NEXT: 210304: ldr x17, [x16, #0x408] +// DISASMEXE-NEXT: 210308: add x16, x16, #0x408 +// DISASMEXE-NEXT: 21030c: br x17 // weak@plt -// Page(0x230020) - Page(0x210040) = 0x230000 - 0x210000 = 0x20000 = 131072 // DISASMEXE-EMPTY: // DISASMEXE-NEXT: weak@plt: -// DISASMEXE-NEXT: 210040: 10 01 00 90 adrp x16, #131072 -// DISASMEXE-NEXT: 210044: 11 12 40 f9 ldr x17, [x16, #32] -// DISASMEXE-NEXT: 210048: 10 82 00 91 add x16, x16, #32 -// DISASMEXE-NEXT: 21004c: 20 02 1f d6 br x17 +// DISASMEXE-NEXT: 210310: adrp x16, #0x20000 +// DISASMEXE-NEXT: 210314: ldr x17, [x16, #0x410] +// DISASMEXE-NEXT: 210318: add x16, x16, #0x410 +// DISASMEXE-NEXT: 21031c: br x17 .global _start,foo,bar .weak weak Index: lld/trunk/test/ELF/pr34660.s =================================================================== --- lld/trunk/test/ELF/pr34660.s +++ lld/trunk/test/ELF/pr34660.s @@ -2,7 +2,7 @@ # RUN: llvm-mc -filetype=obj -triple=aarch64-linux-none %s -o %t.o # RUN: ld.lld --hash-style=sysv -shared %t.o -o %t -# RUN: llvm-objdump %t -d | FileCheck %s --check-prefix=DISASM +# RUN: llvm-objdump %t -d --no-show-raw-insn | FileCheck %s --check-prefix=DISASM # RUN: llvm-readelf %t --symbols | FileCheck %s --check-prefix=SYM # It would be much easier to understand/read this test if llvm-objdump would print @@ -15,10 +15,10 @@ # DISASM: Disassembly of section .text: # DISASM-EMPTY: # DISASM-NEXT: $x.0: -# DISASM-NEXT: 10000: 28 00 10 58 ldr x8, #131076 +# DISASM-NEXT: 1022c: ldr x8, #131176 # SYM: Symbol table '.symtab' -# SYM: 0000000000030004 0 NOTYPE LOCAL DEFAULT 6 patatino +# SYM: 0000000000030294 0 NOTYPE LOCAL DEFAULT 6 patatino ldr x8, patatino .data Index: lld/trunk/test/ELF/relocation-b-aarch64.test =================================================================== --- lld/trunk/test/ELF/relocation-b-aarch64.test +++ lld/trunk/test/ELF/relocation-b-aarch64.test @@ -2,7 +2,7 @@ # RUN: yaml2obj %s -o %t.o # RUN: ld.lld %t.o -o %t.out -# RUN: llvm-objdump -d -triple=aarch64-none-linux %t.out | FileCheck %s +# RUN: llvm-objdump -d --no-show-raw-insn %t.out | FileCheck %s # Check that the R_AARCH64_JUMP26 writes the branch opcode as well as the # immediate. We use this property to overwrite instructions with a branch. @@ -10,9 +10,9 @@ # CHECK: Disassembly of section .text: # CHECK-EMPTY: # CHECK-NEXT: foo: -# CHECK-NEXT: 210000: 01 00 00 14 b #4 +# CHECK-NEXT: 210120: b #4 # CHECK: bar: -# CHECK-NEXT: 210004: ff ff ff 17 b #-4 +# CHECK-NEXT: 210124: b #-4 !ELF FileHeader: