From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: by sourceware.org (Postfix, from userid 1039) id 4D3DA3858CDB; Wed, 10 Apr 2024 10:59:02 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 4D3DA3858CDB DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sourceware.org; s=default; t=1712746742; bh=h5ioMKS19L59zCg4tuV3zTrirLHkUO68OB3GvLhck5I=; h=From:To:Subject:Date:From; b=rFXIybtedXy+Njf6QPD4mvUxdR+hB+7z8MTQDoX1Q6iah3kr6GQbBe3f0i0gtJoeD rPthFU7IMBwClrUx8GaQjCE1G7eCszi/1KHcAqXL4W/OJhgB0+rLYH2ThmQA/4kbRT cZpxmi0TKTleqCP5mZLe1SbULisOV31xw50c6DTM= Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable From: H.J. Lu To: binutils-cvs@sourceware.org, gdb-cvs@sourceware.org Subject: [binutils-gdb] mmap: Avoid the sanitizer configure check failure X-Act-Checkin: binutils-gdb X-Git-Author: H.J. Lu X-Git-Refname: refs/heads/master X-Git-Oldrev: bdefc073061ff9e9334a1306e9c70745104dc57f X-Git-Newrev: 219822fd5db6305592b45677a3b38c02b523360e Message-Id: <20240410105902.4D3DA3858CDB@sourceware.org> Date: Wed, 10 Apr 2024 10:59:02 +0000 (GMT) List-Id: https://sourceware.org/git/gitweb.cgi?p=3Dbinutils-gdb.git;h=3D219822fd5db6= 305592b45677a3b38c02b523360e commit 219822fd5db6305592b45677a3b38c02b523360e Author: H.J. Lu Date: Tue Apr 9 06:39:21 2024 -0700 mmap: Avoid the sanitizer configure check failure =20 When -fsanitize=3Daddress,undefined is used to build, the mmap configure check failed with =20 =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D =3D=3D231796=3D=3DERROR: LeakSanitizer: detected memory leaks =20 Direct leak of 4096 byte(s) in 1 object(s) allocated from: #0 0x7cdd3d0defdf in __interceptor_malloc ../../../../src/libsaniti= zer/asan/asan_malloc_linux.cpp:69 #1 0x5750c7f6d72b in main /home/alan/build/gas-san/all/bfd/conftest= .c:239 =20 Direct leak of 4096 byte(s) in 1 object(s) allocated from: #0 0x7cdd3d0defdf in __interceptor_malloc ../../../../src/libsaniti= zer/asan/asan_malloc_linux.cpp:69 #1 0x5750c7f6d2e1 in main /home/alan/build/gas-san/all/bfd/conftest= .c:190 =20 SUMMARY: AddressSanitizer: 8192 byte(s) leaked in 2 allocation(s). =20 Define GCC_AC_FUNC_MMAP with export ASAN_OPTIONS=3Ddetect_leaks=3D0 to = avoid the sanitizer configure check failure. =20 config/ =20 * 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. =20 libiberty/ =20 * 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. =20 zlib/ =20 * acinclude.m4: Include ../config/mmap.m4. * Makefile.in: Regenerated. * configure: Likewise. Diff: --- config/mmap.m4 | 22 ++++++++++++++++++++++ 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, 34 insertions(+), 11 deletions(-) diff --git a/config/mmap.m4 b/config/mmap.m4 index fba0d9d3657..326b97b91f4 100644 --- a/config/mmap.m4 +++ b/config/mmap.m4 @@ -95,3 +95,25 @@ if test $gcc_cv_func_mmap_anon =3D 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. This should be removed when autoconf with commit: +dnl +dnl commit 09b6e78d1592ce10fdc975025d699ee41444aa3f +dnl Author: Paul Eggert +dnl Date: Fri Feb 5 21:06:20 2016 -0800 +dnl Fix memory leak in AC_FUNC_MMAP +dnl +dnl * lib/autoconf/functions.m4 (AC_FUNC_MMAP): Fix memory leak +dnl in test case, found by configuring with gcc -fsanitize=3Daddress. +dnl +dnl is in use. +dnl +AC_DEFUN([GCC_AC_FUNC_MMAP], + save_ASAN_OPTIONS=3D"$ASAN_OPTIONS" + ASAN_OPTIONS=3Ddetect_leaks=3D0 + export ASAN_OPTIONS + m4_defn([AC_FUNC_MMAP]) + ASAN_OPTIONS=3D"$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])) =20 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 =3D xyes; then if test "x${ac_cv_func_mmap_fixed_mapped+set}" !=3D xset; then ac_cv_func_mmap_fixed_mapped=3Dno fi fi if test "x${ac_cv_func_mmap_fixed_mapped}" !=3D xno; then - m4_defn([AC_FUNC_MMAP]) + m4_defn([GCC_AC_FUNC_MMAP]) fi) =20 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 =3D \ $(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 =3D xyes; then fi fi if test "x${ac_cv_func_mmap_fixed_mapped}" !=3D xno; then + save_ASAN_OPTIONS=3D"$ASAN_OPTIONS" + ASAN_OPTIONS=3Ddetect_leaks=3D0 + export ASAN_OPTIONS =20 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 =20 + ASAN_OPTIONS=3D"$save_ASAN_OPTIONS" + fi =20 { $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 =3D $(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 =3D $(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=3Dlibzgcj.la else - if test x$gcc_no_link =3D xyes; then - if test "x${ac_cv_func_mmap_fixed_mapped+set}" !=3D xset; then - ac_cv_func_mmap_fixed_mapped=3Dno - fi -fi -if test "x${ac_cv_func_mmap_fixed_mapped}" !=3D xno; then =20 =20 =20 @@ -11452,7 +11446,6 @@ $as_echo "#define HAVE_MMAP 1" >>confdefs.h fi rm -f conftest.mmap conftest.txt =20 -fi for ac_func in memcpy strerror do : as_ac_var=3D`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`