summaryrefslogtreecommitdiffstats
path: root/contrib
diff options
context:
space:
mode:
authorobrien <obrien@FreeBSD.org>2001-05-28 06:19:25 +0000
committerobrien <obrien@FreeBSD.org>2001-05-28 06:19:25 +0000
commit65102a05c2f79d59b34632024bc734a1847dc832 (patch)
tree85b5afa29c00117465fa2a5d8c2fe16e0e890263 /contrib
parent587f109476c048e1392124b9c0f1f4e3d3b5dcac (diff)
downloadFreeBSD-src-65102a05c2f79d59b34632024bc734a1847dc832.zip
FreeBSD-src-65102a05c2f79d59b34632024bc734a1847dc832.tar.gz
We use the stock version of this file now.
I committed our rev 1.2 (start symbol) and 1.3 (max pagesize) fixes into the FSF/GNU source tree.
Diffstat (limited to 'contrib')
-rw-r--r--contrib/binutils/ld/emulparams/elf64alpha.sh54
1 files changed, 54 insertions, 0 deletions
diff --git a/contrib/binutils/ld/emulparams/elf64alpha.sh b/contrib/binutils/ld/emulparams/elf64alpha.sh
index 2e6e915..98d65b2 100644
--- a/contrib/binutils/ld/emulparams/elf64alpha.sh
+++ b/contrib/binutils/ld/emulparams/elf64alpha.sh
@@ -1,3 +1,6 @@
+# $FreeBSD$
+
+
ENTRY=_start
SCRIPT_NAME=elf
ELFSIZE=64
@@ -13,3 +16,54 @@ DATA_PLT=
NOP=0x47ff041f
OTHER_READONLY_SECTIONS='.reginfo : { *(.reginfo) }'
+
+# This code gets inserted into the generic elf32.sc linker script
+# and allows us to define our own command line switches.
+PARSE_AND_LIST_PROLOGUE='
+#define OPTION_TASO 300
+/* Set the start address as in the Tru64 ld */
+#define ALPHA_TEXT_START_32BIT 0x12000000
+
+static int elf64alpha_32bit = 0;
+
+struct ld_emulation_xfer_struct ld_elf64alpha_emulation;
+static void gld_elf64alpha_finish ();
+'
+
+PARSE_AND_LIST_LONGOPTS='
+ {"taso", no_argument, NULL, OPTION_TASO},
+'
+
+PARSE_AND_LIST_OPTIONS='
+ fprintf (file, _(" -taso\t\t\tLoad executable in the lower 31-bit addressable\n"));
+ fprintf (file, _("\t\t\t virtual address range\n"));
+'
+
+PARSE_AND_LIST_ARGS_CASES='
+ case EOF:
+ if (elf64alpha_32bit && !link_info.shared && !link_info.relocateable)
+ {
+ lang_section_start (".interp",
+ exp_binop ('\''+'\'',
+ exp_intop (ALPHA_TEXT_START_32BIT),
+ exp_nameop (SIZEOF_HEADERS, NULL)));
+ ld_elf64alpha_emulation.finish = gld_elf64alpha_finish;
+ }
+ return 0;
+
+ case OPTION_TASO:
+ elf64alpha_32bit = 1;
+ break;
+'
+
+PARSE_AND_LIST_EPILOGUE='
+#include "elf/internal.h"
+#include "elf/alpha.h"
+#include "elf-bfd.h"
+
+static void
+gld_elf64alpha_finish()
+{
+ elf_elfheader (output_bfd)->e_flags |= EF_ALPHA_32BIT;
+}
+'
OpenPOWER on IntegriCloud