aboutsummaryrefslogtreecommitdiff
path: root/bfd
diff options
context:
space:
mode:
authorMichael Meissner <gnu@the-meissners.org>1999-11-28 03:26:42 +0000
committerMichael Meissner <gnu@the-meissners.org>1999-11-28 03:26:42 +0000
commitfe174262ec809e88057406cdc87f243c04dba458 (patch)
tree721ea1786d92128ca9bb9ba12f755552b3db193c /bfd
parente4dabd0ef53d766ea2b01478cfabd989b5b77995 (diff)
downloadfsf-binutils-gdb-fe174262ec809e88057406cdc87f243c04dba458.zip
fsf-binutils-gdb-fe174262ec809e88057406cdc87f243c04dba458.tar.gz
fsf-binutils-gdb-fe174262ec809e88057406cdc87f243c04dba458.tar.bz2
Add new relocations for alpha explicit relocation support
Diffstat (limited to 'bfd')
-rw-r--r--bfd/ChangeLog17
-rw-r--r--bfd/bfd-in2.h11
-rw-r--r--bfd/elf64-alpha.c11
-rw-r--r--bfd/libbfd.h7
-rw-r--r--bfd/reloc.c19
5 files changed, 65 insertions, 0 deletions
diff --git a/bfd/ChangeLog b/bfd/ChangeLog
index d82166a..2a2ff7b 100644
--- a/bfd/ChangeLog
+++ b/bfd/ChangeLog
@@ -1,3 +1,20 @@
+1999-11-27 Michael Meissner <meissner@cygnus.com>
+
+ * reloc.c (BFD_RELOC_ALPHA_USER_LITERAL): New relocation for
+ internal use within gas for alpha explicit relocations.
+ (BFD_RELOC_ALPHA_USER_LITUSE_BASE): Ditto.
+ (BFD_RELOC_ALPHA_USER_LITUSE_BYTOFF): Ditto.
+ (BFD_RELOC_ALPHA_USER_LITUSE_JSR): Ditto.
+ (BFD_RELOC_ALPHA_USER_GPDISP): Ditto.
+ (BFD_RELOC_ALPHA_USER_GPRELHIGH): Ditto.
+ (BFD_RELOC_ALPHA_USER_GPRELLOW): Ditto.
+
+ * elf64-alpha.c (elf64_alpha_reloc_map): Add mappings for
+ BFD_RELOC_ALPHA_USER_*.
+
+ * bfd-in2.h: Regenerate.
+ * libbfd.h: Regenerate.
+
1999-11-26 Fred Fish <fnf@cygnus.com>
* elf.c (elfcore_read_notes): Add prototype for static function.
diff --git a/bfd/bfd-in2.h b/bfd/bfd-in2.h
index a3ca2bf..9fe0cfb 100644
--- a/bfd/bfd-in2.h
+++ b/bfd/bfd-in2.h
@@ -1830,6 +1830,17 @@ The GNU linker currently doesn't do any of this optimizing. */
BFD_RELOC_ALPHA_ELF_LITERAL,
BFD_RELOC_ALPHA_LITUSE,
+/* The BFD_RELOC_ALPHA_USER_* relocations are used by the assembler to
+process the explicit !<reloc>!sequence relocations, and are mapped
+into the normal relocations at the end of processing. */
+ BFD_RELOC_ALPHA_USER_LITERAL,
+ BFD_RELOC_ALPHA_USER_LITUSE_BASE,
+ BFD_RELOC_ALPHA_USER_LITUSE_BYTOFF,
+ BFD_RELOC_ALPHA_USER_LITUSE_JSR,
+ BFD_RELOC_ALPHA_USER_GPDISP,
+ BFD_RELOC_ALPHA_USER_GPRELHIGH,
+ BFD_RELOC_ALPHA_USER_GPRELLOW,
+
/* The HINT relocation indicates a value that should be filled into the
"hint" field of a jmp/jsr/ret instruction, for possible branch-
prediction logic which may be provided on some processors. */
diff --git a/bfd/elf64-alpha.c b/bfd/elf64-alpha.c
index 2a0cdb5..3a14bcc 100644
--- a/bfd/elf64-alpha.c
+++ b/bfd/elf64-alpha.c
@@ -972,6 +972,17 @@ static const struct elf_reloc_map elf64_alpha_reloc_map[] =
{BFD_RELOC_16_PCREL, R_ALPHA_SREL16},
{BFD_RELOC_32_PCREL, R_ALPHA_SREL32},
{BFD_RELOC_64_PCREL, R_ALPHA_SREL64},
+
+/* The BFD_RELOC_ALPHA_USER_* relocations are used by the assembler to process
+ the explicit !<reloc>!sequence relocations, and are mapped into the normal
+ relocations at the end of processing. */
+ {BFD_RELOC_ALPHA_USER_LITERAL, R_ALPHA_LITERAL},
+ {BFD_RELOC_ALPHA_USER_LITUSE_BASE, R_ALPHA_LITUSE},
+ {BFD_RELOC_ALPHA_USER_LITUSE_BYTOFF, R_ALPHA_LITUSE},
+ {BFD_RELOC_ALPHA_USER_LITUSE_JSR, R_ALPHA_LITUSE},
+ {BFD_RELOC_ALPHA_USER_GPDISP, R_ALPHA_GPDISP},
+ {BFD_RELOC_ALPHA_USER_GPRELHIGH, R_ALPHA_GPRELHIGH},
+ {BFD_RELOC_ALPHA_USER_GPRELLOW, R_ALPHA_GPRELLOW},
};
/* Given a BFD reloc type, return a HOWTO structure. */
diff --git a/bfd/libbfd.h b/bfd/libbfd.h
index 4918d26..26bf7ef 100644
--- a/bfd/libbfd.h
+++ b/bfd/libbfd.h
@@ -676,6 +676,13 @@ static const char *const bfd_reloc_code_real_names[] = { "@@uninitialized@@",
"BFD_RELOC_ALPHA_LITERAL",
"BFD_RELOC_ALPHA_ELF_LITERAL",
"BFD_RELOC_ALPHA_LITUSE",
+ "BFD_RELOC_ALPHA_USER_LITERAL",
+ "BFD_RELOC_ALPHA_USER_LITUSE_BASE",
+ "BFD_RELOC_ALPHA_USER_LITUSE_BYTOFF",
+ "BFD_RELOC_ALPHA_USER_LITUSE_JSR",
+ "BFD_RELOC_ALPHA_USER_GPDISP",
+ "BFD_RELOC_ALPHA_USER_GPRELHIGH",
+ "BFD_RELOC_ALPHA_USER_GPRELLOW",
"BFD_RELOC_ALPHA_HINT",
"BFD_RELOC_ALPHA_LINKAGE",
"BFD_RELOC_ALPHA_CODEADDR",
diff --git a/bfd/reloc.c b/bfd/reloc.c
index e749b60..a0db15f 100644
--- a/bfd/reloc.c
+++ b/bfd/reloc.c
@@ -1961,6 +1961,25 @@ ENUMDOC
The GNU linker currently doesn't do any of this optimizing.
ENUM
+ BFD_RELOC_ALPHA_USER_LITERAL
+ENUMX
+ BFD_RELOC_ALPHA_USER_LITUSE_BASE
+ENUMX
+ BFD_RELOC_ALPHA_USER_LITUSE_BYTOFF
+ENUMX
+ BFD_RELOC_ALPHA_USER_LITUSE_JSR
+ENUMX
+ BFD_RELOC_ALPHA_USER_GPDISP
+ENUMX
+ BFD_RELOC_ALPHA_USER_GPRELHIGH
+ENUMX
+ BFD_RELOC_ALPHA_USER_GPRELLOW
+ENUMDOC
+ The BFD_RELOC_ALPHA_USER_* relocations are used by the assembler to
+ process the explicit !<reloc>!sequence relocations, and are mapped
+ into the normal relocations at the end of processing.
+
+ENUM
BFD_RELOC_ALPHA_HINT
ENUMDOC
The HINT relocation indicates a value that should be filled into the