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

Note that libc-hacker is a closed list. You may look at the archives of this list, but subscription and posting are not open.


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

Re: egcs-1.1.2 miscompiles Linux (only) with glibc-2.1.1?!


On Sun, Jun 27, 1999 at 10:29:15PM -0000, Wolfram Gloger wrote:
> Unmodified egcs-1.1.2 when bootstrapped on i586-pc-linux against
> glibc-2.1.1 miscompiles the ncr53c8xx driver in Linux-2.0.37, or at
> least it compiles it in such a way that it doesn't work (kernel hangs
> on boot when detecting SCSI devices).
> 
> Unmodified egcs-1.1.2 when bootstrapped on i586-pc-linux against
> glibc-2.0.6 seems to compile Linux-2.0.37 just fine, at least
> ncr53c8xx works.
[...]
> What can I do now to track this down ?

Start by debugging gcc.

This
> -       leal 2464(%edi),%ebp

to this
> +       movl 32(%esp),%edi
> +       addl $2464,%edi

would at first blush appear to be a change in how the combiner
is working.  I can't think of anything directly in there that
would be affected by a library change, but perhaps there is a
difference in the generated insn-recog.c file.

Make sure all the insn-* files are identical between the two builds.

> -       leal 0(,%esi,4),%eax
> -       movl (%eax,%ebp),%ebx
> -       cmpl $-1,%ebx
> +       leal 0(,%ebp,4),%ebx
> +       movl 24(%esp),%edi
> +       movl %ebx,20(%esp)
> +       movl (%ebx,%edi),%esi
> +       movl %esi,%eax
> +       xorl %edx,%edx
> +       andl $0,%eax
> +       andl $-1,%edx
> +       movl %eax,%ecx
> +       orl %edx,%ecx
>         je .L1410

This bit's very bad.

The andl 0/-1 thing is particularly disconserting.  We
wind up with the je always true.


r~

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