From: "H.J. Lu" <hjl.tools@gmail.com>
To: binutils@sourceware.org
Cc: amodra@gmail.com, gcc-patches@gcc.gnu.org
Subject: [PATCH 1/2] mmap: Avoid the sanitizer configure check failure
Date: Tue, 9 Apr 2024 07:24:34 -0700 [thread overview]
Message-ID: <20240409142435.1708867-2-hjl.tools@gmail.com> (raw)
In-Reply-To: <20240409142435.1708867-1-hjl.tools@gmail.com>
When -fsanitize=address,undefined is used to build, the mmap configure
check failed with
=================================================================
==231796==ERROR: LeakSanitizer: detected memory leaks
Direct leak of 4096 byte(s) in 1 object(s) allocated from:
#0 0x7cdd3d0defdf in __interceptor_malloc ../../../../src/libsanitizer/asan/asan_malloc_linux.cpp:69
#1 0x5750c7f6d72b in main /home/alan/build/gas-san/all/bfd/conftest.c:239
Direct leak of 4096 byte(s) in 1 object(s) allocated from:
#0 0x7cdd3d0defdf in __interceptor_malloc ../../../../src/libsanitizer/asan/asan_malloc_linux.cpp:69
#1 0x5750c7f6d2e1 in main /home/alan/build/gas-san/all/bfd/conftest.c:190
SUMMARY: AddressSanitizer: 8192 byte(s) leaked in 2 allocation(s).
Define GCC_AC_FUNC_MMAP with export ASAN_OPTIONS=detect_leaks=0 to avoid
the sanitizer configure check failure.
config/
* mmap.m4 (GCC_AC_FUNC_MMAP): New.
* no-executables.m4 (AC_FUNC_MMAP): Renamed to GCC_AC_FUNC_MMAP.
Change AC_FUNC_MMAP to GCC_AC_FUNC_MMAP.
libiberty/
* Makefile.in (aclocal_deps): Add $(srcdir)/../config/mmap.m4.
* acinclude.m4: Change AC_FUNC_MMAP to GCC_AC_FUNC_MMAP.
* aclocal.m4: Regenerated.
* configure: Likewise.
zlib/
* acinclude.m4: Include ../config/mmap.m4.
* Makefile.in: Regenerated.
* configure: Likewise.
---
config/mmap.m4 | 12 ++++++++++++
config/no-executables.m4 | 4 ++--
libiberty/Makefile.in | 1 +
libiberty/acinclude.m4 | 2 +-
libiberty/aclocal.m4 | 1 +
libiberty/configure | 5 +++++
zlib/Makefile.in | 2 +-
zlib/acinclude.m4 | 1 +
zlib/configure | 7 -------
9 files changed, 24 insertions(+), 11 deletions(-)
diff --git a/config/mmap.m4 b/config/mmap.m4
index fba0d9d3657..5ebdb90e4ee 100644
--- a/config/mmap.m4
+++ b/config/mmap.m4
@@ -95,3 +95,15 @@ if test $gcc_cv_func_mmap_anon = yes; then
[Define if mmap with MAP_ANON(YMOUS) works.])
fi
])
+
+dnl
+dnl Avoid the sanitizer run-time memory leak failure in the mmap configure
+dnl test.
+dnl
+AC_DEFUN([GCC_AC_FUNC_MMAP],
+ save_ASAN_OPTIONS="$ASAN_OPTIONS"
+ ASAN_OPTIONS=detect_leaks=0
+ export ASAN_OPTIONS
+ m4_defn([AC_FUNC_MMAP])
+ ASAN_OPTIONS="$save_ASAN_OPTIONS"
+)
diff --git a/config/no-executables.m4 b/config/no-executables.m4
index 6842f84fba3..e8e2537bde5 100644
--- a/config/no-executables.m4
+++ b/config/no-executables.m4
@@ -49,14 +49,14 @@ m4_defn([AC_LINK_IFELSE]))
dnl This is a shame. We have to provide a default for some link tests,
dnl similar to the default for run tests.
-m4_define([AC_FUNC_MMAP],
+m4_define([GCC_AC_FUNC_MMAP],
if test x$gcc_no_link = xyes; then
if test "x${ac_cv_func_mmap_fixed_mapped+set}" != xset; then
ac_cv_func_mmap_fixed_mapped=no
fi
fi
if test "x${ac_cv_func_mmap_fixed_mapped}" != xno; then
- m4_defn([AC_FUNC_MMAP])
+ m4_defn([GCC_AC_FUNC_MMAP])
fi)
m4_divert_pop()dnl
diff --git a/libiberty/Makefile.in b/libiberty/Makefile.in
index 85c4b6b6ef8..b77a41c781c 100644
--- a/libiberty/Makefile.in
+++ b/libiberty/Makefile.in
@@ -508,6 +508,7 @@ aclocal_deps = \
$(srcdir)/../config/cet.m4 \
$(srcdir)/../config/enable.m4 \
$(srcdir)/../config/gcc-plugin.m4 \
+ $(srcdir)/../config/mmap.m4 \
$(srcdir)/../config/no-executables.m4 \
$(srcdir)/../config/override.m4 \
$(srcdir)/../config/picflag.m4 \
diff --git a/libiberty/acinclude.m4 b/libiberty/acinclude.m4
index 9974dcd4ec5..d08e31bc0b5 100644
--- a/libiberty/acinclude.m4
+++ b/libiberty/acinclude.m4
@@ -19,7 +19,7 @@ dnl On some versions of SunOS4 at least, strncmp reads a word at a time
dnl but erroneously reads past the end of strings. This can cause
dnl a SEGV in some cases.
AC_DEFUN([libiberty_AC_FUNC_STRNCMP],
-[AC_REQUIRE([AC_FUNC_MMAP])
+[AC_REQUIRE([GCC_AC_FUNC_MMAP])
AC_CACHE_CHECK([for working strncmp], ac_cv_func_strncmp_works,
[AC_TRY_RUN([
/* Test by Jim Wilson and Kaveh Ghazi.
diff --git a/libiberty/aclocal.m4 b/libiberty/aclocal.m4
index 364fb6bc3b4..9678b0acaba 100644
--- a/libiberty/aclocal.m4
+++ b/libiberty/aclocal.m4
@@ -17,6 +17,7 @@ m4_include([../config/cet.m4])
m4_include([../config/enable.m4])
m4_include([../config/gcc-plugin.m4])
m4_include([../config/hwcaps.m4])
+m4_include([../config/mmap.m4])
m4_include([../config/no-executables.m4])
m4_include([../config/override.m4])
m4_include([../config/picflag.m4])
diff --git a/libiberty/configure b/libiberty/configure
index 5c69fee56c1..18e98b84bb5 100755
--- a/libiberty/configure
+++ b/libiberty/configure
@@ -7724,6 +7724,9 @@ if test x$gcc_no_link = xyes; then
fi
fi
if test "x${ac_cv_func_mmap_fixed_mapped}" != xno; then
+ save_ASAN_OPTIONS="$ASAN_OPTIONS"
+ ASAN_OPTIONS=detect_leaks=0
+ export ASAN_OPTIONS
for ac_func in getpagesize
do :
@@ -7902,6 +7905,8 @@ $as_echo "#define HAVE_MMAP 1" >>confdefs.h
fi
rm -f conftest.mmap conftest.txt
+ ASAN_OPTIONS="$save_ASAN_OPTIONS"
+
fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for working strncmp" >&5
diff --git a/zlib/Makefile.in b/zlib/Makefile.in
index dd8a21deba1..951260ac4c5 100644
--- a/zlib/Makefile.in
+++ b/zlib/Makefile.in
@@ -98,7 +98,7 @@ am__aclocal_m4_deps = $(top_srcdir)/../config/depstand.m4 \
$(top_srcdir)/../config/override.m4 \
$(top_srcdir)/../ltoptions.m4 $(top_srcdir)/../ltsugar.m4 \
$(top_srcdir)/../ltversion.m4 $(top_srcdir)/../lt~obsolete.m4 \
- $(top_srcdir)/acinclude.m4 \
+ $(top_srcdir)/acinclude.m4 $(top_srcdir)/../config/mmap.m4 \
$(top_srcdir)/../config/no-executables.m4 \
$(top_srcdir)/../libtool.m4 $(top_srcdir)/configure.ac
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
diff --git a/zlib/acinclude.m4 b/zlib/acinclude.m4
index 9a5f5485716..3b8be00d702 100644
--- a/zlib/acinclude.m4
+++ b/zlib/acinclude.m4
@@ -1,3 +1,4 @@
+sinclude(../config/mmap.m4)
sinclude(../config/no-executables.m4)
sinclude(../libtool.m4)
dnl The lines below arrange for aclocal not to bring libtool.m4
diff --git a/zlib/configure b/zlib/configure
index 2d551360683..0e8a28a09a8 100755
--- a/zlib/configure
+++ b/zlib/configure
@@ -11245,12 +11245,6 @@ if test -n "$with_cross_host"; then
# We ignore --with-system-zlib in this case.
target_all=libzgcj.la
else
- if test x$gcc_no_link = xyes; then
- if test "x${ac_cv_func_mmap_fixed_mapped+set}" != xset; then
- ac_cv_func_mmap_fixed_mapped=no
- fi
-fi
-if test "x${ac_cv_func_mmap_fixed_mapped}" != xno; then
@@ -11452,7 +11446,6 @@ $as_echo "#define HAVE_MMAP 1" >>confdefs.h
fi
rm -f conftest.mmap conftest.txt
-fi
for ac_func in memcpy strerror
do :
as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
--
2.44.0
next prev parent reply other threads:[~2024-04-09 14:24 UTC|newest]
Thread overview: 7+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-04-09 14:24 [PATCH 0/2] " H.J. Lu
2024-04-09 14:24 ` H.J. Lu [this message]
2024-04-09 14:24 ` [PATCH 2/2] " H.J. Lu
2024-04-09 23:08 ` [PATCH 0/2] " Sam James
2024-04-09 23:23 ` H.J. Lu
2024-04-10 5:39 ` Alan Modra
2024-04-10 10:56 ` H.J. Lu
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20240409142435.1708867-2-hjl.tools@gmail.com \
--to=hjl.tools@gmail.com \
--cc=amodra@gmail.com \
--cc=binutils@sourceware.org \
--cc=gcc-patches@gcc.gnu.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).