From: Paul Eggert Date: Sun, 6 Dec 2020 18:03:37 +0000 (-0800) Subject: doc: document -static-libubsan more X-Git-Tag: v1.0~3408 X-Git-Url: https://gitweb.git.savannah.gnu.org/gitweb/?a=commitdiff_plain;h=d058c47204168676d6fe02b18d51916a1045149e;p=gnulib.git doc: document -static-libubsan more * doc/gnulib-readme.texi (High Quality): Document pros and cons of -static-libubsan a bit more. Mostly cons. --- diff --git a/ChangeLog b/ChangeLog index 08cef4d151..14a2ea9570 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 cde6d7aaba..833888320c 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.