This is the mail archive of the gdb-patches@sources.redhat.com mailing list for the GDB project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: RFA: modernization of ia64-tdep.c with new frame model for gdb-6.0branch


Daniel Jacobowitz wrote:
On Thu, Jul 31, 2003 at 03:03:37PM -0400, J. Johnston wrote:

I found the fix for making this patch work on the mainline as well. It
turns out that Daniel J.'s patch that verifies that the pc and function
address are in the same section trips up for the ia64 printf calls.
I had added a check in examine_prologue which caught this problem and
recognized that the cfm didn't match up so we should treat the function
as frameless. The fix is simply to set the cache frameless
flag on by default. This corresponds to the new examine_prologue()
logic which assumes frameless until proven otherwise. Now, when frame_func_unwind()
returns 0 when it finds the pc and the function it is supposed to be in
are in different sections, the cache will be marked frameless and I will
correctly look at current register values rather than depend on the cache.


I have resubmitted the patch including the one line change.


Hrm, why is that triggering for printf?  Is it correct, or are we
stopped in some trampoline?


The printf function gets called indirectly.


Your code is doing the right thing.  Before your change, gdb was reporting that the
indirect code was inside _init which wasn't true.  My new code was ok with this because
it handled it by noticing the cfm register was not set correctly.  With the change, the func addr
is now coming back as 0 and my old code failed to treat this as a frameless function.
This ended up causing an error setting a breakpoint at 0 when performing a next over a
printf call.

-- Jeff J.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]