diff options
author | austern <austern@138bc75d-0d04-0410-961f-82ee72b054a4> | 2004-06-03 23:15:01 +0000 |
---|---|---|
committer | austern <austern@138bc75d-0d04-0410-961f-82ee72b054a4> | 2004-06-03 23:15:01 +0000 |
commit | 9bb1c6fde904e6304bff110ed68a35acba7405cf (patch) | |
tree | 4dfc88aeb614a38019098dbdc178d9f2bfbb2b83 /gcc/doc | |
parent | afd6038f0812811695ec8ff3a7892e76aecd9d3a (diff) | |
download | gcc-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.texi | 22 |
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 |