~ [ 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-6.1.116)


  1 /* SPDX-License-Identifier: GPL-2.0 */              1 /* SPDX-License-Identifier: GPL-2.0 */
  2 #ifndef _LIB_UBSAN_H                                2 #ifndef _LIB_UBSAN_H
  3 #define _LIB_UBSAN_H                                3 #define _LIB_UBSAN_H
  4                                                     4 
  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 {                                              5 enum {
 38         type_kind_int = 0,                          6         type_kind_int = 0,
 39         type_kind_float = 1,                        7         type_kind_float = 1,
 40         type_unknown = 0xffff                       8         type_unknown = 0xffff
 41 };                                                  9 };
 42                                                    10 
 43 struct type_descriptor {                           11 struct type_descriptor {
 44         u16 type_kind;                             12         u16 type_kind;
 45         u16 type_info;                             13         u16 type_info;
 46         char type_name[];                      !!  14         char type_name[1];
 47 };                                                 15 };
 48                                                    16 
 49 struct source_location {                           17 struct source_location {
 50         const char *file_name;                     18         const char *file_name;
 51         union {                                    19         union {
 52                 unsigned long reported;            20                 unsigned long reported;
 53                 struct {                           21                 struct {
 54                         u32 line;                  22                         u32 line;
 55                         u32 column;                23                         u32 column;
 56                 };                                 24                 };
 57         };                                         25         };
 58 };                                                 26 };
 59                                                    27 
 60 struct overflow_data {                             28 struct overflow_data {
 61         struct source_location location;           29         struct source_location location;
 62         struct type_descriptor *type;              30         struct type_descriptor *type;
 63 };                                                 31 };
 64                                                    32 
 65 struct type_mismatch_data {                        33 struct type_mismatch_data {
 66         struct source_location location;           34         struct source_location location;
 67         struct type_descriptor *type;              35         struct type_descriptor *type;
 68         unsigned long alignment;                   36         unsigned long alignment;
 69         unsigned char type_check_kind;             37         unsigned char type_check_kind;
 70 };                                                 38 };
 71                                                    39 
 72 struct type_mismatch_data_v1 {                     40 struct type_mismatch_data_v1 {
 73         struct source_location location;           41         struct source_location location;
 74         struct type_descriptor *type;              42         struct type_descriptor *type;
 75         unsigned char log_alignment;               43         unsigned char log_alignment;
 76         unsigned char type_check_kind;             44         unsigned char type_check_kind;
 77 };                                                 45 };
 78                                                    46 
 79 struct type_mismatch_data_common {                 47 struct type_mismatch_data_common {
 80         struct source_location *location;          48         struct source_location *location;
 81         struct type_descriptor *type;              49         struct type_descriptor *type;
 82         unsigned long alignment;                   50         unsigned long alignment;
 83         unsigned char type_check_kind;             51         unsigned char type_check_kind;
 84 };                                                 52 };
 85                                                    53 
 86 struct nonnull_arg_data {                          54 struct nonnull_arg_data {
 87         struct source_location location;           55         struct source_location location;
 88         struct source_location attr_location;      56         struct source_location attr_location;
 89         int arg_index;                             57         int arg_index;
 90 };                                                 58 };
 91                                                    59 
 92 struct out_of_bounds_data {                        60 struct out_of_bounds_data {
 93         struct source_location location;           61         struct source_location location;
 94         struct type_descriptor *array_type;        62         struct type_descriptor *array_type;
 95         struct type_descriptor *index_type;        63         struct type_descriptor *index_type;
 96 };                                                 64 };
 97                                                    65 
 98 struct shift_out_of_bounds_data {                  66 struct shift_out_of_bounds_data {
 99         struct source_location location;           67         struct source_location location;
100         struct type_descriptor *lhs_type;          68         struct type_descriptor *lhs_type;
101         struct type_descriptor *rhs_type;          69         struct type_descriptor *rhs_type;
102 };                                                 70 };
103                                                    71 
104 struct unreachable_data {                          72 struct unreachable_data {
105         struct source_location location;           73         struct source_location location;
106 };                                                 74 };
107                                                    75 
108 struct invalid_value_data {                        76 struct invalid_value_data {
109         struct source_location location;           77         struct source_location location;
110         struct type_descriptor *type;              78         struct type_descriptor *type;
111 };                                                 79 };
112                                                    80 
113 struct alignment_assumption_data {                 81 struct alignment_assumption_data {
114         struct source_location location;           82         struct source_location location;
115         struct source_location assumption_loca     83         struct source_location assumption_location;
116         struct type_descriptor *type;              84         struct type_descriptor *type;
117 };                                                 85 };
118                                                    86 
119 #if defined(CONFIG_ARCH_SUPPORTS_INT128)           87 #if defined(CONFIG_ARCH_SUPPORTS_INT128)
120 typedef __int128 s_max;                            88 typedef __int128 s_max;
121 typedef unsigned __int128 u_max;                   89 typedef unsigned __int128 u_max;
122 #else                                              90 #else
123 typedef s64 s_max;                                 91 typedef s64 s_max;
124 typedef u64 u_max;                                 92 typedef u64 u_max;
125 #endif                                             93 #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                                                    94 
155 #endif                                             95 #endif
156                                                    96 

~ [ 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