elf32mcore.sh 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. SCRIPT_NAME=elf
  2. OUTPUT_FORMAT="elf32-mcore-little"
  3. BIG_OUTPUT_FORMAT="elf32-mcore-big"
  4. LITTLE_OUTPUT_FORMAT="elf32-mcore-little"
  5. NO_REL_RELOCS=yes
  6. PAGE_SIZE=0x1000
  7. TARGET_PAGE_SIZE=0x400
  8. MAXPAGESIZE="CONSTANT (MAXPAGESIZE)"
  9. TEXT_START_ADDR=0
  10. ARCH=mcore
  11. EMBEDDED=yes
  12. # There is a problem with the NOP value - it must work for both
  13. # big endian and little endian systems. Unfortunately there is
  14. # no symmetrical mcore opcode that functions as a noop. The
  15. # chosen solution is to use "tst r0, r14". This is a symetrical
  16. # value, and apart from the corruption of the C bit, it has no other
  17. # side effects. Since the carry bit is never tested without being
  18. # explicitly set first, and since the NOP code is only used as a
  19. # fill value between independantly viable peices of code, it should
  20. # not matter.
  21. NOP=0x0e0e0e0e
  22. OTHER_BSS_SYMBOLS="__bss_start__ = . ;"
  23. OTHER_BSS_END_SYMBOLS="__bss_end__ = . ;"
  24. # This sets the stack to the top of the simulator memory (2^19 bytes).
  25. STACK_ADDR=0x80000
  26. TEMPLATE_NAME=elf32
  27. GENERATE_SHLIB_SCRIPT=yes
  28. # This code gets inserted into the generic elf32.sc linker script
  29. # and allows us to define our own command line switches.
  30. PARSE_AND_LIST_PROLOGUE='
  31. #define OPTION_BASE_FILE 300
  32. '
  33. PARSE_AND_LIST_LONGOPTS='
  34. {"base-file", required_argument, NULL, OPTION_BASE_FILE},
  35. '
  36. PARSE_AND_LIST_OPTIONS='
  37. fprintf (file, _(" --base_file <basefile>\n"));
  38. fprintf (file, _("\t\t\tGenerate a base file for relocatable DLLs\n"));
  39. '
  40. PARSE_AND_LIST_ARGS_CASES='
  41. case OPTION_BASE_FILE:
  42. link_info.base_file = fopen (optarg, FOPEN_WB);
  43. if (link_info.base_file == NULL)
  44. einfo (_("%F%P: cannot open base file %s\n"), optarg);
  45. break;
  46. '