MaskRay added a comment.

In D137227#3908994 <https://reviews.llvm.org/D137227#3908994>, @sbc100 wrote:

> At least for WebAssembly object files, it looks like the symbol table now 
> contains (what look like) demangled symbols.  e.g.:
>
>   $ llvm-nm /tmp/emscripten_temp/command_0.o 
>   00003ef5 D __odr_asan_gen__numargs
>   000041a6 D __odr_asan_gen__stdcmd<1068>::init
>   000041c3 D __odr_asan_gen__stdcmd<1069>::init
>   000041e0 D __odr_asan_gen__stdcmd<1070>::init
>   000041fd D __odr_asan_gen__stdcmd<1071>::init
>   0000421a D __odr_asan_gen__stdcmd<1073>::init
>   0000423f D __odr_asan_gen__stdcmd<1074>::init
>   0000425c D __odr_asan_gen__stdcmd<1075>::init
>   00004279 D __odr_asan_gen__stdcmd<1076>::init
>   0000429e D __odr_asan_gen__stdcmd<1077>::init
>   000042bc D __odr_asan_gen__stdcmd<1078>::init
>
> Symbol names with colon in them currently cause issues with the emscripten 
> compiler (when parsing the output of `llvm-nm`).   If this is intensional we 
> can look into re-working the parser, but I just wanted to check if this was 
> indented behaviour?    Are these character allows in symbol names?

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?



================
Comment at: llvm/lib/Transforms/Instrumentation/AddressSanitizer.cpp:777
         // Enable aliases as they should have no downside with ODR indicators.
-        UsePrivateAlias(UseOdrIndicator || ClUsePrivateAlias),
-        UseOdrIndicator(UseOdrIndicator || ClUseOdrIndicator),
+        UsePrivateAlias(UseOdrIndicator && ClUsePrivateAlias),
+        UseOdrIndicator(UseOdrIndicator && ClUseOdrIndicator),
----------------
vitalybuka wrote:
> It should be 
> ```
> UseOdrIndicator(ClUseOdrIndicator.getNumOccurrences() > 0 ? ClUseOdrIndicator 
> : UseOdrIndicator),
> ClUsePrivateAlias(ClUsePrivateAlias.getNumOccurrences() > 0 ? 
> ClUsePrivateAlias : UseOdrIndicator),
> ```
> 
> My rule of thumb is Cl flags, which are mostly for testing, must be direct 
> and do exactly what was asked, even if it's not useful, and they should 
> override fronted parameters.
> 
Good catch. I agree with this analysis.


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D137227/new/

https://reviews.llvm.org/D137227

_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to