On Fri, Mar 20, 2015 at 09:22:19AM +0200, Fathi Boudra wrote:
I am running the ARM Trusted Firmware on my HiKey board. I found that BL1 hangs if I build it with the version of GCC that comes with my Ubuntu 14.10 distribution [1] or with another 4.9 build from Linaro [2]. However, it works as expected if I use the 4.8 Linaro build [3] as recommended on the HiKey UEFI wiki [4].
*uses foul language*
it isn't a recommendation. Using GCC 4.8 is done on purpose. See the line "export AARCH64_TOOLCHAIN=GCC48".
What on earth for?
Basically I found two separate issues, and I'm not sure if they are bugs in GCC or HiKey ATF. Here is the story...
it's a known issue. EDKII should be built with GCC 4.8. It's using some compilers profile and GCC 4.9 isn't officially supported at the moment afaik.
Who (incorrectly) told you this? Can I just make a desperate call-out that any claims like this are checked with the linaro-uefi@lists.linaro.org mailing list before taken as gospel and put into documentation? Issues found when switching to later toolchains need to be fixed, not hidden.
Yes, we did end up with some fun from gcc4.9 generating some relocations gcc4.8 didn't. That was a 5 minute quick-fix (and a slightly longer proper one) and has been upstream since November.
EDK2 _does_ provide per-gcc-version configuration flags (making it a whole lot easier to deal with added/deleted ones), but that's just gravy. Official support for a GCC49 profile went upstream in July last year, and I was happily building with gcc4.9 on the GCC48 profile before then.
Better ask Saul^Leif for the full story and implication.
Well, this question was actually about ARM Trusted Firmware, but as per the other replies on this thread, I should clearly add -fno-delete-null-pointer-checks to at least GCC49 profile flags for EDK2.
/ Leif