1*fae548d3Szrj /* H8300/h8500 ELF support for BFD. 2*fae548d3Szrj Copyright (C) 2001-2020 Free Software Foundation, Inc. 3*fae548d3Szrj 4*fae548d3Szrj This file is part of BFD, the Binary File Descriptor library. 5*fae548d3Szrj 6*fae548d3Szrj This program is free software; you can redistribute it and/or modify 7*fae548d3Szrj it under the terms of the GNU General Public License as published by 8*fae548d3Szrj the Free Software Foundation; either version 3 of the License, or 9*fae548d3Szrj (at your option) any later version. 10*fae548d3Szrj 11*fae548d3Szrj This program is distributed in the hope that it will be useful, 12*fae548d3Szrj but WITHOUT ANY WARRANTY; without even the implied warranty of 13*fae548d3Szrj MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14*fae548d3Szrj GNU General Public License for more details. 15*fae548d3Szrj 16*fae548d3Szrj You should have received a copy of the GNU General Public License 17*fae548d3Szrj along with this program; if not, write to the Free Software Foundation, 18*fae548d3Szrj Inc., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA. */ 19*fae548d3Szrj 20*fae548d3Szrj #ifndef _ELF_H8_H 21*fae548d3Szrj #define _ELF_H8_H 22*fae548d3Szrj 23*fae548d3Szrj #include "elf/reloc-macros.h" 24*fae548d3Szrj 25*fae548d3Szrj /* Relocations. */ 26*fae548d3Szrj /* Relocations 59..64 are GNU extensions. */ 27*fae548d3Szrj START_RELOC_NUMBERS (elf_h8_reloc_type) 28*fae548d3Szrj RELOC_NUMBER (R_H8_NONE, 0) 29*fae548d3Szrj RELOC_NUMBER (R_H8_DIR32, 1) 30*fae548d3Szrj RELOC_NUMBER (R_H8_DIR32_28, 2) 31*fae548d3Szrj RELOC_NUMBER (R_H8_DIR32_24, 3) 32*fae548d3Szrj RELOC_NUMBER (R_H8_DIR32_16, 4) 33*fae548d3Szrj RELOC_NUMBER (R_H8_DIR32U, 6) 34*fae548d3Szrj RELOC_NUMBER (R_H8_DIR32U_28, 7) 35*fae548d3Szrj RELOC_NUMBER (R_H8_DIR32U_24, 8) 36*fae548d3Szrj RELOC_NUMBER (R_H8_DIR32U_20, 9) 37*fae548d3Szrj RELOC_NUMBER (R_H8_DIR32U_16, 10) 38*fae548d3Szrj RELOC_NUMBER (R_H8_DIR24, 11) 39*fae548d3Szrj RELOC_NUMBER (R_H8_DIR24_20, 12) 40*fae548d3Szrj RELOC_NUMBER (R_H8_DIR24_16, 13) 41*fae548d3Szrj RELOC_NUMBER (R_H8_DIR24U, 14) 42*fae548d3Szrj RELOC_NUMBER (R_H8_DIR24U_20, 15) 43*fae548d3Szrj RELOC_NUMBER (R_H8_DIR24U_16, 16) 44*fae548d3Szrj RELOC_NUMBER (R_H8_DIR16, 17) 45*fae548d3Szrj RELOC_NUMBER (R_H8_DIR16U, 18) 46*fae548d3Szrj RELOC_NUMBER (R_H8_DIR16S_32, 19) 47*fae548d3Szrj RELOC_NUMBER (R_H8_DIR16S_28, 20) 48*fae548d3Szrj RELOC_NUMBER (R_H8_DIR16S_24, 21) 49*fae548d3Szrj RELOC_NUMBER (R_H8_DIR16S_20, 22) 50*fae548d3Szrj RELOC_NUMBER (R_H8_DIR16S, 23) 51*fae548d3Szrj RELOC_NUMBER (R_H8_DIR8, 24) 52*fae548d3Szrj RELOC_NUMBER (R_H8_DIR8U, 25) 53*fae548d3Szrj RELOC_NUMBER (R_H8_DIR8Z_32, 26) 54*fae548d3Szrj RELOC_NUMBER (R_H8_DIR8Z_28, 27) 55*fae548d3Szrj RELOC_NUMBER (R_H8_DIR8Z_24, 28) 56*fae548d3Szrj RELOC_NUMBER (R_H8_DIR8Z_20, 29) 57*fae548d3Szrj RELOC_NUMBER (R_H8_DIR8Z_16, 30) 58*fae548d3Szrj RELOC_NUMBER (R_H8_PCREL16, 31) 59*fae548d3Szrj RELOC_NUMBER (R_H8_PCREL8, 32) 60*fae548d3Szrj RELOC_NUMBER (R_H8_BPOS, 33) 61*fae548d3Szrj FAKE_RELOC (R_H8_FIRST_INVALID_DIR_RELOC, 34) 62*fae548d3Szrj FAKE_RELOC (R_H8_LAST_INVALID_DIR_RELOC, 58) 63*fae548d3Szrj RELOC_NUMBER (R_H8_DIR16A8, 59) 64*fae548d3Szrj RELOC_NUMBER (R_H8_DIR16R8, 60) 65*fae548d3Szrj RELOC_NUMBER (R_H8_DIR24A8, 61) 66*fae548d3Szrj RELOC_NUMBER (R_H8_DIR24R8, 62) 67*fae548d3Szrj RELOC_NUMBER (R_H8_DIR32A16, 63) 68*fae548d3Szrj RELOC_NUMBER (R_H8_DISP32A16, 64) 69*fae548d3Szrj RELOC_NUMBER (R_H8_ABS32, 65) 70*fae548d3Szrj RELOC_NUMBER (R_H8_ABS32A16, 127) 71*fae548d3Szrj RELOC_NUMBER (R_H8_SYM, 128) 72*fae548d3Szrj RELOC_NUMBER (R_H8_OPneg, 129) 73*fae548d3Szrj RELOC_NUMBER (R_H8_OPadd, 130) 74*fae548d3Szrj RELOC_NUMBER (R_H8_OPsub, 131) 75*fae548d3Szrj RELOC_NUMBER (R_H8_OPmul, 132) 76*fae548d3Szrj RELOC_NUMBER (R_H8_OPdiv, 133) 77*fae548d3Szrj RELOC_NUMBER (R_H8_OPshla, 134) 78*fae548d3Szrj RELOC_NUMBER (R_H8_OPshra, 135) 79*fae548d3Szrj RELOC_NUMBER (R_H8_OPsctsize, 136) 80*fae548d3Szrj RELOC_NUMBER (R_H8_OPhword, 137) 81*fae548d3Szrj RELOC_NUMBER (R_H8_OPlword, 138) 82*fae548d3Szrj RELOC_NUMBER (R_H8_OPhigh, 139) 83*fae548d3Szrj RELOC_NUMBER (R_H8_OPlow, 140) 84*fae548d3Szrj RELOC_NUMBER (R_H8_OPscttop, 141) 85*fae548d3Szrj END_RELOC_NUMBERS (R_H8_max) 86*fae548d3Szrj 87*fae548d3Szrj /* Machine variant if we know it. This field was invented at Cygnus, 88*fae548d3Szrj but it is hoped that other vendors will adopt it. If some standard 89*fae548d3Szrj is developed, this code should be changed to follow it. */ 90*fae548d3Szrj 91*fae548d3Szrj #define EF_H8_MACH 0x00FF0000 92*fae548d3Szrj 93*fae548d3Szrj #define E_H8_MACH_H8300 0x00800000 94*fae548d3Szrj #define E_H8_MACH_H8300H 0x00810000 95*fae548d3Szrj #define E_H8_MACH_H8300S 0x00820000 96*fae548d3Szrj #define E_H8_MACH_H8300HN 0x00830000 97*fae548d3Szrj #define E_H8_MACH_H8300SN 0x00840000 98*fae548d3Szrj #define E_H8_MACH_H8300SX 0x00850000 99*fae548d3Szrj #define E_H8_MACH_H8300SXN 0x00860000 100*fae548d3Szrj 101*fae548d3Szrj #endif 102