unchanged:
--- protobuf-cleaned/src/google/protobuf/generated_message_util.cc	2015-12-30 13:21:46.000000000 -0800
+++ protobuf-patched/src/google/protobuf/generated_message_util.cc	2016-03-31 13:25:32.180017848 -0700
@@ -58,6 +58,12 @@
   OnShutdown(&DeleteEmptyString);
 }
 
+const ::std::string& GetEmptyString() {
+  ::google::protobuf::GoogleOnceInit(&empty_string_once_init_, &InitEmptyString);
+  return GetEmptyStringAlreadyInited();
+}
+
+
 size_t StringSpaceUsedExcludingSelfLong(const string& str) {
   const void* start = &str;
   const void* end = &str + 1;
only in patch2:
unchanged:
--- protobuf-cleaned/src/google/protobuf/generated_message_util.h	2015-12-30 13:21:46.000000000 -0800
+++ protobuf-patched/src/google/protobuf/generated_message_util.h	2016-03-31 13:25:40.252007316 -0700
@@ -120,10 +120,8 @@
   return fixed_address_empty_string.get();
 }
 
-LIBPROTOBUF_EXPORT inline const ::std::string& GetEmptyString() {
-  ::google::protobuf::GoogleOnceInit(&empty_string_once_init_, &InitEmptyString);
-  return GetEmptyStringAlreadyInited();
-}
+
+LIBPROTOBUF_EXPORT const ::std::string& GetEmptyString();
 
 LIBPROTOBUF_EXPORT int StringSpaceUsedExcludingSelf(const string& str);
 
