Added CRYPTOPP_CLANG_NO_INTEGRATED_AS as a guard in config.h (disabled by default since integrated-as is default behavior and the bug is active). GNU_ATT_SYNTAX → GNU_AS_ATT_SYNTAX and GNUINTEL_SYNTAX → GNU_AS_INTEL_SYNTAX

pull/35/head
Jeffrey Walton 2015-07-21 18:05:48 -04:00
parent 444d1f1a3b
commit 3c56063c3f
11 changed files with 33 additions and 29 deletions

View File

@ -69,6 +69,10 @@
// Defining this will cause Crypto++ to make only one call to CryptAcquireContext.
#define WORKAROUND_MS_BUG_Q258000
// Define this if you are working around Clang's integrated assembler bug by
// disabling the assembler (https://llvm.org/bugs/show_bug.cgi?id=18916).
// #define CRYPTOPP_CLANG_NO_INTEGRATED_AS
#ifdef CRYPTOPP_DOXYGEN_PROCESSING
// Avoid putting "CryptoPP::" in front of everything in Doxygen output
# define CryptoPP

View File

@ -574,7 +574,7 @@ size_t GCM_Base::AuthenticateBlocks(const byte *data, size_t len)
#ifdef __GNUC__
__asm__ __volatile__
(
GNU_INTEL_SYNTAX
GNU_AS_INTEL_SYNTAX
#elif defined(CRYPTOPP_GENERATE_X64_MASM)
ALIGN 8
GCM_AuthenticateBlocks_2K PROC FRAME
@ -702,7 +702,7 @@ size_t GCM_Base::AuthenticateBlocks(const byte *data, size_t len)
AS_POP_IF86( bx)
#ifdef __GNUC__
GNU_ATT_SYNTAX
GNU_AS_ATT_SYNTAX
:
: "c" (data), "d" (len/16), "S" (hashBuffer), "D" (s_reductionTable)
: "memory", "cc", "%eax"
@ -725,7 +725,7 @@ size_t GCM_Base::AuthenticateBlocks(const byte *data, size_t len)
#ifdef __GNUC__
__asm__ __volatile__
(
GNU_INTEL_SYNTAX
GNU_AS_INTEL_SYNTAX
#elif defined(CRYPTOPP_GENERATE_X64_MASM)
ALIGN 8
GCM_AuthenticateBlocks_64K PROC FRAME
@ -779,7 +779,7 @@ size_t GCM_Base::AuthenticateBlocks(const byte *data, size_t len)
AS2( movdqa [WORD_REG(si)], xmm0 )
#ifdef __GNUC__
GNU_ATT_SYNTAX
GNU_AS_ATT_SYNTAX
:
: "c" (data), "d" (len/16), "S" (hashBuffer)
: "memory", "cc", "%edi", "%eax"

View File

@ -450,9 +450,9 @@ inline word DWord::operator%(word a)
int result; \
__asm__ __volatile__ \
( \
GNU_INTEL_SYNTAX
GNU_AS_INTEL_SYNTAX
#define AddEpilogue \
GNU_ATT_SYNTAX \
GNU_AS_ATT_SYNTAX \
: "=a" (result)\
: "d" (C), "a" (A), "D" (B), "c" (N) \
: "%esi", "memory", "cc" \
@ -461,12 +461,12 @@ inline word DWord::operator%(word a)
#define MulPrologue \
__asm__ __volatile__ \
( \
GNU_INTEL_SYNTAX \
GNU_AS_INTEL_SYNTAX \
AS1( push ebx) \
AS2( mov ebx, edx)
#define MulEpilogue \
AS1( pop ebx) \
GNU_ATT_SYNTAX \
GNU_AS_ATT_SYNTAX \
: \
: "d" (s_maskLow16), "c" (C), "a" (A), "D" (B) \
: "%esi", "memory", "cc" \
@ -474,7 +474,7 @@ inline word DWord::operator%(word a)
#define SquPrologue MulPrologue
#define SquEpilogue \
AS1( pop ebx) \
GNU_ATT_SYNTAX \
GNU_AS_ATT_SYNTAX \
: \
: "d" (s_maskLow16), "c" (C), "a" (A) \
: "%esi", "%edi", "memory", "cc" \
@ -482,7 +482,7 @@ inline word DWord::operator%(word a)
#define TopPrologue MulPrologue
#define TopEpilogue \
AS1( pop ebx) \
GNU_ATT_SYNTAX \
GNU_AS_ATT_SYNTAX \
: \
: "d" (s_maskLow16), "c" (C), "a" (A), "D" (B), "S" (L) \
: "memory", "cc" \
@ -570,7 +570,7 @@ int Baseline_Sub(size_t N, word *C, const word *A, const word *B)
word result;
__asm__ __volatile__
(
GNU_INTEL_SYNTAX
GNU_AS_INTEL_SYNTAX
AS1( neg %1)
ASJ( jz, 1, f)
AS2( mov %0,[%3+8*%1])

View File

@ -45,7 +45,7 @@ void CRYPTOPP_NOINLINE Panama_SSE2_Pull(size_t count, word32 *state, word32 *z,
#ifdef CRYPTOPP_GNU_STYLE_INLINE_ASSEMBLY
asm __volatile__
(
GNU_INTEL_SYNTAX
GNU_AS_INTEL_SYNTAX
AS_PUSH_IF86( bx)
#else
AS2( mov AS_REG_1, count)
@ -289,7 +289,7 @@ void CRYPTOPP_NOINLINE Panama_SSE2_Pull(size_t count, word32 *state, word32 *z,
#ifdef CRYPTOPP_GNU_STYLE_INLINE_ASSEMBLY
AS_POP_IF86( bx)
GNU_ATT_SYNTAX
GNU_AS_ATT_SYNTAX
:
#if CRYPTOPP_BOOL_X64
: "D" (count), "S" (state), "d" (z), "c" (y)

View File

@ -614,7 +614,7 @@ CRYPTOPP_NAKED void CRYPTOPP_FASTCALL Rijndael_Enc_AdvancedProcessBlocks(void *l
#elif defined(__GNUC__)
__asm__ __volatile__
(
GNU_INTEL_SYNTAX
GNU_AS_INTEL_SYNTAX
#if CRYPTOPP_BOOL_X64
AS2( mov L_REG, rcx)
#endif
@ -969,7 +969,7 @@ CRYPTOPP_NAKED void CRYPTOPP_FASTCALL Rijndael_Enc_AdvancedProcessBlocks(void *l
Rijndael_Enc_AdvancedProcessBlocks ENDP
#endif
#ifdef __GNUC__
GNU_ATT_SYNTAX
GNU_AS_ATT_SYNTAX
:
: "c" (locals), "d" (k), "S" (Te), "D" (g_cacheLineSize)
: "memory", "cc", "%eax"

View File

@ -150,7 +150,7 @@ void Salsa20_Policy::OperateKeystream(KeystreamOperation operation, byte *output
#ifdef __GNUC__
__asm__ __volatile__
(
GNU_INTEL_SYNTAX
GNU_AS_INTEL_SYNTAX
AS_PUSH_IF86( bx)
#else
void *s = m_state.data();
@ -458,7 +458,7 @@ void Salsa20_Policy::OperateKeystream(KeystreamOperation operation, byte *output
AS_POP_IF86( bp)
#ifdef __GNUC__
AS_POP_IF86( bx)
GNU_ATT_SYNTAX
GNU_AS_ATT_SYNTAX
#if CRYPTOPP_BOOL_X64
: "+r" (input), "+r" (output), "+r" (iterationCount)
: "r" (m_rounds), "r" (m_state.m_ptr), "r" (workspace)

View File

@ -244,7 +244,7 @@ static void CRYPTOPP_FASTCALL X86_SHA256_HashBlocks(word32 *state, const word32
#if CRYPTOPP_BOOL_X64
"lea %4, %%r8;"
#endif
GNU_INTEL_SYNTAX
GNU_AS_INTEL_SYNTAX
#elif defined(CRYPTOPP_GENERATE_X64_MASM)
ALIGN 8
X86_SHA256_HashBlocks PROC FRAME
@ -424,7 +424,7 @@ static void CRYPTOPP_FASTCALL X86_SHA256_HashBlocks(word32 *state, const word32
#endif
#ifdef __GNUC__
GNU_ATT_SYNTAX
GNU_AS_ATT_SYNTAX
:
: "c" (state), "d" (data), "S" (SHA256_K+48), "D" (len)
#if CRYPTOPP_BOOL_X64
@ -675,7 +675,7 @@ CRYPTOPP_NAKED static void CRYPTOPP_FASTCALL SHA512_SSE2_Transform(word64 *state
#ifdef __GNUC__
__asm__ __volatile__
(
GNU_INTEL_SYNTAX
GNU_AS_INTEL_SYNTAX
AS1( push ebx)
AS2( mov ebx, eax)
#else
@ -841,7 +841,7 @@ CRYPTOPP_NAKED static void CRYPTOPP_FASTCALL SHA512_SSE2_Transform(word64 *state
#if defined(__GNUC__)
AS1( pop ebx)
GNU_ATT_SYNTAX
GNU_AS_ATT_SYNTAX
:
: "a" (SHA512_K), "c" (state), "d" (data)
: "%esi", "%edi", "memory", "cc"

View File

@ -355,7 +355,7 @@ void SosemanukPolicy::OperateKeystream(KeystreamOperation operation, byte *outpu
#endif
__asm__ __volatile__
(
GNU_INTEL_SYNTAX
GNU_AS_INTEL_SYNTAX
AS_PUSH_IF86( bx)
#else
word32 *state = m_state;
@ -595,7 +595,7 @@ void SosemanukPolicy::OperateKeystream(KeystreamOperation operation, byte *outpu
#ifdef __GNUC__
AS_POP_IF86( bx)
GNU_ATT_SYNTAX
GNU_AS_ATT_SYNTAX
:
: "a" (m_state.m_ptr), "c" (iterationCount), "S" (s_sosemanukMulTables), "D" (output), "d" (input)
#if CRYPTOPP_BOOL_X64

View File

@ -38,7 +38,7 @@ void Tiger::Transform (word64 *digest, const word64 *X)
#ifdef __GNUC__
__asm__ __volatile__
(
GNU_INTEL_SYNTAX
GNU_AS_INTEL_SYNTAX
AS1( push ebx)
#else
#if _MSC_VER < 1300
@ -194,7 +194,7 @@ void Tiger::Transform (word64 *digest, const word64 *X)
AS1( emms)
#ifdef __GNUC__
AS1( pop ebx)
GNU_ATT_SYNTAX
GNU_AS_ATT_SYNTAX
:
: "a" (digest), "S" (X), "d" (table)
: "%ecx", "%edi", "memory", "cc"

View File

@ -158,7 +158,7 @@ VMAC_Base::VHASH_Update_SSE2(const word64 *data, size_t blocksRemainingInWord64,
(
AS2( mov %%ebx, %0)
AS2( mov %1, %%ebx)
GNU_INTEL_SYNTAX
GNU_AS_INTEL_SYNTAX
#else
#if _MSC_VER < 1300 || defined(__INTEL_COMPILER)
char isFirstBlock = m_isFirstBlock;
@ -377,7 +377,7 @@ VMAC_Base::VHASH_Update_SSE2(const word64 *data, size_t blocksRemainingInWord64,
AS1( pop ebp)
AS1( emms)
#ifdef __GNUC__
GNU_ATT_SYNTAX
GNU_AS_ATT_SYNTAX
AS2( mov %0, %%ebx)
: "=m" (temp)
: "m" (L1KeyLength), "c" (blocksRemainingInWord64), "S" (data), "D" (nhK+tagPart*2), "d" (m_isFirstBlock), "a" (polyS+tagPart*4)

View File

@ -401,7 +401,7 @@ void Whirlpool::Transform(word64 *digest, const word64 *block)
#endif
__asm__ __volatile__
(
GNU_INTEL_SYNTAX
GNU_AS_INTEL_SYNTAX
AS_PUSH_IF86( bx)
AS2( mov AS_REG_6, WORD_REG(ax))
#else
@ -569,7 +569,7 @@ void Whirlpool::Transform(word64 *digest, const word64 *block)
AS_POP_IF86( bx)
#endif
#ifdef __GNUC__
GNU_ATT_SYNTAX
GNU_AS_ATT_SYNTAX
:
: "a" (Whirlpool_C), "c" (digest), "d" (block)
#if CRYPTOPP_BOOL_X64