This is the mail archive of the
gdb@sources.redhat.com
mailing list for the GDB project.
Re: Possible improvement to i386 function prologue analysis.
- From: Mark Kettenis <kettenis at gnu dot org>
- To: ashishm at linsyssoft dot com
- Cc: gdb at sources dot redhat dot com
- Date: Fri, 15 Oct 2004 19:49:58 +0200 (CEST)
- Subject: Re: Possible improvement to i386 function prologue analysis.
- References: <416FC732.2020609@linsyssoft.com>
Date: Fri, 15 Oct 2004 18:18:50 +0530
From: ashish mittal <ashishm@linsyssoft.com>
Hi,
0807a380 <captured_main>:
807a380: 55 push %ebp
807a381: 31 c0 xor %eax,%eax
807a383: 89 e5 mov %esp,%ebp
807a385: 57 push %edi
807a386: 31 d2 xor %edx,%edx
807a388: 31 c9 xor %ecx,%ecx
807a38a: 56 push %esi
807a38b: 53 push %ebx
807a38c: 81 ec 4c 01 00 00 sub $0x14c,%esp
In the above instance, the function "i386_analyze_register_saves()",
which takes care of populating the frame cache, will fail after reading
the first register %edi.
Hi Ashish,
Thanks for your mail. I agree with you analysis. There's even a
KFAILing test in the testsuite for a very similar problem.
Please suggest if it would be worthwhile to work on a similar check for
special instructions within the for loop in i386_analyze_register_saves().
This will enable it to continue reading saved registers over such
occurances.
It's not as important as getting the stack frame setup right (which is
why the code in i386_analyze_frame_setup is there), but it would
certainly be nice to have it. There a slight complication though.
The prologue analyzing stuff is also used for implementing
i386_skip_prologue(). Now i386_skip_prologue() shouldn't dwell too
far into the function. Skipping the instructions we're talking about
here might just do that.
I could work on a possible patch if you agree.
That'd be great.
Mark