Created attachment 177764 [details] C test program: conftest.c It fails without the sanitizer options: > cc -o conftest -O2 -pipe -fno-omit-frame-pointer -fstack-protector -fno-strict-aliasing -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=2 -Qunused-arguments -fstack-protector-all -Wstack-protector -fwrapv --param ssp-buffer-size=1 -fPIE -fasynchronous-unwind-tables -fno-omit-frame-pointer -I${top_srcdir}/src/common -Wl,-rpath,/usr/local/lib -fstack-protector -pie -Wl,-z,relro -Wl,-z,now -rdynamic conftest.c -lpthread -lexecinfo It succeeds with the sanitizer options: > cc -o conftest -O2 -pipe -fno-omit-frame-pointer -fstack-protector -fno-strict-aliasing -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=2 -Qunused-arguments -fstack-protector-all -Wstack-protector -fwrapv --param ssp-buffer-size=1 -fPIE -fsanitize=address -fsanitize=undefined -fno-omit-frame-pointer -fasynchronous-unwind-tables -fno-omit-frame-pointer -I${top_srcdir}/src/common -Wl,-rpath,/usr/local/lib -fstack-protector -pie -Wl,-z,relro -Wl,-z,now -rdynamic conftest.c -lpthread -lexecinfo I found this during security/tor build on FreeBSD 11 amd64. Sanitizer options shouldn't make such difference, and the test should always fail because there is no such function.
Interesting, this is because the sanitizers have several interceptors for Linux-specific functions and variables, and these cause the link to succeed. I will check with upstream how we can best solve this. Most likely these interceptors should be disabled completely for FreeBSD.
A commit references this bug: Author: dim Date: Wed Feb 1 20:41:09 UTC 2017 New revision: 313052 URL: https://svnweb.freebsd.org/changeset/base/313052 Log: Pull in r293536 from upstream compiler-rt trunk: Recommit: Stop intercepting some malloc-related functions on FreeBSD and macOS Summary: In https://bugs.freebsd.org/215125 I was notified that some configure scripts attempt to test for the Linux-specific `mallinfo` and `mallopt` functions by compiling and linking small programs which references the functions, and observing whether that results in errors. FreeBSD and macOS do not have the `mallinfo` and `mallopt` functions, so normally these tests would fail, but when sanitizers are enabled, they incorrectly succeed, because the sanitizers define interceptors for these functions. This also applies to some other malloc-related functions, such as `memalign`, `pvalloc` and `cfree`. Fix this by not intercepting `mallinfo`, `mallopt`, `memalign`, `pvalloc` and `cfree` for FreeBSD and macOS, in all sanitizers. Also delete the non-functional `cfree` wrapper for Windows, to fix the test cases on that platform. Reviewers: emaste, kcc, rnk Subscribers: timurrrr, eugenis, hans, joerg, llvm-commits, kubamracek Differential Revision: https://reviews.llvm.org/D27654 This prevents autoconf scripts from incorrectly detecting that functions like mallinfo, mallopt, memalign, pvalloc and cfree are supported. PR: 215125, 215455 MFC after: 1 week Changes: head/contrib/compiler-rt/lib/asan/asan_malloc_linux.cc head/contrib/compiler-rt/lib/asan/asan_malloc_win.cc head/contrib/compiler-rt/lib/lsan/lsan_interceptors.cc head/contrib/compiler-rt/lib/sanitizer_common/sanitizer_platform_interceptors.h
A commit references this bug: Author: dim Date: Mon Feb 13 18:39:22 UTC 2017 New revision: 313702 URL: https://svnweb.freebsd.org/changeset/base/313702 Log: MFC r313052: Pull in r293536 from upstream compiler-rt trunk: Recommit: Stop intercepting some malloc-related functions on FreeBSD and macOS Summary: In https://bugs.freebsd.org/215125 I was notified that some configure scripts attempt to test for the Linux-specific `mallinfo` and `mallopt` functions by compiling and linking small programs which references the functions, and observing whether that results in errors. FreeBSD and macOS do not have the `mallinfo` and `mallopt` functions, so normally these tests would fail, but when sanitizers are enabled, they incorrectly succeed, because the sanitizers define interceptors for these functions. This also applies to some other malloc-related functions, such as `memalign`, `pvalloc` and `cfree`. Fix this by not intercepting `mallinfo`, `mallopt`, `memalign`, `pvalloc` and `cfree` for FreeBSD and macOS, in all sanitizers. Also delete the non-functional `cfree` wrapper for Windows, to fix the test cases on that platform. Reviewers: emaste, kcc, rnk Subscribers: timurrrr, eugenis, hans, joerg, llvm-commits, kubamracek Differential Revision: https://reviews.llvm.org/D27654 This prevents autoconf scripts from incorrectly detecting that functions like mallinfo, mallopt, memalign, pvalloc and cfree are supported. PR: 215125, 215455 Changes: _U stable/11/ stable/11/contrib/compiler-rt/lib/asan/asan_malloc_linux.cc stable/11/contrib/compiler-rt/lib/asan/asan_malloc_win.cc stable/11/contrib/compiler-rt/lib/lsan/lsan_interceptors.cc stable/11/contrib/compiler-rt/lib/sanitizer_common/sanitizer_platform_interceptors.h