This is the mail archive of the gdb-cvs@sourceware.org mailing list for the GDB project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[binutils-gdb] Also recognize __sighndlr on Solaris/x86


https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;h=1db88d2272a776200db950c2af46e64e98ef056b

commit 1db88d2272a776200db950c2af46e64e98ef056b
Author: Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
Date:   Sun Sep 23 19:49:14 2018 +0200

    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.

Diff:
---
 gdb/ChangeLog         | 6 ++++++
 gdb/amd64-sol2-tdep.c | 3 ++-
 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


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]