SunCC doesnt return 0 for _LP64; this change seems to fix it.
--- lib/inttypes.in.h.orig 2008-12-28 13:44:04.000000000 +0000
+++ lib/inttypes.in.h
@@ -168,7 +168,7 @@
# endif
# endif
# ifdef INT64_MAX
-# if (@APPLE_UNIVERSAL_BUILD@ ? _LP64 : @INT64_MAX_EQ_LONG_MAX@)
+# if (@APPLE_UNIVERSAL_BUILD@ ? defined(_LP64) : @INT64_MAX_EQ_LONG_MAX@)
# define _PRI64_PREFIX "l"
# elif defined _MSC_VER || defined __MINGW32__
# define _PRI64_PREFIX "I64"
@@ -185,7 +185,7 @@
# endif
# endif
# ifdef UINT64_MAX
-# if (@APPLE_UNIVERSAL_BUILD@ ? _LP64 : @UINT64_MAX_EQ_ULONG_MAX@)
+# if (@APPLE_UNIVERSAL_BUILD@ ? defined(_LP64) : @UINT64_MAX_EQ_ULONG_MAX@)
# define _PRIu64_PREFIX "l"
# elif defined _MSC_VER || defined __MINGW32__
# define _PRIu64_PREFIX "I64"
@@ -661,7 +661,7 @@
# endif
# endif
# ifdef INT64_MAX
-# if (@APPLE_UNIVERSAL_BUILD@ ? _LP64 : @INT64_MAX_EQ_LONG_MAX@)
+# if (@APPLE_UNIVERSAL_BUILD@ ? defined(_LP64) : @INT64_MAX_EQ_LONG_MAX@)
# define _SCN64_PREFIX "l"
# elif defined _MSC_VER || defined __MINGW32__
# define _SCN64_PREFIX "I64"
@@ -678,7 +678,7 @@
# endif
# endif
# ifdef UINT64_MAX
-# if (@APPLE_UNIVERSAL_BUILD@ ? _LP64 : @UINT64_MAX_EQ_ULONG_MAX@)
+# if (@APPLE_UNIVERSAL_BUILD@ ? defined(_LP64) : @UINT64_MAX_EQ_ULONG_MAX@)
# define _SCNu64_PREFIX "l"
# elif defined _MSC_VER || defined __MINGW32__
# define _SCNu64_PREFIX "I64"