Re: [PATCH] dump_stack() based on prologue code analysis

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Fri, 28 Jul 2006 11:32:23 -0700, David Daney <ddaney@xxxxxxxxxx> wrote:
> >> This was always the tricky part for me.  How do you know if the 
> >> function is a leaf?
> > 
> > I think that if you cannot find a store instruction which saves RA to 
> > the stack -- either because it's a real leaf and there is no such store, 
> > or because the PC hasn't yet reached the store instruction -- then in 
> > both cases it can be treated as a leaf.

Right.

> Presumably you are walking the code back from the PC until you find the 
> prolog.  How would you tell if you had gone past the beginning of a leaf 
> function?  If you find a j $31 you might assume that it was the end of 
> the previous function.

I think you are misunderstanding here.

What the get_frame_info() doing is just searching "sw $ra, ofs($sp)"
and "addiu sp,sp,-imm" instructions from beginning of the function.
We can obtain the start address and size of the function by
kallsyms_lookup().  This is why those stuff depend on CONFIG_KALLSYMS.

> I may be missing something here, if you know of a failure-proof manner 
> to detect leaf functions I would appreciate hearing what it is.

I have no good idea to do it without CONFIG_KALL_SYMS.
I suppose there is no silver bullet here...

---
Atsushi Nemoto


[Index of Archives]     [Linux MIPS Home]     [LKML Archive]     [Linux ARM Kernel]     [Linux ARM]     [Linux]     [Git]     [Yosemite News]     [Linux SCSI]     [Linux Hams]

  Powered by Linux