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) *(.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) . = ALIGN(4); _data_end = .; } .bss : { *(.sbss) *(.bss) . = 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) } }