mirror of
https://gitlab.rtems.org/rtems/rtos/rtems.git
synced 2025-11-16 04:24:45 +00:00
- It seems the compiler how defaults to -fcommon and this means some uninitialised data is ignored. Closes #4266
108 lines
2.5 KiB
Plaintext
108 lines
2.5 KiB
Plaintext
OUTPUT_ARCH(powerpc)
|
|
OUTPUT_FORMAT ("elf32-powerpc", "elf32-powerpc", "elf32-powerpc")
|
|
/* Do we need any of these for elf?
|
|
__DYNAMIC = 0; */
|
|
SECTIONS
|
|
{
|
|
.text :
|
|
{
|
|
/* We have to build the header by hand, painful since ppcboot
|
|
format support is very poor in binutils.
|
|
objdump -b ppcboot zImage --all-headers can be used to check. */
|
|
/* The following line can be added as a branch to use the same image
|
|
* for netboot as for prepboots, the only problem is that objdump
|
|
* did not in this case recognize the format since it insisted
|
|
* in checking the x86 code area held only zeroes.
|
|
*/
|
|
LONG(0x48000000+start);
|
|
. = 0x1be; BYTE(0x80); BYTE(0)
|
|
BYTE(2); BYTE(0); BYTE(0x41); BYTE(1);
|
|
BYTE(0x12); BYTE(0x4f); LONG(0);
|
|
BYTE(((_edata + 0x1ff)>>9)&0xff);
|
|
BYTE(((_edata + 0x1ff)>>17)&0xff);
|
|
BYTE(((_edata + 0x1ff)>>25)&0xff);
|
|
. = 0x1fe;
|
|
BYTE(0x55);
|
|
BYTE(0xaa);
|
|
BYTE(start&0xff);
|
|
BYTE((start>>8)&0xff);
|
|
BYTE((start>>16)&0xff);
|
|
BYTE((start>>24)&0xff);
|
|
BYTE(_edata&0xff);
|
|
BYTE((_edata>>8)&0xff);
|
|
BYTE((_edata>>16)&0xff);
|
|
BYTE((_edata>>24)&0xff);
|
|
BYTE(0); /* flags */
|
|
BYTE(0); /* os_id */
|
|
BYTE(0x4C); BYTE(0x69); BYTE(0x6e);
|
|
BYTE(0x75); BYTE(0x78); /* Partition name */
|
|
. = 0x400;
|
|
*(.text)
|
|
*(.text*)
|
|
*(.sdata2)
|
|
*(.sdata2*)
|
|
*(.rodata)
|
|
*(.rodata*)
|
|
}
|
|
/* . = ALIGN(16); */
|
|
.image :
|
|
{
|
|
rtems.gz(*)
|
|
. = ALIGN(4);
|
|
*.gz(*)
|
|
}
|
|
/* Read-write section, merged into data segment: */
|
|
/* . = ALIGN(4096); */
|
|
.reloc :
|
|
{
|
|
*(.got)
|
|
_GOT2_TABLE_ = .;
|
|
*(.got2)
|
|
_FIXUP_TABLE_ = .;
|
|
*(.fixup)
|
|
_FIXUP_END_ = .;
|
|
}
|
|
|
|
.handlers :
|
|
{
|
|
*(.exception)
|
|
}
|
|
|
|
.data :
|
|
{
|
|
*(.data)
|
|
*(.data*)
|
|
*(.sdata)
|
|
*(.sdata*)
|
|
. = ALIGN(4);
|
|
_data_end = .;
|
|
}
|
|
.bss :
|
|
{
|
|
*(.sbss)
|
|
*(.sbss*)
|
|
*(.bss)
|
|
*(.bss*)
|
|
*(COMMON)
|
|
. = ALIGN(4);
|
|
_bss_end = .;
|
|
}
|
|
.abs 0 : {
|
|
__got2_entries = ABSOLUTE((_FIXUP_TABLE_ - _GOT2_TABLE_) >>2);
|
|
__fixup_entries = ABSOLUTE((_FIXUP_END_ - _FIXUP_TABLE_)>>2);
|
|
_edata = ABSOLUTE(_data_end);
|
|
PROVIDE(_binary_initrd_gz_start = ABSOLUTE(0));
|
|
PROVIDE(_binary_initrd_gz_end = ABSOLUTE(0));
|
|
_rtems_gz_size = ABSOLUTE(_binary_rtems_gz_end - _binary_rtems_gz_start);
|
|
_rtems_size = ABSOLUTE(__rtems_end - __rtems_start);
|
|
__bss_words = ABSOLUTE(SIZEOF(.bss)>>2);
|
|
__size = ABSOLUTE(_bss_end);
|
|
}
|
|
|
|
/DISCARD/ :
|
|
{
|
|
*(.comment*)
|
|
*(.debug*)
|
|
}
|
|
}
|