Change arch info to be const, initialized at compile time.

* archures.c: Reindent many functions.  Change CONST to const.
	(bfd_arch_info_type): Make arch_name const.  Remove disassemble;
	nothing set it anyhow.  Make next const.
	(bfd_arch_info_list): Remove.
	(bfd_archures_list): Rename from archures_init_table.  Change from
	a table of function pointers to a table of bfd_arch_info_type
	structure addresses.
	(bfd_scan_arch): Rewrite accordingly.  Return a const pointer.
	(bfd_lookup_arch): Likewise.
	(bfd_set_arch_info): Rewrite accordingly.  Change argument to be a
	const pointer.
	(bfd_default_arch_struct): Make const.
	(bfd_arch_init, bfd_arch_linkin): Remove.
	(bfd_get_arch_info): Return a const pointer.
	* init.c (bfd_init): Don't call bfd_arch_init.
	* bfd.c (struct _bfd): Make arch_info const.
	* bfd-in2.h: Rebuild.
	* libbfd.h: Rebuild.
	* configure.in: Put & before everything in $selarchs.
	* configure: Rebuild.
	* cpu-*.c: Change bfd_*_arch from a function which calls
	bfd_arch_linkin to a const structure.
	* ieee.c (ieee_object_p): Make arch const.
This commit is contained in:
Ian Lance Taylor 1995-09-22 22:06:51 +00:00
parent 8f4670da40
commit 2ffbb79ae4
9 changed files with 84 additions and 88 deletions

View File

@ -1,3 +1,30 @@
Fri Sep 22 17:44:47 1995 Ian Lance Taylor <ian@cygnus.com>
Change arch info to be const, initialized at compile time.
* archures.c: Reindent many functions. Change CONST to const.
(bfd_arch_info_type): Make arch_name const. Remove disassemble;
nothing set it anyhow. Make next const.
(bfd_arch_info_list): Remove.
(bfd_archures_list): Rename from archures_init_table. Change from
a table of function pointers to a table of bfd_arch_info_type
structure addresses.
(bfd_scan_arch): Rewrite accordingly. Return a const pointer.
(bfd_lookup_arch): Likewise.
(bfd_set_arch_info): Rewrite accordingly. Change argument to be a
const pointer.
(bfd_default_arch_struct): Make const.
(bfd_arch_init, bfd_arch_linkin): Remove.
(bfd_get_arch_info): Return a const pointer.
* init.c (bfd_init): Don't call bfd_arch_init.
* bfd.c (struct _bfd): Make arch_info const.
* bfd-in2.h: Rebuild.
* libbfd.h: Rebuild.
* configure.in: Put & before everything in $selarchs.
* configure: Rebuild.
* cpu-*.c: Change bfd_*_arch from a function which calls
bfd_arch_linkin to a const structure.
* ieee.c (ieee_object_p): Make arch const.
Fri Sep 22 16:23:18 1995 Michael Meissner <meissner@tiktok.cygnus.com>
* reloc.c (bfd_reloc_code_type): Add relocations to support all of

View File

@ -1079,39 +1079,32 @@ typedef struct bfd_arch_info
int bits_per_byte;
enum bfd_architecture arch;
unsigned long mach;
char *arch_name;
CONST char *printable_name;
const char *arch_name;
const char *printable_name;
unsigned int section_align_power;
/* true if this is the default machine for the architecture */
boolean the_default;
CONST struct bfd_arch_info * (*compatible)
PARAMS ((CONST struct bfd_arch_info *a,
CONST struct bfd_arch_info *b));
const struct bfd_arch_info * (*compatible)
PARAMS ((const struct bfd_arch_info *a,
const struct bfd_arch_info *b));
boolean (*scan) PARAMS ((CONST struct bfd_arch_info *, CONST char *));
/* How to disassemble an instruction, producing a printable
representation on a specified stdio stream. This isn't
defined for most processors at present, because of the size
of the additional tables it would drag in, and because gdb
wants to use a different interface. */
unsigned int (*disassemble) PARAMS ((bfd_vma addr, CONST char *data,
PTR stream));
boolean (*scan) PARAMS ((const struct bfd_arch_info *, const char *));
struct bfd_arch_info *next;
const struct bfd_arch_info *next;
} bfd_arch_info_type;
CONST char *
const char *
bfd_printable_name PARAMS ((bfd *abfd));
bfd_arch_info_type *
bfd_scan_arch PARAMS ((CONST char *string));
const bfd_arch_info_type *
bfd_scan_arch PARAMS ((const char *string));
CONST bfd_arch_info_type *
const bfd_arch_info_type *
bfd_arch_get_compatible PARAMS ((
CONST bfd *abfd,
CONST bfd *bbfd));
const bfd *abfd,
const bfd *bbfd));
void
bfd_set_arch_info PARAMS ((bfd *abfd, bfd_arch_info_type *arg));
bfd_set_arch_info PARAMS ((bfd *abfd, const bfd_arch_info_type *arg));
enum bfd_architecture
bfd_get_arch PARAMS ((bfd *abfd));
@ -1125,16 +1118,16 @@ bfd_arch_bits_per_byte PARAMS ((bfd *abfd));
unsigned int
bfd_arch_bits_per_address PARAMS ((bfd *abfd));
bfd_arch_info_type *
const bfd_arch_info_type *
bfd_get_arch_info PARAMS ((bfd *abfd));
bfd_arch_info_type *
const bfd_arch_info_type *
bfd_lookup_arch
PARAMS ((enum bfd_architecture
arch,
unsigned long machine));
CONST char *
const char *
bfd_printable_arch_mach
PARAMS ((enum bfd_architecture arch, unsigned long machine));
@ -1849,7 +1842,7 @@ struct _bfd
struct symbol_cache_entry **outsymbols;
/* Pointer to structure which contains architecture information*/
struct bfd_arch_info *arch_info;
const struct bfd_arch_info *arch_info;
/* Stuff only useful for archives:*/
PTR arelt_data;

View File

@ -127,7 +127,7 @@ CODE_FRAGMENT
. struct symbol_cache_entry **outsymbols;
.
. {* Pointer to structure which contains architecture information*}
. struct bfd_arch_info *arch_info;
. const struct bfd_arch_info *arch_info;
.
. {* Stuff only useful for archives:*}
. PTR arelt_data;

2
bfd/configure vendored
View File

@ -1424,7 +1424,7 @@ else # all_targets is true
test -n "$selvecs" &&
selvecs=`echo $selvecs | sed -e 's/^/\&/' -e 's/ \(.\)/,\&\1/g'`
test -n "$selarchs" &&
selarchs=`echo $selarchs | sed -e 's/ \(.\)/,\1/g'`
selarchs=`echo $selarchs | sed -e 's/^/\&/' -e 's/ \(.\)/,\&\1/g'`
fi # all_targets is true
case ${host64}-${target64}-${want64} in

View File

@ -469,7 +469,7 @@ else # all_targets is true
test -n "$selvecs" &&
selvecs=`echo $selvecs | sed -e 's/^/\&/' -e 's/ \(.\)/,\&\1/g'`
test -n "$selarchs" &&
selarchs=`echo $selarchs | sed -e 's/ \(.\)/,\1/g'`
selarchs=`echo $selarchs | sed -e 's/^/\&/' -e 's/ \(.\)/,\&\1/g'`
fi # all_targets is true
case ${host64}-${target64}-${want64} in

View File

@ -22,7 +22,7 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
#include "sysdep.h"
#include "libbfd.h"
static bfd_arch_info_type arch_info_struct =
const bfd_arch_info_type bfd_a29k_arch =
{
32, /* 32 bits in a word */
32, /* 32 bits in an address */
@ -37,9 +37,3 @@ static bfd_arch_info_type arch_info_struct =
bfd_default_scan ,
0,
};
void
bfd_a29k_arch ()
{
bfd_arch_linkin(&arch_info_struct);
}

View File

@ -25,9 +25,9 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
int bfd_default_scan_num_mach();
static boolean
DEFUN(scan_mach,(info, string),
CONST struct bfd_arch_info *info AND
CONST char *string)
scan_mach (info, string)
const struct bfd_arch_info *info;
const char *string;
{
if (strcmp(string,"rce") == 0) return true;
if (strcmp(string,"RCE") == 0) return true;
@ -39,10 +39,10 @@ CONST char *string)
/* This routine is provided two arch_infos and returns whether
they'd be compatible */
static CONST bfd_arch_info_type *
static const bfd_arch_info_type *
DEFUN(compatible,(a,b),
CONST bfd_arch_info_type *a AND
CONST bfd_arch_info_type *b)
const bfd_arch_info_type *a AND
const bfd_arch_info_type *b)
{
if (a->arch != b->arch || a->mach != b->mach)
return NULL;
@ -50,29 +50,18 @@ DEFUN(compatible,(a,b),
}
#endif
static bfd_arch_info_type arch_info_struct[] =
{
{
32, /* 32 bits in a word */
32, /* 32 bits in an address */
8, /* 8 bits in a byte */
bfd_arch_rce,
0, /* only 1 machine */
"RCE", /* arch_name */
"RCE", /* printable name */
1,
true, /* the default machine */
bfd_default_compatible,
scan_mach,
0,
0,
},
};
void
DEFUN_VOID(bfd_rce_arch)
const bfd_arch_info_type bfd_rce_arch =
{
bfd_arch_linkin(&arch_info_struct[0]);
}
32, /* 32 bits in a word */
32, /* 32 bits in an address */
8, /* 8 bits in a byte */
bfd_arch_rce,
0, /* only 1 machine */
"RCE", /* arch_name */
"RCE", /* printable name */
1,
true, /* the default machine */
bfd_default_compatible,
scan_mach,
0,
};

View File

@ -1,5 +1,5 @@
/* bfd initialization stuff
Copyright (C) 1990-1991 Free Software Foundation, Inc.
Copyright (C) 1990, 91, 92, 93, 94 Free Software Foundation, Inc.
Written by Steve Chamberlain of Cygnus Support.
This file is part of BFD, the Binary File Descriptor library.
@ -16,13 +16,13 @@ GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
#include "bfd.h"
#include "sysdep.h"
#include "libbfd.h"
extern void DEFUN_VOID (bfd_section_init);
extern void bfd_section_init ();
static boolean initialized = false;
@ -41,18 +41,17 @@ SYNOPSIS
void bfd_init(void);
DESCRIPTION
This routine must be called before any other libbfd function to
This routine must be called before any other BFD function to
initialize magical internal data structures.
*/
void
bfd_init ()
{
if (initialized == false) {
initialized = true;
bfd_arch_init();
}
if (initialized == false)
{
initialized = true;
}
}
@ -64,9 +63,9 @@ SYNOPSIS
void bfd_check_init(void);
DESCRIPTION
This routine is called before any other libbfd function using
This routine is called before any other BFD function using
initialized data. It ensures that the structures have
been initialized. Soon this function will go away, and the bfd
been initialized. Soon this function will go away, and the BFD
library will assume that <<bfd_init>> has been called.
*/

View File

@ -663,25 +663,19 @@ bfd_generic_get_relocated_section_contents PARAMS ((bfd *abfd,
boolean relocateable,
asymbol **symbols));
extern bfd_arch_info_type bfd_default_arch_struct;
extern const bfd_arch_info_type bfd_default_arch_struct;
boolean
bfd_default_set_arch_mach PARAMS ((bfd *abfd,
enum bfd_architecture arch,
unsigned long mach));
void
bfd_arch_init PARAMS ((void));
void
bfd_arch_linkin PARAMS ((bfd_arch_info_type *ptr));
CONST bfd_arch_info_type *
const bfd_arch_info_type *
bfd_default_compatible
PARAMS ((CONST bfd_arch_info_type *a,
CONST bfd_arch_info_type *b));
PARAMS ((const bfd_arch_info_type *a,
const bfd_arch_info_type *b));
boolean
bfd_default_scan PARAMS ((CONST struct bfd_arch_info *info, CONST char *string));
bfd_default_scan PARAMS ((const struct bfd_arch_info *info, const char *string));
struct elf_internal_shdr *
bfd_elf_find_section PARAMS ((bfd *abfd, char *name));