123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899 |
- #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
|