aboutsummaryrefslogtreecommitdiff
path: root/gcc/varasm.c
diff options
context:
space:
mode:
authorJeffrey A Law <law@cygnus.com>1999-02-26 01:29:21 +0000
committerJeff Law <law@gcc.gnu.org>1999-02-25 18:29:21 -0700
commit0e9264a2d44cda93785381e21512a9b88b769036 (patch)
tree855d4e599adc29e51930b659de26cb3bd6af975b /gcc/varasm.c
parentcdf62c54740df5a4463f449062d8e4a5ab1183f7 (diff)
downloadgcc-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.c28
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. */