From mboxrd@z Thu Jan 1 00:00:00 1970 From: Dan Murphy Date: Fri, 17 Mar 2017 13:58:16 -0500 Subject: [U-Boot] Linker error when using CONFIG_SPL_SYS_MALLOC_SIMPLE=y In-Reply-To: References: <58CC2801.9040109@ti.com> <58CC2BFE.8060305@ti.com> Message-ID: <58CC31C8.9050609@ti.com> List-Id: MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit To: u-boot@lists.denx.de Simon On 03/17/2017 01:46 PM, Simon Glass wrote: > Hi Dan, > > On 17 March 2017 at 12:33, 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 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. > Right, but the point of simple malloc() is to be simple, and realloc() > is assumed not to be needed until you have a proper malloc(). By proper malloc you mean the dlmalloc code? If thats true then why is realloc even defined in the simple malloc case? Dan >> Lokesh >> >> Do we run out of room using full malloc support in the SPL with the DM code added? >> >> Dan > Regards, > Simon -- ------------------ Dan Murphy