<p dir="ltr">Thanks!</p>
<div class="gmail_quote">On Mar 2, 2014 12:54 PM, "Aaron Ballman" <<a href="mailto:aaron@aaronballman.com">aaron@aaronballman.com</a>> wrote:<br type="attribution"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
Thanks for pointing that out -- I hadn't seen those warnings because<br>
my local copy wasn't rebuilding those files unless I manually forced<br>
it to. Oops! This is fixed in r202655<br>
<br>
~Aaron<br>
<br>
On Sat, Mar 1, 2014 at 7:31 PM, Sean Silva <<a href="mailto:silvas@purdue.edu">silvas@purdue.edu</a>> wrote:<br>
> Sorry to ping this again, but I'm seeing these Sphinx warnings due to the<br>
> labels that were removed. Do the TableGen'erated files have equivalent<br>
> labels that you could link to?<br>
><br>
> /home/sean/pg/llvm/llvm/tools/clang/docs/AddressSanitizer.rst:129: WARNING:<br>
> undefined label: langext-address_sanitizer (if the link has no caption the<br>
> label must precede a section header)<br>
> /home/sean/pg/llvm/llvm/tools/clang/docs/MemorySanitizer.rst:86: WARNING:<br>
> undefined label: langext-memory_sanitizer (if the link has no caption the<br>
> label must precede a section header)<br>
> /home/sean/pg/llvm/llvm/tools/clang/docs/ThreadSanitizer.rst:90: WARNING:<br>
> undefined label: langext-thread_sanitizer (if the link has no caption the<br>
> label must precede a section header)<br>
> /home/sean/pg/llvm/llvm/tools/clang/docs/ThreadSanitizer.rst:103: WARNING:<br>
> undefined label: langext-thread_sanitizer (if the link has no caption the<br>
> label must precede a section header)<br>
><br>
><br>
><br>
> On Fri, Feb 21, 2014 at 8:44 AM, Aaron Ballman <<a href="mailto:aaron@aaronballman.com">aaron@aaronballman.com</a>><br>
> wrote:<br>
>><br>
>> Author: aaronballman<br>
>> Date: Fri Feb 21 07:44:43 2014<br>
>> New Revision: 201850<br>
>><br>
>> URL: <a href="http://llvm.org/viewvc/llvm-project?rev=201850&view=rev" target="_blank">http://llvm.org/viewvc/llvm-project?rev=201850&view=rev</a><br>
>> Log:<br>
>> Moving the documentation for the sanitizer negation attributes into<br>
>> AttrDocs.<br>
>><br>
>> Modified:<br>
>>     cfe/trunk/docs/AttributeReference.rst<br>
>>     cfe/trunk/docs/LanguageExtensions.rst<br>
>>     cfe/trunk/include/clang/Basic/Attr.td<br>
>>     cfe/trunk/include/clang/Basic/AttrDocs.td<br>
>><br>
>> Modified: cfe/trunk/docs/AttributeReference.rst<br>
>> URL:<br>
>> <a href="http://llvm.org/viewvc/llvm-project/cfe/trunk/docs/AttributeReference.rst?rev=201850&r1=201849&r2=201850&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/cfe/trunk/docs/AttributeReference.rst?rev=201850&r1=201849&r2=201850&view=diff</a><br>

>><br>
>> ==============================================================================<br>
>> --- cfe/trunk/docs/AttributeReference.rst (original)<br>
>> +++ cfe/trunk/docs/AttributeReference.rst Fri Feb 21 07:44:43 2014<br>
>> @@ -291,6 +291,44 @@ not ODR-equivalent.<br>
>>  Query for this feature with ``__has_attribute(enable_if)``.<br>
>><br>
>><br>
>> +no_sanitize_address (no_address_safety_analysis,<br>
>> gnu::no_address_safety_analysis, gnu::no_sanitize_address)<br>
>><br>
>> +-----------------------------------------------------------------------------------------------------------<br>
>> +.. csv-table:: Supported Syntaxes<br>
>> +   :header: "GNU", "C++11", "__declspec", "Keyword"<br>
>> +<br>
>> +   "X","X","",""<br>
>> +<br>
>> +Use ``__attribute__((no_sanitize_address))`` on a function declaration to<br>
>> +specify that address safety instrumentation (e.g. AddressSanitizer)<br>
>> should<br>
>> +not be applied to that function.<br>
>> +<br>
>> +<br>
>> +no_sanitize_memory<br>
>> +------------------<br>
>> +.. csv-table:: Supported Syntaxes<br>
>> +   :header: "GNU", "C++11", "__declspec", "Keyword"<br>
>> +<br>
>> +   "X","","",""<br>
>> +<br>
>> +Use ``__attribute__((no_sanitize_memory))`` on a function declaration to<br>
>> +specify that checks for uninitialized memory should not be inserted<br>
>> +(e.g. by MemorySanitizer). The function may still be instrumented by the<br>
>> tool<br>
>> +to avoid false positives in other places.<br>
>> +<br>
>> +<br>
>> +no_sanitize_thread<br>
>> +------------------<br>
>> +.. csv-table:: Supported Syntaxes<br>
>> +   :header: "GNU", "C++11", "__declspec", "Keyword"<br>
>> +<br>
>> +   "X","","",""<br>
>> +<br>
>> +Use ``__attribute__((no_sanitize_thread))`` on a function declaration to<br>
>> +specify that checks for data races on plain (non-atomic) memory accesses<br>
>> should<br>
>> +not be inserted by ThreadSanitizer. The function is still instrumented by<br>
>> the<br>
>> +tool to avoid false positives and provide meaningful stack traces.<br>
>> +<br>
>> +<br>
>>  objc_method_family<br>
>>  ------------------<br>
>>  .. csv-table:: Supported Syntaxes<br>
>><br>
>> Modified: cfe/trunk/docs/LanguageExtensions.rst<br>
>> URL:<br>
>> <a href="http://llvm.org/viewvc/llvm-project/cfe/trunk/docs/LanguageExtensions.rst?rev=201850&r1=201849&r2=201850&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/cfe/trunk/docs/LanguageExtensions.rst?rev=201850&r1=201849&r2=201850&view=diff</a><br>

>><br>
>> ==============================================================================<br>
>> --- cfe/trunk/docs/LanguageExtensions.rst (original)<br>
>> +++ cfe/trunk/docs/LanguageExtensions.rst Fri Feb 21 07:44:43 2014<br>
>> @@ -1639,46 +1639,15 @@ in the analyzer's `list of source-level<br>
>>  Extensions for Dynamic Analysis<br>
>>  ===============================<br>
>><br>
>> -.. _langext-address_sanitizer:<br>
>> -<br>
>> -AddressSanitizer<br>
>> -----------------<br>
>> -<br>
>>  Use ``__has_feature(address_sanitizer)`` to check if the code is being<br>
>> built<br>
>>  with :doc:`AddressSanitizer`.<br>
>><br>
>> -Use ``__attribute__((no_sanitize_address))``<br>
>> -on a function declaration<br>
>> -to specify that address safety instrumentation (e.g. AddressSanitizer)<br>
>> should<br>
>> -not be applied to that function.<br>
>> -<br>
>> -.. _langext-thread_sanitizer:<br>
>> -<br>
>> -ThreadSanitizer<br>
>> -----------------<br>
>> -<br>
>>  Use ``__has_feature(thread_sanitizer)`` to check if the code is being<br>
>> built<br>
>>  with :doc:`ThreadSanitizer`.<br>
>><br>
>> -Use ``__attribute__((no_sanitize_thread))`` on a function declaration<br>
>> -to specify that checks for data races on plain (non-atomic) memory<br>
>> accesses<br>
>> -should not be inserted by ThreadSanitizer.<br>
>> -The function is still instrumented by the tool to avoid false positives<br>
>> and<br>
>> -provide meaningful stack traces.<br>
>> -<br>
>> -.. _langext-memory_sanitizer:<br>
>> -<br>
>> -MemorySanitizer<br>
>> -----------------<br>
>>  Use ``__has_feature(memory_sanitizer)`` to check if the code is being<br>
>> built<br>
>>  with :doc:`MemorySanitizer`.<br>
>><br>
>> -Use ``__attribute__((no_sanitize_memory))`` on a function declaration<br>
>> -to specify that checks for uninitialized memory should not be inserted<br>
>> -(e.g. by MemorySanitizer). The function may still be instrumented by the<br>
>> tool<br>
>> -to avoid false positives in other places.<br>
>> -<br>
>> -<br>
>>  Thread Safety Analysis<br>
>>  ======================<br>
>><br>
>><br>
>> Modified: cfe/trunk/include/clang/Basic/Attr.td<br>
>> URL:<br>
>> <a href="http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Basic/Attr.td?rev=201850&r1=201849&r2=201850&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Basic/Attr.td?rev=201850&r1=201849&r2=201850&view=diff</a><br>

>><br>
>> ==============================================================================<br>
>> --- cfe/trunk/include/clang/Basic/Attr.td (original)<br>
>> +++ cfe/trunk/include/clang/Basic/Attr.td Fri Feb 21 07:44:43 2014<br>
>> @@ -1244,21 +1244,21 @@ def NoSanitizeAddress : InheritableAttr<br>
>>    let Spellings = [GCC<"no_address_safety_analysis">,<br>
>>                     GCC<"no_sanitize_address">];<br>
>>    let Subjects = SubjectList<[Function, FunctionTemplate], ErrorDiag>;<br>
>> -  let Documentation = [Undocumented];<br>
>> +  let Documentation = [NoSanitizeAddressDocs];<br>
>>  }<br>
>><br>
>>  // Attribute to disable ThreadSanitizer checks.<br>
>>  def NoSanitizeThread : InheritableAttr {<br>
>>    let Spellings = [GNU<"no_sanitize_thread">];<br>
>>    let Subjects = SubjectList<[Function, FunctionTemplate], ErrorDiag>;<br>
>> -  let Documentation = [Undocumented];<br>
>> +  let Documentation = [NoSanitizeThreadDocs];<br>
>>  }<br>
>><br>
>>  // Attribute to disable MemorySanitizer checks.<br>
>>  def NoSanitizeMemory : InheritableAttr {<br>
>>    let Spellings = [GNU<"no_sanitize_memory">];<br>
>>    let Subjects = SubjectList<[Function, FunctionTemplate], ErrorDiag>;<br>
>> -  let Documentation = [Undocumented];<br>
>> +  let Documentation = [NoSanitizeMemoryDocs];<br>
>>  }<br>
>><br>
>>  // C/C++ Thread safety attributes (e.g. for deadlock, data race checking)<br>
>><br>
>> Modified: cfe/trunk/include/clang/Basic/AttrDocs.td<br>
>> URL:<br>
>> <a href="http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Basic/AttrDocs.td?rev=201850&r1=201849&r2=201850&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Basic/AttrDocs.td?rev=201850&r1=201849&r2=201850&view=diff</a><br>

>><br>
>> ==============================================================================<br>
>> --- cfe/trunk/include/clang/Basic/AttrDocs.td (original)<br>
>> +++ cfe/trunk/include/clang/Basic/AttrDocs.td Fri Feb 21 07:44:43 2014<br>
>> @@ -571,3 +571,35 @@ This attribute accepts a single paramete<br>
>>  ``unknown``, ``consumed``, or ``unconsumed``.<br>
>>    }];<br>
>>  }<br>
>> +<br>
>> +def NoSanitizeAddressDocs : Documentation {<br>
>> +  let Category = DocCatFunction;<br>
>> +  // This function has multiple distinct spellings, and so it requires a<br>
>> custom<br>
>> +  // heading to be specified. The most common spelling is sufficient.<br>
>> +  let Heading = "no_sanitize_address";<br>
>> +  let Content = [{<br>
>> +Use ``__attribute__((no_sanitize_address))`` on a function declaration to<br>
>> +specify that address safety instrumentation (e.g. AddressSanitizer)<br>
>> should<br>
>> +not be applied to that function.<br>
>> +  }];<br>
>> +}<br>
>> +<br>
>> +def NoSanitizeThreadDocs : Documentation {<br>
>> +  let Category = DocCatFunction;<br>
>> +  let Content = [{<br>
>> +Use ``__attribute__((no_sanitize_thread))`` on a function declaration to<br>
>> +specify that checks for data races on plain (non-atomic) memory accesses<br>
>> should<br>
>> +not be inserted by ThreadSanitizer. The function is still instrumented by<br>
>> the<br>
>> +tool to avoid false positives and provide meaningful stack traces.<br>
>> +  }];<br>
>> +}<br>
>> +<br>
>> +def NoSanitizeMemoryDocs : Documentation {<br>
>> +  let Category = DocCatFunction;<br>
>> +  let Content = [{<br>
>> +Use ``__attribute__((no_sanitize_memory))`` on a function declaration to<br>
>> +specify that checks for uninitialized memory should not be inserted<br>
>> +(e.g. by MemorySanitizer). The function may still be instrumented by the<br>
>> tool<br>
>> +to avoid false positives in other places.<br>
>> +  }];<br>
>> +}<br>
>><br>
>><br>
>> _______________________________________________<br>
>> cfe-commits mailing list<br>
>> <a href="mailto:cfe-commits@cs.uiuc.edu">cfe-commits@cs.uiuc.edu</a><br>
>> <a href="http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits" target="_blank">http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits</a><br>
><br>
><br>
</blockquote></div>