Commit 3cc6dd4d by Kai Tietz Committed by Kai Tietz

os_defines.h (_GLIBCXX_LLP64): Define if llp64 abi is used.

	* config/os/mingw32/os_defines.h (_GLIBCXX_LLP64): Define if llp64
	abi is used.
	* config/os/mingw32-w64/os_defines.h: Likewise.
	* libsupc++/cxxabi.h (__base_class_type_info): Adjust
	type of __offset_flags for llp64.
	* libsupc++/eh_alloc.cc (EMERGENCY_OBJ_SIZE): Define proper
	for llp64 abi.
	(EMERGENCY_OBJ_COUNT): Likewise.
	(bitmask_type): Likewise.
	* libsupc++/hash_bytes.cc (_Hash_bytes): Handle llp64.

From-SVN: r194658
parent ffeffdcb
2012-12-21 Kai Tietz <ktietz@redhat.com>
* config/os/mingw32/os_defines.h (_GLIBCXX_LLP64): Define if llp64
abi is used.
* config/os/mingw32-w64/os_defines.h: Likewise.
* libsupc++/cxxabi.h (__base_class_type_info): Adjust
type of __offset_flags for llp64.
* libsupc++/eh_alloc.cc (EMERGENCY_OBJ_SIZE): Define proper
for llp64 abi.
(EMERGENCY_OBJ_COUNT): Likewise.
(bitmask_type): Likewise.
* libsupc++/hash_bytes.cc (_Hash_bytes): Handle llp64.
2012-12-20 Jonathan Wakely <jwakely.gcc@gmail.com> 2012-12-20 Jonathan Wakely <jwakely.gcc@gmail.com>
* include/std/functional (_Require): Move to ... * include/std/functional (_Require): Move to ...
......
...@@ -74,4 +74,8 @@ ...@@ -74,4 +74,8 @@
#define _GLIBCXX_CDTOR_CALLABI __thiscall #define _GLIBCXX_CDTOR_CALLABI __thiscall
#endif #endif
#ifdef __x86_64__
#define _GLIBCXX_LLP64 1
#endif
#endif #endif
...@@ -72,4 +72,8 @@ ...@@ -72,4 +72,8 @@
#define _GLIBCXX_CDTOR_CALLABI __thiscall #define _GLIBCXX_CDTOR_CALLABI __thiscall
#endif #endif
#ifdef __x86_64__
#define _GLIBCXX_LLP64 1
#endif
#endif #endif
...@@ -356,7 +356,11 @@ namespace __cxxabiv1 ...@@ -356,7 +356,11 @@ namespace __cxxabiv1
{ {
public: public:
const __class_type_info* __base_type; // Base class type. const __class_type_info* __base_type; // Base class type.
#ifdef _GLIBCXX_LLP64
long long __offset_flags; // Offset and info.
#else
long __offset_flags; // Offset and info. long __offset_flags; // Offset and info.
#endif
enum __offset_flags_masks enum __offset_flags_masks
{ {
......
...@@ -60,7 +60,7 @@ using namespace __cxxabiv1; ...@@ -60,7 +60,7 @@ using namespace __cxxabiv1;
#if INT_MAX == 32767 #if INT_MAX == 32767
# define EMERGENCY_OBJ_SIZE 128 # define EMERGENCY_OBJ_SIZE 128
# define EMERGENCY_OBJ_COUNT 16 # define EMERGENCY_OBJ_COUNT 16
#elif LONG_MAX == 2147483647 #elif !defined (_GLIBCXX_LLP64) && LONG_MAX == 2147483647
# define EMERGENCY_OBJ_SIZE 512 # define EMERGENCY_OBJ_SIZE 512
# define EMERGENCY_OBJ_COUNT 32 # define EMERGENCY_OBJ_COUNT 32
#else #else
...@@ -76,8 +76,12 @@ using namespace __cxxabiv1; ...@@ -76,8 +76,12 @@ using namespace __cxxabiv1;
#if INT_MAX == 32767 || EMERGENCY_OBJ_COUNT <= 32 #if INT_MAX == 32767 || EMERGENCY_OBJ_COUNT <= 32
typedef unsigned int bitmask_type; typedef unsigned int bitmask_type;
#else #else
#if defined (_GLIBCXX_LLP64)
typedef unsigned long long bitmask_type;
#else
typedef unsigned long bitmask_type; typedef unsigned long bitmask_type;
#endif #endif
#endif
typedef char one_buffer[EMERGENCY_OBJ_SIZE] __attribute__((aligned)); typedef char one_buffer[EMERGENCY_OBJ_SIZE] __attribute__((aligned));
......
...@@ -128,7 +128,8 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION ...@@ -128,7 +128,8 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
size_t size_t
_Hash_bytes(const void* ptr, size_t len, size_t seed) _Hash_bytes(const void* ptr, size_t len, size_t seed)
{ {
static const size_t mul = (0xc6a4a793UL << 32UL) + 0x5bd1e995UL; static const size_t mul = (((size_t) 0xc6a4a793UL) << 32UL)
+ (size_t) 0x5bd1e995UL;
const char* const buf = static_cast<const char*>(ptr); const char* const buf = static_cast<const char*>(ptr);
// Remove the bytes not divisible by the sizeof(size_t). This // Remove the bytes not divisible by the sizeof(size_t). This
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment