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

Graeme Russ graeme.russ at gmail.com
Wed Feb 8 01:39:10 CET 2012


Hi Troy,

On Wed, Feb 8, 2012 at 11:20 AM, Troy Kisky
<troy.kisky at boundarydevices.com> wrote:
> This makes adding linker defined tables easier
> as only 1 lds file (include/u-boot-common.lds)
> will need to be touched instead of 193 files.
>
> Signed-off-by: Troy Kisky <troy.kisky at boundarydevices.com>
> ---


> diff --git a/arch/arm/cpu/arm1136/u-boot.lds b/arch/arm/cpu/arm1136/u-boot.lds
> index d1e2851..fe07097 100644
> --- a/arch/arm/cpu/arm1136/u-boot.lds
> +++ b/arch/arm/cpu/arm1136/u-boot.lds
> @@ -52,12 +52,7 @@ SECTIONS
>                *(.data)
>        }
>
> -       . = ALIGN(4);
> -
> -       . = .;
> -       __u_boot_cmd_start = .;
> -       .u_boot_cmd : { *(.u_boot_cmd) }
> -       __u_boot_cmd_end = .;
> +#include <u-boot-common.lds>
>
>        . = ALIGN(4);
>

Ick! A #define in the middle of a file :(

I would rather see the code block you are replacing #defined in
include/u-boot-common.lds.h and then use the define at the desired
location in the arch lds file. This will allow multiple 'functional
linker blocks' to be defined that the acrch scripts can arrange as they
see fit.

Also, ALIGN(4) may not always be a given, so maybe we should pass that in
as a parameter?

Hmmm....maybe something like (most likely not syntactically correct):

#define U_BOOT_LDS_SECTION(section, alignment) \
	. = ALIGN(alignment); \
	U_BOOT_LDS_SYMBOL(section ## _start) = .;
	. ## section : { KEEP(*(. ## section)) }
	U_BOOT_LDS_SYMBOL(section ## _end) = .;


So we can simply, in the arch lds:

	U_BOOT_LDS_SECTION(text, 4)
	U_BOOT_LDS_SECTION(u_boot_cmd, 4)
	U_BOOT_LDS_SECTION(rodata, 4)
	U_BOOT_LDS_SECTION(data, 4)
	U_BOOT_LDS_SECTION(dynsym, 4)

Regards,

Graeme


More information about the U-Boot mailing list