2016-09-07 3 views
3

Nous utilisons le code suivant pour déterminer si -fsanitize = adresse a été spécifié au moment de la compilation pour clang et gcc. Comment déterminer si -fsanitize = undefined a été spécifié?Comment puis-je déterminer si UBSAN a été compilé en utilisant clang ou gcc?

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

Vous pouvez vérifier cela http://stackoverflow.com/questions/38719560/-there-a-way-to-store-clang-compile-time-flags-in-the-output-binary – xhamr

+0

Cela ne marche pas t fonctionnent de la même manière que la détection ASAN. –

Répondre

0

Je suggère le fichier que vous cela comme un bug à Asan github (ou GCC bugzilla) à ce sujet (nous avons déjà défini pour Asan et Tsan il est donc logique de faire cuire un pour UBSan aussi). Pour l'instant, il semble que votre seule option est de passer une définition personnalisée avec -fsanitize-undefined dans un Makefile.