Merge tag 'ext4_for_linus_stable' of git://git.kernel.org/pub/scm/linux/kernel/git...
[linux/fpc-iii.git] / lib / ubsan.h
blobb2d18d4a53f5a274d73d31bda8cae876ba7ddc34
1 #ifndef _LIB_UBSAN_H
2 #define _LIB_UBSAN_H
4 enum {
5 type_kind_int = 0,
6 type_kind_float = 1,
7 type_unknown = 0xffff
8 };
10 struct type_descriptor {
11 u16 type_kind;
12 u16 type_info;
13 char type_name[1];
16 struct source_location {
17 const char *file_name;
18 union {
19 unsigned long reported;
20 struct {
21 u32 line;
22 u32 column;
27 struct overflow_data {
28 struct source_location location;
29 struct type_descriptor *type;
32 struct type_mismatch_data {
33 struct source_location location;
34 struct type_descriptor *type;
35 unsigned long alignment;
36 unsigned char type_check_kind;
39 struct nonnull_arg_data {
40 struct source_location location;
41 struct source_location attr_location;
42 int arg_index;
45 struct nonnull_return_data {
46 struct source_location location;
47 struct source_location attr_location;
50 struct vla_bound_data {
51 struct source_location location;
52 struct type_descriptor *type;
55 struct out_of_bounds_data {
56 struct source_location location;
57 struct type_descriptor *array_type;
58 struct type_descriptor *index_type;
61 struct shift_out_of_bounds_data {
62 struct source_location location;
63 struct type_descriptor *lhs_type;
64 struct type_descriptor *rhs_type;
67 struct unreachable_data {
68 struct source_location location;
71 struct invalid_value_data {
72 struct source_location location;
73 struct type_descriptor *type;
76 #if defined(CONFIG_ARCH_SUPPORTS_INT128) && defined(__SIZEOF_INT128__)
77 typedef __int128 s_max;
78 typedef unsigned __int128 u_max;
79 #else
80 typedef s64 s_max;
81 typedef u64 u_max;
82 #endif
84 #endif