Protected symbol means that it can't be pre-emptied. It doesn't mean its address won't be external. This is true for pointer to protected function. With copy relocation, address of protected data defined in the shared library may also be external. We only know that for sure at run-time. Here are patches for glibc, binutils and GCC to handle it properly. Any comments? Thanks. -- H.J.