From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:48910) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Vkgfv-0005N7-GY for qemu-devel@nongnu.org; Sun, 24 Nov 2013 15:53:05 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1Vkgfu-0001CC-6f for qemu-devel@nongnu.org; Sun, 24 Nov 2013 15:53:03 -0500 Received: from speedy.comstyle.com ([2001:470:1d:8c::2]:17131 helo=mail.comstyle.com) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Vkgfu-0001C7-2V for qemu-devel@nongnu.org; Sun, 24 Nov 2013 15:53:02 -0500 Received: from rox.home.comstyle.com (unknown [IPv6:2001:470:b01e:3:880:421:8a4e:ea07]) (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) (Authenticated sender: brad) by mail.comstyle.com (Postfix) with ESMTPSA id 78D1D94E10 for ; Sun, 24 Nov 2013 15:52:58 -0500 (EST) Date: Sun, 24 Nov 2013 15:52:56 -0500 From: Brad Smith Message-ID: <20131124205256.GA23884@rox.home.comstyle.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline Subject: [Qemu-devel] [PATCH for-1.7] Fix QEMU build on OpenBSD on x86 archs List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel@nongnu.org This resolves the build issue with building the ROMs on OpenBSD on x86 archs. As of OpenBSD 5.3 the compiler builds PIE binaries by default and thus the whole OS/packages and so forth. The ROMs need to have PIE disabled. This is my initial attempt at trying to get somehting upstream so that QEMU both builds out of the box and to resolve the build issue with the buildbots that has been around for awhile. We have a patch in our ports tree but it is just the flags hardcoded into the Makefile which obviously is not appropriate for upstream. >>From the OpenBSD buildbots.. Building optionrom/multiboot.img ld: multiboot.o: relocation R_X86_64_16 can not be used when making a shared object; recompile with -fPIC Signed-off by: Brad Smith diff --git a/configure b/configure index 508f6a5..7f060a4 100755 --- a/configure +++ b/configure @@ -1342,6 +1342,10 @@ EOF if compile_prog "-fPIE -DPIE" "-pie"; then QEMU_CFLAGS="-fPIE -DPIE $QEMU_CFLAGS" LDFLAGS="-pie $LDFLAGS" + if test "$targetos" == OpenBSD; then + CC_NOPIE="-fno-pie" + LD_NOPIE="-nopie" + fi pie="yes" if compile_prog "" "-Wl,-z,relro -Wl,-z,now" ; then LDFLAGS="-Wl,-z,relro -Wl,-z,now $LDFLAGS" @@ -4307,6 +4311,8 @@ if test "$gcov" = "yes" ; then echo "CONFIG_GCOV=y" >> $config_host_mak echo "GCOV=$gcov_tool" >> $config_host_mak fi +echo "CC_NOPIE=$CC_NOPIE" >> $config_host_mak +echo "LD_NOPIE=$LD_NOPIE" >> $config_host_mak # use included Linux headers if test "$linux" = "yes" ; then diff --git a/pc-bios/optionrom/Makefile b/pc-bios/optionrom/Makefile index 57d8bd0..0b35000 100644 --- a/pc-bios/optionrom/Makefile +++ b/pc-bios/optionrom/Makefile @@ -12,6 +12,7 @@ $(call set-vpath, $(SRC_PATH)/pc-bios/optionrom) CFLAGS := -Wall -Wstrict-prototypes -Werror -fomit-frame-pointer -fno-builtin CFLAGS += -I$(SRC_PATH) CFLAGS += $(call cc-option, $(CFLAGS), -fno-stack-protector) +CFLAGS += $(CC_NOPIE) QEMU_CFLAGS = $(CFLAGS) build-all: multiboot.bin linuxboot.bin kvmvapic.bin @@ -20,7 +21,7 @@ build-all: multiboot.bin linuxboot.bin kvmvapic.bin .SECONDARY: %.img: %.o - $(call quiet-command,$(LD) -Ttext 0 -e _start -s -o $@ $<," Building $(TARGET_DIR)$@") + $(call quiet-command,$(LD) $(LD_NOPIE) -Ttext 0 -e _start -s -o $@ $<," Building $(TARGET_DIR)$@") %.raw: %.img $(call quiet-command,$(OBJCOPY) -O binary -j .text $< $@," Building $(TARGET_DIR)$@") -- This message has been scanned for viruses and dangerous content by MailScanner, and is believed to be clean.