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 | |
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')
-rw-r--r-- | gcc/ChangeLog | 8 | ||||
-rw-r--r-- | gcc/c-pragma.c | 24 | ||||
-rw-r--r-- | gcc/c-pragma.h | 2 | ||||
-rw-r--r-- | gcc/varasm.c | 28 |
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. */ |