* Re: [Qemu-devel] [PATCH for-2.7] pc-bios/optionrom: Fix OpenBSD build with better detection of linker emulation
2016-08-08 16:11 [Qemu-devel] [PATCH for-2.7] pc-bios/optionrom: Fix OpenBSD build with better detection of linker emulation Peter Maydell
@ 2016-08-08 17:12 ` Peter Maydell
2016-08-09 13:12 ` Paolo Bonzini
2016-08-08 18:05 ` Sean Bruno
` (3 subsequent siblings)
4 siblings, 1 reply; 10+ messages in thread
From: Peter Maydell @ 2016-08-08 17:12 UTC (permalink / raw)
To: QEMU Developers; +Cc: Paolo Bonzini, Sean Bruno, Brad Smith, Patch Tracking
On 8 August 2016 at 17:11, Peter Maydell <peter.maydell@linaro.org> wrote:
> The various host OSes are irritatingly variable about the name
> of the linker emulation we need to pass to ld's -m option to
> build the i386 option ROMs. Instead of doing this via a
> CONFIG ifdef, check in configure whether any of the emulation
> names we know about will work and pass the right answer through
> to the makefile. If we can't find one, we fall back to not trying
> to build the option ROMs, in the same way we would for a non-x86
> host platform.
>
> This is in particular necessary to unbreak the build on OpenBSD,
> since it wants a different answer to FreeBSD and we don't have
> an existing CONFIG_ variable that distinguishes the two.
>
> Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
> ---
> This works for Linux and for the Windows builds; I don't have any
> BSD systems to test it on. Brad and Sean, can I ask you to test this
> on OpenBSD and FreeBSD, please?
>
> (I think this is going to miss -rc2. Sorry about that; we'll
> get OpenBSD builds fixed for -rc3.)
PS: if you would like your BSD flavour promoted to "we don't
merge changes that break the build on it" I would need to
have ssh access to a machine I can run builds and tests on.
(Unfortunately the only BSD in the gcc compile farm is an
ancient NetBSD.)
thanks
-- PMM
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [Qemu-devel] [PATCH for-2.7] pc-bios/optionrom: Fix OpenBSD build with better detection of linker emulation
2016-08-08 17:12 ` Peter Maydell
@ 2016-08-09 13:12 ` Paolo Bonzini
2016-08-09 13:15 ` Peter Maydell
0 siblings, 1 reply; 10+ messages in thread
From: Paolo Bonzini @ 2016-08-09 13:12 UTC (permalink / raw)
To: Peter Maydell, QEMU Developers; +Cc: Sean Bruno, Brad Smith, Patch Tracking
On 08/08/2016 19:12, Peter Maydell wrote:
> PS: if you would like your BSD flavour promoted to "we don't
> merge changes that break the build on it" I would need to
> have ssh access to a machine I can run builds and tests on.
> (Unfortunately the only BSD in the gcc compile farm is an
> ancient NetBSD.)
For the purpose of "not breaking the build", having a docker image for a
cross compiler would also be enough.
Paolo
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [Qemu-devel] [PATCH for-2.7] pc-bios/optionrom: Fix OpenBSD build with better detection of linker emulation
2016-08-09 13:12 ` Paolo Bonzini
@ 2016-08-09 13:15 ` Peter Maydell
0 siblings, 0 replies; 10+ messages in thread
From: Peter Maydell @ 2016-08-09 13:15 UTC (permalink / raw)
To: Paolo Bonzini; +Cc: QEMU Developers, Sean Bruno, Brad Smith, Patch Tracking
On 9 August 2016 at 14:12, Paolo Bonzini <pbonzini@redhat.com> wrote:
> On 08/08/2016 19:12, Peter Maydell wrote:
>> PS: if you would like your BSD flavour promoted to "we don't
>> merge changes that break the build on it" I would need to
>> have ssh access to a machine I can run builds and tests on.
>> (Unfortunately the only BSD in the gcc compile farm is an
>> ancient NetBSD.)
>
> For the purpose of "not breaking the build", having a docker image for a
> cross compiler would also be enough.
My requirement here is largely that I personally don't have
to expend any effort on admining and maintaining BSD related
build setups. I also think that setups that let you run "make
check" are much more valuable than cross-compile setups that
don't.
thanks
-- PMM
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [Qemu-devel] [PATCH for-2.7] pc-bios/optionrom: Fix OpenBSD build with better detection of linker emulation
2016-08-08 16:11 [Qemu-devel] [PATCH for-2.7] pc-bios/optionrom: Fix OpenBSD build with better detection of linker emulation Peter Maydell
2016-08-08 17:12 ` Peter Maydell
@ 2016-08-08 18:05 ` Sean Bruno
2016-08-10 23:42 ` Brad Smith
` (2 subsequent siblings)
4 siblings, 0 replies; 10+ messages in thread
From: Sean Bruno @ 2016-08-08 18:05 UTC (permalink / raw)
To: Peter Maydell, qemu-devel; +Cc: Paolo Bonzini, Brad Smith, patches
[-- Attachment #1: Type: text/plain, Size: 3610 bytes --]
On 08/08/16 10:11, Peter Maydell wrote:
> The various host OSes are irritatingly variable about the name
> of the linker emulation we need to pass to ld's -m option to
> build the i386 option ROMs. Instead of doing this via a
> CONFIG ifdef, check in configure whether any of the emulation
> names we know about will work and pass the right answer through
> to the makefile. If we can't find one, we fall back to not trying
> to build the option ROMs, in the same way we would for a non-x86
> host platform.
>
> This is in particular necessary to unbreak the build on OpenBSD,
> since it wants a different answer to FreeBSD and we don't have
> an existing CONFIG_ variable that distinguishes the two.
>
Reviewed-by: Sean Bruno <sbruno@freebsd.org>
For impact to FreeBSD only.
> Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
> ---
> This works for Linux and for the Windows builds; I don't have any
> BSD systems to test it on. Brad and Sean, can I ask you to test this
> on OpenBSD and FreeBSD, please?
>
> (I think this is going to miss -rc2. Sorry about that; we'll
> get OpenBSD builds fixed for -rc3.)
>
> configure | 12 +++++++++++-
> pc-bios/optionrom/Makefile | 12 +-----------
> 2 files changed, 12 insertions(+), 12 deletions(-)
>
> diff --git a/configure b/configure
> index f57fcc6..7c744ad 100755
> --- a/configure
> +++ b/configure
> @@ -4699,7 +4699,16 @@ roms=
> if test \( "$cpu" = "i386" -o "$cpu" = "x86_64" \) -a \
> "$targetos" != "Darwin" -a "$targetos" != "SunOS" -a \
> "$softmmu" = yes ; then
> - roms="optionrom"
> + # Different host OS linkers have different ideas about the name of the ELF
> + # emulation. Linux and OpenBSD use 'elf_i386'; FreeBSD uses the _fbsd
> + # variant; and Windows uses i386pe.
> + for emu in elf_i386 elf_i386_fbsd i386pe; do
> + if "$ld" -verbose 2>&1 | grep -q "^[[:space:]]*$emu[[:space:]]*$"; then
> + ld_i386_emulation="$emu"
> + roms="optionrom"
> + break
> + fi
> + done
> fi
> if test "$cpu" = "ppc64" -a "$targetos" != "Darwin" ; then
> roms="$roms spapr-rtas"
> @@ -5539,6 +5548,7 @@ fi
> echo "LDFLAGS=$LDFLAGS" >> $config_host_mak
> echo "LDFLAGS_NOPIE=$LDFLAGS_NOPIE" >> $config_host_mak
> echo "LD_REL_FLAGS=$LD_REL_FLAGS" >> $config_host_mak
> +echo "LD_I386_EMULATION=$ld_i386_emulation" >> $config_host_mak
> echo "LIBS+=$LIBS" >> $config_host_mak
> echo "LIBS_TOOLS+=$libs_tools" >> $config_host_mak
> echo "PTHREAD_LIB=$PTHREAD_LIB" >> $config_host_mak
> diff --git a/pc-bios/optionrom/Makefile b/pc-bios/optionrom/Makefile
> index 24e175e..5bbe233 100644
> --- a/pc-bios/optionrom/Makefile
> +++ b/pc-bios/optionrom/Makefile
> @@ -41,18 +41,8 @@ build-all: multiboot.bin linuxboot.bin linuxboot_dma.bin kvmvapic.bin
> %.o: %.S
> $(call quiet-command,$(CPP) $(QEMU_INCLUDES) $(QEMU_DGFLAGS) -c -o - $< | $(AS) $(ASFLAGS) -o $@," AS $(TARGET_DIR)$@")
>
> -ifdef CONFIG_WIN32
> -LD_EMULATION = i386pe
> -else
> -ifdef CONFIG_BSD
> -LD_EMULATION = elf_i386_fbsd
> -else
> -LD_EMULATION = elf_i386
> -endif
> -endif
> -
> %.img: %.o
> - $(call quiet-command,$(LD) $(LDFLAGS_NOPIE) -m $(LD_EMULATION) -Ttext 0 -e _start -s -o $@ $<," Building $(TARGET_DIR)$@")
> + $(call quiet-command,$(LD) $(LDFLAGS_NOPIE) -m $(LD_I386_EMULATION) -Ttext 0 -e _start -s -o $@ $<," Building $(TARGET_DIR)$@")
>
> %.raw: %.img
> $(call quiet-command,$(OBJCOPY) -O binary -j .text $< $@," Building $(TARGET_DIR)$@")
>
[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 603 bytes --]
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [Qemu-devel] [PATCH for-2.7] pc-bios/optionrom: Fix OpenBSD build with better detection of linker emulation
2016-08-08 16:11 [Qemu-devel] [PATCH for-2.7] pc-bios/optionrom: Fix OpenBSD build with better detection of linker emulation Peter Maydell
2016-08-08 17:12 ` Peter Maydell
2016-08-08 18:05 ` Sean Bruno
@ 2016-08-10 23:42 ` Brad Smith
2016-08-11 9:24 ` Peter Maydell
2016-08-11 0:28 ` Brad Smith
2016-08-15 17:26 ` Peter Maydell
4 siblings, 1 reply; 10+ messages in thread
From: Brad Smith @ 2016-08-10 23:42 UTC (permalink / raw)
To: Peter Maydell, qemu-devel; +Cc: Paolo Bonzini, Sean Bruno, patches
On 08/08/16 12:11, Peter Maydell wrote:
> The various host OSes are irritatingly variable about the name
> of the linker emulation we need to pass to ld's -m option to
> build the i386 option ROMs. Instead of doing this via a
> CONFIG ifdef, check in configure whether any of the emulation
> names we know about will work and pass the right answer through
> to the makefile. If we can't find one, we fall back to not trying
> to build the option ROMs, in the same way we would for a non-x86
> host platform.
>
> This is in particular necessary to unbreak the build on OpenBSD,
> since it wants a different answer to FreeBSD and we don't have
> an existing CONFIG_ variable that distinguishes the two.
To add to this.. amd64 uses "elf_i386". Looking at i386 it uses
elf_i386_obsd and that is the only emulation supported.
So change the list of emulations to try to
elf_i386 elf_i386_fbsd elf_i386_obsd i386pe
Someone needs to take a look at what NetBSD / DragonFly are
using.
> Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
> ---
> This works for Linux and for the Windows builds; I don't have any
> BSD systems to test it on. Brad and Sean, can I ask you to test this
> on OpenBSD and FreeBSD, please?
>
> (I think this is going to miss -rc2. Sorry about that; we'll
> get OpenBSD builds fixed for -rc3.)
>
> configure | 12 +++++++++++-
> pc-bios/optionrom/Makefile | 12 +-----------
> 2 files changed, 12 insertions(+), 12 deletions(-)
>
> diff --git a/configure b/configure
> index f57fcc6..7c744ad 100755
> --- a/configure
> +++ b/configure
> @@ -4699,7 +4699,16 @@ roms=
> if test \( "$cpu" = "i386" -o "$cpu" = "x86_64" \) -a \
> "$targetos" != "Darwin" -a "$targetos" != "SunOS" -a \
> "$softmmu" = yes ; then
> - roms="optionrom"
> + # Different host OS linkers have different ideas about the name of the ELF
> + # emulation. Linux and OpenBSD use 'elf_i386'; FreeBSD uses the _fbsd
> + # variant; and Windows uses i386pe.
> + for emu in elf_i386 elf_i386_fbsd i386pe; do
> + if "$ld" -verbose 2>&1 | grep -q "^[[:space:]]*$emu[[:space:]]*$"; then
> + ld_i386_emulation="$emu"
> + roms="optionrom"
> + break
> + fi
> + done
> fi
> if test "$cpu" = "ppc64" -a "$targetos" != "Darwin" ; then
> roms="$roms spapr-rtas"
> @@ -5539,6 +5548,7 @@ fi
> echo "LDFLAGS=$LDFLAGS" >> $config_host_mak
> echo "LDFLAGS_NOPIE=$LDFLAGS_NOPIE" >> $config_host_mak
> echo "LD_REL_FLAGS=$LD_REL_FLAGS" >> $config_host_mak
> +echo "LD_I386_EMULATION=$ld_i386_emulation" >> $config_host_mak
> echo "LIBS+=$LIBS" >> $config_host_mak
> echo "LIBS_TOOLS+=$libs_tools" >> $config_host_mak
> echo "PTHREAD_LIB=$PTHREAD_LIB" >> $config_host_mak
> diff --git a/pc-bios/optionrom/Makefile b/pc-bios/optionrom/Makefile
> index 24e175e..5bbe233 100644
> --- a/pc-bios/optionrom/Makefile
> +++ b/pc-bios/optionrom/Makefile
> @@ -41,18 +41,8 @@ build-all: multiboot.bin linuxboot.bin linuxboot_dma.bin kvmvapic.bin
> %.o: %.S
> $(call quiet-command,$(CPP) $(QEMU_INCLUDES) $(QEMU_DGFLAGS) -c -o - $< | $(AS) $(ASFLAGS) -o $@," AS $(TARGET_DIR)$@")
>
> -ifdef CONFIG_WIN32
> -LD_EMULATION = i386pe
> -else
> -ifdef CONFIG_BSD
> -LD_EMULATION = elf_i386_fbsd
> -else
> -LD_EMULATION = elf_i386
> -endif
> -endif
> -
> %.img: %.o
> - $(call quiet-command,$(LD) $(LDFLAGS_NOPIE) -m $(LD_EMULATION) -Ttext 0 -e _start -s -o $@ $<," Building $(TARGET_DIR)$@")
> + $(call quiet-command,$(LD) $(LDFLAGS_NOPIE) -m $(LD_I386_EMULATION) -Ttext 0 -e _start -s -o $@ $<," Building $(TARGET_DIR)$@")
>
> %.raw: %.img
> $(call quiet-command,$(OBJCOPY) -O binary -j .text $< $@," Building $(TARGET_DIR)$@")
>
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [Qemu-devel] [PATCH for-2.7] pc-bios/optionrom: Fix OpenBSD build with better detection of linker emulation
2016-08-10 23:42 ` Brad Smith
@ 2016-08-11 9:24 ` Peter Maydell
0 siblings, 0 replies; 10+ messages in thread
From: Peter Maydell @ 2016-08-11 9:24 UTC (permalink / raw)
To: Brad Smith; +Cc: QEMU Developers, Paolo Bonzini, Sean Bruno, Patch Tracking
On 11 August 2016 at 00:42, Brad Smith <brad@comstyle.com> wrote:
> On 08/08/16 12:11, Peter Maydell wrote:
>>
>> The various host OSes are irritatingly variable about the name
>> of the linker emulation we need to pass to ld's -m option to
>> build the i386 option ROMs. Instead of doing this via a
>> CONFIG ifdef, check in configure whether any of the emulation
>> names we know about will work and pass the right answer through
>> to the makefile. If we can't find one, we fall back to not trying
>> to build the option ROMs, in the same way we would for a non-x86
>> host platform.
>>
>> This is in particular necessary to unbreak the build on OpenBSD,
>> since it wants a different answer to FreeBSD and we don't have
>> an existing CONFIG_ variable that distinguishes the two.
>
>
> To add to this.. amd64 uses "elf_i386". Looking at i386 it uses
> elf_i386_obsd and that is the only emulation supported.
>
> So change the list of emulations to try to
>
> elf_i386 elf_i386_fbsd elf_i386_obsd i386pe
>
>
> Someone needs to take a look at what NetBSD / DragonFly are
> using.
My NetBSD 6.1.4 amd64 VM uses elf_i386. Building should
still work on an OS which doesn't support an emulation
in the list in configure -- we'll just fall back to
not building the option ROMs, which is the same position
any non-x86 host architecture is in.
thanks
-- PMM
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [Qemu-devel] [PATCH for-2.7] pc-bios/optionrom: Fix OpenBSD build with better detection of linker emulation
2016-08-08 16:11 [Qemu-devel] [PATCH for-2.7] pc-bios/optionrom: Fix OpenBSD build with better detection of linker emulation Peter Maydell
` (2 preceding siblings ...)
2016-08-10 23:42 ` Brad Smith
@ 2016-08-11 0:28 ` Brad Smith
2016-08-15 17:26 ` Peter Maydell
4 siblings, 0 replies; 10+ messages in thread
From: Brad Smith @ 2016-08-11 0:28 UTC (permalink / raw)
To: Peter Maydell, qemu-devel; +Cc: Paolo Bonzini, Sean Bruno, patches
On 08/08/16 12:11, Peter Maydell wrote:
> The various host OSes are irritatingly variable about the name
> of the linker emulation we need to pass to ld's -m option to
> build the i386 option ROMs. Instead of doing this via a
> CONFIG ifdef, check in configure whether any of the emulation
> names we know about will work and pass the right answer through
> to the makefile. If we can't find one, we fall back to not trying
> to build the option ROMs, in the same way we would for a non-x86
> host platform.
>
> This is in particular necessary to unbreak the build on OpenBSD,
> since it wants a different answer to FreeBSD and we don't have
> an existing CONFIG_ variable that distinguishes the two.
>
> Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
> ---
> This works for Linux and for the Windows builds; I don't have any
> BSD systems to test it on. Brad and Sean, can I ask you to test this
> on OpenBSD and FreeBSD, please?
>
> (I think this is going to miss -rc2. Sorry about that; we'll
> get OpenBSD builds fixed for -rc3.)
Tested on OpenBSD/amd64 and it builds. Need to get my i386 VM going
and test on i386.
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [Qemu-devel] [PATCH for-2.7] pc-bios/optionrom: Fix OpenBSD build with better detection of linker emulation
2016-08-08 16:11 [Qemu-devel] [PATCH for-2.7] pc-bios/optionrom: Fix OpenBSD build with better detection of linker emulation Peter Maydell
` (3 preceding siblings ...)
2016-08-11 0:28 ` Brad Smith
@ 2016-08-15 17:26 ` Peter Maydell
2016-08-15 18:52 ` Brad Smith
4 siblings, 1 reply; 10+ messages in thread
From: Peter Maydell @ 2016-08-15 17:26 UTC (permalink / raw)
To: QEMU Developers; +Cc: Paolo Bonzini, Sean Bruno, Brad Smith, Patch Tracking
On 8 August 2016 at 17:11, Peter Maydell <peter.maydell@linaro.org> wrote:
> The various host OSes are irritatingly variable about the name
> of the linker emulation we need to pass to ld's -m option to
> build the i386 option ROMs. Instead of doing this via a
> CONFIG ifdef, check in configure whether any of the emulation
> names we know about will work and pass the right answer through
> to the makefile. If we can't find one, we fall back to not trying
> to build the option ROMs, in the same way we would for a non-x86
> host platform.
>
> This is in particular necessary to unbreak the build on OpenBSD,
> since it wants a different answer to FreeBSD and we don't have
> an existing CONFIG_ variable that distinguishes the two.
>
> Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
> ---
> This works for Linux and for the Windows builds; I don't have any
> BSD systems to test it on. Brad and Sean, can I ask you to test this
> on OpenBSD and FreeBSD, please?
>
> (I think this is going to miss -rc2. Sorry about that; we'll
> get OpenBSD builds fixed for -rc3.)
Applied to master (as-is, in the absence of a build check for
i386 OpenBSD; we can always add the elf_i386_obsd entry to the
list as a later patch, and if not then i386 is no worse off
than other non-x86-64 OpenBSD hosts: it just won't build the
option roms from source).
thanks
-- PMM
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [Qemu-devel] [PATCH for-2.7] pc-bios/optionrom: Fix OpenBSD build with better detection of linker emulation
2016-08-15 17:26 ` Peter Maydell
@ 2016-08-15 18:52 ` Brad Smith
0 siblings, 0 replies; 10+ messages in thread
From: Brad Smith @ 2016-08-15 18:52 UTC (permalink / raw)
To: Peter Maydell, QEMU Developers; +Cc: Paolo Bonzini, Sean Bruno, Patch Tracking
On 8/15/2016 1:26 PM, Peter Maydell wrote:
> On 8 August 2016 at 17:11, Peter Maydell <peter.maydell@linaro.org> wrote:
>> The various host OSes are irritatingly variable about the name
>> of the linker emulation we need to pass to ld's -m option to
>> build the i386 option ROMs. Instead of doing this via a
>> CONFIG ifdef, check in configure whether any of the emulation
>> names we know about will work and pass the right answer through
>> to the makefile. If we can't find one, we fall back to not trying
>> to build the option ROMs, in the same way we would for a non-x86
>> host platform.
>>
>> This is in particular necessary to unbreak the build on OpenBSD,
>> since it wants a different answer to FreeBSD and we don't have
>> an existing CONFIG_ variable that distinguishes the two.
>>
>> Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
>> ---
>> This works for Linux and for the Windows builds; I don't have any
>> BSD systems to test it on. Brad and Sean, can I ask you to test this
>> on OpenBSD and FreeBSD, please?
>>
>> (I think this is going to miss -rc2. Sorry about that; we'll
>> get OpenBSD builds fixed for -rc3.)
> Applied to master (as-is, in the absence of a build check for
> i386 OpenBSD; we can always add the elf_i386_obsd entry to the
> list as a later patch, and if not then i386 is no worse off
> than other non-x86-64 OpenBSD hosts: it just won't build the
> option roms from source).
>
> thanks
> -- PMM
I am fine with that. Thank you.
^ permalink raw reply [flat|nested] 10+ messages in thread