diff options
Diffstat (limited to 'lib/dfsan/dfsan.h')
-rw-r--r-- | lib/dfsan/dfsan.h | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/lib/dfsan/dfsan.h b/lib/dfsan/dfsan.h index 693e0c5efe04f..bc38be08c9cd8 100644 --- a/lib/dfsan/dfsan.h +++ b/lib/dfsan/dfsan.h @@ -28,6 +28,7 @@ struct dfsan_label_info { }; extern "C" { +void dfsan_add_label(dfsan_label label, void *addr, uptr size); void dfsan_set_label(dfsan_label label, void *addr, uptr size); dfsan_label dfsan_read_label(const void *addr, uptr size); dfsan_label dfsan_union(dfsan_label l1, dfsan_label l2); @@ -43,7 +44,11 @@ namespace __dfsan { void InitializeInterceptors(); inline dfsan_label *shadow_for(void *ptr) { +#if defined(__x86_64__) return (dfsan_label *) ((((uptr) ptr) & ~0x700000000000) << 1); +#elif defined(__mips64) + return (dfsan_label *) ((((uptr) ptr) & ~0xF000000000) << 1); +#endif } inline const dfsan_label *shadow_for(const void *ptr) { @@ -55,6 +60,13 @@ struct Flags { bool warn_unimplemented; // Whether to warn on non-zero labels. bool warn_nonzero_labels; + // Whether to propagate labels only when there is an obvious data dependency + // (e.g., when comparing strings, ignore the fact that the output of the + // comparison might be data-dependent on the content of the strings). This + // applies only to the custom functions defined in 'custom.c'. + bool strict_data_dependencies; + // The path of the file where to dump the labels when the program terminates. + const char* dump_labels_at_exit; }; extern Flags flags_data; |