diff options
author | Jeffrey A Law <law@cygnus.com> | 1999-02-26 01:29:21 +0000 |
---|---|---|
committer | Jeff Law <law@gcc.gnu.org> | 1999-02-25 18:29:21 -0700 |
commit | 0e9264a2d44cda93785381e21512a9b88b769036 (patch) | |
tree | 855d4e599adc29e51930b659de26cb3bd6af975b /gcc/varasm.c | |
parent | cdf62c54740df5a4463f449062d8e4a5ab1183f7 (diff) | |
download | gcc-0e9264a2d44cda93785381e21512a9b88b769036.zip gcc-0e9264a2d44cda93785381e21512a9b88b769036.tar.gz gcc-0e9264a2d44cda93785381e21512a9b88b769036.tar.bz2 |
* c-pragma.c (add_weak); Delete. Moved into...
* varasm.c (add_weak): New external function.
(declare_weak): If HANDLE_PRAGMA_WEAK, then add the function to
the list of weak functions.
* c-pragma (add_weak): Declare.
From-SVN: r25454
Diffstat (limited to 'gcc/varasm.c')
-rw-r--r-- | gcc/varasm.c | 28 |
1 files changed, 28 insertions, 0 deletions
diff --git a/gcc/varasm.c b/gcc/varasm.c index a247cd7..a6ee794 100644 --- a/gcc/varasm.c +++ b/gcc/varasm.c @@ -4269,6 +4269,31 @@ output_constructor (exp, size) assemble_zeros (size - total_bytes); } +#ifdef HANDLE_PRAGMA_WEAK +/* Add function NAME to the weak symbols list. VALUE is a weak alias + associatd with NAME. */ + +int +add_weak (name, value) + char *name; + char *value; +{ + struct weak_syms *weak; + + weak = (struct weak_syms *) permalloc (sizeof (struct weak_syms)); + + if (weak == NULL) + return 0; + + weak->next = weak_decls; + weak->name = name; + weak->value = value; + weak_decls = weak; + + return 1; +} +#endif /* HANDLE_PRAGMA_WEAK */ + /* Declare DECL to be a weak symbol. */ void @@ -4281,6 +4306,9 @@ declare_weak (decl) error_with_decl (decl, "weak declaration of `%s' must precede definition"); else if (SUPPORTS_WEAK) DECL_WEAK (decl) = 1; +#ifdef HANDLE_PRAGMA_WEAK + add_weak (IDENTIFIER_POINTER (DECL_ASSEMBLER_NAME (decl)), NULL); +#endif } /* Emit any pending weak declarations. */ |