tried below fix, that is a partial revert of klibc 6fbd8fafdcc793135988733996d72b0298afe934 see git://git.kernel.org/pub/scm/libs/klibc/klibc.git with belows fix klibc compiles fine on sparc with newer gcc, but segfaults: titan:~# strace -vfF /usr/lib/klibc/bin/fstype execve("/usr/lib/klibc/bin/fstype", ["/usr/lib/klibc/bin/fstype"], ["SHELL=/bin/bash", "TERM=xterm", "SSH_CLIENT=[myip] 39403"..., "SSH_TTY=/dev/pts/0", "USER=root", "LS_COLORS=no=00:fi=00:di=01;34:l"..., "PATH=/usr/local/sbin:/usr/local/"..., "MAIL=/var/mail/root", "PWD=/root", "LANG=en_US.UTF-8", "PS1=\\h:\\w\\$ ", "HOME=/root", "SHLVL=2", "LS_OPTIONS=--color=auto", "LOGNAME=root", "SSH_CONNECTION=[myip] 3"..., "_=/usr/bin/strace", "OLDPWD=/"]) = 0 --- SIGSEGV (Segmentation fault) @ 0 (0) --- +++ killed by SIGSEGV +++ Process 3636 detached thanks for looking at it. -- maks use our own clzdi on sparc instead the one of libgcc Signed-off-by: maximilian attems <max@xxxxxxx> diff --git a/usr/klibc/arch/sparc64/Kbuild b/usr/klibc/arch/sparc64/Kbuild index 2854f69..f2450a2 100644 --- a/usr/klibc/arch/sparc64/Kbuild +++ b/usr/klibc/arch/sparc64/Kbuild @@ -2,7 +2,7 @@ # klibc files for sparc64 # -klib-y := pipe.o setjmp.o syscall.o sysfork.o +klib-y := pipe.o setjmp.o syscall.o sysfork.o ../../libgcc/__clzdi2.o always := crt0.o targets := crt0.o diff --git a/usr/klibc/libgcc/__clzdi2.c b/usr/klibc/libgcc/__clzdi2.c new file mode 100644 index 0000000..13e636c --- /dev/null +++ b/usr/klibc/libgcc/__clzdi2.c @@ -0,0 +1,23 @@ +/* + * __clzdi2 - Returns the leading number of 0 bits in the argument + */ + +#include <stdint.h> +#include <stddef.h> + +uint64_t __clzdi2(uint64_t v) +{ + uint32_t vhi = (uint32_t) (v >> 32); + uint32_t vx; + int dp; + + if (vhi) { + vx = vhi; + dp = 0; + } else { + vx = (uint32_t) v; + dp = 32; + } + + return dp + __builtin_clz(vx); +} - To unsubscribe from this list: send the line "unsubscribe sparclinux" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html