diff mbox series

build: -no-pie is no functional linker flag

Message ID 20201214150938.1297512-1-christian.ehrhardt@canonical.com (mailing list archive)
State New, archived
Headers show
Series build: -no-pie is no functional linker flag | expand

Commit Message

Christian Ehrhardt Dec. 14, 2020, 3:09 p.m. UTC
Recent binutils changes dropping unsupported options [1] caused a build
issue in regard to the optionroms.

  ld -m elf_i386 -T /<<PKGBUILDDIR>>/pc-bios/optionrom//flat.lds -no-pie \
    -s -o multiboot.img multiboot.o
  ld.bfd: Error: unable to disambiguate: -no-pie (did you mean --no-pie ?)

This isn't really a regression in ld.bfd, filing the bug upstream
revealed that this never worked as a ld flag [2] - in fact it seems we
were by accident setting --nmagic).

Since it never had the wanted effect this usage of LDFLAGS_NOPIE, should be
droppable without any effect. This also is the only use-case of LDFLAGS_NOPIE
in .mak, therefore we can also remove it from being added there.

[1]: https://sourceware.org/git/?p=binutils-gdb.git;a=commit;h=983d925d
[2]: https://sourceware.org/bugzilla/show_bug.cgi?id=27050#c5

Signed-off-by: Christian Ehrhardt <christian.ehrhardt@canonical.com>
---
 configure                  | 3 ---
 pc-bios/optionrom/Makefile | 1 -
 2 files changed, 4 deletions(-)

Comments

Paolo Bonzini Dec. 14, 2020, 4:28 p.m. UTC | #1
On 14/12/20 16:09, Christian Ehrhardt wrote:
> Recent binutils changes dropping unsupported options [1] caused a build
> issue in regard to the optionroms.
> 
>    ld -m elf_i386 -T /<<PKGBUILDDIR>>/pc-bios/optionrom//flat.lds -no-pie \
>      -s -o multiboot.img multiboot.o
>    ld.bfd: Error: unable to disambiguate: -no-pie (did you mean --no-pie ?)
> 
> This isn't really a regression in ld.bfd, filing the bug upstream
> revealed that this never worked as a ld flag [2] - in fact it seems we
> were by accident setting --nmagic).
> 
> Since it never had the wanted effect this usage of LDFLAGS_NOPIE, should be
> droppable without any effect. This also is the only use-case of LDFLAGS_NOPIE
> in .mak, therefore we can also remove it from being added there.
> 
> [1]: https://sourceware.org/git/?p=binutils-gdb.git;a=commit;h=983d925d
> [2]: https://sourceware.org/bugzilla/show_bug.cgi?id=27050#c5
> 
> Signed-off-by: Christian Ehrhardt <christian.ehrhardt@canonical.com>

-no-pie (not -fno-pie!) _can_ be passed to gcc when it is used to drive 
the linker.  But indeed since the only use is in an "ld" invocation, the 
patch is okay.  Thanks!

Paolo

> ---
>   configure                  | 3 ---
>   pc-bios/optionrom/Makefile | 1 -
>   2 files changed, 4 deletions(-)
> 
> diff --git a/configure b/configure
> index 3f823ed163..61c17c2dde 100755
> --- a/configure
> +++ b/configure
> @@ -2133,7 +2133,6 @@ EOF
>   # Check we support --no-pie first; we will need this for building ROMs.
>   if compile_prog "-Werror -fno-pie" "-no-pie"; then
>     CFLAGS_NOPIE="-fno-pie"
> -  LDFLAGS_NOPIE="-no-pie"
>   fi
>   
>   if test "$static" = "yes"; then
> @@ -2149,7 +2148,6 @@ if test "$static" = "yes"; then
>     fi
>   elif test "$pie" = "no"; then
>     CONFIGURE_CFLAGS="$CFLAGS_NOPIE $CONFIGURE_CFLAGS"
> -  CONFIGURE_LDFLAGS="$LDFLAGS_NOPIE $CONFIGURE_LDFLAGS"
>   elif compile_prog "-Werror -fPIE -DPIE" "-pie"; then
>     CONFIGURE_CFLAGS="-fPIE -DPIE $CONFIGURE_CFLAGS"
>     CONFIGURE_LDFLAGS="-pie $CONFIGURE_LDFLAGS"
> @@ -6768,7 +6766,6 @@ echo "QEMU_CXXFLAGS=$QEMU_CXXFLAGS" >> $config_host_mak
>   echo "GLIB_CFLAGS=$glib_cflags" >> $config_host_mak
>   echo "GLIB_LIBS=$glib_libs" >> $config_host_mak
>   echo "QEMU_LDFLAGS=$QEMU_LDFLAGS" >> $config_host_mak
> -echo "LDFLAGS_NOPIE=$LDFLAGS_NOPIE" >> $config_host_mak
>   echo "LD_I386_EMULATION=$ld_i386_emulation" >> $config_host_mak
>   echo "EXESUF=$EXESUF" >> $config_host_mak
>   echo "HOST_DSOSUF=$HOST_DSOSUF" >> $config_host_mak
> diff --git a/pc-bios/optionrom/Makefile b/pc-bios/optionrom/Makefile
> index 084fc10f05..30771f8d17 100644
> --- a/pc-bios/optionrom/Makefile
> +++ b/pc-bios/optionrom/Makefile
> @@ -41,7 +41,6 @@ override CFLAGS += $(call cc-option, $(Wa)-32)
>   
>   LD_I386_EMULATION ?= elf_i386
>   override LDFLAGS = -m $(LD_I386_EMULATION) -T $(SRC_DIR)/flat.lds
> -override LDFLAGS += $(LDFLAGS_NOPIE)
>   
>   all: multiboot.bin linuxboot.bin linuxboot_dma.bin kvmvapic.bin pvh.bin
>   
>
diff mbox series

Patch

diff --git a/configure b/configure
index 3f823ed163..61c17c2dde 100755
--- a/configure
+++ b/configure
@@ -2133,7 +2133,6 @@  EOF
 # Check we support --no-pie first; we will need this for building ROMs.
 if compile_prog "-Werror -fno-pie" "-no-pie"; then
   CFLAGS_NOPIE="-fno-pie"
-  LDFLAGS_NOPIE="-no-pie"
 fi
 
 if test "$static" = "yes"; then
@@ -2149,7 +2148,6 @@  if test "$static" = "yes"; then
   fi
 elif test "$pie" = "no"; then
   CONFIGURE_CFLAGS="$CFLAGS_NOPIE $CONFIGURE_CFLAGS"
-  CONFIGURE_LDFLAGS="$LDFLAGS_NOPIE $CONFIGURE_LDFLAGS"
 elif compile_prog "-Werror -fPIE -DPIE" "-pie"; then
   CONFIGURE_CFLAGS="-fPIE -DPIE $CONFIGURE_CFLAGS"
   CONFIGURE_LDFLAGS="-pie $CONFIGURE_LDFLAGS"
@@ -6768,7 +6766,6 @@  echo "QEMU_CXXFLAGS=$QEMU_CXXFLAGS" >> $config_host_mak
 echo "GLIB_CFLAGS=$glib_cflags" >> $config_host_mak
 echo "GLIB_LIBS=$glib_libs" >> $config_host_mak
 echo "QEMU_LDFLAGS=$QEMU_LDFLAGS" >> $config_host_mak
-echo "LDFLAGS_NOPIE=$LDFLAGS_NOPIE" >> $config_host_mak
 echo "LD_I386_EMULATION=$ld_i386_emulation" >> $config_host_mak
 echo "EXESUF=$EXESUF" >> $config_host_mak
 echo "HOST_DSOSUF=$HOST_DSOSUF" >> $config_host_mak
diff --git a/pc-bios/optionrom/Makefile b/pc-bios/optionrom/Makefile
index 084fc10f05..30771f8d17 100644
--- a/pc-bios/optionrom/Makefile
+++ b/pc-bios/optionrom/Makefile
@@ -41,7 +41,6 @@  override CFLAGS += $(call cc-option, $(Wa)-32)
 
 LD_I386_EMULATION ?= elf_i386
 override LDFLAGS = -m $(LD_I386_EMULATION) -T $(SRC_DIR)/flat.lds
-override LDFLAGS += $(LDFLAGS_NOPIE)
 
 all: multiboot.bin linuxboot.bin linuxboot_dma.bin kvmvapic.bin pvh.bin