From fc1cfaa5f1d3c603bac8efb83128747281894b6e Mon Sep 17 00:00:00 2001 From: Alan Modra Date: Mon, 25 Oct 2010 06:14:30 +0000 Subject: [PATCH] * 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. --- bfd/ChangeLog | 8 ++++++++ bfd/bfd-in2.h | 1 + bfd/opncls.c | 24 +++++++++++++++++++----- 3 files changed, 28 insertions(+), 5 deletions(-) diff --git a/bfd/ChangeLog b/bfd/ChangeLog index f5749a9ace3..78d93268e8b 100644 --- a/bfd/ChangeLog +++ b/bfd/ChangeLog @@ -1,3 +1,11 @@ +2010-10-25 Alan Modra + + * 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 * elfxx-sparc.c (tpoff): Define bed, static_tls_size. diff --git a/bfd/bfd-in2.h b/bfd/bfd-in2.h index 4bd47caeb81..b1228e8d4b8 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 79c3274bcc1..d6d645237e9 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 <>, but without opening a file. The new BFD takes the target from the target - used by @var{template}. The format is always set to <>. + used by @var{templ}. The format is always set to <>. */ bfd * -- 2.30.2