This is the mail archive of the libc-hacker@sourceware.cygnus.com mailing list for the glibc project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]

egcs 980520 miscompiles glibc/x86


> 
> Oops, the actual change was missing in the previous patch.
> 
> Wed May 20 20:54:49 1998  J"orn Rennecke <amylaar@cygnus.co.uk>
> 
> 	* reload1.c (reload_reg_free_before_p): Earlier inputs might
> 	now conflict.
> 

egcs 980520 miscompiles glibc 2.1/x86. Here is the resulting asm
code:

0x4002fbb1 <__sigaction+429>:   movl   $0x43,%eax
0x4002fbb6 <__sigaction+434>:   movl   0x8(%ebp),%edx
0x4002fbb9 <__sigaction+437>:   movl   0xfffffea0(%ebp),%ecx
0x4002fbbf <__sigaction+443>:   movl   %edi,%edx
0x4002fbc1 <__sigaction+445>:   pushl  %ebx
0x4002fbc2 <__sigaction+446>:   movl   %edx,%ebx
0x4002fbc4 <__sigaction+448>:   int    $0x80
0x4002fbc6 <__sigaction+450>:   popl   %ebx

Here is the source:

  asm volatile ("pushl %%ebx\n"
                "movl %2, %%ebx\n"
                "int $0x80\n"
                "popl %%ebx"
                : "=a" (result)
                : "0" (SYS_ify (sigaction)), "r" (sig),
                  "c" (act ? &k_newact : 0), "d" (oact ? &k_oldact : 0));       
 
As you can see, edx doesn't have "SIG" anymore. I think it may be
related to the reload1.c change and the new regression failure.

Thanks.


H.J.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]