Don't define _FORTIFY_SOURCE on MinGW
[deliverable/binutils-gdb.git] / ld / emulparams / elf32lriscv-defs.sh
index 0eba0d1a0cb39a082b4022b64b9a9145da6213b3..bc464918e5cb5d68f4b09d1c22bdcfb510fece43 100644 (file)
@@ -3,7 +3,7 @@ SCRIPT_NAME=elf
 ARCH=riscv
 NO_REL_RELOCS=yes
 
-TEMPLATE_NAME=elf32
+TEMPLATE_NAME=elf
 EXTRA_EM_FILE=riscvelf
 
 ELFSIZE=32
@@ -16,15 +16,33 @@ if test `echo "$host" | sed -e s/64//` = `echo "$target" | sed -e s/64//`; then
   esac
 fi
 
-GENERATE_SHLIB_SCRIPT=yes
-GENERATE_PIE_SCRIPT=yes
+# Enable shared library support for everything except an embedded elf target.
+case "$target" in
+  riscv*-elf)
+    ;;
+  *)
+    GENERATE_SHLIB_SCRIPT=yes
+    GENERATE_PIE_SCRIPT=yes
+    ;;
+esac
 
 TEXT_START_ADDR=0x10000
 MAXPAGESIZE="CONSTANT (MAXPAGESIZE)"
 COMMONPAGESIZE="CONSTANT (COMMONPAGESIZE)"
 
-SDATA_START_SYMBOLS="_gp = . + 0x800;
+DATA_START_SYMBOLS="${CREATE_SHLIB-__DATA_BEGIN__ = .;}"
+
+SDATA_START_SYMBOLS="${CREATE_SHLIB-__SDATA_BEGIN__ = .;}
     *(.srodata.cst16) *(.srodata.cst8) *(.srodata.cst4) *(.srodata.cst2) *(.srodata .srodata.*)"
 
 INITIAL_READONLY_SECTIONS=".interp         : { *(.interp) } ${CREATE_PIE-${INITIAL_READONLY_SECTIONS}}"
 INITIAL_READONLY_SECTIONS="${RELOCATING+${CREATE_SHLIB-${INITIAL_READONLY_SECTIONS}}}"
+
+# We must cover as much of sdata as possible if it exists.  If sdata+bss is
+# smaller than 0x1000 then we should start from bss end to cover as much of
+# the program as possible.  But we can't allow gp to cover any of rodata, as
+# the address of variables in rodata may change during relaxation, so we start
+# from data in that case.
+OTHER_END_SYMBOLS="${CREATE_SHLIB-__BSS_END__ = .;
+    __global_pointer$ = MIN(__SDATA_BEGIN__ + 0x800,
+                           MAX(__DATA_BEGIN__ + 0x800, __BSS_END__ - 0x800));}"
This page took 0.02483 seconds and 4 git commands to generate.