aboutsummaryrefslogtreecommitdiff
path: root/gdb/jit.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/jit.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/jit.c')
-rw-r--r--gdb/jit.c19
1 files changed, 6 insertions, 13 deletions
diff --git a/gdb/jit.c b/gdb/jit.c
index 62d6634..0b5b06f 100644
--- a/gdb/jit.c
+++ b/gdb/jit.c
@@ -888,11 +888,8 @@ jit_bfd_try_read_symtab (struct jit_code_entry *code_entry,
CORE_ADDR entry_addr,
struct gdbarch *gdbarch)
{
- struct section_addr_info *sai;
struct bfd_section *sec;
struct objfile *objfile;
- struct cleanup *old_cleanups;
- int i;
const struct bfd_arch_info *b;
if (jit_debug)
@@ -931,27 +928,23 @@ JITed symbol file is not an object file, ignoring it.\n"));
/* Read the section address information out of the symbol file. Since the
file is generated by the JIT at runtime, it should all of the absolute
addresses that we care about. */
- sai = alloc_section_addr_info (bfd_count_sections (nbfd.get ()));
- old_cleanups = make_cleanup_free_section_addr_info (sai);
- i = 0;
+ section_addr_info sai;
for (sec = nbfd->sections; sec != NULL; sec = sec->next)
if ((bfd_get_section_flags (nbfd.get (), sec) & (SEC_ALLOC|SEC_LOAD)) != 0)
{
/* We assume that these virtual addresses are absolute, and do not
treat them as offsets. */
- sai->other[i].addr = bfd_get_section_vma (nbfd.get (), sec);
- sai->other[i].name = xstrdup (bfd_get_section_name (nbfd.get (), sec));
- sai->other[i].sectindex = sec->index;
- ++i;
+ sai.emplace_back (bfd_get_section_vma (nbfd.get (), sec),
+ bfd_get_section_name (nbfd.get (), sec),
+ sec->index);
}
- sai->num_sections = i;
/* This call does not take ownership of SAI. */
objfile = symbol_file_add_from_bfd (nbfd.get (),
- bfd_get_filename (nbfd.get ()), 0, sai,
+ bfd_get_filename (nbfd.get ()), 0,
+ &sai,
OBJF_SHARED | OBJF_NOT_FILENAME, NULL);
- do_cleanups (old_cleanups);
add_objfile_entry (objfile, entry_addr);
}