You can try this patch to check if it works.
>From 74b502bcbef74927b2e006ac399a4d3b3de1d331 Mon Sep 17 00:00:00 2001
From: Vincent Bernat <[email protected]>
Date: Wed, 18 May 2016 19:38:36 +0200
Subject: [PATCH] MINOR: use a macro for htonll/ntohll
Some OS have a definition for htonll/ntohll using a regular function and
the signature is not compatible with the provided function. Instead,
provide a macro that would shadow such a definition instead of
conflicting with it.
---
include/common/standard.h | 8 +++-----
1 file changed, 3 insertions(+), 5 deletions(-)
diff --git a/include/common/standard.h b/include/common/standard.h
index f123f1a41dfb..2cd7fc48937c 100644
--- a/include/common/standard.h
+++ b/include/common/standard.h
@@ -1049,7 +1049,7 @@ static inline unsigned char utf8_return_length(unsigned char code)
* a few bswap and 2 shifts are left, which is the minimum acceptable.
*/
#ifndef htonll
-static inline unsigned long long htonll(unsigned long long a)
+static inline unsigned long long _htonll(unsigned long long a)
{
union {
struct {
@@ -1060,14 +1060,12 @@ static inline unsigned long long htonll(unsigned long long a)
} w = { .by64 = a };
return ((unsigned long long)htonl(w.by32.w1) << 32) | htonl(w.by32.w2);
}
+#define htonll(a) _htonll(a)
#endif
/* Turns 64-bit value <a> from network byte order to host byte order. */
#ifndef ntohll
-static inline unsigned long long ntohll(unsigned long long a)
-{
- return htonll(a);
-}
+#define ntohll(a) htonll(a)
#endif
/* returns a 64-bit a timestamp with the finest resolution available. The
--
2.8.1
--
Let the data structure the program.
- The Elements of Programming Style (Kernighan & Plauger)
――――――― Original Message ―――――――
From: Jonathan Fisher <[email protected]>
Sent: 18 mai 2016 12:56 -0400
Subject: Re: Compilation problem: haproxy 1.6.5 (latest) on Solaris 11
To: Vincent Bernat
Cc: [email protected]
> Oh man, I wish I was smart enough to understand what's happening
> there... what do I need to replace? (And for my own learning/benefit,
> can you explain what's happening?)
>
> Thank you!!!
>
> On Wed, May 18, 2016 at 12:07 PM, Vincent Bernat <[email protected]>
> wrote:
>
> Hey!
>
> Since there is some discrepancy in the definition of ntohll among
> platforms, I define this macro to shadow any existing definition:
>
> #ifndef ntohll
> # define ntohll(x) \
> (((u_int64_t)(ntohl((int)(((x) << 32) >> 32))) << 32) | \
> (unsigned int)ntohl(((int)((x) >> 32))))
> #endif
>
> You can try yourself. Or if you don't know what to replace, I can
> provide a patch.
> --
> Don't compare floating point numbers just for equality.
> - The Elements of Programming Style (Kernighan & Plauger)
>
> ――――――― Original Message ―――――――
> From: Jonathan Fisher <[email protected]>
> Sent: 18 mai 2016 10:22 -0400
> Subject: Compilation problem: haproxy 1.6.5 (latest) on Solaris 11
> To: [email protected]
>
>
>
> > We can get 1.5 to compile quite nicely on Solaris 11 :) 1.6 has
> a few
> > nice features though we'd like to have, if it all possible. I
> have a
> > VMDK created if the developers want to try it themselves in a
> virtual
> > machine.
> >
> > Here is the output of the compiler, which is GCC-48:
> >
> > user@tomee:~/haproxy-1.6.5$ gmake TARGET=solaris
> > gcc -Iinclude -Iebtree -Wall -O2 -g -fno-strict-aliasing -
> > Wdeclaration-after-statement -fomit-frame-pointer -
> DFD_SETSIZE=65536 -
> > D_REENTRANT -DTPROXY -DCONFIG_HAP_CRYPT -DNEED_CRYPT_H -
> > DUSE_GETADDRINFO -DENABLE_POLL -
> DCONFIG_HAPROXY_VERSION=\"1.6.5\" -
> > DCONFIG_HAPROXY_DATE=\"2016/05/10\" \
> > -DBUILD_TARGET='"solaris"' \
> > -DBUILD_ARCH='""' \
> > -DBUILD_CPU='"generic"' \
> > -DBUILD_CC='"gcc"' \
> > -DBUILD_CFLAGS='"-O2 -g -fno-strict-aliasing -
> > Wdeclaration-after-statement -fomit-frame-pointer -
> DFD_SETSIZE=65536 -
> > D_REENTRANT"' \
> > -DBUILD_OPTIONS='""' \
> > -c -o src/haproxy.o src/haproxy.c
> > In file included from include/common/ticks.h:56:0,
> > from include/proto/proxy.h:26,
> > from include/common/cfgparse.h:30,
> > from src/haproxy.c:63:
> > include/common/standard.h:1013:34: error: static declaration of
> > 'htonll' follows non-static declaration
> > static inline unsigned long long htonll(unsigned long long a)
> > ^
> > In file included from /usr/include/netinet/in.h:73:0,
> > from /usr/include/sys/socket.h:29,
> > from src/haproxy.c:36:
> > /usr/include/sys/byteorder.h:75:17: note: previous declaration
> of
> > 'htonll' was here
> > extern uint64_t htonll(uint64_t);
> > ^
> > In file included from include/common/ticks.h:56:0,
> > from include/proto/proxy.h:26,
> > from include/common/cfgparse.h:30,
> > from src/haproxy.c:63:
> > include/common/standard.h:1028:34: error: static declaration of
> > 'ntohll' follows non-static declaration
> > static inline unsigned long long ntohll(unsigned long long a)
> > ^
> > In file included from /usr/include/netinet/in.h:73:0,
> > from /usr/include/sys/socket.h:29,
> > from src/haproxy.c:36:
> > /usr/include/sys/byteorder.h:76:17: note: previous declaration
> of
> > 'ntohll' was here
> > extern uint64_t ntohll(uint64_t);
> > ^
> > gmake: *** [src/haproxy.o] Error 1
> > user@tomee:~/haproxy-1.6.5$
> >
> > cheers,