* ecoff.c (ecoff_symbol_clone_hook): New function.

* ecoff.h (ecoff_symbol_clone_hook): Declare.
	* obj.h (struct format_ops): Add symbol_clone_hook.
	* config/obj-aout.c (aout_format_ops): Init new field.
	* config/obj-coff.c (coff_format_ops): Likewise.
	* config/obj-ecoff.c (ecoff_format_ops): Likewise.
	* config/obj-elf.c (elf_format_ops): Likewise.
	* config/obj-ecoff.h (obj_symbol_clone_hook): Define.
	* config/obj-multi.h (obj_symbol_clone_hook): Define.
This commit is contained in:
Alan Modra 2009-11-02 11:49:48 +00:00
parent 3703bab932
commit 4cae74aaa2
9 changed files with 41 additions and 7 deletions

View File

@ -1,3 +1,15 @@
2009-11-02 Alan Modra <amodra@bigpond.net.au>
* ecoff.c (ecoff_symbol_clone_hook): New function.
* ecoff.h (ecoff_symbol_clone_hook): Declare.
* obj.h (struct format_ops): Add symbol_clone_hook.
* config/obj-aout.c (aout_format_ops): Init new field.
* config/obj-coff.c (coff_format_ops): Likewise.
* config/obj-ecoff.c (ecoff_format_ops): Likewise.
* config/obj-elf.c (elf_format_ops): Likewise.
* config/obj-ecoff.h (obj_symbol_clone_hook): Define.
* config/obj-multi.h (obj_symbol_clone_hook): Define.
2009-11-02 Alan Modra <amodra@bigpond.net.au>
* messages.c (as_fatal): Apply 2001-01-15 change and followup

View File

@ -310,7 +310,8 @@ const struct format_ops aout_format_ops =
aout_pop_insert,
0, /* ecoff_set_ext. */
0, /* read_begin_hook. */
0 /* symbol_new_hook. */
0, /* symbol_new_hook. */
0 /* symbol_clone_hook. */
};
const pseudo_typeS aout_pseudo_table[] =

View File

@ -1930,5 +1930,6 @@ const struct format_ops coff_format_ops =
coff_pop_insert,
0, /* ecoff_set_ext */
coff_obj_read_begin_hook,
coff_obj_symbol_new_hook
coff_obj_symbol_new_hook,
coff_obj_symbol_clone_hook
};

View File

@ -314,5 +314,6 @@ const struct format_ops ecoff_format_ops =
ecoff_pop_insert,
ecoff_set_ext,
ecoff_read_begin_hook,
ecoff_symbol_new_hook
ecoff_symbol_new_hook,
ecoff_symbol_clone_hook
};

View File

@ -1,6 +1,6 @@
/* ECOFF object file format header file.
Copyright 1993, 1994, 1995, 1996, 1997, 1999, 2002, 2004, 2005,
2007 Free Software Foundation, Inc.
2007, 2009 Free Software Foundation, Inc.
Contributed by Cygnus Support.
Written by Ian Lance Taylor <ian@cygnus.com>.
@ -59,6 +59,7 @@ struct ecoff_sy_obj
/* We use the ECOFF functions as our hooks. */
#define obj_read_begin_hook ecoff_read_begin_hook
#define obj_symbol_new_hook ecoff_symbol_new_hook
#define obj_symbol_clone_hook ecoff_symbol_clone_hook
/* Record file switches in the ECOFF symbol table. */
#define obj_app_file(name, app) ecoff_new_file (name, app)

View File

@ -2424,5 +2424,6 @@ const struct format_ops elf_format_ops =
0, /* ecoff_set_ext */
#endif
elf_obj_read_begin_hook,
elf_obj_symbol_new_hook
elf_obj_symbol_new_hook,
0
};

View File

@ -81,6 +81,11 @@
? (*this_format->symbol_new_hook) (S) \
: (void) 0)
#define obj_symbol_clone_hook(N, O) \
(this_format->symbol_clone_hook \
? (*this_format->symbol_clone_hook) (N, O) \
: (void) 0)
#define obj_sec_sym_ok_for_reloc(A) \
(this_format->sec_sym_ok_for_reloc \
? (*this_format->sec_sym_ok_for_reloc) (A) \

View File

@ -1506,6 +1506,16 @@ ecoff_symbol_new_hook (symbolS *symbolP)
obj->ecoff_symbol = NULL;
obj->ecoff_extern_size = 0;
}
void
ecoff_symbol_clone_hook (symbolS *newsymP, symbolS *orgsymP)
{
OBJ_SYMFIELD_TYPE *n, *o;
n = symbol_get_obj (newsymP);
o = symbol_get_obj (orgsymP);
memcpy (n, o, sizeof *n);
}
/* Add a page to a varray object. */

View File

@ -1,6 +1,6 @@
/* ecoff.h -- header file for ECOFF debugging support
Copyright 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2003, 2004, 2005, 2007
Free Software Foundation, Inc.
Copyright 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2003, 2004, 2005,
2007, 2009 Free Software Foundation, Inc.
Contributed by Cygnus Support.
Put together by Ian Lance Taylor <ian@cygnus.com>.
@ -44,6 +44,8 @@ extern void ecoff_new_file (const char *, int);
obj_symbol_new_hook. */
extern void ecoff_symbol_new_hook (symbolS *);
extern void ecoff_symbol_clone_hook (symbolS *, symbolS *);
/* This function should be called by the obj_frob_symbol hook. */
extern void ecoff_frob_symbol (symbolS *);