summaryrefslogtreecommitdiffstats
path: root/o3d/plugin
diff options
context:
space:
mode:
authorpiman@google.com <piman@google.com@0039d316-1c4b-4281-b951-d872f2087c98>2009-07-29 20:52:15 +0000
committerpiman@google.com <piman@google.com@0039d316-1c4b-4281-b951-d872f2087c98>2009-07-29 20:52:15 +0000
commit778da76f8a401af0eb108889e3e29506d1638bd5 (patch)
treeb4f4226deffd358705a4be5753082cd8aeec2a31 /o3d/plugin
parent7c37e4c641007ccbb666be127926e7512b0db89b (diff)
downloadchromium_src-778da76f8a401af0eb108889e3e29506d1638bd5.zip
chromium_src-778da76f8a401af0eb108889e3e29506d1638bd5.tar.gz
chromium_src-778da76f8a401af0eb108889e3e29506d1638bd5.tar.bz2
linux: unexport as many symbols as possible
See discussion on http://code.google.com/p/chromium/issues/detail?id=17557 On linux, exported symbols from a shared library can be overridden by another unit (e.g. the browser) if it exports the same ones. So compile everything with -fvisibility=hidden to make every symbol private by default, and explicitly export the ones that we care about. Also make sure that third-party deps (e.g. icu) don't explicitly export symbols. Review URL: http://codereview.chromium.org/160317 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@21992 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'o3d/plugin')
-rw-r--r--o3d/plugin/cross/main.cc7
-rw-r--r--o3d/plugin/cross/main.h6
-rw-r--r--o3d/plugin/linux/main_linux.cc6
3 files changed, 13 insertions, 6 deletions
diff --git a/o3d/plugin/cross/main.cc b/o3d/plugin/cross/main.cc
index d6144ca..da16756 100644
--- a/o3d/plugin/cross/main.cc
+++ b/o3d/plugin/cross/main.cc
@@ -148,7 +148,7 @@ namespace o3d {
extern "C" {
#endif
-NPError OSCALL NP_GetEntryPoints(NPPluginFuncs *pluginFuncs) {
+NPError EXPORT_SYMBOL OSCALL NP_GetEntryPoints(NPPluginFuncs *pluginFuncs) {
HANDLE_CRASHES;
pluginFuncs->version = 11;
pluginFuncs->size = sizeof(*pluginFuncs);
@@ -169,7 +169,7 @@ NPError OSCALL NP_GetEntryPoints(NPPluginFuncs *pluginFuncs) {
return NPERR_NO_ERROR;
}
-char *NP_GetMIMEDescription(void) {
+char * EXPORT_SYMBOL NP_GetMIMEDescription(void) {
return O3D_PLUGIN_MIME_TYPE "::O3D MIME";
}
@@ -177,7 +177,8 @@ char *NP_GetMIMEDescription(void) {
#if !defined(O3D_INTERNAL_PLUGIN)
extern "C" {
-NPError NP_GetValue(void *instance, NPPVariable variable, void *value) {
+NPError EXPORT_SYMBOL NP_GetValue(void *instance, NPPVariable variable,
+ void *value) {
return o3d::NP_GetValue(instance, variable, value);
}
}
diff --git a/o3d/plugin/cross/main.h b/o3d/plugin/cross/main.h
index 29e386a..049c688 100644
--- a/o3d/plugin/cross/main.h
+++ b/o3d/plugin/cross/main.h
@@ -59,6 +59,12 @@
#define HANDLE_CRASHES void(0)
#else // O3D_INTERNAL_PLUGIN
+#if defined(OS_LINUX)
+#define EXPORT_SYMBOL __attribute__((visibility ("default")))
+#else
+#define EXPORT_SYMBOL
+#endif
+
extern ExceptionManager *g_exception_manager;
// BreakpadEnabler is a simple class to keep track of whether or not
diff --git a/o3d/plugin/linux/main_linux.cc b/o3d/plugin/linux/main_linux.cc
index 55096db..b91c9d8 100644
--- a/o3d/plugin/linux/main_linux.cc
+++ b/o3d/plugin/linux/main_linux.cc
@@ -622,15 +622,15 @@ namespace o3d {
extern "C" {
#endif
-NPError OSCALL NP_Initialize(NPNetscapeFuncs *browserFuncs,
- NPPluginFuncs *pluginFuncs) {
+NPError EXPORT_SYMBOL OSCALL NP_Initialize(NPNetscapeFuncs *browserFuncs,
+ NPPluginFuncs *pluginFuncs) {
NPError retval = InitializeNPNApi(browserFuncs);
if (retval != NPERR_NO_ERROR) return retval;
NP_GetEntryPoints(pluginFuncs);
return InitializePlugin();
}
-NPError OSCALL NP_Shutdown(void) {
+NPError EXPORT_SYMBOL OSCALL NP_Shutdown(void) {
HANDLE_CRASHES;
DLOG(INFO) << "NP_Shutdown";