mirror of
git://gcc.gnu.org/git/gcc.git
synced 2024-12-26 06:29:00 +08:00
rs6000.h (ASM_OUTPUT_WEAKREF): Define.
* config/rs6000/rs6000.h (ASM_OUTPUT_WEAKREF): Define. * defaults.h (ASM_OUTPUT_WEAKREF): Add decl argument. * varasm.c (do_assemble_alias): Adjust call. (weak_finish): Don't use ASM_WEAKEN_LABEL if ASM_WEAKEN_DECL is defined. * doc/tm.texi (ASM_OUTPUT_WEAKREF): Document it. From-SVN: r107156
This commit is contained in:
parent
ebb23329cd
commit
ff2d10c1e4
@ -1,3 +1,12 @@
|
||||
2005-11-17 Alexandre Oliva <aoliva@redhat.com>
|
||||
|
||||
* config/rs6000/rs6000.h (ASM_OUTPUT_WEAKREF): Define.
|
||||
* defaults.h (ASM_OUTPUT_WEAKREF): Add decl argument.
|
||||
* varasm.c (do_assemble_alias): Adjust call.
|
||||
(weak_finish): Don't use ASM_WEAKEN_LABEL if ASM_WEAKEN_DECL
|
||||
is defined.
|
||||
* doc/tm.texi (ASM_OUTPUT_WEAKREF): Document it.
|
||||
|
||||
2005-11-17 James E Wilson <wilson@specifix.com>
|
||||
|
||||
* tree.def (FUNCTION_DECL): Correct typo in comment.
|
||||
|
@ -2033,6 +2033,26 @@ extern int toc_initialized;
|
||||
while (0)
|
||||
#endif
|
||||
|
||||
#if HAVE_GAS_WEAKREF
|
||||
#define ASM_OUTPUT_WEAKREF(FILE, DECL, NAME, VALUE) \
|
||||
do \
|
||||
{ \
|
||||
fputs ("\t.weakref\t", (FILE)); \
|
||||
RS6000_OUTPUT_BASENAME ((FILE), (NAME)); \
|
||||
fputs (", ", (FILE)); \
|
||||
RS6000_OUTPUT_BASENAME ((FILE), (VALUE)); \
|
||||
if ((DECL) && TREE_CODE (DECL) == FUNCTION_DECL \
|
||||
&& DEFAULT_ABI == ABI_AIX && DOT_SYMBOLS) \
|
||||
{ \
|
||||
fputs ("\n\t.weakref\t.", (FILE)); \
|
||||
RS6000_OUTPUT_BASENAME ((FILE), (NAME)); \
|
||||
fputs (", .", (FILE)); \
|
||||
RS6000_OUTPUT_BASENAME ((FILE), (VALUE)); \
|
||||
} \
|
||||
fputc ('\n', (FILE)); \
|
||||
} while (0)
|
||||
#endif
|
||||
|
||||
/* This implements the `alias' attribute. */
|
||||
#undef ASM_OUTPUT_DEF_FROM_DECLS
|
||||
#define ASM_OUTPUT_DEF_FROM_DECLS(FILE, DECL, TARGET) \
|
||||
|
@ -174,7 +174,7 @@ Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA
|
||||
the latter is referenced directly, a strong reference prevails. */
|
||||
#ifndef ASM_OUTPUT_WEAKREF
|
||||
#if defined HAVE_GAS_WEAKREF
|
||||
#define ASM_OUTPUT_WEAKREF(FILE, NAME, VALUE) \
|
||||
#define ASM_OUTPUT_WEAKREF(FILE, DECL, NAME, VALUE) \
|
||||
do \
|
||||
{ \
|
||||
fprintf ((FILE), "\t.weakref\t"); \
|
||||
|
@ -6766,6 +6766,12 @@ defines (equates) the weak symbol @var{name} to have the value
|
||||
to make @var{name} weak.
|
||||
@end defmac
|
||||
|
||||
@defmac ASM_OUTPUT_WEAKREF (@var{stream}, @var{decl}, @var{name}, @var{value})
|
||||
Outputs a directive that enables @var{name} to be used to refer to
|
||||
symbol @var{value} with weak-symbol semantics. @code{decl} is the
|
||||
declaration of @code{name}.
|
||||
@end defmac
|
||||
|
||||
@defmac SUPPORTS_WEAK
|
||||
A C expression which evaluates to true if the target supports weak symbols.
|
||||
|
||||
|
@ -4551,7 +4551,10 @@ weak_finish (void)
|
||||
#ifndef ASM_OUTPUT_WEAKREF
|
||||
else if (! TREE_SYMBOL_REFERENCED (target))
|
||||
{
|
||||
# ifdef ASM_WEAKEN_LABEL
|
||||
/* Use ASM_WEAKEN_LABEL only if ASM_WEAKEN_DECL is not
|
||||
defined, otherwise we and weak_finish_1 would use a
|
||||
different macros. */
|
||||
# if defined ASM_WEAKEN_LABEL && ! defined ASM_WEAKEN_DECL
|
||||
ASM_WEAKEN_LABEL (asm_out_file, IDENTIFIER_POINTER (target));
|
||||
# else
|
||||
tree decl = find_decl_and_mark_needed (alias_decl, target);
|
||||
@ -4736,7 +4739,7 @@ do_assemble_alias (tree decl, tree target)
|
||||
weakref_targets = tree_cons (decl, target, weakref_targets);
|
||||
|
||||
#ifdef ASM_OUTPUT_WEAKREF
|
||||
ASM_OUTPUT_WEAKREF (asm_out_file,
|
||||
ASM_OUTPUT_WEAKREF (asm_out_file, decl,
|
||||
IDENTIFIER_POINTER (DECL_ASSEMBLER_NAME (decl)),
|
||||
IDENTIFIER_POINTER (target));
|
||||
#else
|
||||
|
Loading…
Reference in New Issue
Block a user