Linker sets alignment change
Jeff Kubascik
jeff.kubascik at dornerworks.com
Tue Jan 14 16:37:17 UTC 2020
Hello,
I have noticed a change in the linker section ".rtemsrwset" alignment which has
affected the zImage header that was added with the arm/xen BSP. The zImage
header uses the bsp_section_data_end symbol to determine the end of the image. I
was able to track this change to the commit 234d155e linkersets: Revert to
zero-length arrays.
Here is the readelf output of the ticker.exe application just prior before commit
Section Headers:
[Nr] Name Type Addr Off Size ES Flg Lk Inf Al
[15] .rtemsstack NOBITS 40100000 01358c 001000 00 WA 0 0 64
[16] .data PROGBITS 40101000 101000 0004e0 00 WA 0 0 8
[17] .rtemsrwset PROGBITS 401014e0 1014e0 000000 00 0 0 1
Here is the output with the commit
Section Headers:
[Nr] Name Type Addr Off Size ES Flg Lk Inf Al
[15] .rtemsstack NOBITS 40100000 01358c 001000 00 WA 0 0 64
[16] .data PROGBITS 40101000 101000 0004e0 00 WA 0 0 8
[17] .rtemsrwset PROGBITS 40101500 101500 000000 00 WA 0 0 64
This shows that the alignment of the ".rtemsrwset" section changed from 1 byte
to 64 bytes. This changes the start address of the section to be aligned, even
though the section is empty.
The bsp_section_data_end symbol is located at the end of the ".rtemsrwset"
section. If the section is empty, the bsp_section_data_end symbol will contain
the start address of the section.
.data : ALIGN_WITH_INPUT {
bsp_section_data_begin = .;
*(.data .data.* .gnu.linkonce.d.*)
SORT(CONSTRUCTORS)
} > REGION_DATA AT > REGION_DATA_LOAD
.data1 : ALIGN_WITH_INPUT {
*(.data1)
} > REGION_DATA AT > REGION_DATA_LOAD
.rtemsrwset : ALIGN_WITH_INPUT {
KEEP (*(SORT(.rtemsrwset.*)))
bsp_section_data_end = .;
} > REGION_DATA AT > REGION_DATA_LOAD
When I convert the ticker.exe elf to a binary with objcopy, the binary doesn't
include the ".rtemsrwset" section, since it's empty. As a result, the length of
the binary doesn't match the bsp_section_data_end symbol. This is a problem for
some zImage loaders that verify the image length.
I'm not certain what would be the best way to fix the zImage header. Is there a
different symbol that I should be using to get the end of the image? Maybe this
is a bug with the linker script?
Sincerely,
Jeff Kubascik
More information about the devel
mailing list