From: David McCullough Date: Thu, 7 May 2009 01:04:19 +0000 (+0000) Subject: Rename elf2flt.ld to elf2flt.ld.in. X-Git-Url: https://git.wh0rd.org/?a=commitdiff_plain;h=7bd0062a7a949ed2e44f9843b9829c64059909e9;p=elf2flt.git Rename elf2flt.ld to elf2flt.ld.in. --- diff --git a/elf2flt.ld b/elf2flt.ld deleted file mode 100644 index 4343108..0000000 --- a/elf2flt.ld +++ /dev/null @@ -1,202 +0,0 @@ - -ENTRY (@SYMBOL_PREFIX@_start) - -MEMORY { - flatmem : ORIGIN = 0x0, LENGTH = 0xfffffff -} - -SECTIONS { - - .text 0x0 : { - . = . + 4; - . = ALIGN(0x4) ; - @SYMBOL_PREFIX@_stext = . ; - *(.text) - *(.text.*) - *(.gnu.warning) - *(.stub) - *(.gnu.linkonce.t*) - *(.glue_7t) - *(.glue_7) - *(.jcr) - KEEP (*(.init)) - KEEP (*(.fini)) - -W_RODAT *(.rodata) -W_RODAT *(.rodata1) -W_RODAT *(.rodata.*) -W_RODAT *(.gnu.linkonce.r*) - - /* This is special code area at the end of the normal - text section. It contains a small lookup table at - the start followed by the code pointed to by entries - in the lookup table. */ - . = ALIGN (4) ; - PROVIDE(@SYMBOL_PREFIX@__ctbp = .); - *(.call_table_data) - *(.call_table_text) - - . = ALIGN(0x20) ; - @SYMBOL_PREFIX@_etext = . ; - } > flatmem - - .data : { - . = ALIGN(0x4) ; - @SYMBOL_PREFIX@_sdata = . ; - @SYMBOL_PREFIX@__data_start = . ; - @SYMBOL_PREFIX@data_start = . ; - *(.got.plt) - *(.got) - FILL(0) ; - . = ALIGN(0x20) ; - LONG(-1) - . = ALIGN(0x20) ; -R_RODAT *(.rodata) -R_RODAT *(.rodata1) -R_RODAT *(.rodata.*) -R_RODAT *(.gnu.linkonce.r*) - *(.data) - *(.data1) - *(.data.*) - *(.gnu.linkonce.d*) - - /* Microblaze has .sdata and .sbss (small bss). They must - be contiguous, so please don't move any of this. JW */ - @SYMBOL_PREFIX@_ssrw = . ; - *(.sdata) - *(.sdata.*) - *(.sbss) /* Don't move this! */ - *(.gnu.linkonce.sb*) - @SYMBOL_PREFIX@_essrw = . ; - - @SYMBOL_PREFIX@_ssrw_size = @SYMBOL_PREFIX@_essrw - @SYMBOL_PREFIX@_ssrw; - PROVIDE(@SYMBOL_PREFIX@_SDA_BASE_ = @SYMBOL_PREFIX@_ssrw + (@SYMBOL_PREFIX@_ssrw_size / 2)); - - *(.gnu.linkonce.s.*) - *(__libc_atexit) - *(__libc_subinit) - *(__libc_subfreeres) - *(.note.ABI-tag) - - /* microblaze-specific read-only small data area - and associated locating symbols */ - @SYMBOL_PREFIX@_ssro = . ; - *(.sdata2) - @SYMBOL_PREFIX@_essro = . ; - @SYMBOL_PREFIX@_ssro_size = @SYMBOL_PREFIX@_essro - @SYMBOL_PREFIX@_ssro; - PROVIDE(@SYMBOL_PREFIX@_SDA2_BASE_ = @SYMBOL_PREFIX@_ssro + (@SYMBOL_PREFIX@_ssro_size / 2)); - - . = ALIGN(4) ; - @SYMBOL_PREFIX@__CTOR_LIST__ = .; - LONG((@SYMBOL_PREFIX@__CTOR_END__ - @SYMBOL_PREFIX@__CTOR_LIST__) / 4 - 2) -SINGLE_LINK: /* gcc uses crtbegin.o to find the start of -SINGLE_LINK: the constructors, so we make sure it is -SINGLE_LINK: first. Because this is a wildcard, it -SINGLE_LINK: doesn't matter if the user does not -SINGLE_LINK: actually link against crtbegin.o; the -SINGLE_LINK: linker won't look for a file to match a -SINGLE_LINK: wildcard. The wildcard also means that it -SINGLE_LINK: doesn't matter which directory crtbegin.o -SINGLE_LINK: is in. */ -SINGLE_LINK: KEEP (*crtbegin*.o(.ctors)) -SINGLE_LINK: /* We don't want to include the .ctor section from -SINGLE_LINK: from the crtend.o file until after the sorted ctors. -SINGLE_LINK: The .ctor section from the crtend file contains the -SINGLE_LINK: end of ctors marker and it must be last */ -SINGLE_LINK: KEEP (*(EXCLUDE_FILE (*crtend*.o ) .ctors)) -SINGLE_LINK: KEEP (*(SORT(.ctors.*))) - KEEP (*(.ctors)) - LONG(0) - @SYMBOL_PREFIX@__CTOR_END__ = .; - @SYMBOL_PREFIX@__DTOR_LIST__ = .; - LONG((@SYMBOL_PREFIX@__DTOR_END__ - @SYMBOL_PREFIX@__DTOR_LIST__) / 4 - 2) -SINGLE_LINK: KEEP (*crtbegin*.o(.dtors)) -SINGLE_LINK: KEEP (*(EXCLUDE_FILE (*crtend*.o ) .dtors)) -SINGLE_LINK: KEEP (*(SORT(.dtors.*))) - KEEP (*(.dtors)) - LONG(0) - @SYMBOL_PREFIX@__DTOR_END__ = .; - - PROVIDE (@SYMBOL_PREFIX@__preinit_array_start = .); - KEEP (*(.preinit_array)) - PROVIDE (@SYMBOL_PREFIX@__preinit_array_end = .); - - PROVIDE (@SYMBOL_PREFIX@__init_array_start = .); - KEEP (*(SORT(.init_array.*))) - KEEP (*(.init_array)) - PROVIDE (@SYMBOL_PREFIX@__init_array_end = .); - - PROVIDE (@SYMBOL_PREFIX@__fini_array_start = .); - KEEP (*(.fini_array)) - KEEP (*(SORT(.fini_array.*))) - PROVIDE (@SYMBOL_PREFIX@__fini_array_end = .); - } > flatmem - - .eh_frame_hdr : { *(.eh_frame_hdr) } > flatmem - .eh_frame : { KEEP(*(.eh_frame)) } > flatmem - .gcc_except_table : { KEEP(*(.gcc_except_table)) } >flatmem - - . = ALIGN(0x10) ; - @SYMBOL_PREFIX@_edata = . ; - - .bss : { - . = ALIGN(0x4) ; - @SYMBOL_PREFIX@_sbss = ALIGN(0x4) ; - @SYMBOL_PREFIX@__bss_start = . ; - *(.dynsbss) - *(.sbss) - *(.sbss.*) - *(.scommon) - *(.dynbss) - *(.bss) - *(.bss.*) - *(.bss*) - *(.gnu.linkonce.b*) - *(COMMON) - . = ALIGN(0x10) ; - @SYMBOL_PREFIX@_ebss = . ; - @SYMBOL_PREFIX@_end = . ; - @SYMBOL_PREFIX@end = . ; - } > flatmem - - .stack : { - . = ALIGN(0x4); - @SYMBOL_PREFIX@_stack_start = .; - } - - .junk 0 : { *(.rel*) *(.rela*) } - /DISCARD/ : { *(.note.GNU-stack) } - /* Stabs debugging sections. */ - .stab 0 : { *(.stab) } - .stabstr 0 : { *(.stabstr) } - .stab.excl 0 : { *(.stab.excl) } - .stab.exclstr 0 : { *(.stab.exclstr) } - .stab.index 0 : { *(.stab.index) } - .stab.indexstr 0 : { *(.stab.indexstr) } - .comment 0 : { *(.comment) } - /* DWARF debug sections. - Symbols in the DWARF debugging sections are relative to the beginning - of the section so we begin them at 0. */ - /* DWARF 1 */ - .debug 0 : { *(.debug) } - .line 0 : { *(.line) } - /* GNU DWARF 1 extensions */ - .debug_srcinfo 0 : { *(.debug_srcinfo) } - .debug_sfnames 0 : { *(.debug_sfnames) } - /* DWARF 1.1 and DWARF 2 */ - .debug_aranges 0 : { *(.debug_aranges) } - .debug_pubnames 0 : { *(.debug_pubnames) } - /* DWARF 2 */ - .debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) } - .debug_abbrev 0 : { *(.debug_abbrev) } - .debug_line 0 : { *(.debug_line) } - .debug_frame 0 : { *(.debug_frame) } - .debug_str 0 : { *(.debug_str) } - .debug_loc 0 : { *(.debug_loc) } - .debug_macinfo 0 : { *(.debug_macinfo) } - /* SGI/MIPS DWARF 2 extensions */ - .debug_weaknames 0 : { *(.debug_weaknames) } - .debug_funcnames 0 : { *(.debug_funcnames) } - .debug_typenames 0 : { *(.debug_typenames) } - .debug_varnames 0 : { *(.debug_varnames) } -} diff --git a/elf2flt.ld.in b/elf2flt.ld.in new file mode 100644 index 0000000..4343108 --- /dev/null +++ b/elf2flt.ld.in @@ -0,0 +1,202 @@ + +ENTRY (@SYMBOL_PREFIX@_start) + +MEMORY { + flatmem : ORIGIN = 0x0, LENGTH = 0xfffffff +} + +SECTIONS { + + .text 0x0 : { + . = . + 4; + . = ALIGN(0x4) ; + @SYMBOL_PREFIX@_stext = . ; + *(.text) + *(.text.*) + *(.gnu.warning) + *(.stub) + *(.gnu.linkonce.t*) + *(.glue_7t) + *(.glue_7) + *(.jcr) + KEEP (*(.init)) + KEEP (*(.fini)) + +W_RODAT *(.rodata) +W_RODAT *(.rodata1) +W_RODAT *(.rodata.*) +W_RODAT *(.gnu.linkonce.r*) + + /* This is special code area at the end of the normal + text section. It contains a small lookup table at + the start followed by the code pointed to by entries + in the lookup table. */ + . = ALIGN (4) ; + PROVIDE(@SYMBOL_PREFIX@__ctbp = .); + *(.call_table_data) + *(.call_table_text) + + . = ALIGN(0x20) ; + @SYMBOL_PREFIX@_etext = . ; + } > flatmem + + .data : { + . = ALIGN(0x4) ; + @SYMBOL_PREFIX@_sdata = . ; + @SYMBOL_PREFIX@__data_start = . ; + @SYMBOL_PREFIX@data_start = . ; + *(.got.plt) + *(.got) + FILL(0) ; + . = ALIGN(0x20) ; + LONG(-1) + . = ALIGN(0x20) ; +R_RODAT *(.rodata) +R_RODAT *(.rodata1) +R_RODAT *(.rodata.*) +R_RODAT *(.gnu.linkonce.r*) + *(.data) + *(.data1) + *(.data.*) + *(.gnu.linkonce.d*) + + /* Microblaze has .sdata and .sbss (small bss). They must + be contiguous, so please don't move any of this. JW */ + @SYMBOL_PREFIX@_ssrw = . ; + *(.sdata) + *(.sdata.*) + *(.sbss) /* Don't move this! */ + *(.gnu.linkonce.sb*) + @SYMBOL_PREFIX@_essrw = . ; + + @SYMBOL_PREFIX@_ssrw_size = @SYMBOL_PREFIX@_essrw - @SYMBOL_PREFIX@_ssrw; + PROVIDE(@SYMBOL_PREFIX@_SDA_BASE_ = @SYMBOL_PREFIX@_ssrw + (@SYMBOL_PREFIX@_ssrw_size / 2)); + + *(.gnu.linkonce.s.*) + *(__libc_atexit) + *(__libc_subinit) + *(__libc_subfreeres) + *(.note.ABI-tag) + + /* microblaze-specific read-only small data area + and associated locating symbols */ + @SYMBOL_PREFIX@_ssro = . ; + *(.sdata2) + @SYMBOL_PREFIX@_essro = . ; + @SYMBOL_PREFIX@_ssro_size = @SYMBOL_PREFIX@_essro - @SYMBOL_PREFIX@_ssro; + PROVIDE(@SYMBOL_PREFIX@_SDA2_BASE_ = @SYMBOL_PREFIX@_ssro + (@SYMBOL_PREFIX@_ssro_size / 2)); + + . = ALIGN(4) ; + @SYMBOL_PREFIX@__CTOR_LIST__ = .; + LONG((@SYMBOL_PREFIX@__CTOR_END__ - @SYMBOL_PREFIX@__CTOR_LIST__) / 4 - 2) +SINGLE_LINK: /* gcc uses crtbegin.o to find the start of +SINGLE_LINK: the constructors, so we make sure it is +SINGLE_LINK: first. Because this is a wildcard, it +SINGLE_LINK: doesn't matter if the user does not +SINGLE_LINK: actually link against crtbegin.o; the +SINGLE_LINK: linker won't look for a file to match a +SINGLE_LINK: wildcard. The wildcard also means that it +SINGLE_LINK: doesn't matter which directory crtbegin.o +SINGLE_LINK: is in. */ +SINGLE_LINK: KEEP (*crtbegin*.o(.ctors)) +SINGLE_LINK: /* We don't want to include the .ctor section from +SINGLE_LINK: from the crtend.o file until after the sorted ctors. +SINGLE_LINK: The .ctor section from the crtend file contains the +SINGLE_LINK: end of ctors marker and it must be last */ +SINGLE_LINK: KEEP (*(EXCLUDE_FILE (*crtend*.o ) .ctors)) +SINGLE_LINK: KEEP (*(SORT(.ctors.*))) + KEEP (*(.ctors)) + LONG(0) + @SYMBOL_PREFIX@__CTOR_END__ = .; + @SYMBOL_PREFIX@__DTOR_LIST__ = .; + LONG((@SYMBOL_PREFIX@__DTOR_END__ - @SYMBOL_PREFIX@__DTOR_LIST__) / 4 - 2) +SINGLE_LINK: KEEP (*crtbegin*.o(.dtors)) +SINGLE_LINK: KEEP (*(EXCLUDE_FILE (*crtend*.o ) .dtors)) +SINGLE_LINK: KEEP (*(SORT(.dtors.*))) + KEEP (*(.dtors)) + LONG(0) + @SYMBOL_PREFIX@__DTOR_END__ = .; + + PROVIDE (@SYMBOL_PREFIX@__preinit_array_start = .); + KEEP (*(.preinit_array)) + PROVIDE (@SYMBOL_PREFIX@__preinit_array_end = .); + + PROVIDE (@SYMBOL_PREFIX@__init_array_start = .); + KEEP (*(SORT(.init_array.*))) + KEEP (*(.init_array)) + PROVIDE (@SYMBOL_PREFIX@__init_array_end = .); + + PROVIDE (@SYMBOL_PREFIX@__fini_array_start = .); + KEEP (*(.fini_array)) + KEEP (*(SORT(.fini_array.*))) + PROVIDE (@SYMBOL_PREFIX@__fini_array_end = .); + } > flatmem + + .eh_frame_hdr : { *(.eh_frame_hdr) } > flatmem + .eh_frame : { KEEP(*(.eh_frame)) } > flatmem + .gcc_except_table : { KEEP(*(.gcc_except_table)) } >flatmem + + . = ALIGN(0x10) ; + @SYMBOL_PREFIX@_edata = . ; + + .bss : { + . = ALIGN(0x4) ; + @SYMBOL_PREFIX@_sbss = ALIGN(0x4) ; + @SYMBOL_PREFIX@__bss_start = . ; + *(.dynsbss) + *(.sbss) + *(.sbss.*) + *(.scommon) + *(.dynbss) + *(.bss) + *(.bss.*) + *(.bss*) + *(.gnu.linkonce.b*) + *(COMMON) + . = ALIGN(0x10) ; + @SYMBOL_PREFIX@_ebss = . ; + @SYMBOL_PREFIX@_end = . ; + @SYMBOL_PREFIX@end = . ; + } > flatmem + + .stack : { + . = ALIGN(0x4); + @SYMBOL_PREFIX@_stack_start = .; + } + + .junk 0 : { *(.rel*) *(.rela*) } + /DISCARD/ : { *(.note.GNU-stack) } + /* Stabs debugging sections. */ + .stab 0 : { *(.stab) } + .stabstr 0 : { *(.stabstr) } + .stab.excl 0 : { *(.stab.excl) } + .stab.exclstr 0 : { *(.stab.exclstr) } + .stab.index 0 : { *(.stab.index) } + .stab.indexstr 0 : { *(.stab.indexstr) } + .comment 0 : { *(.comment) } + /* DWARF debug sections. + Symbols in the DWARF debugging sections are relative to the beginning + of the section so we begin them at 0. */ + /* DWARF 1 */ + .debug 0 : { *(.debug) } + .line 0 : { *(.line) } + /* GNU DWARF 1 extensions */ + .debug_srcinfo 0 : { *(.debug_srcinfo) } + .debug_sfnames 0 : { *(.debug_sfnames) } + /* DWARF 1.1 and DWARF 2 */ + .debug_aranges 0 : { *(.debug_aranges) } + .debug_pubnames 0 : { *(.debug_pubnames) } + /* DWARF 2 */ + .debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) } + .debug_abbrev 0 : { *(.debug_abbrev) } + .debug_line 0 : { *(.debug_line) } + .debug_frame 0 : { *(.debug_frame) } + .debug_str 0 : { *(.debug_str) } + .debug_loc 0 : { *(.debug_loc) } + .debug_macinfo 0 : { *(.debug_macinfo) } + /* SGI/MIPS DWARF 2 extensions */ + .debug_weaknames 0 : { *(.debug_weaknames) } + .debug_funcnames 0 : { *(.debug_funcnames) } + .debug_typenames 0 : { *(.debug_typenames) } + .debug_varnames 0 : { *(.debug_varnames) } +}