[binutils-gdb] Handle PPC64 function descriptor in Ada decoding

Joel Brobecker brobecke@sourceware.org
Sat Sep 8 21:56:00 GMT 2018


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

commit 0d81f350ec01630ef7cd9ae4385a1dc504c54d73
Author: Jerome Guitton <guitton@adacore.com>
Date:   Sat Sep 8 16:47:11 2018 -0500

    Handle PPC64 function descriptor in Ada decoding
    
    On PPC64, the entry point of the function "FN" is ".FN" when a function
    descriptor is used. One of the consequences of this is that GDB then
    presents the name of the function to the user (eg: in backtraces) with
    the leading dot, which is a low-level internal detail that the user
    should not be seeing.  The Ada decoding should strip it.
    
    gdb/ChangeLog:
    
    	* ada-lang.c (ada_decode): strip dot prefix in symbol name.
    
    No testcase added, as a number of existing testcases should already
    demonstrate that problem.

Diff:
---
 gdb/ChangeLog  | 4 ++++
 gdb/ada-lang.c | 5 +++++
 2 files changed, 9 insertions(+)

diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index 4aeb0ba..41b1ad4 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,3 +1,7 @@
+2018-09-08  Jerome Guitton  <guitton@adacore.com>
+
+	* ada-lang.c (ada_decode): strip dot prefix in symbol name.
+
 2018-09-08  Joel Brobecker  <brobecker@adacore.com>
 
 	* ada-lang.c (ada_exception_sal): Replace gdb_assert calls
diff --git a/gdb/ada-lang.c b/gdb/ada-lang.c
index c5cddd0..16c7c51 100644
--- a/gdb/ada-lang.c
+++ b/gdb/ada-lang.c
@@ -1164,6 +1164,11 @@ ada_decode (const char *encoded)
   static char *decoding_buffer = NULL;
   static size_t decoding_buffer_size = 0;
 
+  /* With function descriptors on PPC64, the value of a symbol named
+     ".FN", if it exists, is the entry point of the function "FN".  */
+  if (encoded[0] == '.')
+    encoded += 1;
+
   /* The name of the Ada main procedure starts with "_ada_".
      This prefix is not part of the decoded name, so skip this part
      if we see this prefix.  */



More information about the Gdb-cvs mailing list