[PATCH] D78179: [Darwin] Fix symbolization for recent simulator runtimes.
Dan Liew via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Wed Apr 15 12:03:42 PDT 2020
delcypher marked an inline comment as done.
delcypher added inline comments.
================
Comment at: compiler-rt/lib/sanitizer_common/sanitizer_symbolizer_mac.cpp:53
}
+static const char kAtosEnvVar[] = "__check_mach_ports_lookup";
----------------
kubamracek wrote:
> Can you sink this into the class please?
If I try to sink this into the class then this doesn't compile.
```
/Volumes/data/dev/llvm/monorepo_upstream/master/llvm/compiler-rt/lib/sanitizer_common/sanitizer_symbolizer_mac.cpp:152:21: error: in-class initializer for static data member of type 'const char [26]' requires 'constexpr' specifier
static const char kAtosEnvVar[] = "__check_mach_ports_lookup";
^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~
constexpr
```
If I make it constexpr then we'll get linking error because we need the memory to exist at runtime.
```
Undefined symbols for architecture i386:
"__sanitizer::AtosSymbolizerProcess::kAtosEnvVar", referenced from:
__sanitizer::AtosSymbolizer::AtosSymbolizer(char const*, __sanitizer::LowLevelAllocator*) in sanitizer_symbolizer_mac.cpp.o
__sanitizer::AtosSymbolizer::AtosSymbolizer(char const*, __sanitizer::LowLevelAllocator*) in sanitizer_symbolizer_mac.cpp.o
__sanitizer::AtosSymbolizerProcess::StartSymbolizerSubprocess() in sanitizer_symbolizer_mac.cpp.o
```
To fix this I'd have initialize the static data member outside the class which means I'd have to do...
```
// In class
static const char kAtosEnvVar[26];
// Outside of class
const char AtosSymbolizerProcess::kAtosEnvVar[] = "__check_mach_ports_lookup";
```
This seems clumsy to me because I have to hardcode the `26` size.
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D78179/new/
https://reviews.llvm.org/D78179
More information about the llvm-commits
mailing list