[all-commits] [llvm/llvm-project] 00be35: [asan] Keep Itanium mangled names in global metadata
Fangrui Song via All-commits
all-commits at lists.llvm.org
Fri Nov 18 17:06:39 PST 2022
Branch: refs/heads/main
Home: https://github.com/llvm/llvm-project
Commit: 00be3578e0841dd9abe408e5b4946180de0bf46b
https://github.com/llvm/llvm-project/commit/00be3578e0841dd9abe408e5b4946180de0bf46b
Author: Fangrui Song <i at maskray.me>
Date: 2022-11-19 (Sat, 19 Nov 2022)
Changed paths:
M compiler-rt/lib/asan/asan_globals.cpp
M compiler-rt/lib/sanitizer_common/sanitizer_symbolizer_posix_libcdep.cpp
M compiler-rt/test/asan/TestCases/Linux/odr_indicators.cpp
M llvm/lib/Transforms/Instrumentation/AddressSanitizer.cpp
M llvm/test/Instrumentation/AddressSanitizer/local_alias.ll
Log Message:
-----------
[asan] Keep Itanium mangled names in global metadata
The runtime calls `MaybeDemangleGlobalName` for error reporting and
`__cxxabiv1::__cxa_demangle` is called if available, so demanging Itanium
mangled names in global metadata is unnecessary and wastes data size.
Add `MaybeDemangleGlobalName` in ODR violation detection to support demangled
names in a suppressions file. `MaybeDemangleGlobalName` may call
`DemangleCXXABI` and leak memory. Use an internal allocation to prevent lsan
leak (in case there is no fatal asan error).
The debug feature `report_globals=2` prints information for all instrumented
global variables. `MaybeDemangleGlobalName` would be slow, so don't do that.
The output looks like `Added Global[0x56448f092d60]: beg=0x56448fa66d60 size=4/32 name=_ZL13test_global_2`
and I think the mangled name is fine.
Other mangled schemes e.g. Windows (see win-string-literal.ll) remain the
current behavior.
Reviewed By: hctim
Differential Revision: https://reviews.llvm.org/D138095
More information about the All-commits
mailing list