1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798 |
- #ifndef _LIB_UBSAN_H
- #define _LIB_UBSAN_H
- enum {
- type_kind_int = 0,
- type_kind_float = 1,
- type_unknown = 0xffff
- };
- struct type_descriptor {
- u16 type_kind;
- u16 type_info;
- char type_name[1];
- };
- struct source_location {
- const char *file_name;
- union {
- unsigned long reported;
- struct {
- u32 line;
- u32 column;
- };
- };
- };
- struct overflow_data {
- struct source_location location;
- struct type_descriptor *type;
- };
- struct type_mismatch_data {
- struct source_location location;
- struct type_descriptor *type;
- unsigned long alignment;
- unsigned char type_check_kind;
- };
- struct type_mismatch_data_v1 {
- struct source_location location;
- struct type_descriptor *type;
- unsigned char log_alignment;
- unsigned char type_check_kind;
- };
- struct type_mismatch_data_common {
- struct source_location *location;
- struct type_descriptor *type;
- unsigned long alignment;
- unsigned char type_check_kind;
- };
- struct nonnull_arg_data {
- struct source_location location;
- struct source_location attr_location;
- int arg_index;
- };
- struct nonnull_return_data {
- struct source_location location;
- struct source_location attr_location;
- };
- struct vla_bound_data {
- struct source_location location;
- struct type_descriptor *type;
- };
- struct out_of_bounds_data {
- struct source_location location;
- struct type_descriptor *array_type;
- struct type_descriptor *index_type;
- };
- struct shift_out_of_bounds_data {
- struct source_location location;
- struct type_descriptor *lhs_type;
- struct type_descriptor *rhs_type;
- };
- struct unreachable_data {
- struct source_location location;
- };
- struct invalid_value_data {
- struct source_location location;
- struct type_descriptor *type;
- };
- #if defined(CONFIG_ARCH_SUPPORTS_INT128) && defined(__SIZEOF_INT128__)
- typedef __int128 s_max;
- typedef unsigned __int128 u_max;
- #else
- typedef s64 s_max;
- typedef u64 u_max;
- #endif
- #endif
|