Home | History | Annotate | Line # | Download | only in sanitizer_common
      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 
     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