summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJoel Brobecker <brobecker@gnat.com>2013-10-01 09:21:41 +0000
committerJoel Brobecker <brobecker@gnat.com>2013-10-01 09:21:41 +0000
commit479b8df39e9ed7be12d44e48f93c2bf3fe909303 (patch)
tree3691cecaeadd5ddd1e61a003d39db1cbbc117e7f
parentc12044384ebc6d210636f2e5f5460bbe854f5390 (diff)
downloadgdb-479b8df39e9ed7be12d44e48f93c2bf3fe909303.tar.gz
wrong "catch exception" error message when finding trampoline msym.
When building the program with the shared GNAT runtime, the debugger is unable to insert Ada exception catchpoints until that runtime has been mapped to memory. In other words, we expect the user to start the program first, before attempting to insert that catchpoint. The detection mechanism that tries to provide some useful tips to the user fails when the program itself contains a trampoline symbol matching the symbol that the catchpoint is trying to use. This results in the following error message: (gdb) catch exception Your Ada runtime appears to be missing some debugging information. Cannot insert Ada exception catchpoint in this configuration. Instead, we expected the following error message: (gdb) catch exception Unable to insert catchpoint. Try to start the program first. gdb/ChangeLog: * ada-lang.c (ada_has_this_exception_support): Ignore mst_solib_trampoline minimal symbols.
-rw-r--r--gdb/ChangeLog5
-rw-r--r--gdb/ada-lang.c5
2 files changed, 9 insertions, 1 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index bcf01692dec..15ca4f24cf5 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,3 +1,8 @@
+2013-10-01 Joel Brobecker <brobecker@adacore.com>
+
+ * ada-lang.c (ada_has_this_exception_support): Ignore
+ mst_solib_trampoline minimal symbols.
+
2013-09-30 Tristan Gingold <gingold@adacore.com>
* i386-darwin-nat.c (darwin_complete_target): Install methods for
diff --git a/gdb/ada-lang.c b/gdb/ada-lang.c
index d2b0ed2eff6..62ca50c2beb 100644
--- a/gdb/ada-lang.c
+++ b/gdb/ada-lang.c
@@ -11039,7 +11039,10 @@ ada_has_this_exception_support (const struct exception_support_info *einfo)
the name of the exception being raised (this name is printed in
the catchpoint message, and is also used when trying to catch
a specific exception). We do not handle this case for now. */
- if (lookup_minimal_symbol (einfo->catch_exception_sym, NULL, NULL))
+ struct minimal_symbol *msym
+ = lookup_minimal_symbol (einfo->catch_exception_sym, NULL, NULL);
+
+ if (msym && MSYMBOL_TYPE (msym) != mst_solib_trampoline)
error (_("Your Ada runtime appears to be missing some debugging "
"information.\nCannot insert Ada exception catchpoint "
"in this configuration."));