Patchwork [3/3] Introduce a separate debug objfile iterator

login
register
mail settings
Submitter Tom Tromey
Date May 3, 2019, 11:28 p.m.
Message ID <87lfzni0cq.fsf@tromey.com>
Download mbox | patch
Permalink /patch/32537/
State New
Headers show

Comments

Tom Tromey - May 3, 2019, 11:28 p.m.
>> I did a grep and came up with the appended.
>> If you try it, and it works, I will check it in.

Sandra> I found one more use in ada-lang.c that you'd missed.  Things build
Sandra> with the attached version of the patch, but I haven't done any testing
Sandra> beyond that.

Thanks for doing that.  Somehow there seems to have been one more in
dictionary.c as well.  I've appended the patch I am going to push.

Tom

commit bba6afebd7fde978acb6e06a48084a694aab3b7a
Author: Tom Tromey <tom@tromey.com>
Date:   Fri May 3 17:21:36 2019 -0600

    Remove "struct" from foreach statements
    
    Some versions of gcc have a bug that causes
    
        for (struct mumble : something)
    
    ... to give a compiler error.  We routinely work around this bug in
    gdb, but apparently had not done so in a while.  This patch fixes the
    remaining known cases of this problem.
    
    gdb/ChangeLog
    2019-05-03  Sandra Loosemore  <sandra@codesourcery.com>
                Tom Tromey  <tom@tromey.com>
    
            * dictionary.c (collate_pending_symbols_by_language): Remove
            "struct" from foreach.
            * symtab.c (lookup_global_symbol_from_objfile)
            (lookup_symbol_in_objfile_from_linkage_name): Remove "struct" from
            foreach.
            * ser-tcp.c (net_open): Remove "struct" from foreach.
            * objfiles.c (objfile_relocate, objfile_rebase)
            (objfile_has_symbols): Remove "struct" from foreach.
            * minsyms.c (lookup_minimal_symbol_by_pc_section): Remove "struct"
            from foreach.
            * dwarf2read.c (handle_struct_member_die): Remove "struct" from
            foreach.
            * darwin-nat.c (thread_info_from_private_thread_info): Remove
            "struct" from foreach.
            * ada-lang.c (create_excep_cond_exprs)
            (ada_exception_catchpoint_cond_string): Remove "struct" from
            foreach.
John Marshall - May 15, 2019, 9:45 a.m.
On 3 May 2019, Tom Tromey <tom@tromey.com> wrote:
> commit bba6afebd7fde978acb6e06a48084a694aab3b7a
> Author: Tom Tromey <tom@tromey.com>
> Date:   Fri May 3 17:21:36 2019 -0600
> 
>    Remove "struct" from foreach statements
> [snip]
>            * darwin-nat.c (thread_info_from_private_thread_info): Remove
>            "struct" from foreach.

This broke compilation on macOS (tested on Mojave) with both Clang and GCC (9.1.0):

CXX    darwin-nat.o
../../../binutils-gdb/gdb/darwin-nat.c:1709:8: error: must use 'class' tag to refer to type 'thread_info' in this scope
for (thread_info *it : all_threads ())
/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.14.sdk/usr/include/mach/thread_act.h:240:15: note:
class 'thread_info' is hidden by a non-type declaration of 'thread_info' here
kern_return_t thread_info

Mach has a thread_info() function declared in that header, which darwin-nat.c #includes.

Cheers,

    John

Patch

diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index eba0426463a..ed6d77a0bfb 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,3 +1,24 @@ 
+2019-05-03  Sandra Loosemore  <sandra@codesourcery.com>
+	    Tom Tromey  <tom@tromey.com>
+
+	* dictionary.c (collate_pending_symbols_by_language): Remove
+	"struct" from foreach.
+	* symtab.c (lookup_global_symbol_from_objfile)
+	(lookup_symbol_in_objfile_from_linkage_name): Remove "struct" from
+	foreach.
+	* ser-tcp.c (net_open): Remove "struct" from foreach.
+	* objfiles.c (objfile_relocate, objfile_rebase)
+	(objfile_has_symbols): Remove "struct" from foreach.
+	* minsyms.c (lookup_minimal_symbol_by_pc_section): Remove "struct"
+	from foreach.
+	* dwarf2read.c (handle_struct_member_die): Remove "struct" from
+	foreach.
+	* darwin-nat.c (thread_info_from_private_thread_info): Remove
+	"struct" from foreach.
+	* ada-lang.c (create_excep_cond_exprs)
+	(ada_exception_catchpoint_cond_string): Remove "struct" from
+	foreach.
+
 2019-05-01  Tom Tromey  <tromey@adacore.com>
 
 	* ada-lang.c (ada_value_primitive_field): Treat more fields as
diff --git a/gdb/ada-lang.c b/gdb/ada-lang.c
index 1a566635b2d..20fb3497c03 100644
--- a/gdb/ada-lang.c
+++ b/gdb/ada-lang.c
@@ -12483,7 +12483,7 @@  create_excep_cond_exprs (struct ada_catchpoint *c,
      because the expression may hold the addresses of multiple symbols
      in some cases.  */
   std::multimap<program_space *, struct bp_location *> loc_map;
-  for (struct bp_location *bl = c->loc; bl != NULL; bl = bl->next)
+  for (bp_location *bl = c->loc; bl != NULL; bl = bl->next)
     loc_map.emplace (bl->pspace, bl);
 
   scoped_restore_current_program_space save_pspace;
@@ -13231,7 +13231,7 @@  ada_exception_catchpoint_cond_string (const char *excep_string,
   excep_string = ada_encode (excep_string);
   std::vector<struct bound_minimal_symbol> symbols
     = ada_lookup_simple_minsyms (excep_string);
-  for (const struct bound_minimal_symbol &msym : symbols)
+  for (const bound_minimal_symbol &msym : symbols)
     {
       if (!result.empty ())
 	result += " or ";
diff --git a/gdb/darwin-nat.c b/gdb/darwin-nat.c
index 8282ef27e61..e3368ce6471 100644
--- a/gdb/darwin-nat.c
+++ b/gdb/darwin-nat.c
@@ -1706,7 +1706,7 @@  darwin_attach_pid (struct inferior *inf)
 static struct thread_info *
 thread_info_from_private_thread_info (darwin_thread_info *pti)
 {
-  for (struct thread_info *it : all_threads ())
+  for (thread_info *it : all_threads ())
     {
       darwin_thread_info *iter_pti = get_darwin_thread_info (it);
 
diff --git a/gdb/dictionary.c b/gdb/dictionary.c
index 88eff2fa439..4e38b2e2340 100644
--- a/gdb/dictionary.c
+++ b/gdb/dictionary.c
@@ -932,7 +932,7 @@  collate_pending_symbols_by_language (const struct pending *symbol_list)
 {
   std::unordered_map<enum language, std::vector<symbol *>> nsyms;
 
-  for (const struct pending *list_counter = symbol_list;
+  for (const pending *list_counter = symbol_list;
        list_counter != nullptr; list_counter = list_counter->next)
     {
       for (int i = list_counter->nsyms - 1; i >= 0; --i)
diff --git a/gdb/dwarf2read.c b/gdb/dwarf2read.c
index b0bdecf96fc..b5ea9e3cc0a 100644
--- a/gdb/dwarf2read.c
+++ b/gdb/dwarf2read.c
@@ -15962,7 +15962,7 @@  handle_struct_member_die (struct die_info *child_die, struct type *type,
 	 field for our sole member child.  */
       struct attribute *discr = dwarf2_attr (child_die, DW_AT_discr_value, cu);
 
-      for (struct die_info *variant_child = child_die->child;
+      for (die_info *variant_child = child_die->child;
 	   variant_child != NULL;
 	   variant_child = sibling_die (variant_child))
 	{
diff --git a/gdb/minsyms.c b/gdb/minsyms.c
index 8037329a862..9d29d880aab 100644
--- a/gdb/minsyms.c
+++ b/gdb/minsyms.c
@@ -721,7 +721,7 @@  lookup_minimal_symbol_by_pc_section (CORE_ADDR pc_in, struct obj_section *sectio
 
   gdb_assert (section != NULL);
 
-  for (struct objfile *objfile : section->objfile->separate_debug_objfiles ())
+  for (objfile *objfile : section->objfile->separate_debug_objfiles ())
     {
       CORE_ADDR pc = pc_in;
 
diff --git a/gdb/objfiles.c b/gdb/objfiles.c
index 1b0ea29980d..30823c2d889 100644
--- a/gdb/objfiles.c
+++ b/gdb/objfiles.c
@@ -864,7 +864,7 @@  objfile_relocate (struct objfile *objfile,
 
   changed |= objfile_relocate1 (objfile, new_offsets);
 
-  for (struct objfile *debug_objfile : objfile->separate_debug_objfiles ())
+  for (::objfile *debug_objfile : objfile->separate_debug_objfiles ())
     {
       if (debug_objfile == objfile)
 	continue;
@@ -919,7 +919,7 @@  objfile_rebase (struct objfile *objfile, CORE_ADDR slide)
 {
   int changed = 0;
 
-  for (struct objfile *debug_objfile : objfile->separate_debug_objfiles ())
+  for (::objfile *debug_objfile : objfile->separate_debug_objfiles ())
     changed |= objfile_rebase1 (debug_objfile, slide);
 
   /* Relocate breakpoints as necessary, after things are relocated.  */
@@ -960,7 +960,7 @@  objfile_has_full_symbols (struct objfile *objfile)
 int
 objfile_has_symbols (struct objfile *objfile)
 {
-  for (struct objfile *o : objfile->separate_debug_objfiles ())
+  for (::objfile *o : objfile->separate_debug_objfiles ())
     if (objfile_has_partial_symbols (o) || objfile_has_full_symbols (o))
       return 1;
   return 0;
diff --git a/gdb/ser-tcp.c b/gdb/ser-tcp.c
index 039b0432231..6ba95107918 100644
--- a/gdb/ser-tcp.c
+++ b/gdb/ser-tcp.c
@@ -323,7 +323,7 @@  net_open (struct serial *scb, const char *name)
     {
       got_connrefused = false;
 
-      for (struct addrinfo *iter = ainfo; iter != NULL; iter = iter->ai_next)
+      for (addrinfo *iter = ainfo; iter != NULL; iter = iter->ai_next)
 	{
 	  /* Iterate over the list of possible addresses to connect
 	     to.  For each, we'll try to connect and see if it
diff --git a/gdb/symtab.c b/gdb/symtab.c
index 16e641a830b..0e1f7ead294 100644
--- a/gdb/symtab.c
+++ b/gdb/symtab.c
@@ -2246,7 +2246,7 @@  lookup_global_symbol_from_objfile (struct objfile *main_objfile,
 				   const char *name,
 				   const domain_enum domain)
 {
-  for (struct objfile *objfile : main_objfile->separate_debug_objfiles ())
+  for (objfile *objfile : main_objfile->separate_debug_objfiles ())
     {
       struct block_symbol result
         = lookup_symbol_in_objfile (objfile, GLOBAL_BLOCK, name, domain);
@@ -2333,7 +2333,7 @@  lookup_symbol_in_objfile_from_linkage_name (struct objfile *objfile,
   else
     main_objfile = objfile;
 
-  for (struct objfile *cur_objfile : main_objfile->separate_debug_objfiles ())
+  for (::objfile *cur_objfile : main_objfile->separate_debug_objfiles ())
     {
       struct block_symbol result;