| Index: bfd/bfd.c
|
| diff --git a/bfd/bfd.c b/bfd/bfd.c
|
| index 640b4205d162afc1c3776da33098792e7cb0d64b..8d0580c20f073f391bb1cf59eedf508ce7b76a83 100644
|
| --- a/bfd/bfd.c
|
| +++ b/bfd/bfd.c
|
| @@ -1,7 +1,5 @@
|
| /* Generic BFD library interface and support routines.
|
| - Copyright 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
|
| - 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011
|
| - Free Software Foundation, Inc.
|
| + Copyright 1990-2013 Free Software Foundation, Inc.
|
| Written by Cygnus Support.
|
|
|
| This file is part of BFD, the Binary File Descriptor library.
|
| @@ -22,6 +20,9 @@
|
| MA 02110-1301, USA. */
|
|
|
| /*
|
| +INODE
|
| +typedef bfd, Error reporting, BFD front end, BFD front end
|
| +
|
| SECTION
|
| <<typedef bfd>>
|
|
|
| @@ -340,6 +341,9 @@ CODE_FRAGMENT
|
| where it is needed. The typedef's used are defined in bfd.h */
|
|
|
| /*
|
| +INODE
|
| +Error reporting, Miscellaneous, typedef bfd, BFD front end
|
| +
|
| SECTION
|
| Error reporting
|
|
|
| @@ -374,6 +378,7 @@ CODE_FRAGMENT
|
| . bfd_error_no_armap,
|
| . bfd_error_no_more_archived_files,
|
| . bfd_error_malformed_archive,
|
| +. bfd_error_missing_dso,
|
| . bfd_error_file_not_recognized,
|
| . bfd_error_file_ambiguously_recognized,
|
| . bfd_error_no_contents,
|
| @@ -406,6 +411,7 @@ const char *const bfd_errmsgs[] =
|
| N_("Archive has no index; run ranlib to add one"),
|
| N_("No more archived files"),
|
| N_("Malformed archive"),
|
| + N_("DSO missing from command line"),
|
| N_("File format not recognized"),
|
| N_("File format is ambiguous"),
|
| N_("Section has no contents"),
|
| @@ -727,7 +733,9 @@ _bfd_default_error_handler (const char *fmt, ...)
|
| vfprintf (stderr, new_fmt, ap);
|
| va_end (ap);
|
|
|
| - putc ('\n', stderr);
|
| + /* On AIX, putc is implemented as a macro that triggers a -Wunused-value
|
| + warning, so use the fputc function to avoid it. */
|
| + fputc ('\n', stderr);
|
| fflush (stderr);
|
| }
|
|
|
| @@ -881,6 +889,9 @@ bfd_get_assert_handler (void)
|
| }
|
|
|
| /*
|
| +INODE
|
| +Miscellaneous, Memory Usage, Error reporting, BFD front end
|
| +
|
| SECTION
|
| Miscellaneous
|
|
|
| @@ -1424,6 +1435,11 @@ DESCRIPTION
|
| . BFD_SEND (abfd, _bfd_find_nearest_line, \
|
| . (abfd, sec, syms, off, file, func, line))
|
| .
|
| +.#define bfd_find_nearest_line_discriminator(abfd, sec, syms, off, file, func, \
|
| +. line, disc) \
|
| +. BFD_SEND (abfd, _bfd_find_nearest_line_discriminator, \
|
| +. (abfd, sec, syms, off, file, func, line, disc))
|
| +.
|
| .#define bfd_find_line(abfd, syms, sym, file, line) \
|
| . BFD_SEND (abfd, _bfd_find_line, \
|
| . (abfd, syms, sym, file, line))
|
| @@ -1575,7 +1591,7 @@ bfd_record_phdr (bfd *abfd,
|
| if (count > 0)
|
| memcpy (m->sections, secs, count * sizeof (asection *));
|
|
|
| - for (pm = &elf_tdata (abfd)->segment_map; *pm != NULL; pm = &(*pm)->next)
|
| + for (pm = &elf_seg_map (abfd); *pm != NULL; pm = &(*pm)->next)
|
| ;
|
| *pm = m;
|
|
|
| @@ -1682,128 +1698,6 @@ bfd_alt_mach_code (bfd *abfd, int alternative)
|
| }
|
|
|
| /*
|
| -CODE_FRAGMENT
|
| -
|
| -.struct bfd_preserve
|
| -.{
|
| -. void *marker;
|
| -. void *tdata;
|
| -. flagword flags;
|
| -. const struct bfd_arch_info *arch_info;
|
| -. struct bfd_section *sections;
|
| -. struct bfd_section *section_last;
|
| -. unsigned int section_count;
|
| -. struct bfd_hash_table section_htab;
|
| -.};
|
| -.
|
| -*/
|
| -
|
| -/*
|
| -FUNCTION
|
| - bfd_preserve_save
|
| -
|
| -SYNOPSIS
|
| - bfd_boolean bfd_preserve_save (bfd *, struct bfd_preserve *);
|
| -
|
| -DESCRIPTION
|
| - When testing an object for compatibility with a particular
|
| - target back-end, the back-end object_p function needs to set
|
| - up certain fields in the bfd on successfully recognizing the
|
| - object. This typically happens in a piecemeal fashion, with
|
| - failures possible at many points. On failure, the bfd is
|
| - supposed to be restored to its initial state, which is
|
| - virtually impossible. However, restoring a subset of the bfd
|
| - state works in practice. This function stores the subset and
|
| - reinitializes the bfd.
|
| -
|
| -*/
|
| -
|
| -bfd_boolean
|
| -bfd_preserve_save (bfd *abfd, struct bfd_preserve *preserve)
|
| -{
|
| - preserve->tdata = abfd->tdata.any;
|
| - preserve->arch_info = abfd->arch_info;
|
| - preserve->flags = abfd->flags;
|
| - preserve->sections = abfd->sections;
|
| - preserve->section_last = abfd->section_last;
|
| - preserve->section_count = abfd->section_count;
|
| - preserve->section_htab = abfd->section_htab;
|
| -
|
| - if (! bfd_hash_table_init (&abfd->section_htab, bfd_section_hash_newfunc,
|
| - sizeof (struct section_hash_entry)))
|
| - return FALSE;
|
| -
|
| - abfd->tdata.any = NULL;
|
| - abfd->arch_info = &bfd_default_arch_struct;
|
| - abfd->flags &= BFD_FLAGS_SAVED;
|
| - abfd->sections = NULL;
|
| - abfd->section_last = NULL;
|
| - abfd->section_count = 0;
|
| -
|
| - return TRUE;
|
| -}
|
| -
|
| -/*
|
| -FUNCTION
|
| - bfd_preserve_restore
|
| -
|
| -SYNOPSIS
|
| - void bfd_preserve_restore (bfd *, struct bfd_preserve *);
|
| -
|
| -DESCRIPTION
|
| - This function restores bfd state saved by bfd_preserve_save.
|
| - If MARKER is non-NULL in struct bfd_preserve then that block
|
| - and all subsequently bfd_alloc'd memory is freed.
|
| -
|
| -*/
|
| -
|
| -void
|
| -bfd_preserve_restore (bfd *abfd, struct bfd_preserve *preserve)
|
| -{
|
| - bfd_hash_table_free (&abfd->section_htab);
|
| -
|
| - abfd->tdata.any = preserve->tdata;
|
| - abfd->arch_info = preserve->arch_info;
|
| - abfd->flags = preserve->flags;
|
| - abfd->section_htab = preserve->section_htab;
|
| - abfd->sections = preserve->sections;
|
| - abfd->section_last = preserve->section_last;
|
| - abfd->section_count = preserve->section_count;
|
| -
|
| - /* bfd_release frees all memory more recently bfd_alloc'd than
|
| - its arg, as well as its arg. */
|
| - if (preserve->marker != NULL)
|
| - {
|
| - bfd_release (abfd, preserve->marker);
|
| - preserve->marker = NULL;
|
| - }
|
| -}
|
| -
|
| -/*
|
| -FUNCTION
|
| - bfd_preserve_finish
|
| -
|
| -SYNOPSIS
|
| - void bfd_preserve_finish (bfd *, struct bfd_preserve *);
|
| -
|
| -DESCRIPTION
|
| - This function should be called when the bfd state saved by
|
| - bfd_preserve_save is no longer needed. ie. when the back-end
|
| - object_p function returns with success.
|
| -
|
| -*/
|
| -
|
| -void
|
| -bfd_preserve_finish (bfd *abfd ATTRIBUTE_UNUSED, struct bfd_preserve *preserve)
|
| -{
|
| - /* It would be nice to be able to free more memory here, eg. old
|
| - tdata, but that's not possible since these blocks are sitting
|
| - inside bfd_alloc'd memory. The section hash is on a separate
|
| - objalloc. */
|
| - bfd_hash_table_free (&preserve->section_htab);
|
| -}
|
| -
|
| -/*
|
| FUNCTION
|
| bfd_emul_get_maxpagesize
|
|
|
|
|