On Wed, 11 Jul 2007, Martin Orr wrote:
> On 11/07/07 19:01, Linus Torvalds wrote:
> > Can you do
> >
> > make arch/x86_64/kernel/signal.s
> >
> > with both compilers, and post the results somewhere? It's probably going
>
> OK, they are at:
> http://www.srcf.ucam.org/~mpo25/2007/linux-signal/
Ok, do_notify_resume() which inlines the "setup_frame()" code has has been
totally buggered by the new compiler.
The code is the
err |= __put_user(0, &frame->uc.uc_flags);
err |= __put_user(0, &frame->uc.uc_link);
err |= __put_user(me->sas_ss_sp, &frame->uc.uc_stack.ss_sp);
err |= __put_user(sas_ss_flags(regs->rsp),
&frame->uc.uc_stack.ss_flags);
err |= __put_user(me->sas_ss_size, &frame->uc.uc_stack.ss_size);
err |= setup_sigcontext(&frame->uc.uc_mcontext, regs, set->sig[0], me);
err |= __put_user(fp, &frame->uc.uc_mcontext.fpstate);
and both compilers do a pretty bad job at this, but at least the old
compiler generated the errors properly:
- orl 100(%rsp), %esi # __pu_err, __pu_err
- orl 96(%rsp), %esi # __pu_err, __pu_err
- orl 16(%rsp), %esi # __pu_err, __pu_err
- orl 20(%rsp), %esi # __pu_err, __pu_err
- orl 24(%rsp), %esi # __pu_err, __pu_err
- orl 28(%rsp), %esi # __pu_err, __pu_err
- orl 32(%rsp), %esi # __pu_err, __pu_err
- orl 36(%rsp), %esi # __pu_err, __pu_err
- orl 40(%rsp), %esi # __pu_err, __pu_err
- orl 44(%rsp), %esi # __pu_err, __pu_err
- orl 48(%rsp), %esi # __pu_err, __pu_err
- orl 52(%rsp), %esi # __pu_err, __pu_err
- orl 56(%rsp), %esi # __pu_err, __pu_err
- orl 60(%rsp), %esi # __pu_err, __pu_err
- orl 64(%rsp), %esi # __pu_err, __pu_err
- orl 68(%rsp), %esi # __pu_err, __pu_err
- orl 72(%rsp), %esi # __pu_err, __pu_err
- orl 76(%rsp), %esi # __pu_err, __pu_err
- orl 80(%rsp), %esi # __pu_err, __pu_err
- orl 84(%rsp), %esi # __pu_err, __pu_err
- orl 88(%rsp), %esi # __pu_err, __pu_err
- orl 92(%rsp), %esi # __pu_err, __pu_err
and the new compiler is just incredibly broken:
+ orl %ecx, %esi # __pu_err, __pu_err
+ orl %eax, %esi # __pu_err, __pu_err
+ orl %ecx, %esi # __pu_err, __pu_err
+ orl %ecx, %esi # __pu_err, __pu_err
+ orl %ecx, %esi # __pu_err, __pu_err
+ orl %ecx, %esi # __pu_err, __pu_err
+ orl %ecx, %esi # __pu_err, __pu_err
+ orl %ecx, %esi # __pu_err, __pu_err
+ orl %ecx, %esi # __pu_err, __pu_err
+ orl %ecx, %esi # __pu_err, __pu_err
+ orl %ecx, %esi # __pu_err, __pu_err
+ orl %ecx, %esi # __pu_err, __pu_err
+ orl %ecx, %esi # __pu_err, __pu_err
+ orl %ecx, %esi # __pu_err, __pu_err
+ orl %ecx, %esi # __pu_err, __pu_err
+ orl %ecx, %esi # __pu_err, __pu_err
+ orl %ecx, %esi # __pu_err, __pu_err
+ orl %ecx, %esi # __pu_err, __pu_err
+ orl %ecx, %esi # __pu_err, __pu_err
+ orl %ecx, %esi # __pu_err, __pu_err
+ orl %ecx, %esi # __pu_err, __pu_err
I don't think this is worth even trying to fix. This is terminal compiler
breakage. Make a bug-report to the gcc people, the inline asm stuff has
been totally buggered by that compiler version.
If it mis-compiled that part, it probably miscompiled a lot of other
things too.
Linus
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
[Index of Archives]
[Kernel Newbies]
[Netfilter]
[Bugtraq]
[Photo]
[Stuff]
[Gimp]
[Yosemite News]
[MIPS Linux]
[ARM Linux]
[Linux Security]
[Linux RAID]
[Video 4 Linux]
[Linux for the blind]
[Linux Resources]