This is the mail archive of the
gdb@sourceware.cygnus.com
mailing list for the GDB project.
Re: Patches for GNU/Linux PPC native now in CVS
- To: kevinb at cygnus dot com
- Subject: Re: Patches for GNU/Linux PPC native now in CVS
- From: Mark Kettenis <kettenis at wins dot uva dot nl>
- Date: Tue, 22 Feb 2000 11:13:03 +0100
- CC: gdb at sourceware dot cygnus dot com
- References: <1000222025201.ZM9805@ocotillo.lan>
Date: Mon, 21 Feb 2000 19:52:01 -0700
From: Kevin Buettner <kevinb@cygnus.com>
I'm seeing 33 failures in the test suite at the present time. There
are some things which *should* work, like backtracing through signal
handlers, but which don't for some reason. In the coming days, I
will attempt to reduce the number of failures. In particular, I
will make sure we can backtrace through signal handlers. (I put
a lot of time into this in the initial port, and want to make sure
that it'll work again in the present port.)
Hi Kevin, I assume that your're using glibc on your Linux/PPC system.
Since that means that the outermost frame isn't the frame for `main',
but the frame for `__libc_start_main', this confuses some of the
tests. One of these tests may be:
gdb.base/annota1.exp: backtrace @ signal handler
This test still fails on Linux/i386 after I fixed the signal
trampoline recognition code there. I believe it is the extra frame
that confuses the test here. If I apply the following patch, the test
is passed:
Index: gdb/testsuite/gdb.base/annota1.exp
===================================================================
RCS file: /cvs/src/src/gdb/testsuite/gdb.base/annota1.exp,v
retrieving revision 1.1.1.7
diff -u -r1.1.1.7 annota1.exp
--- gdb/testsuite/gdb.base/annota1.exp 1999/11/09 01:23:14 1.1.1.7
+++ gdb/testsuite/gdb.base/annota1.exp 2000/02/22 10:08:54
@@ -277,7 +277,7 @@
verbose "match_max now is: [match_max]"
send_gdb "backtrace\n"
gdb_expect {
- -re "frame-begin 0 $hex.*0.*frame-end.*frame-begin 1 $hex.*1.*(\032\032signal-handler-caller\r\n.signal handler called.\r\n\r\n)*\032\032frame-end\r\n\r\n\032\032frame-begin 2 $hex.*2.*(frame-begin 3 $hex.*3.*)*frame-end.*$gdb_prompt$" \
+ -re "frame-begin 0 $hex.*0.*frame-end.*frame-begin 1 $hex.*1.*(\032\032signal-handler-caller\r\n.signal handler called.\r\n\r\n)*\032\032frame-end\r\n\r\n\032\032frame-begin 2 $hex.*2.*(frame-begin 3 $hex.*3)*frame-end.*$gdb_prompt$" \
{ pass "backtrace @ signal handler" }
-re ".*$gdb_prompt$" { fail "backtrace @ signal handler" }
timeout { fail "backtrace @ signal handler (timeout)" }
I'm not sure however, if this patch is entirey correct, since I don't
really understand what I'm doing here :-(.
Other tests that fail on Linux/i386 that I have analyzed and probably
will fail on Linux/PPC too are listed below:
----------------------------------------------------------------------
On i586-pc-linux-gnu, the following test doesn't really test whether a
"finish" from the outermost frame is disallowed:
PASS: gdb.base/break.exp: finish from outermost frame disallowed
The reason is that `main' isn't the outermost frame, `__libc_start_main' is.
The reason for the following failures is somewhat related.
FAIL: gdb.base/break.exp: break main #1
FAIL: gdb.base/break.exp: break main #2
FAIL: gdb.base/break.exp: clear main
After the previous "finish", the current frame is `__libc_start_main', which has a local variable `main'. This means that an attempt to set a breakpoint on main fails with the message:
"main" is not a function
The following test fails
FAIL: gdb.base/commands.exp: continue in infrun_breakpoint_command_test
Looks like i586-pc-linux-gnu behaves in the same way is hppa*-hp-hpux* here. But that seems to be broken to me.
Then we have the following failure:
FAIL: gdb.base/reread.exp: run to foo() second time (PRMS 13484)
Here the expect string seems to be wrong. The breakpoint is at line
8, not in line 9.
This test also fails:
FAIL: gdb.base/sigall.exp: get signal CHLD
Looks like SIGCHLD is being blocked in the child because it is blocked
in GDB and the signal mask is inherited by the child.
The following tests fail as a consequence of the failure above:
FAIL: gdb.base/sigall.exp: advance to TTIN
FAIL: gdb.base/sigall.exp: get signal TTIN
----------------------------------------------------------------------
Anyway, I hope this helps,
Mark