~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

TOMOYO Linux Cross Reference
Linux/lib/ubsan.h

Version: ~ [ linux-6.12-rc7 ] ~ [ linux-6.11.7 ] ~ [ linux-6.10.14 ] ~ [ linux-6.9.12 ] ~ [ linux-6.8.12 ] ~ [ linux-6.7.12 ] ~ [ linux-6.6.60 ] ~ [ linux-6.5.13 ] ~ [ linux-6.4.16 ] ~ [ linux-6.3.13 ] ~ [ linux-6.2.16 ] ~ [ linux-6.1.116 ] ~ [ linux-6.0.19 ] ~ [ linux-5.19.17 ] ~ [ linux-5.18.19 ] ~ [ linux-5.17.15 ] ~ [ linux-5.16.20 ] ~ [ linux-5.15.171 ] ~ [ linux-5.14.21 ] ~ [ linux-5.13.19 ] ~ [ linux-5.12.19 ] ~ [ linux-5.11.22 ] ~ [ linux-5.10.229 ] ~ [ linux-5.9.16 ] ~ [ linux-5.8.18 ] ~ [ linux-5.7.19 ] ~ [ linux-5.6.19 ] ~ [ linux-5.5.19 ] ~ [ linux-5.4.285 ] ~ [ linux-5.3.18 ] ~ [ linux-5.2.21 ] ~ [ linux-5.1.21 ] ~ [ linux-5.0.21 ] ~ [ linux-4.20.17 ] ~ [ linux-4.19.323 ] ~ [ linux-4.18.20 ] ~ [ linux-4.17.19 ] ~ [ linux-4.16.18 ] ~ [ linux-4.15.18 ] ~ [ linux-4.14.336 ] ~ [ linux-4.13.16 ] ~ [ linux-4.12.14 ] ~ [ linux-4.11.12 ] ~ [ linux-4.10.17 ] ~ [ linux-4.9.337 ] ~ [ linux-4.4.302 ] ~ [ linux-3.10.108 ] ~ [ linux-2.6.32.71 ] ~ [ linux-2.6.0 ] ~ [ linux-2.4.37.11 ] ~ [ unix-v6-master ] ~ [ ccs-tools-1.8.12 ] ~ [ policy-sample ] ~
Architecture: ~ [ i386 ] ~ [ alpha ] ~ [ m68k ] ~ [ mips ] ~ [ ppc ] ~ [ sparc ] ~ [ sparc64 ] ~

Diff markup

Differences between /lib/ubsan.h (Version linux-6.12-rc7) and /lib/ubsan.h (Version linux-4.13.16)


  1 /* SPDX-License-Identifier: GPL-2.0 */         << 
  2 #ifndef _LIB_UBSAN_H                                1 #ifndef _LIB_UBSAN_H
  3 #define _LIB_UBSAN_H                                2 #define _LIB_UBSAN_H
  4                                                     3 
  5 /*                                             << 
  6  * ABI defined by Clang's UBSAN enum Sanitizer << 
  7  * https://github.com/llvm/llvm-project/blob/r << 
  8  */                                            << 
  9 enum ubsan_checks {                            << 
 10         ubsan_add_overflow,                    << 
 11         ubsan_builtin_unreachable,             << 
 12         ubsan_cfi_check_fail,                  << 
 13         ubsan_divrem_overflow,                 << 
 14         ubsan_dynamic_type_cache_miss,         << 
 15         ubsan_float_cast_overflow,             << 
 16         ubsan_function_type_mismatch,          << 
 17         ubsan_implicit_conversion,             << 
 18         ubsan_invalid_builtin,                 << 
 19         ubsan_invalid_objc_cast,               << 
 20         ubsan_load_invalid_value,              << 
 21         ubsan_missing_return,                  << 
 22         ubsan_mul_overflow,                    << 
 23         ubsan_negate_overflow,                 << 
 24         ubsan_nullability_arg,                 << 
 25         ubsan_nullability_return,              << 
 26         ubsan_nonnull_arg,                     << 
 27         ubsan_nonnull_return,                  << 
 28         ubsan_out_of_bounds,                   << 
 29         ubsan_pointer_overflow,                << 
 30         ubsan_shift_out_of_bounds,             << 
 31         ubsan_sub_overflow,                    << 
 32         ubsan_type_mismatch,                   << 
 33         ubsan_alignment_assumption,            << 
 34         ubsan_vla_bound_not_positive,          << 
 35 };                                             << 
 36                                                << 
 37 enum {                                              4 enum {
 38         type_kind_int = 0,                          5         type_kind_int = 0,
 39         type_kind_float = 1,                        6         type_kind_float = 1,
 40         type_unknown = 0xffff                       7         type_unknown = 0xffff
 41 };                                                  8 };
 42                                                     9 
 43 struct type_descriptor {                           10 struct type_descriptor {
 44         u16 type_kind;                             11         u16 type_kind;
 45         u16 type_info;                             12         u16 type_info;
 46         char type_name[];                      !!  13         char type_name[1];
 47 };                                                 14 };
 48                                                    15 
 49 struct source_location {                           16 struct source_location {
 50         const char *file_name;                     17         const char *file_name;
 51         union {                                    18         union {
 52                 unsigned long reported;            19                 unsigned long reported;
 53                 struct {                           20                 struct {
 54                         u32 line;                  21                         u32 line;
 55                         u32 column;                22                         u32 column;
 56                 };                                 23                 };
 57         };                                         24         };
 58 };                                                 25 };
 59                                                    26 
 60 struct overflow_data {                             27 struct overflow_data {
 61         struct source_location location;           28         struct source_location location;
 62         struct type_descriptor *type;              29         struct type_descriptor *type;
 63 };                                                 30 };
 64                                                    31 
 65 struct type_mismatch_data {                        32 struct type_mismatch_data {
 66         struct source_location location;           33         struct source_location location;
 67         struct type_descriptor *type;              34         struct type_descriptor *type;
 68         unsigned long alignment;                   35         unsigned long alignment;
 69         unsigned char type_check_kind;             36         unsigned char type_check_kind;
 70 };                                                 37 };
 71                                                    38 
 72 struct type_mismatch_data_v1 {                 !!  39 struct nonnull_arg_data {
 73         struct source_location location;           40         struct source_location location;
 74         struct type_descriptor *type;          !!  41         struct source_location attr_location;
 75         unsigned char log_alignment;           !!  42         int arg_index;
 76         unsigned char type_check_kind;         << 
 77 };                                                 43 };
 78                                                    44 
 79 struct type_mismatch_data_common {             !!  45 struct nonnull_return_data {
 80         struct source_location *location;      !!  46         struct source_location location;
 81         struct type_descriptor *type;          !!  47         struct source_location attr_location;
 82         unsigned long alignment;               << 
 83         unsigned char type_check_kind;         << 
 84 };                                                 48 };
 85                                                    49 
 86 struct nonnull_arg_data {                      !!  50 struct vla_bound_data {
 87         struct source_location location;           51         struct source_location location;
 88         struct source_location attr_location;  !!  52         struct type_descriptor *type;
 89         int arg_index;                         << 
 90 };                                                 53 };
 91                                                    54 
 92 struct out_of_bounds_data {                        55 struct out_of_bounds_data {
 93         struct source_location location;           56         struct source_location location;
 94         struct type_descriptor *array_type;        57         struct type_descriptor *array_type;
 95         struct type_descriptor *index_type;        58         struct type_descriptor *index_type;
 96 };                                                 59 };
 97                                                    60 
 98 struct shift_out_of_bounds_data {                  61 struct shift_out_of_bounds_data {
 99         struct source_location location;           62         struct source_location location;
100         struct type_descriptor *lhs_type;          63         struct type_descriptor *lhs_type;
101         struct type_descriptor *rhs_type;          64         struct type_descriptor *rhs_type;
102 };                                                 65 };
103                                                    66 
104 struct unreachable_data {                          67 struct unreachable_data {
105         struct source_location location;           68         struct source_location location;
106 };                                                 69 };
107                                                    70 
108 struct invalid_value_data {                        71 struct invalid_value_data {
109         struct source_location location;           72         struct source_location location;
110         struct type_descriptor *type;              73         struct type_descriptor *type;
111 };                                                 74 };
112                                                    75 
113 struct alignment_assumption_data {             !!  76 #if defined(CONFIG_ARCH_SUPPORTS_INT128) && defined(__SIZEOF_INT128__)
114         struct source_location location;       << 
115         struct source_location assumption_loca << 
116         struct type_descriptor *type;          << 
117 };                                             << 
118                                                << 
119 #if defined(CONFIG_ARCH_SUPPORTS_INT128)       << 
120 typedef __int128 s_max;                            77 typedef __int128 s_max;
121 typedef unsigned __int128 u_max;                   78 typedef unsigned __int128 u_max;
122 #else                                              79 #else
123 typedef s64 s_max;                                 80 typedef s64 s_max;
124 typedef u64 u_max;                                 81 typedef u64 u_max;
125 #endif                                             82 #endif
126                                                << 
127 /*                                             << 
128  * When generating Runtime Calls, Clang doesn' << 
129  * option used on i386: https://github.com/llv << 
130  * Fix this for earlier Clang versions by forc << 
131  * to use non-register arguments.              << 
132  */                                            << 
133 #if defined(CONFIG_X86_32) && \                << 
134     defined(CONFIG_CC_IS_CLANG) && CONFIG_CLAN << 
135 # define ubsan_linkage asmlinkage              << 
136 #else                                          << 
137 # define ubsan_linkage                         << 
138 #endif                                         << 
139                                                << 
140 void ubsan_linkage __ubsan_handle_add_overflow << 
141 void ubsan_linkage __ubsan_handle_sub_overflow << 
142 void ubsan_linkage __ubsan_handle_mul_overflow << 
143 void ubsan_linkage __ubsan_handle_negate_overf << 
144 void ubsan_linkage __ubsan_handle_divrem_overf << 
145 void ubsan_linkage __ubsan_handle_type_mismatc << 
146 void ubsan_linkage __ubsan_handle_type_mismatc << 
147 void ubsan_linkage __ubsan_handle_out_of_bound << 
148 void ubsan_linkage __ubsan_handle_shift_out_of << 
149 void ubsan_linkage __ubsan_handle_builtin_unre << 
150 void ubsan_linkage __ubsan_handle_load_invalid << 
151 void ubsan_linkage __ubsan_handle_alignment_as << 
152                                                << 
153                                                << 
154                                                    83 
155 #endif                                             84 #endif
156                                                    85 

~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

kernel.org | git.kernel.org | LWN.net | Project Home | SVN repository | Mail admin

Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.

sflogo.php