Discussion:
[PATCH] elf32-nds32: Don't define fls if it is provided by the system
Simon Marchi
2018-09-20 20:22:59 UTC
Permalink
The fls function already exists on macOS and FreeBSD (and probably others),
leading to this error:

/Users/simark/src/binutils-gdb/bfd/elf32-nds32.c:5074:1: error: static declaration of 'fls' follows non-static declaration
fls (register unsigned int x)
^
/usr/include/strings.h:87:6: note: previous declaration is here
int fls(int) __OSX_AVAILABLE_STARTING(__MAC_10_5, __IPHONE_2_0);
^

Add a configure-time check for it, and only define it if the system doesn't
provide it.

bfd/ChangeLog:

* configure.ac: Check for fls.
* elf32-nds32.c (fls): Only define if !HAVE_FLS.
* config.in: Re-generate.
* configure: Re-generate.
---
bfd/config.in | 3 +++
bfd/configure | 2 +-
bfd/configure.ac | 2 +-
bfd/elf32-nds32.c | 2 ++
4 files changed, 7 insertions(+), 2 deletions(-)

diff --git a/bfd/config.in b/bfd/config.in
index 6ebdc51b981..be572969fc0 100644
--- a/bfd/config.in
+++ b/bfd/config.in
@@ -107,6 +107,9 @@
/* Define to 1 if you have the `fileno' function. */
#undef HAVE_FILENO

+/* Define to 1 if you have the `fls' function. */
+#undef HAVE_FLS
+
/* Define to 1 if you have the `fopen64' function. */
#undef HAVE_FOPEN64

diff --git a/bfd/configure b/bfd/configure
index 8c83a6a08ee..4c94cf0b8dd 100755
--- a/bfd/configure
+++ b/bfd/configure
@@ -14089,7 +14089,7 @@ $as_echo "#define STRING_WITH_STRINGS 1" >>confdefs.h

fi

-for ac_func in fcntl getpagesize setitimer sysconf fdopen getuid getgid fileno
+for ac_func in fcntl getpagesize setitimer sysconf fdopen getuid getgid fileno fls
do :
as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var"
diff --git a/bfd/configure.ac b/bfd/configure.ac
index 787ac7fa658..270e54e7d13 100644
--- a/bfd/configure.ac
+++ b/bfd/configure.ac
@@ -229,7 +229,7 @@ AC_HEADER_TIME
AC_HEADER_DIRENT

ACX_HEADER_STRING
-AC_CHECK_FUNCS(fcntl getpagesize setitimer sysconf fdopen getuid getgid fileno)
+AC_CHECK_FUNCS(fcntl getpagesize setitimer sysconf fdopen getuid getgid fileno fls)
AC_CHECK_FUNCS(strtoull getrlimit)

AC_CHECK_DECLS(basename)
diff --git a/bfd/elf32-nds32.c b/bfd/elf32-nds32.c
index a4f5ca4dc33..0d86e5b8650 100644
--- a/bfd/elf32-nds32.c
+++ b/bfd/elf32-nds32.c
@@ -5070,11 +5070,13 @@ ones32 (register unsigned int x)
return (x & 0x0000003f);
}

+#if !HAVE_FLS
static unsigned int
fls (register unsigned int x)
{
return ffs (x & (-x));
}
+#endif /* !HAVE_FLS */

#define nds32_elf_local_tlsdesc_gotent(bfd) \
(elf_nds32_tdata (bfd)->local_tlsdesc_gotent)
--
2.19.0
Alan Modra
2018-09-20 23:38:37 UTC
Permalink
Post by Simon Marchi
The fls function already exists on macOS and FreeBSD (and probably others),
/Users/simark/src/binutils-gdb/bfd/elf32-nds32.c:5074:1: error: static declaration of 'fls' follows non-static declaration
fls (register unsigned int x)
^
/usr/include/strings.h:87:6: note: previous declaration is here
int fls(int) __OSX_AVAILABLE_STARTING(__MAC_10_5, __IPHONE_2_0);
^
Add a configure-time check for it, and only define it if the system doesn't
provide it.
* configure.ac: Check for fls.
* elf32-nds32.c (fls): Only define if !HAVE_FLS.
* config.in: Re-generate.
* configure: Re-generate.
OK.
--
Alan Modra
Australia Development Lab, IBM
Simon Marchi
2018-09-21 14:28:42 UTC
Permalink
Post by Simon Marchi
The fls function already exists on macOS and FreeBSD (and probably others),
/Users/simark/src/binutils-gdb/bfd/elf32-nds32.c:5074:1: error: static declaration of 'fls' follows non-static declaration
fls (register unsigned int x)
^
/usr/include/strings.h:87:6: note: previous declaration is here
int fls(int) __OSX_AVAILABLE_STARTING(__MAC_10_5, __IPHONE_2_0);
^
Add a configure-time check for it, and only define it if the system doesn't
provide it.
* configure.ac: Check for fls.
* elf32-nds32.c (fls): Only define if !HAVE_FLS.
* config.in: Re-generate.
* configure: Re-generate.
OK.
Thanks, pushed

Loading...