1 //===-- sanitizer_symbolizer_libcdep.cc -----------------------------------===//
3 // This file is distributed under the University of Illinois Open Source
4 // License. See LICENSE.TXT for details.
6 //===----------------------------------------------------------------------===//
8 // This file is shared between AddressSanitizer and ThreadSanitizer
10 //===----------------------------------------------------------------------===//
12 #include "sanitizer_internal_defs.h"
13 #include "sanitizer_symbolizer.h"
15 namespace __sanitizer
{
17 Symbolizer
*Symbolizer::CreateAndStore(const char *path_to_external
) {
18 Symbolizer
*platform_symbolizer
= PlatformInit(path_to_external
);
19 if (!platform_symbolizer
)
21 symbolizer_
= platform_symbolizer
;
22 return platform_symbolizer
;
25 Symbolizer
*Symbolizer::Init(const char *path_to_external
) {
26 CHECK_EQ(0, symbolizer_
);
27 return CreateAndStore(path_to_external
);
30 Symbolizer
*Symbolizer::GetOrInit() {
31 SpinMutexLock
l(&init_mu_
);
33 return CreateAndStore(0);
37 } // namespace __sanitizer