[U-Boot] [PATCH v3] Switch from archive libraries to partial linking

Albert ARIBAUD albert.aribaud at free.fr
Fri Nov 19 14:33:53 CET 2010


Le 19/11/2010 14:07, Reinhard Meyer a écrit :
> Dear Albert,
>>
>> On 2010-11-19 13:38:00, Albert ARIBAUD wrote:
>>> Le 19/11/2010 13:33, Sebastien Carlier a écrit :
>>>> Is it not possible to tell the linker to place a made-up 32 kB symbol
>>>> within the text section at address 0x40008000?  I am not familiar enough
>>>> with ld to tell whether there are restrictions for setting the absolute
>>>> address of a symbol that would disallow it in this case.
>>> You can force a symbol to reside at a given offset, but that will
>>> not make the linker "skip" that symbol when filling the output
>>> section, if that's what you meant.
>>
>> Yes, I was hoping the linker would first allocate space for
>> absolute-address symbols and then fill the gaps with the remaining
>> symbols in whatever order.
>>
>>> If you read up the binutils doc, you'll see that ld fills output
>>> sections based on a "location pointer" (the "dot") that simply moves
>>> on with each input section added -- no skipping, and no jumping from
>>> one region to another either.
>>
>> I see, thank you for pointing this out.  This specific behavior actually
>> seems quite essential to the interpretation of linker scripts, so there
>> is probably no hope for any change there.
>
> Have you tried something in the line of:
>
> /* Memory Definitions */
>
> MEMORY
> {
>    CODE (rx) : ORIGIN = 0x00000000, LENGTH = 0x0007E000
>    DATA (rw) : ORIGIN = 0x40000000, LENGTH = 0x00007A00
>    ENET (rw) : ORIGIN = 0x7FE00000, LENGTH = 0x00004000
> }
>
>
> /* Section Definitions */
>
> SECTIONS
> {
>
>    /* first section is .text which is used for code */
>
>    .text :
>    {
>      *startup2300.o (.text)		/* Startup code */
> 	*basicio.o (.text)			/* basic I/O */
>      *(.text)					/* remaining code */
>
>      *(.glue_7t) *(.glue_7)
>
>    }>CODE =0
>
>    . = ALIGN(4);
>
> ...

Those regions would most probably inflate the .bin because of the gap 
between the various MEMORY areas.

> *maybe* one can define several areas for CODE in the MEMORY section?

Afraid not. :/

Amicalement,
-- 
Albert.


More information about the U-Boot mailing list