From mboxrd@z Thu Jan 1 00:00:00 1970 From: Fernando Nasser To: Elena Zannoni Cc: gdb-patches@sources.redhat.com, hilfingr@otisco.mckusick.com Subject: Re: RFA: [symfile.c} Fix to symbol_file_add() Date: Tue, 01 May 2001 05:51:00 -0000 Message-id: <3AEEB0E2.3232D2DE@redhat.com> References: <3AED8391.C6B9A456@redhat.com> <15085.43538.55216.581538@kwikemart.cygnus.com> <3AEDF6A3.440D0C62@redhat.com> <15086.11696.278572.217415@kwikemart.cygnus.com> X-SW-Source: 2001-05/msg00001.html Elena Zannoni wrote: > > > However, the bit: > > > > + /* Getting new symbols may change our opinion about > > > > + what is frameless. */ > > > > + reinit_frame_cache (); > > > > should _always_ be done, whenever we load new symbols. > > > > I need to understand better what happens with shared libraries. > SOLIB_ADD ends up calling this. I see it used in the attach command > and in this case a reinit_frame_cache is OK, so is for the case in > sol-thread.c but what about the other calls? > The comment "Getting new symbols may change our opinion about what is frameless." basically answers your question. GDB is much more reliable at figuring out where the prologue ends when symbols are available. If you are stopped inside a function (in a shared library) and you did not had the symbols when you created the frame cache, you did a less job than you could have done if you had symbols. That is why the frame cache is always reset, so the frames can be reconstructed with mode information and, thus, more precisely. -- Fernando Nasser Red Hat Canada Ltd. E-Mail: fnasser@redhat.com 2323 Yonge Street, Suite #300 Toronto, Ontario M4P 2C9