On Wed, 2009-10-21 at 10:33 +0800, Wu Zhangjin wrote:
> Hi, all
> Just made it(function graph tracer for MIPS) work :-)
> The problem is that: the stack offset should be from 0 to PT_SIZE(304),
> but I mask it with 0xff(256), which is totally wrong.
> Here is an example, the stack address of ra(return address) should be
> (s8 + ffbf0128 & 0xfff).
> ffffffff801dad10 <do_sync_read>:
> ffffffff801dad10: 67bdfed0 daddiu sp,sp,-304
> ffffffff801dad14: ffbe0120 sd s8,288(sp)
> ffffffff801dad18: 03a0f02d move s8,sp
> ffffffff801dad1c: ffbf0128 sd ra,296(sp)
> ffffffff801dad20: ffb30118 sd s3,280(sp)
> ffffffff801dad24: ffb20110 sd s2,272(sp)
> ffffffff801dad28: ffb10108 sd s1,264(sp)
> ffffffff801dad2c: ffb00100 sd s0,256(sp)
> ffffffff801dad30: 03e0082d move at,ra
> ffffffff801dad34: 0c042ab0 jal ffffffff8010aac0
> ffffffff801dad38: 00020021 nop
> Thanks! will send the patches out later.
Great to hear that it works! When I get my cross compiling working I'll
test out your patches.
I'll also probably update them to use the asm() over the probe and
tracing_disable(). That method is very inefficient.