blob: 666f95400c7e7aab9b2a64957d2c61d38149a87d [file] [log] [blame]
Dynamic Tools Team517193e2019-09-11 14:48:41 +00001//===-- 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"
Kostya Kortchinsky4d022f52021-05-24 09:26:21 -070011#include "string_utils.h"
Dynamic Tools Team517193e2019-09-11 14:48:41 +000012
13namespace scudo {
14
15uptr PageSizeCached;
16uptr getPageSize();
17
18uptr getPageSizeSlow() {
19 PageSizeCached = getPageSize();
20 CHECK_NE(PageSizeCached, 0);
21 return PageSizeCached;
22}
23
24// Fatal internal map() or unmap() error (potentially OOM related).
Kostya Kortchinsky4d022f52021-05-24 09:26:21 -070025void 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);
Dynamic Tools Team517193e2019-09-11 14:48:41 +000035 die();
36}
37
38} // namespace scudo