Ben Pfaff wrote:
> CC='gcc -fsanitize=address -g -O0' ./gnulib-tool --test vasnprintf 
> vasnprintf-posix

A couple of notes about this report:

1) The -O0 in the above command is ineffective. Reason: CFLAGS is '-O2 -g'
   by default, thus when a file gets compiled by $CC $CFLAGS, the -O2 always
   overrides the -O0.

   You need to write
     CC='gcc -fsanitize=address' CFLAGS='-g -O0'
   if you really want the -O0 to have an effect.

2) CC='gcc -fsanitize=address' modifies the result of the
   "checking whether printf supports the 'n' directive" test.

   Namely, the test program crashes with error
   "*** %n in writable segment detected ***".

3) CC='gcc -fsanitize=address' modifies also the result of the
   "checking whether printf survives out-of-memory conditions" test.

   Namely, when a large malloc() fails, the AddressSanitizer, instead
   of letting malloc() return NULL with errno set to ENOMEM, simply
   terminates the program with exit code 1. Gnulib's test in printf.m4 cannot
   distinguish a buggy malloc() from a buggy printf(); it notices that
   the program exits and concludes that printf is buggy.

   This failure has the effect of defining NEED_PRINTF_ENOMEM,
   NEED_PRINTF_DOUBLE, NEED_PRINTF_LONG_DOUBLE in config.h. They are usually
   not defined on glibc systems.

Bruno


Reply via email to