s390.h revision 89857
189857Sobrien/* 390 ELF support for BFD.
289857Sobrien   Copyright 2000, 2001 Free Software Foundation, Inc.
389857Sobrien   Contributed by Carl B. Pedersen and Martin Schwidefsky.
489857Sobrien
589857Sobrien   This file is part of BFD, the Binary File Descriptor library.
689857Sobrien
789857Sobrien   This program is free software; you can redistribute it and/or modify
889857Sobrien   it under the terms of the GNU General Public License as published by
989857Sobrien   the Free Software Foundation; either version 2 of the License, or
1089857Sobrien   (at your option) any later version.
1189857Sobrien
1289857Sobrien   This program is distributed in the hope that it will be useful,
1389857Sobrien   but WITHOUT ANY WARRANTY; without even the implied warranty of
1489857Sobrien   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
1589857Sobrien   GNU General Public License for more details.
1689857Sobrien
1789857Sobrien   You should have received a copy of the GNU General Public License
1889857Sobrien   along with this program; if not, write to the Free Software
1989857Sobrien   Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
2089857Sobrien   02111-1307, USA.  */
2189857Sobrien
2289857Sobrien#ifndef _ELF_390_H
2389857Sobrien#define _ELF_390_H
2489857Sobrien
2589857Sobrien/* Processor specific flags for the ELF header e_flags field.  */
2689857Sobrien
2789857Sobrien/* Symbol types.  */
2889857Sobrien
2989857Sobrien#define STACK_REG		15		/* Global Stack reg */
3089857Sobrien#define BACKL_REG		14		/* Global Backlink reg */
3189857Sobrien#define BASE_REG		13		/* Global Base reg */
3289857Sobrien#define GOT_REG 		12		/* Holds addr of GOT */
3389857Sobrien
3489857Sobrien#include "elf/reloc-macros.h"
3589857Sobrien
3689857Sobrien/* Relocation types.  */
3789857Sobrien
3889857SobrienSTART_RELOC_NUMBERS (elf_s390_reloc_type)
3989857Sobrien    RELOC_NUMBER (R_390_NONE, 0)	/* No reloc.  */
4089857Sobrien    RELOC_NUMBER (R_390_8, 1)		/* Direct 8 bit.  */
4189857Sobrien    RELOC_NUMBER (R_390_12, 2)		/* Direct 12 bit.  */
4289857Sobrien    RELOC_NUMBER (R_390_16, 3)		/* Direct 16 bit.  */
4389857Sobrien    RELOC_NUMBER (R_390_32, 4)		/* Direct 32 bit.  */
4489857Sobrien    RELOC_NUMBER (R_390_PC32, 5)	/* PC relative 32 bit.  */
4589857Sobrien    RELOC_NUMBER (R_390_GOT12, 6)	/* 12 bit GOT offset.  */
4689857Sobrien    RELOC_NUMBER (R_390_GOT32, 7)	/* 32 bit GOT offset.  */
4789857Sobrien    RELOC_NUMBER (R_390_PLT32, 8)	/* 32 bit PC relative PLT address.  */
4889857Sobrien    RELOC_NUMBER (R_390_COPY, 9)	/* Copy symbol at runtime.  */
4989857Sobrien    RELOC_NUMBER (R_390_GLOB_DAT, 10)	/* Create GOT entry.  */
5089857Sobrien    RELOC_NUMBER (R_390_JMP_SLOT, 11)	/* Create PLT entry.  */
5189857Sobrien    RELOC_NUMBER (R_390_RELATIVE, 12)	/* Adjust by program base.  */
5289857Sobrien    RELOC_NUMBER (R_390_GOTOFF, 13)	/* 32 bit offset to GOT.  */
5389857Sobrien    RELOC_NUMBER (R_390_GOTPC, 14)	/* 32 bit PC relative offset to GOT.  */
5489857Sobrien    RELOC_NUMBER (R_390_GOT16, 15)	/* 16 bit GOT offset.  */
5589857Sobrien    RELOC_NUMBER (R_390_PC16, 16)	/* PC relative 16 bit.  */
5689857Sobrien    RELOC_NUMBER (R_390_PC16DBL, 17)	/* PC relative 16 bit shifted by 1.  */
5789857Sobrien    RELOC_NUMBER (R_390_PLT16DBL, 18)	/* 16 bit PC rel. PLT shifted by 1.  */
5889857Sobrien    RELOC_NUMBER (R_390_PC32DBL, 19)	/* PC relative 32 bit shifted by 1.  */
5989857Sobrien    RELOC_NUMBER (R_390_PLT32DBL, 20)	/* 32 bit PC rel. PLT shifted by 1.  */
6089857Sobrien    RELOC_NUMBER (R_390_GOTPCDBL, 21)	/* 32 bit PC rel. GOT shifted by 1.  */
6189857Sobrien    RELOC_NUMBER (R_390_64, 22)		/* Direct 64 bit.  */
6289857Sobrien    RELOC_NUMBER (R_390_PC64, 23)	/* PC relative 64 bit.  */
6389857Sobrien    RELOC_NUMBER (R_390_GOT64, 24)	/* 64 bit GOT offset.  */
6489857Sobrien    RELOC_NUMBER (R_390_PLT64, 25)	/* 64 bit PC relative PLT address.  */
6589857Sobrien    RELOC_NUMBER (R_390_GOTENT, 26)	/* 32 bit PC rel. to GOT entry >> 1. */
6689857Sobrien    /* These are GNU extensions to enable C++ vtable garbage collection.  */
6789857Sobrien    RELOC_NUMBER (R_390_GNU_VTINHERIT, 250)
6889857Sobrien    RELOC_NUMBER (R_390_GNU_VTENTRY, 251)
6989857SobrienEND_RELOC_NUMBERS (R_390_max)
7089857Sobrien
7189857Sobrien#endif /* _ELF_390_H */
7289857Sobrien
7389857Sobrien
74