From: Ulrich Weigand Date: Wed, 21 Dec 2011 21:16:13 +0000 (+0000) Subject: gdb/ X-Git-Tag: gdb_7_4-2012-01-24-release~67 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=8d4eeac4ff124609ab113761cae3d6aaa1fd8a73;p=thirdparty%2Fbinutils-gdb.git gdb/ PR tdep/12797 * arm-tdep.c (arm_return_value): Handle complex types. gdb/testsuite/ PR tdep/12797 * gdb.base/callfuncs.exp: Remove KFAIL. --- diff --git a/gdb/ChangeLog b/gdb/ChangeLog index a2dc9ca9bad..d4a4c1a2a2d 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,8 @@ +2011-12-21 Ulrich Weigand + + PR tdep/12797 + * arm-tdep.c (arm_return_value): Handle complex types. + 2011-12-19 Doug Evans * python/py-auto-load.c (info_auto_load_scripts): Pass address of diff --git a/gdb/arm-tdep.c b/gdb/arm-tdep.c index 4b3e7471e95..96d295abd34 100644 --- a/gdb/arm-tdep.c +++ b/gdb/arm-tdep.c @@ -9061,6 +9061,12 @@ arm_return_value (struct gdbarch *gdbarch, struct type *func_type, return RETURN_VALUE_STRUCT_CONVENTION; } + /* AAPCS returns complex types longer than a register in memory. */ + if (tdep->arm_abi != ARM_ABI_APCS + && TYPE_CODE (valtype) == TYPE_CODE_COMPLEX + && TYPE_LENGTH (valtype) > INT_REGISTER_SIZE) + return RETURN_VALUE_STRUCT_CONVENTION; + if (writebuf) arm_store_return_value (valtype, regcache, writebuf); diff --git a/gdb/testsuite/ChangeLog b/gdb/testsuite/ChangeLog index 5e6f94912e9..f6252f03001 100644 --- a/gdb/testsuite/ChangeLog +++ b/gdb/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2011-12-21 Ulrich Weigand + + PR tdep/12797 + * gdb.base/callfuncs.exp: Remove KFAIL. + 2011-12-19 Jan Kratochvil * gdb.base/reread.exp: If srcfile2 fails to build retry it with diff --git a/gdb/testsuite/gdb.base/callfuncs.exp b/gdb/testsuite/gdb.base/callfuncs.exp index 614164add9c..d7f175c1b2b 100644 --- a/gdb/testsuite/gdb.base/callfuncs.exp +++ b/gdb/testsuite/gdb.base/callfuncs.exp @@ -248,19 +248,16 @@ proc do_function_calls {} { if [support_complex_tests] { setup_kfail_for_target gdb/12796 "x86_64-*-*" - setup_kfail_for_target gdb/12797 "arm*-*-*" gdb_test "p t_structs_fc(struct_val1)" ".*= 3 \\+ 3 \\* I" \ "call inferior func with struct - returns float _Complex" setup_kfail_for_target gdb/12783 "i?86-*-*" setup_kfail_for_target gdb/12796 "x86_64-*-*" - setup_kfail_for_target gdb/12797 "arm*-*-*" gdb_test "p t_structs_dc(struct_val1)" ".*= 4 \\+ 4 \\* I" \ "call inferior func with struct - returns double _Complex" setup_kfail_for_target gdb/12783 "i?86-*-*" setup_kfail_for_target gdb/12796 "x86_64-*-*" - setup_kfail_for_target gdb/12797 "arm*-*-*" gdb_test "p t_structs_ldc(struct_val1)" "= 5 \\+ 5 \\* I" \ "call inferior func with struct - returns long double _Complex" }