grub-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: __stack_chk_fail in regexp is not defined


From: Andrey Borzenkov
Subject: Re: __stack_chk_fail in regexp is not defined
Date: Sun, 10 Nov 2013 11:35:12 +0400

В Sun, 10 Nov 2013 09:39:06 +0400
Andrey Borzenkov <address@hidden> пишет:

> В Sat, 9 Nov 2013 23:09:35 -0600
> Glenn Washburn <address@hidden> пишет:
> 
> > On Sat, 09 Nov 2013 12:37:08 +0100
> > Vladimir 'φ-coder/phcoder' Serbinenko <address@hidden> wrote:
> > 
> > > On 09.11.2013 05:11, Andrey Borzenkov wrote:
> > > > В Fri, 8 Nov 2013 14:42:43 -0600
> > > > Glenn Washburn <address@hidden> пишет:
> > > > 
> > > >> On Fri, 08 Nov 2013 19:54:43 +0100
> > > >> Vladimir 'φ-coder/phcoder' Serbinenko <address@hidden> wrote:
> > > >>
> > > >>> On 08.11.2013 19:42, Glenn Washburn wrote:
> > > >>>> Now, I'm getting this error while building.  Bug in the awk
> > > >>>> script?
> > > >>>>
> > > >>>> cat syminfo.lst | sort | gawk
> > > >>>> -f ./grub.git/grub-core/genmoddep.awk
> > > >>>>> moddep.lst || (rm -f moddep.lst; exit 1) __stack_chk_fail in
> > > >>>>> regexp is
> > > >>>> not defined
> > > >>>>
> > > >>> What compiler do you use and which additional options did you
> > > >>> pass to it? It inserted this function call. We need either to
> > > >>> provide this function or inhibit compiler from emiting such calls.
> > > >>
> > > >> I'm using gcc 4.7 on Ubuntu from the ubuntu-toolchain-r/test ppa.
> > > >> I do see a reference to __stack_chk_fail at
> > > >> grub-core/efiemu/runtime/efiemu.c:192.  It doesn't look like that
> > > >> file is generated.  Perhaps that function was accidentally added
> > > >> to that file?
> > > > 
> > > > It comes from using -fstack-protector GCC option. But configure
> > > > should have added -fno-stack-protector in this case.
> > > > 
> > > > Could you check defaults using
> > > > 
> > > > /path/to/your/gcc -Q --help=common
> > > > 
> > > > whether it is active by default? Also whether -fno-stack-protector
> > > > was used during compilation?
> > > > 
> > > You're right.
> > > @Glenn: can you tell us exact version of GRUB (e.g. git commit) and
> > > attach config.log?
> > 
> > The commit for these logs is 9612ebc00ef5f186e9084b60ceeb1606d34f1d23.
> > 
> > It looks like stack protector is disabled in gcc and I don't believe
> > that -fno-stack-protector is being used.
> > 
> 
> Check for -fstack-protector is broken (always fails).

The problem is this commit:

commit 24f4e57c4684471da088c504dec0380886eece0c
Author: Vladimir Serbinenko <address@hidden>
Date:   Thu Nov 7 03:17:37 2013 +0100

        * configure.ac: Prevent cflags leaking to subsequent tests by always
        resetting cflags to target_cflags in target tests.

It removed restoring of CFLAGS causing leakage of temporary CFLAGS into
subsequent tests that do not explicitly reset CFLAGS. This is also broke efiemu 
tests:

efiemu runtime: No (cannot compile with -m64 -mcmodel=large -mno-red-zone 
-nostdlib)

And reason why all tests fail

gcc ... -march=i386 -m32 -mrtd -mregparm=3 -falign-jumps=1
-falign-loops=1 -falign-functions=1 -freg-struct-return -mno-mmx -mno-sse 
-mno-sse2 -mno-3dnow -fno-dwarf2-cfi-asm -fno-asynchronous-unwind-tables -m64 
-mcmodel=large -mno-red-zone -nostdlib -Wall -W '-I$(top_srcdir)/include' 
'-I$(top_builddir)/include' -DGRUB_MACHINE_PCBIOS=1 -DGRUB_MACHINE=I386_PC 
-DGRUB_TARGET_CPU_I386=1 conftest.c -S -fstack-protector -o conftest.s
conftest.c:1:0: error: CPU you selected does not support x86-64 instruction set
conftest.c:1:0: error: CPU you selected does not support x86-64 instruction set
conftest.c:1:0: warning: -mregparm is ignored in 64-bit mode [enabled by 
default]

CFLAGS need to be preserved and restored around all compiler flag tests; or all 
tests need to explicitly set them.


Attachment: signature.asc
Description: PGP signature


reply via email to

[Prev in Thread] Current Thread [Next in Thread]