2003-11-19 Andrew Cagney <cagney@redhat.com>
authorAndrew Cagney <cagney@redhat.com>
Wed, 19 Nov 2003 18:34:52 +0000 (18:34 +0000)
committerAndrew Cagney <cagney@redhat.com>
Wed, 19 Nov 2003 18:34:52 +0000 (18:34 +0000)
* gdb.base/callfuncs.exp: Change the XFAILed descriptor test to a
KFAIL.

gdb/testsuite/ChangeLog
gdb/testsuite/gdb.base/callfuncs.exp

index 762eefcea353a30039e68fc8f00f9d6d6bb0ff26..82f158d24372760d0f102cb4402c103925ec291e 100644 (file)
@@ -1,3 +1,8 @@
+2003-11-19  Andrew Cagney  <cagney@redhat.com>
+
+       * gdb.base/callfuncs.exp: Change the XFAILed descriptor test to a
+       KFAIL.
+
 2003-11-17  Mark Kettenis  <kettenis@gnu.org>
 
        New testcase for PR backtrace/1435.
index 7a5f14302d7463dd945a1c8f623282ed10e00e03..053de39514d969e7b290f93ff9f43eb6dfa1d9d3 100644 (file)
@@ -182,30 +182,27 @@ proc do_function_calls {} {
     gdb_test "p t_func_values(func_val2,func_val1)" " = 0"
     gdb_test "p t_func_values(func_val1,func_val2)" " = 1"
 
-    # On the rs6000, we need to pass the address of the trampoline routine,
-    # not the address of add itself.  I don't know how to go from add to
-    # the address of the trampoline.  Similar problems exist on the HPPA,
-    # and in fact can present an unsolvable problem as the stubs may not
-    # even exist in the user's program.  We've slightly recoded t_func_values
-    # to avoid such problems in the common case.  This may or may not help
-    # the RS6000.
-    setup_xfail "rs6000*-*-*"
-    setup_xfail "powerpc*-*-*"
-    if {![istarget hppa*-*-hpux*]} then {
-       gdb_test "p t_func_values(add,func_val2)" " = 1"
-    }
-
-    setup_xfail "rs6000*-*-*"
-    setup_xfail "powerpc*-*-*"
-    if {![istarget hppa*-*-hpux*]} then {
-       gdb_test "p t_func_values(func_val1,doubleit)" " = 1"
-    }
-
-    setup_xfail "rs6000*-*-*"
-    setup_xfail "powerpc*-*-*"
-    if {![istarget hppa*-*-hpux*]} then {
-       gdb_test "p t_call_add(add,3,4)" " = 7"
-    }
+    # GDB currently screws up the passing of function parameters for
+    # ABIs that use function descriptors.  Instead of passing the
+    # address of te function descriptor, GDB passes the address of the
+    # function body.  This results in the called function treating the
+    # first few instructions of the function proper as a descriptor
+    # and attempting a jump through that (a totally random address).
+    setup_kfail "rs6000*-*-aix*" gdb/1457
+    setup_kfail "powerpc*-*-aix*" gdb/1457
+    setup_kfail "powerpc64*-*-*" gdb/1457
+    setup_kfail hppa*-*-hpux* gdb/1457
+    gdb_test "p t_func_values(add,func_val2)" " = 1"
+    setup_kfail "rs6000*-*-aix*" gdb/1457
+    setup_kfail "powerpc*-*-aix*" gdb/1457
+    setup_kfail "powerpc64*-*-*" gdb/1457
+    setup_kfail hppa*-*-hpux* gdb/1457
+    gdb_test "p t_func_values(func_val1,doubleit)" " = 1"
+    setup_kfail "rs6000*-*-aix*" gdb/1457
+    setup_kfail "powerpc*-*-aix*" gdb/1457
+    setup_kfail "powerpc64*-*-*" gdb/1457
+    setup_kfail hppa*-*-hpux* gdb/1457
+    gdb_test "p t_call_add(add,3,4)" " = 7"
     gdb_test "p t_call_add(func_val1,3,4)" " = 7"
 
     gdb_test "p t_enum_value1(enumval1)" " = 1"