Index: lld/trunk/ELF/Writer.cpp =================================================================== --- lld/trunk/ELF/Writer.cpp +++ lld/trunk/ELF/Writer.cpp @@ -725,16 +725,15 @@ // * It is easy to check if a give branch was taken. // * It is easy two see how similar two ranks are (see getRankProximity). enum RankFlags { - RF_NOT_ADDR_SET = 1 << 18, - RF_NOT_ALLOC = 1 << 17, - RF_NOT_INTERP = 1 << 16, - RF_NOT_NOTE = 1 << 15, - RF_WRITE = 1 << 14, - RF_EXEC_WRITE = 1 << 13, - RF_EXEC = 1 << 12, - RF_RODATA = 1 << 11, - RF_NON_TLS_BSS = 1 << 10, - RF_NON_TLS_BSS_RO = 1 << 9, + RF_NOT_ADDR_SET = 1 << 17, + RF_NOT_ALLOC = 1 << 16, + RF_NOT_INTERP = 1 << 15, + RF_NOT_NOTE = 1 << 14, + RF_WRITE = 1 << 13, + RF_EXEC_WRITE = 1 << 12, + RF_EXEC = 1 << 11, + RF_RODATA = 1 << 10, + RF_NOT_RELRO = 1 << 9, RF_NOT_TLS = 1 << 8, RF_BSS = 1 << 7, RF_PPC_NOT_TOCBSS = 1 << 6, @@ -803,37 +802,26 @@ Rank |= RF_RODATA; } - // If we got here we know that both A and B are in the same PT_LOAD. - - bool IsTls = Sec->Flags & SHF_TLS; - bool IsNoBits = Sec->Type == SHT_NOBITS; + // Place RelRo sections first. After considering SHT_NOBITS below, the + // ordering is PT_LOAD(PT_GNU_RELRO(.data.rel.ro .bss.rel.ro) | .data .bss), + // where | marks where page alignment happens. An alternative ordering is + // PT_LOAD(.data | PT_GNU_RELRO( .data.rel.ro .bss.rel.ro) | .bss), but it may + // waste more bytes due to 2 alignment places. + if (!isRelroSection(Sec)) + Rank |= RF_NOT_RELRO; - // The first requirement we have is to put (non-TLS) nobits sections last. The - // reason is that the only thing the dynamic linker will see about them is a - // p_memsz that is larger than p_filesz. Seeing that it zeros the end of the - // PT_LOAD, so that has to correspond to the nobits sections. - bool IsNonTlsNoBits = IsNoBits && !IsTls; - if (IsNonTlsNoBits) - Rank |= RF_NON_TLS_BSS; - - // We place nobits RelRo sections before plain r/w ones, and non-nobits RelRo - // sections after r/w ones, so that the RelRo sections are contiguous. - bool IsRelRo = isRelroSection(Sec); - if (IsNonTlsNoBits && !IsRelRo) - Rank |= RF_NON_TLS_BSS_RO; - if (!IsNonTlsNoBits && IsRelRo) - Rank |= RF_NON_TLS_BSS_RO; + // If we got here we know that both A and B are in the same PT_LOAD. // The TLS initialization block needs to be a single contiguous block in a R/W // PT_LOAD, so stick TLS sections directly before the other RelRo R/W - // sections. The TLS NOBITS sections are placed here as they don't take up - // virtual address space in the PT_LOAD. - if (!IsTls) + // sections. Since p_filesz can be less than p_memsz, place NOBITS sections + // after PROGBITS. + if (!(Sec->Flags & SHF_TLS)) Rank |= RF_NOT_TLS; - // Within the TLS initialization block, the non-nobits sections need to appear - // first. - if (IsNoBits) + // Within TLS sections, or within other RelRo sections, or within non-RelRo + // sections, place non-NOBITS sections first. + if (Sec->Type == SHT_NOBITS) Rank |= RF_BSS; // Some architectures have additional ordering restrictions for sections 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 @@ -36,8 +36,8 @@ #DSOREL-NEXT: SHF_ALLOC #DSOREL-NEXT: SHF_WRITE #DSOREL-NEXT: ] -#DSOREL-NEXT: Address: 0x20000 -#DSOREL-NEXT: Offset: 0x20000 +#DSOREL-NEXT: Address: 0x30000 +#DSOREL-NEXT: Offset: 0x30000 #DSOREL-NEXT: Size: 48 #DSOREL-NEXT: Link: 0 #DSOREL-NEXT: Info: 0 @@ -46,9 +46,9 @@ #DSOREL-NEXT: } #DSOREL: Relocations [ #DSOREL-NEXT: Section ({{.*}}) .rela.plt { -#DSOREL-NEXT: 0x20018 R_AARCH64_JUMP_SLOT _foo -#DSOREL-NEXT: 0x20020 R_AARCH64_JUMP_SLOT _bar -#DSOREL-NEXT: 0x20028 R_AARCH64_JUMP_SLOT _dah +#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: } #DSOREL-NEXT:] @@ -72,7 +72,7 @@ #DSO-NEXT: Disassembly of section .plt: #DSO-NEXT: .plt: #DSO-NEXT: 10030: {{.*}} stp x16, x30, [sp, #-16]! -#DSO-NEXT: 10034: {{.*}} adrp x16, #65536 +#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 @@ -81,19 +81,19 @@ #DSO-NEXT: 1004c: {{.*}} nop #DSO-EMPTY: #DSO-NEXT: _foo@plt: -#DSO-NEXT: 10050: {{.*}} adrp x16, #65536 +#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-EMPTY: #DSO-NEXT: _bar@plt: -#DSO-NEXT: 10060: {{.*}} adrp x16, #65536 +#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-EMPTY: #DSO-NEXT: _dah@plt: -#DSO-NEXT: 10070: {{.*}} adrp x16, #65536 +#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 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 @@ -42,7 +42,7 @@ ret // CHECK3: t3_ff8_ldr: -// CHECK3-NEXT: 211ff8: 60 00 04 f0 adrp x0, #134279168 +// CHECK3-NEXT: 211ff8: e0 00 04 f0 adrp x0, #134344704 // CHECK3-NEXT: 211ffc: 21 00 40 f9 ldr x1, [x1] // CHECK3-NEXT: 212000: 02 08 80 15 b #100671496 // CHECK3-NEXT: 212004: c0 03 5f d6 ret @@ -63,7 +63,7 @@ ret // CHECK4: t3_ff8_str: -// CHECK4-NEXT: 4213ff8: 60 00 02 b0 adrp x0, #67162112 +// CHECK4-NEXT: 4213ff8: e0 00 02 b0 adrp x0, #67227648 // CHECK4-NEXT: 4213ffc: 21 00 40 f9 ldr x1, [x1] // CHECK4-NEXT: 4214000: 04 00 80 14 b #33554448 // CHECK4-NEXT: 4214004: c0 03 5f d6 ret @@ -102,7 +102,7 @@ ret // CHECK7: t3_ffc_ldr: -// CHECK7-NEXT: 8211ffc: 60 00 00 f0 adrp x0, #61440 +// CHECK7-NEXT: 8211ffc: e0 00 00 f0 adrp x0, #126976 // CHECK7-NEXT: 8212000: 21 00 40 f9 ldr x1, [x1] // CHECK7-NEXT: 8212004: 02 00 00 14 b #8 // CHECK7-NEXT: 8212008: c0 03 5f d6 ret 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 @@ -28,7 +28,7 @@ // CHECK-PRINT: detected cortex-a53-843419 erratum sequence starting at 211FF8 in unpatched output. // CHECK: t3_ff8_ldr: -// CHECK-NEXT: 211ff8: e0 01 00 f0 adrp x0, #258048 +// CHECK-NEXT: 211ff8: 60 02 00 f0 adrp x0, #323584 // CHECK-NEXT: 211ffc: 21 00 40 f9 ldr x1, [x1] // CHECK-FIX: 212000: 03 c8 00 14 b #204812 // CHECK-NOFIX: 212000: 00 00 40 f9 ldr x0, [x0] @@ -46,7 +46,7 @@ // CHECK-PRINT: detected cortex-a53-843419 erratum sequence starting at 213FF8 in unpatched output. // CHECK: t3_ff8_ldrsimd: -// CHECK-NEXT: 213ff8: e0 01 00 b0 adrp x0, #249856 +// CHECK-NEXT: 213ff8: 60 02 00 b0 adrp x0, #315392 // CHECK-NEXT: 213ffc: 21 00 40 bd ldr s1, [x1] // CHECK-FIX: 214000: 05 c0 00 14 b #196628 // CHECK-NOFIX: 214000: 02 04 40 f9 ldr x2, [x0, #8] @@ -64,7 +64,7 @@ // CHECK-PRINT: detected cortex-a53-843419 erratum sequence starting at 215FFC in unpatched output. // CHECK: t3_ffc_ldrpost: -// CHECK-NEXT: 215ffc: c0 01 00 f0 adrp x0, #241664 +// CHECK-NEXT: 215ffc: 40 02 00 f0 adrp x0, #307200 // CHECK-NEXT: 216000: 21 84 40 bc ldr s1, [x1], #8 // CHECK-FIX: 216004: 06 b8 00 14 b #188440 // CHECK-NOFIX: 216004: 03 08 40 f9 ldr x3, [x0, #16] @@ -82,7 +82,7 @@ // CHECK-PRINT: detected cortex-a53-843419 erratum sequence starting at 217FF8 in unpatched output. // CHECK: t3_ff8_strpre: -// CHECK-NEXT: 217ff8: c0 01 00 b0 adrp x0, #233472 +// 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] @@ -100,7 +100,7 @@ // CHECK-PRINT: detected cortex-a53-843419 erratum sequence starting at 219FFC in unpatched output. // CHECK: t3_ffc_str: -// CHECK-NEXT: 219ffc: bc 01 00 f0 adrp x28, #225280 +// 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] @@ -118,7 +118,7 @@ // CHECK-PRINT: detected cortex-a53-843419 erratum sequence starting at 21BFFC in unpatched output. // CHECK: t3_ffc_strsimd: -// CHECK-NEXT: 21bffc: bc 01 00 b0 adrp x28, #217088 +// 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] @@ -136,7 +136,7 @@ // CHECK-PRINT: detected cortex-a53-843419 erratum sequence starting at 21DFF8 in unpatched output. // CHECK: t3_ff8_ldrunpriv: -// CHECK-NEXT: 21dff8: 9d 01 00 f0 adrp x29, #208896 +// CHECK-NEXT: 21dff8: 1d 02 00 f0 adrp x29, #274432 // CHECK-NEXT: 21dffc: 41 08 40 38 ldtrb w1, [x2] // CHECK-FIX: 21e000: 0f 98 00 14 b #155708 // CHECK-NOFIX: 21e000: bd 03 40 f9 ldr x29, [x29] @@ -154,7 +154,7 @@ // CHECK-PRINT: detected cortex-a53-843419 erratum sequence starting at 21FFFC in unpatched output. // CHECK: t3_ffc_ldur: -// CHECK-NEXT: 21fffc: 9d 01 00 b0 adrp x29, #200704 +// CHECK-NEXT: 21fffc: 1d 02 00 b0 adrp x29, #266240 // CHECK-NEXT: 220000: 42 40 40 b8 ldur w2, [x2, #4] // CHECK-FIX: 220004: 10 90 00 14 b #147520 // CHECK-NOFIX: 220004: bd 07 40 f9 ldr x29, [x29, #8] @@ -171,7 +171,7 @@ // CHECK-PRINT: detected cortex-a53-843419 erratum sequence starting at 221FFC in unpatched output. // CHECK: t3_ffc_sturh: -// CHECK-NEXT: 221ffc: 72 01 00 f0 adrp x18, #192512 +// CHECK-NEXT: 221ffc: f2 01 00 f0 adrp x18, #258048 // CHECK-NEXT: 222000: 43 40 00 78 sturh w3, [x2, #4] // CHECK-FIX: 222004: 12 88 00 14 b #139336 // CHECK-NOFIX: 222004: 41 0a 40 f9 ldr x1, [x18, #16] @@ -189,7 +189,7 @@ // CHECK-PRINT: detected cortex-a53-843419 erratum sequence starting at 223FF8 in unpatched output. // CHECK: t3_ff8_literal: -// CHECK-NEXT: 223ff8: 72 01 00 b0 adrp x18, #184320 +// 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] @@ -207,7 +207,7 @@ // CHECK-PRINT: detected cortex-a53-843419 erratum sequence starting at 225FFC in unpatched output. // CHECK: t3_ffc_register: -// CHECK-NEXT: 225ffc: 4f 01 00 f0 adrp x15, #176128 +// 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] @@ -225,7 +225,7 @@ // CHECK-PRINT: detected cortex-a53-843419 erratum sequence starting at 227FF8 in unpatched output. // CHECK: t3_ff8_stp: -// CHECK-NEXT: 227ff8: 50 01 00 b0 adrp x16, #167936 +// 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] @@ -243,7 +243,7 @@ // CHECK-PRINT: detected cortex-a53-843419 erratum sequence starting at 229FFC in unpatched output. // CHECK: t3_ffc_stnp: -// CHECK-NEXT: 229ffc: 27 01 00 f0 adrp x7, #159744 +// 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] @@ -261,7 +261,7 @@ // CHECK-PRINT: detected cortex-a53-843419 erratum sequence starting at 22BFFC in unpatched output. // CHECK: t3_ffc_st1singlepost: -// CHECK-NEXT: 22bffc: 37 01 00 b0 adrp x23, #151552 +// 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] @@ -279,7 +279,7 @@ // CHECK-PRINT: detected cortex-a53-843419 erratum sequence starting at 22DFF8 in unpatched output. // CHECK: t3_ff8_st1multiple: -// CHECK-NEXT: 22dff8: 17 01 00 f0 adrp x23, #143360 +// 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] @@ -297,7 +297,7 @@ // CHECK-PRINT: detected cortex-a53-843419 erratum sequence starting at 22FFF8 in unpatched output. // CHECK: t4_ff8_ldr: -// CHECK-NEXT: 22fff8: 00 01 00 b0 adrp x0, #135168 +// CHECK-NEXT: 22fff8: 80 01 00 b0 adrp x0, #200704 // CHECK-NEXT: 22fffc: 21 00 40 f9 ldr x1, [x1] // CHECK-NEXT: 230000: 42 00 00 8b add x2, x2, x0 // CHECK-FIX: 230004: 20 50 00 14 b #82048 @@ -317,7 +317,7 @@ // CHECK-PRINT: detected cortex-a53-843419 erratum sequence starting at 231FFC in unpatched output. // CHECK: t4_ffc_str: -// CHECK-NEXT: 231ffc: fc 00 00 f0 adrp x28, #126976 +// CHECK-NEXT: 231ffc: 7c 01 00 f0 adrp x28, #192512 // CHECK-NEXT: 232000: 42 00 00 f9 str x2, [x2] // CHECK-NEXT: 232004: 20 00 02 cb sub x0, x1, x2 // CHECK-FIX: 232008: 21 48 00 14 b #73860 @@ -337,7 +337,7 @@ // CHECK-PRINT: detected cortex-a53-843419 erratum sequence starting at 233FF8 in unpatched output. // CHECK: t4_ff8_stp: -// CHECK-NEXT: 233ff8: f0 00 00 b0 adrp x16, #118784 +// CHECK-NEXT: 233ff8: 70 01 00 b0 adrp x16, #184320 // CHECK-NEXT: 233ffc: 61 08 00 a9 stp x1, x2, [x3] // CHECK-NEXT: 234000: 03 7e 10 9b mul x3, x16, x16 // CHECK-FIX: 234004: 24 40 00 14 b #65680 @@ -357,7 +357,7 @@ // CHECK-PRINT: detected cortex-a53-843419 erratum sequence starting at 235FF8 in unpatched output. // CHECK: t4_ff8_stppre: -// CHECK-NEXT: 235ff8: d0 00 00 f0 adrp x16, #110592 +// CHECK-NEXT: 235ff8: 50 01 00 f0 adrp x16, #176128 // CHECK-NEXT: 235ffc: 61 08 81 a9 stp x1, x2, [x3, #16]! // CHECK-NEXT: 236000: 03 7e 10 9b mul x3, x16, x16 // CHECK-FIX: 236004: 26 38 00 14 b #57496 @@ -377,7 +377,7 @@ // CHECK-PRINT: detected cortex-a53-843419 erratum sequence starting at 237FF8 in unpatched output. // CHECK: t4_ff8_stppost: -// CHECK-NEXT: 237ff8: d0 00 00 b0 adrp x16, #102400 +// CHECK-NEXT: 237ff8: 50 01 00 b0 adrp x16, #167936 // CHECK-NEXT: 237ffc: 61 08 81 a8 stp x1, x2, [x3], #16 // CHECK-NEXT: 238000: 03 7e 10 9b mul x3, x16, x16 // CHECK-FIX: 238004: 28 30 00 14 b #49312 @@ -397,7 +397,7 @@ // CHECK-PRINT: detected cortex-a53-843419 erratum sequence starting at 239FFC in unpatched output. // CHECK: t4_ffc_stpsimd: -// CHECK-NEXT: 239ffc: b0 00 00 f0 adrp x16, #94208 +// CHECK-NEXT: 239ffc: 30 01 00 f0 adrp x16, #159744 // CHECK-NEXT: 23a000: 61 08 00 ad stp q1, q2, [x3] // CHECK-NEXT: 23a004: 03 7e 10 9b mul x3, x16, x16 // CHECK-FIX: 23a008: 29 28 00 14 b #41124 @@ -417,7 +417,7 @@ // CHECK-PRINT: detected cortex-a53-843419 erratum sequence starting at 23BFFC in unpatched output. // CHECK: t4_ffc_stnp: -// CHECK-NEXT: 23bffc: a7 00 00 b0 adrp x7, #86016 +// CHECK-NEXT: 23bffc: 27 01 00 b0 adrp x7, #151552 // CHECK-NEXT: 23c000: 61 08 00 a8 stnp x1, x2, [x3] // CHECK-NEXT: 23c004: 1f 20 03 d5 nop // CHECK-FIX: 23c008: 2b 20 00 14 b #32940 @@ -437,7 +437,7 @@ // CHECK-PRINT: detected cortex-a53-843419 erratum sequence starting at 23DFFC in unpatched output. // CHECK: t4_ffc_st1: -// CHECK-NEXT: 23dffc: 98 00 00 f0 adrp x24, #77824 +// CHECK-NEXT: 23dffc: 18 01 00 f0 adrp x24, #143360 // CHECK-NEXT: 23e000: 20 80 00 4d st1 { v0.s }[2], [x1] // CHECK-NEXT: 23e004: f6 06 40 f9 ldr x22, [x23, #8] // CHECK-FIX: 23e008: 2d 18 00 14 b #24756 @@ -457,7 +457,7 @@ // CHECK-PRINT: detected cortex-a53-843419 erratum sequence starting at 23FFF8 in unpatched output. // CHECK: t3_ff8_ldr_once: -// CHECK-NEXT: 23fff8: 80 00 00 b0 adrp x0, #69632 +// CHECK-NEXT: 23fff8: 00 01 00 b0 adrp x0, #135168 // CHECK-NEXT: 23fffc: 20 70 82 4c st1 { v0.16b }, [x1], x2 // CHECK-FIX: 240000: 31 10 00 14 b #16580 // CHECK-NOFIX: 240000: 01 08 40 f9 ldr x1, [x0, #16] @@ -477,7 +477,7 @@ // CHECK-PRINT: detected cortex-a53-843419 erratum sequence starting at 241FF8 in unpatched output. // CHECK: t3_ff8_ldxr: -// CHECK-NEXT: 241ff8: 60 00 00 f0 adrp x0, #61440 +// CHECK-NEXT: 241ff8: e0 00 00 f0 adrp x0, #126976 // CHECK-NEXT: 241ffc: 03 7c 5f c8 ldxr x3, [x0] // CHECK-FIX: 242000: 33 08 00 14 b #8396 // CHECK-NOFIX: 242000: 01 08 40 f9 ldr x1, [x0, #16] @@ -497,7 +497,7 @@ // CHECK-PRINT: detected cortex-a53-843419 erratum sequence starting at 243FF8 in unpatched output. // CHECK: t3_ff8_stxr: -// CHECK-NEXT: 243ff8: 60 00 00 b0 adrp x0, #53248 +// CHECK-NEXT: 243ff8: e0 00 00 b0 adrp x0, #118784 // CHECK-NEXT: 243ffc: 03 7c 04 c8 stxr w4, x3, [x0] // CHECK-FIX: 244000: 35 00 00 14 b #212 // CHECK-NOFIX: 244000: 01 08 40 f9 ldr x1, [x0, #16] Index: lld/trunk/test/ELF/aarch64-cortex-a53-843419-thunk.s =================================================================== --- lld/trunk/test/ELF/aarch64-cortex-a53-843419-thunk.s +++ lld/trunk/test/ELF/aarch64-cortex-a53-843419-thunk.s @@ -44,7 +44,7 @@ // CHECK-NEXT: 11004: 02 00 00 14 b #8 // CHECK-NEXT: 11008: c0 03 5f d6 ret // CHECK: __CortexA53843419_11004: -// CHECK-NEXT: 1100c: 00 08 40 f9 ldr x0, [x0, #16] +// CHECK-NEXT: 1100c: 00 04 40 f9 ldr x0, [x0, #8] // CHECK-NEXT: 11010: fe ff ff 17 b #-8 .section .text.04, "ax", %progbits Index: lld/trunk/test/ELF/aarch64-gnu-ifunc-address-pie.s =================================================================== --- lld/trunk/test/ELF/aarch64-gnu-ifunc-address-pie.s +++ lld/trunk/test/ELF/aarch64-gnu-ifunc-address-pie.s @@ -35,13 +35,13 @@ # CHECK-NEXT: 1000c: c0 03 5f d6 ret # CHECK-NEXT: Disassembly of section .plt: # CHECK-NEXT: 0000000000010010 myfunc: -# CHECK-NEXT: 10010: 90 00 00 90 adrp x16, #65536 +# CHECK-NEXT: 10010: 10 01 00 90 adrp x16, #131072 # CHECK-NEXT: 10014: 11 02 40 f9 ldr x17, [x16] # CHECK-NEXT: 10018: 10 02 00 91 add x16, x16, #0 # CHECK-NEXT: 1001c: 20 02 1f d6 br x17 # CHECK-RELOCS: Relocations [ # CHECK-RELOCS-NEXT: Section {{.*}} .rela.plt { -# CHECK-RELOCS-NEXT: 0x20000 R_AARCH64_IRELATIVE - 0x10000 +# CHECK-RELOCS-NEXT: 0x30000 R_AARCH64_IRELATIVE - 0x10000 # CHECK-RELOCS-NEXT: } # CHECK-RELOCS-NEXT: ] 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,19 +10,19 @@ // Check that the IRELATIVE relocations are after the JUMP_SLOT in the plt // CHECK: Relocations [ // CHECK-NEXT: Section (4) .rela.plt { -// CHECK: 0x220018 R_AARCH64_JUMP_SLOT bar2 0x0 -// CHECK-NEXT: 0x220020 R_AARCH64_JUMP_SLOT zed2 0x0 -// CHECK-NEXT: 0x220028 R_AARCH64_IRELATIVE - 0x210000 -// CHECK-NEXT: 0x220030 R_AARCH64_IRELATIVE - 0x210004 +// CHECK: 0x230018 R_AARCH64_JUMP_SLOT bar2 0x0 +// CHECK-NEXT: 0x230020 R_AARCH64_JUMP_SLOT zed2 0x0 +// CHECK-NEXT: 0x230028 R_AARCH64_IRELATIVE - 0x210000 +// CHECK-NEXT: 0x230030 R_AARCH64_IRELATIVE - 0x210004 // CHECK-NEXT: } // CHECK-NEXT: ] // Check that .got.plt entries point back to PLT header // GOTPLT: Contents of section .got.plt: -// GOTPLT-NEXT: 220000 00000000 00000000 00000000 00000000 -// GOTPLT-NEXT: 220010 00000000 00000000 20002100 00000000 -// GOTPLT-NEXT: 220020 20002100 00000000 20002100 00000000 -// GOTPLT-NEXT: 220030 20002100 00000000 +// 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 // Check that the PLTRELSZ tag includes the IRELATIVE relocations // CHECK: DynamicSection [ @@ -42,7 +42,7 @@ // DISASM-NEXT: Disassembly of section .plt: // DISASM-NEXT: .plt: // DISASM-NEXT: 210020: {{.*}} stp x16, x30, [sp, #-16]! -// DISASM-NEXT: 210024: {{.*}} adrp x16, #65536 +// 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 @@ -51,21 +51,21 @@ // DISASM-NEXT: 21003c: {{.*}} nop // DISASM-EMPTY: // DISASM-NEXT: bar2@plt: -// DISASM-NEXT: 210040: {{.*}} adrp x16, #65536 +// 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-EMPTY: // DISASM-NEXT: zed2@plt: -// DISASM-NEXT: 210050: {{.*}} adrp x16, #65536 +// 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, #65536 +// 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, #65536 +// 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 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: 2065536 is not in [-1048576, 1048575] +# CHECK: relocation R_AARCH64_LD_PREL_LO19 out of range: 2131072 is not in [-1048576, 1048575] ldr x8, patatino .data 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: 0x10005 is not aligned to 4 bytes +# CHECK: improper alignment for relocation R_AARCH64_LD_PREL_LO19: 0x20005 is not aligned to 4 bytes ldr x8, patatino .data Index: lld/trunk/test/ELF/aarch64-thunk-pi.s =================================================================== --- lld/trunk/test/ELF/aarch64-thunk-pi.s +++ lld/trunk/test/ELF/aarch64-thunk-pi.s @@ -75,8 +75,8 @@ // CHECK-NEXT: .plt: // CHECK-NEXT: 10000020: f0 7b bf a9 stp x16, x30, [sp, #-16]! // CHECK-NEXT: 10000024: 10 00 00 90 adrp x16, #0 -// CHECK-NEXT: 10000028: 11 3a 40 f9 ldr x17, [x16, #112] -// CHECK-NEXT: 1000002c: 10 c2 01 91 add x16, x16, #112 +// CHECK-NEXT: 10000028: 11 92 40 f9 ldr x17, [x16, #288] +// CHECK-NEXT: 1000002c: 10 82 04 91 add x16, x16, #288 // CHECK-NEXT: 10000030: 20 02 1f d6 br x17 // CHECK-NEXT: 10000034: 1f 20 03 d5 nop // CHECK-NEXT: 10000038: 1f 20 03 d5 nop @@ -84,12 +84,12 @@ // CHECK-EMPTY: // CHECK-NEXT: high_target@plt: // CHECK-NEXT: 10000040: 10 00 00 90 adrp x16, #0 -// CHECK-NEXT: 10000044: 11 3e 40 f9 ldr x17, [x16, #120] -// CHECK-NEXT: 10000048: 10 e2 01 91 add x16, x16, #120 +// CHECK-NEXT: 10000044: 11 96 40 f9 ldr x17, [x16, #296] +// CHECK-NEXT: 10000048: 10 a2 04 91 add x16, x16, #296 // CHECK-NEXT: 1000004c: 20 02 1f d6 br x17 // CHECK-EMPTY: // CHECK-NEXT: low_target@plt: // CHECK-NEXT: 10000050: 10 00 00 90 adrp x16, #0 -// CHECK-NEXT: 10000054: 11 42 40 f9 ldr x17, [x16, #128] -// CHECK-NEXT: 10000058: 10 02 02 91 add x16, x16, #128 +// CHECK-NEXT: 10000054: 11 9a 40 f9 ldr x17, [x16, #304] +// CHECK-NEXT: 10000058: 10 c2 04 91 add x16, x16, #304 // CHECK-NEXT: 1000005c: 20 02 1f d6 br x17 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 @@ -35,8 +35,8 @@ #DSOREL-NEXT: SHF_ALLOC #DSOREL-NEXT: SHF_WRITE #DSOREL-NEXT: ] -#DSOREL-NEXT: Address: 0x20000 -#DSOREL-NEXT: Offset: 0x20000 +#DSOREL-NEXT: Address: 0x30000 +#DSOREL-NEXT: Offset: 0x30000 #DSOREL-NEXT: Size: 40 #DSOREL-NEXT: Link: 0 #DSOREL-NEXT: Info: 0 @@ -45,8 +45,8 @@ #DSOREL-NEXT: } #DSOREL: Relocations [ #DSOREL-NEXT: Section ({{.*}}) .rela.plt { -#DSOREL-NEXT: 0x20018 R_AARCH64_JUMP_SLOT _foo -#DSOREL-NEXT: 0x20020 R_AARCH64_JUMP_SLOT _bar +#DSOREL-NEXT: 0x30018 R_AARCH64_JUMP_SLOT _foo +#DSOREL-NEXT: 0x30020 R_AARCH64_JUMP_SLOT _bar #DSOREL-NEXT: } #DSOREL-NEXT:] @@ -72,7 +72,7 @@ #DSO-NEXT: Disassembly of section .plt: #DSO-NEXT: .plt: #DSO-NEXT: 10030: {{.*}} stp x16, x30, [sp, #-16]! -#DSO-NEXT: 10034: {{.*}} adrp x16, #65536 +#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 @@ -81,13 +81,13 @@ #DSO-NEXT: 1004c: {{.*}} nop #DSO-EMPTY: #DSO-NEXT: _foo@plt: -#DSO-NEXT: 10050: {{.*}} adrp x16, #65536 +#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-EMPTY: #DSO-NEXT: _bar@plt: -#DSO-NEXT: 10060: {{.*}} adrp x16, #65536 +#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 Index: lld/trunk/test/ELF/amdgpu-relocs.s =================================================================== --- lld/trunk/test/ELF/amdgpu-relocs.s +++ lld/trunk/test/ELF/amdgpu-relocs.s @@ -113,5 +113,5 @@ # OBJDUMP: d0f8ffff ffffffff # OBJDUMP: Contents of section nonalloc: -# OBJDUMP-NEXT: 0000 00000000 04480000 00000000 08440000 -# OBJDUMP-NEXT: 00000000 0c400000 +# OBJDUMP-NEXT: 0000 00000000 14380000 00000000 18340000 +# OBJDUMP-NEXT: 00000000 1c300000 Index: lld/trunk/test/ELF/arm-abs32-dyn.s =================================================================== --- lld/trunk/test/ELF/arm-abs32-dyn.s +++ lld/trunk/test/ELF/arm-abs32-dyn.s @@ -18,8 +18,8 @@ // RUN: llvm-readobj -symbols -dyn-relocations %t.so | FileCheck %s // CHECK: Dynamic Relocations { -// CHECK-NEXT: 0x1004 R_ARM_RELATIVE -// CHECK-NEXT: 0x1000 R_ARM_ABS32 foo 0x0 +// CHECK-NEXT: 0x2004 R_ARM_RELATIVE +// CHECK-NEXT: 0x2000 R_ARM_ABS32 foo 0x0 // CHECK-NEXT: } // CHECK: Symbols [ Index: lld/trunk/test/ELF/arm-exidx-shared.s =================================================================== --- lld/trunk/test/ELF/arm-exidx-shared.s +++ lld/trunk/test/ELF/arm-exidx-shared.s @@ -38,7 +38,7 @@ // CHECK: Relocations [ // CHECK-NEXT: Section {{.*}} .rel.plt { -// CHECK-NEXT: 0x200C R_ARM_JUMP_SLOT __gxx_personality_v0 +// CHECK-NEXT: 0x300C R_ARM_JUMP_SLOT __gxx_personality_v0 // CHECK-EXTAB: Contents of section .ARM.extab: // 0x0210 + 0x0e20 = 0x1030 = __gxx_personality_v0(PLT) Index: lld/trunk/test/ELF/arm-fpic-got.s =================================================================== --- lld/trunk/test/ELF/arm-fpic-got.s +++ lld/trunk/test/ELF/arm-fpic-got.s @@ -36,7 +36,7 @@ // CHECK-NEXT: SHF_ALLOC // CHECK-NEXT: SHF_WRITE // CHECK-NEXT: ] -// CHECK-NEXT: Address: 0x13000 +// CHECK-NEXT: Address: 0x12000 // CHECK-NEXT: Offset: // CHECK-NEXT: Size: 4 // CHECK-NEXT: Link: @@ -45,7 +45,7 @@ // CHECK-NEXT: EntrySize: // SYMBOLS: Name: val -// SYMBOLS-NEXT: Value: 0x12000 +// SYMBOLS-NEXT: Value: 0x13000 // SYMBOLS-NEXT: Size: 4 // SYMBOLS-NEXT: Binding: Global // SYMBOLS-NEXT: Type: Object @@ -59,5 +59,5 @@ // CODE-NEXT: 11008: 00 00 90 e5 ldr r0, [r0] // CODE-NEXT: 1100c: 1e ff 2f e1 bx lr // CODE: $d.1: -// 0x11004 + 0x1ff4 + 8 = 0x13000 = .got -// CODE-NEXT: 11010: f4 1f 00 00 +// 0x11004 + 0x0ff4 + 8 = 0x12000 = .got +// CODE-NEXT: 11010: f4 0f 00 00 Index: lld/trunk/test/ELF/arm-gnu-ifunc-plt.s =================================================================== --- lld/trunk/test/ELF/arm-gnu-ifunc-plt.s +++ lld/trunk/test/ELF/arm-gnu-ifunc-plt.s @@ -10,23 +10,23 @@ // Check that the IRELATIVE relocations are last in the .got // CHECK: Relocations [ // CHECK-NEXT: Section (4) .rel.dyn { -// CHECK-NEXT: 0x13078 R_ARM_GLOB_DAT bar2 0x0 -// CHECK-NEXT: 0x1307C R_ARM_GLOB_DAT zed2 0x0 -// CHECK-NEXT: 0x13080 R_ARM_IRELATIVE - 0x0 -// CHECK-NEXT: 0x13084 R_ARM_IRELATIVE - 0x0 +// CHECK-NEXT: 0x12078 R_ARM_GLOB_DAT bar2 0x0 +// CHECK-NEXT: 0x1207C R_ARM_GLOB_DAT zed2 0x0 +// CHECK-NEXT: 0x12080 R_ARM_IRELATIVE - 0x0 +// CHECK-NEXT: 0x12084 R_ARM_IRELATIVE - 0x0 // CHECK-NEXT: } // CHECK-NEXT: Section (5) .rel.plt { -// CHECK-NEXT: 0x1200C R_ARM_JUMP_SLOT bar2 0x0 -// CHECK-NEXT: 0x12010 R_ARM_JUMP_SLOT zed2 0x0 +// CHECK-NEXT: 0x1300C R_ARM_JUMP_SLOT bar2 0x0 +// CHECK-NEXT: 0x13010 R_ARM_JUMP_SLOT zed2 0x0 // CHECK-NEXT: } // CHECK-NEXT: ] // Check that the GOT entries refer back to the ifunc resolver -// GOTPLT: Contents of section .got.plt: -// GOTPLT-NEXT: 12000 00000000 00000000 00000000 20100100 -// GOTPLT-NEXT: 12010 20100100 // GOTPLT: Contents of section .got: -// GOTPLT-NEXT: 13078 00000000 00000000 00100100 04100100 +// GOTPLT-NEXT: 12078 00000000 00000000 00100100 04100100 +// GOTPLT: Contents of section .got.plt: +// GOTPLT-NEXT: 13000 00000000 00000000 00000000 20100100 +// GOTPLT-NEXT: 13010 20100100 // DISASM: Disassembly of section .text: // DISASM-NEXT: foo: @@ -45,7 +45,7 @@ // DISASM-NEXT: $a: // DISASM-NEXT: 11020: 04 e0 2d e5 str lr, [sp, #-4]! // DISASM-NEXT: 11024: 00 e6 8f e2 add lr, pc, #0, #12 -// DISASM-NEXT: 11028: 00 ea 8e e2 add lr, lr, #0, #20 +// DISASM-NEXT: 11028: 01 ea 8e e2 add lr, lr, #4096 // DISASM-NEXT: 1102c: dc ff be e5 ldr pc, [lr, #4060]! // DISASM: $d: // DISASM-NEXT: 11030: d4 d4 d4 d4 .word 0xd4d4d4d4 @@ -54,25 +54,25 @@ // DISASM-NEXT: 1103c: d4 d4 d4 d4 .word 0xd4d4d4d4 // DISASM: $a: // DISASM-NEXT: 11040: 00 c6 8f e2 add r12, pc, #0, #12 -// DISASM-NEXT: 11044: 00 ca 8c e2 add r12, r12, #0, #20 +// DISASM-NEXT: 11044: 01 ca 8c e2 add r12, r12, #4096 // DISASM-NEXT: 11048: c4 ff bc e5 ldr pc, [r12, #4036]! // DISASM: $d: // DISASM-NEXT: 1104c: d4 d4 d4 d4 .word 0xd4d4d4d4 // DISASM: $a: // DISASM-NEXT: 11050: 00 c6 8f e2 add r12, pc, #0, #12 -// DISASM-NEXT: 11054: 00 ca 8c e2 add r12, r12, #0, #20 +// DISASM-NEXT: 11054: 01 ca 8c e2 add r12, r12, #4096 // DISASM-NEXT: 11058: b8 ff bc e5 ldr pc, [r12, #4024]! // DISASM: $d: // DISASM-NEXT: 1105c: d4 d4 d4 d4 .word 0xd4d4d4d4 // DISASM: $a: // DISASM-NEXT: 11060: 00 c6 8f e2 add r12, pc, #0, #12 -// DISASM-NEXT: 11064: 02 ca 8c e2 add r12, r12, #8192 +// DISASM-NEXT: 11064: 01 ca 8c e2 add r12, r12, #4096 // DISASM-NEXT: 11068: 18 f0 bc e5 ldr pc, [r12, #24]! // DISASM: $d: // DISASM-NEXT: 1106c: d4 d4 d4 d4 .word 0xd4d4d4d4 // DISASM: $a: // DISASM-NEXT: 11070: 00 c6 8f e2 add r12, pc, #0, #12 -// DISASM-NEXT: 11074: 02 ca 8c e2 add r12, r12, #8192 +// DISASM-NEXT: 11074: 01 ca 8c e2 add r12, r12, #4096 // DISASM-NEXT: 11078: 0c f0 bc e5 ldr pc, [r12, #12]! // DISASM: $d: // DISASM-NEXT: 1107c: d4 d4 d4 d4 .word 0xd4d4d4d4 Index: lld/trunk/test/ELF/arm-pie-relative.s =================================================================== --- lld/trunk/test/ELF/arm-pie-relative.s +++ lld/trunk/test/ELF/arm-pie-relative.s @@ -19,7 +19,7 @@ // CHECK: Relocations [ // CHECK-NEXT: Section (4) .rel.dyn { -// CHECK-NEXT: 0x3058 R_ARM_RELATIVE +// CHECK-NEXT: 0x2058 R_ARM_RELATIVE // GOT: Contents of section .got: -// GOT-NEXT: 3058 00200000 +// GOT-NEXT: 2058 00300000 Index: lld/trunk/test/ELF/arm-plt-reloc.s =================================================================== --- lld/trunk/test/ELF/arm-plt-reloc.s +++ lld/trunk/test/ELF/arm-plt-reloc.s @@ -52,7 +52,7 @@ // DSO-NEXT: 1020: 04 e0 2d e5 str lr, [sp, #-4]! // (0x1024 + 8) + (0 RoR 12) + (0 RoR 20) + (0xfdc) = 0x2008 = .got.plt[3] // DSO-NEXT: 1024: 00 e6 8f e2 add lr, pc, #0, #12 -// DSO-NEXT: 1028: 00 ea 8e e2 add lr, lr, #0, #20 +// DSO-NEXT: 1028: 01 ea 8e e2 add lr, lr, #4096 // DSO-NEXT: 102c: dc ff be e5 ldr pc, [lr, #4060]! // DSO: $d: // DSO-NEXT: 1030: d4 d4 d4 d4 .word 0xd4d4d4d4 @@ -62,21 +62,21 @@ // DSO: $a: // (0x1040 + 8) + (0 RoR 12) + (0 RoR 20) + (0xfc4) = 0x200c // DSO-NEXT: 1040: 00 c6 8f e2 add r12, pc, #0, #12 -// DSO-NEXT: 1044: 00 ca 8c e2 add r12, r12, #0, #20 +// DSO-NEXT: 1044: 01 ca 8c e2 add r12, r12, #4096 // DSO-NEXT: 1048: c4 ff bc e5 ldr pc, [r12, #4036]! // DSO: $d: // DSO-NEXT: 104c: d4 d4 d4 d4 .word 0xd4d4d4d4 // DSO: $a: // (0x1050 + 8) + (0 RoR 12) + (0 RoR 20) + (0xfb8) = 0x2010 // DSO-NEXT: 1050: 00 c6 8f e2 add r12, pc, #0, #12 -// DSO-NEXT: 1054: 00 ca 8c e2 add r12, r12, #0, #20 +// DSO-NEXT: 1054: 01 ca 8c e2 add r12, r12, #4096 // DSO-NEXT: 1058: b8 ff bc e5 ldr pc, [r12, #4024]! // DSO: $d: // DSO-NEXT: 105c: d4 d4 d4 d4 .word 0xd4d4d4d4 // DSO: $a: // (0x1060 + 8) + (0 RoR 12) + (0 RoR 20) + (0xfac) = 0x2014 // DSO-NEXT: 1060: 00 c6 8f e2 add r12, pc, #0, #12 -// DSO-NEXT: 1064: 00 ca 8c e2 add r12, r12, #0, #20 +// DSO-NEXT: 1064: 01 ca 8c e2 add r12, r12, #4096 // DSO-NEXT: 1068: ac ff bc e5 ldr pc, [r12, #4012]! // DSO: $d: // DSO-NEXT: 106c: d4 d4 d4 d4 .word 0xd4d4d4d4 @@ -88,7 +88,7 @@ // DSOREL-NEXT: SHF_ALLOC // DSOREL-NEXT: SHF_WRITE // DSOREL-NEXT: ] -// DSOREL-NEXT: Address: 0x2000 +// DSOREL-NEXT: Address: 0x3000 // DSOREL-NEXT: Offset: // DSOREL-NEXT: Size: 24 // DSOREL-NEXT: Link: @@ -97,9 +97,9 @@ // DSOREL-NEXT: EntrySize: // DSOREL: Relocations [ // DSOREL-NEXT: Section {{.*}} .rel.plt { -// DSOREL-NEXT: 0x200C R_ARM_JUMP_SLOT func1 0x0 -// DSOREL-NEXT: 0x2010 R_ARM_JUMP_SLOT func2 0x0 -// DSOREL-NEXT: 0x2014 R_ARM_JUMP_SLOT func3 0x0 +// DSOREL-NEXT: 0x300C R_ARM_JUMP_SLOT func1 0x0 +// DSOREL-NEXT: 0x3010 R_ARM_JUMP_SLOT func2 0x0 +// DSOREL-NEXT: 0x3014 R_ARM_JUMP_SLOT func3 0x0 // Test a large separation between the .plt and .got.plt // The .got.plt and .plt displacement is large but still within the range Index: lld/trunk/test/ELF/arm-thumb-interwork-shared.s =================================================================== --- lld/trunk/test/ELF/arm-thumb-interwork-shared.s +++ lld/trunk/test/ELF/arm-thumb-interwork-shared.s @@ -33,7 +33,7 @@ // PLT-NEXT: $a: // PLT-NEXT: 1020: 04 e0 2d e5 str lr, [sp, #-4]! // PLT-NEXT: 1024: 00 e6 8f e2 add lr, pc, #0, #12 -// PLT-NEXT: 1028: 00 ea 8e e2 add lr, lr, #0, #20 +// PLT-NEXT: 1028: 01 ea 8e e2 add lr, lr, #4096 // PLT-NEXT: 102c: dc ff be e5 ldr pc, [lr, #4060]! // PLT: $d: // PLT-NEXT: 1030: d4 d4 d4 d4 .word 0xd4d4d4d4 @@ -42,13 +42,13 @@ // PLT-NEXT: 103c: d4 d4 d4 d4 .word 0xd4d4d4d4 // PLT: $a: // PLT-NEXT: 1040: 00 c6 8f e2 add r12, pc, #0, #12 -// PLT-NEXT: 1044: 00 ca 8c e2 add r12, r12, #0, #20 +// PLT-NEXT: 1044: 01 ca 8c e2 add r12, r12, #4096 // PLT-NEXT: 1048: c4 ff bc e5 ldr pc, [r12, #4036]! // PLT: $d: // PLT-NEXT: 104c: d4 d4 d4 d4 .word 0xd4d4d4d4 // PLT: $a: // PLT-NEXT: 1050: 00 c6 8f e2 add r12, pc, #0, #12 -// PLT-NEXT: 1054: 00 ca 8c e2 add r12, r12, #0, #20 +// PLT-NEXT: 1054: 01 ca 8c e2 add r12, r12, #4096 // PLT-NEXT: 1058: b8 ff bc e5 ldr pc, [r12, #4024]! // PLT: $d: // PLT-NEXT: 105c: d4 d4 d4 d4 .word 0xd4d4d4d4 Index: lld/trunk/test/ELF/arm-thumb-plt-range-thunk-os.s =================================================================== --- lld/trunk/test/ELF/arm-thumb-plt-range-thunk-os.s +++ lld/trunk/test/ELF/arm-thumb-plt-range-thunk-os.s @@ -87,7 +87,7 @@ // CHECK4-NEXT: $a: // CHECK4-NEXT: 4000010: 04 e0 2d e5 str lr, [sp, #-4]! // CHECK4-NEXT: 4000014: 00 e6 8f e2 add lr, pc, #0, #12 -// CHECK4-NEXT: 4000018: 00 ea 8e e2 add lr, lr, #0, #20 +// CHECK4-NEXT: 4000018: 01 ea 8e e2 add lr, lr, #4096 // CHECK4-NEXT: 400001c: ec ff be e5 ldr pc, [lr, #4076]! // CHECK4: $d: // CHECK4-NEXT: 4000020: d4 d4 d4 d4 .word 0xd4d4d4d4 @@ -96,19 +96,19 @@ // CHECK4-NEXT: 400002c: d4 d4 d4 d4 .word 0xd4d4d4d4 // CHECK4: $a: // CHECK4-NEXT: 4000030: 00 c6 8f e2 add r12, pc, #0, #12 -// CHECK4-NEXT: 4000034: 00 ca 8c e2 add r12, r12, #0, #20 +// CHECK4-NEXT: 4000034: 01 ca 8c e2 add r12, r12, #4096 // CHECK4-NEXT: 4000038: d4 ff bc e5 ldr pc, [r12, #4052]! // CHECK4: $d: // CHECK4-NEXT: 400003c: d4 d4 d4 d4 .word 0xd4d4d4d4 // CHECK4: $a: // CHECK4-NEXT: 4000040: 00 c6 8f e2 add r12, pc, #0, #12 -// CHECK4-NEXT: 4000044: 00 ca 8c e2 add r12, r12, #0, #20 +// CHECK4-NEXT: 4000044: 01 ca 8c e2 add r12, r12, #4096 // CHECK4-NEXT: 4000048: c8 ff bc e5 ldr pc, [r12, #4040]! // CHECK4: $d: // CHECK4-NEXT: 400004c: d4 d4 d4 d4 .word 0xd4d4d4d4 // CHECK4: $a: // CHECK4-NEXT: 4000050: 00 c6 8f e2 add r12, pc, #0, #12 -// CHECK4-NEXT: 4000054: 00 ca 8c e2 add r12, r12, #0, #20 +// CHECK4-NEXT: 4000054: 01 ca 8c e2 add r12, r12, #4096 // CHECK4-NEXT: 4000058: bc ff bc e5 ldr pc, [r12, #4028]! // CHECK4: $d: // CHECK4-NEXT: 400005c: d4 d4 d4 d4 .word 0xd4d4d4d4 Index: lld/trunk/test/ELF/arm-thumb-plt-reloc.s =================================================================== --- lld/trunk/test/ELF/arm-thumb-plt-reloc.s +++ lld/trunk/test/ELF/arm-thumb-plt-reloc.s @@ -62,7 +62,7 @@ // DSOARM-NEXT: 1020: 04 e0 2d e5 str lr, [sp, #-4]! // (0x1024 + 8) + (0 RoR 12) + (0 RoR 20) + (0xfdc) = 0x2008 = .got.plt[3] // DSOARM-NEXT: 1024: 00 e6 8f e2 add lr, pc, #0, #12 -// DSOARM-NEXT: 1028: 00 ea 8e e2 add lr, lr, #0, #20 +// DSOARM-NEXT: 1028: 01 ea 8e e2 add lr, lr, #4096 // DSOARM-NEXT: 102c: dc ff be e5 ldr pc, [lr, #4060]! // DSOARM: $d: @@ -73,21 +73,21 @@ // DSOARM: $a: // (0x1040 + 8) + (0 RoR 12) + (0 RoR 20) + (0xfc4) = 0x200c // DSOARM-NEXT: 1040: 00 c6 8f e2 add r12, pc, #0, #12 -// DSOARM-NEXT: 1044: 00 ca 8c e2 add r12, r12, #0, #20 +// DSOARM-NEXT: 1044: 01 ca 8c e2 add r12, r12, #4096 // DSOARM-NEXT: 1048: c4 ff bc e5 ldr pc, [r12, #4036]! // DSOARM: $d: // DSOARM-NEXT: 104c: d4 d4 d4 d4 .word 0xd4d4d4d4 // DSOARM: $a: // (0x1050 + 8) + (0 RoR 12) + (0 RoR 20) + (0xfb8) = 0x2010 // DSOARM-NEXT: 1050: 00 c6 8f e2 add r12, pc, #0, #12 -// DSOARM-NEXT: 1054: 00 ca 8c e2 add r12, r12, #0, #20 +// DSOARM-NEXT: 1054: 01 ca 8c e2 add r12, r12, #4096 // DSOARM-NEXT: 1058: b8 ff bc e5 ldr pc, [r12, #4024]! // DSOARM: $d: // DSOARM-NEXT: 105c: d4 d4 d4 d4 .word 0xd4d4d4d4 // DSOARM: $a: // (0x1060 + 8) + (0 RoR 12) + (0 RoR 20) + (0xfac) = 0x2014 // DSOARM-NEXT: 1060: 00 c6 8f e2 add r12, pc, #0, #12 -// DSOARM-NEXT: 1064: 00 ca 8c e2 add r12, r12, #0, #20 +// DSOARM-NEXT: 1064: 01 ca 8c e2 add r12, r12, #4096 // DSOARM-NEXT: 1068: ac ff bc e5 ldr pc, [r12, #4012]! // DSOARM: $d: // DSOARM-NEXT: 106c: d4 d4 d4 d4 .word 0xd4d4d4d4 @@ -98,7 +98,7 @@ // DSOREL-NEXT: SHF_ALLOC // DSOREL-NEXT: SHF_WRITE // DSOREL-NEXT: ] -// DSOREL-NEXT: Address: 0x2000 +// DSOREL-NEXT: Address: 0x3000 // DSOREL-NEXT: Offset: // DSOREL-NEXT: Size: 24 // DSOREL-NEXT: Link: @@ -107,6 +107,6 @@ // DSOREL-NEXT: EntrySize: // DSOREL: Relocations [ // DSOREL-NEXT: Section (4) .rel.plt { -// DSOREL-NEXT: 0x200C R_ARM_JUMP_SLOT func1 0x0 -// DSOREL-NEXT: 0x2010 R_ARM_JUMP_SLOT func2 0x0 -// DSOREL-NEXT: 0x2014 R_ARM_JUMP_SLOT func3 0x0 +// DSOREL-NEXT: 0x300C R_ARM_JUMP_SLOT func1 0x0 +// DSOREL-NEXT: 0x3010 R_ARM_JUMP_SLOT func2 0x0 +// DSOREL-NEXT: 0x3014 R_ARM_JUMP_SLOT func3 0x0 Index: lld/trunk/test/ELF/arm-thunk-multipass-plt.s =================================================================== --- lld/trunk/test/ELF/arm-thunk-multipass-plt.s +++ lld/trunk/test/ELF/arm-thunk-multipass-plt.s @@ -73,7 +73,7 @@ // CHECK-PLT-NEXT: 0000000000d00020 $a: // CHECK-PLT-NEXT: d00020: 04 e0 2d e5 str lr, [sp, #-4]! // CHECK-PLT-NEXT: d00024: 00 e6 8f e2 add lr, pc, #0, #12 -// CHECK-PLT-NEXT: d00028: 00 ea 8e e2 add lr, lr, #0, #20 +// CHECK-PLT-NEXT: d00028: 01 ea 8e e2 add lr, lr, #4096 // CHECK-PLT-NEXT: d0002c: dc ff be e5 ldr pc, [lr, #4060]! // CHECK-PLT: 0000000000d00030 $d: // CHECK-PLT-NEXT: d00030: d4 d4 d4 d4 .word 0xd4d4d4d4 @@ -82,13 +82,13 @@ // CHECK-PLT-NEXT: d0003c: d4 d4 d4 d4 .word 0xd4d4d4d4 // CHECK-PLT: 0000000000d00040 $a: // CHECK-PLT-NEXT: d00040: 00 c6 8f e2 add r12, pc, #0, #12 -// CHECK-PLT-NEXT: d00044: 00 ca 8c e2 add r12, r12, #0, #20 +// CHECK-PLT-NEXT: d00044: 01 ca 8c e2 add r12, r12, #4096 // CHECK-PLT-NEXT: d00048: c4 ff bc e5 ldr pc, [r12, #4036]! // CHECK-PLT: 0000000000d0004c $d: // CHECK-PLT-NEXT: d0004c: d4 d4 d4 d4 .word 0xd4d4d4d4 // CHECK-PLT: 0000000000d00050 $a: // CHECK-PLT-NEXT: d00050: 00 c6 8f e2 add r12, pc, #0, #12 -// CHECK-PLT-NEXT: d00054: 00 ca 8c e2 add r12, r12, #0, #20 +// CHECK-PLT-NEXT: d00054: 01 ca 8c e2 add r12, r12, #4096 // CHECK-PLT-NEXT: d00058: b8 ff bc e5 ldr pc, [r12, #4024]! // CHECK-PLT: 0000000000d0005c $d: // CHECK-PLT-NEXT: d0005c: d4 d4 d4 d4 .word 0xd4d4d4d4 Index: lld/trunk/test/ELF/arm-thunk-re-add.s =================================================================== --- lld/trunk/test/ELF/arm-thunk-re-add.s +++ lld/trunk/test/ELF/arm-thunk-re-add.s @@ -102,7 +102,7 @@ // CHECK3-NEXT: $a: // CHECK3-NEXT: 1100020: 04 e0 2d e5 str lr, [sp, #-4]! // CHECK3-NEXT: 1100024: 00 e6 8f e2 add lr, pc, #0, #12 -// CHECK3-NEXT: 1100028: 00 ea 8e e2 add lr, lr, #0, #20 +// CHECK3-NEXT: 1100028: 01 ea 8e e2 add lr, lr, #4096 // CHECK3-NEXT: 110002c: dc ff be e5 ldr pc, [lr, #4060]! // CHECK3: $d: // CHECK3-NEXT: 1100030: d4 d4 d4 d4 .word 0xd4d4d4d4 @@ -111,13 +111,13 @@ // CHECK3-NEXT: 110003c: d4 d4 d4 d4 .word 0xd4d4d4d4 // CHECK3: $a: // CHECK3-NEXT: 1100040: 00 c6 8f e2 add r12, pc, #0, #12 -// CHECK3-NEXT: 1100044: 00 ca 8c e2 add r12, r12, #0, #20 +// CHECK3-NEXT: 1100044: 01 ca 8c e2 add r12, r12, #4096 // CHECK3-NEXT: 1100048: c4 ff bc e5 ldr pc, [r12, #4036]! // CHECK3: $d: // CHECK3-NEXT: 110004c: d4 d4 d4 d4 .word 0xd4d4d4d4 // CHECK3: $a: // CHECK3-NEXT: 1100050: 00 c6 8f e2 add r12, pc, #0, #12 -// CHECK3-NEXT: 1100054: 00 ca 8c e2 add r12, r12, #0, #20 +// CHECK3-NEXT: 1100054: 01 ca 8c e2 add r12, r12, #4096 // CHECK3-NEXT: 1100058: b8 ff bc e5 ldr pc, [r12, #4024]! // CHECK3: $d: // CHECK3-NEXT: 110005c: d4 d4 d4 d4 .word 0xd4d4d4d4 Index: lld/trunk/test/ELF/arm-tls-norelax-gd-ie.s =================================================================== --- lld/trunk/test/ELF/arm-tls-norelax-gd-ie.s +++ lld/trunk/test/ELF/arm-tls-norelax-gd-ie.s @@ -25,6 +25,6 @@ .Lt0: .word y(TLSGD) + (. - .L0 - 8) // CHECK: Dynamic Relocations { -// CHECK-NEXT: 0x13078 R_ARM_TLS_DTPMOD32 y -// CHECK-NEXT: 0x1307C R_ARM_TLS_DTPOFF32 y -// CHECK-NEXT: 0x1200C R_ARM_JUMP_SLOT __tls_get_addr +// CHECK-NEXT: 0x12078 R_ARM_TLS_DTPMOD32 y +// CHECK-NEXT: 0x1207C R_ARM_TLS_DTPOFF32 y +// CHECK-NEXT: 0x1300C R_ARM_JUMP_SLOT __tls_get_addr Index: lld/trunk/test/ELF/arm-tls-norelax-gd-le.s =================================================================== --- lld/trunk/test/ELF/arm-tls-norelax-gd-le.s +++ lld/trunk/test/ELF/arm-tls-norelax-gd-le.s @@ -33,7 +33,7 @@ // CHECK: Contents of section .got: // Module index is always 1 for executable -// CHECK-NEXT: 13060 01000000 00000000 +// CHECK-NEXT: 12060 01000000 00000000 // Without any definition of __tls_get_addr we get an error Index: lld/trunk/test/ELF/arm-tls-norelax-ie-le.s =================================================================== --- lld/trunk/test/ELF/arm-tls-norelax-ie-le.s +++ lld/trunk/test/ELF/arm-tls-norelax-ie-le.s @@ -38,4 +38,4 @@ // CHECK: Contents of section .got: // x1 at offset 0x20 from TP, x2 at offset 0x24 from TP. Offsets include TCB size of 0x20 -// CHECK-NEXT: 13064 20000000 24000000 +// CHECK-NEXT: 12064 20000000 24000000 Index: lld/trunk/test/ELF/arm-tls-norelax-ld-le.s =================================================================== --- lld/trunk/test/ELF/arm-tls-norelax-ld-le.s +++ lld/trunk/test/ELF/arm-tls-norelax-ld-le.s @@ -32,4 +32,4 @@ .word 10 // CHECK: Contents of section .got: -// CHECK-NEXT: 13064 01000000 00000000 +// CHECK-NEXT: 12064 01000000 00000000 Index: lld/trunk/test/ELF/combrelocs.s =================================================================== --- lld/trunk/test/ELF/combrelocs.s +++ lld/trunk/test/ELF/combrelocs.s @@ -10,31 +10,31 @@ # CHECK: Relocations [ # CHECK-NEXT: Section ({{.*}}) .rela.dyn { # CHECK-NEXT: Relocation { -# CHECK-NEXT: Offset: 0x1000 +# CHECK-NEXT: Offset: 0x2000 # CHECK-NEXT: Type: R_X86_64_64 # CHECK-NEXT: Symbol: aaa (1) # CHECK-NEXT: Addend: 0x0 # CHECK-NEXT: } # CHECK-NEXT: Relocation { -# CHECK-NEXT: Offset: 0x1018 +# CHECK-NEXT: Offset: 0x2018 # CHECK-NEXT: Type: R_X86_64_64 # CHECK-NEXT: Symbol: aaa (1) # CHECK-NEXT: Addend: 0x0 # CHECK-NEXT: } # CHECK-NEXT: Relocation { -# CHECK-NEXT: Offset: 0x1010 +# CHECK-NEXT: Offset: 0x2010 # CHECK-NEXT: Type: R_X86_64_64 # CHECK-NEXT: Symbol: bbb (2) # CHECK-NEXT: Addend: 0x0 # CHECK-NEXT: } # CHECK-NEXT: Relocation { -# CHECK-NEXT: Offset: 0x1008 +# CHECK-NEXT: Offset: 0x2008 # CHECK-NEXT: Type: R_X86_64_64 # CHECK-NEXT: Symbol: ccc (3) # CHECK-NEXT: Addend: 0x0 # CHECK-NEXT: } # CHECK-NEXT: Relocation { -# CHECK-NEXT: Offset: 0x1020 +# CHECK-NEXT: Offset: 0x2020 # CHECK-NEXT: Type: R_X86_64_64 # CHECK-NEXT: Symbol: ddd (4) # CHECK-NEXT: Addend: 0x0 @@ -52,31 +52,31 @@ # NOCOMB: Relocations [ # NOCOMB-NEXT: Section ({{.*}}) .rela.dyn { # NOCOMB-NEXT: Relocation { -# NOCOMB-NEXT: Offset: 0x1000 +# NOCOMB-NEXT: Offset: 0x2000 # NOCOMB-NEXT: Type: R_X86_64_64 # NOCOMB-NEXT: Symbol: aaa (1) # NOCOMB-NEXT: Addend: 0x0 # NOCOMB-NEXT: } # NOCOMB-NEXT: Relocation { -# NOCOMB-NEXT: Offset: 0x1008 +# NOCOMB-NEXT: Offset: 0x2008 # NOCOMB-NEXT: Type: R_X86_64_64 # NOCOMB-NEXT: Symbol: ccc (3) # NOCOMB-NEXT: Addend: 0x0 # NOCOMB-NEXT: } # NOCOMB-NEXT: Relocation { -# NOCOMB-NEXT: Offset: 0x1010 +# NOCOMB-NEXT: Offset: 0x2010 # NOCOMB-NEXT: Type: R_X86_64_64 # NOCOMB-NEXT: Symbol: bbb (2) # NOCOMB-NEXT: Addend: 0x0 # NOCOMB-NEXT: } # NOCOMB-NEXT: Relocation { -# NOCOMB-NEXT: Offset: 0x1018 +# NOCOMB-NEXT: Offset: 0x2018 # NOCOMB-NEXT: Type: R_X86_64_64 # NOCOMB-NEXT: Symbol: aaa (1) # NOCOMB-NEXT: Addend: 0x0 # NOCOMB-NEXT: } # NOCOMB-NEXT: Relocation { -# NOCOMB-NEXT: Offset: 0x1020 +# NOCOMB-NEXT: Offset: 0x2020 # NOCOMB-NEXT: Type: R_X86_64_64 # NOCOMB-NEXT: Symbol: ddd (4) # NOCOMB-NEXT: Addend: 0x0 Index: lld/trunk/test/ELF/copy-rel-pie.s =================================================================== --- lld/trunk/test/ELF/copy-rel-pie.s +++ lld/trunk/test/ELF/copy-rel-pie.s @@ -27,21 +27,21 @@ // CHECK-NEXT: SHF_ALLOC // CHECK-NEXT: SHF_WRITE // CHECK-NEXT: ] -// CHECK-NEXT: Address: 0x4000 +// CHECK-NEXT: Address: 0x3020 // CHECK: Relocations [ // CHECK-NEXT: Section (4) .rela.dyn { -// CHECK-NEXT: 0x4000 R_X86_64_COPY foo 0x0 +// CHECK-NEXT: 0x3020 R_X86_64_COPY foo 0x0 // CHECK-NEXT: } // CHECK-NEXT: Section (5) .rela.plt { -// CHECK-NEXT: 0x2018 R_X86_64_JUMP_SLOT bar 0x0 +// CHECK-NEXT: 0x3018 R_X86_64_JUMP_SLOT bar 0x0 // CHECK-NEXT: } // CHECK-NEXT: ] // (0x1010 + 0x10) - 0x1005 = 27 -// 0x4000 - 0x100a = 12278 +// 0x3020 - 0x100a = 8214 // DISASM: Disassembly of section .text: // DISASM-NEXT: _start: // DISASM-NEXT: 1000: e8 1b 00 00 00 callq 27 -// DISASM-NEXT: 1005: e8 f6 2f 00 00 callq 12278 +// DISASM-NEXT: 1005: e8 16 20 00 00 callq 8214 Index: lld/trunk/test/ELF/dynamic-got.s =================================================================== --- lld/trunk/test/ELF/dynamic-got.s +++ lld/trunk/test/ELF/dynamic-got.s @@ -3,23 +3,6 @@ // RUN: ld.lld --hash-style=sysv %t.o -o %t.so -shared // RUN: llvm-readobj -s -l -section-data -r %t.so | FileCheck %s -// CHECK: Name: .got.plt -// CHECK-NEXT: Type: SHT_PROGBITS -// CHECK-NEXT: Flags [ -// CHECK-NEXT: SHF_ALLOC -// CHECK-NEXT: SHF_WRITE -// CHECK-NEXT: ] -// CHECK-NEXT: Address: -// CHECK-NEXT: Offset: -// CHECK-NEXT: Size: -// CHECK-NEXT: Link: -// CHECK-NEXT: Info: -// CHECK-NEXT: AddressAlignment: -// CHECK-NEXT: EntrySize: -// CHECK-NEXT: SectionData ( -// CHECK-NEXT: 0000: 00300000 00000000 00000000 -// CHECK-NEXT: ) - // CHECK: Name: .got // CHECK-NEXT: Type: SHT_PROGBITS // CHECK-NEXT: Flags [ @@ -34,19 +17,36 @@ // CHECK-NEXT: AddressAlignment: // CHECK-NEXT: EntrySize: // CHECK-NEXT: SectionData ( -// CHECK-NEXT: 0000: 00300000 +// CHECK-NEXT: 0000: 00200000 // CHECK-NEXT: ) +// CHECK: Name: .got.plt +// CHECK-NEXT: Type: SHT_PROGBITS +// CHECK-NEXT: Flags [ +// CHECK-NEXT: SHF_ALLOC +// CHECK-NEXT: SHF_WRITE +// CHECK-NEXT: ] +// CHECK-NEXT: Address: +// CHECK-NEXT: Offset: +// CHECK-NEXT: Size: +// CHECK-NEXT: Link: +// CHECK-NEXT: Info: +// CHECK-NEXT: AddressAlignment: +// CHECK-NEXT: EntrySize: +// CHECK-NEXT: SectionData ( +// CHECK-NEXT: 0000: 00200000 00000000 00000000 +// CHECK-NEXT: ) + // CHECK: Relocations [ // CHECK-NEXT: Section ({{.*}}) .rel.dyn { -// CHECK-NEXT: 0x3050 R_386_RELATIVE - 0x0 +// CHECK-NEXT: 0x2050 R_386_RELATIVE - 0x0 // CHECK-NEXT: } // CHECK-NEXT: ] // CHECK: Type: PT_DYNAMIC -// CHECK-NEXT: Offset: 0x3000 -// CHECK-NEXT: VirtualAddress: 0x3000 -// CHECK-NEXT: PhysicalAddress: 0x3000 +// CHECK-NEXT: Offset: 0x2000 +// CHECK-NEXT: VirtualAddress: 0x2000 +// CHECK-NEXT: PhysicalAddress: 0x2000 calll .L0$pb .L0$pb: Index: lld/trunk/test/ELF/dynamic-list-weak-archive.s =================================================================== --- lld/trunk/test/ELF/dynamic-list-weak-archive.s +++ lld/trunk/test/ELF/dynamic-list-weak-archive.s @@ -10,7 +10,7 @@ # CHECK: Relocations [ # CHECK-NEXT: Section ({{.*}}) .rela.plt { -# CHECK-NEXT: 0x2018 R_X86_64_JUMP_SLOT foo +# CHECK-NEXT: 0x3018 R_X86_64_JUMP_SLOT foo # CHECK-NEXT: } # CHECK-NEXT: ] Index: lld/trunk/test/ELF/dynamic-reloc-index.s =================================================================== --- lld/trunk/test/ELF/dynamic-reloc-index.s +++ lld/trunk/test/ELF/dynamic-reloc-index.s @@ -9,7 +9,7 @@ // CHECK: Relocations [ // CHECK-NEXT: Section ({{.*}}) .rela.plt { -// CHECK-NEXT: 0x202018 R_X86_64_JUMP_SLOT bar 0x0 +// CHECK-NEXT: 0x203018 R_X86_64_JUMP_SLOT bar 0x0 // CHECK-NEXT: } // CHECK-NEXT: ] Index: lld/trunk/test/ELF/dynamic-reloc.s =================================================================== --- lld/trunk/test/ELF/dynamic-reloc.s +++ lld/trunk/test/ELF/dynamic-reloc.s @@ -18,7 +18,7 @@ // CHECK-NEXT: Offset: // CHECK-NEXT: Size: [[RELASIZE:.*]] // CHECK-NEXT: Link: 1 -// CHECK-NEXT: Info: 7 +// CHECK-NEXT: Info: 8 // CHECK-NEXT: AddressAlignment: 8 // CHECK-NEXT: EntrySize: 24 @@ -33,7 +33,7 @@ // CHECK: Relocations [ // CHECK-NEXT: Section ({{.*}}) .rela.plt { // CHECK-NEXT: Relocation { -// CHECK-NEXT: Offset: 0x202018 +// CHECK-NEXT: Offset: 0x203018 // CHECK-NEXT: Type: R_X86_64_JUMP_SLOT // CHECK-NEXT: Symbol: bar // CHECK-NEXT: Addend: 0x0 Index: lld/trunk/test/ELF/emit-relocs-merge.s =================================================================== --- lld/trunk/test/ELF/emit-relocs-merge.s +++ lld/trunk/test/ELF/emit-relocs-merge.s @@ -5,12 +5,12 @@ # CHECK: Relocations [ # CHECK-NEXT: Section ({{.*}}) .rela.dyn { -# CHECK-NEXT: 0x1000 R_X86_64_64 zed 0x0 -# CHECK-NEXT: 0x1008 R_X86_64_64 zed 0x0 +# CHECK-NEXT: 0x2000 R_X86_64_64 zed 0x0 +# CHECK-NEXT: 0x2008 R_X86_64_64 zed 0x0 # CHECK-NEXT: } # CHECK-NEXT: Section ({{.*}}) .rela.data { -# CHECK-NEXT: 0x1000 R_X86_64_64 zed 0x0 -# CHECK-NEXT: 0x1008 R_X86_64_64 zed 0x0 +# CHECK-NEXT: 0x2000 R_X86_64_64 zed 0x0 +# CHECK-NEXT: 0x2008 R_X86_64_64 zed 0x0 # CHECK-NEXT: } # CHECK-NEXT: ] Index: lld/trunk/test/ELF/emit-relocs-shared.s =================================================================== --- lld/trunk/test/ELF/emit-relocs-shared.s +++ lld/trunk/test/ELF/emit-relocs-shared.s @@ -8,9 +8,9 @@ # CHECK: Relocations [ # CHECK-NEXT: Section {{.*}} .rela.dyn { -# CHECK-NEXT: 0x1000 R_X86_64_64 foo 0x0 +# CHECK-NEXT: 0x2000 R_X86_64_64 foo 0x0 # CHECK-NEXT: } # CHECK-NEXT: Section {{.*}} .rela.data { -# CHECK-NEXT: 0x1000 R_X86_64_64 foo 0x0 +# CHECK-NEXT: 0x2000 R_X86_64_64 foo 0x0 # CHECK-NEXT: } # CHECK-NEXT: ] Index: lld/trunk/test/ELF/executable-undefined-ignoreall.s =================================================================== --- lld/trunk/test/ELF/executable-undefined-ignoreall.s +++ lld/trunk/test/ELF/executable-undefined-ignoreall.s @@ -5,7 +5,7 @@ # CHECK: Relocations [ # CHECK-NEXT: Section ({{.*}}) .rela.plt { -# CHECK-NEXT: 0x2018 R_X86_64_JUMP_SLOT foo 0x0 +# CHECK-NEXT: 0x3018 R_X86_64_JUMP_SLOT foo 0x0 # CHECK-NEXT: } # CHECK-NEXT: ] Index: lld/trunk/test/ELF/gc-sections-linker-defined-symbol.s =================================================================== --- lld/trunk/test/ELF/gc-sections-linker-defined-symbol.s +++ lld/trunk/test/ELF/gc-sections-linker-defined-symbol.s @@ -10,7 +10,7 @@ # CHECK-NEXT: Binding: Global # CHECK-NEXT: Type: None # CHECK-NEXT: Other: -# CHECK-NEXT: Section: .dynamic +# CHECK-NEXT: Section: .data .data .globl g 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: 0x20008 +// CHECK-NEXT: Value: 0x30008 // CHECK-NEXT: Size: 0 // CHECK-NEXT: Binding: Local (0x0) // CHECK-NEXT: Type: None (0x0) Index: lld/trunk/test/ELF/global-offset-table-position-arm.s =================================================================== --- lld/trunk/test/ELF/global-offset-table-position-arm.s +++ lld/trunk/test/ELF/global-offset-table-position-arm.s @@ -25,7 +25,7 @@ .data // CHECK: Name: _GLOBAL_OFFSET_TABLE_ -// CHECK-NEXT: Value: 0x3068 +// CHECK-NEXT: Value: 0x2068 // CHECK-NEXT: Size: 0 // CHECK-NEXT: Binding: Local // CHECK-NEXT: Type: None Index: lld/trunk/test/ELF/global-offset-table-position-i386.s =================================================================== --- lld/trunk/test/ELF/global-offset-table-position-i386.s +++ lld/trunk/test/ELF/global-offset-table-position-i386.s @@ -22,7 +22,7 @@ calll f@PLT // CHECK: Name: _GLOBAL_OFFSET_TABLE_ (1) -// CHECK-NEXT: Value: 0x2000 +// CHECK-NEXT: Value: 0x3000 // CHECK-NEXT: Size: 0 // CHECK-NEXT: Binding: Local (0x0) // CHECK-NEXT: Type: None (0x0) Index: lld/trunk/test/ELF/global-offset-table-position.s =================================================================== --- lld/trunk/test/ELF/global-offset-table-position.s +++ lld/trunk/test/ELF/global-offset-table-position.s @@ -22,7 +22,7 @@ .long _GLOBAL_OFFSET_TABLE_ - . // CHECK: Name: _GLOBAL_OFFSET_TABLE_ -// CHECK-NEXT: Value: 0x2008 +// CHECK-NEXT: Value: 0x3008 // CHECK-NEXT: Size: 0 // CHECK-NEXT: Binding: Local // CHECK-NEXT: Type: None (0x0) Index: lld/trunk/test/ELF/global_offset_table_shared.s =================================================================== --- lld/trunk/test/ELF/global_offset_table_shared.s +++ lld/trunk/test/ELF/global_offset_table_shared.s @@ -5,7 +5,7 @@ .long _GLOBAL_OFFSET_TABLE_ - . // CHECK: Name: _GLOBAL_OFFSET_TABLE_ -// CHECK-NEXT: Value: 0x2000 +// CHECK-NEXT: Value: 0x3000 // CHECK-NEXT: Size: 0 // CHECK-NEXT: Binding: Local // CHECK-NEXT: Type: None Index: lld/trunk/test/ELF/gnu-ifunc-canon.s =================================================================== --- lld/trunk/test/ELF/gnu-ifunc-canon.s +++ lld/trunk/test/ELF/gnu-ifunc-canon.s @@ -69,17 +69,17 @@ // Make sure the static relocations look right, both with and without headers. // DUMP: Contents of section .plt: // DUMP-NEXT: 201010 -// DUMP: Contents of section .data: -// DUMP-NEXT: 202000 10102000 00000000 11102000 00000000 // DUMP: Contents of section .got: -// DUMP-NEXT: 203000 10102000 00000000 +// DUMP-NEXT: 202000 10102000 00000000 +// DUMP: Contents of section .data: +// DUMP-NEXT: 203000 10102000 00000000 11102000 00000000 // DUMP2: Contents of section .plt: // DUMP2-NEXT: 201010 -// DUMP2: Contents of section .data: -// DUMP2-NEXT: 202000 40102000 00000000 41102000 00000000 // DUMP2: Contents of section .got: -// DUMP2-NEXT: 203000 40102000 00000000 +// DUMP2-NEXT: 202000 40102000 00000000 +// DUMP2: Contents of section .data: +// DUMP2-NEXT: 203000 40102000 00000000 41102000 00000000 lea ifunc@gotpcrel(%rip), %rbx Index: lld/trunk/test/ELF/gnu-ifunc-dso.s =================================================================== --- lld/trunk/test/ELF/gnu-ifunc-dso.s +++ lld/trunk/test/ELF/gnu-ifunc-dso.s @@ -6,7 +6,7 @@ # RUN: llvm-readobj -dyn-relocations %t | FileCheck %s # CHECK: Dynamic Relocations { -# CHECK-NEXT: 0x1000 R_X86_64_64 foo 0x0 +# CHECK-NEXT: 0x2000 R_X86_64_64 foo 0x0 # CHECK-NEXT: } .data Index: lld/trunk/test/ELF/gnu-ifunc-dyntags.s =================================================================== --- lld/trunk/test/ELF/gnu-ifunc-dyntags.s +++ lld/trunk/test/ELF/gnu-ifunc-dyntags.s @@ -9,7 +9,7 @@ # CHECK: Name Size VMA # CHECK: .rela.plt 00000030 0000000000000210 -# CHECK: .got.plt 00000010 0000000000002000 +# CHECK: .got.plt 00000010 0000000000003000 # TAGS: Relocations [ # TAGS-NEXT: Section {{.*}} .rela.plt { @@ -21,7 +21,7 @@ # TAGS: Tag Type Name/Value # TAGS: 0x0000000000000017 JMPREL 0x210 # TAGS: 0x0000000000000002 PLTRELSZ 48 -# TAGS: 0x0000000000000003 PLTGOT 0x2000 +# TAGS: 0x0000000000000003 PLTGOT 0x3000 # TAGS: 0x0000000000000014 PLTREL RELA .text Index: lld/trunk/test/ELF/gnu-ifunc-plt-i386.s =================================================================== --- lld/trunk/test/ELF/gnu-ifunc-plt-i386.s +++ lld/trunk/test/ELF/gnu-ifunc-plt-i386.s @@ -10,16 +10,16 @@ // Check that the IRELATIVE relocations are after the JUMP_SLOT in the plt // CHECK: Relocations [ // CHECK-NEXT: Section (4) .rel.plt { -// CHECK-NEXT: 0x40200C R_386_JUMP_SLOT bar2 -// CHECK-NEXT: 0x402010 R_386_JUMP_SLOT zed2 -// CHECK-NEXT: 0x402014 R_386_IRELATIVE -// CHECK-NEXT: 0x402018 R_386_IRELATIVE +// CHECK-NEXT: 0x40300C R_386_JUMP_SLOT bar2 +// CHECK-NEXT: 0x403010 R_386_JUMP_SLOT zed2 +// CHECK-NEXT: 0x403014 R_386_IRELATIVE +// CHECK-NEXT: 0x403018 R_386_IRELATIVE // Check that IRELATIVE .got.plt entries point to ifunc resolver and not // back to the plt entry + 6. // GOTPLT: Contents of section .got.plt: -// GOTPLT: 402000 00304000 00000000 00000000 36104000 -// GOTPLT-NEXT: 402010 46104000 00104000 01104000 +// GOTPLT: 403000 00204000 00000000 00000000 36104000 +// GOTPLT-NEXT: 403010 46104000 00104000 01104000 // Check that the PLTRELSZ tag includes the IRELATIVE relocations // CHECK: DynamicSection [ @@ -38,26 +38,26 @@ // DISASM-NEXT: 401011: e8 2a 00 00 00 calll 42 // DISASM-NEXT: Disassembly of section .plt: // DISASM-NEXT: .plt: -// DISASM-NEXT: 401020: ff 35 04 20 40 00 pushl 4202500 -// DISASM-NEXT: 401026: ff 25 08 20 40 00 jmpl *4202504 +// DISASM-NEXT: 401020: ff 35 04 30 40 00 pushl 4206596 +// DISASM-NEXT: 401026: ff 25 08 30 40 00 jmpl *4206600 // DISASM-NEXT: 40102c: 90 nop // DISASM-NEXT: 40102d: 90 nop // DISASM-NEXT: 40102e: 90 nop // DISASM-NEXT: 40102f: 90 nop // DISASM-EMPTY: // DISASM-NEXT: bar2@plt: -// DISASM-NEXT: 401030: ff 25 0c 20 40 00 jmpl *4202508 +// DISASM-NEXT: 401030: ff 25 0c 30 40 00 jmpl *4206604 // DISASM-NEXT: 401036: 68 00 00 00 00 pushl $0 // DISASM-NEXT: 40103b: e9 e0 ff ff ff jmp -32 <.plt> // DISASM-EMPTY: // DISASM-NEXT: zed2@plt: -// DISASM-NEXT: 401040: ff 25 10 20 40 00 jmpl *4202512 +// DISASM-NEXT: 401040: ff 25 10 30 40 00 jmpl *4206608 // DISASM-NEXT: 401046: 68 08 00 00 00 pushl $8 // DISASM-NEXT: 40104b: e9 d0 ff ff ff jmp -48 <.plt> -// DISASM-NEXT: 401050: ff 25 14 20 40 00 jmpl *4202516 +// DISASM-NEXT: 401050: ff 25 14 30 40 00 jmpl *4206612 // DISASM-NEXT: 401056: 68 30 00 00 00 pushl $48 // DISASM-NEXT: 40105b: e9 e0 ff ff ff jmp -32 -// DISASM-NEXT: 401060: ff 25 18 20 40 00 jmpl *4202520 +// DISASM-NEXT: 401060: ff 25 18 30 40 00 jmpl *4206616 // DISASM-NEXT: 401066: 68 38 00 00 00 pushl $56 // DISASM-NEXT: 40106b: e9 d0 ff ff ff jmp -48 Index: lld/trunk/test/ELF/gnu-ifunc-plt.s =================================================================== --- lld/trunk/test/ELF/gnu-ifunc-plt.s +++ lld/trunk/test/ELF/gnu-ifunc-plt.s @@ -10,17 +10,17 @@ // Check that the IRELATIVE relocations are after the JUMP_SLOT in the plt // CHECK: Relocations [ // CHECK-NEXT: Section (4) .rela.plt { -// CHECK-NEXT: 0x202018 R_X86_64_JUMP_SLOT bar2 0x0 -// CHECK-NEXT: 0x202020 R_X86_64_JUMP_SLOT zed2 0x0 -// CHECK-NEXT: 0x202028 R_X86_64_IRELATIVE - 0x201000 -// CHECK-NEXT: 0x202030 R_X86_64_IRELATIVE - 0x201001 +// CHECK-NEXT: 0x203018 R_X86_64_JUMP_SLOT bar2 0x0 +// CHECK-NEXT: 0x203020 R_X86_64_JUMP_SLOT zed2 0x0 +// CHECK-NEXT: 0x203028 R_X86_64_IRELATIVE - 0x201000 +// CHECK-NEXT: 0x203030 R_X86_64_IRELATIVE - 0x201001 // Check that .got.plt entries point back to PLT header // GOTPLT: Contents of section .got.plt: -// GOTPLT-NEXT: 202000 00302000 00000000 00000000 00000000 -// GOTPLT-NEXT: 202010 00000000 00000000 36102000 00000000 -// GOTPLT-NEXT: 202020 46102000 00000000 56102000 00000000 -// GOTPLT-NEXT: 202030 66102000 00000000 +// GOTPLT-NEXT: 203000 00202000 00000000 00000000 00000000 +// GOTPLT-NEXT: 203010 00000000 00000000 36102000 00000000 +// GOTPLT-NEXT: 203020 46102000 00000000 56102000 00000000 +// GOTPLT-NEXT: 203030 66102000 00000000 // Check that the PLTRELSZ tag includes the IRELATIVE relocations // CHECK: DynamicSection [ @@ -39,23 +39,23 @@ // DISASM-NEXT: 201011: e8 2a 00 00 00 callq 42 // DISASM-NEXT: Disassembly of section .plt: // DISASM-NEXT: .plt: -// DISASM-NEXT: 201020: ff 35 e2 0f 00 00 pushq 4066(%rip) -// DISASM-NEXT: 201026: ff 25 e4 0f 00 00 jmpq *4068(%rip) +// DISASM-NEXT: 201020: ff 35 e2 1f 00 00 pushq 8162(%rip) +// DISASM-NEXT: 201026: ff 25 e4 1f 00 00 jmpq *8164(%rip) // DISASM-NEXT: 20102c: 0f 1f 40 00 nopl (%rax) // DISASM-EMPTY: // DISASM-NEXT: bar2@plt: -// DISASM-NEXT: 201030: ff 25 e2 0f 00 00 jmpq *4066(%rip) +// DISASM-NEXT: 201030: ff 25 e2 1f 00 00 jmpq *8162(%rip) // DISASM-NEXT: 201036: 68 00 00 00 00 pushq $0 // DISASM-NEXT: 20103b: e9 e0 ff ff ff jmp -32 <.plt> // DISASM-EMPTY: // DISASM-NEXT: zed2@plt: -// DISASM-NEXT: 201040: ff 25 da 0f 00 00 jmpq *4058(%rip) +// DISASM-NEXT: 201040: ff 25 da 1f 00 00 jmpq *8154(%rip) // DISASM-NEXT: 201046: 68 01 00 00 00 pushq $1 // DISASM-NEXT: 20104b: e9 d0 ff ff ff jmp -48 <.plt> -// DISASM-NEXT: 201050: ff 25 d2 0f 00 00 jmpq *4050(%rip) +// DISASM-NEXT: 201050: ff 25 d2 1f 00 00 jmpq *8146(%rip) // DISASM-NEXT: 201056: 68 00 00 00 00 pushq $0 // DISASM-NEXT: 20105b: e9 e0 ff ff ff jmp -32 -// DISASM-NEXT: 201060: ff 25 ca 0f 00 00 jmpq *4042(%rip) +// DISASM-NEXT: 201060: ff 25 ca 1f 00 00 jmpq *8138(%rip) // DISASM-NEXT: 201066: 68 01 00 00 00 pushq $1 // DISASM-NEXT: 20106b: e9 d0 ff ff ff jmp -48 Index: lld/trunk/test/ELF/gnu-ifunc-shared.s =================================================================== --- lld/trunk/test/ELF/gnu-ifunc-shared.s +++ lld/trunk/test/ELF/gnu-ifunc-shared.s @@ -20,28 +20,28 @@ // DISASM-NEXT: 1012: c3 retq // DISASM-NEXT: Disassembly of section .plt: // DISASM-NEXT: .plt: -// DISASM-NEXT: 1020: ff 35 e2 0f 00 00 pushq 4066(%rip) -// DISASM-NEXT: 1026: ff 25 e4 0f 00 00 jmpq *4068(%rip) +// DISASM-NEXT: 1020: ff 35 e2 1f 00 00 pushq 8162(%rip) +// DISASM-NEXT: 1026: ff 25 e4 1f 00 00 jmpq *8164(%rip) // DISASM-NEXT: 102c: 0f 1f 40 00 nopl (%rax) // DISASM-EMPTY: // DISASM-NEXT: fct2@plt: -// DISASM-NEXT: 1030: ff 25 e2 0f 00 00 jmpq *4066(%rip) +// DISASM-NEXT: 1030: ff 25 e2 1f 00 00 jmpq *8162(%rip) // DISASM-NEXT: 1036: 68 00 00 00 00 pushq $0 // DISASM-NEXT: 103b: e9 e0 ff ff ff jmp -32 <.plt> // DISASM-EMPTY: // DISASM-NEXT: f2@plt: -// DISASM-NEXT: 1040: ff 25 da 0f 00 00 jmpq *4058(%rip) +// DISASM-NEXT: 1040: ff 25 da 1f 00 00 jmpq *8154(%rip) // DISASM-NEXT: 1046: 68 01 00 00 00 pushq $1 // DISASM-NEXT: 104b: e9 d0 ff ff ff jmp -48 <.plt> -// DISASM-NEXT: 1050: ff 25 d2 0f 00 00 jmpq *4050(%rip) +// DISASM-NEXT: 1050: ff 25 d2 1f 00 00 jmpq *8146(%rip) // DISASM-NEXT: 1056: 68 00 00 00 00 pushq $0 // DISASM-NEXT: 105b: e9 e0 ff ff ff jmp -32 // CHECK: Relocations [ // CHECK-NEXT: Section (4) .rela.plt { -// CHECK-NEXT: 0x2018 R_X86_64_JUMP_SLOT fct2 0x0 -// CHECK-NEXT: 0x2020 R_X86_64_JUMP_SLOT f2 0x0 -// CHECK-NEXT: 0x2028 R_X86_64_IRELATIVE - 0x1000 +// CHECK-NEXT: 0x3018 R_X86_64_JUMP_SLOT fct2 0x0 +// CHECK-NEXT: 0x3020 R_X86_64_JUMP_SLOT f2 0x0 +// CHECK-NEXT: 0x3028 R_X86_64_IRELATIVE - 0x1000 // Hidden expect IRELATIVE .globl fct Index: lld/trunk/test/ELF/got-aarch64.s =================================================================== --- lld/trunk/test/ELF/got-aarch64.s +++ lld/trunk/test/ELF/got-aarch64.s @@ -10,7 +10,7 @@ // CHECK-NEXT: SHF_ALLOC // CHECK-NEXT: SHF_WRITE // CHECK-NEXT: ] -// CHECK-NEXT: Address: 0x30090 +// CHECK-NEXT: Address: 0x20090 // CHECK-NEXT: Offset: // CHECK-NEXT: Size: 8 // CHECK-NEXT: Link: 0 @@ -19,7 +19,7 @@ // CHECK: Relocations [ // CHECK-NEXT: Section ({{.*}}) .rela.dyn { -// CHECK-NEXT: 0x30090 R_AARCH64_GLOB_DAT dat 0x0 +// CHECK-NEXT: 0x20090 R_AARCH64_GLOB_DAT dat 0x0 // CHECK-NEXT: } // CHECK-NEXT: ] @@ -27,7 +27,7 @@ // 0x20098 & 0xff8 = 0x98 = 152 // DISASM: main: -// DISASM-NEXT: 10000: 00 01 00 90 adrp x0, #131072 +// DISASM-NEXT: 10000: 80 00 00 90 adrp x0, #65536 // DISASM-NEXT: 10004: 00 48 40 f9 ldr x0, [x0, #144] .global main,foo,dat Index: lld/trunk/test/ELF/got-plt-header.s =================================================================== --- lld/trunk/test/ELF/got-plt-header.s +++ lld/trunk/test/ELF/got-plt-header.s @@ -7,25 +7,25 @@ // Check that the first .got.plt entry has the address of the dynamic table. +// CHECK: Type: SHT_DYNAMIC +// CHECK-NEXT: Flags [ +// CHECK-NEXT: SHF_ALLOC +// CHECK-NEXT: SHF_WRITE +// CHECK-NEXT: ] +// CHECK-NEXT: Address: 0x2000 + // CHECK: Name: .got.plt // CHECK-NEXT: Type: SHT_PROGBITS // CHECK-NEXT: Flags [ // CHECK-NEXT: SHF_ALLOC // CHECK-NEXT: SHF_WRITE // CHECK-NEXT: ] -// CHECK-NEXT: Address: 0x2000 -// CHECK-NEXT: Offset: 0x2000 +// CHECK-NEXT: Address: 0x3000 +// CHECK-NEXT: Offset: 0x3000 // CHECK-NEXT: Size: 32 // CHECK-NEXT: Link: 0 // CHECK-NEXT: Info: 0 // CHECK-NEXT: AddressAlignment: 8 // CHECK-NEXT: EntrySize: 0 // CHECK-NEXT: SectionData ( -// CHECK-NEXT: 0000: 00300000 00000000 00000000 00000000 - -// CHECK: Type: SHT_DYNAMIC -// CHECK-NEXT: Flags [ -// CHECK-NEXT: SHF_ALLOC -// CHECK-NEXT: SHF_WRITE -// CHECK-NEXT: ] -// CHECK-NEXT: Address: 0x3000 +// CHECK-NEXT: 0000: 00200000 00000000 00000000 00000000 Index: lld/trunk/test/ELF/got32x-i386.s =================================================================== --- lld/trunk/test/ELF/got32x-i386.s +++ lld/trunk/test/ELF/got32x-i386.s @@ -33,13 +33,13 @@ ## 73728 == 0x12000 == ADDR(.got) # CHECK: _start: -# CHECK-NEXT: 401001: 8b 05 {{.*}} movl 4206592, %eax -# CHECK-NEXT: 401007: 8b 1d {{.*}} movl 4206592, %ebx +# CHECK-NEXT: 401001: 8b 05 {{.*}} movl 4202496, %eax +# CHECK-NEXT: 401007: 8b 1d {{.*}} movl 4202496, %ebx # CHECK-NEXT: 40100d: 8b 80 {{.*}} movl -4(%eax), %eax # CHECK-NEXT: 401013: 8b 83 {{.*}} movl -4(%ebx), %eax # CHECK: Sections: # CHECK: Name Size VMA -# CHECK: .got 00000004 0000000000403000 +# CHECK: .got 00000004 0000000000402000 # RUN: not ld.lld %S/Inputs/i386-got32x-baseless.elf -o %t1 -pie 2>&1 | \ # RUN: FileCheck %s --check-prefix=ERR Index: lld/trunk/test/ELF/gotpc-relax-nopic.s =================================================================== --- lld/trunk/test/ELF/gotpc-relax-nopic.s +++ lld/trunk/test/ELF/gotpc-relax-nopic.s @@ -36,8 +36,8 @@ # SEC-PIC-NEXT: SHF_ALLOC # SEC-PIC-NEXT: SHF_WRITE # SEC-PIC-NEXT: ] -# SEC-PIC-NEXT: Address: 0x30A0 -# SEC-PIC-NEXT: Offset: 0x30A0 +# SEC-PIC-NEXT: Address: 0x20A0 +# SEC-PIC-NEXT: Offset: 0x20A0 # SEC-PIC-NEXT: Size: 8 # SEC-PIC-NEXT: Link: # SEC-PIC-NEXT: Info: @@ -46,7 +46,7 @@ # SEC-PIC-NEXT: } # SEC-PIC: Relocations [ # SEC-PIC-NEXT: Section ({{.*}}) .rela.dyn { -# SEC-PIC-NEXT: 0x30A0 R_X86_64_RELATIVE - 0x2000 +# SEC-PIC-NEXT: 0x20A0 R_X86_64_RELATIVE - 0x3000 # SEC-PIC-NEXT: } # SEC-PIC-NEXT: ] # SEC-PIC: 0x000000006FFFFFF9 RELACOUNT 1 @@ -56,15 +56,15 @@ ## 0x102a + 4207 + 7 = 0x20A0 # DISASM-PIC: Disassembly of section .text: # DISASM-PIC-NEXT: _start: -# DISASM-PIC-NEXT: 1000: {{.*}} adcq 8345(%rip), %rax -# DISASM-PIC-NEXT: 1007: {{.*}} addq 8338(%rip), %rbx -# DISASM-PIC-NEXT: 100e: {{.*}} andq 8331(%rip), %rcx -# DISASM-PIC-NEXT: 1015: {{.*}} cmpq 8324(%rip), %rdx -# DISASM-PIC-NEXT: 101c: {{.*}} orq 8317(%rip), %rdi -# DISASM-PIC-NEXT: 1023: {{.*}} sbbq 8310(%rip), %rsi -# DISASM-PIC-NEXT: 102a: {{.*}} subq 8303(%rip), %rbp -# DISASM-PIC-NEXT: 1031: {{.*}} xorq 8296(%rip), %r8 -# DISASM-PIC-NEXT: 1038: {{.*}} testq %r15, 8289(%rip) +# DISASM-PIC-NEXT: 1000: {{.*}} adcq 4249(%rip), %rax +# DISASM-PIC-NEXT: 1007: {{.*}} addq 4242(%rip), %rbx +# DISASM-PIC-NEXT: 100e: {{.*}} andq 4235(%rip), %rcx +# DISASM-PIC-NEXT: 1015: {{.*}} cmpq 4228(%rip), %rdx +# DISASM-PIC-NEXT: 101c: {{.*}} orq 4221(%rip), %rdi +# DISASM-PIC-NEXT: 1023: {{.*}} sbbq 4214(%rip), %rsi +# DISASM-PIC-NEXT: 102a: {{.*}} subq 4207(%rip), %rbp +# DISASM-PIC-NEXT: 1031: {{.*}} xorq 4200(%rip), %r8 +# DISASM-PIC-NEXT: 1038: {{.*}} testq %r15, 4193(%rip) .data .type bar, @object Index: lld/trunk/test/ELF/hexagon-shared.s =================================================================== --- lld/trunk/test/ELF/hexagon-shared.s +++ lld/trunk/test/ELF/hexagon-shared.s @@ -25,22 +25,22 @@ # R_HEX_GOT_16_X r0 = add(r1,##bar@GOT) -# PLT: { immext(#65472 -# PLT: r28 = add(pc,##65488) } +# PLT: { immext(#131008 +# PLT: r28 = add(pc,##131024) } # PLT: { r14 -= add(r28,#16) # PLT: r15 = memw(r28+#8) # PLT: r28 = memw(r28+#4) } # PLT: { r14 = asr(r14,#2) # PLT: jumpr r28 } # PLT: { trap0(#219) } -# PLT: immext(#65472) -# PLT: r14 = add(pc,##65472) } +# PLT: immext(#131008) +# PLT: r14 = add(pc,##131008) } # PLT: r28 = memw(r14+#0) } # PLT: jumpr r28 } -# TEXT: 10000: 00 00 02 00 00020000 +# TEXT: 10000: 00 00 01 00 00010000 # TEXT: { call 0x10050 } -# TEXT: r0 = add(r1,##65664) } +# TEXT: r0 = add(r1,##-65408) } # GOT: .got: -# GOT: 30080: 00 00 00 00 00000000 +# GOT: 20080: 00 00 00 00 00000000 Index: lld/trunk/test/ELF/i386-gotpc.s =================================================================== --- lld/trunk/test/ELF/i386-gotpc.s +++ lld/trunk/test/ELF/i386-gotpc.s @@ -6,23 +6,23 @@ movl $_GLOBAL_OFFSET_TABLE_, %eax -// CHECK: Name: .got.plt +// CHECK: Name: .got // CHECK-NEXT: Type: SHT_PROGBITS // CHECK-NEXT: Flags [ // CHECK-NEXT: SHF_ALLOC // CHECK-NEXT: SHF_WRITE // CHECK-NEXT: ] -// CHECK-NEXT: Address: 0x2000 +// CHECK-NEXT: Address: 0x2030 -// CHECK: Name: .got +// CHECK: Name: .got.plt // CHECK-NEXT: Type: SHT_PROGBITS // CHECK-NEXT: Flags [ // CHECK-NEXT: SHF_ALLOC // CHECK-NEXT: SHF_WRITE // CHECK-NEXT: ] -// CHECK-NEXT: Address: 0x3030 +// CHECK-NEXT: Address: 0x3000 // DISASM: Disassembly of section .text: // DISASM-NEXT: .text: -// DISASM-NEXT: 1000: {{.*}} movl $8240, %eax -// 0x3030 - 0x1000 = 0x2030 +// DISASM-NEXT: 1000: {{.*}} movl $4144, %eax +// 0x2030 - 0x1000 = 0x1030 Index: lld/trunk/test/ELF/i386-merge.s =================================================================== --- lld/trunk/test/ELF/i386-merge.s +++ lld/trunk/test/ELF/i386-merge.s @@ -27,8 +27,8 @@ // CHECK-NEXT: SHF_ALLOC // CHECK-NEXT: SHF_WRITE // CHECK-NEXT: ] -// CHECK-NEXT: Address: 0x1000 -// CHECK-NEXT: Offset: 0x1000 +// CHECK-NEXT: Address: 0x2000 +// CHECK-NEXT: Offset: 0x2000 // CHECK-NEXT: Size: 4 // CHECK-NEXT: Link: 0 // CHECK-NEXT: Info: 0 Index: lld/trunk/test/ELF/i386-retpoline-nopic-linkerscript.s =================================================================== --- lld/trunk/test/ELF/i386-retpoline-nopic-linkerscript.s +++ lld/trunk/test/ELF/i386-retpoline-nopic-linkerscript.s @@ -14,9 +14,9 @@ // CHECK: Disassembly of section .plt: // CHECK-NEXT: .plt: -// CHECK-NEXT: 10: ff 35 84 00 00 00 pushl 132 +// CHECK-NEXT: 10: ff 35 ec 00 00 00 pushl 236 // CHECK-NEXT: 16: 50 pushl %eax -// CHECK-NEXT: 17: a1 88 00 00 00 movl 136, %eax +// CHECK-NEXT: 17: a1 f0 00 00 00 movl 240, %eax // CHECK-NEXT: 1c: e8 0f 00 00 00 calll 15 <.plt+0x20> // CHECK-NEXT: 21: f3 90 pause // CHECK-NEXT: 23: 0f ae e8 lfence @@ -37,7 +37,7 @@ // CHECK-NEXT: 3e: c3 retl // CHECK-NEXT: 3f: cc int3 // CHECK-NEXT: 40: 50 pushl %eax -// CHECK-NEXT: 41: a1 8c 00 00 00 movl 140, %eax +// CHECK-NEXT: 41: a1 f4 00 00 00 movl 244, %eax // CHECK-NEXT: 46: e8 e5 ff ff ff calll -27 <.plt+0x20> // CHECK-NEXT: 4b: e9 d1 ff ff ff jmp -47 <.plt+0x11> // CHECK-NEXT: 50: 68 00 00 00 00 pushl $0 @@ -49,7 +49,7 @@ // CHECK-NEXT: 5e: cc int3 // CHECK-NEXT: 5f: cc int3 // CHECK-NEXT: 60: 50 pushl %eax -// CHECK-NEXT: 61: a1 90 00 00 00 movl 144, %eax +// CHECK-NEXT: 61: a1 f8 00 00 00 movl 248, %eax // CHECK-NEXT: 66: e8 c5 ff ff ff calll -59 <.plt+0x20> // CHECK-NEXT: 6b: e9 b1 ff ff ff jmp -79 <.plt+0x11> // CHECK-NEXT: 70: 68 08 00 00 00 pushl $8 Index: lld/trunk/test/ELF/i386-retpoline-nopic.s =================================================================== --- lld/trunk/test/ELF/i386-retpoline-nopic.s +++ lld/trunk/test/ELF/i386-retpoline-nopic.s @@ -8,9 +8,9 @@ // CHECK: Disassembly of section .plt: // CHECK-NEXT: .plt: -// CHECK-NEXT: 401010: ff 35 04 20 40 00 pushl 4202500 +// CHECK-NEXT: 401010: ff 35 04 30 40 00 pushl 4206596 // CHECK-NEXT: 401016: 50 pushl %eax -// CHECK-NEXT: 401017: a1 08 20 40 00 movl 4202504, %eax +// CHECK-NEXT: 401017: a1 08 30 40 00 movl 4206600, %eax // CHECK-NEXT: 40101c: e8 0f 00 00 00 calll 15 <.plt+0x20> // CHECK-NEXT: 401021: f3 90 pause // CHECK-NEXT: 401023: 0f ae e8 lfence @@ -31,7 +31,7 @@ // CHECK-NEXT: 40103e: c3 retl // CHECK-NEXT: 40103f: cc int3 // CHECK-NEXT: 401040: 50 pushl %eax -// CHECK-NEXT: 401041: a1 0c 20 40 00 movl 4202508, %eax +// CHECK-NEXT: 401041: a1 0c 30 40 00 movl 4206604, %eax // CHECK-NEXT: 401046: e8 e5 ff ff ff calll -27 <.plt+0x20> // CHECK-NEXT: 40104b: e9 d1 ff ff ff jmp -47 <.plt+0x11> // CHECK-NEXT: 401050: 68 00 00 00 00 pushl $0 @@ -43,7 +43,7 @@ // CHECK-NEXT: 40105e: cc int3 // CHECK-NEXT: 40105f: cc int3 // CHECK-NEXT: 401060: 50 pushl %eax -// CHECK-NEXT: 401061: a1 10 20 40 00 movl 4202512, %eax +// CHECK-NEXT: 401061: a1 10 30 40 00 movl 4206608, %eax // CHECK-NEXT: 401066: e8 c5 ff ff ff calll -59 <.plt+0x20> // CHECK-NEXT: 40106b: e9 b1 ff ff ff jmp -79 <.plt+0x11> // CHECK-NEXT: 401070: 68 08 00 00 00 pushl $8 @@ -56,7 +56,7 @@ // CHECK-NEXT: 40107f: cc int3 // CHECK: Contents of section .got.plt: -// CHECK-NEXT: 00304000 00000000 00000000 50104000 +// CHECK-NEXT: 00204000 00000000 00000000 50104000 // CHECK-NEXT: 70104000 .global _start Index: lld/trunk/test/ELF/i386-retpoline-pic-linkerscript.s =================================================================== --- lld/trunk/test/ELF/i386-retpoline-pic-linkerscript.s +++ lld/trunk/test/ELF/i386-retpoline-pic-linkerscript.s @@ -14,9 +14,9 @@ // CHECK: Disassembly of section .plt: // CHECK-NEXT: .plt: -// CHECK-NEXT: 10: ff b3 84 00 00 00 pushl 132(%ebx) +// CHECK-NEXT: 10: ff b3 ec 00 00 00 pushl 236(%ebx) // CHECK-NEXT: 16: 50 pushl %eax -// CHECK-NEXT: 17: 8b 83 88 00 00 00 movl 136(%ebx), %eax +// CHECK-NEXT: 17: 8b 83 f0 00 00 00 movl 240(%ebx), %eax // CHECK-NEXT: 1d: e8 0e 00 00 00 calll 14 <.plt+0x20> // CHECK-NEXT: 22: f3 90 pause // CHECK-NEXT: 24: 0f ae e8 lfence @@ -36,7 +36,7 @@ // CHECK-NEXT: 3e: c3 retl // CHECK-NEXT: 3f: cc int3 // CHECK-NEXT: 40: 50 pushl %eax -// CHECK-NEXT: 41: 8b 83 8c 00 00 00 movl 140(%ebx), %eax +// CHECK-NEXT: 41: 8b 83 f4 00 00 00 movl 244(%ebx), %eax // CHECK-NEXT: 47: e8 e4 ff ff ff calll -28 <.plt+0x20> // CHECK-NEXT: 4c: e9 d1 ff ff ff jmp -47 <.plt+0x12> // CHECK-NEXT: 51: 68 00 00 00 00 pushl $0 @@ -47,7 +47,7 @@ // CHECK-NEXT: 5e: cc int3 // CHECK-NEXT: 5f: cc int3 // CHECK-NEXT: 60: 50 pushl %eax -// CHECK-NEXT: 61: 8b 83 90 00 00 00 movl 144(%ebx), %eax +// CHECK-NEXT: 61: 8b 83 f8 00 00 00 movl 248(%ebx), %eax // CHECK-NEXT: 67: e8 c4 ff ff ff calll -60 <.plt+0x20> // CHECK-NEXT: 6c: e9 b1 ff ff ff jmp -79 <.plt+0x12> // CHECK-NEXT: 71: 68 08 00 00 00 pushl $8 Index: lld/trunk/test/ELF/i386-retpoline-pic.s =================================================================== --- lld/trunk/test/ELF/i386-retpoline-pic.s +++ lld/trunk/test/ELF/i386-retpoline-pic.s @@ -8,9 +8,9 @@ // CHECK: Disassembly of section .plt: // CHECK-NEXT: .plt: -// CHECK-NEXT: 1010: ff b3 04 20 00 00 pushl 8196(%ebx) +// CHECK-NEXT: 1010: ff b3 04 30 00 00 pushl 12292(%ebx) // CHECK-NEXT: 1016: 50 pushl %eax -// CHECK-NEXT: 1017: 8b 83 08 20 00 00 movl 8200(%ebx), %eax +// CHECK-NEXT: 1017: 8b 83 08 30 00 00 movl 12296(%ebx), %eax // CHECK-NEXT: 101d: e8 0e 00 00 00 calll 14 <.plt+0x20> // CHECK-NEXT: 1022: f3 90 pause // CHECK-NEXT: 1024: 0f ae e8 lfence @@ -30,7 +30,7 @@ // CHECK-NEXT: 103e: c3 retl // CHECK-NEXT: 103f: cc int3 // CHECK-NEXT: 1040: 50 pushl %eax -// CHECK-NEXT: 1041: 8b 83 0c 20 00 00 movl 8204(%ebx), %eax +// CHECK-NEXT: 1041: 8b 83 0c 30 00 00 movl 12300(%ebx), %eax // CHECK-NEXT: 1047: e8 e4 ff ff ff calll -28 <.plt+0x20> // CHECK-NEXT: 104c: e9 d1 ff ff ff jmp -47 <.plt+0x12> // CHECK-NEXT: 1051: 68 00 00 00 00 pushl $0 @@ -41,7 +41,7 @@ // CHECK-NEXT: 105e: cc int3 // CHECK-NEXT: 105f: cc int3 // CHECK-NEXT: 1060: 50 pushl %eax -// CHECK-NEXT: 1061: 8b 83 10 20 00 00 movl 8208(%ebx), %eax +// CHECK-NEXT: 1061: 8b 83 10 30 00 00 movl 12304(%ebx), %eax // CHECK-NEXT: 1067: e8 c4 ff ff ff calll -60 <.plt+0x20> // CHECK-NEXT: 106c: e9 b1 ff ff ff jmp -79 <.plt+0x12> // CHECK-NEXT: 1071: 68 08 00 00 00 pushl $8 @@ -53,8 +53,8 @@ // CHECK-NEXT: 107f: cc int3 // CHECK: Contents of section .got.plt: -// CHECK-NEXT: 2000 00300000 00000000 00000000 51100000 -// CHECK-NEXT: 2010 71100000 +// CHECK-NEXT: 3000 00200000 00000000 00000000 51100000 +// CHECK-NEXT: 3010 71100000 .global _start _start: Index: lld/trunk/test/ELF/linkerscript/align-section-offset.test =================================================================== --- lld/trunk/test/ELF/linkerscript/align-section-offset.test +++ lld/trunk/test/ELF/linkerscript/align-section-offset.test @@ -8,5 +8,5 @@ .foo : ALIGN(2M) { *(.foo) } } -# CHECK: .foo PROGBITS 0000000000200000 200000 000008 00 WA 0 0 2097152 -# CHECK: LOAD 0x200000 0x0000000000200000 0x0000000000200000 {{.*}} RW 0x200000 +# CHECK: .foo PROGBITS 0000000000200000 201000 000008 00 WA 0 0 2097152 +# CHECK: LOAD 0x001048 0x0000000000000048 0x0000000000000048 {{.*}} RW 0x200000 Index: lld/trunk/test/ELF/linkerscript/emit-reloc.s =================================================================== --- lld/trunk/test/ELF/linkerscript/emit-reloc.s +++ lld/trunk/test/ELF/linkerscript/emit-reloc.s @@ -9,9 +9,9 @@ # CHECK: Relocations [ # CHECK-NEXT: Section ({{.*}}) .rela.dyn { -# CHECK-NEXT: 0x68 R_X86_64_64 .foo 0x0 +# CHECK-NEXT: 0xF8 R_X86_64_64 .foo 0x0 # CHECK-NEXT: } # CHECK-NEXT: Section ({{.*}}) .rela.data { -# CHECK-NEXT: 0x68 R_X86_64_64 .foo 0x0 +# CHECK-NEXT: 0xF8 R_X86_64_64 .foo 0x0 # CHECK-NEXT: } # CHECK-NEXT: ] Index: lld/trunk/test/ELF/linkerscript/orphan.s =================================================================== --- lld/trunk/test/ELF/linkerscript/orphan.s +++ lld/trunk/test/ELF/linkerscript/orphan.s @@ -9,15 +9,15 @@ # RUN: ld.lld -o %t1 --script %t.script %t # RUN: llvm-objdump -section-headers %t1 | FileCheck %s -## .jcr is a relro section and should be placed after other RW sections. +## .jcr is a relro section and should be placed before other RW sections. ## .bss is SHT_NOBITS section and should be last RW section, so some space ## in ELF file could be saved. # CHECK: 0 00000000 0000000000000000 # CHECK-NEXT: 1 .text 00000000 0000000000000000 TEXT -# CHECK-NEXT: 2 .rw1 00000008 0000000000000000 DATA -# CHECK-NEXT: 3 .rw2 00000008 0000000000000008 DATA -# CHECK-NEXT: 4 .rw3 00000008 0000000000000010 DATA -# CHECK-NEXT: 5 .jcr 00000008 0000000000000018 DATA +# CHECK-NEXT: 2 .jcr 00000008 0000000000000000 DATA +# CHECK-NEXT: 3 .rw1 00000008 0000000000000008 DATA +# CHECK-NEXT: 4 .rw2 00000008 0000000000000010 DATA +# CHECK-NEXT: 5 .rw3 00000008 0000000000000018 DATA # CHECK-NEXT: 6 .bss 00000008 0000000000000020 BSS .section .rw1, "aw" Index: lld/trunk/test/ELF/linkerscript/out-of-order.s =================================================================== --- lld/trunk/test/ELF/linkerscript/out-of-order.s +++ lld/trunk/test/ELF/linkerscript/out-of-order.s @@ -24,8 +24,8 @@ # CHECK: Sections: # CHECK-NEXT: Idx Name Size VMA Type # CHECK-NEXT: 0 00000000 0000000000000000 -# CHECK-NEXT: 1 .data 00000008 0000000000004000 -# CHECK-NEXT: 2 .dynamic 00000060 0000000000004008 +# CHECK-NEXT: 1 .dynamic 00000060 0000000000000000 +# CHECK-NEXT: 2 .data 00000008 0000000000004000 # CHECK-NEXT: 3 .dynsym 00000018 0000000000002000 # CHECK-NEXT: 4 .dynstr 00000001 0000000000002018 # CHECK-NEXT: 5 .hash 00000010 000000000000201c Index: lld/trunk/test/ELF/linkerscript/overlapping-sections.s =================================================================== --- lld/trunk/test/ELF/linkerscript/overlapping-sections.s +++ lld/trunk/test/ELF/linkerscript/overlapping-sections.s @@ -24,11 +24,11 @@ # BAD-LMA-LABEL: Program Headers: # BAD-LMA-NEXT: Type Offset VirtAddr PhysAddr FileSiz MemSiz Flg Align # BAD-LMA-NEXT: LOAD 0x001000 0x0000000000000000 0x0000000000000000 0x000100 0x000100 R E 0x1000 +# BAD-LMA-NEXT: LOAD 0x001100 0x0000000000000100 0x0000000000000100 0x000070 0x000070 RW 0x1000 # BAD-LMA-NEXT: LOAD 0x002000 0x0000000000008000 0x0000000000008000 0x000100 0x000100 RW 0x1000 -# BAD-LMA-NEXT: LOAD 0x002800 0x0000000000008800 0x0000000000008080 0x000170 0x000170 RW 0x1000 # BAD-LMA-LABEL: Section to Segment mapping: -# BAD-LMA: 01 .sec1 -# BAD-LMA: 02 .sec2 .dynamic +# BAD-LMA: 01 .text .dynamic +# BAD-LMA: 02 .sec1 # Now try a script where the virtual memory addresses overlap but ensure that the # load addresses don't: @@ -50,11 +50,11 @@ # BAD-VADDR-LABEL: Program Headers: # BAD-VADDR-NEXT: Type Offset VirtAddr PhysAddr FileSiz MemSiz Flg Align # BAD-VADDR-NEXT: LOAD 0x001000 0x0000000000000000 0x0000000000000000 0x000100 0x000100 R E 0x1000 +# BAD-VADDR-NEXT: LOAD 0x001100 0x0000000000000100 0x0000000000000100 0x000070 0x000070 RW 0x1000 # BAD-VADDR-NEXT: LOAD 0x002000 0x0000000000008000 0x0000000000008000 0x000100 0x000100 RW 0x1000 -# BAD-VADDR-NEXT: LOAD 0x003020 0x0000000000008020 0x0000000000008800 0x000170 0x000170 RW 0x1000 # BAD-VADDR-LABEL: Section to Segment mapping: -# BAD-VADDR: 01 .sec1 -# BAD-VADDR: 02 .sec2 .dynamic +# BAD-VADDR: 01 .text .dynamic +# BAD-VADDR: 02 .sec1 # Finally check the case where both LMA and vaddr overlap @@ -66,8 +66,8 @@ # RUN: not ld.lld -o %t.so --script %t-both-overlap.script %t.o -shared 2>&1 | FileCheck %s -check-prefix BOTH-OVERLAP-ERR # BOTH-OVERLAP-ERR: error: section .sec1 file range overlaps with .sec2 -# BOTH-OVERLAP-ERR-NEXT: >>> .sec1 range is [0x2000, 0x20FF] -# BOTH-OVERLAP-ERR-NEXT: >>> .sec2 range is [0x2040, 0x213F] +# BOTH-OVERLAP-ERR-NEXT: >>> .sec1 range is [0x9000, 0x90FF] +# BOTH-OVERLAP-ERR-NEXT: >>> .sec2 range is [0x9040, 0x913F] # BOTH-OVERLAP-ERR: error: section .sec1 virtual address range overlaps with .sec2 # BOTH-OVERLAP-ERR-NEXT: >>> .sec1 range is [0x8000, 0x80FF] # BOTH-OVERLAP-ERR-NEXT: >>> .sec2 range is [0x8040, 0x813F] @@ -93,14 +93,14 @@ # RUN: llvm-readobj -sections -program-headers -elf-output-style=GNU %t.so | FileCheck %s -check-prefix BAD-BOTH # BAD-BOTH-LABEL: Section Headers: -# BAD-BOTH: .sec1 PROGBITS 0000000000008000 002000 000100 00 WA 0 0 1 -# BAD-BOTH: .sec2 PROGBITS 0000000000008040 002040 000100 00 WA 0 0 1 +# BAD-BOTH: .sec1 PROGBITS 0000000000008000 009000 000100 00 WA 0 0 1 +# BAD-BOTH: .sec2 PROGBITS 0000000000008040 009040 000100 00 WA 0 0 1 # BAD-BOTH-LABEL: Program Headers: # BAD-BOTH-NEXT: Type Offset VirtAddr PhysAddr FileSiz MemSiz Flg Align # BAD-BOTH-NEXT: LOAD 0x001000 0x0000000000000000 0x0000000000000000 0x000100 0x000100 R E 0x1000 -# BAD-BOTH-NEXT: LOAD 0x002000 0x0000000000008000 0x0000000000008000 0x0001b0 0x0001b0 RW 0x1000 +# BAD-BOTH-NEXT: LOAD 0x001100 0x0000000000000100 0x0000000000000100 0x008040 0x008040 RW 0x1000 # BAD-BOTH-LABEL: Section to Segment mapping: -# BAD-BOTH: 01 .sec1 .sec2 .dynamic +# BAD-BOTH: 01 .text .dynamic .sec1 .sec2 .section .first_sec,"aw",@progbits .rept 0x100 Index: lld/trunk/test/ELF/linkerscript/repsection-symbol.s =================================================================== --- lld/trunk/test/ELF/linkerscript/repsection-symbol.s +++ lld/trunk/test/ELF/linkerscript/repsection-symbol.s @@ -10,13 +10,13 @@ # RUN: llvm-readobj -t %t1 | FileCheck %s # CHECK: Name: foo1 -# CHECK-NEXT: Value: 0x228 +# CHECK-NEXT: Value: 0x288 # CHECK: Name: foo2 -# CHECK-NEXT: Value: 0x230 +# CHECK-NEXT: Value: 0x290 # CHECK: Name: foo3 -# CHECK-NEXT: Value: 0x234 +# CHECK-NEXT: Value: 0x294 .section .foo.1,"a" .long 1 Index: lld/trunk/test/ELF/linkerscript/sort-non-script.s =================================================================== --- lld/trunk/test/ELF/linkerscript/sort-non-script.s +++ lld/trunk/test/ELF/linkerscript/sort-non-script.s @@ -9,8 +9,8 @@ # CHECK-NEXT: .hash {{.*}} A # CHECK-NEXT: .dynstr {{.*}} A # CHECK-NEXT: .text {{.*}} AX -# CHECK-NEXT: foo {{.*}} WA # CHECK-NEXT: .dynamic {{.*}} WA +# CHECK-NEXT: foo {{.*}} WA .section foo, "aw" .byte 0 Index: lld/trunk/test/ELF/linkerscript/version-linker-symbol.s =================================================================== --- lld/trunk/test/ELF/linkerscript/version-linker-symbol.s +++ lld/trunk/test/ELF/linkerscript/version-linker-symbol.s @@ -11,7 +11,7 @@ # CHECK-NEXT: Binding: Global # CHECK-NEXT: Type: None # CHECK-NEXT: Other: 0 -# CHECK-NEXT: Section: .dynamic +# CHECK-NEXT: Section: .data # CHECK: Name: foo@@VER1 # CHECK-NEXT: Value: 0 Index: lld/trunk/test/ELF/lto/undefined-puts.ll =================================================================== --- lld/trunk/test/ELF/lto/undefined-puts.ll +++ lld/trunk/test/ELF/lto/undefined-puts.ll @@ -20,7 +20,7 @@ ; Check that puts symbol is present in the dynamic symbol table and ; there's a relocation for it. ; CHECK: Dynamic Relocations { -; CHECK-NEXT: 0x202018 R_X86_64_JUMP_SLOT puts 0x0 +; CHECK-NEXT: 0x203018 R_X86_64_JUMP_SLOT puts 0x0 ; CHECK-NEXT: } ; CHECK: DynamicSymbols [ Index: lld/trunk/test/ELF/lto/visibility.ll =================================================================== --- lld/trunk/test/ELF/lto/visibility.ll +++ lld/trunk/test/ELF/lto/visibility.ll @@ -16,7 +16,7 @@ ; CHECK-NEXT: Section: .text ; CHECK: Name: a -; CHECK-NEXT: Value: 0x2000 +; CHECK-NEXT: Value: 0x3000 ; CHECK-NEXT: Size: 0 ; CHECK-NEXT: Binding: Local ; CHECK-NEXT: Type: None Index: lld/trunk/test/ELF/map-file.s =================================================================== --- lld/trunk/test/ELF/map-file.s +++ lld/trunk/test/ELF/map-file.s @@ -75,17 +75,17 @@ // CHECK-NEXT: 201030 201030 30 16 :(.plt) // CHECK-NEXT: 201040 201040 0 1 sharedFunc1 // CHECK-NEXT: 201050 201050 0 1 sharedFunc2 -// CHECK-NEXT: 202000 202000 28 8 .got.plt -// CHECK-NEXT: 202000 202000 28 8 :(.got.plt) -// CHECK-NEXT: 203000 203000 100 8 .dynamic -// CHECK-NEXT: 203000 203000 100 8 :(.dynamic) -// CHECK-NEXT: 204000 204000 10 16 .bss -// CHECK-NEXT: 204000 204000 4 16 {{.*}}{{/|\\}}map-file.s.tmp1.o:(COMMON) -// CHECK-NEXT: 204000 204000 4 1 common -// CHECK-NEXT: 204004 204004 4 1 :(.bss) -// CHECK-NEXT: 204004 204004 4 1 sharedFoo -// CHECK-NEXT: 204008 204008 8 1 :(.bss) -// CHECK-NEXT: 204008 204008 8 1 sharedBar +// CHECK-NEXT: 202000 202000 100 8 .dynamic +// CHECK-NEXT: 202000 202000 100 8 :(.dynamic) +// CHECK-NEXT: 203000 203000 28 8 .got.plt +// CHECK-NEXT: 203000 203000 28 8 :(.got.plt) +// CHECK-NEXT: 203030 203030 10 16 .bss +// CHECK-NEXT: 203030 203030 4 16 {{.*}}{{/|\\}}map-file.s.tmp1.o:(COMMON) +// CHECK-NEXT: 203030 203030 4 1 common +// CHECK-NEXT: 203034 203034 4 1 :(.bss) +// CHECK-NEXT: 203034 203034 4 1 sharedFoo +// CHECK-NEXT: 203038 203038 8 1 :(.bss) +// CHECK-NEXT: 203038 203038 8 1 sharedBar // CHECK-NEXT: 0 0 8 1 .comment // CHECK-NEXT: 0 0 8 1 :(.comment) // CHECK-NEXT: 0 0 198 8 .symtab Index: lld/trunk/test/ELF/merge-section-types.s =================================================================== --- lld/trunk/test/ELF/merge-section-types.s +++ lld/trunk/test/ELF/merge-section-types.s @@ -9,8 +9,8 @@ // CHECK-NEXT: SHF_ALLOC // CHECK-NEXT: SHF_WRITE // CHECK-NEXT: ] -// CHECK-NEXT: Address: 0x1000 -// CHECK-NEXT: Offset: 0x1000 +// CHECK-NEXT: Address: 0x2000 +// CHECK-NEXT: Offset: 0x2000 // CHECK-NEXT: Size: 16 .section .foo, "aw", @progbits, unique, 1 Index: lld/trunk/test/ELF/mips-mgot.s =================================================================== --- lld/trunk/test/ELF/mips-mgot.s +++ lld/trunk/test/ELF/mips-mgot.s @@ -11,11 +11,11 @@ # RUN: llvm-readobj -r -dt -mips-plt-got %t.so | FileCheck -check-prefix=GOT %s # CHECK: Contents of section .got: -# CHECK-NEXT: 60000 00000000 80000000 00010000 00010030 -# CHECK-NEXT: 60010 00000000 00000004 00020000 00030000 -# CHECK-NEXT: 60020 00040000 00050000 00060000 00070000 -# CHECK-NEXT: 60030 00000000 00000000 00000000 00000000 -# CHECK-NEXT: 60040 00000000 00000000 00000000 +# CHECK-NEXT: 70000 00000000 80000000 00010000 00010030 +# CHECK-NEXT: 70010 00000000 00000004 00030000 00040000 +# CHECK-NEXT: 70020 00050000 00060000 00070000 00080000 +# CHECK-NEXT: 70030 00000000 00000000 00000000 00000000 +# CHECK-NEXT: 70040 00000000 00000000 00000000 # CHECK: SYMBOL TABLE: # CHECK: 00000000 l O .tdata 00000000 loc0 @@ -28,20 +28,20 @@ # GOT: Relocations [ # GOT-NEXT: Section (7) .rel.dyn { -# GOT-NEXT: 0x60018 R_MIPS_REL32 - 0x0 -# GOT-NEXT: 0x6001C R_MIPS_REL32 - 0x0 -# GOT-NEXT: 0x60020 R_MIPS_REL32 - 0x0 -# GOT-NEXT: 0x60024 R_MIPS_REL32 - 0x0 -# GOT-NEXT: 0x60028 R_MIPS_REL32 - 0x0 -# GOT-NEXT: 0x6002C R_MIPS_REL32 - 0x0 -# GOT-NEXT: 0x60030 R_MIPS_REL32 foo0 0x0 -# GOT-NEXT: 0x60034 R_MIPS_REL32 foo2 0x0 -# GOT-NEXT: 0x60044 R_MIPS_TLS_DTPMOD32 - 0x0 -# GOT-NEXT: 0x60010 R_MIPS_TLS_TPREL32 tls0 0x0 -# GOT-NEXT: 0x60038 R_MIPS_TLS_TPREL32 tls0 0x0 -# GOT-NEXT: 0x6003C R_MIPS_TLS_DTPMOD32 tls0 0x0 -# GOT-NEXT: 0x60040 R_MIPS_TLS_DTPREL32 tls0 0x0 -# GOT-NEXT: 0x60014 R_MIPS_TLS_TPREL32 tls1 0x0 +# GOT-NEXT: 0x70018 R_MIPS_REL32 - 0x0 +# GOT-NEXT: 0x7001C R_MIPS_REL32 - 0x0 +# GOT-NEXT: 0x70020 R_MIPS_REL32 - 0x0 +# GOT-NEXT: 0x70024 R_MIPS_REL32 - 0x0 +# GOT-NEXT: 0x70028 R_MIPS_REL32 - 0x0 +# GOT-NEXT: 0x7002C R_MIPS_REL32 - 0x0 +# GOT-NEXT: 0x70030 R_MIPS_REL32 foo0 0x0 +# GOT-NEXT: 0x70034 R_MIPS_REL32 foo2 0x0 +# GOT-NEXT: 0x70044 R_MIPS_TLS_DTPMOD32 - 0x0 +# GOT-NEXT: 0x70010 R_MIPS_TLS_TPREL32 tls0 0x0 +# GOT-NEXT: 0x70038 R_MIPS_TLS_TPREL32 tls0 0x0 +# GOT-NEXT: 0x7003C R_MIPS_TLS_DTPMOD32 tls0 0x0 +# GOT-NEXT: 0x70040 R_MIPS_TLS_DTPREL32 tls0 0x0 +# GOT-NEXT: 0x70014 R_MIPS_TLS_TPREL32 tls1 0x0 # GOT-NEXT: } # GOT-NEXT: ] @@ -57,7 +57,7 @@ # GOT-NEXT: ] # GOT: Primary GOT { -# GOT-NEXT: Canonical gp value: 0x67FF0 +# GOT-NEXT: Canonical gp value: 0x77FF0 # GOT-NEXT: Reserved entries [ # GOT-NEXT: Entry { # GOT-NEXT: Address: Index: lld/trunk/test/ELF/mips-tls-64.s =================================================================== --- lld/trunk/test/ELF/mips-tls-64.s +++ lld/trunk/test/ELF/mips-tls-64.s @@ -22,11 +22,11 @@ # DIS-NEXT: 20010: 24 62 80 28 addiu $2, $3, -32728 # DIS: Contents of section .got: -# DIS-NEXT: 30010 00000000 00000000 80000000 00000000 -# DIS-NEXT: 30020 00000000 00000000 ffffffff ffff9004 -# DIS-NEXT: 30030 00000000 00000000 00000000 00000000 -# DIS-NEXT: 30040 00000000 00000001 00000000 00000000 -# DIS-NEXT: 30050 00000000 00000001 ffffffff ffff8004 +# DIS-NEXT: 40010 00000000 00000000 80000000 00000000 +# DIS-NEXT: 40020 00000000 00000000 ffffffff ffff9004 +# DIS-NEXT: 40030 00000000 00000000 00000000 00000000 +# DIS-NEXT: 40040 00000000 00000001 00000000 00000000 +# DIS-NEXT: 40050 00000000 00000001 ffffffff ffff8004 # DIS: 0000000000000000 l O .tdata 00000000 loc # DIS: 0000000000000004 g O .tdata 00000000 bar @@ -34,13 +34,13 @@ # CHECK: Relocations [ # CHECK-NEXT: Section (7) .rel.dyn { -# CHECK-NEXT: 0x30020 R_MIPS_TLS_TPREL64/R_MIPS_NONE/R_MIPS_NONE foo 0x0 -# CHECK-NEXT: 0x30030 R_MIPS_TLS_DTPMOD64/R_MIPS_NONE/R_MIPS_NONE foo 0x0 -# CHECK-NEXT: 0x30038 R_MIPS_TLS_DTPREL64/R_MIPS_NONE/R_MIPS_NONE foo 0x0 +# CHECK-NEXT: 0x40020 R_MIPS_TLS_TPREL64/R_MIPS_NONE/R_MIPS_NONE foo 0x0 +# CHECK-NEXT: 0x40030 R_MIPS_TLS_DTPMOD64/R_MIPS_NONE/R_MIPS_NONE foo 0x0 +# CHECK-NEXT: 0x40038 R_MIPS_TLS_DTPREL64/R_MIPS_NONE/R_MIPS_NONE foo 0x0 # CHECK-NEXT: } # CHECK-NEXT: ] # CHECK-NEXT: Primary GOT { -# CHECK-NEXT: Canonical gp value: 0x38000 +# CHECK-NEXT: Canonical gp value: 0x48000 # CHECK-NEXT: Reserved entries [ # CHECK: ] # CHECK-NEXT: Local entries [ @@ -58,25 +58,25 @@ # ^-- -32680 VA - 0x8000 bar # DIS-SO: Contents of section .got: -# DIS-SO-NEXT: 20000 00000000 00000000 80000000 00000000 -# DIS-SO-NEXT: 20010 00000000 00000000 00000000 00000004 -# DIS-SO-NEXT: 20020 00000000 00000000 00000000 00000000 -# DIS-SO-NEXT: 20030 00000000 00000000 00000000 00000000 -# DIS-SO-NEXT: 20040 00000000 00000000 00000000 00000000 +# DIS-SO-NEXT: 30000 00000000 00000000 80000000 00000000 +# DIS-SO-NEXT: 30010 00000000 00000000 00000000 00000004 +# DIS-SO-NEXT: 30020 00000000 00000000 00000000 00000000 +# DIS-SO-NEXT: 30030 00000000 00000000 00000000 00000000 +# DIS-SO-NEXT: 30040 00000000 00000000 00000000 00000000 # SO: Relocations [ # SO-NEXT: Section (7) .rel.dyn { -# SO-NEXT: 0x20030 R_MIPS_TLS_DTPMOD64/R_MIPS_NONE/R_MIPS_NONE - 0x0 -# SO-NEXT: 0x20018 R_MIPS_TLS_TPREL64/R_MIPS_NONE/R_MIPS_NONE bar 0x0 -# SO-NEXT: 0x20040 R_MIPS_TLS_DTPMOD64/R_MIPS_NONE/R_MIPS_NONE bar 0x0 -# SO-NEXT: 0x20048 R_MIPS_TLS_DTPREL64/R_MIPS_NONE/R_MIPS_NONE bar 0x0 -# SO-NEXT: 0x20010 R_MIPS_TLS_TPREL64/R_MIPS_NONE/R_MIPS_NONE foo 0x0 -# SO-NEXT: 0x20020 R_MIPS_TLS_DTPMOD64/R_MIPS_NONE/R_MIPS_NONE foo 0x0 -# SO-NEXT: 0x20028 R_MIPS_TLS_DTPREL64/R_MIPS_NONE/R_MIPS_NONE foo 0x0 +# SO-NEXT: 0x30030 R_MIPS_TLS_DTPMOD64/R_MIPS_NONE/R_MIPS_NONE - 0x0 +# SO-NEXT: 0x30018 R_MIPS_TLS_TPREL64/R_MIPS_NONE/R_MIPS_NONE bar 0x0 +# SO-NEXT: 0x30040 R_MIPS_TLS_DTPMOD64/R_MIPS_NONE/R_MIPS_NONE bar 0x0 +# SO-NEXT: 0x30048 R_MIPS_TLS_DTPREL64/R_MIPS_NONE/R_MIPS_NONE bar 0x0 +# SO-NEXT: 0x30010 R_MIPS_TLS_TPREL64/R_MIPS_NONE/R_MIPS_NONE foo 0x0 +# SO-NEXT: 0x30020 R_MIPS_TLS_DTPMOD64/R_MIPS_NONE/R_MIPS_NONE foo 0x0 +# SO-NEXT: 0x30028 R_MIPS_TLS_DTPREL64/R_MIPS_NONE/R_MIPS_NONE foo 0x0 # SO-NEXT: } # SO-NEXT: ] # SO-NEXT: Primary GOT { -# SO-NEXT: Canonical gp value: 0x27FF0 +# SO-NEXT: Canonical gp value: 0x37FF0 # SO-NEXT: Reserved entries [ # SO: ] # SO-NEXT: Local entries [ Index: lld/trunk/test/ELF/mips-tls-static-64.s =================================================================== --- lld/trunk/test/ELF/mips-tls-static-64.s +++ lld/trunk/test/ELF/mips-tls-static-64.s @@ -7,8 +7,8 @@ # RUN: llvm-objdump -s -t %t.exe | FileCheck %s # CHECK: Contents of section .data: -# CHECK-NEXT: 30000 00020004 ffffffff ffff8004 ffffffff -# CHECK-NEXT: 30010 ffff9004 +# CHECK-NEXT: 40000 00020004 ffffffff ffff8004 ffffffff +# CHECK-NEXT: 40010 ffff9004 # # CHECK: SYMBOL TABLE: # CHECK: 0000000000020004 .text 00000000 __tls_get_addr Index: lld/trunk/test/ELF/mips-tls-static.s =================================================================== --- lld/trunk/test/ELF/mips-tls-static.s +++ lld/trunk/test/ELF/mips-tls-static.s @@ -7,10 +7,10 @@ # RUN: llvm-objdump -s -t %t.exe | FileCheck %s # CHECK: Contents of section .data: -# CHECK-NEXT: 30000 0002000c ffff8004 ffff9004 +# CHECK-NEXT: 40000 0002000c ffff8004 ffff9004 # CHECK: Contents of section .got: -# CHECK-NEXT: 30010 00000000 80000000 ffff9000 00000001 -# CHECK-NEXT: 30020 ffff8000 00000001 00000000 +# CHECK-NEXT: 40010 00000000 80000000 ffff9000 00000001 +# CHECK-NEXT: 40020 ffff8000 00000001 00000000 # # CHECK: SYMBOL TABLE: # CHECK: 0002000c .text 00000000 __tls_get_addr Index: lld/trunk/test/ELF/mips-tls.s =================================================================== --- lld/trunk/test/ELF/mips-tls.s +++ lld/trunk/test/ELF/mips-tls.s @@ -22,9 +22,9 @@ # DIS-NEXT: 20010: 24 62 80 1c addiu $2, $3, -32740 # DIS: Contents of section .got: -# DIS-NEXT: 30010 00000000 80000000 00000000 ffff9004 -# DIS-NEXT: 30020 00000000 00000000 00000001 00000000 -# DIS-NEXT: 30030 00000001 ffff8004 +# DIS-NEXT: 40010 00000000 80000000 00000000 ffff9004 +# DIS-NEXT: 40020 00000000 00000000 00000001 00000000 +# DIS-NEXT: 40030 00000001 ffff8004 # DIS: 00000000 l O .tdata 00000000 loc # DIS: 00000004 g O .tdata 00000000 bar @@ -32,13 +32,13 @@ # CHECK: Relocations [ # CHECK-NEXT: Section (7) .rel.dyn { -# CHECK-NEXT: 0x30018 R_MIPS_TLS_TPREL32 foo 0x0 -# CHECK-NEXT: 0x30020 R_MIPS_TLS_DTPMOD32 foo 0x0 -# CHECK-NEXT: 0x30024 R_MIPS_TLS_DTPREL32 foo 0x0 +# CHECK-NEXT: 0x40018 R_MIPS_TLS_TPREL32 foo 0x0 +# CHECK-NEXT: 0x40020 R_MIPS_TLS_DTPMOD32 foo 0x0 +# CHECK-NEXT: 0x40024 R_MIPS_TLS_DTPREL32 foo 0x0 # CHECK-NEXT: } # CHECK-NEXT: ] # CHECK-NEXT: Primary GOT { -# CHECK-NEXT: Canonical gp value: 0x38000 +# CHECK-NEXT: Canonical gp value: 0x48000 # CHECK-NEXT: Reserved entries [ # CHECK: ] # CHECK-NEXT: Local entries [ @@ -56,23 +56,23 @@ # ^-- -32716 VA - 0x8000 bar # DIS-SO: Contents of section .got: -# DIS-SO-NEXT: 20000 00000000 80000000 00000000 00000004 -# DIS-SO-NEXT: 20010 00000000 00000000 00000000 00000000 -# DIS-SO-NEXT: 20020 00000000 00000000 +# DIS-SO-NEXT: 30000 00000000 80000000 00000000 00000004 +# DIS-SO-NEXT: 30010 00000000 00000000 00000000 00000000 +# DIS-SO-NEXT: 30020 00000000 00000000 # SO: Relocations [ # SO-NEXT: Section (7) .rel.dyn { -# SO-NEXT: 0x20018 R_MIPS_TLS_DTPMOD32 - 0x0 -# SO-NEXT: 0x2000C R_MIPS_TLS_TPREL32 bar 0x0 -# SO-NEXT: 0x20020 R_MIPS_TLS_DTPMOD32 bar 0x0 -# SO-NEXT: 0x20024 R_MIPS_TLS_DTPREL32 bar 0x0 -# SO-NEXT: 0x20008 R_MIPS_TLS_TPREL32 foo 0x0 -# SO-NEXT: 0x20010 R_MIPS_TLS_DTPMOD32 foo 0x0 -# SO-NEXT: 0x20014 R_MIPS_TLS_DTPREL32 foo 0x0 +# SO-NEXT: 0x30018 R_MIPS_TLS_DTPMOD32 - 0x0 +# SO-NEXT: 0x3000C R_MIPS_TLS_TPREL32 bar 0x0 +# SO-NEXT: 0x30020 R_MIPS_TLS_DTPMOD32 bar 0x0 +# SO-NEXT: 0x30024 R_MIPS_TLS_DTPREL32 bar 0x0 +# SO-NEXT: 0x30008 R_MIPS_TLS_TPREL32 foo 0x0 +# SO-NEXT: 0x30010 R_MIPS_TLS_DTPMOD32 foo 0x0 +# SO-NEXT: 0x30014 R_MIPS_TLS_DTPREL32 foo 0x0 # SO-NEXT: } # SO-NEXT: ] # SO-NEXT: Primary GOT { -# SO-NEXT: Canonical gp value: 0x27FF0 +# SO-NEXT: Canonical gp value: 0x37FF0 # SO-NEXT: Reserved entries [ # SO: ] # SO-NEXT: Local entries [ 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 @@ -18,15 +18,15 @@ // CHECK-NEXT: ] // CHECK-NEXT: Address: 0x210 // CHECK-NEXT: Offset: 0x210 -// CHECK-NEXT: Size: 21 +// CHECK-NEXT: Size: 22 // CHECK: Name: x (43) // CHECK-NEXT: Type: SHT_PROGBITS (0x1) // CHECK-NEXT: Flags [ (0x2) // CHECK-NEXT: SHF_ALLOC (0x2) // CHECK-NEXT: ] -// CHECK-NEXT: Address: 0x225 -// CHECK-NEXT: Offset: 0x225 +// CHECK-NEXT: Address: 0x226 +// CHECK-NEXT: Offset: 0x226 // CHECK-NEXT: Size: 64980 // CHECK: Name: barr (45) @@ -38,14 +38,14 @@ // CHECK-NEXT: Offset: 0xFFFA // CHECK-NEXT: Size: 0 -// CHECK: Name: foo (62) +// CHECK: Name: foo (71) // CHECK-NEXT: Type: SHT_PROGBITS (0x1) // CHECK-NEXT: Flags [ (0x3) // CHECK-NEXT: SHF_ALLOC (0x2) // CHECK-NEXT: SHF_WRITE (0x1) // CHECK-NEXT: ] -// CHECK-NEXT: Address: 0x10004 -// CHECK-NEXT: Offset: 0x10004 +// CHECK-NEXT: Address: 0x20004 +// CHECK-NEXT: Offset: 0x20004 // CHECK-NEXT: Size: 12 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 @@ -8,36 +8,36 @@ // Unpacked should have the relative relocations in their natural order. // UNPACKED32: Section ({{.+}}) .rel.dyn { -// UNPACKED32-NEXT: 0x1000 R_ARM_RELATIVE - 0x0 -// UNPACKED32-NEXT: 0x1004 R_ARM_RELATIVE - 0x0 -// UNPACKED32-NEXT: 0x1008 R_ARM_RELATIVE - 0x0 -// UNPACKED32-NEXT: 0x100C R_ARM_RELATIVE - 0x0 -// UNPACKED32-NEXT: 0x1010 R_ARM_RELATIVE - 0x0 -// UNPACKED32-NEXT: 0x1014 R_ARM_RELATIVE - 0x0 -// UNPACKED32-NEXT: 0x1018 R_ARM_RELATIVE - 0x0 -// UNPACKED32-NEXT: 0x101C R_ARM_RELATIVE - 0x0 - -// UNPACKED32-NEXT: 0x1024 R_ARM_RELATIVE - 0x0 -// UNPACKED32-NEXT: 0x1028 R_ARM_RELATIVE - 0x0 -// UNPACKED32-NEXT: 0x102C R_ARM_RELATIVE - 0x0 -// UNPACKED32-NEXT: 0x1030 R_ARM_RELATIVE - 0x0 -// UNPACKED32-NEXT: 0x1034 R_ARM_RELATIVE - 0x0 -// UNPACKED32-NEXT: 0x1038 R_ARM_RELATIVE - 0x0 -// UNPACKED32-NEXT: 0x103C R_ARM_RELATIVE - 0x0 - -// UNPACKED32-NEXT: 0x1044 R_ARM_RELATIVE - 0x0 -// UNPACKED32-NEXT: 0x1048 R_ARM_RELATIVE - 0x0 -// UNPACKED32-NEXT: 0x104C R_ARM_RELATIVE - 0x0 -// UNPACKED32-NEXT: 0x1050 R_ARM_RELATIVE - 0x0 -// UNPACKED32-NEXT: 0x1054 R_ARM_RELATIVE - 0x0 -// UNPACKED32-NEXT: 0x1058 R_ARM_RELATIVE - 0x0 -// UNPACKED32-NEXT: 0x105C R_ARM_RELATIVE - 0x0 -// UNPACKED32-NEXT: 0x1060 R_ARM_RELATIVE - 0x0 -// UNPACKED32-NEXT: 0x1064 R_ARM_RELATIVE - 0x0 - -// UNPACKED32-NEXT: 0x1069 R_ARM_RELATIVE - 0x0 -// UNPACKED32-NEXT: 0x1020 R_ARM_ABS32 bar2 0x0 -// UNPACKED32-NEXT: 0x1040 R_ARM_ABS32 zed2 0x0 +// UNPACKED32-NEXT: 0x2000 R_ARM_RELATIVE - 0x0 +// UNPACKED32-NEXT: 0x2004 R_ARM_RELATIVE - 0x0 +// UNPACKED32-NEXT: 0x2008 R_ARM_RELATIVE - 0x0 +// UNPACKED32-NEXT: 0x200C R_ARM_RELATIVE - 0x0 +// UNPACKED32-NEXT: 0x2010 R_ARM_RELATIVE - 0x0 +// UNPACKED32-NEXT: 0x2014 R_ARM_RELATIVE - 0x0 +// UNPACKED32-NEXT: 0x2018 R_ARM_RELATIVE - 0x0 +// UNPACKED32-NEXT: 0x201C R_ARM_RELATIVE - 0x0 + +// UNPACKED32-NEXT: 0x2024 R_ARM_RELATIVE - 0x0 +// UNPACKED32-NEXT: 0x2028 R_ARM_RELATIVE - 0x0 +// UNPACKED32-NEXT: 0x202C R_ARM_RELATIVE - 0x0 +// UNPACKED32-NEXT: 0x2030 R_ARM_RELATIVE - 0x0 +// UNPACKED32-NEXT: 0x2034 R_ARM_RELATIVE - 0x0 +// UNPACKED32-NEXT: 0x2038 R_ARM_RELATIVE - 0x0 +// UNPACKED32-NEXT: 0x203C R_ARM_RELATIVE - 0x0 + +// UNPACKED32-NEXT: 0x2044 R_ARM_RELATIVE - 0x0 +// UNPACKED32-NEXT: 0x2048 R_ARM_RELATIVE - 0x0 +// UNPACKED32-NEXT: 0x204C R_ARM_RELATIVE - 0x0 +// UNPACKED32-NEXT: 0x2050 R_ARM_RELATIVE - 0x0 +// UNPACKED32-NEXT: 0x2054 R_ARM_RELATIVE - 0x0 +// UNPACKED32-NEXT: 0x2058 R_ARM_RELATIVE - 0x0 +// UNPACKED32-NEXT: 0x205C R_ARM_RELATIVE - 0x0 +// UNPACKED32-NEXT: 0x2060 R_ARM_RELATIVE - 0x0 +// UNPACKED32-NEXT: 0x2064 R_ARM_RELATIVE - 0x0 + +// UNPACKED32-NEXT: 0x2069 R_ARM_RELATIVE - 0x0 +// UNPACKED32-NEXT: 0x2020 R_ARM_ABS32 bar2 0x0 +// UNPACKED32-NEXT: 0x2040 R_ARM_ABS32 zed2 0x0 // UNPACKED32-NEXT: } // RUN: ld.lld -pie --pack-dyn-relocs=android %t.a32 %t.a32.so -o %t3.a32 @@ -66,36 +66,36 @@ // Packed should have the larger groups of relative relocations first, // i.e. the 8 and 9 followed by the 7. // ANDROID32: Section ({{.+}}) .rel.dyn { -// ANDROID32-NEXT: 0x1000 R_ARM_RELATIVE - 0x0 -// ANDROID32-NEXT: 0x1004 R_ARM_RELATIVE - 0x0 -// ANDROID32-NEXT: 0x1008 R_ARM_RELATIVE - 0x0 -// ANDROID32-NEXT: 0x100C R_ARM_RELATIVE - 0x0 -// ANDROID32-NEXT: 0x1010 R_ARM_RELATIVE - 0x0 -// ANDROID32-NEXT: 0x1014 R_ARM_RELATIVE - 0x0 -// ANDROID32-NEXT: 0x1018 R_ARM_RELATIVE - 0x0 -// ANDROID32-NEXT: 0x101C R_ARM_RELATIVE - 0x0 - -// ANDROID32-NEXT: 0x1044 R_ARM_RELATIVE - 0x0 -// ANDROID32-NEXT: 0x1048 R_ARM_RELATIVE - 0x0 -// ANDROID32-NEXT: 0x104C R_ARM_RELATIVE - 0x0 -// ANDROID32-NEXT: 0x1050 R_ARM_RELATIVE - 0x0 -// ANDROID32-NEXT: 0x1054 R_ARM_RELATIVE - 0x0 -// ANDROID32-NEXT: 0x1058 R_ARM_RELATIVE - 0x0 -// ANDROID32-NEXT: 0x105C R_ARM_RELATIVE - 0x0 -// ANDROID32-NEXT: 0x1060 R_ARM_RELATIVE - 0x0 -// ANDROID32-NEXT: 0x1064 R_ARM_RELATIVE - 0x0 - -// ANDROID32-NEXT: 0x1024 R_ARM_RELATIVE - 0x0 -// ANDROID32-NEXT: 0x1028 R_ARM_RELATIVE - 0x0 -// ANDROID32-NEXT: 0x102C R_ARM_RELATIVE - 0x0 -// ANDROID32-NEXT: 0x1030 R_ARM_RELATIVE - 0x0 -// ANDROID32-NEXT: 0x1034 R_ARM_RELATIVE - 0x0 -// ANDROID32-NEXT: 0x1038 R_ARM_RELATIVE - 0x0 -// ANDROID32-NEXT: 0x103C R_ARM_RELATIVE - 0x0 - -// ANDROID32-NEXT: 0x1069 R_ARM_RELATIVE - 0x0 -// ANDROID32-NEXT: 0x1020 R_ARM_ABS32 bar2 0x0 -// ANDROID32-NEXT: 0x1040 R_ARM_ABS32 zed2 0x0 +// ANDROID32-NEXT: 0x2000 R_ARM_RELATIVE - 0x0 +// ANDROID32-NEXT: 0x2004 R_ARM_RELATIVE - 0x0 +// ANDROID32-NEXT: 0x2008 R_ARM_RELATIVE - 0x0 +// ANDROID32-NEXT: 0x200C R_ARM_RELATIVE - 0x0 +// ANDROID32-NEXT: 0x2010 R_ARM_RELATIVE - 0x0 +// ANDROID32-NEXT: 0x2014 R_ARM_RELATIVE - 0x0 +// ANDROID32-NEXT: 0x2018 R_ARM_RELATIVE - 0x0 +// ANDROID32-NEXT: 0x201C R_ARM_RELATIVE - 0x0 + +// ANDROID32-NEXT: 0x2044 R_ARM_RELATIVE - 0x0 +// ANDROID32-NEXT: 0x2048 R_ARM_RELATIVE - 0x0 +// ANDROID32-NEXT: 0x204C R_ARM_RELATIVE - 0x0 +// ANDROID32-NEXT: 0x2050 R_ARM_RELATIVE - 0x0 +// ANDROID32-NEXT: 0x2054 R_ARM_RELATIVE - 0x0 +// ANDROID32-NEXT: 0x2058 R_ARM_RELATIVE - 0x0 +// ANDROID32-NEXT: 0x205C R_ARM_RELATIVE - 0x0 +// ANDROID32-NEXT: 0x2060 R_ARM_RELATIVE - 0x0 +// ANDROID32-NEXT: 0x2064 R_ARM_RELATIVE - 0x0 + +// ANDROID32-NEXT: 0x2024 R_ARM_RELATIVE - 0x0 +// ANDROID32-NEXT: 0x2028 R_ARM_RELATIVE - 0x0 +// ANDROID32-NEXT: 0x202C R_ARM_RELATIVE - 0x0 +// ANDROID32-NEXT: 0x2030 R_ARM_RELATIVE - 0x0 +// ANDROID32-NEXT: 0x2034 R_ARM_RELATIVE - 0x0 +// ANDROID32-NEXT: 0x2038 R_ARM_RELATIVE - 0x0 +// ANDROID32-NEXT: 0x203C R_ARM_RELATIVE - 0x0 + +// ANDROID32-NEXT: 0x2069 R_ARM_RELATIVE - 0x0 +// ANDROID32-NEXT: 0x2020 R_ARM_ABS32 bar2 0x0 +// ANDROID32-NEXT: 0x2040 R_ARM_ABS32 zed2 0x0 // ANDROID32-NEXT: } // RUN: ld.lld -pie --pack-dyn-relocs=relr %t.a32 %t.a32.so -o %t4.a32 @@ -126,7 +126,7 @@ // SHT_RELR section contains address/bitmap entries // encoding the offsets for relative relocation. // RAW-RELR32: Section ({{.+}}) .relr.dyn { -// RAW-RELR32-NEXT: 0x1000 +// RAW-RELR32-NEXT: 0x2000 // RAW-RELR32-NEXT: 0x3FEFEFF // RAW-RELR32-NEXT: } @@ -134,37 +134,37 @@ // but contains only the relative relocations. // Any relative relocations with odd offset stay in SHT_REL. // RELR32: Section ({{.+}}) .rel.dyn { -// RELR32-NEXT: 0x1069 R_ARM_RELATIVE - 0x0 -// RELR32-NEXT: 0x1020 R_ARM_ABS32 bar2 0x0 -// RELR32-NEXT: 0x1040 R_ARM_ABS32 zed2 0x0 +// RELR32-NEXT: 0x2069 R_ARM_RELATIVE - 0x0 +// RELR32-NEXT: 0x2020 R_ARM_ABS32 bar2 0x0 +// RELR32-NEXT: 0x2040 R_ARM_ABS32 zed2 0x0 // RELR32-NEXT: } // RELR32-NEXT: Section ({{.+}}) .relr.dyn { -// RELR32-NEXT: 0x1000 R_ARM_RELATIVE - 0x0 -// RELR32-NEXT: 0x1004 R_ARM_RELATIVE - 0x0 -// RELR32-NEXT: 0x1008 R_ARM_RELATIVE - 0x0 -// RELR32-NEXT: 0x100C R_ARM_RELATIVE - 0x0 -// RELR32-NEXT: 0x1010 R_ARM_RELATIVE - 0x0 -// RELR32-NEXT: 0x1014 R_ARM_RELATIVE - 0x0 -// RELR32-NEXT: 0x1018 R_ARM_RELATIVE - 0x0 -// RELR32-NEXT: 0x101C R_ARM_RELATIVE - 0x0 - -// RELR32-NEXT: 0x1024 R_ARM_RELATIVE - 0x0 -// RELR32-NEXT: 0x1028 R_ARM_RELATIVE - 0x0 -// RELR32-NEXT: 0x102C R_ARM_RELATIVE - 0x0 -// RELR32-NEXT: 0x1030 R_ARM_RELATIVE - 0x0 -// RELR32-NEXT: 0x1034 R_ARM_RELATIVE - 0x0 -// RELR32-NEXT: 0x1038 R_ARM_RELATIVE - 0x0 -// RELR32-NEXT: 0x103C R_ARM_RELATIVE - 0x0 - -// RELR32-NEXT: 0x1044 R_ARM_RELATIVE - 0x0 -// RELR32-NEXT: 0x1048 R_ARM_RELATIVE - 0x0 -// RELR32-NEXT: 0x104C R_ARM_RELATIVE - 0x0 -// RELR32-NEXT: 0x1050 R_ARM_RELATIVE - 0x0 -// RELR32-NEXT: 0x1054 R_ARM_RELATIVE - 0x0 -// RELR32-NEXT: 0x1058 R_ARM_RELATIVE - 0x0 -// RELR32-NEXT: 0x105C R_ARM_RELATIVE - 0x0 -// RELR32-NEXT: 0x1060 R_ARM_RELATIVE - 0x0 -// RELR32-NEXT: 0x1064 R_ARM_RELATIVE - 0x0 +// RELR32-NEXT: 0x2000 R_ARM_RELATIVE - 0x0 +// RELR32-NEXT: 0x2004 R_ARM_RELATIVE - 0x0 +// RELR32-NEXT: 0x2008 R_ARM_RELATIVE - 0x0 +// RELR32-NEXT: 0x200C R_ARM_RELATIVE - 0x0 +// RELR32-NEXT: 0x2010 R_ARM_RELATIVE - 0x0 +// RELR32-NEXT: 0x2014 R_ARM_RELATIVE - 0x0 +// RELR32-NEXT: 0x2018 R_ARM_RELATIVE - 0x0 +// RELR32-NEXT: 0x201C R_ARM_RELATIVE - 0x0 + +// RELR32-NEXT: 0x2024 R_ARM_RELATIVE - 0x0 +// RELR32-NEXT: 0x2028 R_ARM_RELATIVE - 0x0 +// RELR32-NEXT: 0x202C R_ARM_RELATIVE - 0x0 +// RELR32-NEXT: 0x2030 R_ARM_RELATIVE - 0x0 +// RELR32-NEXT: 0x2034 R_ARM_RELATIVE - 0x0 +// RELR32-NEXT: 0x2038 R_ARM_RELATIVE - 0x0 +// RELR32-NEXT: 0x203C R_ARM_RELATIVE - 0x0 + +// RELR32-NEXT: 0x2044 R_ARM_RELATIVE - 0x0 +// RELR32-NEXT: 0x2048 R_ARM_RELATIVE - 0x0 +// RELR32-NEXT: 0x204C R_ARM_RELATIVE - 0x0 +// RELR32-NEXT: 0x2050 R_ARM_RELATIVE - 0x0 +// RELR32-NEXT: 0x2054 R_ARM_RELATIVE - 0x0 +// RELR32-NEXT: 0x2058 R_ARM_RELATIVE - 0x0 +// RELR32-NEXT: 0x205C R_ARM_RELATIVE - 0x0 +// RELR32-NEXT: 0x2060 R_ARM_RELATIVE - 0x0 +// RELR32-NEXT: 0x2064 R_ARM_RELATIVE - 0x0 // RELR32-NEXT: } // RUN: llvm-mc -filetype=obj -triple=aarch64-unknown-linux %p/Inputs/shared2.s -o %t.a64.so.o @@ -174,36 +174,36 @@ // RUN: llvm-readobj -relocations %t2.a64 | FileCheck --check-prefix=UNPACKED64 %s // UNPACKED64: Section ({{.+}}) .rela.dyn { -// UNPACKED64-NEXT: 0x10000 R_AARCH64_RELATIVE - 0x1 -// UNPACKED64-NEXT: 0x10008 R_AARCH64_RELATIVE - 0x2 -// UNPACKED64-NEXT: 0x10010 R_AARCH64_RELATIVE - 0x3 -// UNPACKED64-NEXT: 0x10018 R_AARCH64_RELATIVE - 0x4 -// UNPACKED64-NEXT: 0x10020 R_AARCH64_RELATIVE - 0x5 -// UNPACKED64-NEXT: 0x10028 R_AARCH64_RELATIVE - 0x6 -// UNPACKED64-NEXT: 0x10030 R_AARCH64_RELATIVE - 0x7 -// UNPACKED64-NEXT: 0x10038 R_AARCH64_RELATIVE - 0x8 - -// UNPACKED64-NEXT: 0x10048 R_AARCH64_RELATIVE - 0x1 -// UNPACKED64-NEXT: 0x10050 R_AARCH64_RELATIVE - 0x2 -// UNPACKED64-NEXT: 0x10058 R_AARCH64_RELATIVE - 0x3 -// UNPACKED64-NEXT: 0x10060 R_AARCH64_RELATIVE - 0x4 -// UNPACKED64-NEXT: 0x10068 R_AARCH64_RELATIVE - 0x5 -// UNPACKED64-NEXT: 0x10070 R_AARCH64_RELATIVE - 0x6 -// UNPACKED64-NEXT: 0x10078 R_AARCH64_RELATIVE - 0x7 - -// UNPACKED64-NEXT: 0x10088 R_AARCH64_RELATIVE - 0x1 -// UNPACKED64-NEXT: 0x10090 R_AARCH64_RELATIVE - 0x2 -// UNPACKED64-NEXT: 0x10098 R_AARCH64_RELATIVE - 0x3 -// UNPACKED64-NEXT: 0x100A0 R_AARCH64_RELATIVE - 0x4 -// UNPACKED64-NEXT: 0x100A8 R_AARCH64_RELATIVE - 0x5 -// UNPACKED64-NEXT: 0x100B0 R_AARCH64_RELATIVE - 0x6 -// UNPACKED64-NEXT: 0x100B8 R_AARCH64_RELATIVE - 0x7 -// UNPACKED64-NEXT: 0x100C0 R_AARCH64_RELATIVE - 0x8 -// UNPACKED64-NEXT: 0x100C8 R_AARCH64_RELATIVE - 0x9 - -// UNPACKED64-NEXT: 0x100D1 R_AARCH64_RELATIVE - 0xA -// UNPACKED64-NEXT: 0x10040 R_AARCH64_ABS64 bar2 0x1 -// UNPACKED64-NEXT: 0x10080 R_AARCH64_ABS64 zed2 0x0 +// 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: } // 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: 0x10000 R_AARCH64_RELATIVE - 0x1 -// ANDROID64-NEXT: 0x10008 R_AARCH64_RELATIVE - 0x2 -// ANDROID64-NEXT: 0x10010 R_AARCH64_RELATIVE - 0x3 -// ANDROID64-NEXT: 0x10018 R_AARCH64_RELATIVE - 0x4 -// ANDROID64-NEXT: 0x10020 R_AARCH64_RELATIVE - 0x5 -// ANDROID64-NEXT: 0x10028 R_AARCH64_RELATIVE - 0x6 -// ANDROID64-NEXT: 0x10030 R_AARCH64_RELATIVE - 0x7 -// ANDROID64-NEXT: 0x10038 R_AARCH64_RELATIVE - 0x8 - -// ANDROID64-NEXT: 0x10088 R_AARCH64_RELATIVE - 0x1 -// ANDROID64-NEXT: 0x10090 R_AARCH64_RELATIVE - 0x2 -// ANDROID64-NEXT: 0x10098 R_AARCH64_RELATIVE - 0x3 -// ANDROID64-NEXT: 0x100A0 R_AARCH64_RELATIVE - 0x4 -// ANDROID64-NEXT: 0x100A8 R_AARCH64_RELATIVE - 0x5 -// ANDROID64-NEXT: 0x100B0 R_AARCH64_RELATIVE - 0x6 -// ANDROID64-NEXT: 0x100B8 R_AARCH64_RELATIVE - 0x7 -// ANDROID64-NEXT: 0x100C0 R_AARCH64_RELATIVE - 0x8 -// ANDROID64-NEXT: 0x100C8 R_AARCH64_RELATIVE - 0x9 - -// ANDROID64-NEXT: 0x10048 R_AARCH64_RELATIVE - 0x1 -// ANDROID64-NEXT: 0x10050 R_AARCH64_RELATIVE - 0x2 -// ANDROID64-NEXT: 0x10058 R_AARCH64_RELATIVE - 0x3 -// ANDROID64-NEXT: 0x10060 R_AARCH64_RELATIVE - 0x4 -// ANDROID64-NEXT: 0x10068 R_AARCH64_RELATIVE - 0x5 -// ANDROID64-NEXT: 0x10070 R_AARCH64_RELATIVE - 0x6 -// ANDROID64-NEXT: 0x10078 R_AARCH64_RELATIVE - 0x7 - -// ANDROID64-NEXT: 0x100D1 R_AARCH64_RELATIVE - 0xA -// ANDROID64-NEXT: 0x10040 R_AARCH64_ABS64 bar2 0x1 -// ANDROID64-NEXT: 0x10080 R_AARCH64_ABS64 zed2 0x0 +// 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: } // 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: 0x10000 +// RAW-RELR64-NEXT: 0x20000 // 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: 0x100D1 R_AARCH64_RELATIVE - 0xA -// RELR64-NEXT: 0x10040 R_AARCH64_ABS64 bar2 0x1 -// RELR64-NEXT: 0x10080 R_AARCH64_ABS64 zed2 0x0 +// 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: } // RELR64-NEXT: Section ({{.+}}) .relr.dyn { -// RELR64-NEXT: 0x10000 R_AARCH64_RELATIVE - 0x0 -// RELR64-NEXT: 0x10008 R_AARCH64_RELATIVE - 0x0 -// RELR64-NEXT: 0x10010 R_AARCH64_RELATIVE - 0x0 -// RELR64-NEXT: 0x10018 R_AARCH64_RELATIVE - 0x0 -// RELR64-NEXT: 0x10020 R_AARCH64_RELATIVE - 0x0 -// RELR64-NEXT: 0x10028 R_AARCH64_RELATIVE - 0x0 -// RELR64-NEXT: 0x10030 R_AARCH64_RELATIVE - 0x0 -// RELR64-NEXT: 0x10038 R_AARCH64_RELATIVE - 0x0 - -// RELR64-NEXT: 0x10048 R_AARCH64_RELATIVE - 0x0 -// RELR64-NEXT: 0x10050 R_AARCH64_RELATIVE - 0x0 -// RELR64-NEXT: 0x10058 R_AARCH64_RELATIVE - 0x0 -// RELR64-NEXT: 0x10060 R_AARCH64_RELATIVE - 0x0 -// RELR64-NEXT: 0x10068 R_AARCH64_RELATIVE - 0x0 -// RELR64-NEXT: 0x10070 R_AARCH64_RELATIVE - 0x0 -// RELR64-NEXT: 0x10078 R_AARCH64_RELATIVE - 0x0 - -// RELR64-NEXT: 0x10088 R_AARCH64_RELATIVE - 0x0 -// RELR64-NEXT: 0x10090 R_AARCH64_RELATIVE - 0x0 -// RELR64-NEXT: 0x10098 R_AARCH64_RELATIVE - 0x0 -// RELR64-NEXT: 0x100A0 R_AARCH64_RELATIVE - 0x0 -// RELR64-NEXT: 0x100A8 R_AARCH64_RELATIVE - 0x0 -// RELR64-NEXT: 0x100B0 R_AARCH64_RELATIVE - 0x0 -// RELR64-NEXT: 0x100B8 R_AARCH64_RELATIVE - 0x0 -// RELR64-NEXT: 0x100C0 R_AARCH64_RELATIVE - 0x0 -// RELR64-NEXT: 0x100C8 R_AARCH64_RELATIVE - 0x0 +// 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: } .data Index: lld/trunk/test/ELF/pack-dyn-relocs2.s =================================================================== --- lld/trunk/test/ELF/pack-dyn-relocs2.s +++ lld/trunk/test/ELF/pack-dyn-relocs2.s @@ -8,40 +8,40 @@ // RUN: llvm-readobj -relocations %t.exe | FileCheck %s // CHECK: Section (5) .relr.dyn { -// CHECK-NEXT: 0x1000 R_ARM_RELATIVE - 0x0 -// CHECK-NEXT: 0x1004 R_ARM_RELATIVE - 0x0 -// CHECK-NEXT: 0x1008 R_ARM_RELATIVE - 0x0 -// CHECK-NEXT: 0x100C R_ARM_RELATIVE - 0x0 -// CHECK-NEXT: 0x1010 R_ARM_RELATIVE - 0x0 -// CHECK-NEXT: 0x1014 R_ARM_RELATIVE - 0x0 -// CHECK-NEXT: 0x1018 R_ARM_RELATIVE - 0x0 -// CHECK-NEXT: 0x101C R_ARM_RELATIVE - 0x0 -// CHECK-NEXT: 0x1020 R_ARM_RELATIVE - 0x0 -// CHECK-NEXT: 0x1024 R_ARM_RELATIVE - 0x0 -// CHECK-NEXT: 0x1028 R_ARM_RELATIVE - 0x0 -// CHECK-NEXT: 0x102C R_ARM_RELATIVE - 0x0 -// CHECK-NEXT: 0x1030 R_ARM_RELATIVE - 0x0 -// CHECK-NEXT: 0x1034 R_ARM_RELATIVE - 0x0 -// CHECK-NEXT: 0x1038 R_ARM_RELATIVE - 0x0 -// CHECK-NEXT: 0x103C R_ARM_RELATIVE - 0x0 -// CHECK-NEXT: 0x1040 R_ARM_RELATIVE - 0x0 -// CHECK-NEXT: 0x1044 R_ARM_RELATIVE - 0x0 -// CHECK-NEXT: 0x1048 R_ARM_RELATIVE - 0x0 -// CHECK-NEXT: 0x104C R_ARM_RELATIVE - 0x0 -// CHECK-NEXT: 0x1050 R_ARM_RELATIVE - 0x0 -// CHECK-NEXT: 0x1054 R_ARM_RELATIVE - 0x0 -// CHECK-NEXT: 0x1058 R_ARM_RELATIVE - 0x0 -// CHECK-NEXT: 0x105C R_ARM_RELATIVE - 0x0 -// CHECK-NEXT: 0x1060 R_ARM_RELATIVE - 0x0 -// CHECK-NEXT: 0x1064 R_ARM_RELATIVE - 0x0 -// CHECK-NEXT: 0x1068 R_ARM_RELATIVE - 0x0 -// CHECK-NEXT: 0x106C R_ARM_RELATIVE - 0x0 -// CHECK-NEXT: 0x1070 R_ARM_RELATIVE - 0x0 -// CHECK-NEXT: 0x1074 R_ARM_RELATIVE - 0x0 -// CHECK-NEXT: 0x1078 R_ARM_RELATIVE - 0x0 -// CHECK-NEXT: 0x107C R_ARM_RELATIVE - 0x0 -// CHECK-NEXT: 0x1080 R_ARM_RELATIVE - 0x0 -// CHECK-NEXT: 0x1084 R_ARM_RELATIVE - 0x0 +// CHECK-NEXT: 0x2000 R_ARM_RELATIVE - 0x0 +// CHECK-NEXT: 0x2004 R_ARM_RELATIVE - 0x0 +// CHECK-NEXT: 0x2008 R_ARM_RELATIVE - 0x0 +// CHECK-NEXT: 0x200C R_ARM_RELATIVE - 0x0 +// CHECK-NEXT: 0x2010 R_ARM_RELATIVE - 0x0 +// CHECK-NEXT: 0x2014 R_ARM_RELATIVE - 0x0 +// CHECK-NEXT: 0x2018 R_ARM_RELATIVE - 0x0 +// CHECK-NEXT: 0x201C R_ARM_RELATIVE - 0x0 +// CHECK-NEXT: 0x2020 R_ARM_RELATIVE - 0x0 +// CHECK-NEXT: 0x2024 R_ARM_RELATIVE - 0x0 +// CHECK-NEXT: 0x2028 R_ARM_RELATIVE - 0x0 +// CHECK-NEXT: 0x202C R_ARM_RELATIVE - 0x0 +// CHECK-NEXT: 0x2030 R_ARM_RELATIVE - 0x0 +// CHECK-NEXT: 0x2034 R_ARM_RELATIVE - 0x0 +// CHECK-NEXT: 0x2038 R_ARM_RELATIVE - 0x0 +// CHECK-NEXT: 0x203C R_ARM_RELATIVE - 0x0 +// CHECK-NEXT: 0x2040 R_ARM_RELATIVE - 0x0 +// CHECK-NEXT: 0x2044 R_ARM_RELATIVE - 0x0 +// CHECK-NEXT: 0x2048 R_ARM_RELATIVE - 0x0 +// CHECK-NEXT: 0x204C R_ARM_RELATIVE - 0x0 +// CHECK-NEXT: 0x2050 R_ARM_RELATIVE - 0x0 +// CHECK-NEXT: 0x2054 R_ARM_RELATIVE - 0x0 +// CHECK-NEXT: 0x2058 R_ARM_RELATIVE - 0x0 +// CHECK-NEXT: 0x205C R_ARM_RELATIVE - 0x0 +// CHECK-NEXT: 0x2060 R_ARM_RELATIVE - 0x0 +// CHECK-NEXT: 0x2064 R_ARM_RELATIVE - 0x0 +// CHECK-NEXT: 0x2068 R_ARM_RELATIVE - 0x0 +// CHECK-NEXT: 0x206C R_ARM_RELATIVE - 0x0 +// CHECK-NEXT: 0x2070 R_ARM_RELATIVE - 0x0 +// CHECK-NEXT: 0x2074 R_ARM_RELATIVE - 0x0 +// CHECK-NEXT: 0x2078 R_ARM_RELATIVE - 0x0 +// CHECK-NEXT: 0x207C R_ARM_RELATIVE - 0x0 +// CHECK-NEXT: 0x2080 R_ARM_RELATIVE - 0x0 +// CHECK-NEXT: 0x2084 R_ARM_RELATIVE - 0x0 // CHECK-NEXT: } // RUN: llvm-readobj -s -dynamic-table %t.exe | FileCheck --check-prefix=HEADER %s Index: lld/trunk/test/ELF/plt-aarch64.s =================================================================== --- lld/trunk/test/ELF/plt-aarch64.s +++ lld/trunk/test/ELF/plt-aarch64.s @@ -30,7 +30,7 @@ // CHECKDSO-NEXT: SHF_ALLOC // CHECKDSO-NEXT: SHF_WRITE // CHECKDSO-NEXT: ] -// CHECKDSO-NEXT: Address: 0x20000 +// CHECKDSO-NEXT: Address: 0x30000 // CHECKDSO-NEXT: Offset: // CHECKDSO-NEXT: Size: 48 // CHECKDSO-NEXT: Link: @@ -40,23 +40,23 @@ // CHECKDSO: Relocations [ // CHECKDSO-NEXT: Section ({{.*}}) .rela.plt { -// &(.got.plt[3]) = 0x20000 + 3 * 8 = 0x30018 -// CHECKDSO-NEXT: 0x20018 R_AARCH64_JUMP_SLOT foo +// &(.got.plt[3]) = 0x30000 + 3 * 8 = 0x30018 +// CHECKDSO-NEXT: 0x30018 R_AARCH64_JUMP_SLOT foo -// &(.got.plt[4]) = 0x20000 + 4 * 8 = 0x30020 -// CHECKDSO-NEXT: 0x20020 R_AARCH64_JUMP_SLOT bar +// &(.got.plt[4]) = 0x30000 + 4 * 8 = 0x30020 +// CHECKDSO-NEXT: 0x30020 R_AARCH64_JUMP_SLOT bar -// &(.got.plt[5]) = 0x20000 + 5 * 8 = 0x30028 -// CHECKDSO-NEXT: 0x20028 R_AARCH64_JUMP_SLOT weak +// &(.got.plt[5]) = 0x30000 + 5 * 8 = 0x30028 +// CHECKDSO-NEXT: 0x30028 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: 20000 00000000 00000000 00000000 00000000 ................ -// DUMPDSO-NEXT: 20010 00000000 00000000 10000100 00000000 ................ -// DUMPDSO-NEXT: 20020 10000100 00000000 10000100 00000000 ................ +// DUMPDSO-NEXT: 30000 00000000 00000000 00000000 00000000 ................ +// DUMPDSO-NEXT: 30010 00000000 00000000 10000100 00000000 ................ +// DUMPDSO-NEXT: 30020 10000100 00000000 10000100 00000000 ................ // DISASMDSO: _start: // 0x10030 - 0x10000 = 0x30 = 48 @@ -73,8 +73,8 @@ // DISASMDSO-NEXT: .plt: // DISASMDSO-NEXT: 10010: f0 7b bf a9 stp x16, x30, [sp, #-16]! // &(.got.plt[2]) = 0x3000 + 2 * 8 = 0x3010 -// Page(0x20010) - Page(0x10014) = 0x20000 - 0x10000 = 0x10000 = 65536 -// DISASMDSO-NEXT: 10014: 90 00 00 90 adrp x16, #65536 +// 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 @@ -84,30 +84,30 @@ // DISASMDSO-NEXT: 1002c: 1f 20 03 d5 nop // foo@plt -// Page(0x30018) - Page(0x10030) = 0x20000 - 0x10000 = 0x10000 = 65536 +// Page(0x30018) - Page(0x10030) = 0x30000 - 0x10000 = 0x20000 = 131072 // DISASMDSO-EMPTY: // DISASMDSO-NEXT: foo@plt: -// DISASMDSO-NEXT: 10030: 90 00 00 90 adrp x16, #65536 +// 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 // bar@plt -// Page(0x30020) - Page(0x10040) = 0x20000 - 0x10000 = 0x10000 = 65536 +// Page(0x30020) - Page(0x10040) = 0x30000 - 0x10000 = 0x20000 = 131072 // DISASMDSO-EMPTY: // DISASMDSO-NEXT: bar@plt: -// DISASMDSO-NEXT: 10040: 90 00 00 90 adrp x16, #65536 +// 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 // weak@plt -// Page(0x30028) - Page(0x10050) = 0x20000 - 0x10000 = 0x10000 = 65536 +// Page(0x30028) - Page(0x10050) = 0x30000 - 0x10000 = 0x20000 = 131072 // DISASMDSO-EMPTY: // DISASMDSO-NEXT: weak@plt: -// DISASMDSO-NEXT: 10050: 90 00 00 90 adrp x16, #65536 +// 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 @@ -132,7 +132,7 @@ // CHECKEXE-NEXT: SHF_ALLOC // CHECKEXE-NEXT: SHF_WRITE // CHECKEXE-NEXT: ] -// CHECKEXE-NEXT: Address: 0x220000 +// CHECKEXE-NEXT: Address: 0x230000 // CHECKEXE-NEXT: Offset: // CHECKEXE-NEXT: Size: 40 // CHECKEXE-NEXT: Link: @@ -142,20 +142,20 @@ // CHECKEXE: Relocations [ // CHECKEXE-NEXT: Section ({{.*}}) .rela.plt { -// &(.got.plt[3]) = 0x220000 + 3 * 8 = 0x220018 -// CHECKEXE-NEXT: 0x220018 R_AARCH64_JUMP_SLOT bar 0x0 +// &(.got.plt[3]) = 0x230000 + 3 * 8 = 0x230018 +// CHECKEXE-NEXT: 0x230018 R_AARCH64_JUMP_SLOT bar 0x0 -// &(.got.plt[4]) = 0x220000 + 4 * 8 = 0x220020 -// CHECKEXE-NEXT: 0x220020 R_AARCH64_JUMP_SLOT weak 0x0 +// &(.got.plt[4]) = 0x230000 + 4 * 8 = 0x230020 +// CHECKEXE-NEXT: 0x230020 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: 220000 00000000 00000000 00000000 00000000 -// DUMPEXE-NEXT: 220010 00000000 00000000 10002100 00000000 -// DUMPEXE-NEXT: 220020 10002100 00000000 +// DUMPEXE-NEXT: 230000 00000000 00000000 00000000 00000000 +// DUMPEXE-NEXT: 230010 00000000 00000000 10002100 00000000 +// DUMPEXE-NEXT: 230020 10002100 00000000 // DISASMEXE: _start: // 0x21000c - 0x210000 = 0xc = 12 @@ -172,8 +172,8 @@ // DISASMEXE-NEXT: .plt: // DISASMEXE-NEXT: 210010: f0 7b bf a9 stp x16, x30, [sp, #-16]! // &(.got.plt[2]) = 0x2200B0 + 2 * 8 = 0x2200C0 -// Page(0x220010) - Page(0x210014) = 0x220000 - 0x210000 = 0x10000 = 65536 -// DISASMEXE-NEXT: 210014: 90 00 00 90 adrp x16, #65536 +// 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 @@ -183,19 +183,19 @@ // DISASMEXE-NEXT: 21002c: 1f 20 03 d5 nop // bar@plt -// Page(0x40018) - Page(0x210030) = 0x220000 - 0x210000 = 0x10000 = 65536 +// Page(0x230018) - Page(0x210030) = 0x230000 - 0x210000 = 0x20000 = 131072 // DISASMEXE-EMPTY: // DISASMEXE-NEXT: bar@plt: -// DISASMEXE-NEXT: 210030: 90 00 00 90 adrp x16, #65536 +// 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 // weak@plt -// Page(0x40020) - Page(0x210040) = 0x220000 - 0x210000 = 0x10000 = 65536 +// Page(0x230020) - Page(0x210040) = 0x230000 - 0x210000 = 0x20000 = 131072 // DISASMEXE-EMPTY: // DISASMEXE-NEXT: weak@plt: -// DISASMEXE-NEXT: 210040: 90 00 00 90 adrp x16, #65536 +// 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 Index: lld/trunk/test/ELF/plt-i686.s =================================================================== --- lld/trunk/test/ELF/plt-i686.s +++ lld/trunk/test/ELF/plt-i686.s @@ -30,8 +30,8 @@ // CHECK-NEXT: SHF_ALLOC // CHECK-NEXT: SHF_WRITE // CHECK-NEXT: ] -// CHECK-NEXT: Address: 0x402000 -// CHECK-NEXT: Offset: 0x2000 +// CHECK-NEXT: Address: 0x403000 +// CHECK-NEXT: Offset: 0x3000 // CHECK-NEXT: Size: 20 // CHECK-NEXT: Link: 0 // CHECK-NEXT: Info: 0 @@ -42,8 +42,8 @@ // 0x12000 + got.plt.reserved(12) + 4 = 0x12010 // CHECK: Relocations [ // CHECK-NEXT: Section ({{.*}}) .rel.plt { -// CHECK-NEXT: 0x40200C R_386_JUMP_SLOT bar 0x0 -// CHECK-NEXT: 0x402010 R_386_JUMP_SLOT zed 0x0 +// CHECK-NEXT: 0x40300C R_386_JUMP_SLOT bar 0x0 +// CHECK-NEXT: 0x403010 R_386_JUMP_SLOT zed 0x0 // CHECK-NEXT: } // CHECK-NEXT: ] @@ -67,26 +67,26 @@ // 0x401010 - 0x40102b - 5 = -32 // 0x401010 - 0x40103b - 5 = -48 -// 4202500 = 0x402004 = .got.plt (0x402000) + 4 -// 4202504 = 0x402008 = .got.plt (0x402000) + 8 -// 4202508 = 0x40200C = .got.plt (0x402000) + got.plt.reserved(12) -// 4202512 = 0x402010 = .got.plt (0x402000) + got.plt.reserved(12) + 4 +// 4206596 = 0x403004 = .got.plt (0x403000) + 4 +// 4206600 = 0x403008 = .got.plt (0x403000) + 8 +// 4206604 = 0x40300C = .got.plt (0x403000) + got.plt.reserved(12) +// 4206608 = 0x403010 = .got.plt (0x403000) + got.plt.reserved(12) + 4 // DISASM: Disassembly of section .plt: // DISASM-NEXT: .plt: -// DISASM-NEXT: 401020: ff 35 04 20 40 00 pushl 4202500 -// DISASM-NEXT: 401026: ff 25 08 20 40 00 jmpl *4202504 +// DISASM-NEXT: 401020: ff 35 04 30 40 00 pushl 4206596 +// DISASM-NEXT: 401026: ff 25 08 30 40 00 jmpl *4206600 // DISASM-NEXT: 40102c: 90 nop // DISASM-NEXT: 40102d: 90 nop // DISASM-NEXT: 40102e: 90 nop // DISASM-NEXT: 40102f: 90 nop // DISASM-EMPTY: // DISASM-NEXT: bar@plt: -// DISASM-NEXT: 401030: ff 25 0c 20 40 00 jmpl *4202508 +// DISASM-NEXT: 401030: ff 25 0c 30 40 00 jmpl *4206604 // DISASM-NEXT: 401036: 68 00 00 00 00 pushl $0 // DISASM-NEXT: 40103b: e9 e0 ff ff ff jmp -32 <.plt> // DISASM-EMPTY: // DISASM-NEXT: zed@plt: -// DISASM-NEXT: 401040: ff 25 10 20 40 00 jmpl *4202512 +// DISASM-NEXT: 401040: ff 25 10 30 40 00 jmpl *4206608 // DISASM-NEXT: 401046: 68 08 00 00 00 pushl $8 // DISASM-NEXT: 40104b: e9 d0 ff ff ff jmp -48 <.plt> @@ -110,8 +110,8 @@ // CHECKSHARED-NEXT: SHF_ALLOC // CHECKSHARED-NEXT: SHF_WRITE // CHECKSHARED-NEXT: ] -// CHECKSHARED-NEXT: Address: 0x2000 -// CHECKSHARED-NEXT: Offset: 0x2000 +// CHECKSHARED-NEXT: Address: 0x3000 +// CHECKSHARED-NEXT: Offset: 0x3000 // CHECKSHARED-NEXT: Size: 20 // CHECKSHARED-NEXT: Link: 0 // CHECKSHARED-NEXT: Info: 0 @@ -119,12 +119,12 @@ // CHECKSHARED-NEXT: EntrySize: 0 // CHECKSHARED-NEXT: } -// 0x2000 + got.plt.reserved(12) = 0x200C -// 0x2000 + got.plt.reserved(12) + 4 = 0x2010 +// 0x3000 + got.plt.reserved(12) = 0x300C +// 0x3000 + got.plt.reserved(12) + 4 = 0x3010 // CHECKSHARED: Relocations [ // CHECKSHARED-NEXT: Section ({{.*}}) .rel.plt { -// CHECKSHARED-NEXT: 0x200C R_386_JUMP_SLOT bar 0x0 -// CHECKSHARED-NEXT: 0x2010 R_386_JUMP_SLOT zed 0x0 +// CHECKSHARED-NEXT: 0x300C R_386_JUMP_SLOT bar 0x0 +// CHECKSHARED-NEXT: 0x3010 R_386_JUMP_SLOT zed 0x0 // CHECKSHARED-NEXT: } // CHECKSHARED-NEXT: ] @@ -139,31 +139,31 @@ // DISASMSHARED-NEXT: 1013: e9 e8 ff ff ff jmp -24 // DISASMSHARED-NEXT: Disassembly of section .plt: // DISASMSHARED-NEXT: .plt: -// DISASMSHARED-NEXT: 1020: ff b3 04 20 00 00 pushl 8196(%ebx) -// DISASMSHARED-NEXT: 1026: ff a3 08 20 00 00 jmpl *8200(%ebx) +// DISASMSHARED-NEXT: 1020: ff b3 04 30 00 00 pushl 12292(%ebx) +// DISASMSHARED-NEXT: 1026: ff a3 08 30 00 00 jmpl *12296(%ebx) // DISASMSHARED-NEXT: 102c: 90 nop // DISASMSHARED-NEXT: 102d: 90 nop // DISASMSHARED-NEXT: 102e: 90 nop // DISASMSHARED-NEXT: 102f: 90 nop -// DISASMSHARED-NEXT: 1030: ff a3 0c 20 00 00 jmpl *8204(%ebx) +// DISASMSHARED-NEXT: 1030: ff a3 0c 30 00 00 jmpl *12300(%ebx) // DISASMSHARED-NEXT: 1036: 68 00 00 00 00 pushl $0 // DISASMSHARED-NEXT: 103b: e9 e0 ff ff ff jmp -32 <.plt> -// DISASMSHARED-NEXT: 1040: ff a3 10 20 00 00 jmpl *8208(%ebx) +// DISASMSHARED-NEXT: 1040: ff a3 10 30 00 00 jmpl *12304(%ebx) // DISASMSHARED-NEXT: 1046: 68 08 00 00 00 pushl $8 // DISASMSHARED-NEXT: 104b: e9 d0 ff ff ff jmp -48 <.plt> // DISASMPIE: Disassembly of section .plt: // DISASMPIE-NEXT: .plt: -// DISASMPIE-NEXT: 1020: ff b3 04 20 00 00 pushl 8196(%ebx) -// DISASMPIE-NEXT: 1026: ff a3 08 20 00 00 jmpl *8200(%ebx) +// DISASMPIE-NEXT: 1020: ff b3 04 30 00 00 pushl 12292(%ebx) +// DISASMPIE-NEXT: 1026: ff a3 08 30 00 00 jmpl *12296(%ebx) // DISASMPIE-NEXT: 102c: 90 nop // DISASMPIE-NEXT: 102d: 90 nop // DISASMPIE-NEXT: 102e: 90 nop // DISASMPIE-NEXT: 102f: 90 nop -// DISASMPIE-NEXT: 1030: ff a3 0c 20 00 00 jmpl *8204(%ebx) +// DISASMPIE-NEXT: 1030: ff a3 0c 30 00 00 jmpl *12300(%ebx) // DISASMPIE-NEXT: 1036: 68 00 00 00 00 pushl $0 // DISASMPIE-NEXT: 103b: e9 e0 ff ff ff jmp -32 <.plt> -// DISASMPIE-NEXT: 1040: ff a3 10 20 00 00 jmpl *8208(%ebx) +// DISASMPIE-NEXT: 1040: ff a3 10 30 00 00 jmpl *12304(%ebx) // DISASMPIE-NEXT: 1046: 68 08 00 00 00 pushl $8 // DISASMPIE-NEXT: 104b: e9 d0 ff ff ff jmp -48 <.plt> Index: lld/trunk/test/ELF/plt.s =================================================================== --- lld/trunk/test/ELF/plt.s +++ lld/trunk/test/ELF/plt.s @@ -24,9 +24,9 @@ // CHECK: Relocations [ // CHECK-NEXT: Section ({{.*}}) .rela.plt { -// CHECK-NEXT: 0x2018 R_X86_64_JUMP_SLOT bar 0x0 -// CHECK-NEXT: 0x2020 R_X86_64_JUMP_SLOT zed 0x0 -// CHECK-NEXT: 0x2028 R_X86_64_JUMP_SLOT _start 0x0 +// CHECK-NEXT: 0x3018 R_X86_64_JUMP_SLOT bar 0x0 +// CHECK-NEXT: 0x3020 R_X86_64_JUMP_SLOT zed 0x0 +// CHECK-NEXT: 0x3028 R_X86_64_JUMP_SLOT _start 0x0 // CHECK-NEXT: } // CHECK-NEXT: ] @@ -45,8 +45,8 @@ // CHECK2: Relocations [ // CHECK2-NEXT: Section ({{.*}}) .rela.plt { -// CHECK2-NEXT: 0x202018 R_X86_64_JUMP_SLOT bar 0x0 -// CHECK2-NEXT: 0x202020 R_X86_64_JUMP_SLOT zed 0x0 +// CHECK2-NEXT: 0x203018 R_X86_64_JUMP_SLOT bar 0x0 +// CHECK2-NEXT: 0x203020 R_X86_64_JUMP_SLOT zed 0x0 // CHECK2-NEXT: } // CHECK2-NEXT: ] @@ -64,28 +64,28 @@ // DISASM-NEXT: 100a: e9 {{.*}} jmp 49 // DISASM-NEXT: 100f: e9 {{.*}} jmp 60 -// 0x2018 - 0x1036 = 4066 -// 0x2020 - 0x1046 = 4058 -// 0x2028 - 0x1056 = 4050 +// 0x3018 - 0x1036 = 8162 +// 0x3020 - 0x1046 = 8154 +// 0x3028 - 0x1056 = 8146 // DISASM: Disassembly of section .plt: // DISASM-NEXT: .plt: -// DISASM-NEXT: 1020: ff 35 e2 0f 00 00 pushq 4066(%rip) -// DISASM-NEXT: 1026: ff 25 e4 0f 00 00 jmpq *4068(%rip) +// DISASM-NEXT: 1020: ff 35 e2 1f 00 00 pushq 8162(%rip) +// DISASM-NEXT: 1026: ff 25 e4 1f 00 00 jmpq *8164(%rip) // DISASM-NEXT: 102c: 0f 1f 40 00 nopl (%rax) // DISASM-EMPTY: // DISASM-NEXT: bar@plt: -// DISASM-NEXT: 1030: ff 25 e2 0f 00 00 jmpq *4066(%rip) +// DISASM-NEXT: 1030: ff 25 e2 1f 00 00 jmpq *8162(%rip) // DISASM-NEXT: 1036: 68 00 00 00 00 pushq $0 // DISASM-NEXT: 103b: e9 e0 ff ff ff jmp -32 <.plt> // DISASM-EMPTY: // DISASM-NEXT: zed@plt: -// DISASM-NEXT: 1040: ff 25 da 0f 00 00 jmpq *4058(%rip) +// DISASM-NEXT: 1040: ff 25 da 1f 00 00 jmpq *8154(%rip) // DISASM-NEXT: 1046: 68 01 00 00 00 pushq $1 // DISASM-NEXT: 104b: e9 d0 ff ff ff jmp -48 <.plt> // DISASM-EMPTY: // DISASM-NEXT: _start@plt: -// DISASM-NEXT: 1050: ff 25 d2 0f 00 00 jmpq *4050(%rip) +// DISASM-NEXT: 1050: ff 25 d2 1f 00 00 jmpq *8146(%rip) // DISASM-NEXT: 1056: 68 02 00 00 00 pushq $2 // DISASM-NEXT: 105b: e9 c0 ff ff ff jmp -64 <.plt> @@ -105,17 +105,17 @@ // DISASM2: Disassembly of section .plt: // DISASM2-NEXT: .plt: -// DISASM2-NEXT: 201020: ff 35 e2 0f 00 00 pushq 4066(%rip) -// DISASM2-NEXT: 201026: ff 25 e4 0f 00 00 jmpq *4068(%rip) +// DISASM2-NEXT: 201020: ff 35 e2 1f 00 00 pushq 8162(%rip) +// DISASM2-NEXT: 201026: ff 25 e4 1f 00 00 jmpq *8164(%rip) // DISASM2-NEXT: 20102c: 0f 1f 40 00 nopl (%rax) // DISASM2-EMPTY: // DISASM2-NEXT: bar@plt: -// DISASM2-NEXT: 201030: ff 25 e2 0f 00 00 jmpq *4066(%rip) +// DISASM2-NEXT: 201030: ff 25 e2 1f 00 00 jmpq *8162(%rip) // DISASM2-NEXT: 201036: 68 00 00 00 00 pushq $0 // DISASM2-NEXT: 20103b: e9 e0 ff ff ff jmp -32 <.plt> // DISASM2-EMPTY: // DISASM2-NEXT: zed@plt: -// DISASM2-NEXT: 201040: ff 25 da 0f 00 00 jmpq *4058(%rip) +// DISASM2-NEXT: 201040: ff 25 da 1f 00 00 jmpq *8154(%rip) // DISASM2-NEXT: 201046: 68 01 00 00 00 pushq $1 // DISASM2-NEXT: 20104b: e9 d0 ff ff ff jmp -48 <.plt> // DISASM2-NOT: 2010C0 Index: lld/trunk/test/ELF/ppc-rela.s =================================================================== --- lld/trunk/test/ELF/ppc-rela.s +++ lld/trunk/test/ELF/ppc-rela.s @@ -7,5 +7,5 @@ .long foo // CHECK: Section ({{.*}}) .rela.dyn { -// CHECK-NEXT: 0x1000 R_PPC_ADDR32 foo 0x0 +// CHECK-NEXT: 0x2000 R_PPC_ADDR32 foo 0x0 // CHECK-NEXT: } Index: lld/trunk/test/ELF/ppc64-call-reach.s =================================================================== --- lld/trunk/test/ELF/ppc64-call-reach.s +++ lld/trunk/test/ELF/ppc64-call-reach.s @@ -67,14 +67,14 @@ # .branch_lt[0] # THUNK-LABEL: __long_branch_callee: -# THUNK-NEXT: 10010000: {{.*}} addis 12, 2, -1 +# THUNK-NEXT: 10010000: {{.*}} addis 12, 2, 1 # THUNK-NEXT: ld 12, -32768(12) # THUNK-NEXT: mtctr 12 # THUNK-NEXT: bctr # .branch_lt[1] # THUNK-LABEL: __long_branch_tail_callee: -# THUNK-NEXT: 10010010: {{.*}} addis 12, 2, -1 +# THUNK-NEXT: 10010010: {{.*}} addis 12, 2, 1 # THUNK-NEXT: ld 12, -32760(12) # THUNK-NEXT: mtctr 12 # THUNK-NEXT: bctr @@ -88,7 +88,7 @@ # The offset from the TOC to the .branch_lt section is (-1 << 16) - 32768. # Name Type Address Off Size -# BRANCHLT: .branch_lt PROGBITS 0000000010020000 020000 000010 -# BRANCHLT: .got PROGBITS 0000000010030000 030000 000008 +# BRANCHLT: .got PROGBITS 0000000010020000 020000 000008 +# BRANCHLT: .branch_lt PROGBITS 0000000010030000 030000 000010 # BRANCHLT-NOT: .plt Index: lld/trunk/test/ELF/ppc64-func-entry-points.s =================================================================== --- lld/trunk/test/ELF/ppc64-func-entry-points.s +++ lld/trunk/test/ELF/ppc64-func-entry-points.s @@ -73,7 +73,7 @@ // CHECK: 10010020: {{.*}} bl .+144 // CHECK: 10010034: {{.*}} bl .+84 // CHECK: foo_external_diff: -// CHECK-NEXT: 10010080: {{.*}} addis 2, 12, 2 +// CHECK-NEXT: 10010080: {{.*}} addis 2, 12, 1 // CHECK-NEXT: 10010084: {{.*}} addi 2, 2, 32640 // CHECK-NEXT: 10010088: {{.*}} nop // CHECK: foo_external_same: Index: lld/trunk/test/ELF/ppc64-got-indirect.s =================================================================== --- lld/trunk/test/ELF/ppc64-got-indirect.s +++ lld/trunk/test/ELF/ppc64-got-indirect.s @@ -81,35 +81,35 @@ # r3 = r2 - 32760 = 0x10030008 -> .toc entry for glob. # CHECK: _start: -# CHECK-NEXT: 10010000: {{.*}} addis 2, 12, 3 +# CHECK-NEXT: 10010000: {{.*}} addis 2, 12, 2 # CHECK-NEXT: 10010004: {{.*}} addi 2, 2, -32768 # CHECK-NEXT: 10010008: {{.*}} nop # CHECK-NEXT: 1001000c: {{.*}} ld 3, -32760(2) # CHECK: 1001001c: {{.*}} lwa 3, 0(3) -# CHECK-LE: Disassembly of section .data: -# CHECK-LE-NEXT: glob: -# CHECK-LE-NEXT: 10020000: 37 00 00 00 - # CHECK-LE: Disassembly of section .got: # CHECK-LE-NEXT: .got: -# CHECK-LE-NEXT: 10030000: 00 80 03 10 -# CHECK-LE-NEXT: 10030004: 00 00 00 00 +# CHECK-LE-NEXT: 10020000: 00 80 02 10 +# CHECK-LE-NEXT: 10020004: 00 00 00 00 # Verify that .toc comes right after .got # CHECK-LE: Disassembly of section .toc: -# CHECK-LE: 10030008: 00 00 02 10 +# CHECK-LE: 10020008: 00 00 03 10 -# CHECK-BE: Disassembly of section .data: -# CHECK-BE-NEXT: glob: -# CHECK-BE-NEXT: 10020000: 00 00 00 37 +# CHECK-LE: Disassembly of section .data: +# CHECK-LE-NEXT: glob: +# CHECK-LE-NEXT: 10030000: 37 00 00 00 # CHECK-BE: Disassembly of section .got: # CHECK-BE-NEXT: .got: -# CHECK-BE-NEXT: 10030000: 00 00 00 00 -# CHECK-BE-NEXT: 10030004: 10 03 80 00 +# CHECK-BE-NEXT: 10020000: 00 00 00 00 +# CHECK-BE-NEXT: 10020004: 10 02 80 00 # Verify that .toc comes right after .got # CHECK-BE: Disassembly of section .toc: -# CHECK-BE: 10030008: 00 00 00 00 -# CHECK-BE: 1003000c: 10 02 00 00 +# CHECK-BE: 10020008: 00 00 00 00 +# CHECK-BE: 1002000c: 10 03 00 00 + +# CHECK-BE: Disassembly of section .data: +# CHECK-BE-NEXT: glob: +# CHECK-BE-NEXT: 10030000: 00 00 00 37 Index: lld/trunk/test/ELF/ppc64-long-branch.s =================================================================== --- lld/trunk/test/ELF/ppc64-long-branch.s +++ lld/trunk/test/ELF/ppc64-long-branch.s @@ -6,7 +6,7 @@ # RUN: ld.lld --no-toc-optimize %t.o %t3.so -o %t # RUN: llvm-objdump -d -start-address=0x10010000 -stop-address=0x10010018 %t | FileCheck %s -check-prefix=CALLEE_DUMP # RUN: llvm-objdump -d -start-address=0x12010020 -stop-address=0x12010084 %t | FileCheck %s -check-prefix=CALLER_DUMP -# RUN: llvm-objdump -D -start-address=0x12020008 -stop-address=0x12020010 %t | FileCheck %s -check-prefix=BRANCH_LT_LE +# RUN: llvm-objdump -D -start-address=0x12030008 -stop-address=0x12030010 %t | FileCheck %s -check-prefix=BRANCH_LT_LE # RUN: llvm-readelf --sections %t | FileCheck %s -check-prefix=SECTIONS # RUN: llvm-mc -filetype=obj -triple=powerpc64-unknown-linux %s -o %t.o @@ -15,7 +15,7 @@ # RUN: ld.lld --no-toc-optimize %t.o %t3.so -o %t # RUN: llvm-objdump -d -start-address=0x10010000 -stop-address=0x10010018 %t | FileCheck %s -check-prefix=CALLEE_DUMP # RUN: llvm-objdump -d -start-address=0x12010020 -stop-address=0x12010084 %t | FileCheck %s -check-prefix=CALLER_DUMP -# RUN: llvm-objdump -D -start-address=0x12020008 -stop-address=0x12020010 %t | FileCheck %s -check-prefix=BRANCH_LT_BE +# RUN: llvm-objdump -D -start-address=0x12030008 -stop-address=0x12030010 %t | FileCheck %s -check-prefix=BRANCH_LT_BE # RUN: llvm-readelf --sections %t | FileCheck %s -check-prefix=SECTIONS .text @@ -89,33 +89,33 @@ # Verify address of the callee # CALLEE_DUMP: callee: -# CALLEE_DUMP: 10010000: {{.*}} addis 2, 12, 515 +# CALLEE_DUMP: 10010000: {{.*}} addis 2, 12, 514 # CALLEE_DUMP: 10010004: {{.*}} addi 2, 2, -32544 # CALLEE_DUMP: 10010008: {{.*}} addis 4, 2, 0 # Verify the address of _start, and the call to the long-branch thunk. # CALLER_DUMP: _start: -# CALLER_DUMP: 12010020: {{.*}} addis 2, 12, 3 +# CALLER_DUMP: 12010020: {{.*}} addis 2, 12, 2 # CALLER_DUMP: 12010038: {{.*}} bl .+56 # Verify the thunks contents: TOC-pointer + offset = .branch_lt[0] # 0x120380e8 + (-2 << 16 + 32552) = 0x12020008 # CALLER_DUMP: __long_branch_callee: -# CALLER_DUMP: 12010060: {{.*}} addis 12, 2, -2 +# CALLER_DUMP: 12010060: {{.*}} addis 12, 2, 0 # CALLER_DUMP: 12010064: {{.*}} ld 12, 32552(12) # CALLER_DUMP: 12010068: {{.*}} mtctr 12 # CALLER_DUMP: 1201006c: {{.*}} bctr # BRANCH_LT_LE: Disassembly of section .branch_lt: # BRANCH_LT_LE-NEXT: .branch_lt: -# BRANCH_LT_LE-NEXT: 12020008: 08 00 01 10 -# BRANCH_LT_LE-NEXT: 1202000c: 00 00 00 00 +# BRANCH_LT_LE-NEXT: 12030008: 08 00 01 10 +# BRANCH_LT_LE-NEXT: 1203000c: 00 00 00 00 # BRANCH_LT_BE: Disassembly of section .branch_lt: # BRANCH_LT_BE-NEXT: .branch_lt: -# BRANCH_LT_BE-NEXT: 12020008: 00 00 00 00 -# BRANCH_LT_BE-NEXT: 1202000c: 10 01 00 08 +# BRANCH_LT_BE-NEXT: 12030008: 00 00 00 00 +# BRANCH_LT_BE-NEXT: 1203000c: 10 01 00 08 # [Nr] Name Type Address Off Size -# SECTIONS: [ 9] .branch_lt PROGBITS 0000000012020008 2020008 000008 -# SECTIONS: [11] .got PROGBITS 00000000120300e0 20300e0 000008 +# SECTIONS: [ 9] .got PROGBITS 00000000120200e0 20200e0 000008 +# SECTIONS: [12] .branch_lt PROGBITS 0000000012030008 2030008 000008 Index: lld/trunk/test/ELF/ppc64-shared-long_branch.s =================================================================== --- lld/trunk/test/ELF/ppc64-shared-long_branch.s +++ lld/trunk/test/ELF/ppc64-shared-long_branch.s @@ -83,32 +83,32 @@ # Verify address of the callee # CALLEE_DUMP: callee: -# CALLEE_DUMP: 10000: {{.*}} addis 2, 12, 515 +# CALLEE_DUMP: 10000: {{.*}} addis 2, 12, 514 # CALLEE_DUMP: 10004: {{.*}} addi 2, 2, -32528 # CALLEE_DUMP: 10008: {{.*}} addis 4, 2, 0 # Verify the address of _start, and the call to the long-branch thunk. # CALLER_DUMP: _start: -# CALLER_DUMP: 2010020: {{.*}} addis 2, 12, 3 +# CALLER_DUMP: 2010020: {{.*}} addis 2, 12, 2 # CALLER_DUMP: 2010038: {{.*}} bl .+56 # Verify the thunks contents: TOC-pointer + offset = .branch_lt[0] -# 0x20380F0 + 32552 = 0x2040018 +# 0x20280F0 + 32560 = 0x2030020 # CALLER_DUMP: __long_branch_callee: # CALLER_DUMP: 2010060: {{.*}} addis 12, 2, 0 -# CALLER_DUMP: 2010064: {{.*}} ld 12, 32552(12) +# CALLER_DUMP: 2010064: {{.*}} ld 12, 32560(12) # CALLER_DUMP: 2010068: {{.*}} mtctr 12 # CALLER_DUMP: 201006c: {{.*}} bctr # .got section is at address 0x20300f0 so TOC pointer points to 0x20400F0. # .plt section has a 2 entry header and a single entry for the long branch. # [Nr] Name Type Address Off Size -# SECTIONS: [11] .got PROGBITS 00000000020300f0 20300f0 000008 -# SECTIONS: [13] .plt NOBITS 0000000002040000 2030108 000018 -# SECTIONS: [14] .branch_lt NOBITS 0000000002040018 2030108 000008 +# SECTIONS: [10] .got PROGBITS 00000000020200f0 20200f0 000008 +# SECTIONS: [13] .plt NOBITS 0000000002030008 2030008 000018 +# SECTIONS: [14] .branch_lt NOBITS 0000000002030020 2030008 000008 # There is a relative dynamic relocation for (.plt + 16 bytes), with a base # address equal to callees local entry point (0x10000 + 8). # DYNRELOC: Relocation section '.rela.dyn' at offset 0x{{[0-9a-f]+}} contains 3 entries: # DYNRELOC: Offset Info Type Symbol's Value -# DYNRELOC: 0000000002040018 0000000000000016 R_PPC64_RELATIVE 10008 +# DYNRELOC: 0000000002030020 0000000000000016 R_PPC64_RELATIVE 10008 Index: lld/trunk/test/ELF/ppc64-toc-rel.s =================================================================== --- lld/trunk/test/ELF/ppc64-toc-rel.s +++ lld/trunk/test/ELF/ppc64-toc-rel.s @@ -65,18 +65,18 @@ # CHECK: Disassembly of section .text: # CHECK-NEXT: _start: -# CHECK: 10010008: {{.*}} addis 3, 2, -1 +# CHECK: 10010008: {{.*}} addis 3, 2, 1 # CHECK-NEXT: 1001000c: {{.*}} addi 3, 3, -32768 # CHECK: Disassembly of section .data: # CHECK-NEXT: global_a: -# CHECK-NEXT: 10020000: {{.*}} +# CHECK-NEXT: 10030000: {{.*}} # CHECK-LE: Disassembly of section .got: # CHECK-LE-NEXT: .got: -# CHECK-LE-NEXT: 10030000: 00 80 03 10 +# CHECK-LE-NEXT: 10020000: 00 80 02 10 # CHECK-BE: Disassembly of section .got: # CHECK-BE-NEXT: .got: -# CHECK-BE-NEXT: 10030000: 00 00 00 00 -# CHECK-BE-NEXT: 10030004: 10 03 80 00 +# CHECK-BE-NEXT: 10020000: 00 00 00 00 +# CHECK-BE-NEXT: 10020004: 10 02 80 00 Index: lld/trunk/test/ELF/pr34660.s =================================================================== --- lld/trunk/test/ELF/pr34660.s +++ lld/trunk/test/ELF/pr34660.s @@ -14,10 +14,10 @@ # DISASM: Disassembly of section .text: # DISASM-NEXT: $x.0: -# DISASM-NEXT: 10000: 28 00 08 58 ldr x8, #65540 +# DISASM-NEXT: 10000: 28 00 10 58 ldr x8, #131076 # SYM: Symbol table '.symtab' -# SYM: 0000000000020004 0 NOTYPE LOCAL DEFAULT 5 patatino +# SYM: 0000000000030004 0 NOTYPE LOCAL DEFAULT 6 patatino ldr x8, patatino .data Index: lld/trunk/test/ELF/rel-offset.s =================================================================== --- lld/trunk/test/ELF/rel-offset.s +++ lld/trunk/test/ELF/rel-offset.s @@ -10,6 +10,6 @@ .quad foo // CHECK: Section ({{.*}}) .rela.dyn { -// CHECK-NEXT: 0x1000 R_X86_64_64 foo 0x0 -// CHECK-NEXT: 0x1008 R_X86_64_64 foo 0x0 +// CHECK-NEXT: 0x2000 R_X86_64_64 foo 0x0 +// CHECK-NEXT: 0x2008 R_X86_64_64 foo 0x0 // CHECK-NEXT: } Index: lld/trunk/test/ELF/relative-dynamic-reloc-pie.s =================================================================== --- lld/trunk/test/ELF/relative-dynamic-reloc-pie.s +++ lld/trunk/test/ELF/relative-dynamic-reloc-pie.s @@ -6,9 +6,9 @@ ## Test that we create R_X86_64_RELATIVE relocations with -pie. # CHECK: Relocations [ # CHECK-NEXT: Section ({{.*}}) .rela.dyn { -# CHECK-NEXT: 0x2000 R_X86_64_RELATIVE - 0x2000 -# CHECK-NEXT: 0x2008 R_X86_64_RELATIVE - 0x2008 -# CHECK-NEXT: 0x2010 R_X86_64_RELATIVE - 0x2009 +# CHECK-NEXT: 0x3000 R_X86_64_RELATIVE - 0x3000 +# CHECK-NEXT: 0x3008 R_X86_64_RELATIVE - 0x3008 +# CHECK-NEXT: 0x3010 R_X86_64_RELATIVE - 0x3009 # CHECK-NEXT: } # CHECK-NEXT: ] Index: lld/trunk/test/ELF/relative-dynamic-reloc-ppc64.s =================================================================== --- lld/trunk/test/ELF/relative-dynamic-reloc-ppc64.s +++ lld/trunk/test/ELF/relative-dynamic-reloc-ppc64.s @@ -14,10 +14,10 @@ // CHECK-NEXT: Section ({{.*}}) .rela.dyn { // CHECK-NEXT: 0x[[FOO_ADDR:.*]] R_PPC64_RELATIVE - 0x[[FOO_ADDR]] // CHECK-NEXT: 0x[[BAR_ADDR:.*]] R_PPC64_RELATIVE - 0x[[BAR_ADDR]] -// CHECK-NEXT: 0x10010 R_PPC64_RELATIVE - 0x10009 +// CHECK-NEXT: 0x20010 R_PPC64_RELATIVE - 0x20009 // CHECK-NEXT: 0x{{.*}} R_PPC64_RELATIVE - 0x[[ZED_ADDR:.*]] // CHECK-NEXT: 0x{{.*}} R_PPC64_RELATIVE - 0x[[FOO_ADDR]] -// CHECK-NEXT: 0x10028 R_PPC64_ADDR64 external 0x0 +// CHECK-NEXT: 0x20028 R_PPC64_ADDR64 external 0x0 // CHECK-NEXT: } // CHECK-NEXT: ] Index: lld/trunk/test/ELF/relative-dynamic-reloc.s =================================================================== --- lld/trunk/test/ELF/relative-dynamic-reloc.s +++ lld/trunk/test/ELF/relative-dynamic-reloc.s @@ -10,10 +10,10 @@ // CHECK-NEXT: Section ({{.*}}) .rela.dyn { // CHECK-NEXT: 0x[[FOO_ADDR:.*]] R_X86_64_RELATIVE - 0x[[FOO_ADDR]] // CHECK-NEXT: 0x[[BAR_ADDR:.*]] R_X86_64_RELATIVE - 0x[[BAR_ADDR]] -// CHECK-NEXT: 0x1010 R_X86_64_RELATIVE - 0x1009 +// CHECK-NEXT: 0x2010 R_X86_64_RELATIVE - 0x2009 // CHECK-NEXT: 0x{{.*}} R_X86_64_RELATIVE - 0x[[ZED_ADDR:.*]] // CHECK-NEXT: 0x{{.*}} R_X86_64_RELATIVE - 0x[[FOO_ADDR]] -// CHECK-NEXT: 0x1028 R_X86_64_64 external 0x0 +// CHECK-NEXT: 0x2028 R_X86_64_64 external 0x0 // CHECK-NEXT: } // CHECK-NEXT: ] Index: lld/trunk/test/ELF/relocation-copy-flags.s =================================================================== --- lld/trunk/test/ELF/relocation-copy-flags.s +++ lld/trunk/test/ELF/relocation-copy-flags.s @@ -30,7 +30,7 @@ // CHECK-NEXT: AddressAlignment: 4 // CHECK-NEXT: EntrySize: 0 // CHECK-NEXT: SectionData ( -// CHECK-NEXT: 0000: 00402000 +// CHECK-NEXT: 0000: 10302000 // CHECK-NEXT: ) // CHECK: Name: bar @@ -39,8 +39,8 @@ // CHECK-NEXT: SHF_ALLOC // CHECK-NEXT: SHF_WRITE // CHECK-NEXT: ] -// CHECK-NEXT: Address: 0x202000 -// CHECK-NEXT: Offset: 0x2000 +// CHECK-NEXT: Address: 0x203000 +// CHECK-NEXT: Offset: 0x3000 // CHECK-NEXT: Size: 8 // CHECK-NEXT: Link: 0 // CHECK-NEXT: Info: 0 @@ -55,7 +55,7 @@ // CHECK-NEXT: Flags [ // CHECK-NEXT: ] // CHECK-NEXT: Address: 0x0 -// CHECK-NEXT: Offset: 0x30B0 +// CHECK-NEXT: Offset: 0x3008 // CHECK-NEXT: Size: 8 // CHECK-NEXT: Link: 0 // CHECK-NEXT: Info: 0 @@ -67,7 +67,7 @@ // CHECK: Relocations [ // CHECK-NEXT: Section (4) .rela.dyn { -// CHECK-NEXT: 0x204000 R_X86_64_COPY x 0x0 -// CHECK-NEXT: 0x202000 R_X86_64_64 z 0x0 +// CHECK-NEXT: 0x203010 R_X86_64_COPY x 0x0 +// CHECK-NEXT: 0x203000 R_X86_64_64 z 0x0 // CHECK-NEXT: } // CHECK-NEXT: ] Index: lld/trunk/test/ELF/relocation-i686.s =================================================================== --- lld/trunk/test/ELF/relocation-i686.s +++ lld/trunk/test/ELF/relocation-i686.s @@ -55,7 +55,7 @@ // ADDR-NEXT: SHF_ALLOC // ADDR-NEXT: SHF_WRITE // ADDR-NEXT: ] -// ADDR-NEXT: Address: 0x403078 +// ADDR-NEXT: Address: 0x402078 // ADDR-NEXT: Offset: // ADDR-NEXT: Size: 8 @@ -63,11 +63,11 @@ R_386_GOTPC: movl $_GLOBAL_OFFSET_TABLE_, %eax -// 0x402078 + 8 - 0x401014 = 4204 +// 0x402078 + 8 - 0x401014 = 8300 // CHECK: Disassembly of section .R_386_GOTPC: // CHECK-NEXT: R_386_GOTPC: -// CHECK-NEXT: 401014: {{.*}} movl $8300, %eax +// CHECK-NEXT: 401014: {{.*}} movl $4204, %eax .section .dynamic_reloc, "ax",@progbits call bar Index: lld/trunk/test/ELF/relocation-non-alloc.s =================================================================== --- lld/trunk/test/ELF/relocation-non-alloc.s +++ lld/trunk/test/ELF/relocation-non-alloc.s @@ -15,15 +15,15 @@ // APPLYDYNREL-NEXT: SHF_ALLOC // APPLYDYNREL-NEXT: SHF_WRITE // APPLYDYNREL-NEXT: ] -// APPLYDYNREL-NEXT: Address: 0x1000 -// APPLYDYNREL-NEXT: Offset: 0x1000 +// APPLYDYNREL-NEXT: Address: 0x2000 +// APPLYDYNREL-NEXT: Offset: 0x2000 // APPLYDYNREL-NEXT: Size: 16 // APPLYDYNREL-NEXT: Link: 0 // APPLYDYNREL-NEXT: Info: 0 // APPLYDYNREL-NEXT: AddressAlignment: 1 // APPLYDYNREL-NEXT: EntrySize: 0 // APPLYDYNREL-NEXT: SectionData ( -// APPLYDYNREL-NEXT: 0000: 00100000 00000000 00000000 00000000 +// APPLYDYNREL-NEXT: 0000: 00200000 00000000 00000000 00000000 // APPLYDYNREL-NEXT: ) // NOAPPLYDYNREL: Name: .data @@ -32,8 +32,8 @@ // NOAPPLYDYNREL-NEXT: SHF_ALLOC // NOAPPLYDYNREL-NEXT: SHF_WRITE // NOAPPLYDYNREL-NEXT: ] -// NOAPPLYDYNREL-NEXT: Address: 0x1000 -// NOAPPLYDYNREL-NEXT: Offset: 0x1000 +// NOAPPLYDYNREL-NEXT: Address: 0x2000 +// NOAPPLYDYNREL-NEXT: Offset: 0x2000 // NOAPPLYDYNREL-NEXT: Size: 16 // NOAPPLYDYNREL-NEXT: Link: 0 // NOAPPLYDYNREL-NEXT: Info: 0 @@ -55,14 +55,14 @@ // CHECK-NEXT: AddressAlignment: 1 // CHECK-NEXT: EntrySize: 0 // CHECK-NEXT: SectionData ( -// CHECK-NEXT: 0000: 00100000 00000000 00100000 00000000 -// CHECK-NEXT: 0010: 00100000 00000000 00100000 00000000 +// CHECK-NEXT: 0000: 00200000 00000000 00200000 00000000 +// CHECK-NEXT: 0010: 00200000 00000000 00200000 00000000 // CHECK-NEXT: ) // CHECK: Relocations [ // CHECK-NEXT: Section ({{.}}) .rela.dyn { -// CHECK-NEXT: 0x1000 R_X86_64_RELATIVE - 0x1000 -// CHECK-NEXT: 0x1008 R_X86_64_64 zed 0x0 +// CHECK-NEXT: 0x2000 R_X86_64_RELATIVE - 0x2000 +// CHECK-NEXT: 0x2008 R_X86_64_64 zed 0x0 // CHECK-NEXT: } // CHECK-NEXT: ] Index: lld/trunk/test/ELF/relocation-relative-weak.s =================================================================== --- lld/trunk/test/ELF/relocation-relative-weak.s +++ lld/trunk/test/ELF/relocation-relative-weak.s @@ -4,7 +4,7 @@ # RUN: llvm-readobj -dyn-relocations %t | FileCheck %s # CHECK: Dynamic Relocations { -# CHECK-NEXT: 0x2018 R_X86_64_JUMP_SLOT w 0x0 +# CHECK-NEXT: 0x3018 R_X86_64_JUMP_SLOT w 0x0 # CHECK-NEXT: } .globl _start Index: lld/trunk/test/ELF/relocation.s =================================================================== --- lld/trunk/test/ELF/relocation.s +++ lld/trunk/test/ELF/relocation.s @@ -16,35 +16,35 @@ // SEC-NEXT: Offset: 0x1030 // SEC-NEXT: Size: 48 -// SEC: Name: .got.plt +// SEC: Name: .got // SEC-NEXT: Type: SHT_PROGBITS // SEC-NEXT: Flags [ // SEC-NEXT: SHF_ALLOC // SEC-NEXT: SHF_WRITE // SEC-NEXT: ] -// SEC-NEXT: Address: 0x202000 -// SEC-NEXT: Offset: 0x2000 -// SEC-NEXT: Size: 40 +// SEC-NEXT: Address: 0x2020F0 +// SEC-NEXT: Offset: +// SEC-NEXT: Size: 8 // SEC-NEXT: Link: 0 // SEC-NEXT: Info: 0 // SEC-NEXT: AddressAlignment: 8 // SEC-NEXT: EntrySize: 0 -// SEC-NEXT: } +// SEC-NEXT: } -// SEC: Name: .got +// SEC: Name: .got.plt // SEC-NEXT: Type: SHT_PROGBITS // SEC-NEXT: Flags [ // SEC-NEXT: SHF_ALLOC // SEC-NEXT: SHF_WRITE // SEC-NEXT: ] -// SEC-NEXT: Address: 0x2030F0 -// SEC-NEXT: Offset: -// SEC-NEXT: Size: 8 +// SEC-NEXT: Address: 0x203000 +// SEC-NEXT: Offset: 0x3000 +// SEC-NEXT: Size: 40 // SEC-NEXT: Link: 0 // SEC-NEXT: Info: 0 // SEC-NEXT: AddressAlignment: 8 // SEC-NEXT: EntrySize: 0 -// SEC-NEXT: } +// SEC-NEXT: } .section .text,"ax",@progbits,unique,1 .global _start @@ -120,9 +120,9 @@ R_X86_64_GOTPCREL: .long zed@gotpcrel -// 0x2030F0(.got) - 0x2002c8(.R_X86_64_GOTPCREL) = 0x2e28 +// 0x2020F0(.got) - 0x2002c8(.R_X86_64_GOTPCREL) = 0x1e28 // CHECK: Contents of section .R_X86_64_GOTPCREL -// CHECK-NEXT: 2002c8 282e0000 +// CHECK-NEXT: 2002c8 281e0000 .section .R_X86_64_GOT32,"a",@progbits .global R_X86_64_GOT32 Index: lld/trunk/test/ELF/relro-non-contiguous.s =================================================================== --- lld/trunk/test/ELF/relro-non-contiguous.s +++ lld/trunk/test/ELF/relro-non-contiguous.s @@ -3,12 +3,12 @@ // RUN: llvm-mc -filetype=obj -triple=x86_64-unknown-linux %p/Inputs/copy-in-shared.s -o %t2.o // RUN: ld.lld -shared %t.o %t2.o -o %t.so -// Place the .got.plt (non relro) immediately after .dynamic. This is the -// reverse order of the non-linker script case. The linker created .bss.rel.ro -// section will be placed after .got.plt causing the relro to be non-contiguous. +// Separate RelRo sections .dynamic .bss.rel.ro with non RelRo .got.plt. +// This causes the RelRo sections to be non-contiguous. // RUN: echo "SECTIONS { \ // RUN: .dynamic : { *(.dynamic) } \ // RUN: .got.plt : { *(.got.plt) } \ +// RUN: .bss.rel.ro : { *(.bss.rel.o) } \ // RUN: } " > %t.script // RUN: llvm-mc -filetype=obj -triple=x86_64-unknown-linux %s -o %t3.o Index: lld/trunk/test/ELF/section-layout.s =================================================================== --- lld/trunk/test/ELF/section-layout.s +++ lld/trunk/test/ELF/section-layout.s @@ -32,6 +32,7 @@ // For non-executable and non-writable sections, PROGBITS appear after others. // CHECK: Name: a // CHECK: Name: b + // CHECK: Name: c // CHECK: Name: d @@ -40,13 +41,13 @@ // CHECK: Name: k // CHECK: Name: l -// Writable sections appear before TLS and other relro sections. -// CHECK: Name: i - // TLS sections are only sorted on NOBITS. // CHECK: Name: e // CHECK: Name: g +// Writable sections appear after TLS and other relro sections. +// CHECK: Name: i + // CHECK: Name: j // Non allocated sections are in input order. Index: lld/trunk/test/ELF/section-name.s =================================================================== --- lld/trunk/test/ELF/section-name.s +++ lld/trunk/test/ELF/section-name.s @@ -45,12 +45,12 @@ // CHECK: 1 .rodata 00000002 // CHECK: 2 .gcc_except_table 00000001 // CHECK: 3 .text 00000002 -// CHECK: 4 .data 00000002 -// CHECK: 5 .foo.a 00000001 -// CHECK: 6 .foo 00000001 -// CHECK: 7 .tdata 00000001 -// CHECK: 8 .tbss 00000001 -// CHECK: 9 .data.rel.ro 00000004 +// CHECK: 4 .tdata 00000001 +// CHECK: 5 .tbss 00000001 +// CHECK: 6 .data.rel.ro 00000004 +// CHECK: 7 .data 00000002 +// CHECK: 8 .foo.a 00000001 +// CHECK: 9 .foo 00000001 // CHECK: 10 .bss 00000002 // CHECK: 11 .comment 00000008 // CHECK: 12 .symtab 00000030 Index: lld/trunk/test/ELF/sort-norosegment.s =================================================================== --- lld/trunk/test/ELF/sort-norosegment.s +++ lld/trunk/test/ELF/sort-norosegment.s @@ -8,8 +8,8 @@ # CHECK-NEXT: .hash {{.*}} A # CHECK-NEXT: .dynstr {{.*}} A # CHECK-NEXT: .text {{.*}} AX -# CHECK-NEXT: foo {{.*}} WA # CHECK-NEXT: .dynamic {{.*}} WA +# CHECK-NEXT: foo {{.*}} WA .section foo, "aw" .byte 0 Index: lld/trunk/test/ELF/startstop.s =================================================================== --- lld/trunk/test/ELF/startstop.s +++ lld/trunk/test/ELF/startstop.s @@ -50,13 +50,13 @@ // SYMBOL: Symbol { // SYMBOL: Name: __stop_zed1 -// SYMBOL: Value: 0x2010 +// SYMBOL: Value: 0x3010 // SYMBOL: STV_PROTECTED // SYMBOL: Section: zed1 // SYMBOL: } // SYMBOL: Symbol { // SYMBOL: Name: __stop_zed2 -// SYMBOL: Value: 0x2020 +// SYMBOL: Value: 0x3020 // SYMBOL: STV_PROTECTED // SYMBOL: Section: zed2 // SYMBOL: } Index: lld/trunk/test/ELF/synthetic-got.s =================================================================== --- lld/trunk/test/ELF/synthetic-got.s +++ lld/trunk/test/ELF/synthetic-got.s @@ -7,13 +7,13 @@ # RUN: | FileCheck %s --check-prefix=GOTDATA # GOT: Sections: -# GOT: 8 .got.plt 00000020 00000000000000e0 DATA -# GOT: 10 .got 00000008 00000000000001d0 DATA -# GOTDATA: Contents of section .got.plt: -# GOTDATA-NEXT: 00e0 00010000 00000000 00000000 00000000 -# GOTDATA-NEXT: 00f0 00000000 00000000 d6000000 00000000 -# GOTDATA-NEXT: Contents of section .got: -# GOTDATA-NEXT: 01d0 00000000 00000000 +# GOT: 9 .got 00000008 00000000000001b0 DATA +# GOT: 10 .got.plt 00000020 00000000000001b8 DATA +# GOTDATA: Contents of section .got: +# GOTDATA-NEXT: 01b0 00000000 00000000 +# GOTDATA-NEXT: Contents of section .got.plt: +# GOTDATA-NEXT: 01b8 e0000000 00000000 00000000 00000000 +# GOTDATA-NEXT: 01c8 00000000 00000000 d6000000 00000000 # RUN: echo "SECTIONS { .mygot : { *(.got) *(.got.plt) } }" > %t1.script # RUN: ld.lld --hash-style=sysv -shared %t.o -o %t1.out --script %t1.script Index: lld/trunk/test/ELF/tls-dynamic-i686.s =================================================================== --- lld/trunk/test/ELF/tls-dynamic-i686.s +++ lld/trunk/test/ELF/tls-dynamic-i686.s @@ -56,8 +56,8 @@ // CHECK-NEXT: SHF_ALLOC // CHECK-NEXT: SHF_WRITE // CHECK-NEXT: ] -// CHECK-NEXT: Address: 0x3070 -// CHECK-NEXT: Offset: 0x3070 +// CHECK-NEXT: Address: 0x2070 +// CHECK-NEXT: Offset: 0x2070 // CHECK-NEXT: Size: 32 // CHECK-NEXT: Link: 0 // CHECK-NEXT: Info: 0 @@ -66,13 +66,13 @@ // CHECK: Relocations [ // CHECK: Section ({{.+}}) .rel.dyn { -// CHECK-NEXT: 0x3080 R_386_TLS_DTPMOD32 - 0x0 -// CHECK-NEXT: 0x3070 R_386_TLS_DTPMOD32 tls0 0x0 -// CHECK-NEXT: 0x3074 R_386_TLS_DTPOFF32 tls0 0x0 -// CHECK-NEXT: 0x3088 R_386_TLS_TPOFF tls0 0x0 -// CHECK-NEXT: 0x3078 R_386_TLS_DTPMOD32 tls1 0x0 -// CHECK-NEXT: 0x307C R_386_TLS_DTPOFF32 tls1 0x0 -// CHECK-NEXT: 0x308C R_386_TLS_TPOFF tls1 0x0 +// CHECK-NEXT: 0x2080 R_386_TLS_DTPMOD32 - 0x0 +// CHECK-NEXT: 0x2070 R_386_TLS_DTPMOD32 tls0 0x0 +// CHECK-NEXT: 0x2074 R_386_TLS_DTPOFF32 tls0 0x0 +// CHECK-NEXT: 0x2088 R_386_TLS_TPOFF tls0 0x0 +// CHECK-NEXT: 0x2078 R_386_TLS_DTPMOD32 tls1 0x0 +// CHECK-NEXT: 0x207C R_386_TLS_DTPOFF32 tls1 0x0 +// CHECK-NEXT: 0x208C R_386_TLS_TPOFF tls1 0x0 // CHECK-NEXT: } // DIS: Disassembly of section .text: Index: lld/trunk/test/ELF/tls-dynamic.s =================================================================== --- lld/trunk/test/ELF/tls-dynamic.s +++ lld/trunk/test/ELF/tls-dynamic.s @@ -48,28 +48,28 @@ // CHECK-NEXT: SHF_ALLOC // CHECK-NEXT: SHF_WRITE // CHECK-NEXT: ] -// CHECK-NEXT: Address: 0x30E0 +// CHECK-NEXT: Address: 0x20E0 // CHECK-NEXT: Offset: // CHECK-NEXT: Size: 40 // CHECK: Relocations [ // CHECK: Section ({{.+}}) .rela.dyn { -// CHECK-NEXT: 0x30E0 R_X86_64_DTPMOD64 - 0x0 -// CHECK-NEXT: 0x30F0 R_X86_64_DTPMOD64 c 0x0 -// CHECK-NEXT: 0x30F8 R_X86_64_DTPOFF64 c 0x0 -// CHECK-NEXT: 0x3100 R_X86_64_TPOFF64 c 0x0 +// CHECK-NEXT: 0x20E0 R_X86_64_DTPMOD64 - 0x0 +// CHECK-NEXT: 0x20F0 R_X86_64_DTPMOD64 c 0x0 +// CHECK-NEXT: 0x20F8 R_X86_64_DTPOFF64 c 0x0 +// CHECK-NEXT: 0x2100 R_X86_64_TPOFF64 c 0x0 // CHECK-NEXT: } -// 8409 = (0x30E0 + -4) - (0x1000 + 3) // PC relative offset to got entry. -// 8397 = (0x30F0 + -4) - (0x100c + 3) // PC relative offset to got entry. -// 8379 = (0x30F8 + -4) - (0x102e + 3) // PC relative offset to got entry. -// 8375 = (0x3100 + -4) - (0x1042 + 3) // PC relative offset to got entry. +// 4313 = (0x20E0 + -4) - (0x1000 + 3) // PC relative offset to got entry. +// 4301 = (0x20F0 + -4) - (0x100c + 3) // PC relative offset to got entry. +// 4283 = (0x20F8 + -4) - (0x102e + 3) // PC relative offset to got entry. +// 4279 = (0x2100 + -4) - (0x1042 + 3) // PC relative offset to got entry. // DIS: Disassembly of section .text: // DIS-NEXT: .text: -// DIS-NEXT: 1000: {{.+}} leaq 8409(%rip), %rdi +// DIS-NEXT: 1000: {{.+}} leaq 4313(%rip), %rdi // DIS-NEXT: 1007: {{.+}} callq -// DIS-NEXT: 100c: {{.+}} leaq 8397(%rip), %rdi +// DIS-NEXT: 100c: {{.+}} leaq 4301(%rip), %rdi // DIS-NEXT: 1013: {{.+}} callq // DIS-NEXT: 1018: {{.+}} leaq (%rax), %rcx // DIS-NEXT: 101f: {{.+}} leaq 4(%rax), %rcx @@ -77,10 +77,10 @@ // DIS-NEXT: 1028: 00 00 // DIS-NEXT: 102a: 00 00 // DIS-NEXT: 102c: 00 00 -// DIS-NEXT: 102e: {{.+}} leaq 8379(%rip), %rdi +// DIS-NEXT: 102e: {{.+}} leaq 4283(%rip), %rdi // DIS-NEXT: 1035: {{.+}} callq // DIS-NEXT: 103b: {{.+}} leaq (%rax), %rcx -// DIS-NEXT: 1042: {{.+}} movq 8375(%rip), %rax +// DIS-NEXT: 1042: {{.+}} movq 4279(%rip), %rax // DIS-NEXT: 1049: {{.+}} movq %fs:(%rax), %rax // DIS-NEXT: 104d: {{.+}} movabsq $0, %rax // DIS-NEXT: 1057: {{.+}} movabsq $4, %rax Index: lld/trunk/test/ELF/undef-with-plt-addr.s =================================================================== --- lld/trunk/test/ELF/undef-with-plt-addr.s +++ lld/trunk/test/ELF/undef-with-plt-addr.s @@ -25,10 +25,10 @@ // CHECK-NEXT: Address: 0x201010 // CHECK: Section ({{.*}}) .rela.dyn { -// CHECK-NEXT: 0x202000 R_X86_64_64 foo 0x0 +// CHECK-NEXT: 0x203000 R_X86_64_64 foo 0x0 // CHECK-NEXT: } // CHECK-NEXT: Section ({{.*}}) .rela.plt { -// CHECK-NEXT: 0x202020 R_X86_64_JUMP_SLOT set_data 0x0 +// CHECK-NEXT: 0x203020 R_X86_64_JUMP_SLOT set_data 0x0 // CHECK-NEXT: } // CHECK: Name: foo Index: lld/trunk/test/ELF/undefined-versioned-symbol.s =================================================================== --- lld/trunk/test/ELF/undefined-versioned-symbol.s +++ lld/trunk/test/ELF/undefined-versioned-symbol.s @@ -15,19 +15,19 @@ // CHECK: Section ({{.*}}) .rela.dyn { // CHECK-NEXT: Relocation { -// CHECK-NEXT: Offset: 0x1000 +// CHECK-NEXT: Offset: 0x2000 // CHECK-NEXT: Type: R_X86_64_64 (1) // CHECK-NEXT: Symbol: basename@FBSD_1.1 (1) // CHECK-NEXT: Addend: 0x0 // CHECK-NEXT: } // CHECK-NEXT: Relocation { -// CHECK-NEXT: Offset: 0x1008 +// CHECK-NEXT: Offset: 0x2008 // CHECK-NEXT: Type: R_X86_64_64 (1) // CHECK-NEXT: Symbol: basename@FBSD_1.0 (2) // CHECK-NEXT: Addend: 0x0 // CHECK-NEXT: } // CHECK-NEXT: Relocation { -// CHECK-NEXT: Offset: 0x1010 +// CHECK-NEXT: Offset: 0x2010 // CHECK-NEXT: Type: R_X86_64_64 (1) // CHECK-NEXT: Symbol: basename@FBSD_1.1 (3) // CHECK-NEXT: Addend: 0x0 Index: lld/trunk/test/ELF/version-script-weak.s =================================================================== --- lld/trunk/test/ELF/version-script-weak.s +++ lld/trunk/test/ELF/version-script-weak.s @@ -10,7 +10,7 @@ # CHECK: Relocations [ # CHECK-NEXT: Section ({{.*}}) .rela.plt { -# CHECK-NEXT: 0x2018 R_X86_64_JUMP_SLOT foo +# CHECK-NEXT: 0x3018 R_X86_64_JUMP_SLOT foo # CHECK-NEXT: } # CHECK-NEXT: ] # CHECK: Symbol { Index: lld/trunk/test/ELF/wrap-plt.s =================================================================== --- lld/trunk/test/ELF/wrap-plt.s +++ lld/trunk/test/ELF/wrap-plt.s @@ -20,8 +20,8 @@ // CHECK: Relocations [ // CHECK-NEXT: Section ({{.*}}) .rela.plt { -// CHECK-NEXT: 0x2018 R_X86_64_JUMP_SLOT __wrap_foo 0x0 -// CHECK-NEXT: 0x2020 R_X86_64_JUMP_SLOT _start 0x0 +// CHECK-NEXT: 0x3018 R_X86_64_JUMP_SLOT __wrap_foo 0x0 +// CHECK-NEXT: 0x3020 R_X86_64_JUMP_SLOT _start 0x0 // CHECK-NEXT: } // CHECK-NEXT: ] Index: lld/trunk/test/ELF/x86-64-plt-high-addr.s =================================================================== --- lld/trunk/test/ELF/x86-64-plt-high-addr.s +++ lld/trunk/test/ELF/x86-64-plt-high-addr.s @@ -8,16 +8,16 @@ // RUN: llvm-objdump -s -j .got.plt %t1.exe | FileCheck %s // CHECK: Contents of section .got.plt: -// CHECK-NEXT: cafe00002000 00300000 feca0000 00000000 00000000 -// CHECK-NEXT: cafe00002010 00000000 00000000 26100000 feca0000 +// CHECK-NEXT: cafe00003000 00200000 feca0000 00000000 00000000 +// CHECK-NEXT: cafe00003010 00000000 00000000 26100000 feca0000 // RUN: llvm-mc -filetype=obj -triple=x86_64-unknown-linux %s -o %t2.o // RUN: ld.lld -o %t2.exe %t2.o %t.so -image-base=0xcafe00000000 -z retpolineplt // RUN: llvm-objdump -s -j .got.plt %t2.exe | FileCheck -check-prefix=RETPOLINE %s // RETPOLINE: Contents of section .got.plt: -// RETPOLINE-NEXT: cafe00002000 00300000 feca0000 00000000 00000000 -// RETPOLINE-NEXT: cafe00002010 00000000 00000000 51100000 feca0000 +// RETPOLINE-NEXT: cafe00003000 00200000 feca0000 00000000 00000000 +// RETPOLINE-NEXT: cafe00003010 00000000 00000000 51100000 feca0000 .global _start _start: Index: lld/trunk/test/ELF/x86-64-reloc-gotoff64.s =================================================================== --- lld/trunk/test/ELF/x86-64-reloc-gotoff64.s +++ lld/trunk/test/ELF/x86-64-reloc-gotoff64.s @@ -4,8 +4,8 @@ // RUN: llvm-readelf -S %t.so | FileCheck %s -check-prefix=SECTION // RUN: llvm-objdump -d %t.so | FileCheck %s -// SECTION: .dynamic DYNAMIC 0000000000003000 -// SECTION: .got PROGBITS 0000000000003070 003070 000000 +// SECTION: .dynamic DYNAMIC 0000000000002000 +// SECTION: .got PROGBITS 0000000000002070 002070 000000 // All the _GLOBAL_OFFSET_TABLE_ occurrences below refer to the address // of GOT base, not the address of the symbol _GLOBAL_OFFSET_TABLE_. These @@ -20,9 +20,9 @@ // extern long _DYNAMIC[] __attribute__((visibility("hidden"))); // long* dynamic() { return _DYNAMIC; } -// 0x3070 (.got end) - 0x1007 = 8297 -// 0x3000 (_DYNAMIC) - 0x3070 (.got end) = -112 -// CHECK: 1000: {{.*}} leaq 8297(%rip), %rdx +// 0x2070 (.got end) - 0x1007 = 4201 +// 0x2000 (_DYNAMIC) - 0x2070 (.got end) = -112 +// CHECK: 1000: {{.*}} leaq 4201(%rip), %rdx // CHECK-NEXT: 1007: {{.*}} movabsq $-112, %rax .global dynamic dynamic: Index: lld/trunk/test/ELF/x86-64-reloc-gotpc64.s =================================================================== --- lld/trunk/test/ELF/x86-64-reloc-gotpc64.s +++ lld/trunk/test/ELF/x86-64-reloc-gotpc64.s @@ -4,11 +4,11 @@ // RUN: llvm-readelf -S %t.so | FileCheck %s -check-prefix=SECTION // RUN: llvm-objdump -d %t.so | FileCheck %s -// SECTION: .got PROGBITS 0000000000003070 003070 000000 +// SECTION: .got PROGBITS 0000000000002070 002070 000000 -// 0x3070 (.got end) - 0x1000 = 8304 +// 0x2070 (.got end) - 0x1000 = 4208 // CHECK: gotpc64: -// CHECK-NEXT: 1000: {{.*}} movabsq $8304, %r11 +// CHECK-NEXT: 1000: {{.*}} movabsq $4208, %r11 .global gotpc64 gotpc64: movabsq $_GLOBAL_OFFSET_TABLE_-., %r11 Index: lld/trunk/test/ELF/x86-64-retpoline-linkerscript.s =================================================================== --- lld/trunk/test/ELF/x86-64-retpoline-linkerscript.s +++ lld/trunk/test/ELF/x86-64-retpoline-linkerscript.s @@ -14,8 +14,8 @@ // CHECK: Disassembly of section .plt: // CHECK-NEXT: .plt: -// CHECK-NEXT: 10: ff 35 72 00 00 00 pushq 114(%rip) -// CHECK-NEXT: 16: 4c 8b 1d 73 00 00 00 movq 115(%rip), %r11 +// CHECK-NEXT: 10: ff 35 32 01 00 00 pushq 306(%rip) +// CHECK-NEXT: 16: 4c 8b 1d 33 01 00 00 movq 307(%rip), %r11 // CHECK-NEXT: 1d: e8 0e 00 00 00 callq 14 <.plt+0x20> // CHECK-NEXT: 22: f3 90 pause // CHECK-NEXT: 24: 0f ae e8 lfence @@ -40,7 +40,7 @@ // CHECK-NEXT: 3d: cc int3 // CHECK-NEXT: 3e: cc int3 // CHECK-NEXT: 3f: cc int3 -// CHECK-NEXT: 40: 4c 8b 1d 51 00 00 00 movq 81(%rip), %r11 +// CHECK-NEXT: 40: 4c 8b 1d 11 01 00 00 movq 273(%rip), %r11 // CHECK-NEXT: 47: e8 e4 ff ff ff callq -28 <.plt+0x20> // CHECK-NEXT: 4c: e9 d1 ff ff ff jmp -47 <.plt+0x12> // CHECK-NEXT: 51: 68 00 00 00 00 pushq $0 @@ -50,7 +50,7 @@ // CHECK-NEXT: 5d: cc int3 // CHECK-NEXT: 5e: cc int3 // CHECK-NEXT: 5f: cc int3 -// CHECK-NEXT: 60: 4c 8b 1d 39 00 00 00 movq 57(%rip), %r11 +// CHECK-NEXT: 60: 4c 8b 1d f9 00 00 00 movq 249(%rip), %r11 // CHECK-NEXT: 67: e8 c4 ff ff ff callq -60 <.plt+0x20> // CHECK-NEXT: 6c: e9 b1 ff ff ff jmp -79 <.plt+0x12> // CHECK-NEXT: 71: 68 01 00 00 00 pushq $1 Index: lld/trunk/test/ELF/x86-64-retpoline.s =================================================================== --- lld/trunk/test/ELF/x86-64-retpoline.s +++ lld/trunk/test/ELF/x86-64-retpoline.s @@ -8,8 +8,8 @@ // CHECK: Disassembly of section .plt: // CHECK-NEXT: .plt: -// CHECK-NEXT: 1010: ff 35 f2 0f 00 00 pushq 4082(%rip) -// CHECK-NEXT: 1016: 4c 8b 1d f3 0f 00 00 movq 4083(%rip), %r11 +// CHECK-NEXT: 1010: ff 35 f2 1f 00 00 pushq 8178(%rip) +// CHECK-NEXT: 1016: 4c 8b 1d f3 1f 00 00 movq 8179(%rip), %r11 // CHECK-NEXT: 101d: e8 0e 00 00 00 callq 14 <.plt+0x20> // CHECK-NEXT: 1022: f3 90 pause // CHECK-NEXT: 1024: 0f ae e8 lfence @@ -34,7 +34,7 @@ // CHECK-NEXT: 103d: cc int3 // CHECK-NEXT: 103e: cc int3 // CHECK-NEXT: 103f: cc int3 -// CHECK-NEXT: 1040: 4c 8b 1d d1 0f 00 00 movq 4049(%rip), %r11 +// CHECK-NEXT: 1040: 4c 8b 1d d1 1f 00 00 movq 8145(%rip), %r11 // CHECK-NEXT: 1047: e8 e4 ff ff ff callq -28 <.plt+0x20> // CHECK-NEXT: 104c: e9 d1 ff ff ff jmp -47 <.plt+0x12> // CHECK-NEXT: 1051: 68 00 00 00 00 pushq $0 @@ -44,7 +44,7 @@ // CHECK-NEXT: 105d: cc int3 // CHECK-NEXT: 105e: cc int3 // CHECK-NEXT: 105f: cc int3 -// CHECK-NEXT: 1060: 4c 8b 1d b9 0f 00 00 movq 4025(%rip), %r11 +// CHECK-NEXT: 1060: 4c 8b 1d b9 1f 00 00 movq 8121(%rip), %r11 // CHECK-NEXT: 1067: e8 c4 ff ff ff callq -60 <.plt+0x20> // CHECK-NEXT: 106c: e9 b1 ff ff ff jmp -79 <.plt+0x12> // CHECK-NEXT: 1071: 68 01 00 00 00 pushq $1 @@ -56,9 +56,9 @@ // CHECK-NEXT: 107f: cc int3 // CHECK: Contents of section .got.plt: -// CHECK-NEXT: 2000 00300000 00000000 00000000 00000000 -// CHECK-NEXT: 2010 00000000 00000000 51100000 00000000 -// CHECK-NEXT: 2020 71100000 00000000 +// CHECK-NEXT: 3000 00200000 00000000 00000000 00000000 +// CHECK-NEXT: 3010 00000000 00000000 51100000 00000000 +// CHECK-NEXT: 3020 71100000 00000000 .global _start _start: Index: lld/trunk/test/ELF/x86-64-tls-gd-local.s =================================================================== --- lld/trunk/test/ELF/x86-64-tls-gd-local.s +++ lld/trunk/test/ELF/x86-64-tls-gd-local.s @@ -34,8 +34,8 @@ // CHECK-NEXT: SHF_ALLOC (0x2) // CHECK-NEXT: SHF_WRITE (0x1) // CHECK-NEXT: ] -// CHECK-NEXT: Address: 0x30D0 -// CHECK-NEXT: Offset: 0x30D0 +// CHECK-NEXT: Address: 0x20D0 +// CHECK-NEXT: Offset: 0x20D0 // CHECK-NEXT: Size: 32 // CHECK-NEXT: Link: 0 // CHECK-NEXT: Info: 0 @@ -47,6 +47,6 @@ // CHECK-NEXT: ) // CHECK: Section ({{.*}}) .rela.dyn { -// CHECK-NEXT: 0x30D0 R_X86_64_DTPMOD64 - 0x0 -// CHECK-NEXT: 0x30E0 R_X86_64_DTPMOD64 - 0x0 +// CHECK-NEXT: 0x20D0 R_X86_64_DTPMOD64 - 0x0 +// CHECK-NEXT: 0x20E0 R_X86_64_DTPMOD64 - 0x0 // CHECK-NEXT: }