Back to index

cell-binutils  2.17cvs20070401
bfin.h
Go to the documentation of this file.
00001 /* Blackfin ELF support for BFD.
00002    Copyright (C) 2005 Free Software Foundation, Inc.
00003 
00004 This file is part of BFD, the Binary File Descriptor library.
00005 
00006 This program is free software; you can redistribute it and/or modify
00007 it under the terms of the GNU General Public License as published by
00008 the Free Software Foundation; either version 2 of the License, or
00009 (at your option) any later version.
00010 
00011 This program is distributed in the hope that it will be useful,
00012 but WITHOUT ANY WARRANTY; without even the implied warranty of
00013 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
00014 GNU General Public License for more details.
00015 
00016 You should have received a copy of the GNU General Public License
00017 along with this program; if not, write to the Free Software Foundation, Inc.,
00018 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA.  */
00019 
00020 #ifndef _ELF_BFIN_H
00021 #define _ELF_BFIN_H
00022                           
00023 #include "elf/reloc-macros.h"
00024 
00025 START_RELOC_NUMBERS (elf_bfin_reloc_type)
00026   RELOC_NUMBER (R_unused0, 0x00) /* relocation type 0 is not defined*/
00027   RELOC_NUMBER (R_pcrel5m2, 0x01) /*LSETUP part a*/
00028   RELOC_NUMBER (R_unused1, 0x02) /* relocation type 2 is not defined*/
00029   RELOC_NUMBER (R_pcrel10, 0x03) /* type 3, 0x00) if cc jump <target>  */
00030   RELOC_NUMBER (R_pcrel12_jump, 0x04) /* type 4, 0x00) jump <target> */
00031   RELOC_NUMBER (R_rimm16, 0x05)    /* type 0x5, 0x00) rN = <target> */
00032   RELOC_NUMBER (R_luimm16, 0x06)  /* # 0x6, 0x00) preg.l=<target> Load imm 16 to lower half */
00033   RELOC_NUMBER (R_huimm16, 0x07)  /* # 0x7, 0x00) preg.h=<target> Load imm 16 to upper half*/
00034   RELOC_NUMBER (R_pcrel12_jump_s, 0x08) /* # 0x8 jump.s <target> */
00035   RELOC_NUMBER (R_pcrel24_jump_x, 0x09) /* # 0x9 jump.x <target> */
00036   RELOC_NUMBER (R_pcrel24, 0x0a)        /* # 0xa call <target> , 0x00) not expandable*/
00037   RELOC_NUMBER (R_unusedb, 0x0b)         /* # 0xb not generated */
00038   RELOC_NUMBER (R_unusedc, 0x0c)       /* # 0xc  not used */
00039   RELOC_NUMBER (R_pcrel24_jump_l, 0x0d) /*0xd jump.l <target>*/
00040   RELOC_NUMBER (R_pcrel24_call_x, 0x0e) /* 0xE, 0x00) call.x <target> if <target> is above 24 bit limit call through P1 */
00041   RELOC_NUMBER (R_var_eq_symb, 0x0f)    /* 0xf, 0x00) linker should treat it same as 0x12 */
00042   RELOC_NUMBER (R_byte_data, 0x10)      /* 0x10, 0x00) .byte var = symbol */
00043   RELOC_NUMBER (R_byte2_data, 0x11)     /* 0x11, 0x00) .byte2 var = symbol */
00044   RELOC_NUMBER (R_byte4_data, 0x12)     /* 0x12, 0x00) .byte4 var = symbol and .var var=symbol */
00045   RELOC_NUMBER (R_pcrel11, 0x13)        /* 0x13, 0x00) lsetup part b */
00046   RELOC_NUMBER (R_BFIN_GOT17M4, 0x14)
00047   RELOC_NUMBER (R_BFIN_GOTHI, 0x15)
00048   RELOC_NUMBER (R_BFIN_GOTLO, 0x16)
00049   RELOC_NUMBER (R_BFIN_FUNCDESC, 0x17)
00050   RELOC_NUMBER (R_BFIN_FUNCDESC_GOT17M4, 0x18)
00051   RELOC_NUMBER (R_BFIN_FUNCDESC_GOTHI, 0x19)
00052   RELOC_NUMBER (R_BFIN_FUNCDESC_GOTLO, 0x1a)
00053   RELOC_NUMBER (R_BFIN_FUNCDESC_VALUE, 0x1b)
00054   RELOC_NUMBER (R_BFIN_FUNCDESC_GOTOFF17M4, 0x1c)
00055   RELOC_NUMBER (R_BFIN_FUNCDESC_GOTOFFHI, 0x1d)
00056   RELOC_NUMBER (R_BFIN_FUNCDESC_GOTOFFLO, 0x1e)
00057   RELOC_NUMBER (R_BFIN_GOTOFF17M4, 0x1f)
00058   RELOC_NUMBER (R_BFIN_GOTOFFHI, 0x20)
00059   RELOC_NUMBER (R_BFIN_GOTOFFLO, 0x21)
00060 
00061   RELOC_NUMBER (R_push, 0xE0)
00062   RELOC_NUMBER (R_const, 0xE1)
00063   RELOC_NUMBER (R_add, 0xE2)
00064   RELOC_NUMBER (R_sub, 0xE3)
00065   RELOC_NUMBER (R_mult, 0xE4)
00066   RELOC_NUMBER (R_div, 0xE5)
00067   RELOC_NUMBER (R_mod, 0xE6)
00068   RELOC_NUMBER (R_lshift, 0xE7)
00069   RELOC_NUMBER (R_rshift, 0xE8)
00070   RELOC_NUMBER (R_and, 0xE9)
00071   RELOC_NUMBER (R_or, 0xEA)
00072   RELOC_NUMBER (R_xor, 0xEB)
00073   RELOC_NUMBER (R_land, 0xEC)
00074   RELOC_NUMBER (R_lor, 0xED)
00075   RELOC_NUMBER (R_len, 0xEE)
00076   RELOC_NUMBER (R_neg, 0xEF)
00077   RELOC_NUMBER (R_comp, 0xF0)
00078   RELOC_NUMBER (R_page, 0xF1)
00079   RELOC_NUMBER (R_hwpage, 0xF2)
00080   RELOC_NUMBER (R_addr, 0xF3)
00081   RELOC_NUMBER (R_pltpc, 0x40)          /* PLT gnu only relocation */
00082   RELOC_NUMBER (R_got, 0x41)            /* GOT gnu only relocation */
00083   RELOC_NUMBER (R_BFIN_GNU_VTINHERIT, 0x42) /* C++, gnu only */
00084   RELOC_NUMBER (R_BFIN_GNU_VTENTRY, 0x43) /* C++, gnu only */
00085 END_RELOC_NUMBERS (R_max)
00086 
00087 /* Processor specific flags for the ELF header e_flags field.  */
00088 #define EF_BFIN_PIC         0x00000001    /* -fpic */
00089 #define EF_BFIN_FDPIC              0x00000002      /* -mfdpic */
00090 
00091 #define       EF_BFIN_PIC_FLAGS    (EF_BFIN_PIC | EF_BFIN_FDPIC)
00092 #endif /* _ELF_BFIN_H */