Re: [PATCH] x86: Disallow ".long foo@PLT - .L4" for PLT32 relocation
"H.J. Lu" <[email protected]> Fri, 31 Jul 2026 18:47:38 +0800
| Newsgroups | gmane.comp.gnu.binutils |
|---|---|
| Message-ID | <CAMe9rOpfvSLoaP_VZhcyxnp6+5V+yreKBz5Os6mdULLBSSfZDA@mail.gmail.com> |
On Fri, Jul 31, 2026 at 5:03=E2=80=AFPM Jan Beulich <[email protected]> wro= te: > > On 31.07.2026 10:55, H.J. Lu wrote: > > On Fri, Jul 31, 2026 at 4:26=E2=80=AFPM 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 betwe= en > >> .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. > What is wrong with using " .long foo4@PLT - .L4" in 64-bit? The possible reason could be wrong code. You don't like it doesn't count. --=20 H.J.