All of lore.kernel.org
 help / color / mirror / Atom feed
From: Paolo Bonzini <pbonzini@redhat.com>
To: Richard Henderson <richard.henderson@linaro.org>, qemu-devel@nongnu.org
Subject: Re: [PATCH 2/6] configure, pc-bios/optionrom: pass cross CFLAGS correctly
Date: Wed, 22 Jun 2022 11:31:04 +0200	[thread overview]
Message-ID: <dfff6cba-e490-830b-21e9-85a96795e1b2@redhat.com> (raw)
In-Reply-To: <d2a9550e-28dc-bbd1-098c-ea16a4a031d5@linaro.org>

On 6/21/22 16:55, Richard Henderson wrote:
> On 6/21/22 00:51, Paolo Bonzini wrote:
>> diff --git a/pc-bios/optionrom/Makefile b/pc-bios/optionrom/Makefile
>> index ea89ce9d59..e90ca2e1c6 100644
>> --- a/pc-bios/optionrom/Makefile
>> +++ b/pc-bios/optionrom/Makefile
>> @@ -11,7 +11,7 @@ CFLAGS = -O2 -g
>>   quiet-command = $(if $(V),$1,$(if $(2),@printf "  %-7s %s\n" $2 $3 
>> && $1, @$1))
>>   cc-option = $(if $(shell $(CC) $1 -c -o /dev/null -xc /dev/null 
>> >/dev/null 2>&1 && echo OK), $1, $2)
>> -override CFLAGS += -march=i486 -Wall -m16
>> +override CFLAGS += -march=i486 -Wall $(EXTRA_CFLAGS) -m16
> 
> Hmm.  I'm not sure about this.  Given that EXTRA_CFLAGS is going to be 
> e.g. -m32 or empty, being immediately overwritten to -m16, I don't quite 
> see the point.

I added it mostly for consistency with the other pc-bios subdirectories, 
and because it can also be overridden with --cross-cflags-i386 though.

Even for the default -m32, however, there would be a reason to have 
$(EXTRA_FLAGS) in there.  I have played with removing the direct use of 
"ld -m" in the build of pc-bios/optionrom, and stumbled on a weird GCC 
configuration issue.  The problem is that some hosts pick the right 
linker emulation when given -m16, but others don't:

$ gcc -dumpspecs
...
*link:
... %{m16|m32|mx32:;:-m elf_x86_64}  %{m16|m32:-m elf_i386}

# x86_64-w64-mingw32-gcc
...
*link:
%{!m32:-m i386pep} %{m32:-m i386pe} ...

The error is in GCC's gcc/config/i386/mingw-w64.h, which provides a 
MULTILIB_DEFAULTS #define but does not rely on it:

#undef SPEC_32
#undef SPEC_64
#if TARGET_64BIT_DEFAULT
#define SPEC_32 "m32"           // should be m16|m32
#define SPEC_64 "!m32"          // should be m64
#else
#define SPEC_32 "!m64"          // should be m16|m32
#define SPEC_64 "m64"
#endif

So you need -m32 -m16 on 64-bit hosts!  For the "working" specs the -m16 
would override -m32, while on the broken ones -m32 is for the linker and 
-m16 is for the compiler.

Paolo


  reply	other threads:[~2022-06-22  9:33 UTC|newest]

Thread overview: 13+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-06-21  7:51 [PATCH 0/6] Fix support for biarch compilers and cross cflags Paolo Bonzini
2022-06-21  7:51 ` [PATCH 1/6] pc-bios/optionrom: use -m16 unconditionally Paolo Bonzini
2022-06-21 14:48   ` Richard Henderson
2022-06-21  7:51 ` [PATCH 2/6] configure, pc-bios/optionrom: pass cross CFLAGS correctly Paolo Bonzini
2022-06-21 14:55   ` Richard Henderson
2022-06-22  9:31     ` Paolo Bonzini [this message]
2022-06-21  7:51 ` [PATCH 3/6] configure, pc-bios/s390-ccw: " Paolo Bonzini
2022-06-21  8:26   ` Thomas Huth
2022-06-21  7:51 ` [PATCH 4/6] configure, pc-bios/vof: " Paolo Bonzini
2022-06-21 15:14   ` Richard Henderson
2022-06-21  7:51 ` [PATCH 5/6] configure: allow more host/target combos to use the host compiler Paolo Bonzini
2022-06-21  7:51 ` [PATCH 6/6] configure: write EXTRA_CFLAGS for all sub-Makefiles Paolo Bonzini
2022-06-21 16:38 ` [PATCH 0/6] Fix support for biarch compilers and cross cflags Matheus Kowalczuk Ferst

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=dfff6cba-e490-830b-21e9-85a96795e1b2@redhat.com \
    --to=pbonzini@redhat.com \
    --cc=qemu-devel@nongnu.org \
    --cc=richard.henderson@linaro.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.