__program_start() is in the start-up code provided by the toolchain. It mainly initializes memory before calling your main(). The linker adds this code to your own code, unless you disable it. Not sure what is up in your case, but you should for instance see it referenced by default under Project-Options-Linker-Config.