[binutils-gdb/binutils-2_37-branch] Check for strnlen declaration to fix Solaris 10 build

Rainer Orth ro@sourceware.org
Wed Jul 7 11:55:37 GMT 2021


https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;h=64af9fedf2459d2e597a3a88e82e265133b461d8

commit 64af9fedf2459d2e597a3a88e82e265133b461d8
Author: Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
Date:   Wed Jul 7 13:55:14 2021 +0200

    Check for strnlen declaration to fix Solaris 10 build
    
    binutils currently fails to compile on Solaris 10:
    
    /vol/src/gnu/binutils/hg/binutils-2.37-branch/git/bfd/opncls.c: In function 'bfd_get_debug_link_info_1':
    /vol/src/gnu/binutils/hg/binutils-2.37-branch/git/bfd/opncls.c:1231:16: error: implicit declaration of function 'strnlen' [-Werror=implicit-function-declaration]
     1231 |   crc_offset = strnlen (name, size) + 1;
          |                ^~~~~~~
    /vol/src/gnu/binutils/hg/binutils-2.37-branch/git/bfd/opncls.c:1231:16: error: incompatible implicit declaration of built-in function 'strnlen' [-Werror]
    /vol/src/gnu/binutils/hg/binutils-2.37-branch/git/bfd/opncls.c: In function 'bfd_get_alt_debug_link_info':
    /vol/src/gnu/binutils/hg/binutils-2.37-branch/git/bfd/opncls.c:1319:20: error: incompatible implicit declaration of built-in function 'strnlen' [-Werror]
     1319 |   buildid_offset = strnlen (name, size) + 1;
          |                    ^~~~~~~
    
    and in a couple of other places.  The platform lacks strnlen, and while
    libiberty.h can provide a fallback declaration, the necessary configure
    test isn't run.
    
    Fixed with the following patch.  Tested on i386-pc-solaris2.10.
    
    2021-07-06  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
    
            bfd:
            * configure.ac: Check for strnlen declaration.
            * configure, config.in: Regenerate.
    
            binutils:
            * configure.ac: Check for strnlen declaration.
            * configure, config.in: Regenerate.

Diff:
---
 bfd/ChangeLog         |  5 +++++
 bfd/config.in         |  4 ++++
 bfd/configure         | 10 ++++++++++
 bfd/configure.ac      |  2 +-
 binutils/ChangeLog    |  5 +++++
 binutils/config.in    |  4 ++++
 binutils/configure    | 10 ++++++++++
 binutils/configure.ac |  2 +-
 8 files changed, 40 insertions(+), 2 deletions(-)

diff --git a/bfd/ChangeLog b/bfd/ChangeLog
index 78f84b149e0..f2af3b01ef0 100644
--- a/bfd/ChangeLog
+++ b/bfd/ChangeLog
@@ -1,3 +1,8 @@
+2021-07-07  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
+
+	* configure.ac: Check for strnlen declaration.
+	* configure, config.in: Regenerate.
+
 2021-07-05  H.J. Lu  <hongjiu.lu@intel.com>
 
 	PR ld/28040
diff --git a/bfd/config.in b/bfd/config.in
index 6d46ea72a6c..f54a3cacbea 100644
--- a/bfd/config.in
+++ b/bfd/config.in
@@ -56,6 +56,10 @@
    */
 #undef HAVE_DECL_STPCPY
 
+/* Define to 1 if you have the declaration of `strnlen', and to 0 if you
+   don't. */
+#undef HAVE_DECL_STRNLEN
+
 /* Define to 1 if you have the declaration of `vasprintf', and to 0 if you
    don't. */
 #undef HAVE_DECL_VASPRINTF
diff --git a/bfd/configure b/bfd/configure
index c46e85eb73d..6faff42ca81 100755
--- a/bfd/configure
+++ b/bfd/configure
@@ -12890,6 +12890,16 @@ fi
 cat >>confdefs.h <<_ACEOF
 #define HAVE_DECL_VASPRINTF $ac_have_decl
 _ACEOF
+ac_fn_c_check_decl "$LINENO" "strnlen" "ac_cv_have_decl_strnlen" "$ac_includes_default"
+if test "x$ac_cv_have_decl_strnlen" = xyes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
+fi
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_STRNLEN $ac_have_decl
+_ACEOF
 
 
 
diff --git a/bfd/configure.ac b/bfd/configure.ac
index 07a75ed1626..fec067b2135 100644
--- a/bfd/configure.ac
+++ b/bfd/configure.ac
@@ -260,7 +260,7 @@ AC_CHECK_HEADERS(fcntl.h sys/file.h sys/resource.h sys/stat.h sys/types.h \
 AC_CHECK_FUNCS(fcntl fdopen fileno fls getgid getpagesize getrlimit getuid \
 	       sysconf)
 
-AC_CHECK_DECLS([basename, ffs, stpcpy, asprintf, vasprintf])
+AC_CHECK_DECLS([basename, ffs, stpcpy, asprintf, vasprintf, strnlen])
 
 BFD_BINARY_FOPEN
 
diff --git a/binutils/ChangeLog b/binutils/ChangeLog
index e0cb4c97f1f..1db8ef60e1e 100644
--- a/binutils/ChangeLog
+++ b/binutils/ChangeLog
@@ -1,3 +1,8 @@
+2021-07-07  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
+
+	* configure.ac: Check for strnlen declaration.
+	* configure, config.in: Regenerate.
+
 2021-07-05  Nick Clifton  <nickc@redhat.com>
 
 	* po/uk.po: Updated Ukranian translation.
diff --git a/binutils/config.in b/binutils/config.in
index e79967c5c14..e6fa66fc41b 100644
--- a/binutils/config.in
+++ b/binutils/config.in
@@ -55,6 +55,10 @@
    */
 #undef HAVE_DECL_STPCPY
 
+/* Define to 1 if you have the declaration of `strnlen', and to 0 if you
+   don't. */
+#undef HAVE_DECL_STRNLEN
+
 /* Define to 1 if you have the <dlfcn.h> header file. */
 #undef HAVE_DLFCN_H
 
diff --git a/binutils/configure b/binutils/configure
index 2698196671b..eeb8c2d3819 100755
--- a/binutils/configure
+++ b/binutils/configure
@@ -13642,6 +13642,16 @@ fi
 cat >>confdefs.h <<_ACEOF
 #define HAVE_DECL_STPCPY $ac_have_decl
 _ACEOF
+ac_fn_c_check_decl "$LINENO" "strnlen" "ac_cv_have_decl_strnlen" "$ac_includes_default"
+if test "x$ac_cv_have_decl_strnlen" = xyes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
+fi
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_STRNLEN $ac_have_decl
+_ACEOF
 
 
 # Link in zlib if we can.  This allows us to read compressed debug
diff --git a/binutils/configure.ac b/binutils/configure.ac
index b8ab642e068..b2d0be00b60 100644
--- a/binutils/configure.ac
+++ b/binutils/configure.ac
@@ -265,7 +265,7 @@ if test $bu_cv_header_utime_h = yes; then
   AC_DEFINE(HAVE_GOOD_UTIME_H, 1, [Does <utime.h> define struct utimbuf?])
 fi
 
-AC_CHECK_DECLS([asprintf, environ, getc_unlocked, sbrk, stpcpy])
+AC_CHECK_DECLS([asprintf, environ, getc_unlocked, sbrk, stpcpy, strnlen])
 
 # Link in zlib if we can.  This allows us to read compressed debug
 # sections.  This is used only by readelf.c (objdump uses bfd for


More information about the Binutils-cvs mailing list