From 99db65630c8595d248467bf3311596034c168556 Mon Sep 17 00:00:00 2001 From: Leonard Chan Date: Wed, 29 Mar 2023 17:08:22 +0000 Subject: [PATCH] [compiler-rt] Move __sanitizer_mallinfo to separate header mallinfo is platform-specific and not specified by either posix or the C standard, but the hwasan interface unconditionally exposes __sanitizer_mallinfo which returns a struct __sanitizer_struct_mallinfo which is defined in sanitizer_platform_limits_posix.h, so this should also be available for fuchsia to provide __sanitizer_mallinfo. Fuchsia doesn't need the rest of what's in sanitizer_platform_limits_posix.h so we can just move it to its own header. Exposing this and not forcing it to hide behind SANITIZER_INTERCEPT_MALLOPT_AND_MALLINFO fixes the test failures found after landing D145718. Differential Revision: https://reviews.llvm.org/D147092 --- .../lib/sanitizer_common/sanitizer_mallinfo.h | 34 ++++++++++++++++++++++ .../sanitizer_platform_limits_posix.h | 11 +------ 2 files changed, 35 insertions(+), 10 deletions(-) create mode 100644 compiler-rt/lib/sanitizer_common/sanitizer_mallinfo.h diff --git a/compiler-rt/lib/sanitizer_common/sanitizer_mallinfo.h b/compiler-rt/lib/sanitizer_common/sanitizer_mallinfo.h new file mode 100644 index 0000000..3548378 --- /dev/null +++ b/compiler-rt/lib/sanitizer_common/sanitizer_mallinfo.h @@ -0,0 +1,34 @@ +//===-- sanitizer_mallinfo.h ----------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// +// +// This file is a part of Sanitizer common code. +// +// Definition for mallinfo on different platforms. +//===----------------------------------------------------------------------===// + +#ifndef SANITIZER_MALLINFO_H +#define SANITIZER_MALLINFO_H + +#include "sanitizer_internal_defs.h" +#include "sanitizer_platform.h" + +#if SANITIZER_ANDROID + +struct __sanitizer_struct_mallinfo { + uptr v[10]; +}; + +#elif SANITIZER_LINUX || SANITIZER_APPLE || SANITIZER_FUCHSIA + +struct __sanitizer_struct_mallinfo { + int v[10]; +}; + +#endif + +#endif // SANITIZER_MALLINFO_H diff --git a/compiler-rt/lib/sanitizer_common/sanitizer_platform_limits_posix.h b/compiler-rt/lib/sanitizer_common/sanitizer_platform_limits_posix.h index 66ee57b..cfca7bd 100644 --- a/compiler-rt/lib/sanitizer_common/sanitizer_platform_limits_posix.h +++ b/compiler-rt/lib/sanitizer_common/sanitizer_platform_limits_posix.h @@ -18,6 +18,7 @@ #include "sanitizer_internal_defs.h" #include "sanitizer_platform.h" +#include "sanitizer_mallinfo.h" #if SANITIZER_APPLE #include @@ -204,17 +205,7 @@ struct __sanitizer_sem_t { }; #endif // SANITIZER_LINUX -#if SANITIZER_ANDROID -struct __sanitizer_struct_mallinfo { - uptr v[10]; -}; -#endif - #if SANITIZER_LINUX && !SANITIZER_ANDROID -struct __sanitizer_struct_mallinfo { - int v[10]; -}; - extern unsigned struct_ustat_sz; extern unsigned struct_rlimit64_sz; extern unsigned struct_statvfs64_sz; -- 2.7.4