summaryrefslogtreecommitdiff
path: root/ld/emultempl/vxworks.em
diff options
context:
space:
mode:
authorRichard Sandiford <rsandifo@nildram.co.uk>2006-03-03 09:32:01 +0000
committerRichard Sandiford <rsandifo@nildram.co.uk>2006-03-03 09:32:01 +0000
commit0723dd0c14c9a75a193a17e3c8d6ba15039c8471 (patch)
tree6514e6e996e717835d4b334cb2a04ad0c91a48f7 /ld/emultempl/vxworks.em
parente7cf3de1be86eb7c02a3424a6e331628e4b965b9 (diff)
downloadbinutils-redhat-0723dd0c14c9a75a193a17e3c8d6ba15039c8471.tar.gz
ld/
* emulparams/vxworks.sh (VXWORKS_BASE_EM_FILE): New variable. (EXTRA_EM_FILE): Define. * emultempl/vxworks.em: New file. * ld.texinfo (--force-dynamic): Document. * Makefile.am (eelf32ppcvxworks.cm, eelf_i386_vxworks.c): Depend on vxworks.em. * Makefile.in: Regenerate. ld/testsuite/ * ld-i386/vxworks1-static.d, ld-i386/vxworks2.s, * ld-i386/vxworks2.sd, ld-i386/vxworks2-static.sd: New tests. * ld-i386/i386.exp: Run them. * ld-powerpc/vxworks1-static.d, ld-powerpc/vxworks2.s, * ld-powerpc/vxworks2.sd, ld-powerpc/vxworks2-static.sd: New tests. * ld-powerpc/powerpc.exp: Run them.
Diffstat (limited to 'ld/emultempl/vxworks.em')
-rw-r--r--ld/emultempl/vxworks.em49
1 files changed, 49 insertions, 0 deletions
diff --git a/ld/emultempl/vxworks.em b/ld/emultempl/vxworks.em
new file mode 100644
index 0000000000..eafbb58d8e
--- /dev/null
+++ b/ld/emultempl/vxworks.em
@@ -0,0 +1,49 @@
+if test -n "$VXWORKS_BASE_EM_FILE" ; then
+. "${srcdir}/emultempl/${VXWORKS_BASE_EM_FILE}.em"
+fi
+
+cat >>e${EMULATION_NAME}.c <<EOF
+
+static int force_dynamic;
+
+static void
+vxworks_after_open (void)
+{
+ ${LDEMUL_AFTER_OPEN-gld${EMULATION_NAME}_after_open} ();
+
+ if (force_dynamic
+ && link_info.input_bfds
+ && !_bfd_elf_link_create_dynamic_sections (link_info.input_bfds,
+ &link_info))
+ einfo ("%X%P: Cannot create dynamic sections %E\n");
+
+ if (!force_dynamic
+ && !link_info.shared
+ && elf_hash_table (&link_info)->dynamic_sections_created)
+ einfo ("%X%P: Dynamic sections created in non-dynamic link\n");
+}
+
+EOF
+
+PARSE_AND_LIST_PROLOGUE=$PARSE_AND_LIST_PROLOGUE'
+enum {
+ OPTION_FORCE_DYNAMIC = 501
+};
+'
+
+PARSE_AND_LIST_LONGOPTS=$PARSE_AND_LIST_LONGOPTS'
+ {"force-dynamic", no_argument, NULL, OPTION_FORCE_DYNAMIC},
+'
+
+PARSE_AND_LIST_OPTIONS=$PARSE_AND_LIST_OPTIONS'
+ fprintf (file, _("\
+ --force-dynamic Always create dynamic sections\n"));
+'
+
+PARSE_AND_LIST_ARGS_CASES=$PARSE_AND_LIST_ARGS_CASES'
+ case OPTION_FORCE_DYNAMIC:
+ force_dynamic = 1;
+ break;
+'
+
+LDEMUL_AFTER_OPEN=vxworks_after_open