SUPERH platform development
 help / color / mirror / Atom feed
From: Florian Fuchs <fuchsfl@gmail.com>
To: John Paul Adrian Glaubitz <glaubitz@physik.fu-berlin.de>
Cc: Rob Landley <rob@landley.net>,
	linux-sh <linux-sh@vger.kernel.org>,
	Geert Uytterhoeven <geert+renesas@glider.be>
Subject: Re: Toybox make root no longer works as expected
Date: Tue, 14 Jul 2026 12:46:29 +0200	[thread overview]
Message-ID: <alYThehhPbqgcOn2@lithos> (raw)
In-Reply-To: <3eeb0f60a3f133bfd3ab5467b35045c904b8a9e8.camel@physik.fu-berlin.de>

On 14 Jul 10:14, John Paul Adrian Glaubitz wrote:
> Hi Florian,
> 
> On Tue, 2026-07-14 at 09:47 +0200, Florian Fuchs wrote:
> > > OK, for some reason it works now. Unfortunately, the toolchain doesn't like the current kernel:
> > > 
> > >   CC      net/ipv4/inetpeer.o
> > > during RTL pass: final
> > > In file included from kernel/nstree.c:8:
> > > kernel/nstree.c: In function '__se_sys_listns':
> > > ./include/linux/syscalls.h:261:9: internal compiler error: in change_address_1, at emit-rtl.c:2275
> > >   261 |         }                                                               \
> > >       |         ^
> > > ./include/linux/syscalls.h:236:9: note: in expansion of macro '__SYSCALL_DEFINEx'
> > >   236 |         __SYSCALL_DEFINEx(x, sname, __VA_ARGS__)
> > >       |         ^~~~~~~~~~~~~~~~~
> > > ./include/linux/syscalls.h:228:36: note: in expansion of macro 'SYSCALL_DEFINEx'
> > >   228 | #define SYSCALL_DEFINE4(name, ...) SYSCALL_DEFINEx(4, _##name, __VA_ARGS__)
> > >       |                                    ^~~~~~~~~~~~~~~
> > > kernel/nstree.c:763:1: note: in expansion of macro 'SYSCALL_DEFINE4'
> > >   763 | SYSCALL_DEFINE4(listns, const struct ns_id_req __user *, req,
> > >       | ^~~~~~~~~~~~~~~
> > > Please submit a full bug report,
> > > with preprocessed source if appropriate.
> > > See <https://gcc.gnu.org/bugs/> for instructions.
> > > {standard input}: Assembler messages:
> > > {standard input}: Warning: end of file not at end of a line; newline inserted
> > > {standard input}:1592: Error: missing operand
> > > {standard input}:1592: Error: invalid operands for opcode
> > > {standard input}:976: Error: displacement to undefined symbol .L339 overflows 12-bit field
> > > {standard input}:1014: Error: displacement to undefined symbol .L459 overflows 12-bit field
> > > {standard input}:1028: Error: displacement to undefined symbol .L340 overflows 12-bit field
> > > {standard input}:1040: Error: displacement to undefined symbol .L461 overflows 12-bit field
> > > {standard input}:1060: Error: displacement to undefined symbol .L462 overflows 12-bit field
> > > {standard input}:1082: Error: displacement to undefined symbol .L463 overflows 12-bit field
> > > {standard input}:1100: Error: displacement to undefined symbol .L252 overflows 12-bit field
> > > {standard input}:1201: Error: displacement to undefined symbol .L286 overflows 12-bit field
> > > {standard input}:1211: Error: displacement to undefined symbol .L468 overflows 12-bit field
> > > {standard input}:1221: Error: displacement to undefined symbol .L298 overflows 12-bit field
> > > {standard input}:1234: Error: displacement to undefined symbol .L469 overflows 12-bit field
> > > {standard input}:1256: Error: displacement to undefined symbol .L349 overflows 12-bit field
> > > {standard input}:1341: Error: displacement to undefined symbol .L314 overflows 12-bit field
> > > {standard input}:1488: Error: displacement to undefined symbol .L454 overflows 8-bit field 
> > > {standard input}:1498: Error: displacement to undefined symbol .L471 overflows 8-bit field 
> > > make[3]: *** [scripts/Makefile.build:289: kernel/nstree.o] Error 1
> > > make[3]: *** Waiting for unfinished jobs....
> > > 
> > > Adrian
> > 
> > I also crafted a bit with gcc-17, and my first issue was a duplicate
> > symbols (LPCS0) compiling libgcc like in
> > https://gcc.gnu.org/bugzilla/show_bug.cgi?id=89012 I could only work
> > around with explicitly using O1 instead of O2 in INTERNAL_CFLAGS of gcc.
> > 
> > And errors with libbacktrace, I worked around by --enable-languages=c
> > 
> > I got gcc to not ICE, but it then fails with invalid assembler thats why
> > I became suspicious about the asm in question. turns out, delcaring the
> > adresses as offsetable, seems to "fix" the ICE and compile and work for
> > fdpic, means it is maybe not necessarily only a GCC issue.
> > 
> > diff --git a/arch/sh/include/asm/uaccess_32.h b/arch/sh/include/asm/uaccess_32.h
> > index 5d7ddc092afd..cef40414bfb1 100644
> > --- a/arch/sh/include/asm/uaccess_32.h
> > +++ b/arch/sh/include/asm/uaccess_32.h
> > @@ -92,7 +92,7 @@ __asm__ __volatile__( \
> >  	".long	1b + 2, 3b\n\t" \
> >  	".previous" \
> >  	:"=&r" (err), "=&r" (x) \
> > -	:"m" (__m(addr)), "i" (-EFAULT), "0" (err)); })
> > +	:"o" (__m(addr)), "i" (-EFAULT), "0" (err)); })
> >  #else
> >  #define __get_user_u64(x, addr, err) \
> >  ({ \
> > @@ -116,7 +116,7 @@ __asm__ __volatile__( \
> >  	".long	1b + 2, 3b\n\t" \
> >  	".previous" \
> >  	:"=&r" (err), "=&r" (x) \
> > -	:"m" (__m(addr)), "i" (-EFAULT), "0" (err)); })
> > +	:"o" (__m(addr)), "i" (-EFAULT), "0" (err)); })
> >  #endif
> >  
> >  #define __put_user_size(x,ptr,size,retval)		\
> > @@ -196,7 +196,7 @@ __asm__ __volatile__( \
> >  	".long	1b, 3b\n\t" \
> >  	".previous" \
> >  	: "=r" (retval) \
> > -	: "r" (val), "m" (__m(addr)), "i" (-EFAULT), "0" (retval) \
> > +	: "r" (val), "o" (__m(addr)), "i" (-EFAULT), "0" (retval) \
> >          : "memory"); })
> >  #else
> >  #define __put_user_u64(val,addr,retval) \
> > @@ -218,7 +218,7 @@ __asm__ __volatile__( \
> >  	".long	1b, 3b\n\t" \
> >  	".previous" \
> >  	: "=r" (retval) \
> > -	: "r" (val), "m" (__m(addr)), "i" (-EFAULT), "0" (retval) \
> > +	: "r" (val), "o" (__m(addr)), "i" (-EFAULT), "0" (retval) \
> >          : "memory"); })
> >  #endif
> >  
> 
> Thanks a lot for looking into this, I appreciate the help!
> 
> Did you manage to build a J2 toolchain using GCC 17? I have not looked
> into it myself yet due to time constraints, but I would like to switch
> to a newer compiler to build test kernels for my J2.
> 
> Adrian

Yes, with the O1 workaround in gcc and the above patch, but I did a
shortcut and built a plain sh2eb/fdpic toolchain, so I didn't rebase the
bigger J2 specific patches, only a few lines fdpic specific. So that I
could build a kernel, busybox/toybox with it. As I just wanted to finally
boot a current linux on the J2 Mimas v2 board.

And the ICE in nstree.c/uaccess was still there with gcc-17, that went
away with the above patch.

For the Mimas v2 I also needed to configure some offsets differntly in
the .config/Makefiles [0], but that may be normal. Ah, and it needed the patch
regarding the built-in DTBs, that don't work currently [1] And at
runtime it needed this patch, to prevent the register clobber [2]

[0] Offsets, specific (I guess) to the mimas v2 board, copied from the
    original aboriginal vmlinux image:
     ZERO_PAGE_OFFSET "0x0003F000"
     ENTRY_OFFSET "0x00001000"
     CONFIG_ENTRY_OFFSET "0x00040000"

[1] https://lore.kernel.org/linux-sh/20260711000146.3348854-1-fuchsfl@gmail.com/
[2] https://lore.kernel.org/linux-sh/20260714104147.2016549-1-fuchsfl@gmail.com/

  reply	other threads:[~2026-07-14 10:46 UTC|newest]

Thread overview: 21+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-04-29  7:46 Toybox make root no longer works as expected John Paul Adrian Glaubitz
2026-04-30  6:57 ` John Paul Adrian Glaubitz
2026-04-30  7:13   ` D. Jeff Dionne
2026-04-30  7:17     ` John Paul Adrian Glaubitz
2026-05-01 18:20       ` Rob Landley
2026-05-01 18:32         ` John Paul Adrian Glaubitz
2026-05-01 21:27           ` Rob Landley
2026-05-02  6:55             ` John Paul Adrian Glaubitz
2026-05-11 23:08               ` Rob Landley
2026-05-13  4:35                 ` Rob Landley
2026-07-10 13:32               ` John Paul Adrian Glaubitz
2026-05-01 18:04   ` Rob Landley
2026-07-14  7:47   ` Florian Fuchs
2026-07-14  8:14     ` John Paul Adrian Glaubitz
2026-07-14 10:46       ` Florian Fuchs [this message]
2026-04-30 20:10 ` Rob Landley
2026-04-30 22:46   ` John Paul Adrian Glaubitz
2026-05-01  3:44     ` D. Jeff Dionne
2026-05-01  9:21       ` John Paul Adrian Glaubitz
     [not found] <570e4053-9e57-4e63-9808-0b770a3a3791@landley.net>
2026-07-12  6:00 ` D. Jeff Dionne
2026-07-12  8:02   ` Rob Landley

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=alYThehhPbqgcOn2@lithos \
    --to=fuchsfl@gmail.com \
    --cc=geert+renesas@glider.be \
    --cc=glaubitz@physik.fu-berlin.de \
    --cc=linux-sh@vger.kernel.org \
    --cc=rob@landley.net \
    /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