diff options
author | Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE> | 2018-09-23 19:49:14 +0200 |
---|---|---|
committer | Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE> | 2018-09-23 19:49:14 +0200 |
commit | 1db88d2272a776200db950c2af46e64e98ef056b (patch) | |
tree | c3c494200b62545427cd1447553c5f284bcb85e5 /gdb | |
parent | a44294f5ed9fe09fdfc9427f6f83677843590524 (diff) | |
download | gdb-1db88d2272a776200db950c2af46e64e98ef056b.zip gdb-1db88d2272a776200db950c2af46e64e98ef056b.tar.gz gdb-1db88d2272a776200db950c2af46e64e98ef056b.tar.bz2 |
Also recognize __sighndlr on Solaris/x86
Unlike Solaris/SPARC, the __sighndlr function isn't recognized as part
of a signal handler, causing a couple of testcases to fail.
The following patch fixes that. A followup patch will move this to
common code to avoid such unnecessary discrepancies between
Solaris/SPARC and x86 in the future.
While this fixes a couple of backtraces to now correctly print
#1 <signal handler called>
they often fail later with
#2 0x0ff3ffffff00857f in ?? ()
Backtrace stopped: Cannot access memory at address 0xff3000002e0886f
which needs further investigation.
Tested on amd64-pc-solaris2.11 (running the tests with both -m64 and
-m32).
* amd64-sol2-tdep.c (amd64_sol2_sigtramp_p): Also recognize
__sighndlr.
* i386-sol2-tdep.c (i386_sol2_sigtramp_p): Likewise.
Diffstat (limited to 'gdb')
-rw-r--r-- | gdb/ChangeLog | 6 | ||||
-rw-r--r-- | gdb/amd64-sol2-tdep.c | 3 | ||||
-rw-r--r-- | gdb/i386-sol2-tdep.c | 3 |
3 files changed, 10 insertions, 2 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog index 9aa3297..686c99a 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,9 @@ +2018-09-23 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE> + + * amd64-sol2-tdep.c (amd64_sol2_sigtramp_p): Also recognize + __sighndlr. + * i386-sol2-tdep.c (i386_sol2_sigtramp_p): Likewise. + 2018-08-02 Jon Turney <jon.turney@dronecode.org.uk> * windows-nat.c (windows_nat_target::wait): Remove a spurious diff --git a/gdb/amd64-sol2-tdep.c b/gdb/amd64-sol2-tdep.c index 9504f19..7211186 100644 --- a/gdb/amd64-sol2-tdep.c +++ b/gdb/amd64-sol2-tdep.c @@ -74,7 +74,8 @@ amd64_sol2_sigtramp_p (struct frame_info *this_frame) find_pc_partial_function (pc, &name, NULL, NULL); return (name && (strcmp ("sigacthandler", name) == 0 - || strcmp (name, "ucbsigvechandler") == 0)); + || strcmp (name, "ucbsigvechandler") == 0 + || strcmp (name, "__sighndlr") == 0)); } /* Solaris doesn't have a 'struct sigcontext', but it does have a diff --git a/gdb/i386-sol2-tdep.c b/gdb/i386-sol2-tdep.c index ead1dbb..69d6786 100644 --- a/gdb/i386-sol2-tdep.c +++ b/gdb/i386-sol2-tdep.c @@ -57,7 +57,8 @@ i386_sol2_sigtramp_p (struct frame_info *this_frame) find_pc_partial_function (pc, &name, NULL, NULL); return (name && (strcmp ("sigacthandler", name) == 0 - || strcmp (name, "ucbsigvechandler") == 0)); + || strcmp (name, "ucbsigvechandler") == 0 + || strcmp (name, "__sighndlr") == 0)); } /* Solaris doesn't have a `struct sigcontext', but it does have a |