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

Lokesh Vutla lokeshvutla at ti.com
Tue Mar 21 02:56:21 UTC 2017



On Monday 20 March 2017 02:06 PM, Lukasz Majewski wrote:
> 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.

That's right and in case of DRA7xx SPI is not being used before SDRAM is
initialized. I verified that it works boots fine if MALLOC simple is
disabled.

Thanks and regards,
Lokesh

> 
> 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