Hiding template and instantiated template symbols




I'm having a problem not being able to hide all symbols from my DSO
library. Mainly, I am having problems hiding symbols from template
code from a static library.

I am (or have tried) using:
* -fvisibility=hidden
* -s
* --version-script=myscript.lds

with myscript.lds being:

VERS_1.0 {
global:
mrl_*;
local:
*;
}

Still, gcc seems to still expose references to symbols of a static
library I am linking in (in this case, the openexr librarary), as W or
T, which I assume means Weak symbol and Template symbols.

00000000000ba0c8 W Imf::FrameBuffer::operator=(Imf::FrameBuffer
const&)
00000000000a5e0e T Imf::FrameBuffer::operator[](char const*)

Is there any way to hide these additional symbols? I won't be
propagating any exceptions outside of my DSO, so there's really no
need for any weak symbols to be exposed.

.