The clang flag -fsanitize-address-outline-instrumentation should not only pass
-asan-instrumentation-with-call-threshold=0 to the sanitizer, but should also
pass -asan-max-inline-poisoning-size=0. Both flags' cutoff values need to be set
to zero to suppress inlining in favor of making calls into compiler-rt.
Details
Details
Diff Detail
Diff Detail
- Repository
- rG LLVM Github Monorepo
Event Timeline
clang/lib/Driver/SanitizerArgs.cpp | ||
---|---|---|
1256 | CC @kstoimenov it's maybe not the best name for flag, but the point of AsanOutlineInstrumentation was to reduce binary size. for -asan-instrumentation-with-call-threshold=0 sizeof(check+asan_report) > sizeof(outlined_check_report), so it helps with size Out internal setup expects the current size saving behavior of this flag. So to move forward we can do the following instead:
| |
1260 | For changes like this we need to update llvm-project/clang/test/Driver/fsanitize.c |
CC @kstoimenov
it's maybe not the best name for flag, but the point of AsanOutlineInstrumentation was to reduce binary size.
for -asan-instrumentation-with-call-threshold=0 sizeof(check+asan_report) > sizeof(outlined_check_report), so it helps with size
for -asan-max-inline-poisoning-size=0: usually sizeof(small store/load) < sizeof(poisoning_callbac). It usually increases the size.
Out internal setup expects the current size saving behavior of this flag.
So to move forward we can do the following instead: