diff options
author | Tom Tromey <tom@tromey.com> | 2018-03-12 21:50:33 -0600 |
---|---|---|
committer | Tom Tromey <tom@tromey.com> | 2018-03-16 14:22:13 -0600 |
commit | 37e136b1684929df204ddd09c38978c705fa7228 (patch) | |
tree | 08037fc61219a9f4006118689c590033bc5cedb7 /gdb/symfile-mem.c | |
parent | 8b067d2cf5bf801eb143b4b04da5c22607673471 (diff) | |
download | binutils-gdb-37e136b1684929df204ddd09c38978c705fa7228.tar.gz |
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.c | 20 |
1 files changed, 5 insertions, 15 deletions
diff --git a/gdb/symfile-mem.c b/gdb/symfile-mem.c index 8d91c729a56..1653628e683 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; } |