On 13/09/13 14:02, Dicebot wrote:
`--gc-sections` is ld flag that enabled garbage collection of unreferenced
sections in resulting binary. For it to work gcc/gdc need to be run with
`-fdata-sections`and `-ffunction-sections` placing each symbol into own section.
That will, for example, remove template function bodies that got inlined for all
calls. For template-heavy code with good inliner it can reduce binary sizes
tremendously (running it on snippet from this topic will reduce gdc binary size
to almost match dmd one).

Ahh, OK.

Related query -- is there any way of telling the compiler (gdc/gdmd or preferably any of the D compilers) to strip out unused symbols/functions/data from the binary?

I have a module that includes a quite large array of immutable data (used for test purposes), but when this is compiled in with other code it adds about 10MB (!) to the executable size, even when the executable never uses it. It'd be nice to be able to strip that out automatically rather than having to tweak the build script manually to leave out that module -- it's so much simpler to have the Makefile simply build using the whole library source. [*]

[* Yes, yes, I know, I should abandon Make and sort out a decent built system at long last ...]

Reply via email to