From: Roman Bolshakov <r.bolshakov@yadro.com>
To: Thomas Huth <thuth@redhat.com>
Cc: <kvm@vger.kernel.org>, Cameron Esfahani <dirty@apple.com>
Subject: Re: [kvm-unit-tests PATCH 1/7] x86: Makefile: Allow division on x86_64-elf binutils
Date: Fri, 28 Aug 2020 11:37:54 +0300 [thread overview]
Message-ID: <20200828083754.GE54274@SPB-NB-133.local> (raw)
In-Reply-To: <ec1e66df-21bc-4d85-05fc-1b54b5a2bf1f@redhat.com>
On Fri, Aug 28, 2020 at 09:56:28AM +0200, Thomas Huth wrote:
> On 28/08/2020 09.47, Roman Bolshakov wrote:
> > On Fri, Aug 28, 2020 at 09:24:10AM +0200, Thomas Huth wrote:
> >> On 28/08/2020 08.54, Roman Bolshakov wrote:
> >>> On Fri, Aug 28, 2020 at 07:00:19AM +0200, Thomas Huth wrote:
> >>>> On 10/08/2020 15.06, Roman Bolshakov wrote:
> >>>>> For compatibility with other SVR4 assemblers, '/' starts a comment on
> >>>>> *-elf binutils target and thus division operator is not allowed [1][2].
> >>>>> That breaks cstart64.S build:
> >>>>>
> >>>>> x86/cstart64.S: Assembler messages:
> >>>>> x86/cstart64.S:294: Error: unbalanced parenthesis in operand 1.
> >>>>>
> >>>>> The option is ignored on the Linux target of GNU binutils.
> >>>>>
> >>>>> 1. https://sourceware.org/binutils/docs/as/i386_002dChars.html
> >>>>> 2. https://sourceware.org/binutils/docs/as/i386_002dOptions.html#index-_002d_002ddivide-option_002c-i386
> >>>>>
> >>>>> Cc: Cameron Esfahani <dirty@apple.com>
> >>>>> Signed-off-by: Roman Bolshakov <r.bolshakov@yadro.com>
> >>>>> ---
> >>>>> x86/Makefile | 2 ++
> >>>>> 1 file changed, 2 insertions(+)
> >>>>>
> >>>>> diff --git a/x86/Makefile b/x86/Makefile
> >>>>> index 8a007ab..22afbb9 100644
> >>>>> --- a/x86/Makefile
> >>>>> +++ b/x86/Makefile
> >>>>> @@ -1 +1,3 @@
> >>>>> include $(SRCDIR)/$(TEST_DIR)/Makefile.$(ARCH)
> >>>>> +
> >>>>> +COMMON_CFLAGS += -Wa,--divide
> >>>>
> >>>> Some weeks ago, I also played with an elf cross compiler and came to the
> >>>> same conclusion, that we need this option there. Unfortunately, it does
> >>>> not work with clang:
> >>>>
> >>>> https://gitlab.com/huth/kvm-unit-tests/-/jobs/707986800#L1629
> >>>>
> >>>> You could try to wrap it with "cc-option" instead ... or use a proper
> >>>> check in the configure script to detect whether it's needed or not.
> >>>>
> >>>
> >>> Hi Thomas,
> >>>
> >>> Thanks for reviewing the series. I'll look into both options and will
> >>> test with both gcc and clang afterwards. I can also update .travis.yml
> >>> in a new patch to test the build on macOS.
> >>
> >> That would be great, thanks! Note that you need at least Clang v10 (the
> >> one from Fedora 32 is fine) to compile the kvm-unit-tests.
> >>
> >> And if it's of any help, this was the stuff that I used in .travis.yml
> >> for my experiments (might still be incomplete, though):
> >>
> >> - os: osx
> >> osx_image: xcode12
> >> addons:
> >> homebrew:
> >> packages:
> >> - bash
> >> - coreutils
> >> - qemu
> >> - x86_64-elf-gcc
> >> env:
> >> - CONFIG="--cross-prefix=x86_64-elf-"
> >> - BUILD_DIR="build"
> >> - TESTS="umip"
> >> - ACCEL="tcg"
> >>
> >> - os: osx
> >> osx_image: xcode12
> >> addons:
> >> homebrew:
> >> packages:
> >> - bash
> >> - coreutils
> >> - qemu
> >> - i386-elf-gcc
> >
> > It's going to be i686-elf-gcc.
>
> Ah, there are two flavours? Ok, good to know.
>
i386-elf-gcc package was configured as x86_64-pc-elf target and then was
renamed to x86_64-elf-gcc to match GCC target name (last December or in
January).
x86_64_elf-gcc can't properly link 32-bit ELF binaries because of GCC
PR16470
(https://gcc.gnu.org/bugzilla/show_bug.cgi?id=16470), PR32044
(https://gcc.gnu.org/bugzilla/show_bug.cgi?id=32044). A cross-compiler
is needed for that, that's why i686-elf-gcc was added in June/May:
https://github.com/Homebrew/homebrew-core/pull/54946/commits/94ee559e6c6284539f74662a85ec20c174436677
But as far as I understand i686-pc-elf target is the same as i386-pc-elf
in GCC/binutils (according to code inspection and a following discussion
freenode's #gcc channel).
FWIW, i686-elf-gcc can be installed in parallel with x86_64-elf-gcc.
Thanks,
Roman
next prev parent reply other threads:[~2020-08-28 8:38 UTC|newest]
Thread overview: 24+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-08-10 13:06 [kvm-unit-tests PATCH 0/7] Add support for generic ELF cross-compiler Roman Bolshakov
2020-08-10 13:06 ` [kvm-unit-tests PATCH 1/7] x86: Makefile: Allow division on x86_64-elf binutils Roman Bolshakov
2020-08-28 5:00 ` Thomas Huth
2020-08-28 6:54 ` Roman Bolshakov
2020-08-28 7:24 ` Thomas Huth
2020-08-28 7:47 ` Roman Bolshakov
2020-08-28 7:56 ` Thomas Huth
2020-08-28 8:37 ` Roman Bolshakov [this message]
2020-08-31 17:30 ` Roman Bolshakov
2020-08-31 20:33 ` Thomas Huth
2020-08-10 13:06 ` [kvm-unit-tests PATCH 2/7] x86: Replace instruction prefixes with spaces Roman Bolshakov
2020-08-28 4:34 ` Thomas Huth
2020-08-10 13:06 ` [kvm-unit-tests PATCH 3/7] x86: Makefile: Fix linkage of realmode on x86_64-elf binutils Roman Bolshakov
2020-08-28 5:44 ` Thomas Huth
2020-08-10 13:06 ` [kvm-unit-tests PATCH 4/7] lib: Bundle debugreg.h from the kernel Roman Bolshakov
2020-08-28 4:56 ` Thomas Huth
2020-08-10 13:06 ` [kvm-unit-tests PATCH 5/7] lib: x86: Use portable format macros for uint32_t Roman Bolshakov
2020-08-28 5:49 ` Thomas Huth
2020-08-10 13:06 ` [kvm-unit-tests PATCH 6/7] configure: Add an option to specify getopt Roman Bolshakov
2020-08-28 5:55 ` Thomas Huth
2020-08-28 7:12 ` Roman Bolshakov
2020-08-28 7:34 ` Thomas Huth
2020-08-10 13:06 ` [kvm-unit-tests PATCH 7/7] README: Update build instructions for macOS Roman Bolshakov
2020-08-26 16:52 ` [kvm-unit-tests PATCH 0/7] Add support for generic ELF cross-compiler Roman Bolshakov
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=20200828083754.GE54274@SPB-NB-133.local \
--to=r.bolshakov@yadro.com \
--cc=dirty@apple.com \
--cc=kvm@vger.kernel.org \
--cc=thuth@redhat.com \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox