diff mbox

configure: Deal with OpenBSD/i386 emulation linker

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

Commit Message

Brad Smith Nov. 6, 2017, 12:53 a.m. UTC
OpenBSD/i386 uses elf_i386_obsd for the emulation linker.

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

Comments

Peter Maydell Nov. 6, 2017, 11:37 a.m. UTC | #1
On 6 November 2017 at 00:53, 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..02799d38ac 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 uses 'elf_i386'; FreeBSD uses the _fbsd variant;
> +    # OpenBSD 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"

My OpenBSD/x86-64's ld supports both "elf_i386" and "elf_i386_obsd" --
which should we be using in this case? With your change we'll
still prefer elf_i386 if the linker handles both.

Do you know what the difference between the two is?

thanks
-- PMM
Brad Smith Nov. 7, 2017, 11:51 p.m. UTC | #2
On Mon, Nov 06, 2017 at 11:37:45AM +0000, Peter Maydell wrote:
> On 6 November 2017 at 00:53, 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..02799d38ac 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 uses 'elf_i386'; FreeBSD uses the _fbsd variant;
> > +    # OpenBSD 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"
> 
> My OpenBSD/x86-64's ld supports both "elf_i386" and "elf_i386_obsd" --
> which should we be using in this case? With your change we'll
> still prefer elf_i386 if the linker handles both.

I sent a second rev of the diff with slightly tweaked comment.

OpenBSD/amd64 uses elf_i386. OpenBSD/i386 uses elf_i386_obsd.

> Do you know what the difference between the two is?

No.
Peter Maydell Nov. 9, 2017, 11:03 a.m. UTC | #3
On 7 November 2017 at 23:51, Brad Smith <brad@comstyle.com> wrote:
> On Mon, Nov 06, 2017 at 11:37:45AM +0000, Peter Maydell wrote:
>> On 6 November 2017 at 00:53, 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..02799d38ac 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 uses 'elf_i386'; FreeBSD uses the _fbsd variant;
>> > +    # OpenBSD 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"
>>
>> My OpenBSD/x86-64's ld supports both "elf_i386" and "elf_i386_obsd" --
>> which should we be using in this case? With your change we'll
>> still prefer elf_i386 if the linker handles both.
>
> I sent a second rev of the diff with slightly tweaked comment.
>
> OpenBSD/amd64 uses elf_i386. OpenBSD/i386 uses elf_i386_obsd.
>
>> Do you know what the difference between the two is?
>
> No.

...then how do we know that elf_i386 is the right one to use
for 32-bit linking when checking on an OpenBSD/amd64 system?

thanks
-- PMM
diff mbox

Patch

diff --git a/configure b/configure
index dd73cce62f..02799d38ac 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 uses 'elf_i386'; FreeBSD uses the _fbsd variant;
+    # OpenBSD 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"