From mboxrd@z Thu Jan 1 00:00:00 1970 From: Fernando Nasser To: Christopher Faylor Cc: gdb-patches@sources.redhat.com Subject: Re: Simple but crucial bug fix to gdb Date: Wed, 30 May 2001 15:16:00 -0000 Message-id: <3B15711D.BEA4B77E@cygnus.com> References: <3.0.5.32.20010530142745.01470ec0@pophost.pdxuxbre.lmc.com> <20010530173650.A21397@redhat.com> X-SW-Source: 2001-05/msg00491.html 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