elf32mcore.sh 1.7 KB

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