]> granicus.if.org Git - php/commitdiff
Fix undefined symbol error when compiling with LLVM
authorStanislav Malyshev <stas@php.net>
Sat, 17 Oct 2015 00:23:18 +0000 (17:23 -0700)
committerStanislav Malyshev <stas@php.net>
Sat, 17 Oct 2015 00:23:18 +0000 (17:23 -0700)
Basically, LLVM in default mode treats inline in a way incompatible
with GCC in c89 mode, which leads to undefined symbol errors.
See more here: http://stackoverflow.com/questions/12844729/linking-error-for-inline-functions

ext/hash/hash_sha3.c

index e82bd24027623cbfb05ef00183da4e6fa278d96e..5898009594f36272b715bc86505fdadae7a0deef 100644 (file)
 # endif
 #endif
 
-inline php_hash_uint64 rol64(php_hash_uint64 v, unsigned char b) {
+static inline php_hash_uint64 rol64(php_hash_uint64 v, unsigned char b) {
        return (v << b) | (v >> (64 - b));
 }
-inline unsigned char idx(unsigned char x, unsigned char y) {
+static inline unsigned char idx(unsigned char x, unsigned char y) {
        return x + (5 * y);
 }
 
 #ifdef WORDS_BIGENDIAN
-inline php_hash_uint64 load64(const unsigned char* x) {
+static inline php_hash_uint64 load64(const unsigned char* x) {
        php_hash_uint64 ret = 0;
        for (unsigned char i = 7; i >= 0; --i) {
                ret <<= 8;
@@ -45,13 +45,13 @@ inline php_hash_uint64 load64(const unsigned char* x) {
        }
        return ret;
 }
-inline void store64(const unsigned char* x, php_hash_uint64 val) {
+static inline void store64(const unsigned char* x, php_hash_uint64 val) {
        for (unsigned char i = 0; i < 8; ++i) {
                x[i] = val & 0xFF;
                val >>= 8;
        }
 }
-inline void xor64(const unsigned char* x, php_hash_uint64 val) {
+static inline void xor64(const unsigned char* x, php_hash_uint64 val) {
        for (unsigned char i = 0; i < 8; ++i) {
                x[i] ^= val & 0xFF;
                val >>= 8;
@@ -66,7 +66,7 @@ inline void xor64(const unsigned char* x, php_hash_uint64 val) {
 # define XORLane(x, y, v)   (((php_hash_uint64*)ctx->state)[idx(x,y)] ^= v)
 #endif
 
-inline char LFSR86540(unsigned char* pLFSR)
+static inline char LFSR86540(unsigned char* pLFSR)
 {
        unsigned char LFSR = *pLFSR;
        char result = LFSR & 0x01;