On 2008-Jul-04 13:01:11 +0400, Dmitry Morozovsky <[EMAIL PROTECTED]> wrote: >It seems we step on a bug in gcc in RELENG_7/i386 > >It is triggered at least by profiling program which uses getopt(3):
I think it's actually in the profiling initialisation code. If you try to run sample code under gdb, you can see that .mcount() is not preserving %ecx, though main() assumes it does. (gdb) disas $eip Dump of assembler code for function main: 0x080481d0 <main+0>: lea 0x4(%esp),%ecx 0x080481d4 <main+4>: and $0xfffffff0,%esp 0x080481d7 <main+7>: pushl 0xfffffffc(%ecx) 0x080481da <main+10>: push %ebp 0x080481db <main+11>: mov %esp,%ebp 0x080481dd <main+13>: push %ecx 0x080481de <main+14>: sub $0x14,%esp 0x080481e1 <main+17>: call 0x8051b50 <.mcount> 0x080481e6 <main+22>: mov 0x4(%ecx),%eax 0x080481e9 <main+25>: mov (%eax),%eax 0x080481eb <main+27>: mov %eax,0x8(%esp) 0x080481ef <main+31>: mov (%ecx),%eax 0x080481f1 <main+33>: mov %eax,0x4(%esp) 0x080481f5 <main+37>: movl $0x8066b0a,(%esp) 0x080481fc <main+44>: call 0x8051b00 <printf> 0x08048201 <main+49>: mov $0x0,%eax 0x08048206 <main+54>: add $0x14,%esp 0x08048209 <main+57>: pop %ecx 0x0804820a <main+58>: pop %ebp 0x0804820b <main+59>: lea 0xfffffffc(%ecx),%esp 0x0804820e <main+62>: ret End of assembler dump. (gdb) x/10x $esp 0xbfbfeadc: 0x0804815f 0x00000001 0xbfbfeb08 0xbfbfeb10 0xbfbfeaec: 0x00000000 0x00000000 0x00000000 0x00000000 0xbfbfeafc: 0x00000000 0x00000000 (gdb) info regi eax 0xbfbfeb08 -1077941496 ecx 0x1e968 125288 edx 0x8051d1a 134552858 ebx 0x1 1 esp 0xbfbfeadc 0xbfbfeadc ebp 0xbfbfeb00 0xbfbfeb00 esi 0xbfbfeb10 -1077941488 edi 0x0 0 eip 0x80481d0 0x80481d0 eflags 0x282 642 cs 0x33 51 ss 0x3b 59 ds 0x3b 59 es 0x3b 59 fs 0x3b 59 gs 0x1b 27 ... [step through .mcount] ... (gdb) stepi main (argc=Error accessing memory address 0x1b: Bad address. ) at x.c:4 4 printf("Hello %d %s\n", argc, argv[0]); (gdb) info regi eax 0x1 1 ecx 0x1b 27 edx 0x804815f 134512991 ebx 0x1 1 esp 0xbfbfeab0 0xbfbfeab0 ebp 0xbfbfeac8 0xbfbfeac8 esi 0xbfbfeb10 -1077941488 edi 0x0 0 eip 0x80481e6 0x80481e6 eflags 0x246 582 cs 0x33 51 ss 0x3b 59 ds 0x3b 59 es 0x3b 59 fs 0x3b 59 gs 0x1b 27 -- Peter Jeremy Please excuse any delays as the result of my ISP's inability to implement an MTA that is either RFC2821-compliant or matches their claimed behaviour.
pgpvlUdyjzYFW.pgp
Description: PGP signature