[U-Boot] [PATCH] common: board_f: Fix build error when CONFIG_TRACE is not defined

Simon Glass sjg at chromium.org
Sun Jul 21 03:32:25 CEST 2013


Hi Tushar,

On Sat, Jul 20, 2013 at 1:41 PM, Simon Glass <sjg at chromium.org> wrote:

> Hi,
>
> On Sun, Jul 7, 2013 at 9:10 PM, Tushar Behera <tushar.behera at linaro.org>wrote:
>
>> On 07/06/2013 01:27 AM, Simon Glass wrote:
>> > Hi Tushar,
>> >
>> > On Fri, Jul 5, 2013 at 1:40 AM, Tushar Behera <tushar.behera at linaro.org
>> >wrote:
>> >
>> >> When CONFIG_TRACE is not defined, definition of trace_early_init is not
>> >> compiled and we get following error.
>> >>
>> >> common/libcommon.o:(.data.init_sequence_f+0xc): undefined reference to
>> >> `trace_early_init'
>> >>
>> >> While at it, also define reserve_trace only if CONFIG_TRACE is defined.
>> >>
>> >> CC: Simon Glass <sjg at chromium.org>
>> >> Signed-off-by: Tushar Behera <tushar.behera at linaro.org>
>> >> ---
>> >>  common/board_f.c |    8 ++++++--
>> >>  1 file changed, 6 insertions(+), 2 deletions(-)
>> >>
>> >> diff --git a/common/board_f.c b/common/board_f.c
>> >> index ab4242a..a685368 100644
>> >> --- a/common/board_f.c
>> >> +++ b/common/board_f.c
>> >> @@ -501,17 +501,17 @@ static int reserve_lcd(void)
>> >>  }
>> >>  #endif /* CONFIG_LCD */
>> >>
>> >> +#ifdef CONFIG_TRACE
>> >>  static int reserve_trace(void)
>> >>  {
>> >> -#ifdef CONFIG_TRACE
>> >>         gd->relocaddr -= CONFIG_TRACE_BUFFER_SIZE;
>> >>         gd->trace_buff = map_sysmem(gd->relocaddr,
>> >> CONFIG_TRACE_BUFFER_SIZE);
>> >>         debug("Reserving %dk for trace data at: %08lx\n",
>> >>               CONFIG_TRACE_BUFFER_SIZE >> 10, gd->relocaddr);
>> >> -#endif
>> >>
>> >>         return 0;
>> >>  }
>> >> +#endif
>> >>
>> >>  #if defined(CONFIG_VIDEO) && (!defined(CONFIG_PPC) ||
>> >> defined(CONFIG_8xx)) \
>> >>                 && !defined(CONFIG_ARM) && !defined(CONFIG_X86)
>> >> @@ -833,7 +833,9 @@ static init_fnc_t init_sequence_f[] = {
>> >>  #endif
>> >>         setup_mon_len,
>> >>         setup_fdt,
>> >> +#ifdef CONFIG_TRACE
>> >>         trace_early_init,
>> >> +#endif
>> >>  #if defined(CONFIG_MPC85xx) || defined(CONFIG_MPC86xx)
>> >>         /* TODO: can this go into arch_cpu_init()? */
>> >>         probecpu,
>> >> @@ -977,7 +979,9 @@ static init_fnc_t init_sequence_f[] = {
>> >>  #ifdef CONFIG_LCD
>> >>         reserve_lcd,
>> >>  #endif
>> >> +#ifdef CONFIG_TRACE
>> >>         reserve_trace,
>> >> +#endif
>> >>         /* TODO: Why the dependency on CONFIG_8xx? */
>> >>  #if defined(CONFIG_VIDEO) && (!defined(CONFIG_PPC) ||
>> >> defined(CONFIG_8xx)) \
>> >>                 && !defined(CONFIG_ARM) && !defined(CONFIG_X86)
>> >>
>> >
>> > Does the static inline not work for you? What toolchain are you using? I
>> > assume this is ARM?
>> >
>>
>> I was testing on EXYNOS5250 using 4.7.3 toolchain.
>>
>> My mistake: while testing this patch, I had disabled CONFIG_TRACE, but
>> CONFIG_TRACE_EARLY was still enabled, hence the error. You may ignore
>> the patch.
>>
>> IMHO, we should define the TRACE related config options only if TRACE is
>> enabled. If that is ok for you, I will submit a patch for that.
>>
>
> I'm not sure it matters. The idea is that you can build U-Boot with 'make
> FTRACE=1' and get tracing enabled, without having to modify the config
> files.
>

Actually I'm wrong. What you may what in the config header is:

#idef FTRACE
#define ...all the trace configs
#endif

Then it should work as you describe.

Regards,
Simon


More information about the U-Boot mailing list