diff options
author | DJ Delorie <dj@redhat.com> | 2003-09-24 02:27:56 +0000 |
---|---|---|
committer | DJ Delorie <dj@redhat.com> | 2003-09-24 02:27:56 +0000 |
commit | 5b9a5e6ca3105fff462bc5c44a7c9854576146ca (patch) | |
tree | cf127720a82bff5606b7e02e77b1389f6cab353f /include/elf/sh.h | |
parent | f610c4f99312ddee88085b946842f8722c50c8dd (diff) | |
download | newlib-5b9a5e6ca3105fff462bc5c44a7c9854576146ca.zip newlib-5b9a5e6ca3105fff462bc5c44a7c9854576146ca.tar.gz newlib-5b9a5e6ca3105fff462bc5c44a7c9854576146ca.tar.bz2 |
* 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.
Diffstat (limited to 'include/elf/sh.h')
-rw-r--r-- | include/elf/sh.h | 41 |
1 files changed, 29 insertions, 12 deletions
diff --git a/include/elf/sh.h b/include/elf/sh.h index 00a5f2a..4286235 100644 --- a/include/elf/sh.h +++ b/include/elf/sh.h @@ -83,8 +83,8 @@ #include "elf/reloc-macros.h" /* Relocations. */ -/* Relocations 25ff are GNU extensions. - 25..33 are used for relaxation and use the same constants as COFF uses. */ +/* Relocations 10-32 and 128-255 are GNU extensions. + 25..32 and 10 are used for relaxation. */ START_RELOC_NUMBERS (elf_sh_reloc_type) RELOC_NUMBER (R_SH_NONE, 0) 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_DIR8W, 8) 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_SWITCH32, 26) 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_DATA, 31) RELOC_NUMBER (R_SH_LABEL, 32) - RELOC_NUMBER (R_SH_SWITCH8, 33) - RELOC_NUMBER (R_SH_GNU_VTINHERIT, 34) - RELOC_NUMBER (R_SH_GNU_VTENTRY, 35) - RELOC_NUMBER (R_SH_LOOP_START, 36) - RELOC_NUMBER (R_SH_LOOP_END, 37) - FAKE_RELOC (R_SH_FIRST_INVALID_RELOC_2, 38) - FAKE_RELOC (R_SH_LAST_INVALID_RELOC_2, 44) + + RELOC_NUMBER (R_SH_DIR16, 33) + RELOC_NUMBER (R_SH_DIR8, 34) + RELOC_NUMBER (R_SH_DIR8UL, 35) + RELOC_NUMBER (R_SH_DIR8UW, 36) + RELOC_NUMBER (R_SH_DIR8U, 37) + 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_DIR6U, 46) 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_DIR10SL, 50) 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) RELOC_NUMBER (R_SH_TLS_GD_32, 144) RELOC_NUMBER (R_SH_TLS_LD_32, 145) |