aboutsummaryrefslogtreecommitdiff
path: root/gcc
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
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')
-rw-r--r--gcc/ChangeLog8
-rw-r--r--gcc/c-pragma.c24
-rw-r--r--gcc/c-pragma.h2
-rw-r--r--gcc/varasm.c28
4 files changed, 38 insertions, 24 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 69d0497..76e57ea 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,11 @@
+Fri Feb 26 02:24:57 1999 Jeffrey A Law (law@cygnus.com)
+
+ * 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.
+
Thu Feb 25 23:43:59 1999 Richard Henderson <rth@cygnus.com>
Flow rewrite to use basic block structures and edge lists:
diff --git a/gcc/c-pragma.c b/gcc/c-pragma.c
index d83789d..09fac1f 100644
--- a/gcc/c-pragma.c
+++ b/gcc/c-pragma.c
@@ -192,30 +192,6 @@ insert_pack_attributes (node, attributes, prefix)
}
#endif /* HANDLE_PRAGMA_PACK_PUSH_POP */
-#ifdef HANDLE_PRAGMA_WEAK
-static int add_weak PROTO((char *, char *));
-
-static 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 */
-
/* Handle one token of a pragma directive. TOKEN is the current token, and
STRING is its printable form. Some front ends do not support generating
tokens, and will only pass in a STRING. Also some front ends will reuse
diff --git a/gcc/c-pragma.h b/gcc/c-pragma.h
index 195f175..ddc74d1 100644
--- a/gcc/c-pragma.h
+++ b/gcc/c-pragma.h
@@ -56,6 +56,8 @@ struct weak_syms
/* Declared in varasm.c */
extern struct weak_syms * weak_decls;
+
+extern int add_weak PROTO((char *, char *));
#endif /* HANDLE_PRAGMA_WEAK */
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. */