diff options
author | Alan Modra <amodra@gmail.com> | 2009-11-02 11:49:48 +0000 |
---|---|---|
committer | Alan Modra <amodra@gmail.com> | 2009-11-02 11:49:48 +0000 |
commit | 4cae74aaa293398e6e3b8519de184a058f5b62c4 (patch) | |
tree | c728975e1c162b5f30549476c7ae9fb1d1f7df0e | |
parent | 3703bab932d537a9a7136e0d4cf1985bc2249259 (diff) | |
download | fsf-binutils-gdb-4cae74aaa293398e6e3b8519de184a058f5b62c4.zip fsf-binutils-gdb-4cae74aaa293398e6e3b8519de184a058f5b62c4.tar.gz fsf-binutils-gdb-4cae74aaa293398e6e3b8519de184a058f5b62c4.tar.bz2 |
* 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.
-rw-r--r-- | gas/ChangeLog | 12 | ||||
-rw-r--r-- | gas/config/obj-aout.c | 3 | ||||
-rw-r--r-- | gas/config/obj-coff.c | 3 | ||||
-rw-r--r-- | gas/config/obj-ecoff.c | 3 | ||||
-rw-r--r-- | gas/config/obj-ecoff.h | 3 | ||||
-rw-r--r-- | gas/config/obj-elf.c | 3 | ||||
-rw-r--r-- | gas/config/obj-multi.h | 5 | ||||
-rw-r--r-- | gas/ecoff.c | 10 | ||||
-rw-r--r-- | gas/ecoff.h | 6 |
9 files changed, 41 insertions, 7 deletions
diff --git a/gas/ChangeLog b/gas/ChangeLog index ae6ceb8..3eb9ce0 100644 --- a/gas/ChangeLog +++ b/gas/ChangeLog @@ -1,5 +1,17 @@ 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 to second copy of function. diff --git a/gas/config/obj-aout.c b/gas/config/obj-aout.c index daba73d..c60cff1 100644 --- a/gas/config/obj-aout.c +++ b/gas/config/obj-aout.c @@ -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[] = diff --git a/gas/config/obj-coff.c b/gas/config/obj-coff.c index 271b01e..d4fb10d 100644 --- a/gas/config/obj-coff.c +++ b/gas/config/obj-coff.c @@ -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 }; diff --git a/gas/config/obj-ecoff.c b/gas/config/obj-ecoff.c index 5bee7ac..ad9f250 100644 --- a/gas/config/obj-ecoff.c +++ b/gas/config/obj-ecoff.c @@ -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 }; diff --git a/gas/config/obj-ecoff.h b/gas/config/obj-ecoff.h index fae84ae..1d93dd9 100644 --- a/gas/config/obj-ecoff.h +++ b/gas/config/obj-ecoff.h @@ -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) diff --git a/gas/config/obj-elf.c b/gas/config/obj-elf.c index dfe7ce3..1cc11ec 100644 --- a/gas/config/obj-elf.c +++ b/gas/config/obj-elf.c @@ -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 }; diff --git a/gas/config/obj-multi.h b/gas/config/obj-multi.h index fe3c3e7..b78e836 100644 --- a/gas/config/obj-multi.h +++ b/gas/config/obj-multi.h @@ -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) \ diff --git a/gas/ecoff.c b/gas/ecoff.c index a3413ca..f4e22ac 100644 --- a/gas/ecoff.c +++ b/gas/ecoff.c @@ -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. */ diff --git a/gas/ecoff.h b/gas/ecoff.h index 9830113..f4f8356 100644 --- a/gas/ecoff.h +++ b/gas/ecoff.h @@ -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 *); |