aboutsummaryrefslogtreecommitdiff
path: root/ld/emulparams
diff options
context:
space:
mode:
Diffstat (limited to 'ld/emulparams')
-rw-r--r--ld/emulparams/elf_i386_vxworks.sh14
-rw-r--r--ld/emulparams/vxworks.sh25
2 files changed, 39 insertions, 0 deletions
diff --git a/ld/emulparams/elf_i386_vxworks.sh b/ld/emulparams/elf_i386_vxworks.sh
new file mode 100644
index 0000000..8bce8f7
--- /dev/null
+++ b/ld/emulparams/elf_i386_vxworks.sh
@@ -0,0 +1,14 @@
+SCRIPT_NAME=elf
+OUTPUT_FORMAT="elf32-i386-vxworks"
+TEXT_START_ADDR=0x08048000
+MAXPAGESIZE=0x1000
+COMMONPAGESIZE=0x1000
+NONPAGED_TEXT_START_ADDR=0x08048000
+ARCH=i386
+MACHINE=
+NOP=0x90909090
+TEMPLATE_NAME=elf32
+GENERATE_SHLIB_SCRIPT=yes
+GENERATE_PIE_SCRIPT=yes
+NO_SMALL_DATA=yes
+. ${srcdir}/emulparams/vxworks.sh
diff --git a/ld/emulparams/vxworks.sh b/ld/emulparams/vxworks.sh
new file mode 100644
index 0000000..01757a2
--- /dev/null
+++ b/ld/emulparams/vxworks.sh
@@ -0,0 +1,25 @@
+# If you change this file, please also look at files which source this one:
+# elf_i386_vxworks.sh elf32ppcvxworks.sh elf32ebmipvxworks.sh
+
+# The Diab tools use a different init/fini convention. Initialization code
+# is place in sections named ".init$NN". These sections are then concatenated
+# into the .init section. It is important that .init$00 be first and .init$99
+# be last. The other sections should be sorted, but the current linker script
+# parse does not seem to allow that with the SORT keyword in this context.
+INIT_START='_init = .;
+ KEEP (*(.init$00));
+ KEEP (*(.init$0[1-9]));
+ KEEP (*(.init$[1-8][0-9]));
+ KEEP (*(.init$9[0-8]));'
+INIT_END='KEEP (*(.init$99));'
+FINI_START='_fini = .;
+ KEEP (*(.fini$00));
+ KEEP (*(.fini$0[1-9]));
+ KEEP (*(.fini$[1-8][0-9]));
+ KEEP (*(.fini$9[0-8]));'
+FINI_END='KEEP (*(.fini$99));
+ PROVIDE (_etext = .);'
+
+ETEXT_NAME=etext_unrelocated
+OTHER_END_SYMBOLS="PROVIDE (_ehdr = ${TEXT_START_ADDR});"
+DATA_END_SYMBOLS=".edata : { PROVIDE (_edata = .); }"