mirror of https://gitee.com/openkylin/linux.git
c6d308534a
UBSAN uses compile-time instrumentation to catch undefined behavior (UB). Compiler inserts code that perform certain kinds of checks before operations that could cause UB. If check fails (i.e. UB detected) __ubsan_handle_* function called to print error message. So the most of the work is done by compiler. This patch just implements ubsan handlers printing errors. GCC has this capability since 4.9.x [1] (see -fsanitize=undefined option and its suboptions). However GCC 5.x has more checkers implemented [2]. Article [3] has a bit more details about UBSAN in the GCC. [1] - https://gcc.gnu.org/onlinedocs/gcc-4.9.0/gcc/Debugging-Options.html [2] - https://gcc.gnu.org/onlinedocs/gcc/Debugging-Options.html [3] - http://developerblog.redhat.com/2014/10/16/gcc-undefined-behavior-sanitizer-ubsan/ Issues which UBSAN has found thus far are: Found bugs: * out-of-bounds access - |
||
---|---|---|
.. | ||
.gitignore | ||
Makefile | ||
bioscall.S | ||
copy.S | ||
header.S | ||
realmode.h | ||
realmode.lds.S | ||
reboot.S | ||
regs.c | ||
stack.S | ||
trampoline_32.S | ||
trampoline_64.S | ||
trampoline_common.S | ||
video-bios.c | ||
video-mode.c | ||
video-vesa.c | ||
video-vga.c | ||
wakemain.c | ||
wakeup.h | ||
wakeup_asm.S |