* as.c (main): Define .gasversion. rather than __GAS_VERSION__.
* frags.h (bss_address_frag): Delete (predefined_address_frag): New. * frags.c (frag_init): Init predefined_address_frag. Delete ref to bss_addres_frag. * symbols.c (S_CAN_BE_REDEFINED): New function. * symbols.h (S_CAN_BE_REDEFINED): Declare. * read.c (assign_symbol): Use S_CAN_BE_REDEFINED.
This commit is contained in:
parent
adabb602f9
commit
6885131b49
@ -1,3 +1,14 @@
|
||||
2011-10-13 Alan Modra <amodra@gmail.com>
|
||||
|
||||
* as.c (main): Define .gasversion. rather than __GAS_VERSION__.
|
||||
* frags.h (bss_address_frag): Delete
|
||||
(predefined_address_frag): New.
|
||||
* frags.c (frag_init): Init predefined_address_frag. Delete ref
|
||||
to bss_addres_frag.
|
||||
* symbols.c (S_CAN_BE_REDEFINED): New function.
|
||||
* symbols.h (S_CAN_BE_REDEFINED): Declare.
|
||||
* read.c (assign_symbol): Use S_CAN_BE_REDEFINED.
|
||||
|
||||
2011-10-12 Alan Modra <amodra@gmail.com>
|
||||
|
||||
* symbols.c (local_symbol_make): Make global.
|
||||
|
4
gas/as.c
4
gas/as.c
@ -1206,8 +1206,8 @@ main (int argc, char ** argv)
|
||||
|
||||
dwarf2_init ();
|
||||
|
||||
local_symbol_make ("__GAS_VERSION__", absolute_section,
|
||||
BFD_VERSION / 10000UL, &zero_address_frag);
|
||||
local_symbol_make (".gasversion.", absolute_section,
|
||||
BFD_VERSION / 10000UL, &predefined_address_frag);
|
||||
|
||||
/* Now that we have fully initialized, and have created the output
|
||||
file, define any symbols requested by --defsym command line
|
||||
|
@ -25,7 +25,7 @@
|
||||
#include "obstack.h"
|
||||
|
||||
extern fragS zero_address_frag;
|
||||
extern fragS bss_address_frag;
|
||||
extern fragS predefined_address_frag;
|
||||
|
||||
/* Initialization for frag routines. */
|
||||
|
||||
@ -33,7 +33,7 @@ void
|
||||
frag_init (void)
|
||||
{
|
||||
zero_address_frag.fr_type = rs_fill;
|
||||
bss_address_frag.fr_type = rs_fill;
|
||||
predefined_address_frag.fr_type = rs_fill;
|
||||
}
|
||||
|
||||
/* Check that we're not trying to assemble into a section that can't
|
||||
|
@ -118,8 +118,7 @@ extern addressT frag_now_fix_octets (void);
|
||||
|
||||
/* For foreign-segment symbol fixups. */
|
||||
COMMON fragS zero_address_frag;
|
||||
/* For local common (N_BSS segment) fixups. */
|
||||
COMMON fragS bss_address_frag;
|
||||
COMMON fragS predefined_address_frag;
|
||||
|
||||
extern void frag_append_1_char (int);
|
||||
#define FRAG_APPEND_1_CHAR(X) frag_append_1_char (X)
|
||||
|
@ -3091,9 +3091,8 @@ assign_symbol (char *name, int mode)
|
||||
|
||||
if (S_IS_DEFINED (symbolP) || symbol_equated_p (symbolP))
|
||||
{
|
||||
/* Permit register names to be redefined. */
|
||||
if ((mode != 0 || !S_IS_VOLATILE (symbolP))
|
||||
&& S_GET_SEGMENT (symbolP) != reg_section)
|
||||
&& !S_CAN_BE_REDEFINED (symbolP))
|
||||
{
|
||||
as_bad (_("symbol `%s' is already defined"), name);
|
||||
symbolP = symbol_clone (symbolP, 0);
|
||||
|
@ -2136,6 +2136,16 @@ S_IS_STABD (symbolS *s)
|
||||
return S_GET_NAME (s) == 0;
|
||||
}
|
||||
|
||||
int
|
||||
S_CAN_BE_REDEFINED (const symbolS *s)
|
||||
{
|
||||
if (LOCAL_SYMBOL_CHECK (s))
|
||||
return (local_symbol_get_frag ((struct local_symbol *) s)
|
||||
== &predefined_address_frag);
|
||||
/* Permit register names to be redefined. */
|
||||
return s->bsym->section == reg_section;
|
||||
}
|
||||
|
||||
int
|
||||
S_IS_VOLATILE (const symbolS *s)
|
||||
{
|
||||
|
@ -100,6 +100,7 @@ extern int S_FORCE_RELOC (symbolS *, int);
|
||||
extern int S_IS_DEBUG (symbolS *);
|
||||
extern int S_IS_LOCAL (symbolS *);
|
||||
extern int S_IS_STABD (symbolS *);
|
||||
extern int S_CAN_BE_REDEFINED (const symbolS *);
|
||||
extern int S_IS_VOLATILE (const symbolS *);
|
||||
extern int S_IS_FORWARD_REF (const symbolS *);
|
||||
extern const char *S_GET_NAME (symbolS *);
|
||||
|
Loading…
Reference in New Issue
Block a user