gdb/
authorUlrich Weigand <uweigand@de.ibm.com>
Wed, 21 Dec 2011 21:13:15 +0000 (21:13 +0000)
committerUlrich Weigand <uweigand@de.ibm.com>
Wed, 21 Dec 2011 21:13:15 +0000 (21:13 +0000)
PR tdep/12797
* arm-tdep.c (arm_return_value): Handle complex types.

gdb/testsuite/
PR tdep/12797
* gdb.base/callfuncs.exp: Remove KFAIL.

gdb/ChangeLog
gdb/arm-tdep.c
gdb/testsuite/ChangeLog
gdb/testsuite/gdb.base/callfuncs.exp

index 78bc56c..faf4a1f 100644 (file)
@@ -1,3 +1,8 @@
+2011-12-21  Ulrich Weigand  <ulrich.weigand@linaro.org>
+
+       PR tdep/12797
+       * arm-tdep.c (arm_return_value): Handle complex types.
+
 2011-12-21  Andreas Schwab  <schwab@linux-m68k.org>
 
        * ppc-linux-nat.c (create_watchpoint_request): Only use ranged
index 4b3e747..96d295a 100644 (file)
@@ -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);
 
index d1cb3f1..7d399aa 100644 (file)
@@ -1,3 +1,8 @@
+2011-12-21  Ulrich Weigand  <ulrich.weigand@linaro.org>
+
+       PR tdep/12797
+       * gdb.base/callfuncs.exp: Remove KFAIL.
+
 2011-12-21  Joel Brobecker  <brobecker@adacore.com>
 
        * gdb.ada/task_bp: New testcase.
index 614164a..d7f175c 100644 (file)
@@ -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"
     }