summaryrefslogtreecommitdiff
path: root/gcc/doc
diff options
context:
space:
mode:
authoraustern <austern@138bc75d-0d04-0410-961f-82ee72b054a4>2004-06-03 23:15:01 +0000
committeraustern <austern@138bc75d-0d04-0410-961f-82ee72b054a4>2004-06-03 23:15:01 +0000
commit9bb1c6fde904e6304bff110ed68a35acba7405cf (patch)
tree4dfc88aeb614a38019098dbdc178d9f2bfbb2b83 /gcc/doc
parentafd6038f0812811695ec8ff3a7892e76aecd9d3a (diff)
downloadgcc-9bb1c6fde904e6304bff110ed68a35acba7405cf.tar.gz
PR c++/15428
* default.h (TARGET_WEAK_NOT_IN_ARCHIVE_TOC): New name for TARGET_EXPLICIT_INSTANTIATIONS_ONE_ONLY, with reversed sense. * config/darwin.h (TARGET_WEAK_NOT_IN_ARCHIVE_TOC): Likewise. * doc/tm.texi (TARGET_WEAK_NOT_IN_ARCHIVE_TOC): Rewrite documentation to reflect the new macro name and to clarify its meaning. * cp/decl2.c (maybe_emit_vtables): If TARGET_WEAK_NOT_IN_ARCHIVE_TOC is nonzero, and if we see a noninline definition of a key method, make the vtables nonweak. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@82610 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/doc')
-rw-r--r--gcc/doc/tm.texi22
1 files changed, 16 insertions, 6 deletions
diff --git a/gcc/doc/tm.texi b/gcc/doc/tm.texi
index aee7ba87b7d..082de59446c 100644
--- a/gcc/doc/tm.texi
+++ b/gcc/doc/tm.texi
@@ -6753,13 +6753,23 @@ commands that will make the symbol(s) associated with @var{decl} have
hidden, protected or internal visibility as specified by @var{visibility}.
@end deftypefn
-@defmac TARGET_EXPLICIT_INSTANTIATIONS_ONE_ONLY
+@defmac TARGET_WEAK_NOT_IN_ARCHIVE_TOC
A C expression that evaluates to true if the target's linker expects
-explicit template specializations, as well as implicit, to be given
-linkonce semantics. The default is @code{1}. The C++ ABI requires
-this macro to be nonzero. Define this macro for targets where full
-C++ ABI compliance is impossible and where explicit and implicit
-template specialization must be treated differently.
+that weak symbols do not appear in a static archive's table of contents.
+The default is @code{0}.
+
+Leaving weak symbols out of an archive's table of contents means that,
+if a symbol will only have a definition in one translation unit and
+will have undefined references from other translation units, that
+symbol should not be weak. Defining this macro to be nonzero will
+thus have the effect that certain symbols that would normally be weak
+(explicit template instantiations, and vtables for polymorphic classes
+with noninline key methods) will instead be nonweak.
+
+The C++ ABI requires this macro to be zero. Define this macro for
+targets where full C++ ABI compliance is impossible and where linker
+restrictions require weak symbols to be left out of a static archive's
+table of contents.
@end defmac
@defmac TARGET_SUPPORTS_HIDDEN