2001-02-12 Michael Chastain <chastain@redhat.com>

* gdb/somsolib.c (som_solib_add_solib_objfile): Do not use
	section relocation feature of syms_from_objfile.  Do my own
	section relocation, offsetting each section of the som by
	either text_addr - text_link_addr or data_start.
This commit is contained in:
Michael Chastain 2001-02-16 18:03:22 +00:00
parent 7d65bd2d7c
commit 9ca0e47c00
2 changed files with 29 additions and 6 deletions

View File

@ -1,3 +1,10 @@
2001-02-12 Michael Chastain <chastain@redhat.com>
* gdb/somsolib.c (som_solib_add_solib_objfile): Do not use
section relocation feature of syms_from_objfile. Do my own
section relocation, offsetting each section of the som by
either text_addr - text_link_addr or data_start.
2001-02-16 Andrew Cagney <ac131313@redhat.com>
* TODO (5.1): Move ``Hardware watchpint problems'' out of 5.1.

View File

@ -1,5 +1,5 @@
/* Handle HP SOM shared libraries for GDB, the GNU Debugger.
Copyright 1993, 1996, 1999 Free Software Foundation, Inc.
Copyright 1993, 1996, 1999, 2001 Free Software Foundation, Inc.
This file is part of GDB.
@ -283,14 +283,30 @@ som_solib_add_solib_objfile (struct so_list *so, char *name, int from_tty,
CORE_ADDR text_addr)
{
obj_private_data_t *obj_private;
struct section_addr_info section_addrs;
struct obj_section *s;
memset (&section_addrs, 0, sizeof (section_addrs));
section_addrs.other[0].name = ".text";
section_addrs.other[0].addr = text_addr;
so->objfile = symbol_file_add (name, from_tty, &section_addrs, 0, OBJF_SHARED);
so->objfile = symbol_file_add (name, from_tty, NULL, 0, OBJF_SHARED);
so->abfd = so->objfile->obfd;
/* syms_from_objfile has bizarre section offset code,
so I do my own right here. */
for (s = so->objfile->sections; s < so->objfile->sections_end; s++)
{
flagword aflag = bfd_get_section_flags(so->abfd, s->the_bfd_section);
if (aflag & SEC_CODE)
{
s->addr += so->som_solib.text_addr - so->som_solib.text_link_addr;
s->endaddr += so->som_solib.text_addr - so->som_solib.text_link_addr;
}
else if (aflag & SEC_DATA)
{
s->addr += so->som_solib.data_start;
s->endaddr += so->som_solib.data_start;
}
else
;
}
/* Mark this as a shared library and save private data.
*/
so->objfile->flags |= OBJF_SHARED;