* sh.h (R_SH_SWITCH8, R_SH_GNU_VTINHERIT, R_SH_GNU_VTENTRY,

R_SH_LOOP_START,R_SH_LOOP_END): Move to "reserved" spaces.
(R_SH_DIR16, R_SH_DIR8, R_SH_DIR8UL, R_SH_DIR8UW, R_SH_DIR8U,
R_SH_DIR8SW, R_SH_DIR8S, R_SH_DIR4UL, R_SH_DIR4UW, R_SH_DIR4U,
R_SH_PSHA, R_SH_PSHL): New.

* elf32-sh.c (sh_elf_howto_table): R_SH_SWITCH8,
R_SH_GNU_VTINHERIT, R_SH_GNU_VTENTRY,
R_SH_LOOP_START,R_SH_LOOP_END moved to "reserved" spaces,
R_SH_DIR16, R_SH_DIR8, R_SH_DIR8UL, R_SH_DIR8UW, R_SH_DIR8U,
R_SH_DIR8SW, R_SH_DIR8S, R_SH_DIR4UL, R_SH_DIR4UW, R_SH_DIR4U,
R_SH_PSHA, R_SH_PSHL added.
(sh_reloc_map): Add R_SH_DIR16 and R_SH_DIR8.
(sh_elf_relocate_section): Support new relocs.
This commit is contained in:
DJ Delorie 2003-09-24 02:27:56 +00:00
parent f610c4f993
commit 5b9a5e6ca3
2 changed files with 37 additions and 12 deletions

View File

@ -1,3 +1,11 @@
2003-09-23 DJ Delorie <dj@redhat.com>
* sh.h (R_SH_SWITCH8, R_SH_GNU_VTINHERIT, R_SH_GNU_VTENTRY,
R_SH_LOOP_START,R_SH_LOOP_END): Move to "reserved" spaces.
(R_SH_DIR16, R_SH_DIR8, R_SH_DIR8UL, R_SH_DIR8UW, R_SH_DIR8U,
R_SH_DIR8SW, R_SH_DIR8S, R_SH_DIR4UL, R_SH_DIR4UW, R_SH_DIR4U,
R_SH_PSHA, R_SH_PSHL): New.
2003-09-11 James Cownie <jcownie@etnus.com> 2003-09-11 James Cownie <jcownie@etnus.com>
* dwarf2.h: Add HP dwarf extensions from their hacked gdb * dwarf2.h: Add HP dwarf extensions from their hacked gdb

View File

@ -83,8 +83,8 @@
#include "elf/reloc-macros.h" #include "elf/reloc-macros.h"
/* Relocations. */ /* Relocations. */
/* Relocations 25ff are GNU extensions. /* Relocations 10-32 and 128-255 are GNU extensions.
25..33 are used for relaxation and use the same constants as COFF uses. */ 25..32 and 10 are used for relaxation. */
START_RELOC_NUMBERS (elf_sh_reloc_type) START_RELOC_NUMBERS (elf_sh_reloc_type)
RELOC_NUMBER (R_SH_NONE, 0) RELOC_NUMBER (R_SH_NONE, 0)
RELOC_NUMBER (R_SH_DIR32, 1) RELOC_NUMBER (R_SH_DIR32, 1)
@ -96,8 +96,16 @@ START_RELOC_NUMBERS (elf_sh_reloc_type)
RELOC_NUMBER (R_SH_DIR8BP, 7) RELOC_NUMBER (R_SH_DIR8BP, 7)
RELOC_NUMBER (R_SH_DIR8W, 8) RELOC_NUMBER (R_SH_DIR8W, 8)
RELOC_NUMBER (R_SH_DIR8L, 9) RELOC_NUMBER (R_SH_DIR8L, 9)
FAKE_RELOC (R_SH_FIRST_INVALID_RELOC, 10)
FAKE_RELOC (R_SH_LAST_INVALID_RELOC, 24) RELOC_NUMBER (R_SH_LOOP_START, 10)
RELOC_NUMBER (R_SH_LOOP_END, 11)
FAKE_RELOC (R_SH_FIRST_INVALID_RELOC, 12)
FAKE_RELOC (R_SH_LAST_INVALID_RELOC, 21)
RELOC_NUMBER (R_SH_GNU_VTINHERIT, 22)
RELOC_NUMBER (R_SH_GNU_VTENTRY, 23)
RELOC_NUMBER (R_SH_SWITCH8, 24)
RELOC_NUMBER (R_SH_SWITCH16, 25) RELOC_NUMBER (R_SH_SWITCH16, 25)
RELOC_NUMBER (R_SH_SWITCH32, 26) RELOC_NUMBER (R_SH_SWITCH32, 26)
RELOC_NUMBER (R_SH_USES, 27) RELOC_NUMBER (R_SH_USES, 27)
@ -106,13 +114,19 @@ START_RELOC_NUMBERS (elf_sh_reloc_type)
RELOC_NUMBER (R_SH_CODE, 30) RELOC_NUMBER (R_SH_CODE, 30)
RELOC_NUMBER (R_SH_DATA, 31) RELOC_NUMBER (R_SH_DATA, 31)
RELOC_NUMBER (R_SH_LABEL, 32) RELOC_NUMBER (R_SH_LABEL, 32)
RELOC_NUMBER (R_SH_SWITCH8, 33)
RELOC_NUMBER (R_SH_GNU_VTINHERIT, 34) RELOC_NUMBER (R_SH_DIR16, 33)
RELOC_NUMBER (R_SH_GNU_VTENTRY, 35) RELOC_NUMBER (R_SH_DIR8, 34)
RELOC_NUMBER (R_SH_LOOP_START, 36) RELOC_NUMBER (R_SH_DIR8UL, 35)
RELOC_NUMBER (R_SH_LOOP_END, 37) RELOC_NUMBER (R_SH_DIR8UW, 36)
FAKE_RELOC (R_SH_FIRST_INVALID_RELOC_2, 38) RELOC_NUMBER (R_SH_DIR8U, 37)
FAKE_RELOC (R_SH_LAST_INVALID_RELOC_2, 44) RELOC_NUMBER (R_SH_DIR8SW, 38)
RELOC_NUMBER (R_SH_DIR8S, 39)
RELOC_NUMBER (R_SH_DIR4UL, 40)
RELOC_NUMBER (R_SH_DIR4UW, 41)
RELOC_NUMBER (R_SH_DIR4U, 42)
RELOC_NUMBER (R_SH_PSHA, 43)
RELOC_NUMBER (R_SH_PSHL, 44)
RELOC_NUMBER (R_SH_DIR5U, 45) RELOC_NUMBER (R_SH_DIR5U, 45)
RELOC_NUMBER (R_SH_DIR6U, 46) RELOC_NUMBER (R_SH_DIR6U, 46)
RELOC_NUMBER (R_SH_DIR6S, 47) RELOC_NUMBER (R_SH_DIR6S, 47)
@ -120,7 +134,10 @@ START_RELOC_NUMBERS (elf_sh_reloc_type)
RELOC_NUMBER (R_SH_DIR10SW, 49) RELOC_NUMBER (R_SH_DIR10SW, 49)
RELOC_NUMBER (R_SH_DIR10SL, 50) RELOC_NUMBER (R_SH_DIR10SL, 50)
RELOC_NUMBER (R_SH_DIR10SQ, 51) RELOC_NUMBER (R_SH_DIR10SQ, 51)
FAKE_RELOC (R_SH_FIRST_INVALID_RELOC_3, 52) FAKE_RELOC (R_SH_FIRST_INVALID_RELOC_2, 52)
FAKE_RELOC (R_SH_LAST_INVALID_RELOC_2, 52)
RELOC_NUMBER (R_SH_DIR16S, 53)
FAKE_RELOC (R_SH_FIRST_INVALID_RELOC_3, 54)
FAKE_RELOC (R_SH_LAST_INVALID_RELOC_3, 143) FAKE_RELOC (R_SH_LAST_INVALID_RELOC_3, 143)
RELOC_NUMBER (R_SH_TLS_GD_32, 144) RELOC_NUMBER (R_SH_TLS_GD_32, 144)
RELOC_NUMBER (R_SH_TLS_LD_32, 145) RELOC_NUMBER (R_SH_TLS_LD_32, 145)