From 6cf9b05b11fca3c0a2013176d9702cafbbcb5115 Mon Sep 17 00:00:00 2001 From: Spencer Thomason Date: Mon, 8 Aug 2016 16:40:14 -0700 Subject: [PATCH] core: use system MD5 on Solaris - Allows use of SPARC optimized functions --- Makefile.defs | 2 +- md5.c | 4 ++++ md5.h | 19 ++++++++++++------- 3 files changed, 17 insertions(+), 8 deletions(-) diff --git a/Makefile.defs b/Makefile.defs index af5fd451fbc..240fea59d9e 100644 --- a/Makefile.defs +++ b/Makefile.defs @@ -1832,7 +1832,7 @@ ifeq ($(CC_NAME), suncc) endif OLD_SOLARIS= $(shell echo "$(OSREL)" | \ sed -e 's/^5\.[0-6][^0-9]*$$/yes/' ) - LIBS+= -L$(LOCALBASE)/lib -lxnet -lsocket -lnsl + LIBS+= -L$(LOCALBASE)/lib -lxnet -lsocket -lnsl -lmd5 ifeq ($(OLD_SOLARIS), yes) LIBS+=-lposix4 else diff --git a/md5.c b/md5.c index a0a036ac34a..d675dd1c022 100644 --- a/md5.c +++ b/md5.c @@ -22,6 +22,8 @@ #include "md5.h" +#ifndef __OS_solaris + #define PUT_64BIT_LE(cp, value) do { \ (cp)[7] = (value) >> 56; \ (cp)[6] = (value) >> 48; \ @@ -247,3 +249,5 @@ MD5Transform(u_int32_t state[4], const u_int8_t block[MD5_BLOCK_LENGTH]) state[2] += c; state[3] += d; } + +#endif /* __OS_solaris */ diff --git a/md5.h b/md5.h index f094d10f8a9..02715b82fab 100644 --- a/md5.h +++ b/md5.h @@ -15,6 +15,8 @@ #ifndef _MD5_H_ #define _MD5_H_ +#ifndef __OS_solaris + #define MD5_BLOCK_LENGTH 64 #define MD5_DIGEST_LENGTH 16 #define MD5_DIGEST_STRING_LENGTH (MD5_DIGEST_LENGTH * 2 + 1) @@ -22,13 +24,6 @@ /* Probably not the proper place, but will do for Debian: */ #include -/* fix types for Sun Solaris */ -#if defined(__SVR4) || defined(__sun) - typedef uint8_t u_int8_t; - typedef uint32_t u_int32_t; - typedef uint64_t u_int64_t; -#endif - typedef struct MD5Context { u_int32_t state[4]; /* state */ u_int64_t count; /* number of bits, mod 2^64 */ @@ -49,4 +44,14 @@ static inline void MD5Final(char buf[MD5_DIGEST_LENGTH], MD5_CTX *ctx) { U_MD5Final((unsigned char *)buf, ctx); } +#else /* __OS_solaris */ +#include + +#define U_MD5Update(ctx, input, len) \ + MD5Update(ctx, input, len) +#define U_MD5Final(digest, ctx) \ + MD5Final(digest, ctx) + +#endif /* __OS_solaris */ + #endif /* _MD5_H_ */