* [musl] busybox problem on powerpc PPC/32bit (hardware TP-Link-WDR-4900-v1) @ 2023-02-11 12:51 Bastian Bittorf 2023-02-11 14:01 ` Rich Felker 2023-02-11 14:47 ` Bastian Bittorf 0 siblings, 2 replies; 7+ messages in thread From: Bastian Bittorf @ 2023-02-11 12:51 UTC (permalink / raw) To: musl; +Cc: mailinglist With OpenWRT i recognized a strange behavior of ash-shell scripts. It happens only on target PowerPC, e.g. m68k, arm, mips, x86 are unaffected. The visible strange behavior in 'ash' is: $ test A -gt 5 && echo OK ash: A: out of range OK Ofcourse this wrong returncode leads to all sorts of things... I tested several busybox releases (1.33.2, 1.35.0, 1.36.0) and crosscompiled with musl-git-b76f37f (from musl.cc) and crosscompiled with glibc: powerpc-linux-gnu-gcc (Debian-12.2.0) (it's the same for all versions) The resulting linux + busybox images ready for QEMU are here: http://intercity-vpn.de/mpc85xx/ If needed i can provide build instructions. Maybe somebody with more powerpc assembly knowledge can help here. The underlying code is here: https://git.busybox.net/busybox/tree/coreutils/test.c#n488 But i can not spot the error: static number_t getn(const char *s) { char *p; errno = 0; r = strtol(s, &p, 10); if (errno != 0) syntax(s, "out of range"); return r; } Best Greetings, Bastian Bittorf ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [musl] busybox problem on powerpc PPC/32bit (hardware TP-Link-WDR-4900-v1) 2023-02-11 12:51 [musl] busybox problem on powerpc PPC/32bit (hardware TP-Link-WDR-4900-v1) Bastian Bittorf @ 2023-02-11 14:01 ` Rich Felker 2023-02-11 19:27 ` Bastian Bittorf 2023-02-11 14:47 ` Bastian Bittorf 1 sibling, 1 reply; 7+ messages in thread From: Rich Felker @ 2023-02-11 14:01 UTC (permalink / raw) To: Bastian Bittorf; +Cc: musl, mailinglist [-- Attachment #1: Type: text/plain, Size: 1277 bytes --] On Sat, Feb 11, 2023 at 12:51:47PM +0000, Bastian Bittorf wrote: > With OpenWRT i recognized a strange behavior of ash-shell scripts. > It happens only on target PowerPC, e.g. m68k, arm, mips, x86 are > unaffected. > > The visible strange behavior in 'ash' is: > > $ test A -gt 5 && echo OK > ash: A: out of range > OK > > Ofcourse this wrong returncode leads to all sorts of things... > > I tested several busybox releases (1.33.2, 1.35.0, 1.36.0) and > crosscompiled with musl-git-b76f37f (from musl.cc) and > crosscompiled with glibc: powerpc-linux-gnu-gcc (Debian-12.2.0) > (it's the same for all versions) > > The resulting linux + busybox images ready for QEMU are here: > http://intercity-vpn.de/mpc85xx/ > > If needed i can provide build instructions. > Maybe somebody with more powerpc assembly knowledge can help here. > > The underlying code is here: > https://git.busybox.net/busybox/tree/coreutils/test.c#n488 > But i can not spot the error: > > static number_t getn(const char *s) > { > char *p; > errno = 0; > r = strtol(s, &p, 10); > if (errno != 0) > syntax(s, "out of range"); > return r; > } > > Best Greetings, > Bastian Bittorf It looks like the powerpc spe longjmp code is clobbering the value argument. Try the attached patch. [-- Attachment #2: ppc-spe-longjmp-fix.diff --] [-- Type: text/plain, Size: 446 bytes --] diff --git a/src/setjmp/powerpc/longjmp.S b/src/setjmp/powerpc/longjmp.S index 611389fe..465e4cd7 100644 --- a/src/setjmp/powerpc/longjmp.S +++ b/src/setjmp/powerpc/longjmp.S @@ -42,10 +42,10 @@ longjmp: bl 1f .hidden __hwcap .long __hwcap-. -1: mflr 4 - lwz 5, 0(4) - lwzx 4, 4, 5 - andis. 4, 4, 0x80 +1: mflr 6 + lwz 5, 0(6) + lwzx 6, 6, 5 + andis. 6, 6, 0x80 beq 1f .long 0x11c35b01 /* evldd 14,88(3) */ .long 0x11e36301 /* ... */ ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [musl] busybox problem on powerpc PPC/32bit (hardware TP-Link-WDR-4900-v1) 2023-02-11 14:01 ` Rich Felker @ 2023-02-11 19:27 ` Bastian Bittorf 2023-02-11 19:30 ` Rich Felker 0 siblings, 1 reply; 7+ messages in thread From: Bastian Bittorf @ 2023-02-11 19:27 UTC (permalink / raw) To: Rich Felker; +Cc: musl, mailinglist On Sat, Feb 11, 2023 at 09:01:03AM -0500, Rich Felker wrote: > It looks like the powerpc spe longjmp code is clobbering the value > argument. Try the attached patch. > diff --git a/src/setjmp/powerpc/longjmp.S b/src/setjmp/powerpc/longjmp.S > index 611389fe..465e4cd7 100644 > --- a/src/setjmp/powerpc/longjmp.S > +++ b/src/setjmp/powerpc/longjmp.S > @@ -42,10 +42,10 @@ longjmp: > bl 1f > .hidden __hwcap > .long __hwcap-. > -1: mflr 4 > - lwz 5, 0(4) > - lwzx 4, 4, 5 > - andis. 4, 4, 0x80 > +1: mflr 6 > + lwz 5, 0(6) > + lwzx 6, 6, 5 > + andis. 6, 6, 0x80 > beq 1f > .long 0x11c35b01 /* evldd 14,88(3) */ > .long 0x11e36301 /* ... */ Thanks a lot, this looked promising!, but sorry, it does NOT solve the issue: Using musl-cross-make and this file in patches/musl-1.2.0/ppc-spe-longjmp-fix.diff i compiled an output/bin/powerpc-linux-muslsf* crosscompiler with: make TARGET=powerpc-linux-muslsf install and used it for further steps... maybe the patch did not applied? let me sleep about it... Thanks a lot, Bastian ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [musl] busybox problem on powerpc PPC/32bit (hardware TP-Link-WDR-4900-v1) 2023-02-11 19:27 ` Bastian Bittorf @ 2023-02-11 19:30 ` Rich Felker 2023-02-12 8:17 ` Bastian Bittorf 0 siblings, 1 reply; 7+ messages in thread From: Rich Felker @ 2023-02-11 19:30 UTC (permalink / raw) To: Bastian Bittorf; +Cc: musl, mailinglist On Sat, Feb 11, 2023 at 07:27:39PM +0000, Bastian Bittorf wrote: > On Sat, Feb 11, 2023 at 09:01:03AM -0500, Rich Felker wrote: > > It looks like the powerpc spe longjmp code is clobbering the value > > argument. Try the attached patch. > > > diff --git a/src/setjmp/powerpc/longjmp.S b/src/setjmp/powerpc/longjmp.S > > index 611389fe..465e4cd7 100644 > > --- a/src/setjmp/powerpc/longjmp.S > > +++ b/src/setjmp/powerpc/longjmp.S > > @@ -42,10 +42,10 @@ longjmp: > > bl 1f > > .hidden __hwcap > > .long __hwcap-. > > -1: mflr 4 > > - lwz 5, 0(4) > > - lwzx 4, 4, 5 > > - andis. 4, 4, 0x80 > > +1: mflr 6 > > + lwz 5, 0(6) > > + lwzx 6, 6, 5 > > + andis. 6, 6, 0x80 > > beq 1f > > .long 0x11c35b01 /* evldd 14,88(3) */ > > .long 0x11e36301 /* ... */ > > Thanks a lot, this looked promising!, but > sorry, it does NOT solve the issue: > > Using musl-cross-make and this file in > patches/musl-1.2.0/ppc-spe-longjmp-fix.diff > i compiled an output/bin/powerpc-linux-muslsf* > crosscompiler with: > make TARGET=powerpc-linux-muslsf install > and used it for further steps... > > maybe the patch did not applied? > let me sleep about it... > > Thanks a lot, Bastian If busybox is static linked, you need to be sure you're linking against the new libc.a built with the patch applied. If it's dynamic linked, you need to make sure the shared libc is installed on the system (but you can use the newly-built patched libc.so *as a command* to run the dynamic busybox binary and test it). Rich ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [musl] busybox problem on powerpc PPC/32bit (hardware TP-Link-WDR-4900-v1) 2023-02-11 19:30 ` Rich Felker @ 2023-02-12 8:17 ` Bastian Bittorf 2023-02-12 22:34 ` Rich Felker 0 siblings, 1 reply; 7+ messages in thread From: Bastian Bittorf @ 2023-02-12 8:17 UTC (permalink / raw) To: Rich Felker; +Cc: musl, mailinglist On Sat, Feb 11, 2023 at 02:30:44PM -0500, Rich Felker wrote: > > > .hidden __hwcap > > > .long __hwcap-. > > > -1: mflr 4 > > > - lwz 5, 0(4) > > > - lwzx 4, 4, 5 > > > - andis. 4, 4, 0x80 > > > +1: mflr 6 > > > + lwz 5, 0(6) > > > + lwzx 6, 6, 5 > > > + andis. 6, 6, 0x80 > > > beq 1f > > > .long 0x11c35b01 /* evldd 14,88(3) */ > > > .long 0x11e36301 /* ... */ It works! ~ # test A -gt 5 && echo OK ash: A: out of range ~ # echo $? 2 ~ # uname -a Linux (none) 6.1.11 #1 Sun Feb 12 09:06:57 CET 2023 ppc GNU/Linux In the end i directly changed the sourcecode, using the patchdir did not work an my side, i'am sure a made a mistake here. Anyway - i'am happy! Is there some more, where i can help/test? I uploaded kernel + busybox/initrd for qemu here: http://intercity-vpn.de/mpc85xx/musl-1.2.3+ppcpatch/ bye, Bastian ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [musl] busybox problem on powerpc PPC/32bit (hardware TP-Link-WDR-4900-v1) 2023-02-12 8:17 ` Bastian Bittorf @ 2023-02-12 22:34 ` Rich Felker 0 siblings, 0 replies; 7+ messages in thread From: Rich Felker @ 2023-02-12 22:34 UTC (permalink / raw) To: Bastian Bittorf; +Cc: musl, mailinglist On Sun, Feb 12, 2023 at 08:17:04AM +0000, Bastian Bittorf wrote: > On Sat, Feb 11, 2023 at 02:30:44PM -0500, Rich Felker wrote: > > > > .hidden __hwcap > > > > .long __hwcap-. > > > > -1: mflr 4 > > > > - lwz 5, 0(4) > > > > - lwzx 4, 4, 5 > > > > - andis. 4, 4, 0x80 > > > > +1: mflr 6 > > > > + lwz 5, 0(6) > > > > + lwzx 6, 6, 5 > > > > + andis. 6, 6, 0x80 > > > > beq 1f > > > > .long 0x11c35b01 /* evldd 14,88(3) */ > > > > .long 0x11e36301 /* ... */ > > It works! > > ~ # test A -gt 5 && echo OK > ash: A: out of range > ~ # echo $? > 2 > ~ # uname -a > Linux (none) 6.1.11 #1 Sun Feb 12 09:06:57 CET 2023 ppc GNU/Linux > > In the end i directly changed the sourcecode, > using the patchdir did not work an my side, i'am sure > a made a mistake here. > > Anyway - i'am happy! > Is there some more, where i can help/test? > > I uploaded kernel + busybox/initrd for qemu here: > http://intercity-vpn.de/mpc85xx/musl-1.2.3+ppcpatch/ Thanks for following up. I'll go ahead and include this change for the upcoming release. Rich ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [musl] busybox problem on powerpc PPC/32bit (hardware TP-Link-WDR-4900-v1) 2023-02-11 12:51 [musl] busybox problem on powerpc PPC/32bit (hardware TP-Link-WDR-4900-v1) Bastian Bittorf 2023-02-11 14:01 ` Rich Felker @ 2023-02-11 14:47 ` Bastian Bittorf 1 sibling, 0 replies; 7+ messages in thread From: Bastian Bittorf @ 2023-02-11 14:47 UTC (permalink / raw) To: musl; +Cc: mailinglist On Sat, Feb 11, 2023 at 12:51:47PM +0000, Bastian Bittorf wrote: > With OpenWRT i recognized a strange behavior of ash-shell scripts. > It happens only on target PowerPC, e.g. m68k, arm, mips, x86 are > unaffected. to be more clear: it seems to affect musl, but not glibc build. bye, Bastian ^ permalink raw reply [flat|nested] 7+ messages in thread
end of thread, other threads:[~2023-02-12 22:34 UTC | newest] Thread overview: 7+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 2023-02-11 12:51 [musl] busybox problem on powerpc PPC/32bit (hardware TP-Link-WDR-4900-v1) Bastian Bittorf 2023-02-11 14:01 ` Rich Felker 2023-02-11 19:27 ` Bastian Bittorf 2023-02-11 19:30 ` Rich Felker 2023-02-12 8:17 ` Bastian Bittorf 2023-02-12 22:34 ` Rich Felker 2023-02-11 14:47 ` Bastian Bittorf
Code repositories for project(s) associated with this public inbox https://git.vuxu.org/mirror/musl/ This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).