diff options
author | Francis Ricci <francisjricci@gmail.com> | 2017-09-25 20:48:51 +0000 |
---|---|---|
committer | Francis Ricci <francisjricci@gmail.com> | 2017-09-25 20:48:51 +0000 |
commit | 2c712e9928756c94d307e61bd0b486b473fd81af (patch) | |
tree | d12cfa2c23cd15592555933e2c91ffee0795ab8f /lib | |
parent | 9230e83455810a9967796d00ac39cfe8d22bb8ef (diff) |
[sanitizer_common] Don't provide sanitizer_procmaps API functions where not defined
Summary:
Platforms that don't implement procmaps (primarily fuchsia and windows) still expose
the procmaps API when including sanitizer_procmaps.h, despite not implementing the functions
provided by that header. Ensure that the API is only exposed on platforms that implement it.
Reviewers: vitalybuka, alekseyshl, kubamracek
Subscribers: llvm-commits, krytarowski
Differential Revision: https://reviews.llvm.org/D38187
git-svn-id: https://llvm.org/svn/llvm-project/compiler-rt/trunk@314149 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib')
-rw-r--r-- | lib/sanitizer_common/sanitizer_common.h | 8 | ||||
-rw-r--r-- | lib/sanitizer_common/sanitizer_fuchsia.cc | 1 | ||||
-rw-r--r-- | lib/sanitizer_common/sanitizer_fuchsia.h | 4 | ||||
-rw-r--r-- | lib/sanitizer_common/sanitizer_procmaps.h | 15 | ||||
-rw-r--r-- | lib/sanitizer_common/sanitizer_win.cc | 1 | ||||
-rw-r--r-- | lib/sanitizer_common/sanitizer_win.h | 1 |
6 files changed, 11 insertions, 19 deletions
diff --git a/lib/sanitizer_common/sanitizer_common.h b/lib/sanitizer_common/sanitizer_common.h index a65f732eb..47b02b149 100644 --- a/lib/sanitizer_common/sanitizer_common.h +++ b/lib/sanitizer_common/sanitizer_common.h @@ -128,6 +128,14 @@ void CheckVMASize(); void RunMallocHooks(const void *ptr, uptr size); void RunFreeHooks(const void *ptr); +typedef void (*fill_profile_f)(uptr start, uptr rss, bool file, + /*out*/uptr *stats, uptr stats_size); + +// Parse the contents of /proc/self/smaps and generate a memory profile. +// |cb| is a tool-specific callback that fills the |stats| array containing +// |stats_size| elements. +void GetMemoryProfile(fill_profile_f cb, uptr *stats, uptr stats_size); + // InternalScopedBuffer can be used instead of large stack arrays to // keep frame size low. // FIXME: use InternalAlloc instead of MmapOrDie once diff --git a/lib/sanitizer_common/sanitizer_fuchsia.cc b/lib/sanitizer_common/sanitizer_fuchsia.cc index 708f7f0c5..21fabddb1 100644 --- a/lib/sanitizer_common/sanitizer_fuchsia.cc +++ b/lib/sanitizer_common/sanitizer_fuchsia.cc @@ -18,7 +18,6 @@ #include "sanitizer_common.h" #include "sanitizer_libc.h" #include "sanitizer_mutex.h" -#include "sanitizer_procmaps.h" #include "sanitizer_stacktrace.h" #include <limits.h> diff --git a/lib/sanitizer_common/sanitizer_fuchsia.h b/lib/sanitizer_common/sanitizer_fuchsia.h index 48d7154f3..18821b4fd 100644 --- a/lib/sanitizer_common/sanitizer_fuchsia.h +++ b/lib/sanitizer_common/sanitizer_fuchsia.h @@ -25,10 +25,6 @@ namespace __sanitizer { extern uptr MainThreadStackBase, MainThreadStackSize; extern sanitizer_shadow_bounds_t ShadowBounds; -// TODO(fjricci) Remove this struct by refactoring common functions -// out of sanitizer_procmaps.h -struct MemoryMappingLayoutData {}; - } // namespace __sanitizer #endif // SANITIZER_FUCHSIA diff --git a/lib/sanitizer_common/sanitizer_procmaps.h b/lib/sanitizer_common/sanitizer_procmaps.h index 395688c3e..ecd1ad4c8 100644 --- a/lib/sanitizer_common/sanitizer_procmaps.h +++ b/lib/sanitizer_common/sanitizer_procmaps.h @@ -14,13 +14,13 @@ #ifndef SANITIZER_PROCMAPS_H #define SANITIZER_PROCMAPS_H +#if SANITIZER_LINUX || SANITIZER_FREEBSD || SANITIZER_NETBSD || SANITIZER_MAC + #include "sanitizer_common.h" #include "sanitizer_internal_defs.h" -#include "sanitizer_fuchsia.h" #include "sanitizer_linux.h" #include "sanitizer_mac.h" #include "sanitizer_mutex.h" -#include "sanitizer_win.h" namespace __sanitizer { @@ -79,19 +79,9 @@ class MemoryMappingLayout { private: void LoadFromCache(); - // FIXME: Hide implementation details for different platforms in - // platform-specific files. MemoryMappingLayoutData data_; }; -typedef void (*fill_profile_f)(uptr start, uptr rss, bool file, - /*out*/uptr *stats, uptr stats_size); - -// Parse the contents of /proc/self/smaps and generate a memory profile. -// |cb| is a tool-specific callback that fills the |stats| array containing -// |stats_size| elements. -void GetMemoryProfile(fill_profile_f cb, uptr *stats, uptr stats_size); - // Returns code range for the specified module. bool GetCodeRangeForFile(const char *module, uptr *start, uptr *end); @@ -102,4 +92,5 @@ uptr ParseHex(const char **p); } // namespace __sanitizer +#endif // SANITIZER_LINUX || SANITIZER_FREEBSD || SANITIZER_NETBSD || SANITIZER_MAC #endif // SANITIZER_PROCMAPS_H diff --git a/lib/sanitizer_common/sanitizer_win.cc b/lib/sanitizer_common/sanitizer_win.cc index 4d68f5610..a144db28c 100644 --- a/lib/sanitizer_common/sanitizer_win.cc +++ b/lib/sanitizer_common/sanitizer_win.cc @@ -28,7 +28,6 @@ #include "sanitizer_libc.h" #include "sanitizer_mutex.h" #include "sanitizer_placement_new.h" -#include "sanitizer_procmaps.h" #include "sanitizer_stacktrace.h" #include "sanitizer_symbolizer.h" #include "sanitizer_win_defs.h" diff --git a/lib/sanitizer_common/sanitizer_win.h b/lib/sanitizer_common/sanitizer_win.h index 515792054..23e01ab75 100644 --- a/lib/sanitizer_common/sanitizer_win.h +++ b/lib/sanitizer_common/sanitizer_win.h @@ -20,7 +20,6 @@ namespace __sanitizer { // Check based on flags if we should handle the exception. bool IsHandledDeadlyException(DWORD exceptionCode); -struct MemoryMappingLayoutData {}; } // namespace __sanitizer #endif // SANITIZER_WINDOWS |