| /* SPDX-License-Identifier: GPL-2.0 */ | 
 | #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 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) | 
 | typedef __int128 s_max; | 
 | typedef unsigned __int128 u_max; | 
 | #else | 
 | typedef s64 s_max; | 
 | typedef u64 u_max; | 
 | #endif | 
 |  | 
 | #endif |