xref: /aosp_15_r20/external/scudo/standalone/report.h (revision 76559068c068bd27e82aff38fac3bfc865233bca)
1*76559068SAndroid Build Coastguard Worker //===-- report.h ------------------------------------------------*- C++ -*-===//
2*76559068SAndroid Build Coastguard Worker //
3*76559068SAndroid Build Coastguard Worker // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4*76559068SAndroid Build Coastguard Worker // See https://llvm.org/LICENSE.txt for license information.
5*76559068SAndroid Build Coastguard Worker // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6*76559068SAndroid Build Coastguard Worker //
7*76559068SAndroid Build Coastguard Worker //===----------------------------------------------------------------------===//
8*76559068SAndroid Build Coastguard Worker 
9*76559068SAndroid Build Coastguard Worker #ifndef SCUDO_REPORT_H_
10*76559068SAndroid Build Coastguard Worker #define SCUDO_REPORT_H_
11*76559068SAndroid Build Coastguard Worker 
12*76559068SAndroid Build Coastguard Worker #include "internal_defs.h"
13*76559068SAndroid Build Coastguard Worker 
14*76559068SAndroid Build Coastguard Worker namespace scudo {
15*76559068SAndroid Build Coastguard Worker 
16*76559068SAndroid Build Coastguard Worker // Reports are *fatal* unless stated otherwise.
17*76559068SAndroid Build Coastguard Worker 
18*76559068SAndroid Build Coastguard Worker // Generic error, adds newline to end of message.
19*76559068SAndroid Build Coastguard Worker void NORETURN reportError(const char *Message);
20*76559068SAndroid Build Coastguard Worker 
21*76559068SAndroid Build Coastguard Worker // Generic error, but the message is not modified.
22*76559068SAndroid Build Coastguard Worker void NORETURN reportRawError(const char *Message);
23*76559068SAndroid Build Coastguard Worker 
24*76559068SAndroid Build Coastguard Worker // Flags related errors.
25*76559068SAndroid Build Coastguard Worker void NORETURN reportInvalidFlag(const char *FlagType, const char *Value);
26*76559068SAndroid Build Coastguard Worker 
27*76559068SAndroid Build Coastguard Worker // Chunk header related errors.
28*76559068SAndroid Build Coastguard Worker void NORETURN reportHeaderCorruption(void *Ptr);
29*76559068SAndroid Build Coastguard Worker 
30*76559068SAndroid Build Coastguard Worker // Sanity checks related error.
31*76559068SAndroid Build Coastguard Worker void NORETURN reportSanityCheckError(const char *Field);
32*76559068SAndroid Build Coastguard Worker 
33*76559068SAndroid Build Coastguard Worker // Combined allocator errors.
34*76559068SAndroid Build Coastguard Worker void NORETURN reportAlignmentTooBig(uptr Alignment, uptr MaxAlignment);
35*76559068SAndroid Build Coastguard Worker void NORETURN reportAllocationSizeTooBig(uptr UserSize, uptr TotalSize,
36*76559068SAndroid Build Coastguard Worker                                          uptr MaxSize);
37*76559068SAndroid Build Coastguard Worker void NORETURN reportOutOfBatchClass();
38*76559068SAndroid Build Coastguard Worker void NORETURN reportOutOfMemory(uptr RequestedSize);
39*76559068SAndroid Build Coastguard Worker enum class AllocatorAction : u8 {
40*76559068SAndroid Build Coastguard Worker   Recycling,
41*76559068SAndroid Build Coastguard Worker   Deallocating,
42*76559068SAndroid Build Coastguard Worker   Reallocating,
43*76559068SAndroid Build Coastguard Worker   Sizing,
44*76559068SAndroid Build Coastguard Worker };
45*76559068SAndroid Build Coastguard Worker void NORETURN reportInvalidChunkState(AllocatorAction Action, void *Ptr);
46*76559068SAndroid Build Coastguard Worker void NORETURN reportMisalignedPointer(AllocatorAction Action, void *Ptr);
47*76559068SAndroid Build Coastguard Worker void NORETURN reportDeallocTypeMismatch(AllocatorAction Action, void *Ptr,
48*76559068SAndroid Build Coastguard Worker                                         u8 TypeA, u8 TypeB);
49*76559068SAndroid Build Coastguard Worker void NORETURN reportDeleteSizeMismatch(void *Ptr, uptr Size, uptr ExpectedSize);
50*76559068SAndroid Build Coastguard Worker 
51*76559068SAndroid Build Coastguard Worker // C wrappers errors.
52*76559068SAndroid Build Coastguard Worker void NORETURN reportAlignmentNotPowerOfTwo(uptr Alignment);
53*76559068SAndroid Build Coastguard Worker void NORETURN reportInvalidPosixMemalignAlignment(uptr Alignment);
54*76559068SAndroid Build Coastguard Worker void NORETURN reportCallocOverflow(uptr Count, uptr Size);
55*76559068SAndroid Build Coastguard Worker void NORETURN reportPvallocOverflow(uptr Size);
56*76559068SAndroid Build Coastguard Worker void NORETURN reportInvalidAlignedAllocAlignment(uptr Size, uptr Alignment);
57*76559068SAndroid Build Coastguard Worker 
58*76559068SAndroid Build Coastguard Worker } // namespace scudo
59*76559068SAndroid Build Coastguard Worker 
60*76559068SAndroid Build Coastguard Worker #endif // SCUDO_REPORT_H_
61