Bryan O'Sullivan wrote:
Here's something I just stumbled upon by accident: at least on Linux,
GHC emits huge numbers of symbols into the binaries it generates.
Here's Haddock, which I compiled without any funny debug options:

$ du -h haddock-0.9
4.1M   haddock-0.9
$ nm haddock-0.9 | wc -l
37938
$ strip haddock-0.9
$ du -h haddock-0.9
2.7M haddock-0.9

I happened upon this because I'm repackaging GHC 6.8.3 for Fedora, and
rpmlint complained that haddock was not stripped. The RPM packager
automatically strips binaries using "strip -g", but that wasn't
stripping any of the abovementioned symbols.

I don't know what the purpose of those symbols might be. Could someone
fill me in, please? Can they actually be used for anything?

We didn't put them there on purpose, if that's what you're asking :) These are just the symbols that get left in by the linker by default. gdb and things like valgrind can use them, but they're not a lot of use in general.

There tend to be a lot of local symbols left around too, which are of even less use. At one time I used to strip these out when making libraries, but it was tricky and non-portable, so I think we stopped doing it.

Cheers,
        Simon
_______________________________________________
Glasgow-haskell-users mailing list
[email protected]
http://www.haskell.org/mailman/listinfo/glasgow-haskell-users

Reply via email to