189857Sobrien/* H8300/h8500 ELF support for BFD.
2130561Sobrien   Copyright 2001, 2003 Free Software Foundation, Inc.
389857Sobrien
489857Sobrien   This file is part of BFD, the Binary File Descriptor library.
589857Sobrien
689857Sobrien   This program is free software; you can redistribute it and/or modify
789857Sobrien   it under the terms of the GNU General Public License as published by
889857Sobrien   the Free Software Foundation; either version 2 of the License, or
989857Sobrien   (at your option) any later version.
1089857Sobrien
1189857Sobrien   This program is distributed in the hope that it will be useful,
1289857Sobrien   but WITHOUT ANY WARRANTY; without even the implied warranty of
1389857Sobrien   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
1489857Sobrien   GNU General Public License for more details.
1589857Sobrien
1689857Sobrien   You should have received a copy of the GNU General Public License
1789857Sobrien   along with this program; if not, write to the Free Software Foundation,
18218822Sdim   Inc., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA.  */
1989857Sobrien
2089857Sobrien#ifndef _ELF_H8_H
2189857Sobrien#define _ELF_H8_H
2289857Sobrien
2389857Sobrien#include "elf/reloc-macros.h"
2489857Sobrien
2589857Sobrien/* Relocations.  */
2689857Sobrien/* Relocations 59..63 are GNU extensions.  */
2789857SobrienSTART_RELOC_NUMBERS (elf_h8_reloc_type)
2889857Sobrien  RELOC_NUMBER (R_H8_NONE, 0)
2989857Sobrien  RELOC_NUMBER (R_H8_DIR32, 1)
3089857Sobrien  RELOC_NUMBER (R_H8_DIR32_28, 2)
3189857Sobrien  RELOC_NUMBER (R_H8_DIR32_24, 3)
3289857Sobrien  RELOC_NUMBER (R_H8_DIR32_16, 4)
3389857Sobrien  RELOC_NUMBER (R_H8_DIR32U, 6)
3489857Sobrien  RELOC_NUMBER (R_H8_DIR32U_28, 7)
3589857Sobrien  RELOC_NUMBER (R_H8_DIR32U_24, 8)
3689857Sobrien  RELOC_NUMBER (R_H8_DIR32U_20, 9)
3789857Sobrien  RELOC_NUMBER (R_H8_DIR32U_16, 10)
3889857Sobrien  RELOC_NUMBER (R_H8_DIR24, 11)
3989857Sobrien  RELOC_NUMBER (R_H8_DIR24_20, 12)
4089857Sobrien  RELOC_NUMBER (R_H8_DIR24_16, 13)
4189857Sobrien  RELOC_NUMBER (R_H8_DIR24U, 14)
4289857Sobrien  RELOC_NUMBER (R_H8_DIR24U_20, 15)
4389857Sobrien  RELOC_NUMBER (R_H8_DIR24U_16, 16)
4489857Sobrien  RELOC_NUMBER (R_H8_DIR16, 17)
4589857Sobrien  RELOC_NUMBER (R_H8_DIR16U, 18)
4689857Sobrien  RELOC_NUMBER (R_H8_DIR16S_32, 19)
4789857Sobrien  RELOC_NUMBER (R_H8_DIR16S_28, 20)
4889857Sobrien  RELOC_NUMBER (R_H8_DIR16S_24, 21)
4989857Sobrien  RELOC_NUMBER (R_H8_DIR16S_20, 22)
5089857Sobrien  RELOC_NUMBER (R_H8_DIR16S, 23)
5189857Sobrien  RELOC_NUMBER (R_H8_DIR8, 24)
5289857Sobrien  RELOC_NUMBER (R_H8_DIR8U, 25)
5389857Sobrien  RELOC_NUMBER (R_H8_DIR8Z_32, 26)
5489857Sobrien  RELOC_NUMBER (R_H8_DIR8Z_28, 27)
5589857Sobrien  RELOC_NUMBER (R_H8_DIR8Z_24, 28)
5689857Sobrien  RELOC_NUMBER (R_H8_DIR8Z_20, 29)
5789857Sobrien  RELOC_NUMBER (R_H8_DIR8Z_16, 30)
5889857Sobrien  RELOC_NUMBER (R_H8_PCREL16, 31)
5989857Sobrien  RELOC_NUMBER (R_H8_PCREL8, 32)
6089857Sobrien  RELOC_NUMBER (R_H8_BPOS, 33)
6189857Sobrien  FAKE_RELOC (R_H8_FIRST_INVALID_DIR_RELOC, 34)
6289857Sobrien  FAKE_RELOC (R_H8_LAST_INVALID_DIR_RELOC, 58)
6389857Sobrien  RELOC_NUMBER (R_H8_DIR16A8, 59)
6489857Sobrien  RELOC_NUMBER (R_H8_DIR16R8, 60)
6589857Sobrien  RELOC_NUMBER (R_H8_DIR24A8, 61)
6689857Sobrien  RELOC_NUMBER (R_H8_DIR24R8, 62)
6789857Sobrien  RELOC_NUMBER (R_H8_DIR32A16, 63)
6889857Sobrien  RELOC_NUMBER (R_H8_ABS32, 65)
6989857Sobrien  RELOC_NUMBER (R_H8_ABS32A16, 127)
7089857Sobrien  RELOC_NUMBER (R_H8_SYM, 128)
7189857Sobrien  RELOC_NUMBER (R_H8_OPneg, 129)
7289857Sobrien  RELOC_NUMBER (R_H8_OPadd, 130)
7389857Sobrien  RELOC_NUMBER (R_H8_OPsub, 131)
7489857Sobrien  RELOC_NUMBER (R_H8_OPmul, 132)
7589857Sobrien  RELOC_NUMBER (R_H8_OPdiv, 133)
7689857Sobrien  RELOC_NUMBER (R_H8_OPshla, 134)
7789857Sobrien  RELOC_NUMBER (R_H8_OPshra, 135)
7889857Sobrien  RELOC_NUMBER (R_H8_OPsctsize, 136)
7989857Sobrien  RELOC_NUMBER (R_H8_OPhword, 137)
8089857Sobrien  RELOC_NUMBER (R_H8_OPlword, 138)
8189857Sobrien  RELOC_NUMBER (R_H8_OPhigh, 139)
8289857Sobrien  RELOC_NUMBER (R_H8_OPlow, 140)
8389857Sobrien  RELOC_NUMBER (R_H8_OPscttop, 141)
8489857SobrienEND_RELOC_NUMBERS (R_H8_max)
8589857Sobrien
8689857Sobrien/* Machine variant if we know it.  This field was invented at Cygnus,
8789857Sobrien   but it is hoped that other vendors will adopt it.  If some standard
8889857Sobrien   is developed, this code should be changed to follow it. */
8989857Sobrien
9089857Sobrien#define EF_H8_MACH		0x00FF0000
9189857Sobrien
9289857Sobrien#define E_H8_MACH_H8300		0x00800000
9389857Sobrien#define E_H8_MACH_H8300H	0x00810000
9489857Sobrien#define E_H8_MACH_H8300S	0x00820000
95130561Sobrien#define E_H8_MACH_H8300HN	0x00830000
96130561Sobrien#define E_H8_MACH_H8300SN	0x00840000
97130561Sobrien#define E_H8_MACH_H8300SX	0x00850000
98130561Sobrien#define E_H8_MACH_H8300SXN	0x00860000
9989857Sobrien
10089857Sobrien#endif
101