* bfd/elf32-hppa.c (hppa_elf_hash_entry): Define.
[external/binutils.git] / bfd / bfd.c
1 /* Generic BFD library interface and support routines.
2    Copyright 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
3    2000, 2001, 2002, 2003, 2004, 2005
4    Free Software Foundation, Inc.
5    Written by Cygnus Support.
6
7    This file is part of BFD, the Binary File Descriptor library.
8
9    This program is free software; you can redistribute it and/or modify
10    it under the terms of the GNU General Public License as published by
11    the Free Software Foundation; either version 2 of the License, or
12    (at your option) any later version.
13
14    This program is distributed in the hope that it will be useful,
15    but WITHOUT ANY WARRANTY; without even the implied warranty of
16    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
17    GNU General Public License for more details.
18
19    You should have received a copy of the GNU General Public License
20    along with this program; if not, write to the Free Software
21    Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA.  */
22
23 /*
24 SECTION
25         <<typedef bfd>>
26
27         A BFD has type <<bfd>>; objects of this type are the
28         cornerstone of any application using BFD. Using BFD
29         consists of making references though the BFD and to data in the BFD.
30
31         Here is the structure that defines the type <<bfd>>.  It
32         contains the major data about the file and pointers
33         to the rest of the data.
34
35 CODE_FRAGMENT
36 .
37 .struct bfd
38 .{
39 .  {* A unique identifier of the BFD  *}
40 .  unsigned int id;
41 .
42 .  {* The filename the application opened the BFD with.  *}
43 .  const char *filename;
44 .
45 .  {* A pointer to the target jump table.  *}
46 .  const struct bfd_target *xvec;
47 .
48 .  {* The IOSTREAM, and corresponding IO vector that provide access
49 .     to the file backing the BFD.  *}
50 .  void *iostream;
51 .  const struct bfd_iovec *iovec;
52 .
53 .  {* Is the file descriptor being cached?  That is, can it be closed as
54 .     needed, and re-opened when accessed later?  *}
55 .  bfd_boolean cacheable;
56 .
57 .  {* Marks whether there was a default target specified when the
58 .     BFD was opened. This is used to select which matching algorithm
59 .     to use to choose the back end.  *}
60 .  bfd_boolean target_defaulted;
61 .
62 .  {* The caching routines use these to maintain a
63 .     least-recently-used list of BFDs.  *}
64 .  struct bfd *lru_prev, *lru_next;
65 .
66 .  {* When a file is closed by the caching routines, BFD retains
67 .     state information on the file here...  *}
68 .  ufile_ptr where;
69 .
70 .  {* ... and here: (``once'' means at least once).  *}
71 .  bfd_boolean opened_once;
72 .
73 .  {* Set if we have a locally maintained mtime value, rather than
74 .     getting it from the file each time.  *}
75 .  bfd_boolean mtime_set;
76 .
77 .  {* File modified time, if mtime_set is TRUE.  *}
78 .  long mtime;
79 .
80 .  {* Reserved for an unimplemented file locking extension.  *}
81 .  int ifd;
82 .
83 .  {* The format which belongs to the BFD. (object, core, etc.)  *}
84 .  bfd_format format;
85 .
86 .  {* The direction with which the BFD was opened.  *}
87 .  enum bfd_direction
88 .    {
89 .      no_direction = 0,
90 .      read_direction = 1,
91 .      write_direction = 2,
92 .      both_direction = 3
93 .    }
94 .  direction;
95 .
96 .  {* Format_specific flags.  *}
97 .  flagword flags;
98 .
99 .  {* Currently my_archive is tested before adding origin to
100 .     anything. I believe that this can become always an add of
101 .     origin, with origin set to 0 for non archive files.  *}
102 .  ufile_ptr origin;
103 .
104 .  {* Remember when output has begun, to stop strange things
105 .     from happening.  *}
106 .  bfd_boolean output_has_begun;
107 .
108 .  {* A hash table for section names.  *}
109 .  struct bfd_hash_table section_htab;
110 .
111 .  {* Pointer to linked list of sections.  *}
112 .  struct bfd_section *sections;
113 .
114 .  {* The last section on the section list.  *}
115 .  struct bfd_section *section_last;
116 .
117 .  {* The number of sections.  *}
118 .  unsigned int section_count;
119 .
120 .  {* Stuff only useful for object files:
121 .     The start address.  *}
122 .  bfd_vma start_address;
123 .
124 .  {* Used for input and output.  *}
125 .  unsigned int symcount;
126 .
127 .  {* Symbol table for output BFD (with symcount entries).  *}
128 .  struct bfd_symbol  **outsymbols;
129 .
130 .  {* Used for slurped dynamic symbol tables.  *}
131 .  unsigned int dynsymcount;
132 .
133 .  {* Pointer to structure which contains architecture information.  *}
134 .  const struct bfd_arch_info *arch_info;
135 .
136 .  {* Flag set if symbols from this BFD should not be exported.  *}
137 .  bfd_boolean no_export;
138 .
139 .  {* Stuff only useful for archives.  *}
140 .  void *arelt_data;
141 .  struct bfd *my_archive;      {* The containing archive BFD.  *}
142 .  struct bfd *next;            {* The next BFD in the archive.  *}
143 .  struct bfd *archive_head;    {* The first BFD in the archive.  *}
144 .  bfd_boolean has_armap;
145 .
146 .  {* A chain of BFD structures involved in a link.  *}
147 .  struct bfd *link_next;
148 .
149 .  {* A field used by _bfd_generic_link_add_archive_symbols.  This will
150 .     be used only for archive elements.  *}
151 .  int archive_pass;
152 .
153 .  {* Used by the back end to hold private data.  *}
154 .  union
155 .    {
156 .      struct aout_data_struct *aout_data;
157 .      struct artdata *aout_ar_data;
158 .      struct _oasys_data *oasys_obj_data;
159 .      struct _oasys_ar_data *oasys_ar_data;
160 .      struct coff_tdata *coff_obj_data;
161 .      struct pe_tdata *pe_obj_data;
162 .      struct xcoff_tdata *xcoff_obj_data;
163 .      struct ecoff_tdata *ecoff_obj_data;
164 .      struct ieee_data_struct *ieee_data;
165 .      struct ieee_ar_data_struct *ieee_ar_data;
166 .      struct srec_data_struct *srec_data;
167 .      struct ihex_data_struct *ihex_data;
168 .      struct tekhex_data_struct *tekhex_data;
169 .      struct elf_obj_tdata *elf_obj_data;
170 .      struct nlm_obj_tdata *nlm_obj_data;
171 .      struct bout_data_struct *bout_data;
172 .      struct mmo_data_struct *mmo_data;
173 .      struct sun_core_struct *sun_core_data;
174 .      struct sco5_core_struct *sco5_core_data;
175 .      struct trad_core_struct *trad_core_data;
176 .      struct som_data_struct *som_data;
177 .      struct hpux_core_struct *hpux_core_data;
178 .      struct hppabsd_core_struct *hppabsd_core_data;
179 .      struct sgi_core_struct *sgi_core_data;
180 .      struct lynx_core_struct *lynx_core_data;
181 .      struct osf_core_struct *osf_core_data;
182 .      struct cisco_core_struct *cisco_core_data;
183 .      struct versados_data_struct *versados_data;
184 .      struct netbsd_core_struct *netbsd_core_data;
185 .      struct mach_o_data_struct *mach_o_data;
186 .      struct mach_o_fat_data_struct *mach_o_fat_data;
187 .      struct bfd_pef_data_struct *pef_data;
188 .      struct bfd_pef_xlib_data_struct *pef_xlib_data;
189 .      struct bfd_sym_data_struct *sym_data;
190 .      void *any;
191 .    }
192 .  tdata;
193 .
194 .  {* Used by the application to hold private data.  *}
195 .  void *usrdata;
196 .
197 .  {* Where all the allocated stuff under this BFD goes.  This is a
198 .     struct objalloc *, but we use void * to avoid requiring the inclusion
199 .     of objalloc.h.  *}
200 .  void *memory;
201 .};
202 .
203 */
204
205 #include "bfd.h"
206 #include "bfdver.h"
207 #include "sysdep.h"
208 #include <stdarg.h>
209 #include "libiberty.h"
210 #include "safe-ctype.h"
211 #include "bfdlink.h"
212 #include "libbfd.h"
213 #include "coff/internal.h"
214 #include "coff/sym.h"
215 #include "libcoff.h"
216 #include "libecoff.h"
217 #undef obj_symbols
218 #include "elf-bfd.h"
219 \f
220 /* provide storage for subsystem, stack and heap data which may have been
221    passed in on the command line.  Ld puts this data into a bfd_link_info
222    struct which ultimately gets passed in to the bfd.  When it arrives, copy
223    it to the following struct so that the data will be available in coffcode.h
224    where it is needed.  The typedef's used are defined in bfd.h */
225 \f
226 /*
227 SECTION
228         Error reporting
229
230         Most BFD functions return nonzero on success (check their
231         individual documentation for precise semantics).  On an error,
232         they call <<bfd_set_error>> to set an error condition that callers
233         can check by calling <<bfd_get_error>>.
234         If that returns <<bfd_error_system_call>>, then check
235         <<errno>>.
236
237         The easiest way to report a BFD error to the user is to
238         use <<bfd_perror>>.
239
240 SUBSECTION
241         Type <<bfd_error_type>>
242
243         The values returned by <<bfd_get_error>> are defined by the
244         enumerated type <<bfd_error_type>>.
245
246 CODE_FRAGMENT
247 .
248 .typedef enum bfd_error
249 .{
250 .  bfd_error_no_error = 0,
251 .  bfd_error_system_call,
252 .  bfd_error_invalid_target,
253 .  bfd_error_wrong_format,
254 .  bfd_error_wrong_object_format,
255 .  bfd_error_invalid_operation,
256 .  bfd_error_no_memory,
257 .  bfd_error_no_symbols,
258 .  bfd_error_no_armap,
259 .  bfd_error_no_more_archived_files,
260 .  bfd_error_malformed_archive,
261 .  bfd_error_file_not_recognized,
262 .  bfd_error_file_ambiguously_recognized,
263 .  bfd_error_no_contents,
264 .  bfd_error_nonrepresentable_section,
265 .  bfd_error_no_debug_section,
266 .  bfd_error_bad_value,
267 .  bfd_error_file_truncated,
268 .  bfd_error_file_too_big,
269 .  bfd_error_invalid_error_code
270 .}
271 .bfd_error_type;
272 .
273 */
274
275 static bfd_error_type bfd_error = bfd_error_no_error;
276
277 const char *const bfd_errmsgs[] =
278 {
279   N_("No error"),
280   N_("System call error"),
281   N_("Invalid bfd target"),
282   N_("File in wrong format"),
283   N_("Archive object file in wrong format"),
284   N_("Invalid operation"),
285   N_("Memory exhausted"),
286   N_("No symbols"),
287   N_("Archive has no index; run ranlib to add one"),
288   N_("No more archived files"),
289   N_("Malformed archive"),
290   N_("File format not recognized"),
291   N_("File format is ambiguous"),
292   N_("Section has no contents"),
293   N_("Nonrepresentable section on output"),
294   N_("Symbol needs debug section which does not exist"),
295   N_("Bad value"),
296   N_("File truncated"),
297   N_("File too big"),
298   N_("#<Invalid error code>")
299 };
300
301 /*
302 FUNCTION
303         bfd_get_error
304
305 SYNOPSIS
306         bfd_error_type bfd_get_error (void);
307
308 DESCRIPTION
309         Return the current BFD error condition.
310 */
311
312 bfd_error_type
313 bfd_get_error (void)
314 {
315   return bfd_error;
316 }
317
318 /*
319 FUNCTION
320         bfd_set_error
321
322 SYNOPSIS
323         void bfd_set_error (bfd_error_type error_tag);
324
325 DESCRIPTION
326         Set the BFD error condition to be @var{error_tag}.
327 */
328
329 void
330 bfd_set_error (bfd_error_type error_tag)
331 {
332   bfd_error = error_tag;
333 }
334
335 /*
336 FUNCTION
337         bfd_errmsg
338
339 SYNOPSIS
340         const char *bfd_errmsg (bfd_error_type error_tag);
341
342 DESCRIPTION
343         Return a string describing the error @var{error_tag}, or
344         the system error if @var{error_tag} is <<bfd_error_system_call>>.
345 */
346
347 const char *
348 bfd_errmsg (bfd_error_type error_tag)
349 {
350 #ifndef errno
351   extern int errno;
352 #endif
353   if (error_tag == bfd_error_system_call)
354     return xstrerror (errno);
355
356   if (error_tag > bfd_error_invalid_error_code)
357     error_tag = bfd_error_invalid_error_code;   /* sanity check */
358
359   return _(bfd_errmsgs [error_tag]);
360 }
361
362 /*
363 FUNCTION
364         bfd_perror
365
366 SYNOPSIS
367         void bfd_perror (const char *message);
368
369 DESCRIPTION
370         Print to the standard error stream a string describing the
371         last BFD error that occurred, or the last system error if
372         the last BFD error was a system call failure.  If @var{message}
373         is non-NULL and non-empty, the error string printed is preceded
374         by @var{message}, a colon, and a space.  It is followed by a newline.
375 */
376
377 void
378 bfd_perror (const char *message)
379 {
380   if (bfd_get_error () == bfd_error_system_call)
381     /* Must be a system error then.  */
382     perror ((char *) message);
383   else
384     {
385       if (message == NULL || *message == '\0')
386         fprintf (stderr, "%s\n", bfd_errmsg (bfd_get_error ()));
387       else
388         fprintf (stderr, "%s: %s\n", message, bfd_errmsg (bfd_get_error ()));
389     }
390 }
391
392 /*
393 SUBSECTION
394         BFD error handler
395
396         Some BFD functions want to print messages describing the
397         problem.  They call a BFD error handler function.  This
398         function may be overridden by the program.
399
400         The BFD error handler acts like printf.
401
402 CODE_FRAGMENT
403 .
404 .typedef void (*bfd_error_handler_type) (const char *, ...);
405 .
406 */
407
408 /* The program name used when printing BFD error messages.  */
409
410 static const char *_bfd_error_program_name;
411
412 /* This is the default routine to handle BFD error messages.
413    Like fprintf (stderr, ...), but also handles some extra format specifiers.
414
415    %A section name from section.  For group components, print group name too.
416    %B file name from bfd.  For archive components, prints archive too.
417  */
418
419 void
420 _bfd_default_error_handler (const char *fmt, ...)
421 {
422   va_list ap;
423   char *bufp;
424   const char *new_fmt, *p;
425   size_t avail = 1000;
426   char buf[1000];
427
428   if (_bfd_error_program_name != NULL)
429     fprintf (stderr, "%s: ", _bfd_error_program_name);
430   else
431     fprintf (stderr, "BFD: ");
432
433   va_start (ap, fmt);
434   new_fmt = fmt;
435   bufp = buf;
436
437   /* Reserve enough space for the existing format string.  */
438   avail -= strlen (fmt) + 1;
439   if (avail > 1000)
440     abort ();
441
442   p = fmt;
443   while (1)
444     {
445       char *q;
446       size_t len, extra, trim;
447
448       p = strchr (p, '%');
449       if (p == NULL || p[1] == '\0')
450         {
451           if (new_fmt == buf)
452             {
453               len = strlen (fmt);
454               memcpy (bufp, fmt, len + 1);
455             }
456           break;
457         }
458
459       if (p[1] == 'A' || p[1] == 'B')
460         {
461           len = p - fmt;
462           memcpy (bufp, fmt, len);
463           bufp += len;
464           fmt = p + 2;
465           new_fmt = buf;
466
467           /* If we run out of space, tough, you lose your ridiculously
468              long file or section name.  It's not safe to try to alloc
469              memory here;  We might be printing an out of memory message.  */
470           if (avail == 0)
471             {
472               *bufp++ = '*';
473               *bufp++ = '*';
474               *bufp = '\0';
475             }
476           else
477             {
478               if (p[1] == 'B')
479                 {
480                   bfd *abfd = va_arg (ap, bfd *);
481                   if (abfd->my_archive)
482                     snprintf (bufp, avail, "%s(%s)",
483                               abfd->my_archive->filename, abfd->filename);
484                   else
485                     snprintf (bufp, avail, "%s", abfd->filename);
486                 }
487               else
488                 {
489                   asection *sec = va_arg (ap, asection *);
490                   bfd *abfd = sec->owner;
491                   const char *group = NULL;
492                   struct coff_comdat_info *ci;
493
494                   if (abfd != NULL
495                       && bfd_get_flavour (abfd) == bfd_target_elf_flavour
496                       && elf_next_in_group (sec) != NULL
497                       && (sec->flags & SEC_GROUP) == 0)
498                     group = elf_group_name (sec);
499                   else if (abfd != NULL
500                            && bfd_get_flavour (abfd) == bfd_target_coff_flavour
501                            && (ci = bfd_coff_get_comdat_section (sec->owner,
502                                                                  sec)) != NULL)
503                     group = ci->name;
504                   if (group != NULL)
505                     snprintf (bufp, avail, "%s[%s]", sec->name, group);
506                   else
507                     snprintf (bufp, avail, "%s", sec->name);
508                 }
509               len = strlen (bufp);
510               avail = avail - len + 2;
511
512               /* We need to replace any '%' we printed by "%%".
513                  First count how many.  */
514               q = bufp;
515               bufp += len;
516               extra = 0;
517               while ((q = strchr (q, '%')) != NULL)
518                 {
519                   ++q;
520                   ++extra;
521                 }
522
523               /* If there isn't room, trim off the end of the string.  */
524               q = bufp;
525               bufp += extra;
526               if (extra > avail)
527                 {
528                   trim = extra - avail;
529                   bufp -= trim;
530                   do
531                     {
532                       if (*--q == '%')
533                         --extra;
534                     }
535                   while (--trim != 0);
536                   *q = '\0';
537                   avail = extra;
538                 }
539               avail -= extra;
540
541               /* Now double all '%' chars, shuffling the string as we go.  */
542               while (extra != 0)
543                 {
544                   while ((q[extra] = *q) != '%')
545                     --q;
546                   q[--extra] = '%';
547                   --q;
548                 }
549             }
550         }
551       p = p + 2;
552     }
553
554   vfprintf (stderr, new_fmt, ap);
555   va_end (ap);
556
557   putc ('\n', stderr);
558 }
559
560 /* This is a function pointer to the routine which should handle BFD
561    error messages.  It is called when a BFD routine encounters an
562    error for which it wants to print a message.  Going through a
563    function pointer permits a program linked against BFD to intercept
564    the messages and deal with them itself.  */
565
566 bfd_error_handler_type _bfd_error_handler = _bfd_default_error_handler;
567
568 /*
569 FUNCTION
570         bfd_set_error_handler
571
572 SYNOPSIS
573         bfd_error_handler_type bfd_set_error_handler (bfd_error_handler_type);
574
575 DESCRIPTION
576         Set the BFD error handler function.  Returns the previous
577         function.
578 */
579
580 bfd_error_handler_type
581 bfd_set_error_handler (bfd_error_handler_type pnew)
582 {
583   bfd_error_handler_type pold;
584
585   pold = _bfd_error_handler;
586   _bfd_error_handler = pnew;
587   return pold;
588 }
589
590 /*
591 FUNCTION
592         bfd_set_error_program_name
593
594 SYNOPSIS
595         void bfd_set_error_program_name (const char *);
596
597 DESCRIPTION
598         Set the program name to use when printing a BFD error.  This
599         is printed before the error message followed by a colon and
600         space.  The string must not be changed after it is passed to
601         this function.
602 */
603
604 void
605 bfd_set_error_program_name (const char *name)
606 {
607   _bfd_error_program_name = name;
608 }
609
610 /*
611 FUNCTION
612         bfd_get_error_handler
613
614 SYNOPSIS
615         bfd_error_handler_type bfd_get_error_handler (void);
616
617 DESCRIPTION
618         Return the BFD error handler function.
619 */
620
621 bfd_error_handler_type
622 bfd_get_error_handler (void)
623 {
624   return _bfd_error_handler;
625 }
626 \f
627 /*
628 SECTION
629         Symbols
630 */
631
632 /*
633 FUNCTION
634         bfd_get_reloc_upper_bound
635
636 SYNOPSIS
637         long bfd_get_reloc_upper_bound (bfd *abfd, asection *sect);
638
639 DESCRIPTION
640         Return the number of bytes required to store the
641         relocation information associated with section @var{sect}
642         attached to bfd @var{abfd}.  If an error occurs, return -1.
643
644 */
645
646 long
647 bfd_get_reloc_upper_bound (bfd *abfd, sec_ptr asect)
648 {
649   if (abfd->format != bfd_object)
650     {
651       bfd_set_error (bfd_error_invalid_operation);
652       return -1;
653     }
654
655   return BFD_SEND (abfd, _get_reloc_upper_bound, (abfd, asect));
656 }
657
658 /*
659 FUNCTION
660         bfd_canonicalize_reloc
661
662 SYNOPSIS
663         long bfd_canonicalize_reloc
664           (bfd *abfd, asection *sec, arelent **loc, asymbol **syms);
665
666 DESCRIPTION
667         Call the back end associated with the open BFD
668         @var{abfd} and translate the external form of the relocation
669         information attached to @var{sec} into the internal canonical
670         form.  Place the table into memory at @var{loc}, which has
671         been preallocated, usually by a call to
672         <<bfd_get_reloc_upper_bound>>.  Returns the number of relocs, or
673         -1 on error.
674
675         The @var{syms} table is also needed for horrible internal magic
676         reasons.
677
678 */
679 long
680 bfd_canonicalize_reloc (bfd *abfd,
681                         sec_ptr asect,
682                         arelent **location,
683                         asymbol **symbols)
684 {
685   if (abfd->format != bfd_object)
686     {
687       bfd_set_error (bfd_error_invalid_operation);
688       return -1;
689     }
690
691   return BFD_SEND (abfd, _bfd_canonicalize_reloc,
692                    (abfd, asect, location, symbols));
693 }
694
695 /*
696 FUNCTION
697         bfd_set_reloc
698
699 SYNOPSIS
700         void bfd_set_reloc
701           (bfd *abfd, asection *sec, arelent **rel, unsigned int count);
702
703 DESCRIPTION
704         Set the relocation pointer and count within
705         section @var{sec} to the values @var{rel} and @var{count}.
706         The argument @var{abfd} is ignored.
707
708 */
709
710 void
711 bfd_set_reloc (bfd *ignore_abfd ATTRIBUTE_UNUSED,
712                sec_ptr asect,
713                arelent **location,
714                unsigned int count)
715 {
716   asect->orelocation = location;
717   asect->reloc_count = count;
718 }
719
720 /*
721 FUNCTION
722         bfd_set_file_flags
723
724 SYNOPSIS
725         bfd_boolean bfd_set_file_flags (bfd *abfd, flagword flags);
726
727 DESCRIPTION
728         Set the flag word in the BFD @var{abfd} to the value @var{flags}.
729
730         Possible errors are:
731         o <<bfd_error_wrong_format>> - The target bfd was not of object format.
732         o <<bfd_error_invalid_operation>> - The target bfd was open for reading.
733         o <<bfd_error_invalid_operation>> -
734         The flag word contained a bit which was not applicable to the
735         type of file.  E.g., an attempt was made to set the <<D_PAGED>> bit
736         on a BFD format which does not support demand paging.
737
738 */
739
740 bfd_boolean
741 bfd_set_file_flags (bfd *abfd, flagword flags)
742 {
743   if (abfd->format != bfd_object)
744     {
745       bfd_set_error (bfd_error_wrong_format);
746       return FALSE;
747     }
748
749   if (bfd_read_p (abfd))
750     {
751       bfd_set_error (bfd_error_invalid_operation);
752       return FALSE;
753     }
754
755   bfd_get_file_flags (abfd) = flags;
756   if ((flags & bfd_applicable_file_flags (abfd)) != flags)
757     {
758       bfd_set_error (bfd_error_invalid_operation);
759       return FALSE;
760     }
761
762   return TRUE;
763 }
764
765 void
766 bfd_assert (const char *file, int line)
767 {
768   (*_bfd_error_handler) (_("BFD %s assertion fail %s:%d"),
769                          BFD_VERSION_STRING, file, line);
770 }
771
772 /* A more or less friendly abort message.  In libbfd.h abort is
773    defined to call this function.  */
774
775 #ifndef EXIT_FAILURE
776 #define EXIT_FAILURE 1
777 #endif
778
779 void
780 _bfd_abort (const char *file, int line, const char *fn)
781 {
782   if (fn != NULL)
783     (*_bfd_error_handler)
784       (_("BFD %s internal error, aborting at %s line %d in %s\n"),
785        BFD_VERSION_STRING, file, line, fn);
786   else
787     (*_bfd_error_handler)
788       (_("BFD %s internal error, aborting at %s line %d\n"),
789        BFD_VERSION_STRING, file, line);
790   (*_bfd_error_handler) (_("Please report this bug.\n"));
791   xexit (EXIT_FAILURE);
792 }
793
794 /*
795 FUNCTION
796         bfd_get_arch_size
797
798 SYNOPSIS
799         int bfd_get_arch_size (bfd *abfd);
800
801 DESCRIPTION
802         Returns the architecture address size, in bits, as determined
803         by the object file's format.  For ELF, this information is
804         included in the header.
805
806 RETURNS
807         Returns the arch size in bits if known, <<-1>> otherwise.
808 */
809
810 int
811 bfd_get_arch_size (bfd *abfd)
812 {
813   if (abfd->xvec->flavour == bfd_target_elf_flavour)
814     return get_elf_backend_data (abfd)->s->arch_size;
815
816   return -1;
817 }
818
819 /*
820 FUNCTION
821         bfd_get_sign_extend_vma
822
823 SYNOPSIS
824         int bfd_get_sign_extend_vma (bfd *abfd);
825
826 DESCRIPTION
827         Indicates if the target architecture "naturally" sign extends
828         an address.  Some architectures implicitly sign extend address
829         values when they are converted to types larger than the size
830         of an address.  For instance, bfd_get_start_address() will
831         return an address sign extended to fill a bfd_vma when this is
832         the case.
833
834 RETURNS
835         Returns <<1>> if the target architecture is known to sign
836         extend addresses, <<0>> if the target architecture is known to
837         not sign extend addresses, and <<-1>> otherwise.
838 */
839
840 int
841 bfd_get_sign_extend_vma (bfd *abfd)
842 {
843   char *name;
844
845   if (bfd_get_flavour (abfd) == bfd_target_elf_flavour)
846     return get_elf_backend_data (abfd)->sign_extend_vma;
847
848   name = bfd_get_target (abfd);
849
850   /* Return a proper value for DJGPP & PE COFF (x86 COFF variants).
851      This function is required for DWARF2 support, but there is
852      no place to store this information in the COFF back end.
853      Should enough other COFF targets add support for DWARF2,
854      a place will have to be found.  Until then, this hack will do.  */
855   if (strncmp (name, "coff-go32", sizeof ("coff-go32") - 1) == 0
856       || strcmp (name, "pe-i386") == 0
857       || strcmp (name, "pei-i386") == 0)
858     return 1;
859
860   bfd_set_error (bfd_error_wrong_format);
861   return -1;
862 }
863
864 /*
865 FUNCTION
866         bfd_set_start_address
867
868 SYNOPSIS
869         bfd_boolean bfd_set_start_address (bfd *abfd, bfd_vma vma);
870
871 DESCRIPTION
872         Make @var{vma} the entry point of output BFD @var{abfd}.
873
874 RETURNS
875         Returns <<TRUE>> on success, <<FALSE>> otherwise.
876 */
877
878 bfd_boolean
879 bfd_set_start_address (bfd *abfd, bfd_vma vma)
880 {
881   abfd->start_address = vma;
882   return TRUE;
883 }
884
885 /*
886 FUNCTION
887         bfd_get_gp_size
888
889 SYNOPSIS
890         unsigned int bfd_get_gp_size (bfd *abfd);
891
892 DESCRIPTION
893         Return the maximum size of objects to be optimized using the GP
894         register under MIPS ECOFF.  This is typically set by the <<-G>>
895         argument to the compiler, assembler or linker.
896 */
897
898 unsigned int
899 bfd_get_gp_size (bfd *abfd)
900 {
901   if (abfd->format == bfd_object)
902     {
903       if (abfd->xvec->flavour == bfd_target_ecoff_flavour)
904         return ecoff_data (abfd)->gp_size;
905       else if (abfd->xvec->flavour == bfd_target_elf_flavour)
906         return elf_gp_size (abfd);
907     }
908   return 0;
909 }
910
911 /*
912 FUNCTION
913         bfd_set_gp_size
914
915 SYNOPSIS
916         void bfd_set_gp_size (bfd *abfd, unsigned int i);
917
918 DESCRIPTION
919         Set the maximum size of objects to be optimized using the GP
920         register under ECOFF or MIPS ELF.  This is typically set by
921         the <<-G>> argument to the compiler, assembler or linker.
922 */
923
924 void
925 bfd_set_gp_size (bfd *abfd, unsigned int i)
926 {
927   /* Don't try to set GP size on an archive or core file!  */
928   if (abfd->format != bfd_object)
929     return;
930
931   if (abfd->xvec->flavour == bfd_target_ecoff_flavour)
932     ecoff_data (abfd)->gp_size = i;
933   else if (abfd->xvec->flavour == bfd_target_elf_flavour)
934     elf_gp_size (abfd) = i;
935 }
936
937 /* Get the GP value.  This is an internal function used by some of the
938    relocation special_function routines on targets which support a GP
939    register.  */
940
941 bfd_vma
942 _bfd_get_gp_value (bfd *abfd)
943 {
944   if (! abfd)
945     return 0;
946   if (abfd->format != bfd_object)
947     return 0;
948
949   if (abfd->xvec->flavour == bfd_target_ecoff_flavour)
950     return ecoff_data (abfd)->gp;
951   else if (abfd->xvec->flavour == bfd_target_elf_flavour)
952     return elf_gp (abfd);
953
954   return 0;
955 }
956
957 /* Set the GP value.  */
958
959 void
960 _bfd_set_gp_value (bfd *abfd, bfd_vma v)
961 {
962   if (! abfd)
963     BFD_FAIL ();
964   if (abfd->format != bfd_object)
965     return;
966
967   if (abfd->xvec->flavour == bfd_target_ecoff_flavour)
968     ecoff_data (abfd)->gp = v;
969   else if (abfd->xvec->flavour == bfd_target_elf_flavour)
970     elf_gp (abfd) = v;
971 }
972
973 /*
974 FUNCTION
975         bfd_scan_vma
976
977 SYNOPSIS
978         bfd_vma bfd_scan_vma (const char *string, const char **end, int base);
979
980 DESCRIPTION
981         Convert, like <<strtoul>>, a numerical expression
982         @var{string} into a <<bfd_vma>> integer, and return that integer.
983         (Though without as many bells and whistles as <<strtoul>>.)
984         The expression is assumed to be unsigned (i.e., positive).
985         If given a @var{base}, it is used as the base for conversion.
986         A base of 0 causes the function to interpret the string
987         in hex if a leading "0x" or "0X" is found, otherwise
988         in octal if a leading zero is found, otherwise in decimal.
989
990         If the value would overflow, the maximum <<bfd_vma>> value is
991         returned.
992 */
993
994 bfd_vma
995 bfd_scan_vma (const char *string, const char **end, int base)
996 {
997   bfd_vma value;
998   bfd_vma cutoff;
999   unsigned int cutlim;
1000   int overflow;
1001
1002   /* Let the host do it if possible.  */
1003   if (sizeof (bfd_vma) <= sizeof (unsigned long))
1004     return strtoul (string, (char **) end, base);
1005
1006 #ifdef HAVE_STRTOULL
1007   if (sizeof (bfd_vma) <= sizeof (unsigned long long))
1008     return strtoull (string, (char **) end, base);
1009 #endif
1010
1011   if (base == 0)
1012     {
1013       if (string[0] == '0')
1014         {
1015           if ((string[1] == 'x') || (string[1] == 'X'))
1016             base = 16;
1017           else
1018             base = 8;
1019         }
1020     }
1021
1022   if ((base < 2) || (base > 36))
1023     base = 10;
1024
1025   if (base == 16
1026       && string[0] == '0'
1027       && (string[1] == 'x' || string[1] == 'X')
1028       && ISXDIGIT (string[2]))
1029     {
1030       string += 2;
1031     }
1032
1033   cutoff = (~ (bfd_vma) 0) / (bfd_vma) base;
1034   cutlim = (~ (bfd_vma) 0) % (bfd_vma) base;
1035   value = 0;
1036   overflow = 0;
1037   while (1)
1038     {
1039       unsigned int digit;
1040
1041       digit = *string;
1042       if (ISDIGIT (digit))
1043         digit = digit - '0';
1044       else if (ISALPHA (digit))
1045         digit = TOUPPER (digit) - 'A' + 10;
1046       else
1047         break;
1048       if (digit >= (unsigned int) base)
1049         break;
1050       if (value > cutoff || (value == cutoff && digit > cutlim))
1051         overflow = 1;
1052       value = value * base + digit;
1053       ++string;
1054     }
1055
1056   if (overflow)
1057     value = ~ (bfd_vma) 0;
1058
1059   if (end != NULL)
1060     *end = string;
1061
1062   return value;
1063 }
1064
1065 /*
1066 FUNCTION
1067         bfd_copy_private_header_data
1068
1069 SYNOPSIS
1070         bfd_boolean bfd_copy_private_header_data (bfd *ibfd, bfd *obfd);
1071
1072 DESCRIPTION
1073         Copy private BFD header information from the BFD @var{ibfd} to the
1074         the BFD @var{obfd}.  This copies information that may require
1075         sections to exist, but does not require symbol tables.  Return
1076         <<true>> on success, <<false>> on error.
1077         Possible error returns are:
1078
1079         o <<bfd_error_no_memory>> -
1080         Not enough memory exists to create private data for @var{obfd}.
1081
1082 .#define bfd_copy_private_header_data(ibfd, obfd) \
1083 .     BFD_SEND (obfd, _bfd_copy_private_header_data, \
1084 .               (ibfd, obfd))
1085
1086 */
1087
1088 /*
1089 FUNCTION
1090         bfd_copy_private_bfd_data
1091
1092 SYNOPSIS
1093         bfd_boolean bfd_copy_private_bfd_data (bfd *ibfd, bfd *obfd);
1094
1095 DESCRIPTION
1096         Copy private BFD information from the BFD @var{ibfd} to the
1097         the BFD @var{obfd}.  Return <<TRUE>> on success, <<FALSE>> on error.
1098         Possible error returns are:
1099
1100         o <<bfd_error_no_memory>> -
1101         Not enough memory exists to create private data for @var{obfd}.
1102
1103 .#define bfd_copy_private_bfd_data(ibfd, obfd) \
1104 .     BFD_SEND (obfd, _bfd_copy_private_bfd_data, \
1105 .               (ibfd, obfd))
1106
1107 */
1108
1109 /*
1110 FUNCTION
1111         bfd_merge_private_bfd_data
1112
1113 SYNOPSIS
1114         bfd_boolean bfd_merge_private_bfd_data (bfd *ibfd, bfd *obfd);
1115
1116 DESCRIPTION
1117         Merge private BFD information from the BFD @var{ibfd} to the
1118         the output file BFD @var{obfd} when linking.  Return <<TRUE>>
1119         on success, <<FALSE>> on error.  Possible error returns are:
1120
1121         o <<bfd_error_no_memory>> -
1122         Not enough memory exists to create private data for @var{obfd}.
1123
1124 .#define bfd_merge_private_bfd_data(ibfd, obfd) \
1125 .     BFD_SEND (obfd, _bfd_merge_private_bfd_data, \
1126 .               (ibfd, obfd))
1127
1128 */
1129
1130 /*
1131 FUNCTION
1132         bfd_set_private_flags
1133
1134 SYNOPSIS
1135         bfd_boolean bfd_set_private_flags (bfd *abfd, flagword flags);
1136
1137 DESCRIPTION
1138         Set private BFD flag information in the BFD @var{abfd}.
1139         Return <<TRUE>> on success, <<FALSE>> on error.  Possible error
1140         returns are:
1141
1142         o <<bfd_error_no_memory>> -
1143         Not enough memory exists to create private data for @var{obfd}.
1144
1145 .#define bfd_set_private_flags(abfd, flags) \
1146 .     BFD_SEND (abfd, _bfd_set_private_flags, (abfd, flags))
1147
1148 */
1149
1150 /*
1151 FUNCTION
1152         Other functions
1153
1154 DESCRIPTION
1155         The following functions exist but have not yet been documented.
1156
1157 .#define bfd_sizeof_headers(abfd, reloc) \
1158 .       BFD_SEND (abfd, _bfd_sizeof_headers, (abfd, reloc))
1159 .
1160 .#define bfd_find_nearest_line(abfd, sec, syms, off, file, func, line) \
1161 .       BFD_SEND (abfd, _bfd_find_nearest_line, \
1162 .                 (abfd, sec, syms, off, file, func, line))
1163 .
1164 .#define bfd_find_line(abfd, syms, sym, file, line) \
1165 .       BFD_SEND (abfd, _bfd_find_line, \
1166 .                 (abfd, syms, sym, file, line))
1167 .
1168 .#define bfd_find_inliner_info(abfd, file, func, line) \
1169 .       BFD_SEND (abfd, _bfd_find_inliner_info, \
1170 .                 (abfd, file, func, line))
1171 .
1172 .#define bfd_debug_info_start(abfd) \
1173 .       BFD_SEND (abfd, _bfd_debug_info_start, (abfd))
1174 .
1175 .#define bfd_debug_info_end(abfd) \
1176 .       BFD_SEND (abfd, _bfd_debug_info_end, (abfd))
1177 .
1178 .#define bfd_debug_info_accumulate(abfd, section) \
1179 .       BFD_SEND (abfd, _bfd_debug_info_accumulate, (abfd, section))
1180 .
1181 .#define bfd_stat_arch_elt(abfd, stat) \
1182 .       BFD_SEND (abfd, _bfd_stat_arch_elt,(abfd, stat))
1183 .
1184 .#define bfd_update_armap_timestamp(abfd) \
1185 .       BFD_SEND (abfd, _bfd_update_armap_timestamp, (abfd))
1186 .
1187 .#define bfd_set_arch_mach(abfd, arch, mach)\
1188 .       BFD_SEND ( abfd, _bfd_set_arch_mach, (abfd, arch, mach))
1189 .
1190 .#define bfd_relax_section(abfd, section, link_info, again) \
1191 .       BFD_SEND (abfd, _bfd_relax_section, (abfd, section, link_info, again))
1192 .
1193 .#define bfd_gc_sections(abfd, link_info) \
1194 .       BFD_SEND (abfd, _bfd_gc_sections, (abfd, link_info))
1195 .
1196 .#define bfd_merge_sections(abfd, link_info) \
1197 .       BFD_SEND (abfd, _bfd_merge_sections, (abfd, link_info))
1198 .
1199 .#define bfd_is_group_section(abfd, sec) \
1200 .       BFD_SEND (abfd, _bfd_is_group_section, (abfd, sec))
1201 .
1202 .#define bfd_discard_group(abfd, sec) \
1203 .       BFD_SEND (abfd, _bfd_discard_group, (abfd, sec))
1204 .
1205 .#define bfd_link_hash_table_create(abfd) \
1206 .       BFD_SEND (abfd, _bfd_link_hash_table_create, (abfd))
1207 .
1208 .#define bfd_link_hash_table_free(abfd, hash) \
1209 .       BFD_SEND (abfd, _bfd_link_hash_table_free, (hash))
1210 .
1211 .#define bfd_link_add_symbols(abfd, info) \
1212 .       BFD_SEND (abfd, _bfd_link_add_symbols, (abfd, info))
1213 .
1214 .#define bfd_link_just_syms(abfd, sec, info) \
1215 .       BFD_SEND (abfd, _bfd_link_just_syms, (sec, info))
1216 .
1217 .#define bfd_final_link(abfd, info) \
1218 .       BFD_SEND (abfd, _bfd_final_link, (abfd, info))
1219 .
1220 .#define bfd_free_cached_info(abfd) \
1221 .       BFD_SEND (abfd, _bfd_free_cached_info, (abfd))
1222 .
1223 .#define bfd_get_dynamic_symtab_upper_bound(abfd) \
1224 .       BFD_SEND (abfd, _bfd_get_dynamic_symtab_upper_bound, (abfd))
1225 .
1226 .#define bfd_print_private_bfd_data(abfd, file)\
1227 .       BFD_SEND (abfd, _bfd_print_private_bfd_data, (abfd, file))
1228 .
1229 .#define bfd_canonicalize_dynamic_symtab(abfd, asymbols) \
1230 .       BFD_SEND (abfd, _bfd_canonicalize_dynamic_symtab, (abfd, asymbols))
1231 .
1232 .#define bfd_get_synthetic_symtab(abfd, count, syms, dyncount, dynsyms, ret) \
1233 .       BFD_SEND (abfd, _bfd_get_synthetic_symtab, (abfd, count, syms, \
1234 .                                                   dyncount, dynsyms, ret))
1235 .
1236 .#define bfd_get_dynamic_reloc_upper_bound(abfd) \
1237 .       BFD_SEND (abfd, _bfd_get_dynamic_reloc_upper_bound, (abfd))
1238 .
1239 .#define bfd_canonicalize_dynamic_reloc(abfd, arels, asyms) \
1240 .       BFD_SEND (abfd, _bfd_canonicalize_dynamic_reloc, (abfd, arels, asyms))
1241 .
1242 .extern bfd_byte *bfd_get_relocated_section_contents
1243 .  (bfd *, struct bfd_link_info *, struct bfd_link_order *, bfd_byte *,
1244 .   bfd_boolean, asymbol **);
1245 .
1246
1247 */
1248
1249 bfd_byte *
1250 bfd_get_relocated_section_contents (bfd *abfd,
1251                                     struct bfd_link_info *link_info,
1252                                     struct bfd_link_order *link_order,
1253                                     bfd_byte *data,
1254                                     bfd_boolean relocatable,
1255                                     asymbol **symbols)
1256 {
1257   bfd *abfd2;
1258   bfd_byte *(*fn) (bfd *, struct bfd_link_info *, struct bfd_link_order *,
1259                    bfd_byte *, bfd_boolean, asymbol **);
1260
1261   if (link_order->type == bfd_indirect_link_order)
1262     {
1263       abfd2 = link_order->u.indirect.section->owner;
1264       if (abfd2 == NULL)
1265         abfd2 = abfd;
1266     }
1267   else
1268     abfd2 = abfd;
1269
1270   fn = abfd2->xvec->_bfd_get_relocated_section_contents;
1271
1272   return (*fn) (abfd, link_info, link_order, data, relocatable, symbols);
1273 }
1274
1275 /* Record information about an ELF program header.  */
1276
1277 bfd_boolean
1278 bfd_record_phdr (bfd *abfd,
1279                  unsigned long type,
1280                  bfd_boolean flags_valid,
1281                  flagword flags,
1282                  bfd_boolean at_valid,
1283                  bfd_vma at,
1284                  bfd_boolean includes_filehdr,
1285                  bfd_boolean includes_phdrs,
1286                  unsigned int count,
1287                  asection **secs)
1288 {
1289   struct elf_segment_map *m, **pm;
1290   bfd_size_type amt;
1291
1292   if (bfd_get_flavour (abfd) != bfd_target_elf_flavour)
1293     return TRUE;
1294
1295   amt = sizeof (struct elf_segment_map);
1296   amt += ((bfd_size_type) count - 1) * sizeof (asection *);
1297   m = bfd_alloc (abfd, amt);
1298   if (m == NULL)
1299     return FALSE;
1300
1301   m->next = NULL;
1302   m->p_type = type;
1303   m->p_flags = flags;
1304   m->p_paddr = at;
1305   m->p_flags_valid = flags_valid;
1306   m->p_paddr_valid = at_valid;
1307   m->includes_filehdr = includes_filehdr;
1308   m->includes_phdrs = includes_phdrs;
1309   m->count = count;
1310   if (count > 0)
1311     memcpy (m->sections, secs, count * sizeof (asection *));
1312
1313   for (pm = &elf_tdata (abfd)->segment_map; *pm != NULL; pm = &(*pm)->next)
1314     ;
1315   *pm = m;
1316
1317   return TRUE;
1318 }
1319
1320 void
1321 bfd_sprintf_vma (bfd *abfd, char *buf, bfd_vma value)
1322 {
1323   if (bfd_get_flavour (abfd) == bfd_target_elf_flavour)
1324     get_elf_backend_data (abfd)->elf_backend_sprintf_vma (abfd, buf, value);
1325   else
1326     sprintf_vma (buf, value);
1327 }
1328
1329 void
1330 bfd_fprintf_vma (bfd *abfd, void *stream, bfd_vma value)
1331 {
1332   if (bfd_get_flavour (abfd) == bfd_target_elf_flavour)
1333     get_elf_backend_data (abfd)->elf_backend_fprintf_vma (abfd, stream, value);
1334   else
1335     fprintf_vma ((FILE *) stream, value);
1336 }
1337
1338 /*
1339 FUNCTION
1340         bfd_alt_mach_code
1341
1342 SYNOPSIS
1343         bfd_boolean bfd_alt_mach_code (bfd *abfd, int alternative);
1344
1345 DESCRIPTION
1346
1347         When more than one machine code number is available for the
1348         same machine type, this function can be used to switch between
1349         the preferred one (alternative == 0) and any others.  Currently,
1350         only ELF supports this feature, with up to two alternate
1351         machine codes.
1352 */
1353
1354 bfd_boolean
1355 bfd_alt_mach_code (bfd *abfd, int alternative)
1356 {
1357   if (bfd_get_flavour (abfd) == bfd_target_elf_flavour)
1358     {
1359       int code;
1360
1361       switch (alternative)
1362         {
1363         case 0:
1364           code = get_elf_backend_data (abfd)->elf_machine_code;
1365           break;
1366
1367         case 1:
1368           code = get_elf_backend_data (abfd)->elf_machine_alt1;
1369           if (code == 0)
1370             return FALSE;
1371           break;
1372
1373         case 2:
1374           code = get_elf_backend_data (abfd)->elf_machine_alt2;
1375           if (code == 0)
1376             return FALSE;
1377           break;
1378
1379         default:
1380           return FALSE;
1381         }
1382
1383       elf_elfheader (abfd)->e_machine = code;
1384
1385       return TRUE;
1386     }
1387
1388   return FALSE;
1389 }
1390
1391 /*
1392 CODE_FRAGMENT
1393
1394 .struct bfd_preserve
1395 .{
1396 .  void *marker;
1397 .  void *tdata;
1398 .  flagword flags;
1399 .  const struct bfd_arch_info *arch_info;
1400 .  struct bfd_section *sections;
1401 .  struct bfd_section *section_last;
1402 .  unsigned int section_count;
1403 .  struct bfd_hash_table section_htab;
1404 .};
1405 .
1406 */
1407
1408 /*
1409 FUNCTION
1410         bfd_preserve_save
1411
1412 SYNOPSIS
1413         bfd_boolean bfd_preserve_save (bfd *, struct bfd_preserve *);
1414
1415 DESCRIPTION
1416         When testing an object for compatibility with a particular
1417         target back-end, the back-end object_p function needs to set
1418         up certain fields in the bfd on successfully recognizing the
1419         object.  This typically happens in a piecemeal fashion, with
1420         failures possible at many points.  On failure, the bfd is
1421         supposed to be restored to its initial state, which is
1422         virtually impossible.  However, restoring a subset of the bfd
1423         state works in practice.  This function stores the subset and
1424         reinitializes the bfd.
1425
1426 */
1427
1428 bfd_boolean
1429 bfd_preserve_save (bfd *abfd, struct bfd_preserve *preserve)
1430 {
1431   preserve->tdata = abfd->tdata.any;
1432   preserve->arch_info = abfd->arch_info;
1433   preserve->flags = abfd->flags;
1434   preserve->sections = abfd->sections;
1435   preserve->section_last = abfd->section_last;
1436   preserve->section_count = abfd->section_count;
1437   preserve->section_htab = abfd->section_htab;
1438
1439   if (! bfd_hash_table_init (&abfd->section_htab, bfd_section_hash_newfunc))
1440     return FALSE;
1441
1442   abfd->tdata.any = NULL;
1443   abfd->arch_info = &bfd_default_arch_struct;
1444   abfd->flags &= BFD_IN_MEMORY;
1445   abfd->sections = NULL;
1446   abfd->section_last = NULL;
1447   abfd->section_count = 0;
1448
1449   return TRUE;
1450 }
1451
1452 /*
1453 FUNCTION
1454         bfd_preserve_restore
1455
1456 SYNOPSIS
1457         void bfd_preserve_restore (bfd *, struct bfd_preserve *);
1458
1459 DESCRIPTION
1460         This function restores bfd state saved by bfd_preserve_save.
1461         If MARKER is non-NULL in struct bfd_preserve then that block
1462         and all subsequently bfd_alloc'd memory is freed.
1463
1464 */
1465
1466 void
1467 bfd_preserve_restore (bfd *abfd, struct bfd_preserve *preserve)
1468 {
1469   bfd_hash_table_free (&abfd->section_htab);
1470
1471   abfd->tdata.any = preserve->tdata;
1472   abfd->arch_info = preserve->arch_info;
1473   abfd->flags = preserve->flags;
1474   abfd->section_htab = preserve->section_htab;
1475   abfd->sections = preserve->sections;
1476   abfd->section_last = preserve->section_last;
1477   abfd->section_count = preserve->section_count;
1478
1479   /* bfd_release frees all memory more recently bfd_alloc'd than
1480      its arg, as well as its arg.  */
1481   if (preserve->marker != NULL)
1482     {
1483       bfd_release (abfd, preserve->marker);
1484       preserve->marker = NULL;
1485     }
1486 }
1487
1488 /*
1489 FUNCTION
1490         bfd_preserve_finish
1491
1492 SYNOPSIS
1493         void bfd_preserve_finish (bfd *, struct bfd_preserve *);
1494
1495 DESCRIPTION
1496         This function should be called when the bfd state saved by
1497         bfd_preserve_save is no longer needed.  ie. when the back-end
1498         object_p function returns with success.
1499
1500 */
1501
1502 void
1503 bfd_preserve_finish (bfd *abfd ATTRIBUTE_UNUSED, struct bfd_preserve *preserve)
1504 {
1505   /* It would be nice to be able to free more memory here, eg. old
1506      tdata, but that's not possible since these blocks are sitting
1507      inside bfd_alloc'd memory.  The section hash is on a separate
1508      objalloc.  */
1509   bfd_hash_table_free (&preserve->section_htab);
1510 }