]> git.ipfire.org Git - thirdparty/binutils-gdb.git/commitdiff
gdb/
authorUlrich Weigand <uweigand@de.ibm.com>
Wed, 21 Dec 2011 21:16:13 +0000 (21:16 +0000)
committerUlrich Weigand <uweigand@de.ibm.com>
Wed, 21 Dec 2011 21:16:13 +0000 (21:16 +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 a2dc9ca9bad7304de9111d3ec4f587c6472ec9cc..d4a4c1a2a2db15d5a9db44ea1df4112e84823f56 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-19  Doug Evans  <dje@google.com>
 
        * python/py-auto-load.c (info_auto_load_scripts): Pass address of
index 4b3e7471e9587c3bcd1e00050cfa51398f6ffa36..96d295abd342d8a220b5370f5e40aec728a8c78c 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 5e6f94912e9df313002df19f17f82b5973050e10..f6252f03001e78ff56bf275a228ccaed0a2a8c75 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-19  Jan Kratochvil  <jan.kratochvil@redhat.com>
 
        * gdb.base/reread.exp: If srcfile2 fails to build retry it with
index 614164add9cfbdf5416d57269baa8613d3cf612c..d7f175c1b2bc7cde88a7612b178d77392f7a5ed6 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"
     }