1//===-- report_linux.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 "platform.h"
10
11#if SCUDO_LINUX || SCUDO_TRUSTY
12
13#include "common.h"
14#include "internal_defs.h"
15#include "report.h"
16#include "report_linux.h"
17#include "string_utils.h"
18
19#include <errno.h>
20#include <stdlib.h>
21#include <string.h>
22
23namespace scudo {
24
25// Fatal internal map() error (potentially OOM related).
26void NORETURN reportMapError(uptr SizeIfOOM) {
27 ScopedString Error;
28 Error.append(Format: "Scudo ERROR: internal map failure (error desc=%s)",
29 strerror(errno));
30 if (SizeIfOOM)
31 Error.append(Format: " requesting %zuKB", SizeIfOOM >> 10);
32 Error.append(Format: "\n");
33 reportRawError(Message: Error.data());
34}
35
36void NORETURN reportUnmapError(uptr Addr, uptr Size) {
37 ScopedString Error;
38 Error.append(Format: "Scudo ERROR: internal unmap failure (error desc=%s) Addr 0x%zx "
39 "Size %zu\n",
40 strerror(errno), Addr, Size);
41 reportRawError(Message: Error.data());
42}
43
44void NORETURN reportProtectError(uptr Addr, uptr Size, int Prot) {
45 ScopedString Error;
46 Error.append(
47 Format: "Scudo ERROR: internal protect failure (error desc=%s) Addr 0x%zx "
48 "Size %zu Prot %x\n",
49 strerror(errno), Addr, Size, Prot);
50 reportRawError(Message: Error.data());
51}
52
53} // namespace scudo
54
55#endif // SCUDO_LINUX || SCUDO_TRUSTY
56