aboutsummaryrefslogtreecommitdiff
path: root/gdb/ada-lang.c
diff options
context:
space:
mode:
authorJerome Guitton <guitton@adacore.com>2018-09-08 16:47:11 -0500
committerJoel Brobecker <brobecker@adacore.com>2018-09-08 17:47:11 -0400
commit0d81f350ec01630ef7cd9ae4385a1dc504c54d73 (patch)
tree07f8f7bbae941baebf95ec3c0924a28366d36ea3 /gdb/ada-lang.c
parent57aff202b4b17a05d73e71680a26fe12a817f110 (diff)
downloadbinutils-0d81f350ec01630ef7cd9ae4385a1dc504c54d73.zip
binutils-0d81f350ec01630ef7cd9ae4385a1dc504c54d73.tar.gz
binutils-0d81f350ec01630ef7cd9ae4385a1dc504c54d73.tar.bz2
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.
Diffstat (limited to 'gdb/ada-lang.c')
-rw-r--r--gdb/ada-lang.c5
1 files changed, 5 insertions, 0 deletions
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. */