Fix broken Clang compile with -march=x86-64 (Issue 283)
It would be great if Clang stopped pretending to be other compilers. In the absence of honesty, it would be nice if it consumed the same programs GCC doespull/286/head
parent
03785199fd
commit
714daaf570
|
|
@ -127,7 +127,9 @@
|
||||||
// Under GCC, the library uses init_priority attribute in the range
|
// Under GCC, the library uses init_priority attribute in the range
|
||||||
// [CRYPTOPP_INIT_PRIORITY, CRYPTOPP_INIT_PRIORITY+100]. Under Windows,
|
// [CRYPTOPP_INIT_PRIORITY, CRYPTOPP_INIT_PRIORITY+100]. Under Windows,
|
||||||
// CRYPTOPP_INIT_PRIORITY enlists "#pragma init_seg(lib)".
|
// CRYPTOPP_INIT_PRIORITY enlists "#pragma init_seg(lib)".
|
||||||
|
#ifndef CRYPTOPP_INIT_PRIORITY
|
||||||
// # define CRYPTOPP_INIT_PRIORITY 250
|
// # define CRYPTOPP_INIT_PRIORITY 250
|
||||||
|
#endif
|
||||||
|
|
||||||
// CRYPTOPP_USER_PRIORITY is for other libraries and user code that is using Crypto++
|
// CRYPTOPP_USER_PRIORITY is for other libraries and user code that is using Crypto++
|
||||||
// and managing C++ static object creation. It is guaranteed not to conflict with
|
// and managing C++ static object creation. It is guaranteed not to conflict with
|
||||||
|
|
@ -135,7 +137,7 @@
|
||||||
#if defined(CRYPTOPP_INIT_PRIORITY) && (CRYPTOPP_INIT_PRIORITY > 0)
|
#if defined(CRYPTOPP_INIT_PRIORITY) && (CRYPTOPP_INIT_PRIORITY > 0)
|
||||||
# define CRYPTOPP_USER_PRIORITY (CRYPTOPP_INIT_PRIORITY + 101)
|
# define CRYPTOPP_USER_PRIORITY (CRYPTOPP_INIT_PRIORITY + 101)
|
||||||
#else
|
#else
|
||||||
# define CRYPTOPP_USER_PRIORITY 250
|
# define CRYPTOPP_USER_PRIORITY 350
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
// CRYPTOPP_DEBUG enables the library's CRYPTOPP_ASSERT. CRYPTOPP_ASSERT
|
// CRYPTOPP_DEBUG enables the library's CRYPTOPP_ASSERT. CRYPTOPP_ASSERT
|
||||||
|
|
@ -232,6 +234,14 @@ typedef unsigned int word32;
|
||||||
typedef word64 lword;
|
typedef word64 lword;
|
||||||
const lword LWORD_MAX = W64LIT(0xffffffffffffffff);
|
const lword LWORD_MAX = W64LIT(0xffffffffffffffff);
|
||||||
|
|
||||||
|
// Clang pretends to be GCC, but can't consume the same programs. It breaks completely with -march-x86-64
|
||||||
|
#if defined(__GNUC__) && defined(__clang__)
|
||||||
|
# undef __GNUC__
|
||||||
|
# undef __GNUC_MINOR__
|
||||||
|
# undef __GNUC_PATCHLEVEL__
|
||||||
|
# define __GNUC__ 4
|
||||||
|
#endif
|
||||||
|
|
||||||
// Clang pretends to be VC++, too.
|
// Clang pretends to be VC++, too.
|
||||||
// See http://github.com/weidai11/cryptopp/issues/147
|
// See http://github.com/weidai11/cryptopp/issues/147
|
||||||
#if defined(_MSC_VER) && defined(__clang__)
|
#if defined(_MSC_VER) && defined(__clang__)
|
||||||
|
|
|
||||||
12
config.h
12
config.h
|
|
@ -127,7 +127,9 @@
|
||||||
// Under GCC, the library uses init_priority attribute in the range
|
// Under GCC, the library uses init_priority attribute in the range
|
||||||
// [CRYPTOPP_INIT_PRIORITY, CRYPTOPP_INIT_PRIORITY+100]. Under Windows,
|
// [CRYPTOPP_INIT_PRIORITY, CRYPTOPP_INIT_PRIORITY+100]. Under Windows,
|
||||||
// CRYPTOPP_INIT_PRIORITY enlists "#pragma init_seg(lib)".
|
// CRYPTOPP_INIT_PRIORITY enlists "#pragma init_seg(lib)".
|
||||||
|
#ifndef CRYPTOPP_INIT_PRIORITY
|
||||||
# define CRYPTOPP_INIT_PRIORITY 250
|
# define CRYPTOPP_INIT_PRIORITY 250
|
||||||
|
#endif
|
||||||
|
|
||||||
// CRYPTOPP_USER_PRIORITY is for other libraries and user code that is using Crypto++
|
// CRYPTOPP_USER_PRIORITY is for other libraries and user code that is using Crypto++
|
||||||
// and managing C++ static object creation. It is guaranteed not to conflict with
|
// and managing C++ static object creation. It is guaranteed not to conflict with
|
||||||
|
|
@ -135,7 +137,7 @@
|
||||||
#if defined(CRYPTOPP_INIT_PRIORITY) && (CRYPTOPP_INIT_PRIORITY > 0)
|
#if defined(CRYPTOPP_INIT_PRIORITY) && (CRYPTOPP_INIT_PRIORITY > 0)
|
||||||
# define CRYPTOPP_USER_PRIORITY (CRYPTOPP_INIT_PRIORITY + 101)
|
# define CRYPTOPP_USER_PRIORITY (CRYPTOPP_INIT_PRIORITY + 101)
|
||||||
#else
|
#else
|
||||||
# define CRYPTOPP_USER_PRIORITY 250
|
# define CRYPTOPP_USER_PRIORITY 350
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
// CRYPTOPP_DEBUG enables the library's CRYPTOPP_ASSERT. CRYPTOPP_ASSERT
|
// CRYPTOPP_DEBUG enables the library's CRYPTOPP_ASSERT. CRYPTOPP_ASSERT
|
||||||
|
|
@ -232,6 +234,14 @@ typedef unsigned int word32;
|
||||||
typedef word64 lword;
|
typedef word64 lword;
|
||||||
const lword LWORD_MAX = W64LIT(0xffffffffffffffff);
|
const lword LWORD_MAX = W64LIT(0xffffffffffffffff);
|
||||||
|
|
||||||
|
// Clang pretends to be GCC, but can't consume the same programs. It breaks completely with -march-x86-64
|
||||||
|
#if defined(__GNUC__) && defined(__clang__)
|
||||||
|
# undef __GNUC__
|
||||||
|
# undef __GNUC_MINOR__
|
||||||
|
# undef __GNUC_PATCHLEVEL__
|
||||||
|
# define __GNUC__ 4
|
||||||
|
#endif
|
||||||
|
|
||||||
// Clang pretends to be VC++, too.
|
// Clang pretends to be VC++, too.
|
||||||
// See http://github.com/weidai11/cryptopp/issues/147
|
// See http://github.com/weidai11/cryptopp/issues/147
|
||||||
#if defined(_MSC_VER) && defined(__clang__)
|
#if defined(_MSC_VER) && defined(__clang__)
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue