Skip to contentSkip to conversation

Linker error when using CONFIG_SPL_SYS_MALLOC_SIMPLE=y

U-Boot Simon Glass 4 participants 8 messages Mar 17, 2017 – Mar 21, 2017 1 message not in the archive

lore
Share & tools
lore
#1 lore raw
In reply to a message not in the archive

+ML

Hi Dan,

Quoted 20 lines · Dan Murphy

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

Quoted 7 lines

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?

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.

Regards,
Simon

#2 lore raw

Simon

Quoted 28 lines · Simon Glass

+ML

Hi Dan,

Quoted 23 lines · Dan Murphy

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.

Quoted 6 lines
Quoted 4 lines

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.

Quoted 4 lines

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?

Dan

Quoted 2 lines

Regards,
Simon

Signature · 2 lines
------------------
Dan Murphy
#3 lore raw

Hi Dan,

Quoted 40 lines · Dan Murphy

Simon

Quoted 28 lines · Simon Glass

+ML

Hi Dan,

Quoted 23 lines · Dan Murphy

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.

Quoted 6 lines
Quoted 4 lines

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.

Quoted 7 lines

HUSH calls realloc in the builtin functions. I am not sure what SPL would do with the HUSH.

Quoted 4 lines

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().

Quoted 6 lines

Lokesh

Do we run out of room using full malloc support in the SPL with the DM code added?

Dan

Regards,
Simon

#4 lore raw

Simon

Quoted 44 lines · Simon Glass

Hi Dan,

Quoted 41 lines · Dan Murphy

Simon

Quoted 28 lines · Simon Glass

+ML

Hi Dan,

Quoted 23 lines · Dan Murphy

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.

Quoted 6 lines
Quoted 4 lines

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.

Quoted 7 lines
Quoted 5 lines
Quoted 4 lines

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

Quoted 7 lines
Quoted 5 lines

Lokesh

Do we run out of room using full malloc support in the SPL with the DM code added?

Dan

Regards,
Simon

Signature · 2 lines
------------------
Dan Murphy
#5 lore raw

Hi Dan,

Quoted 51 lines · Dan Murphy

Simon

Quoted 48 lines · Simon Glass

Hi Dan,

Quoted 45 lines · Dan Murphy

Simon

Quoted 28 lines · Simon Glass

+ML

Hi Dan,

Quoted 23 lines · Dan Murphy

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.

Quoted 6 lines
Quoted 4 lines

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.

Quoted 4 lines

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.

Quoted 7 lines
Quoted 3 lines
Quoted 1 line

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?

To avoid it trying to use realloc(). Perhaps instead of a link error it should be defined to some sort of error message?

Regards,
Simon

#6 lore raw
In reply to Dan Murphy
Quoted 46 lines · Dan Murphy

Simon

Quoted 28 lines · Simon Glass

+ML

Hi Dan,

Quoted 23 lines · Dan Murphy

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.

Quoted 6 lines
Quoted 4 lines

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.

Quoted 4 lines

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.

Quoted 5 lines

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. But it is unnecessary overhead ti size of SPL. I still did not understand why HUSH_PARSER is needed for SPL.

Thanks and regards,
Lokesh

#7 lore raw

Hi Lokesh,

Quoted 59 lines · Dan Murphy
Quoted 56 lines

Simon

Quoted 31 lines · Simon Glass

+ML

Hi Dan,

Quoted 26 lines · Dan Murphy

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.

Quoted 8 lines
Quoted 6 lines

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.

Quoted 4 lines

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.

Quoted 7 lines
Quoted 4 lines

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.

Quoted 2 lines

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.

Quoted 7 lines

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

#8 lore raw
Quoted 66 lines · Lukasz Majewski

Hi Lokesh,

Quoted 64 lines · Dan Murphy
Quoted 60 lines

Simon

Quoted 31 lines · Simon Glass

+ML

Hi Dan,

Quoted 26 lines · Dan Murphy

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.

Quoted 8 lines
Quoted 6 lines

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.

Quoted 4 lines

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?

Quoted 6 lines
Quoted 2 lines

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

Quoted 31 lines

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

Quoted 2 lines

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.

Quoted 7 lines

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