[U-Boot] Linker error when using CONFIG_SPL_SYS_MALLOC_SIMPLE=y

Lukasz Majewski lukma at denx.de
Mon Mar 20 08:36:22 UTC 2017


Hi Lokesh,

> 
> 
> On Saturday 18 March 2017 12:03 AM, Dan Murphy wrote:
> > Simon
> > 
> > On 03/17/2017 01:24 PM, Simon Glass wrote:
> >> +ML
> >>
> >> Hi Dan,
> >>
> >> On 17 March 2017 at 12:16, Dan Murphy <dmurphy at ti.com> wrote:
> >>> Simon
> >>>
> >>> I wanted to drop you a note to see if you have any advice on how
> >>> to fix this issue.
> >>>
> >>> In the attached .config file we enable
> >>>
> >>> CONFIG_SPL_SYS_MALLOC_SIMPLE and CONFIG_SPL_DFU_SUPPORT which we
> >>> need CONFIG_SPL_DFU_RAM
> >>>
> >>> When doing this we find that there is a build error
> >>>
> >>> common/built-in.o: In function `xrealloc':
> >>> common/cli_hush.c:3349: undefined reference to `realloc_simple'
> >>> common/built-in.o: In function `done_word':
> >>> common/cli_hush.c:2494: undefined reference to `realloc_simple'
> >>> cli_hush.c:2499: undefined reference to `realloc_simple'
> >>> common/built-in.o: In function `b_check_space':
> >>> common/cli_hush.c:876: undefined reference to `realloc_simple'
> >>> make[1]: *** [spl/u-boot-spl] Error 1
> >>> make: *** [spl/u-boot-spl] Error 2
> >>>
> >>> In digging into this I am finding that realloc_simple is not
> >>> defined anywhere in uboot.  malloc_simple.c seems to be missing
> >>> the implementation.
> >>>
> >>> I am looking to see if you have a patch that fixes this issue or
> >>> if you can guide us to a resolution.
> >>>
> >>> Right now our only work around is to disable the HUSH_PARSER or
> >>> turn off the MALLOC simple.  Which according to Lokesh, CC'd, is
> >>> needed for DM support.
> >> So SPL is using hush? Is there a description somewhere of what it
> >> does with that?
> > 
> > HUSH_PARSER was added to the TI config in commit adad96e60 configs:
> > Re-sync HUSH options.
> > 
> > HUSH calls realloc in the builtin functions.  I am not sure what
> > SPL would do with the HUSH.
> > 
> >> If you have enough space for hush I wonder whether you can just use
> >> full malloc() in SPL? You could implement realloc_simple() by just
> >> calling malloc_simple() and copying the old data over, but it is
> >> inefficient.
> > We could work around it but the undef reference will still exist
> > for other code that would need realloc.
> > 
> > Lokesh
> > 
> > Do we run out of room using full malloc support in the SPL with the
> > DM code added?
> 
> No, we should be able to use full malloc support in SPL in case of
> DRA7xx/AM57xx.

It depends if you plan to use SPI before SDRAM is initialized. The .bss
section (and dlmalloc.c pool) starts from 0x80a0 0000. Only the .data
section is allocated in SRAM.

I2C (which is used to read EEPROM config data) on the other hand do not
require malloc to be operational.

> But it is unnecessary overhead ti size of SPL. I still
> did not understand why HUSH_PARSER is needed for SPL.

I might probably answer to this question. IIRC, the SPL_DFU support
uses HUSH to work.

> 
> Thanks and regards,
> Lokesh
> _______________________________________________
> U-Boot mailing list
> U-Boot at lists.denx.de
> https://lists.denx.de/listinfo/u-boot




Best regards,

Lukasz Majewski

--

DENX Software Engineering GmbH,      Managing Director: Wolfgang Denk
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: (+49)-8142-66989-10 Fax: (+49)-8142-66989-80 Email: wd at denx.de


More information about the U-Boot mailing list