1 //===-- sanitizer_dl.cpp --------------------------------------------------===//
2 //
3 // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4 // See https://llvm.org/LICENSE.txt for license information.
5 // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6 //
7 //===----------------------------------------------------------------------===//
8 //
9 // This file has helper functions that depend on libc's dynamic loading
10 // introspection.
11 //
12 //===----------------------------------------------------------------------===//
13 
14 #include "sanitizer_dl.h"
15 
16 #include "sanitizer_common/sanitizer_platform.h"
17 
18 #if SANITIZER_GLIBC
19 #  include <dlfcn.h>
20 #endif
21 
22 namespace __sanitizer {
23 extern const char *SanitizerToolName;
24 
DladdrSelfFName(void)25 const char *DladdrSelfFName(void) {
26 #if SANITIZER_GLIBC
27   Dl_info info;
28   int ret = dladdr((void *)&SanitizerToolName, &info);
29   if (ret) {
30     return info.dli_fname;
31   }
32 #endif
33 
34   return nullptr;
35 }
36 
37 }  // namespace __sanitizer
38