public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
From: Yao Zi <me@ziyao.cc>
To: Nathan Chancellor <nathan@kernel.org>, Ard Biesheuvel <ardb@kernel.org>
Cc: Thomas Bogendoerfer <tsbogend@alpha.franken.de>,
	linux-mips@vger.kernel.org, linux-kernel@vger.kernel.org
Subject: Re: [PATCH] MIPS: tools: relocs: Ship a definition of R_MIPS_PC32
Date: Tue, 3 Feb 2026 03:56:20 +0000	[thread overview]
Message-ID: <aYFx5L2xC_u9t0IN@pie> (raw)
In-Reply-To: <20260202230729.GA2319189@ax162>

On Mon, Feb 02, 2026 at 04:07:29PM -0700, Nathan Chancellor wrote:
> On Mon, Feb 02, 2026 at 10:17:53AM +0100, Ard Biesheuvel wrote:
> > 
> > On Mon, 2 Feb 2026, at 05:16, Yao Zi wrote:
> > > R_MIPS_PC32 is a GNU extension, its definition is available in glibc
> > > only since 2.39 (released in 2024), and not available in musl libc yet.
> > > Provide our own definition for R_MIPS_PC32 and use it if necessary to
> > > fix relocs tool building on musl and older glibc systems.
> > >
> > > Fixes: ff79d31eb536 ("mips: Add support for PC32 relocations in vmlinux")
> > > Signed-off-by: Yao Zi <me@ziyao.cc>
> > 
> > Thanks for fixing this.
> > 
> > It does imply that the subsequent kallsyms patch will result in 32-bit MIPS no longer being buildable with older toolchains if CONFIG_RELOCATABLE=y.
> 
> Doing a little research, it seems like R_MIPS_PC32 has been recognized
> by the toolchains for a long time, as I found these commits in binutils:
> 
>   https://sourceware.org/git/?p=binutils-gdb.git;a=commit;h=092dcd755dcdcf664b25a7011fd15957f124c29f
>   https://sourceware.org/git/?p=binutils-gdb.git;a=commit;h=b47468a6dbd1b54c44c2edc0f7db64a073d894ea
> 
> It seems like this relocation was not documented in glibc until
> recently, along with many other relocation types:
> 
>   https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=a6e8ceb3bb532236e1eecd0bb0ee8e4b7fd5ff7c
> 
> I interpret that to mean that the kallsyms patch should work fine since
> the toolchain can handle these relocations? It is just building the
> relocs tool against an older glibc or musl that does not have the
> R_MIPS_PC32 definition that is broken? Or am I misunderstanding
> something?

Yes, this patch is only meant to fix building of relocs tool. I don't
think there are problems about toolchain supporting since R_MIPS_PC32
has been in binutils for a long time, as Nathan found, since 2004. The
situation is that it's likely to have a toolchain supporting
R_MIPS_PC32, while elf.h on the build machine doesn't have its
definition. And after ff79d31eb536 ("mips: Add support for PC32
relocations in vmlinux"), the relocs tool started to require a
definition of R_MIPS_PC32 to build.

> If we get an obvious build breakage report down the road, we can always
> add another forward fix or back out of the changes altogether.
> 
> > Not sure if that is an issue, but it needs calling out. Nathan, any thoughts?
> > 

Best regards,
Yao Zi

> > > ---
> > >  arch/mips/boot/tools/relocs.h | 7 +++++++
> > >  1 file changed, 7 insertions(+)
> > >
> > > diff --git a/arch/mips/boot/tools/relocs.h b/arch/mips/boot/tools/relocs.h
> > > index 607ff0103064..942981d9ce73 100644
> > > --- a/arch/mips/boot/tools/relocs.h
> > > +++ b/arch/mips/boot/tools/relocs.h
> > > @@ -29,6 +29,13 @@ void die(char *fmt, ...);
> > >  #define R_MIPS_PC26_S2		61
> > >  #endif
> > > 
> > > +/*
> > > + * GNU extension that available in glibc only since 2023, not 
> > > available on musl.
> > > + */
> > > +#ifndef R_MIPS_PC32
> > > +#define R_MIPS_PC32		248
> > > +#endif
> > > +
> > >  #define ARRAY_SIZE(x) (sizeof(x) / sizeof((x)[0]))
> > > 
> > >  enum symtype {
> > > -- 
> > > 2.52.0

  reply	other threads:[~2026-02-03  3:56 UTC|newest]

Thread overview: 9+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-02-02  4:16 [PATCH] MIPS: tools: relocs: Ship a definition of R_MIPS_PC32 Yao Zi
2026-02-02  9:17 ` Ard Biesheuvel
2026-02-02 23:07   ` Nathan Chancellor
2026-02-03  3:56     ` Yao Zi [this message]
2026-02-03 12:31       ` Ard Biesheuvel
2026-02-05  1:26       ` Maciej W. Rozycki
2026-02-05  8:26         ` Yao Zi
2026-02-05  8:39         ` Ard Biesheuvel
2026-02-03 18:53 ` Nathan Chancellor

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=aYFx5L2xC_u9t0IN@pie \
    --to=me@ziyao.cc \
    --cc=ardb@kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-mips@vger.kernel.org \
    --cc=nathan@kernel.org \
    --cc=tsbogend@alpha.franken.de \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox