[3/3] Introduce a separate debug objfile iterator
Commit Message
>> 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.
Comments
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
@@ -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
@@ -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 ";
@@ -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);
@@ -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)
@@ -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))
{
@@ -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;
@@ -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;
@@ -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
@@ -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;