From de2d1fb7d5aa219145df8699eb3c9d1902352afc Mon Sep 17 00:00:00 2001 From: law Date: Fri, 26 Feb 1999 01:29:21 +0000 Subject: [PATCH] * 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. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@25454 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/ChangeLog | 8 ++++++++ gcc/c-pragma.c | 24 ------------------------ gcc/c-pragma.h | 2 ++ gcc/varasm.c | 28 ++++++++++++++++++++++++++++ 4 files changed, 38 insertions(+), 24 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 69d04970bb3..76e57ea69fa 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 Flow rewrite to use basic block structures and edge lists: diff --git a/gcc/c-pragma.c b/gcc/c-pragma.c index d83789d667b..09fac1feaab 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 195f175ab75..ddc74d1076e 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 a247cd775af..a6ee794a3e4 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. */ -- 2.11.0