FAIL: t-printf on Debian sparc64 with gcc-10 patched for gcc bugid 97939
Dennis Clarke
dclarke at blastwave.org
Sun Dec 6 08:23:40 UTC 2020
Sadly the situation continues here on Debian sparc64 :
.
.
.
/bin/bash ../../libtool --tag=CC --mode=link
/usr/bin/sparc64-linux-gnu-gcc-10 -std=iso9899:1999 -m64 -g -O0
-pedantic -pedantic-errors -fno-builtin -fno-fast-math -mhard-float
-mno-app-regs -mflat -mhard-quad-float -mno-unaligned-doubles
-mno-faster-structs -mcpu=ultrasparc -mtune=ultrasparc -mno-vis
-mno-cbcond -mno-fmaf -mno-fsmuld -mno-popc -mno-subxc -mcmodel=medany
-mmemory-model=tso -no-install -o t-scanf t-scanf.o
../../tests/libtests.la ../../libgmp.la
libtool: link: /usr/bin/sparc64-linux-gnu-gcc-10 -std=iso9899:1999 -m64
-g -O0 -pedantic -pedantic-errors -fno-builtin -fno-fast-math
-mhard-float -mno-app-regs -mflat -mhard-quad-float
-mno-unaligned-doubles -mno-faster-structs -mcpu=ultrasparc
-mtune=ultrasparc -mno-vis -mno-cbcond -mno-fmaf -mno-fsmuld -mno-popc
-mno-subxc -mcmodel=medany -mmemory-model=tso -o t-scanf t-scanf.o
../../tests/.libs/libtests.a
/opt/bw/build/gmp-6.2.1_5.9.0-4-sparc64-smp.001/.libs/libgmp.so
../../.libs/libgmp.so -Wl,-rpath
-Wl,/opt/bw/build/gmp-6.2.1_5.9.0-4-sparc64-smp.001/.libs -Wl,-rpath
-Wl,/opt/bw/lib
/usr/bin/sparc64-linux-gnu-gcc-10 -DHAVE_CONFIG_H -I. -I../.. -I../..
-I../../tests -D_POSIX_PTHREAD_SEMANTICS -D_LARGEFILE64_SOURCE
-D_TS_ERRNO -D_XOPEN_SOURCE=600 -std=iso9899:1999 -m64 -g -O0 -pedantic
-pedantic-errors -fno-builtin -fno-fast-math -mhard-float -mno-app-regs
-mflat -mhard-quad-float -mno-unaligned-doubles -mno-faster-structs
-mcpu=ultrasparc -mtune=ultrasparc -mno-vis -mno-cbcond -mno-fmaf
-mno-fsmuld -mno-popc -mno-subxc -mcmodel=medany -mmemory-model=tso -c
-o t-locale.o t-locale.c
/bin/bash ../../libtool --tag=CC --mode=link
/usr/bin/sparc64-linux-gnu-gcc-10 -std=iso9899:1999 -m64 -g -O0
-pedantic -pedantic-errors -fno-builtin -fno-fast-math -mhard-float
-mno-app-regs -mflat -mhard-quad-float -mno-unaligned-doubles
-mno-faster-structs -mcpu=ultrasparc -mtune=ultrasparc -mno-vis
-mno-cbcond -mno-fmaf -mno-fsmuld -mno-popc -mno-subxc -mcmodel=medany
-mmemory-model=tso -no-install -o t-locale t-locale.o
../../tests/libtests.la ../../libgmp.la
libtool: link: /usr/bin/sparc64-linux-gnu-gcc-10 -std=iso9899:1999 -m64
-g -O0 -pedantic -pedantic-errors -fno-builtin -fno-fast-math
-mhard-float -mno-app-regs -mflat -mhard-quad-float
-mno-unaligned-doubles -mno-faster-structs -mcpu=ultrasparc
-mtune=ultrasparc -mno-vis -mno-cbcond -mno-fmaf -mno-fsmuld -mno-popc
-mno-subxc -mcmodel=medany -mmemory-model=tso -o t-locale t-locale.o
../../tests/.libs/libtests.a
/opt/bw/build/gmp-6.2.1_5.9.0-4-sparc64-smp.001/.libs/libgmp.so
../../.libs/libgmp.so -Wl,-rpath
-Wl,/opt/bw/build/gmp-6.2.1_5.9.0-4-sparc64-smp.001/.libs -Wl,-rpath
-Wl,/opt/bw/lib
make[4]: Leaving directory
'/opt/bw/build/gmp-6.2.1_5.9.0-4-sparc64-smp.001/tests/misc'
/usr/bin/make check-TESTS
make[4]: Entering directory
'/opt/bw/build/gmp-6.2.1_5.9.0-4-sparc64-smp.001/tests/misc'
make[5]: Entering directory
'/opt/bw/build/gmp-6.2.1_5.9.0-4-sparc64-smp.001/tests/misc'
../../test-driver: line 107: 51992 Segmentation fault "$@" >
$log_file 2>&1
FAIL: t-printf
PASS: t-scanf
PASS: t-locale
============================================================================
Testsuite summary for GNU MP 6.2.1
============================================================================
# TOTAL: 3
# PASS: 2
# SKIP: 0
# XFAIL: 0
# FAIL: 1
# XPASS: 0
# ERROR: 0
============================================================================
See tests/misc/test-suite.log
Well that log offers very little :
ceres$ cat tests/misc/test-suite.log
=============================================
GNU MP 6.2.1: tests/misc/test-suite.log
=============================================
# TOTAL: 3
# PASS: 2
# SKIP: 0
# XFAIL: 0
# FAIL: 1
# XPASS: 0
# ERROR: 0
.. contents:: :depth: 2
FAIL: t-printf
==============
FAIL t-printf (exit status: 139)
ceres$
I have been single stepping my way through t-printf and I always end up
inside glibc obstack world and memcpy assembly. I glanced at glibc 2.31
where I see obstack.c line 167 inside :
143 int
144 _obstack_begin (struct obstack *h,
145 int size, int alignment,
146 void *(*chunkfun) (long),
147 void (*freefun) (void *))
.
.
.
167 size = 4096 - extra;
etc etc.
Looks very familiar however we tested that :
long f(long arg){return 4096 - arg;}
... works just fine with gcc regardless of the new patch.
So that can not be related.
If I just let things proceed I end up at :
Program received signal SIGSEGV, Segmentation fault.
__memcpy_large () at ../sysdeps/sparc/sparc64/memcpy.S:370
370 stb %g5, [%o0 - 2] /* Store
*/
(gdb)
(gdb) where
#0 __memcpy_large () at ../sysdeps/sparc/sparc64/memcpy.S:370
#1 0x000001000000a9f0 in tests_allocate (size=1099511750592) at
memory.c:102
#2 0x0000010000007620 in check_one (want=0x1000001dfc0 " 123",
fmt=0x100001267a8 "%10Nd") at t-printf.c:312
#3 0x0000010000007af4 in check_z () at t-printf.c:424
#4 0x000001000000a6d0 in main (argc=1, argv=0x7fefffff628) at
t-printf.c:945
(gdb)
This feels like deep water at this point because after glancing around
inside tests/memory.c at both tests_allocate() and tests_free_nosize()
due to :
37:#define obstack_chunk_alloc tests_allocate
38:#define obstack_chunk_free tests_free_nosize
I just go single stepping around madly for a while and that includes
into the sources of glibc-2.31 and I simply got lost. Is there an
easier way to track this down?
--
Dennis Clarke
RISC-V/SPARC/PPC/ARM/CISC
UNIX and Linux spoken
GreyBeard and suspenders optional
More information about the gmp-bugs
mailing list