I've noticed that, even after stripping symbols from my executable, class names and their methods are still included at the end of the executable file.
For instance:
#include <iostream>
using namespace std;
class Clingons
{
public:
void clingForever()
{
cout << "Qapla" << endl;
}
};
int main(int argc, char *argv[])
{
Clingons cling;
cling.clingForever();
return 0;
}
Then compile and link with:
g++ cling.cpp -o cling
Now, when I look at the bottom of the resulting "cling" file with a hex editor, I can see the "Clingons" class name along with it's methods. I can also see this information while debugging..
even after I strip them:
strip -x cling
I can still see the same information.
So why wasn't this information stripped away when I used the command above? Is there a way to strip (or mangle) this information other than by hand?
The used version of GCC is i686-apple-darwin10-llvm-g++-4.2 (GCC) 4.2.1
This is just an example case. My real project involves the Qt framework.