chromium/third_party/protobuf/patches/0004-fix-shared-library-exports.patch

--- a/src/google/protobuf/stubs/port.h
+++ b/src/google/protobuf/stubs/port.h
@@ -90,18 +90,31 @@
 
 // Legacy: some users reference these (internal-only) macros even though we
 // don't need them any more.
-#if defined(_MSC_VER) && defined(PROTOBUF_USE_DLLS)
-  #ifdef LIBPROTOBUF_EXPORTS
-    #define LIBPROTOBUF_EXPORT __declspec(dllexport)
-  #else
-    #define LIBPROTOBUF_EXPORT __declspec(dllimport)
+#if defined(COMPONENT_BUILD) && defined(PROTOBUF_USE_DLLS)
+  #if defined(_MSC_VER)
+    #ifdef LIBPROTOBUF_EXPORTS
+      #define LIBPROTOBUF_EXPORT __declspec(dllexport)
+    #else
+      #define LIBPROTOBUF_EXPORT __declspec(dllimport)
+    #endif
+    #ifdef LIBPROTOC_EXPORTS
+      #define LIBPROTOC_EXPORT   __declspec(dllexport)
+    #else
+      #define LIBPROTOC_EXPORT   __declspec(dllimport)
+    #endif
+  #else  // defined(_MSC_VER)
+    #ifdef LIBPROTOBUF_EXPORTS
+      #define LIBPROTOBUF_EXPORT __attribute__((visibility("default")))
+    #else
+      #define LIBPROTOBUF_EXPORT
+    #endif
+    #ifdef LIBPROTOC_EXPORTS
+      #define LIBPROTOC_EXPORT   __attribute__((visibility("default")))
+    #else
+      #define LIBPROTOC_EXPORT
+    #endif
   #endif
-  #ifdef LIBPROTOC_EXPORTS
-    #define LIBPROTOC_EXPORT   __declspec(dllexport)
-  #else
-    #define LIBPROTOC_EXPORT   __declspec(dllimport)
-  #endif
-#else
+#else  // defined(COMPONENT_BUILD) && defined(PROTOBUF_USE_DLLS)
   #define LIBPROTOBUF_EXPORT
   #define LIBPROTOC_EXPORT
 #endif