メモリサニタイザーが使用されているときにFD_ZERO
、誤検知をクリアしたいと考えています。FD_SET
クリアするのはやや簡単です。
#include <sanitizer/msan_interface.h>
...
__msan_unpoison(&readfds, sizeof(readfds));
__msan_unpoison(&writefds, sizeof(writefds));
ただし、メモリサニタイザーが使用されていることを検出する方法がわかりません。つまり-fsanitize=memory
、コマンド ラインでいつ指定されたかを検出します。プリプロセッサは役に立っていないようです:
$ clang -dM -E -fsanitize=memory - </dev/null | egrep -i 'memory|sanitize|msan'
$
がいつ使用されているかを判断するにはどうすればよい-fsanitize=memory
ですか?