Created attachment 5741 [details] test case GDB on x86_64-linux is unable to handl inf-call of vararg function of parameter type _Complex. Here are the steps to reproduce. $ gcc -g complex.c -o complex $ ./gdb/gdb complex ... (gdb) b main (gdb) run Starting program: /scratch/yao/gdb_cvs/build-x86_64/complex Breakpoint 1, main () at ../../complex.c:25 25 return 0; (gdb) print find_max_float_real(4, fc1, fc2, fc3, fc4) During symbol reading, incomplete CFI data; unspecified registers (e.g., rax) at 0x40044c. $1 = 0 + 0 * I <-- wrong result. (gdb) print find_max_double_real(4, dc1, dc2, dc3, dc4) $2 = 0 + 0 * I <-- wrong result. (gdb) print find_max_long_double_real(4, ldc1, ldc2, ldc3, ldc4) ../../src/gdb/amd64-tdep.c:622: internal-error: amd64_return_value: Assertion `len <= 16' failed. A problem internal to GDB has been detected, further debugging may prove unreliable. Quit this debugging session? (y or n) n ../../src/gdb/amd64-tdep.c:622: internal-error: amd64_return_value: Assertion `len <= 16' failed. A problem internal to GDB has been detected,
On Fedora 18 x86_64: KPASS: gdb.base/varargs.exp: print find_max_float_real(4, fc1, fc2, fc3, fc4) (PRMS gdb/12790) KPASS: gdb.base/varargs.exp: print find_max_double_real(4, dc1, dc2, dc3, dc4) (PRMS gdb/12790) KPASS: gdb.base/varargs.exp: print find_max_long_double_real(4, ldc1, ldc2, ldc3, ldc4) (PRMS gdb/12790) Why KFAIL, on which OS? with -m32: KPASS: gdb.base/varargs.exp: print find_max_float_real(4, fc1, fc2, fc3, fc4) (PRMS gdb/12790) KFAIL: gdb.base/varargs.exp: print find_max_double_real(4, dc1, dc2, dc3, dc4) (PRMS: gdb/12790) KFAIL: gdb.base/varargs.exp: print find_max_long_double_real(4, ldc1, ldc2, ldc3, ldc4) (PRMS: gdb/12790) Those KFAILs seem to be some different bug but still a GDB bug: print find_max_double_real(4, dc1, dc2, dc3, dc4) Program received signal SIGSEGV, Segmentation fault. find_max_double_real (num_vals=0) at ./gdb.base/varargs.c:169 169 return max; The program being debugged was signaled while in a function called from GDB.
CVSROOT: /cvs/src Module name: src Changes by: kettenis@sourceware.org 2012-10-25 08:59:07 Modified files: gdb/testsuite : ChangeLog gdb/testsuite/gdb.base: varargs.exp Log message: * gdb.base/varargs.exp: PR gdb/12790 is now fixed. Patches: http://sourceware.org/cgi-bin/cvsweb.cgi/src/gdb/testsuite/ChangeLog.diff?cvsroot=src&r1=1.3429&r2=1.3430 http://sourceware.org/cgi-bin/cvsweb.cgi/src/gdb/testsuite/gdb.base/varargs.exp.diff?cvsroot=src&r1=1.20&r2=1.21
See PR gdb/12796, PR gdb/12798 and PR gdb/12800.