diff options
Diffstat (limited to 'gdb/mdebugread.c')
-rw-r--r-- | gdb/mdebugread.c | 49 |
1 files changed, 48 insertions, 1 deletions
diff --git a/gdb/mdebugread.c b/gdb/mdebugread.c index b302418..81e6945 100644 --- a/gdb/mdebugread.c +++ b/gdb/mdebugread.c @@ -2332,6 +2332,16 @@ parse_partial_symbols (objfile, section_offsets) long isym; sh.value += ANOFFSET (section_offsets, SECT_OFF_TEXT); + if (sh.st == stStaticProc) + { + namestring = debug_info->ss + fh->issBase + sh.iss; + prim_record_minimal_symbol_and_info (namestring, + sh.value, + mst_file_text, + NULL, + SECT_OFF_TEXT, + objfile); + } procaddr = sh.value; isym = AUX_GET_ISYM (fh->fBigendian, @@ -2350,6 +2360,42 @@ parse_partial_symbols (objfile, section_offsets) pst->texthigh = high; } } + else if (sh.st == stStatic) + { + switch (sh.sc) + { + case scUndefined: + case scNil: + case scAbs: + break; + + case scData: + case scSData: + case scRData: + case scPData: + case scXData: + namestring = debug_info->ss + fh->issBase + sh.iss; + sh.value += ANOFFSET (section_offsets, SECT_OFF_DATA); + prim_record_minimal_symbol_and_info (namestring, + sh.value, + mst_file_data, + NULL, + SECT_OFF_DATA, + objfile); + break; + + default: + namestring = debug_info->ss + fh->issBase + sh.iss; + sh.value += ANOFFSET (section_offsets, SECT_OFF_BSS); + prim_record_minimal_symbol_and_info (namestring, + sh.value, + mst_file_bss, + NULL, + SECT_OFF_BSS, + objfile); + break; + } + } continue; } #define SET_NAMESTRING() \ @@ -2913,7 +2959,8 @@ psymtab_to_symtab_1 (pst, filename) /* Handle encoded stab line number. */ record_line (current_subfile, sh.index, valu); } - else if (sh.st == stProc || sh.st == stStaticProc || sh.st == stEnd) + else if (sh.st == stProc || sh.st == stStaticProc + || sh.st == stStatic || sh.st == stEnd) /* These are generated by gcc-2.x, do not complain */ ; else |