[patch] Fix gdb.python/py-finish-breakpoint.exp new FAIL on x86_64-m32 [Re: [RFC] Python Finish Breakpoints]

Jan Kratochvil
2011-12-24T13:56:36Z

On Tue, 20 Dec 2011 21:54:47 +0100, Kevin Pouget wrote:
> Great! I'll fix this last bits and commit it in the next few days

+Continuing.
+process 23029 is executing new program: /bin/echo
+warning: Selected architecture i386:x86-64 is not compatible with reported target architecture i386
+Architecture of file not recognized.
+(gdb) FAIL: gdb.python/py-finish-breakpoint.exp: catch out of scope after exec

On x86_64 with -m32 testcases compilation.

OK to check in this patch?

Thanks,
Jan

gdb/testsuite/
2011-12-24 Jan Kratochvil <jan.kratochvil@redhat.com>

* gdb.python/py-finish-breakpoint.c (test_exec_exit): Change the
parameter to self_exec, adjust the function.
(main): Check for argv[1] "exit". Use argv[0] for test_exec_exit.
* gdb.python/py-finish-breakpoint.exp (set var self_exec = 0): New test.
(set var do_exit = 0): Remove test.
(newline at end of file): Add one.

--- a/gdb/testsuite/gdb.python/py-finish-breakpoint.c
+++ b/gdb/testsuite/gdb.python/py-finish-breakpoint.c
@@ -59,12 +59,12 @@ call_longjmp (jmp_buf *buf)
}

void
-test_exec_exit (int do_exit)
+test_exec_exit (const char *self_exec)
{
- if (do_exit)
+ if (self_exec == NULL)
exit (0);
else
- execl ("/bin/echo", "echo", "-1", (char *)0);
+ execl (self_exec, self_exec, "exit", (char *)0);
}

int main (int argc, char *argv[])
@@ -74,6 +74,9 @@ int main (int argc, char *argv[])
int bar = 42;
int i, j;

+ if (argc == 2 && strcmp (argv[1], "exit") == 0)
+ return 0;
+
do_nothing ();

i = 0;
@@ -94,7 +97,7 @@ int main (int argc, char *argv[])
else
j += 1; /* after longjmp. */

- test_exec_exit (1);
+ test_exec_exit (argv[0]);

return j; /* Break at end. */
}
--- a/gdb/testsuite/gdb.python/py-finish-breakpoint.exp
+++ b/gdb/testsuite/gdb.python/py-finish-breakpoint.exp
@@ -247,6 +247,7 @@ if ![runto "test_exec_exit"] then {
return 0
}

+gdb_test_no_output "set var self_exec = 0" "switch to exit() test"
gdb_test "python SimpleFinishBreakpoint(gdb.newest_frame())" "SimpleFinishBreakpoint init" "set FinishBP after the exit()"
gdb_test "continue" "SimpleFinishBreakpoint out of scope.*" "catch out of scope after exit"

@@ -259,7 +260,6 @@ if ![runto "test_exec_exit"] then {
return 0
}

-gdb_test_no_output "set var do_exit = 0" "switch to execve() test"
gdb_test "python SimpleFinishBreakpoint(gdb.newest_frame())" "SimpleFinishBreakpoint init" "set FinishBP after the exec"
gdb_test "catch exec" "Catchpoint.*\(exec\).*" "catch exec"
-gdb_test "continue" "SimpleFinishBreakpoint out of scope.*" "catch out of scope after exec"
\ No newline at end of file
+gdb_test "continue" "SimpleFinishBreakpoint out of scope.*" "catch out of scope after exec"