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