
Hi Wolfgang,
On Wed, 11 Jun 2014 06:49:28 +0200, Wolfgang Denk wd@denx.de wrote:
Dear Steve,
In message 53979199.5010100@broadcom.com you wrote:
OK - I think that one of the alternate proposals would be to conditionally reserve a "32 byte block" prior to the _start symbol (in "arch/arm/cpu/armv8/start.S") which would then be filled in by a post-processing step... This could be implemented by:
Yes, that illustrates the idea. However, this implementation suffers from the use of an #ifdef where none is actually needed. Instead, you can create your own source file which defines the header; this could be then even in it's own segment, say:
your_header.c:
struct your_header { u_int32[8]; } your_header __attribute__ ((__section__ (".your_hdr")));
All that is needed then is to make the linker place this segment in front of the text segment.
This avoids an ugly #ifdef, and also modifications in the common code.
Agreed and seconded.
Plus, using a dedicated 'header' section and a separate C source file for the header makes it automatic that if no input 'header' section were provided then no output 'header' section would be emitted; IOW, we would not need two different linker scripts, a single one would be useable for both 'headerless' and 'headerful' image types.
Also, the alignment constraint should be configurable.
Best regards,
Wolfgang Denk
Amicalement,