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

Simon Glass sjg at chromium.org
Sat Jul 20 21:41:25 CEST 2013


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.

Tracing IMO is something you turn on and off while developing, rather than
a board option. I didn't come up with a good way of enabling it globally
(since we need things like buffer size and the early trace address) but if
we could make it a 'make' option instead of a board option, that would be
my preference.



> --- a/include/configs/exynos5250-dt.h
> +++ b/include/configs/exynos5250-dt.h
> @@ -45,11 +45,13 @@
>
>  /* Allow tracing to be enabled */
>  #define CONFIG_TRACE
> +#ifdef CONFIG_TRACE
>  #define CONFIG_CMD_TRACE
>  #define CONFIG_TRACE_BUFFER_SIZE       (16 << 20)
>  #define CONFIG_TRACE_EARLY_SIZE                (8 << 20)
>  #define CONFIG_TRACE_EARLY
>  #define CONFIG_TRACE_EARLY_ADDR                0x50000000
> +#endif
>

Regards,
Simon


More information about the U-Boot mailing list