Bug 12796 - GDB is unable to do inf-call of return type _Complex on x86_64-linux
Summary: GDB is unable to do inf-call of return type _Complex on x86_64-linux
Status: RESOLVED FIXED
Alias: None
Product: gdb
Classification: Unclassified
Component: tdep (show other bugs)
Version: HEAD
: P2 normal
Target Milestone: ---
Assignee: Mark Kettenis
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2011-05-23 14:18 UTC by Yao Qi
Modified: 2012-10-24 13:39 UTC (History)
1 user (show)

See Also:
Host: x86_64-linux
Target: x86_64-linux
Build: x86_64-linux
Last reconfirmed:


Attachments
test case (165 bytes, text/x-csrc)
2011-05-23 14:18 UTC, Yao Qi
Details

Note You need to log in before you can comment on or make changes to this bug.
Description Yao Qi 2011-05-23 14:18:12 UTC
Created attachment 5746 [details]
test case

Test case is attached.  Here are the steps to reproduce it.

$ gcc -g complex-ret.c -o complex-ret
$ ./gdb complex-ret
(gdb) b main
Breakpoint 1 at 0x40044c: file /scratch/yao/complex-ret.c, line 9.
(gdb) run
Breakpoint 1, main () at /scratch/yao/complex-ret.c:9
9         return 0;
(gdb) p return_float_complex (fc)
During symbol reading, incomplete CFI data; unspecified registers (e.g., rax) at 0x40044c.
$1 = 0 + 0 * I  // <-- return value is wrong.

(gdb) p return_double_complex (dc)
$2 = 0 + 0 * I  // <-- return value is wrong.

(gdb) p return_long_double_complex (ldc)
../../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)
Comment 1 Sourceware Commits 2012-10-23 18:16:59 UTC
CVSROOT:	/cvs/src
Module name:	src
Changes by:	kettenis@sourceware.org	2012-10-23 18:16:55

Modified files:
	gdb            : ChangeLog amd64-tdep.c amd64-tdep.h 

Log message:
	PR gdb/12796
	PR gdb/12798
	PR gdb/12800
	* amd64-tdep.h (enum amd64_regnum): Add AMD64_ST1_REGNUM and
	AMD64_FTAG_REGNUM.
	* amd64-tdep.c (amd64_classify): Classify complex types.
	(amd64_return_value): Handle the COMPLEX_X87 class.

Patches:
http://sourceware.org/cgi-bin/cvsweb.cgi/src/gdb/ChangeLog.diff?cvsroot=src&r1=1.14750&r2=1.14751
http://sourceware.org/cgi-bin/cvsweb.cgi/src/gdb/amd64-tdep.c.diff?cvsroot=src&r1=1.113&r2=1.114
http://sourceware.org/cgi-bin/cvsweb.cgi/src/gdb/amd64-tdep.h.diff?cvsroot=src&r1=1.22&r2=1.23
Comment 2 Sourceware Commits 2012-10-23 18:25:36 UTC
CVSROOT:	/cvs/src
Module name:	src
Changes by:	kettenis@sourceware.org	2012-10-23 18:25:26

Modified files:
	gdb/testsuite  : ChangeLog 
	gdb/testsuite/gdb.base: callfuncs.exp 

Log message:
	* gdb.base/callfuncs.exp: PR gdb/12796, gdb/12798 and gdb/12800
	are now fixed.

Patches:
http://sourceware.org/cgi-bin/cvsweb.cgi/src/gdb/testsuite/ChangeLog.diff?cvsroot=src&r1=1.3422&r2=1.3423
http://sourceware.org/cgi-bin/cvsweb.cgi/src/gdb/testsuite/gdb.base/callfuncs.exp.diff?cvsroot=src&r1=1.53&r2=1.54
Comment 3 Jan Kratochvil 2012-10-24 13:39:22 UTC
Patch is checked in and KFAIL has been removed from the testsuite.