OpenCores
URL https://opencores.org/ocsvn/or1k/or1k/trunk

Subversion Repositories or1k

[/] [or1k/] [trunk/] [gdb-5.3/] [include/] [elf/] [mmix.h] - Blame information for rev 1777

Go to most recent revision | Details | Compare with Previous | View Log

Line No. Rev Author Line
1 1181 sfurman
/* MMIX support for BFD.
2
   Copyright (C) 2001, 2002 Free Software Foundation, Inc.
3
 
4
This file is part of BFD, the Binary File Descriptor library.
5
 
6
This program is free software; you can redistribute it and/or modify
7
it under the terms of the GNU General Public License as published by
8
the Free Software Foundation; either version 2 of the License, or
9
(at your option) any later version.
10
 
11
This program is distributed in the hope that it will be useful,
12
but WITHOUT ANY WARRANTY; without even the implied warranty of
13
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14
GNU General Public License for more details.
15
 
16
You should have received a copy of the GNU General Public License
17
along with this program; if not, write to the Free Software
18
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.  */
19
 
20
/* This file holds definitions specific to the MMIX ELF ABI. */
21
#ifndef ELF_MMIX_H
22
#define ELF_MMIX_H
23
 
24
#include "elf/reloc-macros.h"
25
 
26
/* Relocations.  */
27
START_RELOC_NUMBERS (elf_mmix_reloc_type)
28
  RELOC_NUMBER (R_MMIX_NONE, 0)
29
 
30
  /* Standard absolute relocations.  */
31
  RELOC_NUMBER (R_MMIX_8, 1)
32
  RELOC_NUMBER (R_MMIX_16, 2)
33
  RELOC_NUMBER (R_MMIX_24, 3)
34
  RELOC_NUMBER (R_MMIX_32, 4)
35
  RELOC_NUMBER (R_MMIX_64, 5)
36
 
37
  /* Standard relative relocations.  */
38
  RELOC_NUMBER (R_MMIX_PC_8, 6)
39
  RELOC_NUMBER (R_MMIX_PC_16, 7)
40
  RELOC_NUMBER (R_MMIX_PC_24, 8)
41
  RELOC_NUMBER (R_MMIX_PC_32, 9)
42
  RELOC_NUMBER (R_MMIX_PC_64, 10)
43
 
44
  /* GNU extensions for C++ vtables.  */
45
  RELOC_NUMBER (R_MMIX_GNU_VTINHERIT, 11)
46
  RELOC_NUMBER (R_MMIX_GNU_VTENTRY, 12)
47
 
48
  /* A GETA instruction.  */
49
  RELOC_NUMBER (R_MMIX_GETA, 13)
50
  RELOC_NUMBER (R_MMIX_GETA_1, 14)
51
  RELOC_NUMBER (R_MMIX_GETA_2, 15)
52
  RELOC_NUMBER (R_MMIX_GETA_3, 16)
53
 
54
  /* A conditional branch instruction.  */
55
  RELOC_NUMBER (R_MMIX_CBRANCH, 17)
56
  RELOC_NUMBER (R_MMIX_CBRANCH_J, 18)
57
  RELOC_NUMBER (R_MMIX_CBRANCH_1, 19)
58
  RELOC_NUMBER (R_MMIX_CBRANCH_2, 20)
59
  RELOC_NUMBER (R_MMIX_CBRANCH_3, 21)
60
 
61
  /* A PUSHJ instruction.  */
62
  RELOC_NUMBER (R_MMIX_PUSHJ, 22)
63
  RELOC_NUMBER (R_MMIX_PUSHJ_1, 23)
64
  RELOC_NUMBER (R_MMIX_PUSHJ_2, 24)
65
  RELOC_NUMBER (R_MMIX_PUSHJ_3, 25)
66
 
67
  /* A JMP instruction.  */
68
  RELOC_NUMBER (R_MMIX_JMP, 26)
69
  RELOC_NUMBER (R_MMIX_JMP_1, 27)
70
  RELOC_NUMBER (R_MMIX_JMP_2, 28)
71
  RELOC_NUMBER (R_MMIX_JMP_3, 29)
72
 
73
  /* A relative address such as in a GETA or a branch.  */
74
  RELOC_NUMBER (R_MMIX_ADDR19, 30)
75
 
76
  /* A relative address such as in a JMP (only).  */
77
  RELOC_NUMBER (R_MMIX_ADDR27, 31)
78
 
79
  /* A general register or a number 0..255.  */
80
  RELOC_NUMBER (R_MMIX_REG_OR_BYTE, 32)
81
 
82
  /* A general register. */
83
  RELOC_NUMBER (R_MMIX_REG, 33)
84
 
85
  /* A global register and an offset, the global register (allocated at
86
     link time) contents plus the offset made equivalent to the relocation
87
     expression at link time.  The relocation must point at the Y field of
88
     an instruction.  */
89
  RELOC_NUMBER (R_MMIX_BASE_PLUS_OFFSET, 34)
90
 
91
  /* A LOCAL assertion.  */
92
  RELOC_NUMBER (R_MMIX_LOCAL, 35)
93
END_RELOC_NUMBERS (R_MMIX_max)
94
 
95
 
96
/* Section Attributes.  */
97
/* A section containing necessary information for relaxation.  */
98
#define SHF_MMIX_CANRELAX       0x80000000
99
 
100
/* Symbol attributes.  */
101
/* A symbol with this section-index is a register.  */
102
#define SHN_REGISTER    SHN_LOPROC
103
 
104
/* This section holds contents for each initialized register, at VMA
105
   regno*8.  A symbol relative to this section will be transformed to an
106
   absolute symbol with the value corresponding to the register number at
107
   final link time.  A symbol with a value outside the inclusive range
108
   32*8 .. 254*8 is an error.  It is highly recommended to only use an
109
   upper bound of 253*8 or lower as specified in the (currently
110
   unspecified) ABI.  */
111
#define MMIX_REG_CONTENTS_SECTION_NAME ".MMIX.reg_contents"
112
 
113
/* At link time, a section by this name is created, expected to be
114
   included in MMIX_REG_CONTENTS_SECTION_NAME in the output.  */
115
#define MMIX_LD_ALLOCATED_REG_CONTENTS_SECTION_NAME \
116
 ".MMIX.reg_contents.linker_allocated"
117
 
118
/* This is a faked section holding symbols with SHN_REGISTER.  Don't
119
   confuse it with MMIX_REG_CONTENTS_SECTION_NAME; this one has no
120
   contents, just values.  It is an error for a value in this section to
121
   be outside the range 32..255 and it must never become an actual section
122
   in an object file.  */
123
#define MMIX_REG_SECTION_NAME "*REG*"
124
 
125
/* Appended with a number N=0..65535, this is a representation of the
126
   mmixal "BSPEC N" ... "ESPEC" directive pair; the contents go into an
127
   ELF section by name ".MMIX.spec_data.N".  */
128
#define MMIX_OTHER_SPEC_SECTION_PREFIX ".MMIX.spec_data."
129
 
130
/* A section SECNAME is noted to start at "__.MMIX.start.SECNAME" by the
131
   presence of this symbol.  Currently only implemented for ".text"
132
   through the symbol "__.MMIX.start..text".  */
133
#define MMIX_LOC_SECTION_START_SYMBOL_PREFIX "__.MMIX.start."
134
 
135
/* This symbol is always a function.  */
136
#define MMIX_START_SYMBOL_NAME "Main"
137
 
138
 
139
/* We smuggle in a few MMO specifics here.  We don't make a specific MMO
140
   file, since we can't reasonably support MMO without ELF; we have to
141
   include this file anyway.  */
142
 
143
#define MMO_TEXT_SECTION_NAME ".text"
144
#define MMO_DATA_SECTION_NAME ".data"
145
 
146
/* A definition for the flags we put in spec data in files.  A copy of our
147
   own of some flags to keep immune to BFD flag changes.  See section.c of
148
   2001-07-18 for flag documentation.  */
149
#define MMO_SEC_ALLOC      0x001
150
#define MMO_SEC_LOAD       0x002
151
#define MMO_SEC_RELOC      0x004
152
#define MMO_SEC_READONLY   0x010
153
#define MMO_SEC_CODE       0x020
154
#define MMO_SEC_DATA       0x040
155
#define MMO_SEC_NEVER_LOAD 0x400
156
#define MMO_SEC_IS_COMMON 0x8000
157
#define MMO_SEC_DEBUGGING 0x10000
158
 
159
#ifdef BFD_ARCH_SIZE
160
extern boolean _bfd_mmix_prepare_linker_allocated_gregs
161
 PARAMS ((bfd *, struct bfd_link_info *));
162
extern boolean _bfd_mmix_finalize_linker_allocated_gregs
163
 PARAMS ((bfd *, struct bfd_link_info *));
164
extern boolean _bfd_mmix_check_all_relocs
165
 PARAMS ((bfd *, struct bfd_link_info *));
166
#endif
167
 
168
#endif /* ELF_MMIX_H */

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.