Skip to contentSkip to conversation

Fix 64-bit Solaris build

PATCH In review Jonathan Perkin 2 participants 4 messages Dec 11, 2015 – Jun 7, 2016

lore
Share & tools
lore
#0 lore raw

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
index 8ae0dc6..f4c9b87 100644
@@ -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
#1 lore raw
Quoted 12 lines · Jonathan Perkin

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 {
          ^
Quoted 2 lines

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,

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
#2 lore raw
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, 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 {
          ^
Quoted 6 lines
Quoted 2 lines

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.

Signature · 1 line
Jonathan Perkin  -  Joyent, Inc.  -  www.joyent.com
#3 lore raw
Quoted 10 lines · Jonathan Perkin

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,

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