Messages in this thread |  | | Date | Mon, 25 Sep 2000 06:21:48 -0500 | From | Robert Redelmeier <> | Subject | Re: kernel compiled with frame pointer |
| |
Sushil wrote: > > I agree. Sitting in the front of desktop I can see if the source files are > getting compiled with or without -fomit-frame-pointer. But, while writing > a function in a kernel source file, I want to know whether the caller of > this function was compiled with or without -fomit-frame-pointer because > this will affect the location of return address to it on the stack. > > So, I assume that if CONFIG_FRAME_POINTER is defined then the kernel (and > hopefully the caller function also) is being compiled without > -fomit-frame-pointer and then look for the return address appropriately.
Ah -- I see, you are looking at some sort of kernel debugger. Well, then one way would be to look at entry and exit points. i386 Frame pointers are set up with `pushl %ebp / movl %esp, %ebp / subl $local, %esp` or sometimes [not by gcc AFAIK with `enter`]. Exit points are similarly `movl %ebp, %esp / popl %ebp / ret`. Some versions of gcc do generate `leave / ret`.
You could look for these byte signatures. Should be quite reliable with a good System.map.
-- Robert - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org Please read the FAQ at http://www.tux.org/lkml/
|  |