[U-Boot] [PATCH v3] Switch from archive libraries to partial linking
Reinhard Meyer
u-boot at emk-elektronik.de
Fri Nov 19 14:07:50 CET 2010
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);
...
*maybe* one can define several areas for CODE in the MEMORY section?
Best Regards,
Reinhard
More information about the U-Boot
mailing list