cachepc-linux

Fork of AMDESE/linux with modifications for CachePC side-channel attack
git clone https://git.sinitax.com/sinitax/cachepc-linux
Log | Files | Refs | README | LICENSE | sfeed.txt

ubsan.h (1815B)


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