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

J. Johnston jjohnstn@redhat.com
Thu Jul 31 21:39:00 GMT 2003


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.



More information about the Gdb-patches mailing list