/fsanitize-coverage
(Configurer la couverture de l’assainissement)
Les /fsanitize-coverage
options du compilateur indiquent au compilateur d’ajouter différents types de points d’instrumentation où les fonctions définies par l’utilisateur sont appelées. Ces options sont utiles pour les scénarios de fuzzing qui utilisent /fsanitize=fuzzer
, comme OneFuzz. Pour plus d’informations, consultez la documentation OneFuzz et le projet GitHub OneFuzz.
Syntaxe
/fsanitize-coverage=edge
/fsanitize-coverage=inline-8bit-counters
/fsanitize-coverage=trace-cmp
/fsanitize-coverage=trace-div
/fno-sanitize-coverage=edge
/fno-sanitize-coverage=inline-8bit-counters
/fno-sanitize-coverage=trace-cmp
/fno-sanitize-coverage=trace-div
Notes
Les options de compilateur expérimentales /fsanitize-coverage
offrent une prise en charge de la couverture du code et différentes options pour modifier l’instrumentation fournie par le compilateur générée. Toutes ces options sont automatiquement définies lorsque l’option /fsanitize=fuzzer
est spécifiée. L’option /fsanitize=fuzzer
nécessite les mêmes points d’instrumentation et rappels mentionnés dans ces options.
Les /fsanitize-coverage
options n’autorisent pas la syntaxe séparée par des virgules, par exemple : /fsanitize-coverage=edge,inline-8bit-counters,trace-cmp,trace-div
. Spécifiez ces options individuellement.
Les /fsanitize-coverage
options sont disponibles à partir de Visual Studio 2022 version 17.0.
Couverture du code
L’option /fsanitize-coverage=edge
du compilateur active l’instrumentation de couverture du code le long de tous les bords non redondants. Permet /fno-sanitize-coverage=edge
de désactiver cette option si elle est déjà fournie ou implicite par une autre option.
Compteurs inline
L’option /fsanitize-coverage=inline-8bit-counters
du compilateur indique au compilateur d’ajouter un incrément de compteur inline sur chaque arête appropriée. Cette option ajoute également un appel à extern "C" void __sanitizer_cov_8bit_counters_init(uint8_t *start, uint8_t *stop)
ce que vous devez implémenter. Les arguments correspondent au début et à la fin d’un tableau qui contient tous les compteurs 8 bits créés. Permet /fno-sanitize-coverage=inline-8bit-counters
de désactiver cette option si elle est déjà fournie ou implicite par une autre option.
Comparaisons de traces
L’option /fsanitize-coverage=trace-cmp
du compilateur indique au compilateur d’insérer des appels aux fonctions suivantes :
// Before each comparison instruction of the stated size.
void __sanitizer_cov_trace_cmp1(uint8_t Arg1, uint8_t Arg2);
void __sanitizer_cov_trace_cmp2(uint16_t Arg1, uint16_t Arg2);
void __sanitizer_cov_trace_cmp4(uint32_t Arg1, uint32_t Arg2);
void __sanitizer_cov_trace_cmp8(uint64_t Arg1, uint64_t Arg2);
// Before each comparison instruction of the stated size, if one of the operands (Arg1) is constant.
void __sanitizer_cov_trace_const_cmp1(uint8_t Arg1, uint8_t Arg2);
void __sanitizer_cov_trace_const_cmp2(uint16_t Arg1, uint16_t Arg2);
void __sanitizer_cov_trace_const_cmp4(uint32_t Arg1, uint32_t Arg2);
void __sanitizer_cov_trace_const_cmp8(uint64_t Arg1, uint64_t Arg2);
Permet /fno-sanitize-coverage=trace-cmp
de désactiver cette option si elle est déjà fournie ou implicite par une autre option.
Divisions de trace
L’option /fsanitize-coverage=trace-div
du compilateur indique au compilateur d’insérer des appels aux fonctions suivantes :
// Before a division instruction of the stated size.
void __sanitizer_cov_trace_div4(uint32_t Val);
void __sanitizer_cov_trace_div8(uint64_t Val);
Permet /fno-sanitize-coverage=trace-div
de désactiver cette option si elle est déjà fournie ou implicite par une autre option.
Pour définir les options avancées du compilateur
Ouvrez la boîte de dialogue Pages de propriétés de votre projet.
Sélectionnez la page de propriétés Propriétés de configuration>C/C++>Ligne de commande.
Modifiez la propriété Options supplémentaires pour définir les options de couverture /fsanitize.
Choisissez OK ou Appliquer pour enregistrer vos modifications.
Voir aussi
Options du compilateur MSVC
Syntaxe de ligne de commande du compilateur MSVC
/fsanitize
(Activer les assainisseurs)
Référence de build et de langage AddressSanitizer