From: Gilles Chanteperdrix <gilles.chanteperdrix@xenomai.org>
To: buildroot@busybox.net
Subject: [Buildroot] syslinux using host compiler.
Date: Thu, 24 Mar 2016 14:08:56 +0100 [thread overview]
Message-ID: <20160324130856.GQ22286@hermes.click-hack.org> (raw)
In-Reply-To: <20160324135053.0d3b6b49@free-electrons.com>
On Thu, Mar 24, 2016 at 01:50:53PM +0100, Thomas Petazzoni wrote:
> Hello,
>
> On Thu, 24 Mar 2016 11:39:41 +0100, Gilles Chanteperdrix wrote:
>
> > I am new to buildroot, and have been working for a couple of weeks
> > with it, and everything seems to be working fine so far.
>
> Great :-) Glad to see you on this mailing list!
>
> > I have a question however: why is syslinux (and grub2 for that
> > matter, I guess) built with the host toolchain?
>
> For grub2, it is actually using the target compiler, see the comment in
> grub2.mk:
Ok, I thought I saw grub selected BR2_HOSTARCH_NEEDS_IA32_COMPILER
too, must I have misread.
>
> # Grub2 is kind of special: it considers CC, LD and so on to be the
> # tools to build the native tools (i.e to be executed on the build
> # machine), and uses TARGET_CC, TARGET_CFLAGS, TARGET_CPPFLAGS,
> # TARGET_LDFLAGS to build the bootloader itself. However, to add to
> # the confusion, it also uses NM, OBJCOPY and STRIP to build the
> # bootloader itself; none of these are used to build the native
> # tools.
>
> > I can understand that some tools (such as isohybrid) need to be
> > executed on the host, but the final binaries are for the target. So,
> > does not that call for having a separate host-syslinux and syslinux
> > packages like other packages do?
>
> We used to have a host-syslinux package, but it was removed in commit
> ac7f60d87266c30753cb45b820dc48ec834941c6 as it was no longer needed.
>
> > The current setup only works if the host is x86.
>
> No, because syslinux selects BR2_HOSTARCH_NEEDS_IA32_COMPILER, which
> ensures you have a working x86 32-bits compiler on your host machine. If
> you don't, then Buildroot will not even start the build.
I meant you can not build syslinux if your host is arm for instance,
and you have an arm/x86 cross-compilation toolchain.
>
> The reason why we're using the host compiler rather than the target
> compiler is because syslinux must be built as 32-bits x86 code, even if
> your target system is x86_64.
Yes, but AFAIK, gcc for x86_64 always supports the -m32 switch. To
build 32 bits host binaries, you need a multilib installation with a
32 bits glibc, but a bootloader should not use anything in the glibc.
>
> > I am using an x86_64 toolchain generated with ct-ng, did not enable
> > multilib, and syslinux seems to have no problem compiling with that
> > toolchain, which seems normal, since the boot code should not be
> > using the libc anyway.
>
> Are you sure you're using this target compiler to build syslinux, and
> not your host compiler? Back in 2014, when commit
> 09e7b4c89159a3e48f463b0a22e649c4fc12f4b3 was done, it wouldn't build
> with a x86-64 only compiler.
Yes, I am sure of it. The only "trick" I had to apply was to force
LD="$(TARGET_LD) -m elf_i386". Now buildroot complains later because
isohybrid in the host directory is not compiled with the proper
rpath, but I guess it means we need host-syslinux.
>
> If that actually works, then patches are welcome. But in this case, we
> will indeed probably need separate host-syslinux and syslinux packages,
> as you suggested.
Yes. Ok, will work on the patch.
Regards.
--
Gilles.
https://click-hack.org
next prev parent reply other threads:[~2016-03-24 13:08 UTC|newest]
Thread overview: 7+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-03-24 10:39 [Buildroot] syslinux using host compiler Gilles Chanteperdrix
2016-03-24 12:50 ` Thomas Petazzoni
2016-03-24 13:08 ` Gilles Chanteperdrix [this message]
2016-03-24 14:12 ` Thomas Petazzoni
2016-03-25 22:27 ` Arnout Vandecappelle
-- strict thread matches above, loose matches on Subject: below --
2016-03-24 10:30 Gilles Chanteperdrix
2016-03-24 10:55 ` Gilles Chanteperdrix
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=20160324130856.GQ22286@hermes.click-hack.org \
--to=gilles.chanteperdrix@xenomai.org \
--cc=buildroot@busybox.net \
/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