Fix build error with optimizations disabled (-O0)
authorJuan Castillo <juan.castillo@arm.com>
Tue, 4 Aug 2015 13:31:27 +0000 (14:31 +0100)
committerJuan Castillo <juan.castillo@arm.com>
Wed, 5 Aug 2015 08:34:48 +0000 (09:34 +0100)
If Trusted Firmware is built with optimizations disabled (-O0), the
linker throws the following error:

    undefined reference to 'xxx'

Where 'xxx' is a raw inline function defined in a header file. The
reason is that, with optimizations disabled, GCC may decide to skip
the inlining. If that is the case, an external definition to the
compilation unit must be provided. Because no external definition
is present, the linker throws the error.

This patch fixes the problem by declaring the following inline
functions static, so the internal definition is used:

    inline void soc_css_security_setup(void)
    inline const arm_config_t *get_arm_config(void)

Change-Id: Id650d6be1b1396bdb48af1ac8a4c7900d212e95f

include/plat/arm/common/arm_config.h
include/plat/arm/soc/common/soc_css.h

index 48fb33bd58984dc40d60ce5d0ba3dc1a3949479d..0b161276c0a0e0451dcaf6838e8183ac42e5b7be 100644 (file)
@@ -55,7 +55,7 @@ typedef struct arm_config {
 /* If used, arm_config must be defined and populated in the platform port */
 extern arm_config_t arm_config;
 
-inline const arm_config_t *get_arm_config(void)
+static inline const arm_config_t *get_arm_config(void)
 {
        return &arm_config;
 }
index 58f0f090be9df678788894555e3cc0e3da0b0764..5f97cde1099d49d2f23d19ed02f34e19506c0332 100644 (file)
@@ -37,7 +37,7 @@
 void soc_css_init_nic400(void);
 void soc_css_init_pcie(void);
 
-inline void soc_css_security_setup(void)
+static inline void soc_css_security_setup(void)
 {
        soc_css_init_nic400();
        soc_css_init_pcie();