dietlibc broken on i386 since Feb 2018?

Frank Bergmann <[email protected]> Sat, 14 Sep 2019 16:15:35 +0200
Newsgroups gmane.linux.lib.dietlibc
Message-ID <[email protected]>
Hi,

dietlibc (cvs) is broken for me on i386 since 2018-02-01 (2018-01-31 was fine).
On x86_64 it still works.

A small change in lib/stackgap-common.h makes it work again.
Any suggestions?

Frank


victim:~ frank 16:02:15$ rm -rf dietlibc; cvs -d :pserver:[email protected]:/cvs -z9 co dietlibc &>/dev/null

victim:~ frank 16:02:25$ cd dietlibc

victim:dietlibc frank 16:02:27$ make clean &>/dev/null;make 2>&1 |tail -n 3
strip -R .comment -R .note bin-i386/diet-i
bin-i386/diet gcc -D__dietlibc__ -pipe -nostdinc -D_REENTRANT -ffunction-sections -fdata-sections -Os -fomit-frame-pointer -falign-functions=1 -falign-jumps=1 -falign-loops=1 -mpreferred-stack-boundary=4 -W -Wall -Wextra -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -Wno-switch -Wno-unused -Wredundant-decls -Wshadow -o bin-i386/elftrunc contrib/elftrunc.c -Wl,--gc-sections -Wl,-z,noseparate-code
make: *** [bin-i386/elftrunc] Segmentation fault

victim:dietlibc frank 16:03:11$ patch -p1 <../1007_diff-20180131-20180201-01-02-cvs.patch
patching file lib/stackgap-common.h

victim:dietlibc frank 16:03:21$ make clean &>/dev/null;make 2>&1 |tail -n 3
strip -R .comment -R .note bin-i386/diet-i
bin-i386/diet gcc -D__dietlibc__ -pipe -nostdinc -D_REENTRANT -ffunction-sections -fdata-sections -Os -fomit-frame-pointer -falign-functions=1 -falign-jumps=1 -falign-loops=1 -mpreferred-stack-boundary=4 -W -Wall -Wextra -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -Wno-switch -Wno-unused -Wredundant-decls -Wshadow -o bin-i386/elftrunc contrib/elftrunc.c -Wl,--gc-sections -Wl,-z,noseparate-code
bin-i386/diet gcc -D__dietlibc__ -pipe -nostdinc -D_REENTRANT -ffunction-sections -fdata-sections -Os -fomit-frame-pointer -falign-functions=1 -falign-jumps=1 -falign-loops=1 -mpreferred-stack-boundary=4 -W -Wall -Wextra -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -Wno-switch -Wno-unused -Wredundant-decls -Wshadow -o bin-i386/dnsd contrib/dnsd.c -Wl,--gc-sections -Wl,-z,noseparate-code

victim:dietlibc frank 16:04:04$ cat ../1007_diff-20180131-20180201-01-02-cvs.patch
--- dietlibc/lib/stackgap-common.h.orig 2019-03-14 13:42:19.000000000 +0100
+++ dietlibc/lib/stackgap-common.h      2019-09-14 16:00:37.000000000 +0200
@@ -513,7 +513,6 @@
 #if defined(WANT_STACKGAP) || defined(WANT_SSP)
   volatile char* gap;
   rand=(char*)getauxval(25);
-#ifdef WANT_URANDOM_SSP
   if (!rand) {
     rand=alloca(10);
     int fd=open("/dev/urandom",O_RDONLY);      // If this fails, there is not much we can do. Limp on.
@@ -521,7 +520,6 @@
     close(fd);
   }
 #endif
-#endif
 #ifdef WANT_STACKGAP
 #ifdef __UNALIGNED_MEMORY_ACCESS_OK
   s=*(unsigned short*)(rand+8);


victim:dietlibc frank 16:04:19$ gcc -v
Using built-in specs.
Target: i386-redhat-linux
Configured with: ../configure --prefix=/usr --mandir=/usr/share/man --infodir=/usr/share/info --enable-shared --enable-threads=posix --enable-checking=release --with-system-zlib --enable-__cxa_atexit --disable-libunwind-exceptions --enable-libgcj-multifile --enable-languages=c,c++,objc,obj-c++,java,fortran,ada --enable-java-awt=gtk --disable-dssi --disable-plugin --with-java-home=/usr/lib/jvm/java-1.4.2-gcj-1.4.2.0/jre --with-cpu=generic --host=i386-redhat-linux
Thread model: posix
gcc version 4.1.2 20080704 (Red Hat 4.1.2-55)