Deleted Added
full compact
1/* bfdlink.h -- header file for BFD link routines
2 Copyright 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000
3 Free Software Foundation, Inc.
4 Written by Steve Chamberlain and Ian Lance Taylor, Cygnus Support.
5
6This file is part of BFD, the Binary File Descriptor library.
7
8This program is free software; you can redistribute it and/or modify
9it under the terms of the GNU General Public License as published by
10the Free Software Foundation; either version 2 of the License, or
11(at your option) any later version.
12
13This program is distributed in the hope that it will be useful,
14but WITHOUT ANY WARRANTY; without even the implied warranty of
15MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16GNU General Public License for more details.
17
18You should have received a copy of the GNU General Public License
19along with this program; if not, write to the Free Software
20Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
21
22#ifndef BFDLINK_H
23#define BFDLINK_H
24
25/* Which symbols to strip during a link. */
26enum bfd_link_strip
27{
28 strip_none, /* Don't strip any symbols. */

--- 149 unchanged lines hidden (view full) ---

178extern void bfd_link_hash_traverse
179 PARAMS ((struct bfd_link_hash_table *,
180 boolean (*) (struct bfd_link_hash_entry *, PTR),
181 PTR));
182
183/* Add an entry to the undefs list. */
184extern void bfd_link_add_undef
185 PARAMS ((struct bfd_link_hash_table *, struct bfd_link_hash_entry *));
186
187/* This structure holds all the information needed to communicate
188 between BFD and the linker when doing a link. */
189
190struct bfd_link_info
191{
192 /* Function callbacks. */
193 const struct bfd_link_callbacks *callbacks;
194 /* true if BFD should generate a relocateable object file. */
195 boolean relocateable;
196 /* true if BFD should generate relocation information in the final executable. */
197 boolean emitrelocations;
198 /* true if BFD should generate a "task linked" object file,
199 similar to relocatable but also with globals converted to statics. */
200 boolean task_link;
201 /* true if BFD should generate a shared object. */
202 boolean shared;
203 /* true if BFD should pre-bind symbols in a shared object. */
204 boolean symbolic;
205 /* true if BFD should export all symbols in the dynamic symbol table
206 of an executable, rather than only those used. */
207 boolean export_dynamic;
208 /* true if shared objects should be linked directly, not shared. */
209 boolean static_link;
210 /* true if the output file should be in a traditional format. This
211 is equivalent to the setting of the BFD_TRADITIONAL_FORMAT flag
212 on the output file, but may be checked when reading the input
213 files. */
214 boolean traditional_format;
215 /* true if we want to produced optimized output files. This might
216 need much more time and therefore must be explicitly selected. */
217 boolean optimize;
218 /* true if BFD should generate errors for undefined symbols
219 even if generating a shared object. */
220 boolean no_undefined;
221 /* true if BFD should allow undefined symbols in shared objects even
222 when no_undefined is set to disallow undefined symbols. The net
223 result will be that undefined symbols in regular objects will
224 still trigger an error, but undefined symbols in shared objects
225 will be ignored. The implementation of no_undefined makes the
226 assumption that the runtime linker will choke on undefined
227 symbols. However there is at least one system (BeOS) where
228 undefined symbols in shared libraries is normal since the kernel
229 patches them at load time to select which function is most
230 appropriate for the current architecture. I.E. dynamically
231 select an appropriate memset function. Apparently it is also
232 normal for HPPA shared libraries to have undefined symbols. */
233 boolean allow_shlib_undefined;
234 /* Which symbols to strip. */
235 enum bfd_link_strip strip;
236 /* Which local symbols to discard. */
237 enum bfd_link_discard discard;
238 /* true if symbols should be retained in memory, false if they
239 should be freed and reread. */
240 boolean keep_memory;
241 /* The list of input BFD's involved in the link. These are chained
242 together via the link_next field. */
243 bfd *input_bfds;
244 /* If a symbol should be created for each input BFD, this is section
245 where those symbols should be placed. It must be a section in
246 the output BFD. It may be NULL, in which case no such symbols
247 will be created. This is to support CREATE_OBJECT_SYMBOLS in the
248 linker command language. */
249 asection *create_object_symbols_section;
250 /* Hash table handled by BFD. */
251 struct bfd_link_hash_table *hash;
252 /* Hash table of symbols to keep. This is NULL unless strip is
253 strip_some. */
254 struct bfd_hash_table *keep_hash;
255 /* true if every symbol should be reported back via the notice
256 callback. */
257 boolean notice_all;
258 /* Hash table of symbols to report back via the notice callback. If
259 this is NULL, and notice_all is false, then no symbols are
260 reported back. */
261 struct bfd_hash_table *notice_hash;
262 /* Hash table of symbols which are being wrapped (the --wrap linker
263 option). If this is NULL, no symbols are being wrapped. */
264 struct bfd_hash_table *wrap_hash;
265 /* If a base output file is wanted, then this points to it */
266 PTR base_file;
267
268 /* If non-zero, specifies that branches which are problematic for the
269 MPC860 C0 (or earlier) should be checked for and modified. It gives the
270 number of bytes that should be checked at the end of each text page. */
271 int mpc860c0;
272
273 /* The function to call when the executable or shared object is
274 loaded. */
275 const char *init_function;
276 /* The function to call when the executable or shared object is
277 unloaded. */
278 const char *fini_function;
279
280 /* true if the new ELF dynamic tags are enabled. */
281 boolean new_dtags;
282
283 /* May be used to set DT_FLAGS for ELF. */
284 bfd_vma flags;
285
286 /* May be used to set DT_FLAGS_1 for ELF. */
287 bfd_vma flags_1;
288
289 /* True if auto-import thunks for DATA items in pei386 DLLs
290 should be generated/linked against. */
291 boolean pei386_auto_import;
292
293 /* True if non-PLT relocs should be merged into one reloc section
294 and sorted so that relocs against the same symbol come together. */
295 boolean combreloc;
296
297 /* True if executable should not contain copy relocs.
298 Setting this true may result in a non-sharable text segment. */
299 boolean nocopyreloc;

--- 141 unchanged lines hidden (view full) ---

441 include input data in the output file. */
442
443/* These are the types of link_order structures. */
444
445enum bfd_link_order_type
446{
447 bfd_undefined_link_order, /* Undefined. */
448 bfd_indirect_link_order, /* Built from a section. */
449 bfd_fill_link_order, /* Fill with a 16 bit constant. */
450 bfd_data_link_order, /* Set to explicit data. */
451 bfd_section_reloc_link_order, /* Relocate against a section. */
452 bfd_symbol_reloc_link_order /* Relocate against a symbol. */
453};
454
455/* This is the link_order structure itself. These form a chain
456 attached to the section whose contents they are describing. */
457

--- 17 unchanged lines hidden (view full) ---

475 link_order is attached to, section->output_offset must
476 equal the link_order offset field, and section->_raw_size
477 must equal the link_order size field. Maybe these
478 restrictions should be relaxed someday. */
479 asection *section;
480 } indirect;
481 struct
482 {
483 /* Value to fill with. */
484 unsigned int value;
485 } fill;
486 struct
487 {
488 /* Data to put into file. The size field gives the number
489 of bytes which this field points to. */
490 bfd_byte *contents;
491 } data;
492 struct
493 {
494 /* Description of reloc to generate. Used for
495 bfd_section_reloc_link_order and
496 bfd_symbol_reloc_link_order. */
497 struct bfd_link_order_reloc *p;

--- 50 unchanged lines hidden (view full) ---

548struct bfd_elf_version_expr
549{
550 /* Next regular expression for this version. */
551 struct bfd_elf_version_expr *next;
552 /* Regular expression. */
553 const char *pattern;
554 /* Matching function. */
555 int (*match) PARAMS((struct bfd_elf_version_expr *, const char *));
556};
557
558/* Version dependencies. */
559
560struct bfd_elf_version_deps
561{
562 /* Next dependency for this version. */
563 struct bfd_elf_version_deps *next;

--- 27 unchanged lines hidden ---