56 lines · cpp
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-exception6//7//===----------------------------------------------------------------------===//8 9#include "platform.h"10 11#if SCUDO_LINUX || SCUDO_TRUSTY12 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("Scudo ERROR: internal map failure (error desc=%s)",29 strerror(errno));30 if (SizeIfOOM)31 Error.append(" requesting %zuKB", SizeIfOOM >> 10);32 Error.append("\n");33 reportRawError(Error.data());34}35 36void NORETURN reportUnmapError(uptr Addr, uptr Size) {37 ScopedString Error;38 Error.append("Scudo ERROR: internal unmap failure (error desc=%s) Addr 0x%zx "39 "Size %zu\n",40 strerror(errno), Addr, Size);41 reportRawError(Error.data());42}43 44void NORETURN reportProtectError(uptr Addr, uptr Size, int Prot) {45 ScopedString Error;46 Error.append(47 "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(Error.data());51}52 53} // namespace scudo54 55#endif // SCUDO_LINUX || SCUDO_TRUSTY56