X-Git-Url: http://git.efficios.com/?a=blobdiff_plain;f=ld%2Femulparams%2Felf32mcore.sh;h=88a8cb6e70b26e4a9ca70e4bb49aad2821a7bb47;hb=4f5bd88505801cb9b405c83a4faa4111475dbc62;hp=bd1fdae04c6868663082d3c405e6075fe00cf8d8;hpb=ed288bb597072176e84fc8279707a3f2f475779b;p=deliverable%2Fbinutils-gdb.git diff --git a/ld/emulparams/elf32mcore.sh b/ld/emulparams/elf32mcore.sh index bd1fdae04c..88a8cb6e70 100644 --- a/ld/emulparams/elf32mcore.sh +++ b/ld/emulparams/elf32mcore.sh @@ -1,12 +1,11 @@ SCRIPT_NAME=elf -OUTPUT_FORMAT="elf32-mcore-big" +OUTPUT_FORMAT="elf32-mcore-little" BIG_OUTPUT_FORMAT="elf32-mcore-big" LITTLE_OUTPUT_FORMAT="elf32-mcore-little" -PAGE_SIZE=0x1000 +NO_REL_RELOCS=yes TARGET_PAGE_SIZE=0x400 -MAXPAGESIZE=0x1000 +MAXPAGESIZE="CONSTANT (MAXPAGESIZE)" TEXT_START_ADDR=0 -NONPAGED_TEXT_START_ADDR=0 ARCH=mcore EMBEDDED=yes @@ -19,14 +18,34 @@ EMBEDDED=yes # explicitly set first, and since the NOP code is only used as a # fill value between independantly viable peices of code, it should # not matter. -NOP=0x0e0e +NOP=0x0e0e0e0e -OTHER_BSS_SYMBOLS="__bss_start__ = . ;" -OTHER_BSS_END_SYMBOLS="__bss_end__ = . ;" +OTHER_BSS_SYMBOLS="${CREATE_SHLIB+PROVIDE (}__bss_start__ = .${CREATE_SHLIB+)};" +OTHER_BSS_END_SYMBOLS="${CREATE_SHLIB+PROVIDE (}__bss_end__ = .${CREATE_SHLIB+)};" -# Hmmm, there's got to be a better way. This sets the stack to the -# top of the simulator memory (2^19 bytes). -OTHER_RELOCATING_SECTIONS='.stack 0x80000 : { _stack = .; *(.stack) }' +# This sets the stack to the top of the simulator memory (2^19 bytes). +STACK_ADDR=0x80000 -TEMPLATE_NAME=elf32 -GENERATE_SHLIB_SCRIPT=yes +TEMPLATE_NAME=elf + +# This code gets inserted into the generic elf32.sc linker script +# and allows us to define our own command line switches. +PARSE_AND_LIST_PROLOGUE=' +#define OPTION_BASE_FILE 300 +' + +PARSE_AND_LIST_LONGOPTS=' + {"base-file", required_argument, NULL, OPTION_BASE_FILE}, +' + +PARSE_AND_LIST_OPTIONS=' + fprintf (file, _(" --base_file Generate a base file for relocatable DLLs\n")); +' + +PARSE_AND_LIST_ARGS_CASES=' + case OPTION_BASE_FILE: + link_info.base_file = fopen (optarg, FOPEN_WB); + if (link_info.base_file == NULL) + einfo (_("%F%P: cannot open base file %s\n"), optarg); + break; +'