From: Kevin Buettner Date: Mon, 15 Oct 2001 20:38:14 +0000 (+0000) Subject: * dbxread.c (process_one_symbol): Don't use error result from X-Git-Tag: gdb_5_1-2001-11-21-release~76 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=83ac78c06a91d2f1ce027b49dbd4186b8e5d62c4;p=thirdparty%2Fbinutils-gdb.git * dbxread.c (process_one_symbol): Don't use error result from find_stab_function_addr(). * partial-stab.h (case 'F'): Likewise. * partial-stab.h (case 'f'): Make SOFUN_ADDRESS_MAYBE_MISSING code match that used for case 'F'. This fixes the divergence that was introduced by my 1999-09-14 changes to partial-stab.h. --- diff --git a/gdb/ChangeLog b/gdb/ChangeLog index e02332a6bf4..4659ddb139a 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,13 @@ +2001-10-15 Kevin Buettner + + * dbxread.c (process_one_symbol): Don't use error result from + find_stab_function_addr(). + * partial-stab.h (case 'F'): Likewise. + + * partial-stab.h (case 'f'): Make SOFUN_ADDRESS_MAYBE_MISSING + code match that used for case 'F'. This fixes the divergence + that was introduced by my 1999-09-14 changes to partial-stab.h. + 2001-10-13 Andrew Cagney S/390 31 & 64 bit target and GNU/Linux native support. diff --git a/gdb/dbxread.c b/gdb/dbxread.c index f1382e7ef04..7b4dfe26f2d 100644 --- a/gdb/dbxread.c +++ b/gdb/dbxread.c @@ -2270,8 +2270,18 @@ process_one_symbol (int type, int desc, CORE_ADDR valu, char *name, from N_FUN symbols. */ if (type == N_FUN && valu == ANOFFSET (section_offsets, SECT_OFF_TEXT (objfile))) - valu = - find_stab_function_addr (name, last_source_file, objfile); + { + CORE_ADDR minsym_valu = + find_stab_function_addr (name, last_source_file, objfile); + + /* find_stab_function_addr will return 0 if the minimal + symbol wasn't found. (Unfortunately, this might also + be a valid address.) Anyway, if it *does* return 0, + it is likely that the value was set correctly to begin + with... */ + if (minsym_valu != 0) + valu = minsym_valu; + } #endif #ifdef SUN_FIXED_LBRAC_BUG diff --git a/gdb/partial-stab.h b/gdb/partial-stab.h index fe772ba588a..e18cabbba09 100644 --- a/gdb/partial-stab.h +++ b/gdb/partial-stab.h @@ -595,10 +595,22 @@ switch (CUR_SYMBOL_TYPE) #ifdef SOFUN_ADDRESS_MAYBE_MISSING /* Do not fix textlow==0 for .o or NLM files, as 0 is a legit value for the bottom of the text seg in those cases. */ - if (pst && textlow_not_set) + if (CUR_SYMBOL_VALUE == ANOFFSET (objfile->section_offsets, + SECT_OFF_TEXT (objfile))) { - pst->textlow = + CORE_ADDR minsym_valu = find_stab_function_addr (namestring, pst->filename, objfile); + /* find_stab_function_addr will return 0 if the minimal + symbol wasn't found. (Unfortunately, this might also + be a valid address.) Anyway, if it *does* return 0, + it is likely that the value was set correctly to begin + with... */ + if (minsym_valu != 0) + CUR_SYMBOL_VALUE = minsym_valu; + } + if (pst && textlow_not_set) + { + pst->textlow = CUR_SYMBOL_VALUE; textlow_not_set = 0; } #endif @@ -652,8 +664,17 @@ switch (CUR_SYMBOL_TYPE) value for the bottom of the text seg in those cases. */ if (CUR_SYMBOL_VALUE == ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile))) - CUR_SYMBOL_VALUE = - find_stab_function_addr (namestring, pst->filename, objfile); + { + CORE_ADDR minsym_valu = + find_stab_function_addr (namestring, pst->filename, objfile); + /* find_stab_function_addr will return 0 if the minimal + symbol wasn't found. (Unfortunately, this might also + be a valid address.) Anyway, if it *does* return 0, + it is likely that the value was set correctly to begin + with... */ + if (minsym_valu != 0) + CUR_SYMBOL_VALUE = minsym_valu; + } if (pst && textlow_not_set) { pst->textlow = CUR_SYMBOL_VALUE;