| Index: third_party/protobuf/src/google/protobuf/stubs/atomicops.h
|
| diff --git a/third_party/protobuf/src/google/protobuf/stubs/atomicops.h b/third_party/protobuf/src/google/protobuf/stubs/atomicops.h
|
| index 9b3d1e6b57d25ec82ceb25ad8a1baef66ebd5346..c25492f3200536a7e975ccce40fd36e4957ae66f 100644
|
| --- a/third_party/protobuf/src/google/protobuf/stubs/atomicops.h
|
| +++ b/third_party/protobuf/src/google/protobuf/stubs/atomicops.h
|
| @@ -123,8 +123,8 @@ Atomic32 Barrier_AtomicIncrement(volatile Atomic32* ptr,
|
| // ensure that no later memory access can be reordered ahead of the operation.
|
| // "Release" operations ensure that no previous memory access can be reordered
|
| // after the operation. "Barrier" operations have both "Acquire" and "Release"
|
| -// semantics. A MemoryBarrier() has "Barrier" semantics, but does no memory
|
| -// access.
|
| +// semantics. A MemoryBarrierInternal() has "Barrier" semantics, but does no
|
| +// memory access.
|
| Atomic32 Acquire_CompareAndSwap(volatile Atomic32* ptr,
|
| Atomic32 old_value,
|
| Atomic32 new_value);
|
| @@ -132,10 +132,10 @@ Atomic32 Release_CompareAndSwap(volatile Atomic32* ptr,
|
| Atomic32 old_value,
|
| Atomic32 new_value);
|
|
|
| -#if defined(__MINGW32__) && defined(MemoryBarrier)
|
| -#undef MemoryBarrier
|
| -#endif
|
| -void MemoryBarrier();
|
| +// This function was renamed from MemoryBarrier to MemoryBarrierInternal
|
| +// because MemoryBarrier is a define in Windows ARM builds and we do not
|
| +// undefine it because we call it from this function.
|
| +void MemoryBarrierInternal();
|
| void NoBarrier_Store(volatile Atomic32* ptr, Atomic32 value);
|
| void Acquire_Store(volatile Atomic32* ptr, Atomic32 value);
|
| void Release_Store(volatile Atomic32* ptr, Atomic32 value);
|
| @@ -180,7 +180,7 @@ Atomic64 Release_Load(volatile const Atomic64* ptr);
|
| #include <google/protobuf/stubs/atomicops_internals_tsan.h>
|
| // MSVC.
|
| #elif defined(_MSC_VER)
|
| -#if defined(GOOGLE_PROTOBUF_ARCH_IA32) || defined(GOOGLE_PROTOBUF_ARCH_X64)
|
| +#if defined(GOOGLE_PROTOBUF_ARCH_IA32) || defined(GOOGLE_PROTOBUF_ARCH_X64) || defined(GOOGLE_PROTOBUF_ARCH_ARM)
|
| #include <google/protobuf/stubs/atomicops_internals_x86_msvc.h>
|
| #else
|
| #error GOOGLE_PROTOBUF_ATOMICOPS_ERROR
|
| @@ -196,14 +196,22 @@ Atomic64 Release_Load(volatile const Atomic64* ptr);
|
|
|
| // Apple.
|
| #elif defined(GOOGLE_PROTOBUF_OS_APPLE)
|
| +#if __has_feature(cxx_atomic) || _GNUC_VER >= 407
|
| +#include <google/protobuf/stubs/atomicops_internals_generic_c11_atomic.h>
|
| +#else // __has_feature(cxx_atomic) || _GNUC_VER >= 407
|
| #include <google/protobuf/stubs/atomicops_internals_macosx.h>
|
| +#endif // __has_feature(cxx_atomic) || _GNUC_VER >= 407
|
|
|
| // GCC.
|
| #elif defined(__GNUC__)
|
| #if defined(GOOGLE_PROTOBUF_ARCH_IA32) || defined(GOOGLE_PROTOBUF_ARCH_X64)
|
| #include <google/protobuf/stubs/atomicops_internals_x86_gcc.h>
|
| #elif defined(GOOGLE_PROTOBUF_ARCH_ARM) && defined(__linux__)
|
| +#if (((__GNUC__ == 4) && (__GNUC_MINOR__ >= 7)) || (__GNUC__ > 4))
|
| +#include <google/protobuf/stubs/atomicops_internals_generic_gcc.h>
|
| +#else
|
| #include <google/protobuf/stubs/atomicops_internals_arm_gcc.h>
|
| +#endif
|
| #elif defined(GOOGLE_PROTOBUF_ARCH_AARCH64)
|
| #include <google/protobuf/stubs/atomicops_internals_arm64_gcc.h>
|
| #elif defined(GOOGLE_PROTOBUF_ARCH_ARM_QNX)
|
| @@ -213,7 +221,7 @@ Atomic64 Release_Load(volatile const Atomic64* ptr);
|
| #elif defined(GOOGLE_PROTOBUF_ARCH_POWER)
|
| #include <google/protobuf/stubs/atomicops_internals_power.h>
|
| #elif defined(__native_client__)
|
| -#include <google/protobuf/stubs/atomicops_internals_pnacl.h>
|
| +#include <google/protobuf/stubs/atomicops_internals_generic_c11_atomic.h>
|
| #elif defined(GOOGLE_PROTOBUF_ARCH_PPC)
|
| #include <google/protobuf/stubs/atomicops_internals_ppc_gcc.h>
|
| #elif (((__GNUC__ == 4) && (__GNUC_MINOR__ >= 7)) || (__GNUC__ > 4))
|
|
|