From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Peter.Schauer" To: dberlin@redhat.com (Daniel Berlin) Cc: msnyder@cygnus.com, jimb@cygnus.com, gdb-patches@sources.redhat.com, ezannoni@cygnus.com Subject: Re: [RFA]: Fix partial symbol lookups Date: Thu, 16 Nov 2000 08:29:00 -0000 Message-id: <200011161629.RAA06158@reisser.regent.e-technik.tu-muenchen.de> References: X-SW-Source: 2000-11/msg00204.html > > The previous version of lookup_partial_symbol (before your changes) would > > have found both mangled and demangled names. > > Now this I take issue with. > How could it possibly find demangled names, if it doesn't have access > to them? > lookup_partial_symbol didn't find demangled names before my patch on > 10-12. It doesn't have the code to do so, as you pointed out yourself > (because the SYMBOL_MATCHES_NAME is no better than the strcmp, since > we have no access to demangled names), unless the symbol name was the > demangled name, rather than the mangled name, which doesn't occur. Not true. There were no demangled names in partial symbols from most symbol readers, _except_ for the HP reader, which we are currently discussing, and which I discovered rather late in the day as well. Before your change, lookup_partial_symbol fell back to a linear search if it didn't find the symbol and had the chance to find the demangled symbol via SYMBOL_MATCHES_NAME during the linear search. > > As a starter, the problems mentioned in > > http://sources.redhat.com/ml/gdb-patches/2000-10/msg00230.html > > http://sources.redhat.com/ml/gdb-patches/2000-10/msg00247.html > > http://sources.redhat.com/ml/gdb-patches/2000-10/msg00248.html > > http://sources.redhat.com/ml/gdb-patches/2000-10/msg00220.html > > are still not addressed. > > The first one includes a patch, as soon as it's approved, it'll be > applied. And which will have to be adapted to your patches. Which will mean more work for me, now that I am responsible for fixing _your_ bug because _I_ submitted the RFA, right ? > The second one points out things this patch fixes. No, it contains an example which is not fixed after the infinite regression gets fixed. Please read the message again and then try the example with any combination of suggested fixes you like. It will not work. > The third one is the same. No, it points out another problem with `maint check'. Have you ever tried it with your patches ? > The fourth one has to do with makefile tweaking, so i have no clue > what that has to do with anything. Sorry, typo, I meant http://sources.redhat.com/ml/gdb-patches/2000-10/msg00250.html I've also submitted a patch for that one though. It is the easiest to fix, and it seems that I will have to take care of that one as well ? -- Peter Schauer pes@regent.e-technik.tu-muenchen.de >From dberlin@redhat.com Thu Nov 16 08:36:00 2000 From: Daniel Berlin To: "Peter.Schauer" Cc: msnyder@redhat.com, jimb@cygnus.com, gdb-patches@sources.redhat.com, ezannoni@cygnus.com Subject: Re: [RFA]: Fix partial symbol lookups Date: Thu, 16 Nov 2000 08:36:00 -0000 Message-id: References: <200011161222.NAA05985@reisser.regent.e-technik.tu-muenchen.de> X-SW-Source: 2000-11/msg00205.html Content-length: 2046 "Peter.Schauer" writes: > Dan, have you looked at the HPUXHPPA defines in lookup_symbol ? > These make me believe that the HP reader indeed needs lookups on partial > symbols. > > In this case, you have a problem when lookup_symbol is called with e.g. > overload1arg(int) (when we want to set a breakpoint at the function in > cplusfuncs). > > As lookup_symbol_aux has no access to the mangled name, a lookup in the > partial symbols will fail, as you are looking for a demangled name in the > mangled names. > The previous version of lookup_partial_symbol (before your changes) would > have found both mangled and demangled names. And just for the record, this is wrong, and the source of many annoying bugs i've tried to track down (such as where we would or wouldn't find a C++ operator symbol depending on when you tried to call it. lookup_partial_symbol wouldn't find it, but lookup_symbol and lookup_minimal_symbol would.). I grabbed gdb-5.0 source, which certainly does not have my changes in it, and lo and behold, it doesn't find demangled names in partial symbols. Try it yerself if you like. It's possible this is because of your change in 1994 to make partial symbols no longer have demangled names. But we certainly no longer find demangled names in partial symbols, since at least 5 months before my changes. In fact, I was actually of the impression that we weren't supposed to, since we never have since as long as i've been working on GDB. If lookup_partial_symbol is supposed to be able to find demangled names, then it needs access to the demangled names, which partial symbols don't have. We'd either have to transform demangled names back into mangled ones, or include demangled names in partial symbols, to have this work.. Alternatively, you could SYMBOL_INIT_DEMANGLED_NAME in lookup_partial_symbol, before calling SYMBOL_MATCHES_NAME. but SYMBOL_MATCHES_NAME won't ever see a demangled name on the partial symbols, and thus, never find a demangled name. --Dan