mirror of
https://github.com/darlinghq/darling-gdb.git
synced 2024-12-18 01:27:05 +00:00
AIX: wrong address for shared object's .bss section
gdb/ChangeLog: * solib-aix.c (solib_aix_relocate_section_addresses): For the .bss section action, apply the same offset as the .data section.
This commit is contained in:
parent
c1357578b3
commit
060cfbef39
@ -1,3 +1,9 @@
|
||||
2013-05-10 Joel Brobecker <brobecker@adacore.com>
|
||||
|
||||
* solib-aix.c (solib_aix_relocate_section_addresses):
|
||||
For the .bss section action, apply the same offset as
|
||||
the .data section.
|
||||
|
||||
2013-05-10 Joel Brobecker <brobecker@adacore.com>
|
||||
|
||||
PR tdep/15420:
|
||||
|
@ -411,7 +411,21 @@ solib_aix_relocate_section_addresses (struct so_list *so,
|
||||
}
|
||||
else if (strcmp (section_name, ".bss") == 0)
|
||||
{
|
||||
sec->addr = bfd_section_vma (abfd, bfd_sect) + info->data_addr;
|
||||
/* The information provided by the loader does not include
|
||||
the address of the .bss section, but we know that it gets
|
||||
relocated by the same offset as the .data section. So,
|
||||
compute the relocation offset for the .data section, and
|
||||
apply it to the .bss section as well. If the .data section
|
||||
is not defined (which seems highly unlikely), do our best
|
||||
by assuming no relocation. */
|
||||
struct bfd_section *data_sect
|
||||
= bfd_get_section_by_name (abfd, ".data");
|
||||
CORE_ADDR data_offset = 0;
|
||||
|
||||
if (data_sect != NULL)
|
||||
data_offset = info->data_addr - bfd_section_vma (abfd, data_sect);
|
||||
|
||||
sec->addr = bfd_section_vma (abfd, bfd_sect) + data_offset;
|
||||
sec->addr += solib_aix_bss_data_overlap (abfd);
|
||||
sec->endaddr = sec->addr + bfd_section_size (abfd, bfd_sect);
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user