diff options
author | Michael Meissner <gnu@the-meissners.org> | 1999-11-28 03:26:42 +0000 |
---|---|---|
committer | Michael Meissner <gnu@the-meissners.org> | 1999-11-28 03:26:42 +0000 |
commit | fe174262ec809e88057406cdc87f243c04dba458 (patch) | |
tree | 721ea1786d92128ca9bb9ba12f755552b3db193c /bfd | |
parent | e4dabd0ef53d766ea2b01478cfabd989b5b77995 (diff) | |
download | fsf-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/ChangeLog | 17 | ||||
-rw-r--r-- | bfd/bfd-in2.h | 11 | ||||
-rw-r--r-- | bfd/elf64-alpha.c | 11 | ||||
-rw-r--r-- | bfd/libbfd.h | 7 | ||||
-rw-r--r-- | bfd/reloc.c | 19 |
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 |