xref: /freebsd/contrib/llvm-project/compiler-rt/lib/scudo/standalone/common.cpp (revision 643ac419fafba89f5adda0e0ea75b538727453fb)
1 //===-- common.cpp ----------------------------------------------*- C++ -*-===//
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 #include "common.h"
10 #include "atomic_helpers.h"
11 #include "string_utils.h"
12 
13 namespace scudo {
14 
15 uptr PageSizeCached;
16 uptr getPageSize();
17 
18 uptr getPageSizeSlow() {
19   PageSizeCached = getPageSize();
20   CHECK_NE(PageSizeCached, 0);
21   return PageSizeCached;
22 }
23 
24 // Fatal internal map() or unmap() error (potentially OOM related).
25 void NORETURN dieOnMapUnmapError(uptr SizeIfOOM) {
26   char Error[128] = "Scudo ERROR: internal map or unmap failure\n";
27   if (SizeIfOOM) {
28     formatString(
29         Error, sizeof(Error),
30         "Scudo ERROR: internal map failure (NO MEMORY) requesting %zuKB\n",
31         SizeIfOOM >> 10);
32   }
33   outputRaw(Error);
34   setAbortMessage(Error);
35   die();
36 }
37 
38 } // namespace scudo
39