diff mbox

[v2] configure: Deal with OpenBSD/i386 emulation linker

Message ID 20171107234608.GA395@humpty.home.comstyle.com (mailing list archive)
State New, archived
Headers show

Commit Message

Brad Smith Nov. 7, 2017, 11:46 p.m. UTC
OpenBSD/i386 uses elf_i386_obsd for the emulation linker.

Signed-off-by: Brad Smith <brad@comstyle.com>

Comments

Peter Maydell Nov. 20, 2017, 1:46 p.m. UTC | #1
On 7 November 2017 at 23:46, Brad Smith <brad@comstyle.com> wrote:
> OpenBSD/i386 uses elf_i386_obsd for the emulation linker.
>
> Signed-off-by: Brad Smith <brad@comstyle.com>
>
>
> diff --git a/configure b/configure
> index dd73cce62f..c9dd747283 100755
> --- a/configure
> +++ b/configure
> @@ -5159,9 +5159,9 @@ if test \( "$cpu" = "i386" -o "$cpu" = "x86_64" \) -a \
>          "$targetos" != "Darwin" -a "$targetos" != "SunOS" -a \
>          "$softmmu" = yes ; then
>      # 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
> +    # emulation. Linux and OpenBSD/amd64 use 'elf_i386'; FreeBSD uses the _fbsd
> +    # variant; OpenBSD/i386 uses the _obsd variant; and Windows uses i386pe.
> +    for emu in elf_i386 elf_i386_fbsd elf_i386_obsd i386pe; do
>          if "$ld" -verbose 2>&1 | grep -q "^[[:space:]]*$emu[[:space:]]*$"; then
>              ld_i386_emulation="$emu"
>              roms="optionrom"

Hi; just a reminder that this patch is still blocked on getting
an answer to why the correct answer for OpenBSD/x86_64 is
"elf_i386" and not "elf_i386_obsd"...

thanks
-- PMM
Peter Maydell Nov. 23, 2017, 6:48 p.m. UTC | #2
On 20 November 2017 at 13:46, Peter Maydell <peter.maydell@linaro.org> wrote:
> On 7 November 2017 at 23:46, Brad Smith <brad@comstyle.com> wrote:
>> OpenBSD/i386 uses elf_i386_obsd for the emulation linker.
>>
>> Signed-off-by: Brad Smith <brad@comstyle.com>
>>
>>
>> diff --git a/configure b/configure
>> index dd73cce62f..c9dd747283 100755
>> --- a/configure
>> +++ b/configure
>> @@ -5159,9 +5159,9 @@ if test \( "$cpu" = "i386" -o "$cpu" = "x86_64" \) -a \
>>          "$targetos" != "Darwin" -a "$targetos" != "SunOS" -a \
>>          "$softmmu" = yes ; then
>>      # 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
>> +    # emulation. Linux and OpenBSD/amd64 use 'elf_i386'; FreeBSD uses the _fbsd
>> +    # variant; OpenBSD/i386 uses the _obsd variant; and Windows uses i386pe.
>> +    for emu in elf_i386 elf_i386_fbsd elf_i386_obsd i386pe; do
>>          if "$ld" -verbose 2>&1 | grep -q "^[[:space:]]*$emu[[:space:]]*$"; then
>>              ld_i386_emulation="$emu"
>>              roms="optionrom"
>
> Hi; just a reminder that this patch is still blocked on getting
> an answer to why the correct answer for OpenBSD/x86_64 is
> "elf_i386" and not "elf_i386_obsd"...

I went and looked through the binutils source, and as far as
I can tell the _obsd variant sets some extra defaults which
we probably don't care about for ROM images, and in practice
the binary blobs are the same for both if run on openbsd/x86_64.
So I think that the current behaviour (use elf_i386 in preference
to elf_i386_obsd) is the right thing, because the binaries we're
creating are not specifically openbsd binaries.

So I've applied this patch to master.

thanks
-- PMM
diff mbox

Patch

diff --git a/configure b/configure
index dd73cce62f..c9dd747283 100755
--- a/configure
+++ b/configure
@@ -5159,9 +5159,9 @@  if test \( "$cpu" = "i386" -o "$cpu" = "x86_64" \) -a \
         "$targetos" != "Darwin" -a "$targetos" != "SunOS" -a \
         "$softmmu" = yes ; then
     # 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
+    # emulation. Linux and OpenBSD/amd64 use 'elf_i386'; FreeBSD uses the _fbsd
+    # variant; OpenBSD/i386 uses the _obsd variant; and Windows uses i386pe.
+    for emu in elf_i386 elf_i386_fbsd elf_i386_obsd i386pe; do
         if "$ld" -verbose 2>&1 | grep -q "^[[:space:]]*$emu[[:space:]]*$"; then
             ld_i386_emulation="$emu"
             roms="optionrom"