elf32_tic6x_le.sh 2.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  1. SCRIPT_NAME=elf
  2. TEMPLATE_NAME=elf32
  3. OUTPUT_FORMAT="elf32-tic6x-le"
  4. BIG_OUTPUT_FORMAT="elf32-tic6x-be"
  5. EXTRA_EM_FILE=tic6xdsbt
  6. GENERATE_SHLIB_SCRIPT=yes
  7. # This address is an arbitrary value expected to be suitable for
  8. # semihosting simulator use, but not on hardware where it is expected
  9. # to be overridden.
  10. case ${target} in
  11. *-elf)
  12. TEXT_START_ADDR=0x8000
  13. ;;
  14. *-uclinux)
  15. TEXT_START_ADDR=0x0
  16. GOT="
  17. .got ${RELOCATING-0} : {
  18. *(.dsbt)
  19. *(.got.plt) *(.igot.plt) *(.got) *(.igot)
  20. }"
  21. ;;
  22. esac
  23. MAXPAGESIZE="CONSTANT (MAXPAGESIZE)"
  24. ARCH=tic6x
  25. EXECUTABLE_SYMBOLS="EXTERN (__c6xabi_DSBT_BASE);"
  26. OTHER_GOT_SYMBOLS="PROVIDE_HIDDEN (__c6xabi_DSBT_BASE = .);"
  27. # ".bss" is near (small) BSS, ".far" is far (normal) BSS, ".const" is
  28. # far read-only data, ".rodata" is near read-only data. ".neardata"
  29. # is near (small) data, ".fardata" is (along with .data) far data.
  30. RODATA_NAME="const"
  31. SDATA_NAME="neardata"
  32. SBSS_NAME="bss"
  33. BSS_NAME="far"
  34. OTHER_READONLY_SECTIONS="
  35. .c6xabi.extab ${RELOCATING-0} : { *(.c6xabi.extab${RELOCATING+* .gnu.linkonce.c6xabiextab.*}) }
  36. ${RELOCATING+ PROVIDE_HIDDEN (__exidx_start = .); }
  37. .c6xabi.exidx ${RELOCATING-0} : { *(.c6xabi.exidx${RELOCATING+* .gnu.linkonce.c6xabiexidx.*}) }
  38. ${RELOCATING+ PROVIDE_HIDDEN (__exidx_end = .); }"
  39. OTHER_SDATA_SECTIONS=".rodata ${RELOCATING-0} : { *(.rodata${RELOCATING+ .rodata.*}) }"
  40. OTHER_READONLY_RELOC_SECTIONS="
  41. .rel.rodata ${RELOCATING-0} : { *(.rel.rodata${RELOCATING+ .rel.rodata.*}) }
  42. .rela.rodata ${RELOCATING-0} : { *(.rela.rodata${RELOCATING+ .rela.rodata.*}) }"
  43. OTHER_READWRITE_SECTIONS=".fardata ${RELOCATING-0} : { *(.fardata${RELOCATING+ .fardata.*}) }"
  44. OTHER_READWRITE_RELOC_SECTIONS="
  45. .rel.fardata ${RELOCATING-0} : { *(.rel.fardata${RELOCATING+ .rel.fardata.*}) }
  46. .rela.fardata ${RELOCATING-0} : { *(.rela.fardata${RELOCATING+ .rela.fardata.*}) }"
  47. # For relocating operation, skip OTHER_BSS_SECTIONS, or will cause multiple definition.
  48. if [ ${RELOCATING-0} ]; then
  49. OTHER_BSS_SECTIONS="";
  50. else
  51. case ${target} in
  52. *-elf)
  53. OTHER_BSS_SECTIONS="
  54. .heap :
  55. {
  56. . = ALIGN(4);
  57. _HEAP_START = .;
  58. . += 0x2000000;
  59. _HEAP_MAX = .;
  60. }
  61. .stack :
  62. {
  63. . += 0x100000;
  64. _STACK_START = .;
  65. }"
  66. ;;
  67. esac
  68. fi
  69. ATTRS_SECTIONS='.c6xabi.attributes 0 : { KEEP (*(.c6xabi.attributes)) KEEP (*(.gnu.attributes)) }'