summaryrefslogtreecommitdiff
path: root/ld/emulparams/elf64bmip.sh
diff options
context:
space:
mode:
Diffstat (limited to 'ld/emulparams/elf64bmip.sh')
-rw-r--r--ld/emulparams/elf64bmip.sh23
1 files changed, 23 insertions, 0 deletions
diff --git a/ld/emulparams/elf64bmip.sh b/ld/emulparams/elf64bmip.sh
new file mode 100644
index 0000000..0df6528
--- /dev/null
+++ b/ld/emulparams/elf64bmip.sh
@@ -0,0 +1,23 @@
+. ${srcdir}/emulparams/elf64bmip-defs.sh
+OUTPUT_FORMAT="elf64-bigmips"
+BIG_OUTPUT_FORMAT="elf64-bigmips"
+LITTLE_OUTPUT_FORMAT="elf64-littlemips"
+SHLIB_TEXT_START_ADDR=0x3ffffe0000
+
+# IRIX6 defines these symbols. 0x40 is the size of the ELF header.
+EXECUTABLE_SYMBOLS="
+ __dso_displacement = 0;
+ ${CREATE_SHLIB-${CREATE_PIE-__elf_header = ${TEXT_START_ADDR};}}
+ ${CREATE_SHLIB+__elf_header = ${SHLIB_TEXT_START_ADDR};}
+ ${CREATE_PIE+__elf_header = ${SHLIB_TEXT_START_ADDR};}
+ __program_header_table = __elf_header + 0x40;
+"
+
+# There are often dynamic relocations against the .rodata section.
+# Setting DT_TEXTREL in the .dynamic section does not convince the
+# IRIX6 linker to permit relocations against the text segment.
+# Following the IRIX linker, we simply put .rodata in the data
+# segment.
+WRITABLE_RODATA=
+
+EXTRA_EM_FILE=irix