[U-Boot] GCC 5.2 issue on imx28

Måns Rullgård mans at mansr.com
Tue Jul 28 15:39:49 CEST 2015


Otavio Salvador <otavio.salvador at ossystems.com.br> writes:

> Hello folks,
>
> OE-Core is preparing for upgrade to GCC 5.2 as default compiler and
> mx28 is failing[1] to build with it.
>
> 1. http://errors.yoctoproject.org/Errors/Details/13878/
>
> I am not a linker guy so could someone shed any light on this?

There are two errors reports:

1. An undefined reference to the symbol "lowlevel_init"
2. A complaint about the ".rel.plt" section not being handled by the
   linker script.

The second error is probably caused by the first.  A quick grep turns up
this snippet in arch/arm/cpu/arm926ejs/mxs/mxs.c:

/* Lowlevel init isn't used on i.MX28, so just have a dummy here */
inline void lowlevel_init(void) {}

The semantics for non-static functions declared inline have changed in
gcc5, causing the above (empty) function not to be emitted as an
external symbol.

Since that function is only referenced from start.S, it should not be
declared inline at all.  This patch should thus fix your problem:

diff --git a/arch/arm/cpu/arm926ejs/mxs/mxs.c b/arch/arm/cpu/arm926ejs/mxs/mxs.c
index ef130ae..b1d8721 100644
--- a/arch/arm/cpu/arm926ejs/mxs/mxs.c
+++ b/arch/arm/cpu/arm926ejs/mxs/mxs.c
@@ -24,7 +24,7 @@
 DECLARE_GLOBAL_DATA_PTR;
 
 /* Lowlevel init isn't used on i.MX28, so just have a dummy here */
-inline void lowlevel_init(void) {}
+void lowlevel_init(void) {}
 
 void reset_cpu(ulong ignored) __attribute__((noreturn));
 
-- 
Måns Rullgård
mans at mansr.com


More information about the U-Boot mailing list