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

Subversion Repositories open8_urisc

[/] [open8_urisc/] [trunk/] [gnu/] [binutils/] [gas/] [config/] [obj-elf.h] - Blame information for rev 122

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

Line No. Rev Author Line
1 16 khays
/* ELF object file format.
2
   Copyright 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001,
3
   2002, 2003, 2004, 2005, 2006, 2007, 2009, 2010, 2011
4
   Free Software Foundation, Inc.
5
 
6
   This file is part of GAS, the GNU Assembler.
7
 
8
   GAS is free software; you can redistribute it and/or modify
9
   it under the terms of the GNU General Public License as published by
10
   the Free Software Foundation; either version 3, or (at your option)
11
   any later version.
12
 
13
   GAS is distributed in the hope that it will be useful,
14
   but WITHOUT ANY WARRANTY; without even the implied warranty of
15
   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
16
   GNU General Public License for more details.
17
 
18
   You should have received a copy of the GNU General Public License
19
   along with GAS; see the file COPYING.  If not, write to the Free
20
   Software Foundation, 51 Franklin Street - Fifth Floor, Boston, MA
21
   02110-1301, USA.  */
22
 
23
/* HP PA-RISC support was contributed by the Center for Software Science
24
   at the University of Utah.  */
25
 
26
#ifndef _OBJ_ELF_H
27
#define _OBJ_ELF_H
28
 
29
#define OBJ_ELF 1
30
 
31
/* Note that all macros in this file should be wrapped in #ifndef, for
32
   sake of obj-multi.h which includes this file.  */
33
 
34
#ifndef OUTPUT_FLAVOR
35
#define OUTPUT_FLAVOR bfd_target_elf_flavour
36
#endif
37
 
38
#define BYTES_IN_WORD 4         /* for now */
39
#include "bfd/elf-bfd.h"
40
 
41
#include "targ-cpu.h"
42
 
43
#ifdef TC_ALPHA
44
#define ECOFF_DEBUGGING (alpha_flag_mdebug > 0)
45
extern int alpha_flag_mdebug;
46
#endif
47
 
48
/* For now, always set ECOFF_DEBUGGING for a MIPS target.  */
49
#ifdef TC_MIPS
50
#define ECOFF_DEBUGGING mips_flag_mdebug
51
extern int mips_flag_mdebug;
52
#endif /* TC_MIPS */
53
 
54
#ifdef OBJ_MAYBE_ECOFF
55
#ifndef ECOFF_DEBUGGING
56
#define ECOFF_DEBUGGING 1
57
#endif
58
#endif
59
 
60
/* Additional information we keep for each symbol.  */
61
struct elf_obj_sy
62
{
63
  /* Whether the symbol has been marked as local.  */
64
  int local;
65
 
66
  /* Use this to keep track of .size expressions that involve
67
     differences that we can't compute yet.  */
68
  expressionS *size;
69
 
70
  /* The name specified by the .symver directive.  */
71
  char *versioned_name;
72
 
73
#ifdef ECOFF_DEBUGGING
74
  /* If we are generating ECOFF debugging information, we need some
75
     additional fields for each symbol.  */
76
  struct efdr *ecoff_file;
77
  struct localsym *ecoff_symbol;
78
  valueT ecoff_extern_size;
79
#endif
80
};
81
 
82
#define OBJ_SYMFIELD_TYPE struct elf_obj_sy
83
 
84
#ifndef FALSE
85
#define FALSE 0
86
#define TRUE  !FALSE
87
#endif
88
 
89
#ifndef obj_begin
90
#define obj_begin() elf_begin ()
91
#endif
92
extern void elf_begin (void);
93
 
94
#ifndef LOCAL_LABEL_PREFIX
95
#define LOCAL_LABEL_PREFIX '.'
96
#endif
97
 
98
/* should be conditional on address size! */
99
#define elf_symbol(asymbol) ((elf_symbol_type *) (&(asymbol)->the_bfd))
100
 
101
#ifndef S_GET_SIZE
102
#define S_GET_SIZE(S) \
103
  (elf_symbol (symbol_get_bfdsym (S))->internal_elf_sym.st_size)
104
#endif
105
#ifndef S_SET_SIZE
106
#define S_SET_SIZE(S,V) \
107
  (elf_symbol (symbol_get_bfdsym (S))->internal_elf_sym.st_size = (V))
108
#endif
109
 
110
#ifndef S_GET_ALIGN
111
#define S_GET_ALIGN(S) \
112
  (elf_symbol (symbol_get_bfdsym (S))->internal_elf_sym.st_value)
113
#endif
114
#ifndef S_SET_ALIGN
115
#define S_SET_ALIGN(S,V) \
116
  (elf_symbol (symbol_get_bfdsym (S))->internal_elf_sym.st_value = (V))
117
#endif
118
 
119
int elf_s_get_other (symbolS *);
120
#ifndef S_GET_OTHER
121
#define S_GET_OTHER(S)  (elf_s_get_other (S))
122
#endif
123
#ifndef S_SET_OTHER
124
#define S_SET_OTHER(S,V) \
125
  (elf_symbol (symbol_get_bfdsym (S))->internal_elf_sym.st_other = (V))
126
#endif
127
 
128
extern asection *gdb_section;
129
 
130
#ifndef obj_frob_file
131
#define obj_frob_file  elf_frob_file
132
#endif
133
extern void elf_frob_file (void);
134
 
135
#ifndef obj_frob_file_before_adjust
136
#define obj_frob_file_before_adjust  elf_frob_file_before_adjust
137
#endif
138
extern void elf_frob_file_before_adjust (void);
139
 
140
#ifndef obj_frob_file_after_relocs
141
#define obj_frob_file_after_relocs  elf_frob_file_after_relocs
142
#endif
143
extern void elf_frob_file_after_relocs (void);
144
 
145
/* If the target doesn't have special processing for labels, take care of
146
   dwarf2 output at the object file level.  */
147
#ifndef tc_frob_label
148
#include "dwarf2dbg.h"
149
#define obj_frob_label  dwarf2_emit_label
150
#endif
151
 
152
#ifndef obj_app_file
153
#define obj_app_file elf_file_symbol
154
#endif
155
extern void elf_file_symbol (const char *, int);
156
 
157
extern void obj_elf_section_change_hook (void);
158
 
159
extern void obj_elf_section (int);
160
extern char * obj_elf_section_name (void);
161
extern void obj_elf_previous (int);
162
extern void obj_elf_version (int);
163
extern void obj_elf_common (int);
164
extern void obj_elf_data (int);
165
extern void obj_elf_text (int);
166
extern void obj_elf_change_section
167
  (const char *, int, bfd_vma, int, const char *, int, int);
168
extern struct fix *obj_elf_vtable_inherit (int);
169
extern struct fix *obj_elf_vtable_entry (int);
170
 
171
/* BFD wants to write the udata field, which is a no-no for the
172
   predefined section symbols in bfd/section.c.  They are read-only.  */
173
#ifndef obj_sec_sym_ok_for_reloc
174
#define obj_sec_sym_ok_for_reloc(SEC)   ((SEC)->owner != 0)
175
#endif
176
 
177
void elf_obj_read_begin_hook (void);
178
#ifndef obj_read_begin_hook
179
#define obj_read_begin_hook     elf_obj_read_begin_hook
180
#endif
181
 
182
void elf_obj_symbol_new_hook (symbolS *);
183
#ifndef obj_symbol_new_hook
184
#define obj_symbol_new_hook     elf_obj_symbol_new_hook
185
#endif
186
 
187
void elf_copy_symbol_attributes (symbolS *, symbolS *);
188
#ifndef OBJ_COPY_SYMBOL_ATTRIBUTES
189
#define OBJ_COPY_SYMBOL_ATTRIBUTES(DEST, SRC) \
190
  (elf_copy_symbol_attributes (DEST, SRC))
191
#endif
192
 
193
void elf_adjust_symtab (void);
194
#ifndef obj_adjust_symtab
195
#define obj_adjust_symtab       elf_adjust_symtab
196
#endif
197
 
198
#ifndef SEPARATE_STAB_SECTIONS
199
/* Avoid ifndef each separate macro setting by wrapping the whole of the
200
   stab group on the assumption that whoever sets SEPARATE_STAB_SECTIONS
201
   caters to ECOFF_DEBUGGING and the right setting of INIT_STAB_SECTIONS
202
   and OBJ_PROCESS_STAB too, without needing the tweaks below.  */
203
 
204
/* Stabs go in a separate section.  */
205
#define SEPARATE_STAB_SECTIONS 1
206
 
207
/* We need 12 bytes at the start of the section to hold some initial
208
   information.  */
209
extern void obj_elf_init_stab_section (segT);
210
#define INIT_STAB_SECTION(seg) obj_elf_init_stab_section (seg)
211
 
212
#ifdef ECOFF_DEBUGGING
213
/* We smuggle stabs in ECOFF rather than using a separate section.
214
   The Irix linker can not handle a separate stabs section.  */
215
 
216
#undef  SEPARATE_STAB_SECTIONS
217
#define SEPARATE_STAB_SECTIONS (!ECOFF_DEBUGGING)
218
 
219
#undef  INIT_STAB_SECTION
220
#define INIT_STAB_SECTION(seg) \
221
  ((void) (ECOFF_DEBUGGING ? 0 : (obj_elf_init_stab_section (seg), 0)))
222
 
223
#undef OBJ_PROCESS_STAB
224
#define OBJ_PROCESS_STAB(seg, what, string, type, other, desc)          \
225
  if (ECOFF_DEBUGGING)                                                  \
226
    ecoff_stab ((seg), (what), (string), (type), (other), (desc))
227
#endif /* ECOFF_DEBUGGING */
228
 
229
#endif /* SEPARATE_STAB_SECTIONS not defined.  */
230
 
231
extern void elf_frob_symbol (symbolS *, int *);
232
#ifndef obj_frob_symbol
233
#define obj_frob_symbol(symp, punt) elf_frob_symbol (symp, &punt)
234
#endif
235
 
236
extern void elf_pop_insert (void);
237
#ifndef obj_pop_insert
238
#define obj_pop_insert()        elf_pop_insert()
239
#endif
240
 
241
#ifndef OBJ_MAYBE_ELF
242
/* If OBJ_MAYBE_ELF then obj-multi.h will define obj_ecoff_set_ext.  */
243
#define obj_ecoff_set_ext elf_ecoff_set_ext
244
struct ecoff_extr;
245
extern void elf_ecoff_set_ext (symbolS *, struct ecoff_extr *);
246
#endif
247
extern asection *elf_com_section_ptr;
248
extern symbolS * elf_common_parse (int ignore ATTRIBUTE_UNUSED, symbolS *symbolP,
249
                                   addressT size);
250
 
251
#endif /* _OBJ_ELF_H */

powered by: WebSVN 2.1.0

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