diff options
author | Tom Tromey <tom@tromey.com> | 2020-10-12 15:53:16 -0600 |
---|---|---|
committer | Tom Tromey <tom@tromey.com> | 2020-10-12 20:18:48 -0600 |
commit | d7a78e5c41c77ad32de668b0b2fde74deeb8190d (patch) | |
tree | 35ed23038ee62fb12689eeae60b5d45ac682eebd /gdb/exec.c | |
parent | eda214cec17472e7383b8aaf17f6a065b0be4a1e (diff) | |
download | gdb-d7a78e5c41c77ad32de668b0b2fde74deeb8190d.zip gdb-d7a78e5c41c77ad32de668b0b2fde74deeb8190d.tar.gz gdb-d7a78e5c41c77ad32de668b0b2fde74deeb8190d.tar.bz2 |
Change target_section_table to std::vector alias
Because target_section_table only holds a vector, and because it is
used in an "open" way, this patch makes it just be an alias for the
std::vector specialization. This makes the code less wordy. If we do
ever want to add more specialized behavior to this type, it's simple
enough to convert it back to a struct with the few needed methods
implied by this change.
gdb/ChangeLog
2020-10-12 Tom Tromey <tom@tromey.com>
* target.h (struct target_ops) <get_section_table>: Update.
(target_get_section_table): Update.
* target.c (target_get_section_table, target_section_by_addr)
(memory_xfer_partial_1): Update.
* target-section.h (target_section_table): Now an alias.
* target-delegates.c: Rebuild.
* target-debug.h (target_debug_print_target_section_table_p):
Rename from target_debug_print_struct_target_section_table_p.
* symfile.c (build_section_addr_info_from_section_table): Update.
* solib.c (solib_map_sections, solib_contains_address_p): Update.
* solib-svr4.c (scan_dyntag): Update.
* solib-dsbt.c (scan_dyntag): Update.
* remote.c (remote_target::remote_xfer_live_readonly_partial):
Update.
* record-full.c (record_full_core_target::xfer_partial): Update.
* progspace.h (struct program_space) <target_sections>: Update.
* exec.h (print_section_info): Update.
* exec.c (exec_target::close, build_section_table)
(add_target_sections, add_target_sections_of_objfile)
(remove_target_sections, exec_on_vfork)
(section_table_available_memory)
(section_table_xfer_memory_partial)
(exec_target::get_section_table, exec_target::xfer_partial)
(print_section_info, set_section_command)
(exec_set_section_address, exec_target::has_memory): Update.
* corelow.c (core_target::build_file_mappings)
(core_target::xfer_partial, core_target::info_proc_mappings)
(core_target::info_proc_mappings): Update.
* bfd-target.c (class target_bfd): Update
Diffstat (limited to 'gdb/exec.c')
-rw-r--r-- | gdb/exec.c | 63 |
1 files changed, 29 insertions, 34 deletions
@@ -75,7 +75,7 @@ struct exec_target final : public target_ops const gdb_byte *writebuf, ULONGEST offset, ULONGEST len, ULONGEST *xfered_len) override; - struct target_section_table *get_section_table () override; + target_section_table *get_section_table () override; void files_info () override; bool has_memory () override; @@ -183,7 +183,7 @@ exec_target::close () for (struct program_space *ss : program_spaces) { set_current_program_space (ss); - current_target_sections->sections.clear (); + current_target_sections->clear (); exec_close (); } } @@ -598,8 +598,8 @@ build_section_table (struct bfd *some_bfd) if (!(aflag & SEC_ALLOC)) continue; - table.sections.emplace_back (); - target_section § = table.sections.back (); + table.emplace_back (); + target_section § = table.back (); sect.owner = NULL; sect.the_bfd_section = asect; sect.addr = bfd_section_vma (asect); @@ -616,14 +616,14 @@ void add_target_sections (void *owner, const target_section_table §ions) { - struct target_section_table *table = current_target_sections; + target_section_table *table = current_target_sections; - if (!sections.sections.empty ()) + if (!sections.empty ()) { - for (const target_section &s : sections.sections) + for (const target_section &s : sections) { - table->sections.push_back (s); - table->sections.back ().owner = owner; + table->push_back (s); + table->back ().owner = owner; } scoped_restore_current_pspace_and_thread restore_pspace_thread; @@ -651,7 +651,7 @@ add_target_sections (void *owner, void add_target_sections_of_objfile (struct objfile *objfile) { - struct target_section_table *table = current_target_sections; + target_section_table *table = current_target_sections; struct obj_section *osect; gdb_assert (objfile != nullptr); @@ -662,8 +662,8 @@ add_target_sections_of_objfile (struct objfile *objfile) if (bfd_section_size (osect->the_bfd_section) == 0) continue; - table->sections.emplace_back (); - target_section &ts = table->sections.back (); + table->emplace_back (); + target_section &ts = table->back (); ts.addr = obj_section_addr (osect); ts.endaddr = obj_section_endaddr (osect); ts.the_bfd_section = osect->the_bfd_section; @@ -677,22 +677,22 @@ add_target_sections_of_objfile (struct objfile *objfile) void remove_target_sections (void *owner) { - struct target_section_table *table = current_target_sections; + target_section_table *table = current_target_sections; gdb_assert (owner != NULL); - auto it = std::remove_if (table->sections.begin (), - table->sections.end (), + auto it = std::remove_if (table->begin (), + table->end (), [&] (target_section §) { return sect.owner == owner; }); - table->sections.erase (it, table->sections.end ()); + table->erase (it, table->end ()); /* If we don't have any more sections to read memory from, remove the file_stratum target from the stack of each inferior sharing the program space. */ - if (table->sections.empty ()) + if (table->empty ()) { scoped_restore_current_pspace_and_thread restore_pspace_thread; program_space *curr_pspace = current_program_space; @@ -702,7 +702,7 @@ remove_target_sections (void *owner) if (inf->pspace != curr_pspace) continue; - if (!inf->pspace->target_sections.sections.empty ()) + if (!inf->pspace->target_sections.empty ()) continue; switch_to_inferior_no_thread (inf); @@ -716,7 +716,7 @@ remove_target_sections (void *owner) void exec_on_vfork () { - if (!current_program_space->target_sections.sections.empty ()) + if (!current_program_space->target_sections.empty ()) push_target (&exec_ops); } @@ -779,7 +779,7 @@ section_table_available_memory (CORE_ADDR memaddr, ULONGEST len, { std::vector<mem_range> memory; - for (const target_section &p : sections.sections) + for (const target_section &p : sections) { if ((bfd_section_flags (p.the_bfd_section) & SEC_READONLY) == 0) continue; @@ -858,7 +858,7 @@ section_table_xfer_memory_partial (gdb_byte *readbuf, const gdb_byte *writebuf, gdb_assert (len != 0); - for (const target_section &p : sections.sections) + for (const target_section &p : sections) { struct bfd_section *asect = p.the_bfd_section; bfd *abfd = asect->owner; @@ -918,7 +918,7 @@ section_table_xfer_memory_partial (gdb_byte *readbuf, const gdb_byte *writebuf, return TARGET_XFER_EOF; /* We can't help. */ } -struct target_section_table * +target_section_table * exec_target::get_section_table () { return current_target_sections; @@ -930,7 +930,7 @@ exec_target::xfer_partial (enum target_object object, const gdb_byte *writebuf, ULONGEST offset, ULONGEST len, ULONGEST *xfered_len) { - struct target_section_table *table = get_section_table (); + target_section_table *table = get_section_table (); if (object == TARGET_OBJECT_MEMORY) return section_table_xfer_memory_partial (readbuf, writebuf, @@ -942,7 +942,7 @@ exec_target::xfer_partial (enum target_object object, void -print_section_info (struct target_section_table *t, bfd *abfd) +print_section_info (target_section_table *t, bfd *abfd) { struct gdbarch *gdbarch = gdbarch_from_bfd (abfd); /* FIXME: 16 is not wide enough when gdbarch_addr_bit > 64. */ @@ -961,7 +961,7 @@ print_section_info (struct target_section_table *t, bfd *abfd) bfd_vma entry_point; bool found = false; - for (const target_section &p : t->sections) + for (const target_section &p : *t) { struct bfd_section *psect = p.the_bfd_section; @@ -989,7 +989,7 @@ print_section_info (struct target_section_table *t, bfd *abfd) printf_filtered (_("\tEntry point: %s\n"), paddress (gdbarch, entry_point)); } - for (const target_section &p : t->sections) + for (const target_section &p : *t) { struct bfd_section *psect = p.the_bfd_section; bfd *pbfd = psect->owner; @@ -1032,7 +1032,6 @@ set_section_command (const char *args, int from_tty) unsigned long secaddr; char secprint[100]; long offset; - struct target_section_table *table; if (args == 0) error (_("Must specify section name and its virtual address")); @@ -1044,8 +1043,7 @@ set_section_command (const char *args, int from_tty) /* Parse out new virtual address. */ secaddr = parse_and_eval_address (args); - table = current_target_sections; - for (target_section &p : table->sections) + for (target_section &p : *current_target_sections) { if (!strncmp (secname, bfd_section_name (p.the_bfd_section), seclen) && bfd_section_name (p.the_bfd_section)[seclen] == '\0') @@ -1071,10 +1069,7 @@ set_section_command (const char *args, int from_tty) void exec_set_section_address (const char *filename, int index, CORE_ADDR address) { - struct target_section_table *table; - - table = current_target_sections; - for (target_section &p : table->sections) + for (target_section &p : *current_target_sections) { if (filename_cmp (filename, bfd_get_filename (p.the_bfd_section->owner)) == 0 @@ -1091,7 +1086,7 @@ exec_target::has_memory () { /* We can provide memory if we have any file/target sections to read from. */ - return !current_target_sections->sections.empty (); + return !current_target_sections->empty (); } char * |