diff options
-rw-r--r-- | bfd/ChangeLog | 8 | ||||
-rw-r--r-- | bfd/bfd-in2.h | 1 | ||||
-rw-r--r-- | bfd/opncls.c | 24 |
3 files changed, 28 insertions, 5 deletions
diff --git a/bfd/ChangeLog b/bfd/ChangeLog index f5749a9..78d9326 100644 --- a/bfd/ChangeLog +++ b/bfd/ChangeLog @@ -1,3 +1,11 @@ +2010-10-25 Alan Modra <amodra@gmail.com> + + * opncls.c (_bfd_id_counter): Rename to bfd_id_counter. + (bfd_reserved_id_counter, bfd_use_reserved_id): New vars. + (_bfd_new_bfd): Use negative id when bfd_use_reserved_id. + (bfd_create): Doc fix. + * bfd-in2.h: Regenerate. + 2010-10-22 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE> * elfxx-sparc.c (tpoff): Define bed, static_tls_size. diff --git a/bfd/bfd-in2.h b/bfd/bfd-in2.h index 4bd47ca..b1228e8 100644 --- a/bfd/bfd-in2.h +++ b/bfd/bfd-in2.h @@ -964,6 +964,7 @@ extern struct coff_comdat_info *bfd_coff_get_comdat_section void bfd_init (void); /* Extracted from opncls.c. */ +extern unsigned int bfd_use_reserved_id; bfd *bfd_fopen (const char *filename, const char *target, const char *mode, int fd); diff --git a/bfd/opncls.c b/bfd/opncls.c index 79c3274..d6d6452 100644 --- a/bfd/opncls.c +++ b/bfd/opncls.c @@ -1,6 +1,6 @@ /* opncls.c -- open and close a BFD. Copyright 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 2000, - 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 + 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc. Written by Cygnus Support. @@ -38,9 +38,17 @@ #define S_IXOTH 0001 /* Execute by others. */ #endif -/* Counter used to initialize the bfd identifier. */ +/* Counters used to initialize the bfd identifier. */ -static unsigned int _bfd_id_counter = 0; +static unsigned int bfd_id_counter = 0; +static unsigned int bfd_reserved_id_counter = 0; + +/* +CODE_FRAGMENT +.{* Set to N to open the next N BFDs using an alternate id space. *} +.extern unsigned int bfd_use_reserved_id; +*/ +unsigned int bfd_use_reserved_id = 0; /* fdopen is a loser -- we should use stdio exclusively. Unfortunately if we do that we can't use fcntl. */ @@ -56,7 +64,13 @@ _bfd_new_bfd (void) if (nbfd == NULL) return NULL; - nbfd->id = _bfd_id_counter++; + if (bfd_use_reserved_id) + { + nbfd->id = --bfd_reserved_id_counter; + --bfd_use_reserved_id; + } + else + nbfd->id = bfd_id_counter++; nbfd->memory = objalloc_create (); if (nbfd->memory == NULL) @@ -753,7 +767,7 @@ SYNOPSIS DESCRIPTION Create a new BFD in the manner of <<bfd_openw>>, but without opening a file. The new BFD takes the target from the target - used by @var{template}. The format is always set to <<bfd_object>>. + used by @var{templ}. The format is always set to <<bfd_object>>. */ bfd * |