1 # clang sanitizer special case list
2 # syntax specified in https://clang.llvm.org/docs/SanitizerSpecialCaseList.html
3 # for more info see https://clang.llvm.org/docs/AddressSanitizer.html
6 # Tor notes: This file is obsolete!
8 # It was necessary in order to apply the sanitizers to all of tor. But
9 # we don't believe that's a good idea: some parts of tor need constant-time
10 # behavior that is hard to guarantee with these sanitizers.
12 # If you need this behavior, then please consider --enable-expensive-hardening,
13 # and report bugs as needed.
17 # 1. configure tor build:
20 # CFLAGS="-fsanitize-blacklist=contrib/clang/sanitize_blacklist.txt -fsanitize=undefined -fsanitize=address -fno-sanitize-recover=all -fno-omit-frame-pointer -fno-optimize-sibling-calls -fno-inline" \
21 # LDFLAGS="-fsanitize=address" \
22 # --disable-gcc-hardening
23 # and any other flags required to build tor on your OS.
29 # ASAN_OPTIONS=allow_user_segv_handler=1 make test
30 # ASAN_OPTIONS=allow_user_segv_handler=1 make check
31 # make test-network # requires chutney
33 # 4. the tor binary is now instrumented with clang sanitizers,
34 # and can be run just like a standard tor binary
37 # This blacklist has been tested with clang 3.7's UndefinedBehaviorSanitizer
38 # and AddressSanitizer on OS X 10.10 Yosemite, with all tests passing
39 # on both x86_64 and i386 (using CC="clang -arch i386")
40 # It has not been tested with ThreadSanitizer or MemorySanitizer
41 # Success report and patches for other sanitizers or OSs are welcome
43 # ccache and make don't account for the sanitizer blacklist as a dependency
44 # you might need to set CCACHE_DISABLE=1 and/or use make clean to workaround
46 # Configuration Flags:
47 # -fno-sanitize-recover=all
48 # causes clang to crash on undefined behavior, rather than printing
49 # a warning and continuing (the AddressSanitizer always crashes)
50 # -fno-omit-frame-pointer -fno-optimize-sibling-calls -fno-inline
51 # make clang backtraces easier to read
52 # --disable-gcc-hardening
53 # disables warnings about the redefinition of _FORTIFY_SOURCE
54 # (it conflicts with the sanitizers)
56 # Turning the sanitizers off for particular functions:
57 # (Unfortunately, exempting functions doesn't work for the blacklisted
58 # functions below, and we can't turn the code off because it's essential)
60 # #if defined(__has_feature)
61 # #if __has_feature(address_sanitizer)
62 # /* tell clang AddressSanitizer not to instrument this function */
63 # #define NOASAN __attribute__((no_sanitize_address))
64 # #define _CLANG_ASAN_
72 # /* Telling AddressSanitizer to not instrument a function */
73 # void func(void) NOASAN;
75 # /* Including or excluding sections of code */
77 # /* code that only runs under address sanitizer */
79 # /* code that doesn't run under address sanitizer */
84 # test-memwipe.c checks if a freed buffer was properly wiped
88 # we need to allow the tor bt handler to catch SIGSEGV
89 # otherwise address sanitizer munges the expected output and the test fails
90 # we can do this by setting an environmental variable
91 # See https://code.google.com/p/address-sanitizer/wiki/Flags
92 # ASAN_OPTIONS=allow_user_segv_handler=1
94 # test_bt_cl.c stores to a NULL pointer to trigger a crash
97 # curve25519-donna.c left-shifts 1 bits into and past the sign bit of signed
98 # integers. Until #13538 is resolved, we exempt functions that do left shifts.
99 # Note that x86_64 uses curve25519-donna-c64.c instead of curve25519-donna.c
100 fun:freduce_coefficients