aboutsummaryrefslogtreecommitdiff
path: root/gdb/symfile-mem.c
diff options
context:
space:
mode:
authorTom Tromey <tom@tromey.com>2018-03-12 21:50:33 -0600
committerTom Tromey <tom@tromey.com>2018-03-16 14:22:13 -0600
commit37e136b1684929df204ddd09c38978c705fa7228 (patch)
tree08037fc61219a9f4006118689c590033bc5cedb7 /gdb/symfile-mem.c
parent8b067d2cf5bf801eb143b4b04da5c22607673471 (diff)
downloadgdb-37e136b1684929df204ddd09c38978c705fa7228.zip
gdb-37e136b1684929df204ddd09c38978c705fa7228.tar.gz
gdb-37e136b1684929df204ddd09c38978c705fa7228.tar.bz2
Remove make_cleanup_free_section_addr_info
This removes make_cleanup_free_section_addr_info. Instead -- per Simon's suggestion -- this changes section_addr_info to be a std::vector. Regression tested by the buildbot. gdb/ChangeLog 2018-03-16 Tom Tromey <tom@tromey.com> * xcoffread.c (xcoff_symfile_offsets): Change type of "addrs". * utils.h (make_cleanup_free_section_addr_info): Don't declare. * utils.c (do_free_section_addr_info) (make_cleanup_free_section_addr_info): Remove. * symfile.h (struct other_sections): Add constructor. (struct section_addr_info): Remove. (section_addr_info): New typedef. (struct sym_fns) <sym_offsets>: Change type of parameter. (build_section_addr_info_from_objfile) (relative_addr_info_to_section_offsets, addr_info_make_relative) (default_symfile_offsets, symbol_file_add) (symbol_file_add_from_bfd) (build_section_addr_info_from_section_table): Update. (alloc_section_addr_info, free_section_addr_info): Don't declare. * symfile.c (alloc_section_addr_info): Remove. (build_section_addr_info_from_section_table): Change return type. Update. (build_section_addr_info_from_bfd) (build_section_addr_info_from_objfile): Likewise. (free_section_addr_info): Remove. (relative_addr_info_to_section_offsets): Change type of "addrs". (addrs_section_compar): Now a std::sort comparator. (addrs_section_sort): Change return type. (addr_info_make_relative): Change type of "addrs". Update. (default_symfile_offsets, syms_from_objfile_1) (syms_from_objfile, symbol_file_add_with_addrs): Likewise. (symbol_file_add_separate): Update. (symbol_file_add): Change type of "addrs". Update. (add_symbol_file_command): Update. Remove cleanups. * symfile-mem.c (symbol_file_add_from_memory): Update. Remove cleanups. * symfile-debug.c (debug_sym_offsets): Change type of "info". * solib.c (solib_read_symbols): Update. * objfiles.c (objfile_relocate): Update. Remove cleanups. * machoread.c (macho_symfile_offsets): Update. * jit.c (jit_bfd_try_read_symtab): Update.
Diffstat (limited to 'gdb/symfile-mem.c')
-rw-r--r--gdb/symfile-mem.c20
1 files changed, 5 insertions, 15 deletions
diff --git a/gdb/symfile-mem.c b/gdb/symfile-mem.c
index 8d91c72..1653628 100644
--- a/gdb/symfile-mem.c
+++ b/gdb/symfile-mem.c
@@ -88,9 +88,6 @@ symbol_file_add_from_memory (struct bfd *templ, CORE_ADDR addr,
struct bfd *nbfd;
struct bfd_section *sec;
bfd_vma loadbase;
- struct section_addr_info *sai;
- unsigned int i;
- struct cleanup *cleanup;
symfile_add_flags add_flags = 0;
if (bfd_get_flavour (templ) != bfd_target_elf_flavour)
@@ -114,31 +111,24 @@ symbol_file_add_from_memory (struct bfd *templ, CORE_ADDR addr,
error (_("Got object file from memory but can't read symbols: %s."),
bfd_errmsg (bfd_get_error ()));
- sai = alloc_section_addr_info (bfd_count_sections (nbfd));
- cleanup = make_cleanup (xfree, sai);
- i = 0;
+ section_addr_info sai;
for (sec = nbfd->sections; sec != NULL; sec = sec->next)
if ((bfd_get_section_flags (nbfd, sec) & (SEC_ALLOC|SEC_LOAD)) != 0)
- {
- sai->other[i].addr = bfd_get_section_vma (nbfd, sec) + loadbase;
- sai->other[i].name = (char *) bfd_get_section_name (nbfd, sec);
- sai->other[i].sectindex = sec->index;
- ++i;
- }
- sai->num_sections = i;
+ sai.emplace_back (bfd_get_section_vma (nbfd, sec) + loadbase,
+ bfd_get_section_name (nbfd, sec),
+ sec->index);
if (from_tty)
add_flags |= SYMFILE_VERBOSE;
objf = symbol_file_add_from_bfd (nbfd, bfd_get_filename (nbfd),
- add_flags, sai, OBJF_SHARED, NULL);
+ add_flags, &sai, OBJF_SHARED, NULL);
add_target_sections_of_objfile (objf);
/* This might change our ideas about frames already looked at. */
reinit_frame_cache ();
- do_cleanups (cleanup);
return objf;
}