Check for strnlen declaration to fix Solaris 10 build
authorRainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
Wed, 7 Jul 2021 11:44:31 +0000 (13:44 +0200)
committerRainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
Wed, 7 Jul 2021 11:49:27 +0000 (13:49 +0200)
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.

bfd/ChangeLog
bfd/config.in
bfd/configure
bfd/configure.ac
binutils/ChangeLog
binutils/config.in
binutils/configure
binutils/configure.ac

index 96bd8ff29d021c172da4cb2b01d2f4ea6501437a..d96cc78870422b65cdecc8bbbd65154458632f44 100644 (file)
@@ -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-07  Nick Clifton  <nickc@redhat.com>
 
        PR 28051
index 6d46ea72a6c3a44a83cd386dc97db4522639466d..f54a3cacbea7eeba286d363ee9dfcb1a55efccd1 100644 (file)
    */
 #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
index daa51244369429f0ed97d00954af97fc6e1ab0d7..24171d00344a900d333bdb058fa02aa0f72f1176 100755 (executable)
 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
 
 
 
index 07a75ed162639427d8a9243dd6ce509bdfbec90c..fec067b21356799ecdb945f4ce172150624d3ec7 100644 (file)
@@ -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
 
index 77b7ac711e0300787f8e3db8aff5bae895205651..be5fd77b8384be11940186fab592a6209ca591b5 100644 (file)
@@ -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  Alan Modra  <amodra@gmail.com>
 
        PR 28047
index e79967c5c14c8311dfc2d9a74c7a70c063173c52..e6fa66fc41b61d9fd9b656e5c979f5955534802a 100644 (file)
    */
 #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
 
index bf6461dab1e68cd89c03ad197c9a96e62b4ae86d..82640b8b23468420a8a3735dbd4916a1c0529a21 100755 (executable)
 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
index b8ab642e06880031f7db1f7afde5ba434d5dc0b9..b2d0be00b60b073ea5b98af7290db2bde3106c6e 100644 (file)
@@ -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