From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1Vl0ke-0006Gr-IO for mharc-grub-devel@gnu.org; Mon, 25 Nov 2013 13:19:16 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:38439) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Vl0kY-0006Bw-FY for grub-devel@gnu.org; Mon, 25 Nov 2013 13:19:15 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1Vl0kR-0003xc-E0 for grub-devel@gnu.org; Mon, 25 Nov 2013 13:19:10 -0500 Received: from mail-ea0-x232.google.com ([2a00:1450:4013:c01::232]:53544) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Vl0kR-0003xX-2u for grub-devel@gnu.org; Mon, 25 Nov 2013 13:19:03 -0500 Received: by mail-ea0-f178.google.com with SMTP id d10so2681654eaj.23 for ; Mon, 25 Nov 2013 10:19:02 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=message-id:date:from:user-agent:mime-version:to:subject:references :in-reply-to:content-type; bh=uG42ZzKEczy+NxzeTzlogLTVRn0Rf1MMts664eYRi0A=; b=s5LQRc36W4apNAGSSM+NXtPHd3YmOJ2HO13y/e4NJSdxDOdwM/oz7Y6chWRPhjawZL sV3Ur5NSmur8EWUB6sbVvRe/yQeDSo1a2rEUCDQ/N+JuOji9POqnoJ21Sgm12sI0RuHv tjkDXh15dCycj7jsXKfcofq8KHCEgzUzFRYPBG9Oybf7fBc+COkS5J7Fo8I6G0ZRQNev T4taOhVAQG9U3NCPfMZHZhs9V72gZQnptTqEKTZY8bBM8btjktld3TGpvae2ljTa1B7t BbqMK4p2tjwcquEHTVIZxOggfNUxVgKnTHLNJBzbPyJMUhrY7VndD/zHwVZRO/+Gs5jM 0LjA== X-Received: by 10.14.104.201 with SMTP id i49mr11823eeg.78.1385403542367; Mon, 25 Nov 2013 10:19:02 -0800 (PST) Received: from [192.168.1.121] (31-249.1-85.cust.bluewin.ch. [85.1.249.31]) by mx.google.com with ESMTPSA id i1sm1333741eeg.0.2013.11.25.10.19.01 for (version=TLSv1 cipher=ECDHE-RSA-RC4-SHA bits=128/128); Mon, 25 Nov 2013 10:19:01 -0800 (PST) Message-ID: <52939494.3040307@gmail.com> Date: Mon, 25 Nov 2013 19:19:00 +0100 From: =?UTF-8?B?VmxhZGltaXIgJ8+GLWNvZGVyL3BoY29kZXInIFNlcmJpbmVua28=?= User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:17.0) Gecko/20131005 Icedove/17.0.9 MIME-Version: 1.0 To: grub-devel@gnu.org Subject: Re: [PATCH v2] Explicitly check for linking format to use for efiemu64 module References: <52938E36.40405@gmail.com> <1385403222-20943-1-git-send-email-arvidjaar@gmail.com> In-Reply-To: <1385403222-20943-1-git-send-email-arvidjaar@gmail.com> X-Enigmail-Version: 1.5.1 Content-Type: multipart/signed; micalg=pgp-sha512; protocol="application/pgp-signature"; boundary="----enig2IRAXSSTDRAAHSEVSGADB" X-detected-operating-system: by eggs.gnu.org: Error: Malformed IPv6 address (bad octet value). X-Received-From: 2a00:1450:4013:c01::232 X-BeenThere: grub-devel@gnu.org X-Mailman-Version: 2.1.14 Precedence: list Reply-To: The development of GNU GRUB List-Id: The development of GNU GRUB List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 25 Nov 2013 18:19:15 -0000 This is an OpenPGP/MIME signed message (RFC 4880 and 3156) ------enig2IRAXSSTDRAAHSEVSGADB Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable On 25.11.2013 19:13, Andrey Borzenkov wrote: > Similar to check for target linking format, also check for efiemu64 > instead of hardcoding -melf_x86_64. This fixes compilation on *BSD > variants. We cannot easily reuse main target check because platforms > are different (main target is 32 bit and efiemu64 - 64 bit). >=20 > This commit adds EFIEMU64_LINK_FORMAT that contains detected > link option and is used in efiemu64.o linking instead of hardcoded > value. Go ahead >=20 > Reported-By: Beeblebrox > --- > configure.ac | 29 +++++++++++++++++++++++++++-- > grub-core/Makefile.am | 9 ++++----- > 2 files changed, 31 insertions(+), 7 deletions(-) >=20 > diff --git a/configure.ac b/configure.ac > index d1292c9..1989f87 100644 > --- a/configure.ac > +++ b/configure.ac > @@ -654,6 +654,30 @@ if test x"$efiemu_excuse" =3D x ; then > efiemu_excuse=3D"cannot compile with -m64 -mcmodel=3Dlarge -mno-r= ed-zone -nostdlib" > fi > fi > +if test x"$efiemu_excuse" =3D x ; then > + AC_CACHE_CHECK([for efiemu64 linking format], [grub_cv_target_cc_efi= emu64_link_format], [ > + grub_cv_target_cc_efiemu64_link_format=3Dunknown > + for format in -melf_x86_64 -melf_x86_64_fbsd -melf_x86_64_obsd -me= lf_x86_64_haiku -arch,x86_64; do > + CFLAGS=3D"-m64 -nostdlib -O2 -mcmodel=3Dlarge -mno-red-zone" > + LDFLAGS=3D"-m64 -Wl,$format -nostdlib -static" > + AC_LINK_IFELSE([AC_LANG_PROGRAM([[ > + asm (".globl start; start:"); > + asm (".globl _start; _start:"); > + asm (".globl __start; __start:"); > + void __main (void); > + void __main (void) {} > + ]], [[]])], [flag=3D1], [flag=3D0]) > + if test x"$flag" =3D x1; then > + grub_cv_target_cc_efiemu64_link_format=3D"$format" > + break; > + fi > + done]) > + if test x"$grub_cv_target_cc_efiemu64_link_format" =3D xunknown; the= n > + efiemu_excuse=3D"no suitable link format for efiemu64 found" > + else > + EFIEMU64_LINK_FORMAT=3D"-Wl,$grub_cv_target_cc_efiemu64_link_forma= t" > + fi > +fi > if test x"$enable_efiemu" =3D xyes && test x"$efiemu_excuse" !=3D x ; = then > AC_MSG_ERROR([efiemu runtime was explicitly requested but can't be c= ompiled]) > fi > @@ -663,11 +687,12 @@ else > enable_efiemu=3Dno > fi > AC_SUBST([enable_efiemu]) > +AC_SUBST([EFIEMU64_LINK_FORMAT]) > =20 > CFLAGS=3D"$TARGET_CFLAGS" > =20 > if test x"$target_cpu" =3D xi386 || test x"$target_cpu" =3D xx86_64; t= hen > - AC_CACHE_CHECK([for linking format], [grub_cv_target_cc_link_format]= , [ > + AC_CACHE_CHECK([for target linking format], [grub_cv_target_cc_link_= format], [ > grub_cv_target_cc_link_format=3Dunknown > for format in -melf_${target_cpu} -melf_${target_cpu}_fbsd -melf_$= {target_cpu}_obsd -melf_${target_cpu}_haiku -m${target_cpu}pe -arch,${tar= get_cpu}; do > if test x${target_cpu} !=3D xi386 && test x$format =3D x${target= _cpu}pe; then > @@ -681,7 +706,7 @@ if test x"$target_cpu" =3D xi386 || test x"$target_= cpu" =3D xx86_64; then > asm (".globl __start; __start:"); > void __main (void); > void __main (void) {} > - ]], [[]])], [flag=3D1], []) > + ]], [[]])], [flag=3D1], [flag=3D0]) > if test x"$flag" =3D x1; then > grub_cv_target_cc_link_format=3D"$format" > break; > diff --git a/grub-core/Makefile.am b/grub-core/Makefile.am > index e2da083..3ca52ea 100644 > --- a/grub-core/Makefile.am > +++ b/grub-core/Makefile.am > @@ -399,7 +399,7 @@ efiemu32.o: efiemu/runtime/efiemu.c $(TARGET_OBJ2EL= F) > fi > =20 > efiemu64_c.o: efiemu/runtime/efiemu.c > - if test "x$(TARGET_APPLE_LINKER)" =3D x1; then \ > + if test "x$(EFIEMU64_LINK_FORMAT)" =3D x-arch,x86_64; then \ > $(TARGET_CC) $(DEFS) $(INCLUDES) $(CPPFLAGS_EFIEMU) $(CPPFLAGS_DEFA= ULT) -m64 -nostdlib -Wall -Werror -mno-red-zone -c -o $@ $< || exit 1; \ > else \ > $(TARGET_CC) $(DEFS) $(INCLUDES) $(CPPFLAGS_EFIEMU) $(CPPFLAGS_DEFA= ULT) -m64 -nostdlib -Wall -Werror -O2 -mcmodel=3Dlarge -mno-red-zone -c -= o $@ $< || exit 1; \ > @@ -407,7 +407,7 @@ efiemu64_c.o: efiemu/runtime/efiemu.c > =20 > efiemu64_s.o: efiemu/runtime/efiemu.S > -rm -f $@ > - if test "x$(TARGET_APPLE_LINKER)" =3D x1; then \ > + if test "x$(EFIEMU64_LINK_FORMAT)" =3D x-arch,x86_64; then \ > $(TARGET_CC) $(DEFS) $(INCLUDES) $(CPPFLAGS_EFIEMU) $(CPPFLAGS_DEFA= ULT) -m64 -Wall -Werror -nostdlib -O2 -mno-red-zone -c -o $@ $< || exit 1= ; \ > else \ > $(TARGET_CC) $(DEFS) $(INCLUDES) $(CPPFLAGS_EFIEMU) $(CPPFLAGS_DEFA= ULT) -m64 -Wall -Werror -nostdlib -O2 -mcmodel=3Dlarge -mno-red-zone -c -= o $@ $< || exit 1; \ > @@ -415,14 +415,13 @@ efiemu64_s.o: efiemu/runtime/efiemu.S > =20 > efiemu64.o: efiemu64_c.o efiemu64_s.o $(TARGET_OBJ2ELEF) > -rm -f $@; \ > - if test "x$(TARGET_APPLE_LINKER)" =3D x1; then \ > + if test "x$(EFIEMU64_LINK_FORMAT)" =3D x-arch,x86_64; then \ > rm -f $@.bin; \ > $(TARGET_CC) -m64 -Wl,-r -nostdlib -o $@.bin $^ || exit 1; \ > $(TARGET_OBJCONV) -felf64 -nu -nd $@.bin $@ || exit 1; \ > rm -f $@.bin; \ > else \ > - $(TARGET_CC) -m64 -Wl,-melf_x86_64 -nostdlib -Wl,-r -o $@ $^ || exi= t 1; \ > - if test ! -z "$(TARGET_OBJ2ELF)"; then $(TARGET_OBJ2ELF) $@ || (rm = -f $@; exit 1); fi; \ > + $(TARGET_CC) -m64 $(EFIEMU64_LINK_FORMAT) -nostdlib -Wl,-r -o $@ $^= || exit 1; \ > fi > =20 > platform_DATA +=3D efiemu32.o efiemu64.o >=20 ------enig2IRAXSSTDRAAHSEVSGADB Content-Type: application/pgp-signature; name="signature.asc" Content-Description: OpenPGP digital signature Content-Disposition: attachment; filename="signature.asc" -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.15 (GNU/Linux) Comment: Using GnuPG with Icedove - http://www.enigmail.net/ iF4EAREKAAYFAlKTlJQACgkQmBXlbbo5nOtOawD/bXztQVs/Fjh31iDiJeRQUUdX B/4VL/5b18JfGqhPme8A/R+5Fd8xUcvnVSl1Qdtpx4QJX1dMPTdsnKmKdyCpocoo =bUns -----END PGP SIGNATURE----- ------enig2IRAXSSTDRAAHSEVSGADB--