1 //===-- report.h ------------------------------------------------*- C++ -*-===//
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
7 //===----------------------------------------------------------------------===//
9 #ifndef SCUDO_REPORT_H_
10 #define SCUDO_REPORT_H_
12 #include "internal_defs.h"
16 // Reports are *fatal* unless stated otherwise.
18 // Generic error, adds newline to end of message.
19 void NORETURN
reportError(const char *Message
);
21 // Generic error, but the message is not modified.
22 void NORETURN
reportRawError(const char *Message
);
24 // Flags related errors.
25 void NORETURN
reportInvalidFlag(const char *FlagType
, const char *Value
);
27 // Chunk header related errors.
28 void NORETURN
reportHeaderCorruption(void *Ptr
);
30 // Sanity checks related error.
31 void NORETURN
reportSanityCheckError(const char *Field
);
33 // Combined allocator errors.
34 void NORETURN
reportAlignmentTooBig(uptr Alignment
, uptr MaxAlignment
);
35 void NORETURN
reportAllocationSizeTooBig(uptr UserSize
, uptr TotalSize
,
37 void NORETURN
reportOutOfBatchClass();
38 void NORETURN
reportOutOfMemory(uptr RequestedSize
);
39 enum class AllocatorAction
: u8
{
45 void NORETURN
reportInvalidChunkState(AllocatorAction Action
, void *Ptr
);
46 void NORETURN
reportMisalignedPointer(AllocatorAction Action
, void *Ptr
);
47 void NORETURN
reportDeallocTypeMismatch(AllocatorAction Action
, void *Ptr
,
49 void NORETURN
reportDeleteSizeMismatch(void *Ptr
, uptr Size
, uptr ExpectedSize
);
52 void NORETURN
reportAlignmentNotPowerOfTwo(uptr Alignment
);
53 void NORETURN
reportInvalidPosixMemalignAlignment(uptr Alignment
);
54 void NORETURN
reportCallocOverflow(uptr Count
, uptr Size
);
55 void NORETURN
reportPvallocOverflow(uptr Size
);
56 void NORETURN
reportInvalidAlignedAllocAlignment(uptr Size
, uptr Alignment
);
60 #endif // SCUDO_REPORT_H_