diff options
Diffstat (limited to 'gdb/somsolib.c')
-rw-r--r-- | gdb/somsolib.c | 27 |
1 files changed, 14 insertions, 13 deletions
diff --git a/gdb/somsolib.c b/gdb/somsolib.c index cde7f91d286..fa7ecd09c0a 100644 --- a/gdb/somsolib.c +++ b/gdb/somsolib.c @@ -290,7 +290,8 @@ som_solib_add_solib_objfile (so, name, from_tty, text_addr) struct section_addr_info section_addrs; memset (§ion_addrs, 0, sizeof (section_addrs)); - section_addrs.text_addr = text_addr; + section_addrs.other[0].name = ".text"; + section_addrs.other[0].addr = text_addr; so->objfile = symbol_file_add (name, from_tty, §ion_addrs, 0, OBJF_SHARED); so->abfd = so->objfile->obfd; @@ -354,13 +355,13 @@ som_solib_load_symbols (so, name, from_tty, text_addr, target) { if (p->the_bfd_section->flags & SEC_CODE) { - p->addr += ANOFFSET (so->objfile->section_offsets, SECT_OFF_TEXT); - p->endaddr += ANOFFSET (so->objfile->section_offsets, SECT_OFF_TEXT); + p->addr += ANOFFSET (so->objfile->section_offsets, SECT_OFF_TEXT (so->objfile)); + p->endaddr += ANOFFSET (so->objfile->section_offsets, SECT_OFF_TEXT (so->objfile)); } else if (p->the_bfd_section->flags & SEC_DATA) { - p->addr += ANOFFSET (so->objfile->section_offsets, SECT_OFF_DATA); - p->endaddr += ANOFFSET (so->objfile->section_offsets, SECT_OFF_DATA); + p->addr += ANOFFSET (so->objfile->section_offsets, SECT_OFF_DATA (so->objfile)); + p->endaddr += ANOFFSET (so->objfile->section_offsets, SECT_OFF_DATA (so->objfile)); } } @@ -1406,11 +1407,11 @@ som_solib_section_offsets (objfile, offsets) asection *private_section; /* The text offset is easy. */ - ANOFFSET (offsets, SECT_OFF_TEXT) + ANOFFSET (offsets, SECT_OFF_TEXT (objfile)) = (so_list->som_solib.text_addr - so_list->som_solib.text_link_addr); - ANOFFSET (offsets, SECT_OFF_RODATA) - = ANOFFSET (offsets, SECT_OFF_TEXT); + ANOFFSET (offsets, SECT_OFF_RODATA (objfile)) + = ANOFFSET (offsets, SECT_OFF_TEXT (objfile)); /* We should look at presumed_dp in the SOM header, but that's not easily available. This should be OK though. */ @@ -1419,14 +1420,14 @@ som_solib_section_offsets (objfile, offsets) if (!private_section) { warning ("Unable to find $PRIVATE$ in shared library!"); - ANOFFSET (offsets, SECT_OFF_DATA) = 0; - ANOFFSET (offsets, SECT_OFF_BSS) = 0; + ANOFFSET (offsets, SECT_OFF_DATA (objfile)) = 0; + ANOFFSET (offsets, SECT_OFF_BSS (objfile)) = 0; return 1; } - ANOFFSET (offsets, SECT_OFF_DATA) + ANOFFSET (offsets, SECT_OFF_DATA (objfile)) = (so_list->som_solib.data_start - private_section->vma); - ANOFFSET (offsets, SECT_OFF_BSS) - = ANOFFSET (offsets, SECT_OFF_DATA); + ANOFFSET (offsets, SECT_OFF_BSS (objfile)) + = ANOFFSET (offsets, SECT_OFF_DATA (objfile)); return 1; } so_list = so_list->next; |