1. 21 Oct, 2014 1 commit
  2. 11 Oct, 2014 1 commit
  3. 09 Oct, 2014 9 commits
  4. 08 Oct, 2014 2 commits
  5. 06 Oct, 2014 1 commit
  6. 03 Oct, 2014 4 commits
  7. 02 Oct, 2014 3 commits
  8. 01 Oct, 2014 2 commits
  9. 23 Sep, 2014 3 commits
  10. 22 Sep, 2014 2 commits
  11. 20 Sep, 2014 2 commits
    • William Orr's avatar
      Add support for solaris atomicops · 2d7786cf
      William Orr authored
      This patch adds support for atomic operations on Solaris, on any platform.
      It makes use of the atomic functions made available in Solaris' atomic.h
      header.
      2d7786cf
    • William Orr's avatar
      Add check for sched_yield in librt · 38b84946
      William Orr authored
      In Solaris, sched_yield lives in librt, rather than libc. This patch adds a
      check which will link in librt if necessary.
      38b84946
  12. 19 Sep, 2014 5 commits
  13. 18 Sep, 2014 3 commits
    • Robert Edmonds's avatar
      Fix atomicops build failure on non-Clang · 7432af82
      Robert Edmonds authored
      We cannot use Clang's __has_extension macro unless we really are
      compiling on Clang, which means we cannot use this expression:
      
          #if (defined(__clang__) && __has_extension(c_atomic)))
          // ...
          #endif
      
      On GCC, this generates the following errors:
      
          In file included from ./google/protobuf/stubs/atomicops.h:59:0,
                           from google/protobuf/stubs/atomicops_internals_x86_gcc.cc:36:
          ./google/protobuf/stubs/platform_macros.h:67:41: error: missing binary operator before token "("
             (defined(__clang__) && __has_extension(c_atomic)))
                                                   ^
          In file included from google/protobuf/stubs/atomicops_internals_x86_gcc.cc:36:0:
          ./google/protobuf/stubs/atomicops.h:196:40: error: missing binary operator before token "("
            (defined(__clang__) && __has_extension(c_atomic))
                                                  ^
      
      Instead, we have to protect the __has_extension expression by only
      executing it when __clang__ is defined:
      
          #if defined(__clang__)
          # if __has_extension(c_atomic)
          // ...
          # endif
          #endif
      7432af82
    • xfxyjwf's avatar
      Merge pull request #21 from edmonds/branches/clang_generic_atomics · 5c8ab2cb
      xfxyjwf authored
      Expose generic atomicops on Clang
      5c8ab2cb
    • xfxyjwf's avatar
      Merge pull request #20 from edmonds/branches/no_ppc · 7b6c5d58
      xfxyjwf authored
      Remove GOOGLE_PROTOBUF_ARCH_PPC
      7b6c5d58
  14. 14 Sep, 2014 1 commit
    • Robert S. Edmonds's avatar
      Expose generic atomicops on Clang · 628a23ba
      Robert S. Edmonds authored
      The generic atomicops implementation is only exposed if GCC >= 4.7 is
      available, but Clang, where the underlying __atomic built-ins are also
      available, typically only claims to be GCC 4.2. This causes build
      failures when compiling protobuf or the output of protoc's C++ code
      generator on an architecture that needs the generic atomicops
      implementation with Clang.
      
      Clang has a "c_atomic" extension which can be tested for which almost
      does what we want:
      
          C11 atomic operations
      
          Use __has_feature(c_atomic) or __has_extension(c_atomic) to
          determine if support for atomic types using _Atomic is enabled.
          Clang also provides a set of builtins which can be used to implement
          the <stdatomic.h> operations on _Atomic types.
      
      I'm not sure if this guarantees that the GNU atomic builtins (the ones
      with the __atomic prefix) are also available, but in practice this
      should guarantee that Clang is new enough.
      
      With this change in place, Clang generates several diagnostics when
      compiling the generic atomicops implementation. These appear to be bugs
      in the generic atomicops implementation and are not Clang-specific.
      628a23ba
  15. 13 Sep, 2014 1 commit