| 1 | # This is an ELF platform. |
| 2 | SCRIPT_NAME=elf |
| 3 | ARCH=riscv |
| 4 | NO_REL_RELOCS=yes |
| 5 | |
| 6 | TEMPLATE_NAME=elf |
| 7 | EXTRA_EM_FILE=riscvelf |
| 8 | |
| 9 | ELFSIZE=32 |
| 10 | |
| 11 | if test `echo "$host" | sed -e s/64//` = `echo "$target" | sed -e s/64//`; then |
| 12 | case " $EMULATION_LIBPATH " in |
| 13 | *" ${EMULATION_NAME} "*) |
| 14 | NATIVE=yes |
| 15 | ;; |
| 16 | esac |
| 17 | fi |
| 18 | |
| 19 | # Enable shared library support for everything except an embedded elf target. |
| 20 | case "$target" in |
| 21 | riscv*-elf) |
| 22 | ;; |
| 23 | *) |
| 24 | GENERATE_SHLIB_SCRIPT=yes |
| 25 | GENERATE_PIE_SCRIPT=yes |
| 26 | ;; |
| 27 | esac |
| 28 | |
| 29 | TEXT_START_ADDR=0x10000 |
| 30 | MAXPAGESIZE="CONSTANT (MAXPAGESIZE)" |
| 31 | COMMONPAGESIZE="CONSTANT (COMMONPAGESIZE)" |
| 32 | |
| 33 | DATA_START_SYMBOLS="${CREATE_SHLIB-__DATA_BEGIN__ = .;}" |
| 34 | |
| 35 | SDATA_START_SYMBOLS="${CREATE_SHLIB-__SDATA_BEGIN__ = .;} |
| 36 | *(.srodata.cst16) *(.srodata.cst8) *(.srodata.cst4) *(.srodata.cst2) *(.srodata .srodata.*)" |
| 37 | |
| 38 | INITIAL_READONLY_SECTIONS=".interp : { *(.interp) } ${CREATE_PIE-${INITIAL_READONLY_SECTIONS}}" |
| 39 | INITIAL_READONLY_SECTIONS="${RELOCATING+${CREATE_SHLIB-${INITIAL_READONLY_SECTIONS}}}" |
| 40 | |
| 41 | # We must cover as much of sdata as possible if it exists. If sdata+bss is |
| 42 | # smaller than 0x1000 then we should start from bss end to cover as much of |
| 43 | # the program as possible. But we can't allow gp to cover any of rodata, as |
| 44 | # the address of variables in rodata may change during relaxation, so we start |
| 45 | # from data in that case. |
| 46 | OTHER_END_SYMBOLS="${CREATE_SHLIB-__BSS_END__ = .; |
| 47 | __global_pointer$ = MIN(__SDATA_BEGIN__ + 0x800, |
| 48 | MAX(__DATA_BEGIN__ + 0x800, __BSS_END__ - 0x800));}" |