summaryrefslogtreecommitdiffstats
path: root/lib/Kconfig.ubsan
diff options
context:
space:
mode:
authorAhmad Fatoum <ahmad@a3f.at>2019-08-27 17:09:14 +0200
committerSascha Hauer <s.hauer@pengutronix.de>2019-09-09 15:16:08 +0200
commit3af4f067ecd160a5ae5d60b276d4ef0bbec789be (patch)
tree66617af4a90ef076a146d3b874572143aaef30ea /lib/Kconfig.ubsan
parenta37a49bcd99d5495ed65c904ed82fbb506b01f8f (diff)
downloadbarebox-3af4f067ecd160a5ae5d60b276d4ef0bbec789be.tar.gz
barebox-3af4f067ecd160a5ae5d60b276d4ef0bbec789be.tar.xz
common: add generic CONFIG_UBSAN plumbing
-fsanitize=undefined allows compile-time instrumentation of code to detect some classes of runtime undefined behavior. In preparation for allowing arches to provide infrastructure in support of this feature, add some generic UBSAN options and associated plumbing. These are only shown in the debug menu when the arch selects the appropriate symbol. The option is named equally to their Linux counterparts. Signed-off-by: Ahmad Fatoum <ahmad@a3f.at> Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
Diffstat (limited to 'lib/Kconfig.ubsan')
-rw-r--r--lib/Kconfig.ubsan35
1 files changed, 35 insertions, 0 deletions
diff --git a/lib/Kconfig.ubsan b/lib/Kconfig.ubsan
new file mode 100644
index 0000000000..09f4a0ab8a
--- /dev/null
+++ b/lib/Kconfig.ubsan
@@ -0,0 +1,35 @@
+# SPDX-License-Identifier: GPL-2.0-only
+config ARCH_HAS_UBSAN_SANITIZE_ALL
+ bool
+
+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 in runtime.
+
+config UBSAN_SANITIZE_ALL
+ bool "Enable instrumentation for all of barebox"
+ depends on UBSAN
+ depends on ARCH_HAS_UBSAN_SANITIZE_ALL
+ default y
+ help
+ This option activates instrumentation for all of barebox.
+ 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 barebox image size increased
+ significantly.
+
+config UBSAN_NO_ALIGNMENT
+ bool "Disable checking of pointers alignment"
+ depends on UBSAN
+ default y if HAVE_EFFICIENT_UNALIGNED_ACCESS
+ help
+ This option disables the check of unaligned memory accesses.
+ This option should be used when building allmodconfig.
+ Disabling this option on architectures that support unaligned
+ accesses may produce a lot of false positives.
+
+config UBSAN_ALIGNMENT
+ def_bool !UBSAN_NO_ALIGNMENT