|
From: <sv...@va...> - 2007-12-05 21:51:57
|
Author: njn
Date: 2007-12-05 21:51:50 +0000 (Wed, 05 Dec 2007)
New Revision: 7279
Log:
Document flakiness of NON_SIMD_CALL* in comments and the manual.
Modified:
trunk/docs/xml/manual-core-adv.xml
trunk/include/valgrind.h
Modified: trunk/docs/xml/manual-core-adv.xml
===================================================================
--- trunk/docs/xml/manual-core-adv.xml 2007-12-05 01:31:42 UTC (rev 7278)
+++ trunk/docs/xml/manual-core-adv.xml 2007-12-05 21:51:50 UTC (rev 7279)
@@ -200,7 +200,14 @@
client programs.</para>
<para><command>Warning:</command> Only use these if you
- <emphasis>really</emphasis> know what you are doing.</para>
+ <emphasis>really</emphasis> know what you are doing. They aren't
+ entirely reliable, and can cause Valgrind to crash.
+ Generally, your prospects of these working are made higher if the called
+ function does not refer to any global variables, and does not refer to any
+ libc or other functions (printf et al). Any kind of entanglement with libc
+ or dynamic linking is likely to have a bad outcome, for tricky reasons
+ which we've grappled with a lot in the past.
+ </para>
</listitem>
</varlistentry>
Modified: trunk/include/valgrind.h
===================================================================
--- trunk/include/valgrind.h 2007-12-05 01:31:42 UTC (rev 7278)
+++ trunk/include/valgrind.h 2007-12-05 21:51:50 UTC (rev 7279)
@@ -3715,6 +3715,15 @@
Word f(Word tid, Word arg1, Word arg2)
where "Word" is a word-sized type.
+
+ Note that these client requests are not entirely reliable. For example,
+ if you call a function with them that subsequently calls printf(),
+ there's a high chance Valgrind will crash. Generally, your prospects of
+ these working are made higher if the called function does not refer to
+ any global variables, and does not refer to any libc or other functions
+ (printf et al). Any kind of entanglement with libc or dynamic linking is
+ likely to have a bad outcome, for tricky reasons which we've grappled
+ with a lot in the past.
*/
#define VALGRIND_NON_SIMD_CALL0(_qyy_fn) \
__extension__ \
|