[PATCH] D137227: [asan] Default to -fsanitize-address-use-odr-indicator for non-Windows
Fangrui Song via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Fri Nov 4 13:02:04 PDT 2022
MaskRay added a comment.
In D137227#3909056 <https://reviews.llvm.org/D137227#3909056>, @sbc100 wrote:
>> The asan instrumentation just prepends `__odr_asan_gen_` to the symbol name to form a new symbol name. For ELF every byte except `\0` can be used in a symbol name, and this is totally fine.
>>
>> I am unfamiliar with WebAssembly. Does the aforementioned parsing tool somehow skip printing `_stdcmd<1068>::init` symbols?
>
> The parser was confused by the presence of a colon in the symbol names and generating an error. I created a patch that makes it a little more robust: https://github.com/emscripten-core/emscripten/pull/18152
>
> So we have a fix for the proximate issue, but I just wanted to check if that new prepended symbol name was supposed to be the demanded C++ name (which it seem to be) rather than the mangled name?
I think so. The instrumentation is done at LLVM layer, not Clang layer. The LLVM layer code generally shouldn't know the different mangling schemes used by different language frontends.
For C++, we can get a mangled variable name with something like
template <typename T>
inline int var = 3;
int *x = &var<int>;
`_Z3varIiE`
My understanding is that all such symbols are in a COMDAT and have a linkonce_odr/weak_odr linkage: these symbols are skipped by `ModuleAddressSanitizer::shouldInstrumentGlobal`, so one will not see `__odr_asan_gen__Z3varIiE`.
I do not know what the WebAssembly world does but if you can provide detail instructions for reproduce I am happy to take a look if needed.
> This is the first time we've had these characters appearing in symbol names so I just wanted to flag that as relatively unprecedented (at least in terms of all the codebases that emscripten has been exposed to so far).
>
>> `ModuleAddressSanitizer::shouldInstrumentGlobal` encodes the candidate global variables.
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D137227/new/
https://reviews.llvm.org/D137227
More information about the llvm-commits
mailing list