71 lines
1.2 KiB
C
71 lines
1.2 KiB
C
|
#ifndef _LIB_UBSAN_H
|
||
|
#define _LIB_UBSAN_H
|
||
|
|
||
|
#include <types.h>
|
||
|
|
||
|
struct TypeDescriptor {
|
||
|
uint16_t type_kind;
|
||
|
uint16_t type_info;
|
||
|
char type_name[1];
|
||
|
};
|
||
|
|
||
|
struct SourceLocation {
|
||
|
const char *file_name;
|
||
|
uint32_t line;
|
||
|
uint32_t column;
|
||
|
};
|
||
|
|
||
|
struct OverflowData {
|
||
|
struct SourceLocation location;
|
||
|
struct TypeDescriptor *type;
|
||
|
};
|
||
|
|
||
|
struct TypeMismatchData {
|
||
|
struct SourceLocation location;
|
||
|
struct TypeDescriptor *type;
|
||
|
unsigned long alignment;
|
||
|
unsigned char type_check_kind;
|
||
|
};
|
||
|
|
||
|
struct NonnullArgData {
|
||
|
struct SourceLocation location;
|
||
|
struct SourceLocation attr_location;
|
||
|
int arg_index;
|
||
|
};
|
||
|
|
||
|
struct NonnullReturnData {
|
||
|
struct SourceLocation location;
|
||
|
struct SourceLocation attr_location;
|
||
|
};
|
||
|
|
||
|
struct VLABoundData {
|
||
|
struct SourceLocation location;
|
||
|
struct TypeDescriptor *type;
|
||
|
};
|
||
|
|
||
|
struct OutOfBoundsData {
|
||
|
struct SourceLocation location;
|
||
|
struct TypeDescriptor *array_type;
|
||
|
struct TypeDescriptor *index_type;
|
||
|
};
|
||
|
|
||
|
struct ShiftOutOfBoundsData {
|
||
|
struct SourceLocation location;
|
||
|
struct TypeDescriptor *lhs_type;
|
||
|
struct TypeDescriptor *rhs_type;
|
||
|
};
|
||
|
|
||
|
struct UnreachableData {
|
||
|
struct SourceLocation location;
|
||
|
};
|
||
|
|
||
|
struct InvalidValueData {
|
||
|
struct SourceLocation location;
|
||
|
struct TypeDescriptor *type;
|
||
|
};
|
||
|
|
||
|
typedef int64_t s_max;
|
||
|
typedef uint64_t u_max;
|
||
|
|
||
|
#endif
|