xref: /openbsd-src/gnu/llvm/compiler-rt/lib/scudo/standalone/common.cpp (revision 810390e339a5425391477d5d41c78d7cab2424ac)
13cab2bb3Spatrick //===-- common.cpp ----------------------------------------------*- C++ -*-===//
23cab2bb3Spatrick //
33cab2bb3Spatrick // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
43cab2bb3Spatrick // See https://llvm.org/LICENSE.txt for license information.
53cab2bb3Spatrick // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
63cab2bb3Spatrick //
73cab2bb3Spatrick //===----------------------------------------------------------------------===//
83cab2bb3Spatrick 
93cab2bb3Spatrick #include "common.h"
103cab2bb3Spatrick #include "atomic_helpers.h"
11d89ec533Spatrick #include "string_utils.h"
123cab2bb3Spatrick 
133cab2bb3Spatrick namespace scudo {
143cab2bb3Spatrick 
153cab2bb3Spatrick uptr PageSizeCached;
163cab2bb3Spatrick uptr getPageSize();
173cab2bb3Spatrick 
getPageSizeSlow()183cab2bb3Spatrick uptr getPageSizeSlow() {
193cab2bb3Spatrick   PageSizeCached = getPageSize();
203cab2bb3Spatrick   CHECK_NE(PageSizeCached, 0);
213cab2bb3Spatrick   return PageSizeCached;
223cab2bb3Spatrick }
233cab2bb3Spatrick 
243cab2bb3Spatrick // Fatal internal map() or unmap() error (potentially OOM related).
dieOnMapUnmapError(uptr SizeIfOOM)25d89ec533Spatrick void NORETURN dieOnMapUnmapError(uptr SizeIfOOM) {
26d89ec533Spatrick   char Error[128] = "Scudo ERROR: internal map or unmap failure\n";
27d89ec533Spatrick   if (SizeIfOOM) {
28d89ec533Spatrick     formatString(
29d89ec533Spatrick         Error, sizeof(Error),
30d89ec533Spatrick         "Scudo ERROR: internal map failure (NO MEMORY) requesting %zuKB\n",
31d89ec533Spatrick         SizeIfOOM >> 10);
32d89ec533Spatrick   }
33d89ec533Spatrick   outputRaw(Error);
34d89ec533Spatrick   setAbortMessage(Error);
353cab2bb3Spatrick   die();
363cab2bb3Spatrick }
373cab2bb3Spatrick 
38*810390e3Srobert #if !SCUDO_LINUX
GetRSS()39*810390e3Srobert uptr GetRSS() { return 0; }
40*810390e3Srobert #endif
41*810390e3Srobert 
423cab2bb3Spatrick } // namespace scudo
43