Removing RTTI from binaries
    Mike via D.gnu 
    d.gnu at puremagic.com
       
    Wed Jan 14 06:28:42 PST 2015
    
    
  
On Wednesday, 14 January 2015 at 13:32:53 UTC, Mike wrote:
>
> Well, I was working a reduced test case and found that it has
> something to do with my trace.d file here:
> https://github.com/JinShil/stm32f42_discovery_demo/blob/master/source/stm32f42/trace.d
>
> If I add a trace.writeLine("x") in my program, then the binary
> goes from 2K to 130K.  Anyway, it appears it has nothing to do
> with TypeInfo.  I'll continue to try to reduce.
>
> Thanks for the help and useful information.
>
> Mike
Final update:
The problem was with this function here:
void write(A...)(in A a)
{
      foreach(t; a)
      {
          write(t);
      }
}
I think that since this is an open-ended template and I could
potentially pass any type to it, the compiler thinks it should
remember the TypeInfo.name values for every type in my program.
However, since I only ever used write("x") in my program, I
expect the linker to be able to see that those TypeInfo.name
values are never used, and strip them out when compiled with
-fdata-sections and -Wl,--gc-sections.  Perhaps it couldn't
because of the way the data is packed.
Anyway, I guess I'll see about modifying my code to be less
flexible in order to reign this data in.
Suggestions are welcome.
Mike
    
    
More information about the D.gnu
mailing list