Index: third_party/protobuf/patches/0003-remove-static-initializers.patch |
diff --git a/third_party/protobuf/patches/0003-remove-static-initializers.patch b/third_party/protobuf/patches/0003-remove-static-initializers.patch |
new file mode 100644 |
index 0000000000000000000000000000000000000000..ed88d0a7fc171eef9293a0fde86e303c35e4d461 |
--- /dev/null |
+++ b/third_party/protobuf/patches/0003-remove-static-initializers.patch |
@@ -0,0 +1,71 @@ |
+unchanged: |
+--- protobuf-cleaned/src/google/protobuf/stubs/status.cc 2015-12-30 13:21:46.000000000 -0800 |
++++ protobuf-patched/src/google/protobuf/stubs/status.cc 2016-03-31 13:25:40.888006485 -0700 |
+@@ -82,9 +82,9 @@ |
+ } |
+ } // namespace error. |
+ |
+-const Status Status::OK = Status(); |
+-const Status Status::CANCELLED = Status(error::CANCELLED, ""); |
+-const Status Status::UNKNOWN = Status(error::UNKNOWN, ""); |
++const StatusPod Status::OK = { error::OK }; |
++const StatusPod Status::CANCELLED = { error::CANCELLED }; |
++const StatusPod Status::UNKNOWN = { error::UNKNOWN }; |
+ |
+ Status::Status() : error_code_(error::OK) { |
+ } |
+@@ -100,6 +100,9 @@ |
+ : error_code_(other.error_code_), error_message_(other.error_message_) { |
+ } |
+ |
++Status::Status(const StatusPod& status_pod) : error_code_(status_pod.code) { |
++} |
++ |
+ Status& Status::operator=(const Status& other) { |
+ error_code_ = other.error_code_; |
+ error_message_ = other.error_message_; |
+unchanged: |
+--- protobuf-cleaned/src/google/protobuf/stubs/status.h 2015-12-30 13:21:46.000000000 -0800 |
++++ protobuf-patched/src/google/protobuf/stubs/status.h 2016-03-31 13:25:40.888006485 -0700 |
+@@ -62,6 +62,10 @@ |
+ }; |
+ } // namespace error |
+ |
++struct StatusPod { |
++ error::Code code; |
++}; |
++ |
+ class LIBPROTOBUF_EXPORT Status { |
+ public: |
+ // Creates a "successful" status. |
+@@ -73,13 +77,14 @@ |
+ // constructed. |
+ Status(error::Code error_code, StringPiece error_message); |
+ Status(const Status&); |
++ Status(const StatusPod&); |
+ Status& operator=(const Status& x); |
+ ~Status() {} |
+ |
+ // Some pre-defined Status objects |
+- static const Status OK; // Identical to 0-arg constructor |
+- static const Status CANCELLED; |
+- static const Status UNKNOWN; |
++ static const StatusPod OK; |
++ static const StatusPod CANCELLED; |
++ static const StatusPod UNKNOWN; |
+ |
+ // Accessor |
+ bool ok() const { |
+only in patch2: |
+unchanged: |
+--- protobuf-cleaned/src/google/protobuf/stubs/int128.cc 2015-12-30 13:21:46.000000000 -0800 |
++++ protobuf-patched/src/google/protobuf/stubs/int128.cc 2016-03-31 13:25:40.888006485 -0700 |
+@@ -31,7 +31,7 @@ |
+ #include <google/protobuf/stubs/int128.h> |
+ |
+ #include <iomanip> |
+-#include <iostream> // NOLINT(readability/streams) |
++#include <ostream> // NOLINT(readability/streams) |
+ #include <sstream> |
+ |
+ namespace google { |