Fix 64-bit Solaris build
PATCH 1/1 Fix 64-bit Solaris build
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.
--- configure.ac | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-)
configure.ac +6 -4
@@ -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,, [
Signature · 4 lines
2.4.9 (Apple Git-60) -- Jonathan Perkin - Joyent, Inc. - www.joyent.com
Quoted 12 lines · Jonathan Perkin
In a 64-bit Solaris environment there is no
stat64()function, onlystat(). This conflicts with the stat64 #define used to support dietlibc/klibc whenstat64()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 { ^
Quoted 2 lines
Instead, add a
AC_CHECK_DECLtest for stat64, and only perform theAC_CHECK_FUNCtest 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,
Signature · 3 lines
Email: Herbert Xu <[email protected]> Home Page: http://gondor.apana.org.au/~herbert/ PGP Key: http://gondor.apana.org.au/~herbert/pubkey.txt
Quoted 13 lines · * On 2016-06-06 at 15:27 BST, Herbert Xu wrote:
Quoted 12 lines · Jonathan Perkin
In a 64-bit Solaris environment there is no
stat64()function, onlystat(). This conflicts with the stat64 #define used to support dietlibc/klibc whenstat64()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 { ^
Quoted 6 lines
Quoted 2 lines
Instead, add a
AC_CHECK_DECLtest for stat64, and only perform theAC_CHECK_FUNCtest if it isn't already defined.I don't understand, does stat64 exist or not? If it doesn't then how can
AC_CHECK_DECLhelp? 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.
Signature · 1 line
Jonathan Perkin - Joyent, Inc. - www.joyent.com
Quoted 10 lines · Jonathan Perkin
Right, it only exists as a macro, defined as
#define stat64 statin
sys/stat.h. TheAC_CHECK_FUNCtest fails as it doesn't pull in any includes, and cannot find astat64()function in libc.Adding the
AC_CHECK_DECLtest finds the definition and avoids running theAC_CHECK_FUNCtests if that is the case.
OK, how about just changing the AC_CHECK_FUNC to AC_CHECK_DECL?
Please resubmit the patch.
Thanks,
Signature · 3 lines
Email: Herbert Xu <[email protected]> Home Page: http://gondor.apana.org.au/~herbert/ PGP Key: http://gondor.apana.org.au/~herbert/pubkey.txt