Re: [PATCH] x86: Disallow ".long foo@PLT - .L4" for PLT32 relocation

"H.J. Lu" <[email protected]> Fri, 31 Jul 2026 16:55:53 +0800
Newsgroups gmane.comp.gnu.binutils
Message-ID <CAMe9rOoqL7FFJYnuRxRRE3it1qkAezw8u8-bLN4wqZowcWuwYQ@mail.gmail.com>
On Fri, Jul 31, 2026 at 4:26=E2=80=AFPM Jan Beulich <[email protected]> wro=
te:
>
> On 31.07.2026 01:09, H.J. Lu wrote:
> > Disallow ".long foo@PLT - .L4" and only allow ".slong foo@PLT - .L4" fo=
r
> > 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.

--=20
H.J.