[MacPorts] #58626: nss @3.44 does not build on Mac OS X 10.4.11, PPC Tiger, 'SHA_MASK8' and 'SHA_MASK16' are both undeclared

MacPorts noreply at macports.org
Thu Jun 20 12:01:16 UTC 2019


#58626: nss @3.44 does not build on Mac OS X 10.4.11, PPC Tiger, 'SHA_MASK8' and
'SHA_MASK16' are both undeclared
-----------------------+--------------------
 Reporter:  ballapete  |      Owner:  (none)
     Type:  defect     |     Status:  new
 Priority:  Normal     |  Milestone:
Component:  ports      |    Version:  2.5.4
 Keywords:  tiger      |       Port:  nss
-----------------------+--------------------
 {{{
 /opt/local/bin/gcc-apple-4.2 -Os -std=c99 -arch ppc -o
 Output.OBJD/Darwin_SINGLE_SHLIB/crypto_primitives.o -c -Os -fPIC -Dppc
 -fno-common -pipe -DDARWIN -DHAVE_STRERROR -DHAVE_BSD_FLOCK  -Wall
 -Wshadow -DNSS_NO_GCC48 -DXP_UNIX -DSHLIB_SUFFIX=\"dylib\"
 -DSHLIB_PREFIX=\"lib\" -DSHLIB_VERSION=\"3\"
 -DSOFTOKEN_SHLIB_VERSION=\"3\" -DRIJNDAEL_INCLUDE_TABLES -UDEBUG -DNDEBUG
 -DNSS_NO_INIT_SUPPORT -DUSE_UTIL_DIRECTLY -DNO_NSPR_10_SUPPORT
 -DSSL_DISABLE_DEPRECATED_CIPHER_SUITE_NAMES -DKRML_NOUINT128
 -DMP_API_COMPATIBLE -I/opt/local/include/nspr
 -I../../../dist/Output.OBJD/include -I../../../dist/public/nss
 -I../../../dist/private/nss -Impi -Iecl -Iverified  -std=gnu99
 crypto_primitives.c
 crypto_primitives.c: In function 'swap8b':
 crypto_primitives.c:31: error: 'SHA_MASK8' undeclared (first use in this
 function)
 crypto_primitives.c:31: error: (Each undeclared identifier is reported
 only once
 crypto_primitives.c:31: error: for each function it appears in.)
 crypto_primitives.c:32: error: 'SHA_MASK16' undeclared (first use in this
 function)
 make[3]: *** [Output.OBJD/Darwin_SINGLE_SHLIB/crypto_primitives.o] Error 1
 make[3]: Leaving directory
 `/opt/local/var/macports/build/_opt_local_var_macports_sources_lil.fr.rsync.macports.org_release_tarballs_ports_net_nss/nss/work/nss-3.44/nss/lib/freebl'
 make[2]: *** [libs] Error 2
 make[2]: Leaving directory
 `/opt/local/var/macports/build/_opt_local_var_macports_sources_lil.fr.rsync.macports.org_release_tarballs_ports_net_nss/nss/work/nss-3.44/nss/lib/freebl'
 make[1]: *** [libs] Error 2
 make[1]: Leaving directory
 `/opt/local/var/macports/build/_opt_local_var_macports_sources_lil.fr.rsync.macports.org_release_tarballs_ports_net_nss/nss/work/nss-3.44/nss/lib'
 make: *** [libs] Error 2
 make: Leaving directory
 `/opt/local/var/macports/build/_opt_local_var_macports_sources_lil.fr.rsync.macports.org_release_tarballs_ports_net_nss/nss/work/nss-3.44/nss'
 Command failed:  cd
 "/opt/local/var/macports/build/_opt_local_var_macports_sources_lil.fr.rsync.macports.org_release_tarballs_ports_net_nss/nss/work/nss-3.44/nss"
 && /usr/bin/make -w all NSS_DISABLE_GTESTS=1 NSS_ENABLE_WERROR=0
 CC="/opt/local/bin/gcc-apple-4.2 -Os -std=c99 -arch ppc"
 CCC="/opt/local/bin/g++-apple-4.2 -Os -arch ppc"
 NSPR_INCLUDE_DIR=/opt/local/include/nspr NSPR_LIB_DIR=/opt/local/lib/nspr
 NSS_USE_SYSTEM_SQLITE=1 USE_SYSTEM_ZLIB=1 BUILD_OPT=1 OPTIMIZER="-Os"
 OBJDIR_NAME="Output.OBJD"
 Exit code: 2
 }}}

 The code where it happens is:

 {{{
 typedef unsigned long long PRUint64;
 ...
     9   /* This file holds useful functions and macros for crypto code. */
    10   #include "crypto_primitives.h"
    11
    12   /*
    13    * FREEBL_HTONLL(x): swap bytes in a 64-bit integer.
    14    */
    15   #if defined(__GNUC__) && (defined(__x86_64__) ||
 defined(__x86_64))
    16
    17   __inline__ PRUint64
    18   swap8b(PRUint64 value)
    19   {
    20       __asm__("bswapq %0"
    21               : "+r"(value));
    22       return (value);
    23   }
    24
    25   #elif !defined(_MSC_VER) && !__has_builtin(__builtin_bswap64) &&
 !((defined(__GNUC__) && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__
 >= 3))))
    26
    27   PRUint64
    28   swap8b(PRUint64 x)
    29   {
    30       PRUint64 t1 = x;
    31       t1 = ((t1 & SHA_MASK8) << 8) | ((t1 >> 8) & SHA_MASK8);
    32       t1 = ((t1 & SHA_MASK16) << 16) | ((t1 >> 16) & SHA_MASK16);
    33       return (t1 >> 32) | (t1 << 32);
    34   }
    35
    36   #endif
 }}}

 `crypto_primitives.h` has:

 {{{
    34   /*
    35    * FREEBL_HTONLL(x): swap bytes in a 64-bit integer.
    36    */
    37   #if defined(IS_LITTLE_ENDIAN)
    38   #if defined(_MSC_VER)
    39
    40   #pragma intrinsic(_byteswap_uint64)
    41   #define FREEBL_HTONLL(x) _byteswap_uint64(x)
    42
    43   /* gcc doesn't have __has_builtin, but it does have
 __builtin_bswap64 */
    44   #elif __has_builtin(__builtin_bswap64) || (defined(__GNUC__) &&
 (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 3)))
    45
    46   #define FREEBL_HTONLL(x) __builtin_bswap64(x)
    47
    48   #elif defined(__GNUC__) && (defined(__x86_64__) ||
 defined(__x86_64))
    49
    50   PRUint64 swap8b(PRUint64 value);
    51   #define FREEBL_HTONLL(x) swap8b(x)
    52
    53   #else
    54
    55   #define SHA_MASK16 0x0000FFFF0000FFFFULL
    56   #define SHA_MASK8 0x00FF00FF00FF00FFULL
    57   PRUint64 swap8b(PRUint64 x);
    58   #define FREEBL_HTONLL(x) swap8b(x)
    59
    60   #endif /* _MSC_VER */
    61
    62   #else /* IS_LITTLE_ENDIAN */
    63   #define FREEBL_HTONLL(x) (x)
    64   #endif
 }}}

 So it should build with GCC5 and later!

-- 
Ticket URL: <https://trac.macports.org/ticket/58626>
MacPorts <https://www.macports.org/>
Ports system for macOS


More information about the macports-tickets mailing list