aboutsummaryrefslogtreecommitdiff
path: root/gdb/osfsolib.c
diff options
context:
space:
mode:
authorPeter Schauer <Peter.Schauer@mytum.de>1996-11-02 11:59:19 +0000
committerPeter Schauer <Peter.Schauer@mytum.de>1996-11-02 11:59:19 +0000
commit73b8e6a91526a2c6b6ef77730844aabaaa0886fe (patch)
treed7c6a4be7189f459e26eb934224b2c214c1af105 /gdb/osfsolib.c
parent61e5b759cda25bec432271b643f32880faa430f4 (diff)
downloadfsf-binutils-gdb-73b8e6a91526a2c6b6ef77730844aabaaa0886fe.zip
fsf-binutils-gdb-73b8e6a91526a2c6b6ef77730844aabaaa0886fe.tar.gz
fsf-binutils-gdb-73b8e6a91526a2c6b6ef77730844aabaaa0886fe.tar.bz2
* irix5-nat.c, osfsolib.c, solib.c (symbol_add_stub): Handle
missing or zero-sized .text sections properly. * mdebugread.c: Handle scRConst and scSUndefined storage classes. * stabsread.c (scan_file_globals): Try to resolve symbols for shared libraries from the minimal symbol table of the main executable first.
Diffstat (limited to 'gdb/osfsolib.c')
-rw-r--r--gdb/osfsolib.c20
1 files changed, 19 insertions, 1 deletions
diff --git a/gdb/osfsolib.c b/gdb/osfsolib.c
index 85afa24..ea07208 100644
--- a/gdb/osfsolib.c
+++ b/gdb/osfsolib.c
@@ -566,9 +566,27 @@ symbol_add_stub (arg)
char *arg;
{
register struct so_list *so = (struct so_list *) arg; /* catch_errs bogon */
+ CORE_ADDR text_addr = 0;
+
+ if (so -> textsection)
+ text_addr = so -> textsection -> addr;
+ else
+ {
+ asection *lowest_sect;
+
+ /* If we didn't find a mapped non zero sized .text section, set up
+ text_addr so that the relocation in symbol_file_add does no harm. */
+
+ lowest_sect = bfd_get_section_by_name (so -> abfd, ".text");
+ if (lowest_sect == NULL)
+ bfd_map_over_sections (so -> abfd, find_lowest_section,
+ (PTR) &lowest_sect);
+ if (lowest_sect)
+ text_addr = bfd_section_vma (so -> abfd, lowest_sect) + LM_OFFSET (so);
+ }
so -> objfile = symbol_file_add (so -> so_name, so -> from_tty,
- so -> textsection -> addr,
+ text_addr,
0, 0, 0);
return (1);
}