config ARCH_HAS_UBSAN_SANITIZE_ALL
	bool

config ARCH_WANTS_UBSAN_NO_NULL
	def_bool n

config UBSAN
	bool "Undefined behaviour sanity checker"
	help
	  This option enables undefined behaviour sanity checker.
	  Compile-time instrumentation is used to detect various undefined
	  behaviours at runtime. Various types of checks may be enabled
	  via boot parameter ubsan_handle
	  (see: Documentation/dev-tools/ubsan.rst).

config UBSAN_TRAP
	bool "On Sanitizer warnings, stop the offending kernel thread"
	depends on UBSAN
	help
	  Building kernels with Sanitizer features enabled tends to grow
	  the kernel size by over 5%, due to adding all the debugging
	  text on failure paths. To avoid this, Sanitizer instrumentation
	  can just issue a trap. This reduces the kernel size overhead but
	  turns all warnings into full thread-killing exceptions.

config UBSAN_BOUNDS
	bool "Perform array bounds checking"
	depends on UBSAN
	default UBSAN
	help
	  This option enables detection of direct out of bounds array
	  accesses, where the array size is known at compile time. Note
	  that this does not protect character array overflows due to
	  bad calls to the {str,mem}*cpy() family of functions.

config UBSAN_MISC
	bool "Enable all other Undefined Behavior sanity checks"
	depends on UBSAN
	default UBSAN
	help
	  This option enables all sanity checks that don't have their
	  own Kconfig options. Disable this if you only want to have
	  individually selected checks.

config UBSAN_SANITIZE_ALL
	bool "Enable instrumentation for the entire kernel"
	depends on UBSAN
	depends on ARCH_HAS_UBSAN_SANITIZE_ALL

	# We build with -Wno-maybe-uninitilzed, but we still want to
	# use -Wmaybe-uninitilized in allmodconfig builds.
	# So dependsy bellow used to disable this option in allmodconfig
	depends on !COMPILE_TEST
	default y
	help
	  This option activates instrumentation for the entire kernel.
	  If you don't enable this option, you have to explicitly specify
	  UBSAN_SANITIZE := y for the files/directories you want to check for UB.
	  Enabling this option will get kernel image size increased
	  significantly.

config UBSAN_ALIGNMENT
	bool "Enable checking of pointers alignment"
	depends on UBSAN
	default y if !HAVE_EFFICIENT_UNALIGNED_ACCESS
	help
	  This option enables detection of unaligned memory accesses.
	  Enabling this option on architectures that support unaligned
	  accesses may produce a lot of false positives.

config UBSAN_NULL
	bool "Enable checking of null pointers"
	depends on UBSAN
	default y if !ARCH_WANTS_UBSAN_NO_NULL
	help
	  This option enables detection of memory accesses via a
	  null pointer.
