* Makefile.in (DEMANGLING_STYLE): New define to set default
[deliverable/binutils-gdb.git] / bfd / libbfd.h
1 /* libbfd.h -- Declarations used by bfd library *implementation*.
2 (This include file is not for users of the library.)
3 Copyright 1990, 1991 Free Software Foundation, Inc.
4 Written by Cygnus Support.
5
6 This file is part of BFD, the Binary File Descriptor library.
7
8 This program 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 2 of the License, or
11 (at your option) any later version.
12
13 This program 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 this program; if not, write to the Free Software
20 Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */
21
22
23 /* Align an address upward to a boundary, expressed as a number of bytes.
24 E.g. align to an 8-byte boundary with argument of 8. */
25 #define BFD_ALIGN(this, boundary) \
26 ((( (this) + ((boundary) -1)) & (~((boundary)-1))))
27
28 /* If you want to read and write large blocks, you might want to do it
29 in quanta of this amount */
30 #define DEFAULT_BUFFERSIZE 8192
31
32 /* Set a tdata field. Can't use the other macros for this, since they
33 do casts, and casting to the left of assignment isn't portable. */
34 #define set_tdata(bfd, v) ((bfd)->tdata.any = (PTR) (v))
35
36 /* tdata for an archive. For an input archive, cache
37 needs to be free()'d. For an output archive, symdefs do. */
38
39 struct artdata {
40 file_ptr first_file_filepos;
41 /* Speed up searching the armap */
42 struct ar_cache *cache;
43 bfd *archive_head; /* Only interesting in output routines */
44 carsym *symdefs; /* the symdef entries */
45 symindex symdef_count; /* how many there are */
46 char *extended_names; /* clever intel extension */
47 };
48
49 #define bfd_ardata(bfd) ((bfd)->tdata.aout_ar_data)
50
51 /* Goes in bfd's arelt_data slot */
52 struct areltdata {
53 char * arch_header; /* it's actually a string */
54 unsigned int parsed_size; /* octets of filesize not including ar_hdr */
55 char *filename; /* null-terminated */
56 };
57
58 #define arelt_size(bfd) (((struct areltdata *)((bfd)->arelt_data))->parsed_size)
59
60 /* FIXME -- a lot of my code allocates a large block and subdivides it.
61 This can't always work, because of alignment restrictions. We should change
62 it before it becomes a problem -- Gumby */
63
64 PROTO (char *, zalloc, (bfd_size_type size));
65
66 /* These routines allocate and free things on the BFD's obstack. Note
67 that realloc can never occur in place. */
68
69 PROTO(PTR, bfd_alloc, (bfd *abfd, bfd_size_type size));
70 PROTO(PTR, bfd_zalloc,(bfd *abfd, bfd_size_type size));
71 PROTO(PTR, bfd_realloc,(bfd *abfd, PTR orig, bfd_size_type new));
72 PROTO(void, bfd_alloc_grow,(bfd *abfd, PTR thing, bfd_size_type size));
73 PROTO(PTR, bfd_alloc_finish,(bfd *abfd));
74
75 #define bfd_release(x,y) (void) obstack_free(&(x->memory),y)
76
77
78 PROTO (bfd_size_type, bfd_read, (PTR ptr, bfd_size_type size, bfd_size_type nitems, bfd *abfd));
79 PROTO (bfd_size_type, bfd_write, (CONST PTR ptr, bfd_size_type size, bfd_size_type nitems, bfd *abfd));
80
81
82
83 PROTO (int, bfd_seek,(bfd* CONST abfd, CONST file_ptr fp , CONST int direction));
84 PROTO (long, bfd_tell, (bfd *abfd));
85 PROTO (bfd *, _bfd_create_empty_archive_element_shell, (bfd *obfd));
86 PROTO (bfd *, look_for_bfd_in_cache, (bfd *arch_bfd, file_ptr index));
87 PROTO (boolean, _bfd_generic_mkarchive, (bfd *abfd));
88 PROTO (struct areltdata *, snarf_ar_hdr, (bfd *abfd));
89 PROTO (bfd_target *, bfd_generic_archive_p, (bfd *abfd));
90 PROTO (boolean, bfd_slurp_bsd_armap, (bfd *abfd));
91 PROTO (boolean, bfd_slurp_coff_armap, (bfd *abfd));
92 PROTO (boolean, _bfd_slurp_extended_name_table, (bfd *abfd));
93 PROTO (boolean, _bfd_write_archive_contents, (bfd *abfd));
94 PROTO (bfd *, new_bfd, ());
95
96 #define DEFAULT_STRING_SPACE_SIZE 0x2000
97 PROTO (boolean, bfd_add_to_string_table, (char **table, char *new_string,
98 unsigned int *table_length,
99 char **free_ptr));
100 PROTO (bfd_vma, _do_getb64, (unsigned char *addr));
101 PROTO (bfd_vma, _do_getl64, (unsigned char *addr));
102 PROTO (bfd_vma, _do_getb32, (unsigned char *addr));
103 PROTO (bfd_vma, _do_getl32, (unsigned char *addr));
104 PROTO (bfd_vma, _do_getb16, (unsigned char *addr));
105 PROTO (bfd_vma, _do_getl16, (unsigned char *addr));
106 PROTO (void, _do_putb64, (bfd_vma data, unsigned char *addr));
107 PROTO (void, _do_putl64, (bfd_vma data, unsigned char *addr));
108 PROTO (void, _do_putb32, (bfd_vma data, unsigned char *addr));
109 PROTO (void, _do_putl32, (bfd_vma data, unsigned char *addr));
110 PROTO (void, _do_putb16, (bfd_vma data, unsigned char *addr));
111 PROTO (void, _do_putl16, (bfd_vma data, unsigned char *addr));
112
113 PROTO (boolean, bfd_false, (bfd *ignore));
114 PROTO (boolean, bfd_true, (bfd *ignore));
115 PROTO (PTR, bfd_nullvoidptr, (bfd *ignore));
116 PROTO (int, bfd_0, (bfd *ignore));
117 PROTO (unsigned int, bfd_0u, (bfd *ignore));
118 PROTO (void, bfd_void, (bfd *ignore));
119
120 PROTO (bfd *,new_bfd_contained_in,(bfd *));
121 PROTO (boolean, _bfd_dummy_new_section_hook, (bfd *ignore, asection *newsect));
122 PROTO (char *, _bfd_dummy_core_file_failing_command, (bfd *abfd));
123 PROTO (int, _bfd_dummy_core_file_failing_signal, (bfd *abfd));
124 PROTO (boolean, _bfd_dummy_core_file_matches_executable_p, (bfd *core_bfd,
125 bfd *exec_bfd));
126 PROTO (bfd_target *, _bfd_dummy_target, (bfd *abfd));
127
128 PROTO (void, bfd_dont_truncate_arname, (bfd *abfd, CONST char *filename,
129 char *hdr));
130 PROTO (void, bfd_bsd_truncate_arname, (bfd *abfd, CONST char *filename,
131 char *hdr));
132 PROTO (void, bfd_gnu_truncate_arname, (bfd *abfd, CONST char *filename,
133 char *hdr));
134
135 PROTO (boolean, bsd_write_armap, (bfd *arch, unsigned int elength,
136 struct orl *map, unsigned int orl_count, int stridx));
137
138 PROTO (boolean, coff_write_armap, (bfd *arch, unsigned int elength,
139 struct orl *map, unsigned int orl_count, int stridx));
140
141 PROTO (bfd *, bfd_generic_openr_next_archived_file, (bfd *archive,
142 bfd *last_file));
143
144 PROTO(int, bfd_generic_stat_arch_elt, (bfd *, struct stat *));
145
146 PROTO(boolean, bfd_generic_get_section_contents,
147 (bfd *abfd, sec_ptr section, PTR location, file_ptr offset,
148 bfd_size_type count));
149
150 PROTO(boolean, bfd_generic_set_section_contents,
151 (bfd *abfd, sec_ptr section, PTR location, file_ptr offset,
152 bfd_size_type count));
153
154 /* Macros to tell if bfds are read or write enabled.
155
156 Note that bfds open for read may be scribbled into if the fd passed
157 to bfd_fdopenr is actually open both for read and write
158 simultaneously. However an output bfd will never be open for
159 read. Therefore sometimes you want to check bfd_read_p or
160 !bfd_read_p, and only sometimes bfd_write_p.
161 */
162
163 #define bfd_read_p(abfd) ((abfd)->direction == read_direction || (abfd)->direction == both_direction)
164 #define bfd_write_p(abfd) ((abfd)->direction == write_direction || (abfd)->direction == both_direction)
165
166 PROTO (void, bfd_assert,(char*,int));
167 #define BFD_ASSERT(x) \
168 { if (!(x)) bfd_assert(__FILE__,__LINE__); }
169
170 #define BFD_FAIL() \
171 { bfd_assert(__FILE__,__LINE__); }
172
173 PROTO (FILE *, bfd_cache_lookup_worker, (bfd *));
174
175 extern bfd *bfd_last_cache;
176
177 /* Now Steve, what's the story here? */
178 #ifdef lint
179 #define itos(x) "l"
180 #define stoi(x) 1
181 #else
182 #define itos(x) ((char*)(x))
183 #define stoi(x) ((int)(x))
184 #endif
185
186 /* Generic routine for close_and_cleanup is really just bfd_true. */
187 #define bfd_generic_close_and_cleanup bfd_true
188
189 /* And more follows */
190
191 void EXFUN(bfd_check_init, (void));
192 PTR EXFUN(bfd_xmalloc, ( bfd_size_type size));
193 void EXFUN(bfd_write_bigendian_4byte_int, (bfd *abfd, int i));
194 bfd_vma EXFUN(bfd_log2, (bfd_vma x));
195 void EXFUN(bfd_check_init, (void));
196 PTR EXFUN(bfd_xmalloc, ( bfd_size_type size));
197 void EXFUN(bfd_write_bigendian_4byte_int, (bfd *abfd, int i));
198 bfd_vma EXFUN(bfd_log2, (bfd_vma x));
199 #define BFD_CACHE_MAX_OPEN 10
200 extern bfd *bfd_last_cache;
201
202 #define bfd_cache_lookup(x) \
203 ((x)==bfd_last_cache? \
204 (FILE*)(bfd_last_cache->iostream): \
205 bfd_cache_lookup_worker(x))
206 void EXFUN(bfd_cache_init , (bfd *));
207 void EXFUN(bfd_cache_close , (bfd *));
208 FILE* EXFUN(bfd_open_file, (bfd *));
209 FILE *EXFUN(bfd_cache_lookup_worker, (bfd *));
210 void EXFUN(bfd_constructor_entry, (bfd *abfd,
211 asymbol **symbol_ptr_ptr,
212 CONST char*type));
213 CONST struct reloc_howto_struct *EXFUN(bfd_default_reloc_type_lookup
214 , (CONST struct bfd_arch_info *,
215 bfd_reloc_code_real_type code));
216 boolean EXFUN(bfd_generic_relax_section
217 , (bfd *abfd,
218 asection *section,
219 asymbol **symbols));
220 bfd_byte *
221 EXFUN(bfd_generic_get_relocated_section_contents, (bfd *abfd,
222 struct bfd_seclet_struct *seclet,
223 bfd_byte *data)
224
225 );
226 extern bfd_arch_info_type bfd_default_arch_struct;
227 boolean EXFUN(bfd_default_set_arch_mach, (bfd *abfd,
228 enum bfd_architecture arch,
229 unsigned long mach));
230 void EXFUN(bfd_arch_init, (void));
231 void EXFUN(bfd_arch_linkin, (bfd_arch_info_type *));
232 CONST bfd_arch_info_type *EXFUN(bfd_default_compatible
233 , (CONST bfd_arch_info_type *a,
234 CONST bfd_arch_info_type *b));
235 boolean EXFUN(bfd_default_scan, (CONST struct bfd_arch_info *, CONST char *));
This page took 0.034799 seconds and 4 git commands to generate.