- Change inline constant rotate functions to macros in the crypto

library libtomcrypt used by the project, to fix compile errors
  with clang 3.6. More details about the fix are in PR 198017

PR:		197395
Submitted by:	dim
Reported by:	portmgr
This commit is contained in:
Ashish SHUKLA 2015-02-28 23:44:11 +00:00
parent 76ac1e321a
commit 6e7616a428
Notes: svn2git 2021-03-31 03:12:20 +00:00
svn path=/head/; revision=380167

View file

@ -0,0 +1,107 @@
$FreeBSD$
--- ext/crypto/libtomcrypt-1.17/src/headers/tomcrypt_macros.h.orig
+++ ext/crypto/libtomcrypt-1.17/src/headers/tomcrypt_macros.h
@@ -262,21 +262,19 @@
#ifndef LTC_NO_ROLC
-static inline unsigned ROLc(unsigned word, const int i)
-{
- asm ("roll %2,%0"
- :"=r" (word)
- :"0" (word),"I" (i));
- return word;
-}
+#define ROLc(word, i) ({ \
+ unsigned _word = word; \
+ asm ("roll %2,%0" \
+ :"=r" (_word) \
+ :"0" (_word),"I" (i)); \
+ _word; })
-static inline unsigned RORc(unsigned word, const int i)
-{
- asm ("rorl %2,%0"
- :"=r" (word)
- :"0" (word),"I" (i));
- return word;
-}
+#define RORc(word, i) ({ \
+ unsigned _word = word; \
+ asm ("rorl %2,%0" \
+ :"=r" (_word) \
+ :"0" (_word),"I" (i)); \
+ _word; })
#else
@@ -305,21 +303,19 @@
#ifndef LTC_NO_ROLC
-static inline unsigned ROLc(unsigned word, const int i)
-{
- asm ("rotlwi %0,%0,%2"
- :"=r" (word)
- :"0" (word),"I" (i));
- return word;
-}
+#define ROLc(word, i) ({ \
+ unsigned _word = word; \
+ asm ("rotlwi %0,%0,%2" \
+ :"=r" (_word) \
+ :"0" (_word),"I" (i)); \
+ _word; })
-static inline unsigned RORc(unsigned word, const int i)
-{
- asm ("rotrwi %0,%0,%2"
- :"=r" (word)
- :"0" (word),"I" (i));
- return word;
-}
+#define RORc(word, i) ({ \
+ unsigned _word = word; \
+ asm ("rotrwi %0,%0,%2" \
+ :"=r" (_word) \
+ :"0" (_word),"I" (i)); \
+ _word; })
#else
@@ -361,21 +357,19 @@
#ifndef LTC_NO_ROLC
-static inline unsigned long ROL64c(unsigned long word, const int i)
-{
- asm("rolq %2,%0"
- :"=r" (word)
- :"0" (word),"J" (i));
- return word;
-}
+#define ROL64c(word, i) ({ \
+ unsigned long _word = word; \
+ asm ("rolq %2,%0" \
+ :"=r" (_word) \
+ :"0" (_word),"J" (i)); \
+ _word; })
-static inline unsigned long ROR64c(unsigned long word, const int i)
-{
- asm("rorq %2,%0"
- :"=r" (word)
- :"0" (word),"J" (i));
- return word;
-}
+#define ROR64c(word, i) ({ \
+ unsigned long _word = word; \
+ asm ("rorq %2,%0" \
+ :"=r" (_word) \
+ :"0" (_word),"J" (i)); \
+ _word; })
#else /* LTC_NO_ROLC */