[U-Boot] [PATCH v2 1/2] RFC: create u-boot-common.lds

Graeme Russ graeme.russ at gmail.com
Wed Feb 8 03:24:44 CET 2012


Hi Troy,

On Wed, Feb 8, 2012 at 12:56 PM, Troy Kisky
<troy.kisky at boundarydevices.com> wrote:
> On 2/7/2012 6:21 PM, Graeme Russ wrote:
>>
>> Hi Tony,
>>
>> On Wed, Feb 8, 2012 at 11:49 AM, Troy Kisky
>> <troy.kisky at boundarydevices.com>  wrote:
>>>


>>> That works fine for existing sections.. i.e
>>>
>>> U_BOOT_LDS_SECTION(u_boot_cmd, 4)
>>>
>>>
>>> but what about the next patch in the series?
>>> Do you want me to change all lds files again?
>>
>> Ah, and therein lies the rub...
>>
>> By adding 'phy_entry' into the common lds file, you have inflicted it on
>> everyone, and forced it to be after u_boot_cmd. What if I don't need the
>> phy_entry section (no network support) or don't want it hard-placed after
>> u_boot_cmd?
>
>
> Inflicted? I doubt that I added any bytes at all to boards that don't use
> phylib.

You are correct, it will not add anything, but we tend to have an aversion
to dead code :)


>>> I hope you have a better idea for how to handle patch 2/2.
>>
>> Add  U_BOOT_LDS_SECTION(phy_entry, 4) to all the linker scripts
>
>
> The entire reason for me for patch 1/2 was to support 2/2.
>
> What about  #include <u-boot-comon.lds.h>
>
> at the start of each lds file,
>
> and
>
> #include<u-boot-common.lds>
>
>
> in the middle?
>
>
>
> If people really want to control the relative ordering of u_boot_cmd, and
> phy_entry,
> they are not forced to include u-boot-common.lds here.
>
> I can even throw in an unnecessary ifdef in u-boot-common.lds
>
> #ifdef CONFIG_PHYLIB
> U_BOOT_LDS_SECTION(phy_entry, 4)
> #endif
>
>
> This will make it easier for developers to add a table without having
> to change 192 lds files. If a few boards opt not to use
> "#include<u-boot-common.lds>," that still means far fewer files
> to change and less risk of typos.

That looks like a good compromise to me

As I mentioned, the U_BOOT_LDS_SECTION macro will be very useful for me
later on

The next biggie is where to define all the externs exported from the
linker script as a result of using the U_BOOT_LDS_SECTION macro. I'm half
tempted to think we could collect all the usages of U_BOOT_LDS_SECTION
in a header (for the common case, that is essentially u-boot-common.lds)
and by setting a #define you switch between full macro expansion (for
the linker) and 'extern generation' for including in C files. That way,
when you add a new section, everything happen automagically :)

Regards,

Graeme


More information about the U-Boot mailing list