diff options
author | piman@google.com <piman@google.com@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-07-29 20:52:15 +0000 |
---|---|---|
committer | piman@google.com <piman@google.com@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-07-29 20:52:15 +0000 |
commit | 778da76f8a401af0eb108889e3e29506d1638bd5 (patch) | |
tree | b4f4226deffd358705a4be5753082cd8aeec2a31 /o3d/plugin | |
parent | 7c37e4c641007ccbb666be127926e7512b0db89b (diff) | |
download | chromium_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.cc | 7 | ||||
-rw-r--r-- | o3d/plugin/cross/main.h | 6 | ||||
-rw-r--r-- | o3d/plugin/linux/main_linux.cc | 6 |
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"; |