[PATCH v5 08/15] gdb, ada: collect standard exceptions in all objfiles

Metzger, Markus T markus.t.metzger@intel.com
Mon Jul 18 05:35:59 GMT 2022


Hello Joel,

Would you be able to review this Ada-related patch?

thanks,
markus.

>-----Original Message-----
>From: Metzger, Markus T <markus.t.metzger@intel.com>
>Sent: Donnerstag, 2. Juni 2022 15:25
>To: gdb-patches@sourceware.org
>Subject: [PATCH v5 08/15] gdb, ada: collect standard exceptions in all objfiles
>
>When searching for standard exceptions for Ada, we lookup the minimal
>symbol of each exception.  With linker namespaces there can be multiple
>instances in different namespaces.  Collect them all.
>---
> gdb/ada-lang.c | 30 +++++++++++++++++++++++-------
> 1 file changed, 23 insertions(+), 7 deletions(-)
>
>diff --git a/gdb/ada-lang.c b/gdb/ada-lang.c
>index 6ab01fd27d4..2b251693b72 100644
>--- a/gdb/ada-lang.c
>+++ b/gdb/ada-lang.c
>@@ -13016,15 +13016,29 @@ ada_add_standard_exceptions (compiled_regex
>*preg,
>     {
>       if (preg == NULL || preg->exec (name, 0, NULL, 0) == 0)
> 	{
>-	  struct bound_minimal_symbol msymbol
>-	    = ada_lookup_simple_minsym (name);
>+	  symbol_name_match_type match_type = name_match_type_from_name
>(name);
>+	  lookup_name_info lookup_name (name, match_type);
>
>-	  if (msymbol.minsym != NULL)
>-	    {
>-	      struct ada_exc_info info
>-		= {name, msymbol.value_address ()};
>+	  symbol_name_matcher_ftype *match_name
>+	    = ada_get_symbol_name_matcher (lookup_name);
>
>-	      exceptions->push_back (info);
>+	  /* Iterate over all objfiles irrespective of scope or linker
>+	     namespaces so we get all exceptions anywhere in the
>+	     progspace.  */
>+	  for (objfile *objfile : current_program_space->objfiles ())
>+	    {
>+	      for (minimal_symbol *msymbol : objfile->msymbols ())
>+		{
>+		  if (match_name (msymbol->linkage_name (), lookup_name,
>+				  nullptr)
>+		      && msymbol->type () != mst_solib_trampoline)
>+		    {
>+		      ada_exc_info info
>+			= {name, msymbol->value_address (objfile)};
>+
>+		      exceptions->push_back (info);
>+		    }
>+		}
> 	    }
> 	}
>     }
>@@ -13122,6 +13136,8 @@ ada_add_global_exceptions (compiled_regex *preg,
> 			   SEARCH_GLOBAL_BLOCK | SEARCH_STATIC_BLOCK,
> 			   VARIABLES_DOMAIN);
>
>+  /* Iterate over all objfiles irrespective of scope or linker namespaces
>+     so we get all exceptions anywhere in the progspace.  */
>   for (objfile *objfile : current_program_space->objfiles ())
>     {
>       for (compunit_symtab *s : objfile->compunits ())
>--
>2.35.3

Intel Deutschland GmbH
Registered Address: Am Campeon 10, 85579 Neubiberg, Germany
Tel: +49 89 99 8853-0, www.intel.de <http://www.intel.de>
Managing Directors: Christin Eisenschmid, Sharon Heck, Tiffany Doon Silva  
Chairperson of the Supervisory Board: Nicole Lau
Registered Office: Munich
Commercial Register: Amtsgericht Muenchen HRB 186928



More information about the Gdb-patches mailing list