From 3b9d3ac236dcc418619785e0660fc0063e6489b8 Mon Sep 17 00:00:00 2001 From: Tom Tromey Date: Sat, 24 Nov 2018 11:54:26 -0700 Subject: Remove ALL_OBJSECTIONS This removes the ALL_OBJSECTIONS macro, replacing its uses with ranged for loops. The special code in this macro for noticing a "break" from the inner loop was only needed in a single place; so rather than try to replicate this, I've simply replaced that use with a "goto". gdb/ChangeLog 2019-01-09 Tom Tromey * symfile.c (overlay_invalidate_all, find_pc_overlay) (find_pc_mapped_section, list_overlays_command) (map_overlay_command, unmap_overlay_command) (simple_overlay_update): Use all_objfiles. * spu-tdep.c (spu_overlay_update): Use all_objfiles. * printcmd.c (info_symbol_command): Use all_objfiles. * objfiles.h (ALL_OBJSECTIONS): Remove. * maint.c (maintenance_translate_address): Use all_objfiles. * gcore.c (gcore_create_callback): Use all_objfiles. (objfile_find_memory_regions): Likewise. --- gdb/objfiles.h | 36 ------------------------------------ 1 file changed, 36 deletions(-) (limited to 'gdb/objfiles.h') diff --git a/gdb/objfiles.h b/gdb/objfiles.h index b8d5b65..c0fc36f 100644 --- a/gdb/objfiles.h +++ b/gdb/objfiles.h @@ -705,42 +705,6 @@ private: } \ else -/* Traverse all obj_sections in all objfiles in the current program - space. - - Note that this detects a "break" in the inner loop, and exits - immediately from the outer loop as well, thus, client code doesn't - need to know that this is implemented with a double for. The extra - hair is to make sure that a "break;" stops the outer loop iterating - as well, and both OBJFILE and OSECT are left unmodified: - - - The outer loop learns about the inner loop's end condition, and - stops iterating if it detects the inner loop didn't reach its - end. In other words, the outer loop keeps going only if the - inner loop reached its end cleanly [(osect) == - (objfile)->sections_end]. - - - OSECT is initialized in the outer loop initialization - expressions, such as if the inner loop has reached its end, so - the check mentioned above succeeds the first time. - - - The trick to not clearing OBJFILE on a "break;" is, in the outer - loop's loop expression, advance OBJFILE, but iff the inner loop - reached its end. If not, there was a "break;", so leave OBJFILE - as is; the outer loop's conditional will break immediately as - well (as OSECT will be different from OBJFILE->sections_end). */ - -#define ALL_OBJSECTIONS(objfile, osect) \ - for ((objfile) = current_program_space->objfiles, \ - (objfile) != NULL ? ((osect) = (objfile)->sections_end) : 0; \ - (objfile) != NULL \ - && (osect) == (objfile)->sections_end; \ - ((osect) == (objfile)->sections_end \ - ? ((objfile) = (objfile)->next, \ - (objfile) != NULL ? (osect) = (objfile)->sections_end : 0) \ - : 0)) \ - ALL_OBJFILE_OSECTIONS (objfile, osect) - #define SECT_OFF_DATA(objfile) \ ((objfile->sect_index_data == -1) \ ? (internal_error (__FILE__, __LINE__, \ -- cgit v1.1