From d058c47204168676d6fe02b18d51916a1045149e Mon Sep 17 00:00:00 2001 From: Paul Eggert Date: Sun, 6 Dec 2020 10:03:37 -0800 Subject: [PATCH] doc: document -static-libubsan more * doc/gnulib-readme.texi (High Quality): Document pros and cons of -static-libubsan a bit more. Mostly cons. --- ChangeLog | 6 ++++++ doc/gnulib-readme.texi | 16 ++++++++++++---- 2 files changed, 18 insertions(+), 4 deletions(-) diff --git a/ChangeLog b/ChangeLog index 08cef4d15..14a2ea957 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2020-12-06 Paul Eggert + + doc: document -static-libubsan more + * doc/gnulib-readme.texi (High Quality): Document pros and cons of + -static-libubsan a bit more. Mostly cons. + 2020-12-06 Bruno Haible doc: Add more details regarding the undefined behaviour sanitizer. diff --git a/doc/gnulib-readme.texi b/doc/gnulib-readme.texi index cde6d7aab..833888320 100644 --- a/doc/gnulib-readme.texi +++ b/doc/gnulib-readme.texi @@ -559,8 +559,16 @@ the GNU C library. @code{-fsanitize-undefined-trap-on-error} causes @code{ubsan} to abort the program (through an ``illegal instruction'' signal). This measure stops exploit attempts and also allows you to debug the issue. -Without this option, @code{-fsanitize=undefined} causes messages to be -printed, execution continues after an undefined behavior situation, and -GCC links the program against @code{libstdc++} (which you can avoid -through the option @code{-static-libubsan}). @end itemize + +Without the @code{-fsanitize-undefined-trap-on-error} option, +@code{-fsanitize=undefined} causes messages to be printed, and +execution continues after an undefined behavior situation. +The message printing causes GCC-like compilers to arrange for the +program to dynamically link to libraries it might not otherwise need. +With GCC, instead of @code{-fsanitize-undefined-trap-on-error} you can +use the @code{-static-libubsan} option to arrange for two of the extra +libraries (@code{libstdc++} and @code{libubsan}) to be linked +statically rather than dynamically, though this typically bloats the +executable and the remaining extra libraries are still linked +dynamically. -- 2.27.0