[PATCH] i386_skip_prologue.

Pedro Alves pedro_alves@portugalmail.pt
Sat Dec 9 20:32:00 GMT 2006


Hi all,

(moving this from gdb@, also at http://sources.redhat.com/ml/gdb/2006-11/msg00140.html)

Daniel Jacobowitz escreveu:
> On Sat, Nov 18, 2006 at 03:31:32PM +0000, Pedro Alves wrote:
>>     .loc 1 15 0
>>     pushl     %ebp
>> LCFI0:
>>     movl $16, %eax
>>     movl %esp, %ebp
>> LCFI1:
>>     subl $8, %esp
>> LCFI2:
>>     .loc 1 15 0
>>     andl $-16, %esp
>>     call __alloca
>>     call ___main
>>     .loc 1 17 0
> 
>> What do you think could be done to fix this?
>> Is it the .loc directives that are being output wrong? Or is it gdb's 
>> prologue reader
>> (if there is such a thing) that is missing the fact that __main is not 
>> user code?
> 
> Probably both.  The second line number marker normally marks the end of
> the prologue, so GCC is wrong, and GDB might have to be taught about
> _alloca and __main.
> 

The i386 targets currently don't look at line number markers
or the symbol table at all in i386_skip_prologue.

I used the attached patch to test the gcc side of the fix,
(http://gcc.gnu.org/ml/gcc-patches/2006-12/msg00633.html)

With the gcc patch above applied, this patch fixes all the runto_main issues
on Cygwin. There are a few other FAILs related to breakpoints and main,
but those are testsuite bugs, unrelated to this. I will send patches for those shortly.

This are my current Cygwin/i386 results:

		=== gdb Summary ===

# of expected passes		9897
# of unexpected failures	423
# of unexpected successes	1
# of expected failures		45
# of unknown successes		3
# of known failures		60
# of unresolved testcases	1
# of untested testcases		12
# of unsupported tests		26

(A lot of those seem to be signals related. I guess there are only a
couple of bugs producing all of those failures.)

Cheers,
Pedro Alves

---

2006-12-09  Pedro Alves  <pedro_alves@portugalmail.pt>

         * i386-tdep.c (i386_skip_prologue): Try to find the end of the
         prologue using the symbol table.

-------------- next part --------------
An embedded and charset-unspecified text was scrubbed...
Name: symtabprol.diff
URL: <http://sourceware.org/pipermail/gdb-patches/attachments/20061209/90b22fc3/attachment.ksh>


More information about the Gdb-patches mailing list