Add missing external symbols and remove symbols which are no longer
external or not defined at all. The list of symbols were extracted
using `nm` per instructions in the header file.
This ensures that PLCR's symbols will be vendor-prefixed even in the case
where the symbols are not stripped -- such as when we link statically to
PLCrashReporter.
Issue: PLCR-567
When building a shared library (and previously, when building an
MH_OBJECT-based static library), we used symbol exports to limit
visibility of 1) private APIs, and 2) symbols exported by the
third-party protobuf-c library.
While there's no strong requirement that we hide internal symbols, the
hiding of protobuf-c symbols was necessary to ensure that we did not
introduce symbol conflicts when linked with any other code that relied
on the protobuf-c library.
Unfortunately, MH_OBJECT is seemingly unused within Apple, and we
regularly hit serious linker bugs and limitations in new Xcode releases
caused by Apple introducing code incompatible with their MH_OBJECT
implementation.
In Xcode 7, the use of MH_OBJECT breaks -fembed-bitcode.
Rather than continuing to fight the linker with every Xcode release,
this commit disables MH_OBJECT and instead leverages our
PLCrashNamespace.h namespacing machinery to rewrite the protobuf-c
symbols.
Issue: PLCR-566