On 9 August 2016 at 06:07, Michael Zimmermann <[email protected]> wrote:
> Hi,
>
> I assume that you are using linux because you're talking about ELF files.
> MinGW may be able to compile PE images in Linux but tbh there's no reason
> for that and the "freaking" translation is actually a pretty good
> implementation and works very well.
>

Agreed. I suppose Microsoft may offer a toolchain that targets Windows
RT (if that still exists) but free implementations like GCC and Clang
are not likely to implement this any time soon, simply because, other
than UEFI, there are no use cases.

The ELF translation may be a bit clunky, but it is very effective, and
allows us to use a wide range of toolchains: RVCT (ARM only), GCC and
Clang, all of which are under constant development.

> As for the kind of toolchain to use: there's always (at least) two types:
> bare metal toolchains(arm-eabi,arm-none-eabi, aarch64-elf), and the ones
> with a OS ABI(androideabi, linux-gnueabi,linux-gnueabihf, ...). While unlike
> other bootloader/kernel projects EDK2 seems to work with all of them I can
> only recommend using the bare metal variants.
>

I use both, and never notice any difference. The primary differences
are newlib vs glibc, and in some cases, whether symbols are decorated
with a leading _
The actual code generation is more dependent on the default target
(i.e., -march/-mthumb for ARM) than bare-metal/hosted.

> For ARM and AArch64 I recommend using linaro's latest stable release(5.3 at
> the time of writing):
> http://www.linaro.org/downloads/
> sometimes the website is out of date and you can go here directly:
> https://releases.linaro.org/components/toolchain/binaries/
>
> I've also CC'ed the Arm maintainers so you'll actually get answers unlike me
> when I asked the same question about a year ago ;)
>

We have had good results enabling LTO for GCC5. However, we only
recently added support for this, and Tianocore needs some tweaks that
ordinary glibc based environments do not need to enable LTO. Please
report any issues you see with GCC5, or switch to GCC49 (which works
fine for GCC 5.x toolchains as well, but does not enable LTO)

-- 
Ard.
_______________________________________________
edk2-devel mailing list
[email protected]
https://lists.01.org/mailman/listinfo/edk2-devel

Reply via email to