EMILE/second/ld.script
Laurent Vivier e3780d21ef Make second level relocatable using -fpic and "GLOBAL_OFFSET_TABLE"
should be improved by using -mrelpc, but this flags is only supported by
gcc > 3.0 (and I use gcc 2.95)
2004-05-24 23:59:13 +00:00

115 lines
2.9 KiB
Plaintext

OUTPUT_ARCH(m68k)
SECTIONS
{
MemTop = 0x0108;
VIA1Base = 0x01D4;
SCCRd = 0x01d8;
ROMBase = 0x02ae;
HWCfgFlags = 0x0B22;
SCSIBase = 0x0C00;
ASCBase = 0x0CC0;
TimeVIADB = 0x0cea;
VIA2Base = 0x0CEC;
TimeDBRA = 0x0D00;
PMgrBase = 0x0D18;
UnivROMBits = 0x0DD4;
Time = 0x020C;
.text :
{
__bootloader_start = .;
*(.text .stub .text.* .gnu.linkonce.t.*)
*(.gnu.warning)
} =0x4e754e75
.hash : { *(.hash) }
.dynsym : { *(.dynsym) }
.dynstr : { *(.dynstr) }
.rel.dyn :
{
*(.rel.init)
*(.rel.text .rel.text.* .rel.gnu.linkonce.t.*)
*(.rel.fini)
*(.rel.rodata .rel.rodata.* .rel.gnu.linkonce.r.*)
*(.rel.data .rel.data.* .rel.gnu.linkonce.d.*)
*(.rel.tdata .rel.tdata.* .rel.gnu.linkonce.td.*)
*(.rel.tbss .rel.tbss.* .rel.gnu.linkonce.tb.*)
*(.rel.ctors)
*(.rel.dtors)
*(.rel.got)
*(.rel.bss .rel.bss.* .rel.gnu.linkonce.b.*)
}
.rela.dyn :
{
*(.rela.init)
*(.rela.text .rela.text.* .rela.gnu.linkonce.t.*)
*(.rela.fini)
*(.rela.rodata .rela.rodata.* .rela.gnu.linkonce.r.*)
*(.rela.data .rela.data.* .rela.gnu.linkonce.d.*)
*(.rela.tdata .rela.tdata.* .rela.gnu.linkonce.td.*)
*(.rela.tbss .rela.tbss.* .rela.gnu.linkonce.tb.*)
*(.rela.ctors)
*(.rela.dtors)
*(.rela.got)
*(.rela.bss .rela.bss.* .rela.gnu.linkonce.b.*)
}
.rel.plt : { *(.rel.plt) }
.rela.plt : { *(.rela.plt) }
.init :
{
KEEP (*(.init))
} =0x4e754e75
.plt : { *(.plt) }
.fini :
{
KEEP (*(.fini))
} =0x4e754e75
PROVIDE (__etext = .);
PROVIDE (_etext = .);
PROVIDE (etext = .);
.rodata : {
*(.rodata .rodata.* .gnu.linkonce.r.*)
. = ALIGN(4);
_kernel_start = . ;
*(.image)
_kernel_end = . ;
. = ALIGN(4);
_ramdisk_start = . ;
*(.ramdisk)
_ramdisk_end = . ;
}
.rodata1 : { *(.rodata1) }
.eh_frame_hdr : { *(.eh_frame_hdr) }
. = ALIGN(0x2000) + (. & (0x2000 - 1));
. = ALIGN(32 / 8);
.preinit_array : { *(.preinit_array) }
.init_array : { *(.init_array) }
.fini_array : { *(.fini_array) }
.data :
{
*(.data .data.* .gnu.linkonce.d.*)
SORT(CONSTRUCTORS)
}
.data1 : { *(.data1) }
.tdata : { *(.tdata .tdata.* .gnu.linkonce.td.*) }
.tbss : { *(.tbss .tbss.* .gnu.linkonce.tb.*) *(.tcommon) }
.eh_frame : { KEEP (*(.eh_frame)) }
.gcc_except_table : { *(.gcc_except_table) }
.dynamic : { *(.dynamic) }
.got : { *(.got.plt) *(.got) }
_GOT_SIZE = . - _GLOBAL_OFFSET_TABLE_;
_edata = .;
PROVIDE (edata = .);
__bss_start = .;
.bss :
{
*(.dynbss)
*(.bss .bss.* .gnu.linkonce.b.*)
*(COMMON)
. = ALIGN(32 / 8);
}
. = ALIGN(32 / 8);
_end = .;
__bootloader_end = .;
PROVIDE (end = .);
}