http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59644

--- Comment #13 from Markus Trippelsdorf <trippels at gcc dot gnu.org> ---
(In reply to Jakub Jelinek from comment #12)
> (In reply to Markus Trippelsdorf from comment #11)
> > (In reply to Jakub Jelinek from comment #10)
> > > If you have time, could you please try to bisect manually which of the 4
> > > functions matters for the bootstrap failure?
> > > Compile printk.s with both compilers and apply by hand only portions of 
> > > the
> > > diff that are for individual routines?
> > 
> > Yes. I will try this later.
> > In the meantime I've found out that drivers/acpi/acpica/utxferror.c also 
> > gets miscompiled. If I replace this two object files with good ones and
> > relink the kernel, everything runs fine (under qemu)...
> > 
> > utxferror shows the same pattern as seen in printk.
> 
> It is undestandable the patch changes how most/all stdarg functions are
> compiled in the kernel, the question is why the kernel cares in certain
> cases.  Do you get some OOPS in the utxferror case or also silent hang
> without being able to tell what is going on?  In ACPI case, I'd guess if the
> routine calls into BIOS that the BIOS (or whatever qemu uses instead of
> BIOS) might assume 16-byte stack alignment which is part of the ABI, but the
> kernel intentionally only guarantees 8-byte stack alignment.

It's also a silent hang in the utxferror case. In both cases the kernel
just executes the halt loop in early_idt_handler:
   0xffffffff81a81165 <+69>:    hlt    
=> 0xffffffff81a81166 <+70>:    jmp    0xffffffff81a81165
<early_idt_handler+69>

Reply via email to