This is the mail archive of the
gdb-patches@sources.redhat.com
mailing list for the GDB project.
Re: Simple but crucial bug fix to gdb
Christopher Faylor wrote:
>
> Assuming that I have properly tracked where this is in the current sources,
> I think that this change looks reasonable. There is a similar check for
> pst being non-null a few lines up from this point and pst does not get
> set in the intervening space. So, if the previous check is correct, then
> this one is obviously needed.
>
> I've included a diff below with some extended context. If there are no
> objections, I'll be happy to check this in.
>
I cannot approve the patch because I am not the maintainer of the stabs reader, but (for the reasons you've explained above) this seems to fall clearly into the obvious fix rule.
Fernando
>
> Index: partial-stab.h
> ===================================================================
> RCS file: /cvs/uberbaum/gdb/partial-stab.h,v
> retrieving revision 1.7
> diff -c -2 -0 -p -r1.7 partial-stab.h
> *** partial-stab.h 2001/03/06 08:21:11 1.7
> --- partial-stab.h 2001/05/30 21:34:59
> *************** switch (CUR_SYMBOL_TYPE)
> *** 583,626 ****
> #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)
> {
> pst->textlow =
> find_stab_function_addr (namestring, pst->filename, objfile);
> textlow_not_set = 0;
> }
> #endif
> /* End kludge. */
>
> /* Keep track of the start of the last function so we
> can handle end of function symbols. */
> last_function_start = CUR_SYMBOL_VALUE;
>
> /* In reordered executables this function may lie outside
> the bounds created by N_SO symbols. If that's the case
> use the address of this function as the low bound for
> the partial symbol table. */
> ! if (textlow_not_set
> ! || (pst && CUR_SYMBOL_VALUE < pst->textlow
> ! && CUR_SYMBOL_VALUE
> ! != ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile))))
> {
> pst->textlow = CUR_SYMBOL_VALUE;
> textlow_not_set = 0;
> }
> #endif /* DBXREAD_ONLY */
> add_psymbol_to_list (namestring, p - namestring,
> VAR_NAMESPACE, LOC_BLOCK,
> &objfile->static_psymbols,
> 0, CUR_SYMBOL_VALUE,
> psymtab_language, objfile);
> continue;
>
> /* Global functions were ignored here, but now they
> are put into the global psymtab like one would expect.
> They're also in the minimal symbol table. */
> case 'F':
> CUR_SYMBOL_VALUE += ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
> #ifdef DBXREAD_ONLY
> /* Kludges for ELF/STABS with Sun ACC */
> last_function_name = namestring;
> --- 583,627 ----
> #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)
> {
> pst->textlow =
> find_stab_function_addr (namestring, pst->filename, objfile);
> textlow_not_set = 0;
> }
> #endif
> /* End kludge. */
>
> /* Keep track of the start of the last function so we
> can handle end of function symbols. */
> last_function_start = CUR_SYMBOL_VALUE;
>
> /* In reordered executables this function may lie outside
> the bounds created by N_SO symbols. If that's the case
> use the address of this function as the low bound for
> the partial symbol table. */
> ! if (pst
> ! && (textlow_not_set
> ! || (pst && CUR_SYMBOL_VALUE < pst->textlow
> ! && CUR_SYMBOL_VALUE
> ! != ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile)))))
> {
> pst->textlow = CUR_SYMBOL_VALUE;
> textlow_not_set = 0;
> }
> #endif /* DBXREAD_ONLY */
> add_psymbol_to_list (namestring, p - namestring,
> VAR_NAMESPACE, LOC_BLOCK,
> &objfile->static_psymbols,
> 0, CUR_SYMBOL_VALUE,
> psymtab_language, objfile);
> continue;
>
> /* Global functions were ignored here, but now they
> are put into the global psymtab like one would expect.
> They're also in the minimal symbol table. */
> case 'F':
> CUR_SYMBOL_VALUE += ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
> #ifdef DBXREAD_ONLY
> /* Kludges for ELF/STABS with Sun ACC */
> last_function_name = namestring;
--
Fernando Nasser
Red Hat - Toronto E-Mail: fnasser@redhat.com
2323 Yonge Street, Suite #300
Toronto, Ontario M4P 2C9