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

Dan Murphy dmurphy at ti.com
Fri Mar 17 18:58:16 UTC 2017


Simon

On 03/17/2017 01:46 PM, Simon Glass wrote:
> Hi Dan,
>
> On 17 March 2017 at 12:33, Dan Murphy <dmurphy at ti.com> 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.
> 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



More information about the U-Boot mailing list