Message ID | 20151211130714.GD54973@joyent.com (mailing list archive) |
---|---|
State | Changes Requested |
Delegated to: | Herbert Xu |
Headers | show |
On Fri, Dec 11, 2015 at 01:07:14PM +0000, Jonathan Perkin wrote: > In a 64-bit Solaris environment there is no stat64() function, only > stat(). This conflicts with the stat64 #define used to support > dietlibc/klibc when stat64() is not found and results in: > > ./../config.h:194:16: error: redefinition of 'struct stat' > #define stat64 stat > ^ > In file included from cd.c:36:0: > /usr/include/sys/stat.h:217:8: note: originally defined here > struct stat { > ^ > > Instead, add a AC_CHECK_DECL test for stat64, and only perform the > AC_CHECK_FUNC test if it isn't already defined. I don't understand, does stat64 exist or not? If it doesn't then how can AC_CHECK_DECL help? Or do you mean that it only exists as a macro? Thanks,
* On 2016-06-06 at 15:27 BST, Herbert Xu wrote: > On Fri, Dec 11, 2015 at 01:07:14PM +0000, Jonathan Perkin wrote: > > In a 64-bit Solaris environment there is no stat64() function, only > > stat(). This conflicts with the stat64 #define used to support > > dietlibc/klibc when stat64() is not found and results in: > > > > ./../config.h:194:16: error: redefinition of 'struct stat' > > #define stat64 stat > > ^ > > In file included from cd.c:36:0: > > /usr/include/sys/stat.h:217:8: note: originally defined here > > struct stat { > > ^ > > > > Instead, add a AC_CHECK_DECL test for stat64, and only perform the > > AC_CHECK_FUNC test if it isn't already defined. > > I don't understand, does stat64 exist or not? If it doesn't then > how can AC_CHECK_DECL help? Or do you mean that it only exists as > a macro? Right, it only exists as a macro, defined as #define stat64 stat in sys/stat.h. The AC_CHECK_FUNC test fails as it doesn't pull in any includes, and cannot find a stat64() function in libc. Adding the AC_CHECK_DECL test finds the definition and avoids running the AC_CHECK_FUNC tests if that is the case.
On Mon, Jun 06, 2016 at 04:22:59PM +0100, Jonathan Perkin wrote: > > Right, it only exists as a macro, defined as > > #define stat64 stat > > in sys/stat.h. The AC_CHECK_FUNC test fails as it doesn't pull in any > includes, and cannot find a stat64() function in libc. > > Adding the AC_CHECK_DECL test finds the definition and avoids running > the AC_CHECK_FUNC tests if that is the case. OK, how about just changing the AC_CHECK_FUNC to AC_CHECK_DECL? Please resubmit the patch. Thanks,
diff --git a/configure.ac b/configure.ac index 8ae0dc6..f4c9b87 100644 --- a/configure.ac +++ b/configure.ac @@ -139,10 +139,12 @@ if test "$ac_cv_func_signal" != yes; then fi dnl Check for stat64 (dietlibc/klibc). -AC_CHECK_FUNC(stat64,, [ - AC_DEFINE(fstat64, fstat, [64-bit operations are the same as 32-bit]) - AC_DEFINE(lstat64, lstat, [64-bit operations are the same as 32-bit]) - AC_DEFINE(stat64, stat, [64-bit operations are the same as 32-bit]) +AC_CHECK_DECL(stat64,,[ + AC_CHECK_FUNC(stat64,, [ + AC_DEFINE(fstat64, fstat, [64-bit operations are the same as 32-bit]) + AC_DEFINE(lstat64, lstat, [64-bit operations are the same as 32-bit]) + AC_DEFINE(stat64, stat, [64-bit operations are the same as 32-bit]) + ]) ]) AC_CHECK_FUNC(open64,, [