gdb/
* symfile.c (addr_info_make_relative): Extend comment. Move SECT to a more inner block. Initialize ADDR by LOWER_OFFSET only if it was found by bfd_get_section_by_name. * symfile.h (struct section_addr_info) <sectindex>: New comment.
This commit is contained in:
parent
c16153aed7
commit
672d9c23b3
@ -1,3 +1,10 @@
|
||||
2010-02-19 Jan Kratochvil <jan.kratochvil@redhat.com>
|
||||
|
||||
* symfile.c (addr_info_make_relative): Extend comment. Move SECT to
|
||||
a more inner block. Initialize ADDR by LOWER_OFFSET only if it was
|
||||
found by bfd_get_section_by_name.
|
||||
* symfile.h (struct section_addr_info) <sectindex>: New comment.
|
||||
|
||||
2010-02-19 Joel Brobecker <brobecker@adacore.com>
|
||||
|
||||
* NEWS: Add new "[...] since 7.1" section. Rename the "[...] since
|
||||
|
@ -562,13 +562,13 @@ relative_addr_info_to_section_offsets (struct section_offsets *section_offsets,
|
||||
}
|
||||
|
||||
/* Relativize absolute addresses in ADDRS into offsets based on ABFD. Fill-in
|
||||
also SECTINDEXes there. */
|
||||
also SECTINDEXes specific to ABFD there. This function can be used to
|
||||
rebase ADDRS to start referencing different BFD than before. */
|
||||
|
||||
void
|
||||
addr_info_make_relative (struct section_addr_info *addrs, bfd *abfd)
|
||||
{
|
||||
asection *lower_sect;
|
||||
asection *sect;
|
||||
CORE_ADDR lower_offset;
|
||||
int i;
|
||||
|
||||
@ -597,25 +597,29 @@ addr_info_make_relative (struct section_addr_info *addrs, bfd *abfd)
|
||||
|
||||
for (i = 0; i < addrs->num_sections && addrs->other[i].name; i++)
|
||||
{
|
||||
if (addrs->other[i].addr != 0)
|
||||
asection *sect = bfd_get_section_by_name (abfd, addrs->other[i].name);
|
||||
|
||||
if (sect)
|
||||
{
|
||||
sect = bfd_get_section_by_name (abfd, addrs->other[i].name);
|
||||
if (sect)
|
||||
/* This is the index used by BFD. */
|
||||
addrs->other[i].sectindex = sect->index;
|
||||
|
||||
if (addrs->other[i].addr != 0)
|
||||
{
|
||||
addrs->other[i].addr -= bfd_section_vma (abfd, sect);
|
||||
lower_offset = addrs->other[i].addr;
|
||||
/* This is the index used by BFD. */
|
||||
addrs->other[i].sectindex = sect->index;
|
||||
}
|
||||
else
|
||||
{
|
||||
warning (_("section %s not found in %s"), addrs->other[i].name,
|
||||
bfd_get_filename (abfd));
|
||||
addrs->other[i].addr = 0;
|
||||
}
|
||||
addrs->other[i].addr = lower_offset;
|
||||
}
|
||||
else
|
||||
addrs->other[i].addr = lower_offset;
|
||||
{
|
||||
warning (_("section %s not found in %s"), addrs->other[i].name,
|
||||
bfd_get_filename (abfd));
|
||||
addrs->other[i].addr = 0;
|
||||
|
||||
/* SECTINDEX is invalid if ADDR is zero. */
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -80,6 +80,8 @@ struct section_addr_info
|
||||
{
|
||||
CORE_ADDR addr;
|
||||
char *name;
|
||||
|
||||
/* SECTINDEX must be valid for associated BFD if ADDR is not zero. */
|
||||
int sectindex;
|
||||
} other[1];
|
||||
};
|
||||
|
Loading…
Reference in New Issue
Block a user