mirror of
https://sourceware.org/git/binutils-gdb.git
synced 2024-11-28 04:25:10 +08:00
gdb/
PR symtab/13208 * jit.c (jit_register_code): Remove unused variable my_cleanups. Check for NULL from bfd_open_from_target_memory. Fix ownership of NBFD and SAI.
This commit is contained in:
parent
4323feccfd
commit
4dfb236562
@ -1,3 +1,10 @@
|
|||||||
|
2011-10-28 Jan Kratochvil <jan.kratochvil@redhat.com>
|
||||||
|
|
||||||
|
PR symtab/13208
|
||||||
|
* jit.c (jit_register_code): Remove unused variable my_cleanups. Check
|
||||||
|
for NULL from bfd_open_from_target_memory. Fix ownership of NBFD and
|
||||||
|
SAI.
|
||||||
|
|
||||||
2011-10-28 Pedro Alves <pedro@codesourcery.com>
|
2011-10-28 Pedro Alves <pedro@codesourcery.com>
|
||||||
|
|
||||||
* linux-nat.c (linux_nat_filter_event): Remove `options'
|
* linux-nat.c (linux_nat_filter_event): Remove `options'
|
||||||
|
16
gdb/jit.c
16
gdb/jit.c
@ -253,7 +253,7 @@ jit_register_code (struct gdbarch *gdbarch,
|
|||||||
struct section_addr_info *sai;
|
struct section_addr_info *sai;
|
||||||
struct bfd_section *sec;
|
struct bfd_section *sec;
|
||||||
struct objfile *objfile;
|
struct objfile *objfile;
|
||||||
struct cleanup *old_cleanups, *my_cleanups;
|
struct cleanup *old_cleanups;
|
||||||
int i;
|
int i;
|
||||||
const struct bfd_arch_info *b;
|
const struct bfd_arch_info *b;
|
||||||
CORE_ADDR *entry_addr_ptr;
|
CORE_ADDR *entry_addr_ptr;
|
||||||
@ -267,7 +267,11 @@ jit_register_code (struct gdbarch *gdbarch,
|
|||||||
|
|
||||||
nbfd = bfd_open_from_target_memory (code_entry->symfile_addr,
|
nbfd = bfd_open_from_target_memory (code_entry->symfile_addr,
|
||||||
code_entry->symfile_size, gnutarget);
|
code_entry->symfile_size, gnutarget);
|
||||||
old_cleanups = make_cleanup_bfd_close (nbfd);
|
if (nbfd == NULL)
|
||||||
|
{
|
||||||
|
puts_unfiltered (_("Error opening JITed symbol file, ignoring it.\n"));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
/* Check the format. NOTE: This initializes important data that GDB uses!
|
/* Check the format. NOTE: This initializes important data that GDB uses!
|
||||||
We would segfault later without this line. */
|
We would segfault later without this line. */
|
||||||
@ -275,7 +279,7 @@ jit_register_code (struct gdbarch *gdbarch,
|
|||||||
{
|
{
|
||||||
printf_unfiltered (_("\
|
printf_unfiltered (_("\
|
||||||
JITed symbol file is not an object file, ignoring it.\n"));
|
JITed symbol file is not an object file, ignoring it.\n"));
|
||||||
do_cleanups (old_cleanups);
|
bfd_close (nbfd);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -290,7 +294,7 @@ JITed symbol file is not an object file, ignoring it.\n"));
|
|||||||
file is generated by the JIT at runtime, it should all of the absolute
|
file is generated by the JIT at runtime, it should all of the absolute
|
||||||
addresses that we care about. */
|
addresses that we care about. */
|
||||||
sai = alloc_section_addr_info (bfd_count_sections (nbfd));
|
sai = alloc_section_addr_info (bfd_count_sections (nbfd));
|
||||||
make_cleanup_free_section_addr_info (sai);
|
old_cleanups = make_cleanup_free_section_addr_info (sai);
|
||||||
i = 0;
|
i = 0;
|
||||||
for (sec = nbfd->sections; sec != NULL; sec = sec->next)
|
for (sec = nbfd->sections; sec != NULL; sec = sec->next)
|
||||||
if ((bfd_get_section_flags (nbfd, sec) & (SEC_ALLOC|SEC_LOAD)) != 0)
|
if ((bfd_get_section_flags (nbfd, sec) & (SEC_ALLOC|SEC_LOAD)) != 0)
|
||||||
@ -303,7 +307,7 @@ JITed symbol file is not an object file, ignoring it.\n"));
|
|||||||
++i;
|
++i;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* This call takes ownership of sai. */
|
/* This call takes ownership of NBFD. It does not take ownership of SAI. */
|
||||||
objfile = symbol_file_add_from_bfd (nbfd, 0, sai, OBJF_SHARED, NULL);
|
objfile = symbol_file_add_from_bfd (nbfd, 0, sai, OBJF_SHARED, NULL);
|
||||||
|
|
||||||
/* Remember a mapping from entry_addr to objfile. */
|
/* Remember a mapping from entry_addr to objfile. */
|
||||||
@ -311,7 +315,7 @@ JITed symbol file is not an object file, ignoring it.\n"));
|
|||||||
*entry_addr_ptr = entry_addr;
|
*entry_addr_ptr = entry_addr;
|
||||||
set_objfile_data (objfile, jit_objfile_data, entry_addr_ptr);
|
set_objfile_data (objfile, jit_objfile_data, entry_addr_ptr);
|
||||||
|
|
||||||
discard_cleanups (old_cleanups);
|
do_cleanups (old_cleanups);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* This function unregisters JITed code and frees the corresponding
|
/* This function unregisters JITed code and frees the corresponding
|
||||||
|
Loading…
Reference in New Issue
Block a user