1999-05-07 15:33:44 +08:00
|
|
|
SCRIPT_NAME=elf
|
1999-11-04 02:19:22 +08:00
|
|
|
OUTPUT_FORMAT="elf32-mcore-little"
|
1999-05-07 15:33:44 +08:00
|
|
|
BIG_OUTPUT_FORMAT="elf32-mcore-big"
|
|
|
|
LITTLE_OUTPUT_FORMAT="elf32-mcore-little"
|
* scripttempl/elf.sc (NO_REL_RELOCS, NO_RELA_RELOCS, NON_ALLOC_DYN):
Handle these defines.
* emulparams/criself.sh, * emulparams/crislinux.sh,
* emulparams/elf32am33lin.sh, * emulparams/elf32fr30.sh,
* emulparams/elf32_i860.sh, * emulparams/elf32ip2k.sh,
* emulparams/elf32mcore.sh, * emulparams/elf32ppccommon.sh,
* emulparams/elf32ppcwindiss.sh, * emulparams/elf32_sparc.sh,
* emulparams/elf32_spu.sh, * emulparams/elf32vax.sh,
* emulparams/elf64alpha.sh, * emulparams/elf64mmix.sh,
* emulparams/elf64ppc.sh, * emulparams/elf64_s390.sh,
* emulparams/elf64_sparc.sh, * emulparams/elf_s390.sh,
* emulparams/elf_x86_64.sh, * emulparams/h8300elf.sh,
* emulparams/hppa64linux.sh, * emulparams/hppalinux.sh,
* emulparams/m68kelf.sh, * emulparams/mn10200.sh,
* emulparams/pjelf.sh, * emulparams/ppclynx.sh,
* emulparams/shelf32.sh, * emulparams/shelf_nto.sh,
* emulparams/shelf.sh, * emulparams/shelf_vxworks.sh,
* emulparams/shlelf32_linux.sh, * emulparams/shlelf_linux.sh,
* emulparams/shlelf_nto.sh (NO_REL_RELOCS): Set.
* emulparams/arcelf.sh, * emulparams/elf32_i960.sh,
* emulparams/elf32openrisc.sh, * emulparams/elf_i386_be.sh,
* emulparams/elf_i386_ldso.sh, * emulparams/elf_i386.sh,
* emulparams/elf_i386_vxworks.sh, * emulparams/i386lynx.sh,
* emulparams/i386moss.sh, * emulparams/i386nto.sh,
* emulparams/or32elf.sh, * emulparams/scoreelf.sh (NO_RELA_RELOCS): Set.
2008-10-22 13:20:44 +08:00
|
|
|
NO_REL_RELOCS=yes
|
1999-05-07 15:33:44 +08:00
|
|
|
PAGE_SIZE=0x1000
|
|
|
|
TARGET_PAGE_SIZE=0x400
|
2006-05-31 00:45:32 +08:00
|
|
|
MAXPAGESIZE="CONSTANT (MAXPAGESIZE)"
|
1999-05-07 15:33:44 +08:00
|
|
|
TEXT_START_ADDR=0
|
|
|
|
ARCH=mcore
|
|
|
|
EMBEDDED=yes
|
|
|
|
|
|
|
|
# There is a problem with the NOP value - it must work for both
|
|
|
|
# big endian and little endian systems. Unfortunately there is
|
|
|
|
# no symmetrical mcore opcode that functions as a noop. The
|
|
|
|
# chosen solution is to use "tst r0, r14". This is a symetrical
|
|
|
|
# value, and apart from the corruption of the C bit, it has no other
|
|
|
|
# side effects. Since the carry bit is never tested without being
|
|
|
|
# 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.
|
2001-08-17 17:51:08 +08:00
|
|
|
NOP=0x0e0e0e0e
|
1999-05-07 15:33:44 +08:00
|
|
|
|
|
|
|
OTHER_BSS_SYMBOLS="__bss_start__ = . ;"
|
2005-08-05 12:29:57 +08:00
|
|
|
OTHER_BSS_END_SYMBOLS="__bss_end__ = . ;"
|
1999-05-07 15:33:44 +08:00
|
|
|
|
* Makefile.am (CONFIG_STATUS_DEPENDENCIES): Define.
(config.status): Delete rule.
Add extra dependencies to cover sourced emulparams files.
* Makefile.in: Regenerate.
* scripttempl/elf.sc: Order <section>, <section>.* and
corresponding linkonce sections as seen in input files.
Formatting fixes. Zero vma of all sections if not relocating.
(STACK): Define and insert if STACK_ADDR defined.
(OTHER_RELOCATING_SECTIONS): Delete.
(OTHER_END_SYMBOLS): Define.
(OTHER_READONLY_SECTIONS): Always insert, not just when relocating.
(OTHER_READWRITE_SECTIONS): Likewise.
(OTHER_GOT_SECTIONS): Likewise.
(OTHER_SDATA_SECTIONS): Likewise.
(OTHER_BSS_SECTIONS): Likewise.
* scripttempl/elfi370.sc (OTHER_READONLY_SECTIONS): Likewise.
(OTHER_READWRITE_SECTIONS): Likewise.
* scripttempl/nw.sc (OTHER_READONLY_SECTIONS): Likewise.
(OTHER_READWRITE_SECTIONS): Likewise
* emulparams/armelf.sh (OTHER_RELOCATING_SECTIONS): Delete.
(STACK_ADDR): Define.
* emulparams/armelf_oabi.sh: As for armelf.sh.
* emulparams/elf32mcore.sh: As for armelf.sh.
* emulparams/h8300elf.sh: As for armelf.sh.
* emulparams/mn10200.sh: As for armelf.sh.
* emulparams/shelf.sh: As for armelf.sh.
* emulparams/elf32fr30.sh (OTHER_RELOCATING_SECTIONS): Delete.
(OTHER_END_SYMBOLS): Define.
* emulparams/m32relf.sh: As for elf32fr30.sh.
* emulparams/h8300helf.sh: As for elf32fr30.sh.
* emulparams/h8300self.sh: As for elf32fr30.sh.
* emulparams/criself.sh (OTHER_READONLY_SECTIONS): Protect symbol
defines with RELOCATING test.
(OTHER_SDATA_SECTIONS): Likewise.
(OTHER_RELOCATING_SECTIONS): Delete, replacing with..
(OTHER_END_SYMBOLS): ..this.
* emulparams/crislinux.sh: As for criself.sh.
* emulparams/elf32bmipn32.sh (OTHER_SDATA_SECTIONS): Zero vma
if not relocating.
(OTHER_RELOCATING_SECTIONS): Delete, replacing with..
(OTHER_SECTIONS): ..this. Zero vma if not relocating. Order
normal and linkonce sections as seen in input files.
* emulparams/elf32bmip.sh (DATA_ADDR): Don't define if EMBEDDED.
(TEXT_DYNAMIC): Likewise.
(INITIAL_READONLY_SECTIONS): Zero vma if not relocating.
(OTHER_SDATA_SECTIONS): Likewise.
* emulparams/elf32ppc.sh (OTHER_READWRITE_SECTIONS): Likewise.
* emulparams/shlelf_linux.sh (OTHER_READWRITE_SECTIONS): Likewise.
* emulparams/elf64alpha.sh (OTHER_READONLY_SECTIONS): Likewise.
* emulparams/hppalinux.sh (OTHER_READONLY_SECTIONS): Likewise.
* emulparams/elf64_aix.sh (OTHER_GOT_SECTIONS): Likewise.
(OTHER_PLT_RELOC_SECTIONS): Likewise.
(OTHER_READONLY_SECTIONS): Likewise. Order normal and linkonce
sections as seen in input files.
* emulparams/elf64_ia64.sh: As for emulparams/elf64_aix.sh.
* emulparams/hppa64linux.sh (OTHER_READONLY_SECTIONS): Zero vma
if not relocating.
(OTHER_READWRITE_SECTIONS, OTHER_BSS_SECTIONS): Likewise.
(OTHER_BSS_END_SYMBOLS): Merge from elf64hppa.sh.
* emulparams/elf64mmix.sh (OTHER_RELOCATING_SECTIONS): Delete.
(OTHER_SECTIONS): Instead, use this..
(OTHER_END_SYMBOLS): ..and this.
* emulparams/elf32b4300.sh: Source elf32bmip.sh, remove duplicates.
* emulparams/elf32bsmip.sh: Likewise.
* emulparams/elf32btsmip.sh: Likewise.
* emulparams/elf32ebmip.sh: Likewise.
* emulparams/elf32lmip.sh: Likewise.
* emulparams/elf32elmip.sh: Source elf32lmip.sh, remove duplicates.
* emulparams/elf32lsmip.sh: Likewise.
* emulparams/elf32ltsmip.sh: Source elf32btsmip.sh, remove duplicates.
* emulparams/elf32l4300.sh: Source elf32b4300.sh, remove duplicates.
* emulparams/elf64bmip.sh: Source elf32bmipn32.sh, remove duplicates.
* emulparams/elf64btsmip.sh: Likewise.
* emulparams/elf64ltsmip.sh: Source elf64btsmip.sh, remove duplicates.
* emulparams/elf32lppc.sh: Source elf32ppc.sh, remove duplicates.
* emulparams/elf32ppclinux.sh: Likewise.
* emulparams/elf32ppcsim.sh: Likewise.
* emulparams/elf32lppcsim.sh: Source elf32lppc.sh, remove duplicates.
* emulparams/elf64hppa.sh: Source hppa64linux.sh, remove duplicates.
* emulparams/h8300helf.sh: Source h8300elf.sh, remove duplicates.
* emulparams/h8300self.sh: Likewise.
* emulparams/mn10300.sh: Source mn10200.sh, remove duplicates.
* emulparams/sh.sh: Comment.
* emulparams/shl.sh: Source sh.sh, remove duplicates.
* emulparams/shlelf.sh: Source shelf.sh, remove duplicates.
* emulparams/shelf_linux.sh: Source shlelf_linux.sh, remove duplicates.
2001-11-22 17:08:05 +08:00
|
|
|
# This sets the stack to the top of the simulator memory (2^19 bytes).
|
|
|
|
STACK_ADDR=0x80000
|
1999-05-16 22:02:47 +08:00
|
|
|
|
|
|
|
TEMPLATE_NAME=elf32
|
|
|
|
GENERATE_SHLIB_SCRIPT=yes
|
1999-08-23 17:13:56 +08:00
|
|
|
|
|
|
|
# This code gets inserted into the generic elf32.sc linker script
|
|
|
|
# and allows us to define our own command line switches.
|
2000-07-20 11:25:10 +08:00
|
|
|
PARSE_AND_LIST_PROLOGUE='
|
1999-08-23 17:13:56 +08:00
|
|
|
#define OPTION_BASE_FILE 300
|
2000-07-20 11:25:10 +08:00
|
|
|
'
|
1999-08-23 17:13:56 +08:00
|
|
|
|
2000-07-20 11:25:10 +08:00
|
|
|
PARSE_AND_LIST_LONGOPTS='
|
1999-08-23 17:13:56 +08:00
|
|
|
{"base-file", required_argument, NULL, OPTION_BASE_FILE},
|
2000-07-20 11:25:10 +08:00
|
|
|
'
|
1999-08-23 17:13:56 +08:00
|
|
|
|
2000-07-20 11:25:10 +08:00
|
|
|
PARSE_AND_LIST_OPTIONS='
|
|
|
|
fprintf (file, _(" --base_file <basefile>\n"));
|
|
|
|
fprintf (file, _("\t\t\tGenerate a base file for relocatable DLLs\n"));
|
|
|
|
'
|
1999-08-23 17:13:56 +08:00
|
|
|
|
2000-07-20 11:25:10 +08:00
|
|
|
PARSE_AND_LIST_ARGS_CASES='
|
1999-08-23 17:13:56 +08:00
|
|
|
case OPTION_BASE_FILE:
|
2003-06-28 13:28:54 +08:00
|
|
|
link_info.base_file = fopen (optarg, FOPEN_WB);
|
1999-08-23 17:13:56 +08:00
|
|
|
if (link_info.base_file == NULL)
|
2011-01-14 20:37:17 +08:00
|
|
|
einfo (_("%F%P: cannot open base file %s\n"), optarg);
|
1999-08-23 17:13:56 +08:00
|
|
|
break;
|
|
|
|
'
|