Creating a microcontroller startup file

Jens Bauer via Digitalmars-d-learn digitalmars-d-learn at puremagic.com
Wed Apr 8 08:53:36 PDT 2015


On Wednesday, 8 April 2015 at 11:17:12 UTC, Mike wrote:
> On Tuesday, 7 April 2015 at 20:33:26 UTC, Jens Bauer wrote:
>
>> Question number 3: How can I call an external function and 
>> keep the binary file size down ?
>
> Are you compiling with -ffunction-sections -fdata-sections and 
> linking with --gc-sections? You may need to in order to get rid 
> of some things.

I had -fdata-sections for the compiler and --gc-sections for the 
linker, but I was missing -ffunction-sections. Thank you for 
letting me know about this.
Unfortunately, it did not reduce the size of the output file.

> What do you using for your D runtime?

minlibd by Timo Sintonen.

>  Perhaps some code in your runtime is implicitly linking
> to some code you're not directly calling.

Maybe that's what's causing it, but I find it strange that 
calling an empty function outside the source file will cause that 
huge difference.
-But of course, there's a logic explanation somewhere. ;)

Note: I can rename the 'main()' function to 
'My1Own2Weird3Function4Name567()' and the same thing happens, so 
it's not because main() is special.

> I also add the following to my linker scripts to get rid of 
> stuff I don't find necessary:
> [snip]

It might be caused by the linker script; I'll try and see if I 
can modify it to get rid of those things.

> You can see the latest incarnation of my linker script here: 
> https://github.com/JinShil/stm32f42_discovery_demo/blob/master/linker/linker.ld

Mine is quite huge, so I'll try out yours as a starting point. ;)


More information about the Digitalmars-d-learn mailing list