forked from OSchip/llvm-project
Reuse interception_linux for NetBSD
Summary: Part of the code inspired by the original work on libsanitizer in GCC 5.4 by Christos Zoulas. Sponsored by <The NetBSD Foundation> Reviewers: joerg, kcc, vitalybuka, filcab Reviewed By: vitalybuka Subscribers: llvm-commits, #sanitizers Tags: #sanitizers Differential Revision: https://reviews.llvm.org/D36321 llvm-svn: 310351
This commit is contained in:
parent
71dfb3eb07
commit
70a3511bd5
|
@ -12,14 +12,22 @@
|
|||
// Linux-specific interception methods.
|
||||
//===----------------------------------------------------------------------===//
|
||||
|
||||
#if defined(__linux__) || defined(__FreeBSD__)
|
||||
#if defined(__linux__) || defined(__FreeBSD__) || defined(__NetBSD__)
|
||||
#include "interception.h"
|
||||
|
||||
#include <dlfcn.h> // for dlsym() and dlvsym()
|
||||
|
||||
#ifdef __NetBSD__
|
||||
#include "sanitizer_common/sanitizer_libc.h"
|
||||
#endif
|
||||
|
||||
namespace __interception {
|
||||
bool GetRealFunctionAddress(const char *func_name, uptr *func_addr,
|
||||
uptr real, uptr wrapper) {
|
||||
#ifdef __NetBSD__
|
||||
// XXX: Find a better way to handle renames
|
||||
if (internal_strcmp(func_name, "sigaction") == 0) func_name = "__sigaction14";
|
||||
#endif
|
||||
*func_addr = (uptr)dlsym(RTLD_NEXT, func_name);
|
||||
return real == wrapper;
|
||||
}
|
||||
|
@ -32,5 +40,4 @@ void *GetFuncAddrVer(const char *func_name, const char *ver) {
|
|||
|
||||
} // namespace __interception
|
||||
|
||||
|
||||
#endif // __linux__ || __FreeBSD__
|
||||
#endif // __linux__ || __FreeBSD__ || __NetBSD__
|
||||
|
|
|
@ -12,7 +12,7 @@
|
|||
// Linux-specific interception methods.
|
||||
//===----------------------------------------------------------------------===//
|
||||
|
||||
#if defined(__linux__) || defined(__FreeBSD__)
|
||||
#if defined(__linux__) || defined(__FreeBSD__) || defined(__NetBSD__)
|
||||
|
||||
#if !defined(INCLUDED_FROM_INTERCEPTION_LIB)
|
||||
# error "interception_linux.h should be included from interception library only"
|
||||
|
@ -44,4 +44,4 @@ void *GetFuncAddrVer(const char *func_name, const char *ver);
|
|||
#endif // !defined(__ANDROID__)
|
||||
|
||||
#endif // INTERCEPTION_LINUX_H
|
||||
#endif // __linux__ || __FreeBSD__
|
||||
#endif // __linux__ || __FreeBSD__ || __NetBSD__
|
||||
|
|
Loading…
Reference in New Issue