Re: [PATCH] x86: Disallow ".long foo@PLT - .L4" for PLT32 relocation
Jan Beulich <[email protected]> Fri, 31 Jul 2026 11:03:41 +0200
| Newsgroups | gmane.comp.gnu.binutils |
|---|---|
| Message-ID | <[email protected]> |
On 31.07.2026 10:55, H.J. Lu wrote: > On Fri, Jul 31, 2026 at 4:26 PM Jan Beulich <[email protected]> wrote: >> >> On 31.07.2026 01:09, H.J. Lu wrote: >>> Disallow ".long foo@PLT - .L4" and only allow ".slong foo@PLT - .L4" for >>> PLT32 relocation. >> >> Why would you enforce this also for 32-bit, where the difference between >> .slong and .long is entirely benign? The existing cons_sign should be >> sufficient to achieve what's needed for 64-bit code. >> > > I compared ".long foo@PLT - .L4": > > .section .rodata > .p2align 2 > .L4: > .long foo1@PLT - .L4 > .long foo2@PLT - .L4 > .long foo3@PLT - .L4 > .long foo4@PLT - .L4 > .long foo1@PLT - .L5 > .long foo2@PLT - .L5 > .long foo3@PLT - .L5 > .long foo4@PLT - .L5 > .L5: > > vs ".slong foo@PLT - .L4": > .section .rodata > .p2align 2 > .L4: > .slong foo1@PLT - .L4 > .slong foo2@PLT - .L4 > .slong foo3@PLT - .L4 > .slong foo4@PLT - .L4 > .slong foo1@PLT - .L5 > .slong foo2@PLT - .L5 > .slong foo3@PLT - .L5 > .slong foo4@PLT - .L5 > .L5: > > in 64-bit. The output object files are identical. If we don't allow > ".long foo@PLT - .L4" in 64-bit, we shouldn't allow it in 32-bit. Why? .slong was introduced because of a peculiarity of x86-64. If that was straightforward to achieve, it may better not have been exposed to 16- and 32-bit code in the first place. While that ship has sailed, suddenly making its use mandatory for certain constructs even outside of 64-bit code feels outright wrong. Jan