unchanged:
--- protobuf-cleaned/src/google/protobuf/stubs/once.cc	2015-12-30 13:21:46.000000000 -0800
+++ protobuf-patched/src/google/protobuf/stubs/once.cc	2016-03-31 13:25:32.180017848 -0700
@@ -62,6 +62,13 @@
 
 }  // namespace
 
+void GoogleOnceInit(ProtobufOnceType* once, void (*init_func)()) {
+  if (internal::Acquire_Load(once) != ONCE_STATE_DONE) {
+    internal::FunctionClosure0 func(init_func, false);
+    GoogleOnceInitImpl(once, &func);
+  }
+}
+
 void GoogleOnceInitImpl(ProtobufOnceType* once, Closure* closure) {
   internal::AtomicWord state = internal::Acquire_Load(once);
   // Fast path. The provided closure was already executed.
only in patch2:
unchanged:
--- protobuf-cleaned/src/google/protobuf/stubs/once.h	2015-12-30 13:21:46.000000000 -0800
+++ protobuf-patched/src/google/protobuf/stubs/once.h	2016-03-31 13:25:35.520013490 -0700
@@ -122,12 +122,8 @@
 LIBPROTOBUF_EXPORT
 void GoogleOnceInitImpl(ProtobufOnceType* once, Closure* closure);
 
-inline void GoogleOnceInit(ProtobufOnceType* once, void (*init_func)()) {
-  if (internal::Acquire_Load(once) != ONCE_STATE_DONE) {
-    internal::FunctionClosure0 func(init_func, false);
-    GoogleOnceInitImpl(once, &func);
-  }
-}
+LIBPROTOBUF_EXPORT
+void GoogleOnceInit(ProtobufOnceType* once, void (*init_func)());
 
 template <typename Arg>
 inline void GoogleOnceInit(ProtobufOnceType* once, void (*init_func)(Arg*),
