2016-09-07 14 views
3

다음 코드를 사용하여 -fsanitize = address이 clang 및 gcc의 컴파일 시간에 지정되었는지 확인합니다. -fsanitize = undefined이 지정되었는지 어떻게 결정합니까?clang 또는 gcc를 사용하여 UBSAN을 컴파일했는지 어떻게 알 수 있습니까?

bool isSanitized = false; 
#if defined(__has_feature) 
#if __has_feature(address_sanitizer) 
    isSanitized = true; 
#endif 
#elif defined(__SANITIZE_ADDRESS__) 
    isSanitized = true; 
#endif 
+0

이 항목을 확인하십시오. http://stackoverflow.com/questions/38719560/is-there-a-way-to-store-clang-compile-time-flags-in-the-output-binary – xhamr

+0

That doesn ' ASAN 탐지와 동일한 방식으로 작동합니다. –

답변

0

난 당신이 이것에 대해 아산 GitHub의 (또는 GCC 버그질라)에 버그로 파일 제안 (우리는 이미 그것뿐만 아니라 UBSan 하나를 요리하는 의미가 있도록 아산과 TSAN에 대해 정의했다). 지금 으로서는 Makefile에서 -fsanitize-undefined와 함께 커스텀 정의를 전달하는 것이 유일한 방법 인 것 같습니다.