Egal, ob das Prog abstürztz (bzw abstürzen würde) oder funktioniert(e), dürfte es beim Proggen keine Fehler geben. Mit dem Programmcode selbst kann das eigentlich nichts zu tun haben.

Das hex-File sieht jedenfalls nicht gut aus. Scheinbar sind da noch debug-Informationen drinne...

Versuch mal den Standard-Weg über elf32-avr anstatt ihex:

Code:
avr-gcc .... -o arg.elf (ohne -Wl...)
avr-objcopy -j .text -j .data -O ihex arg.elf arg.hex
avr-objcopy -j .eeprom --change-section-lma .eeprom=0 -O ihex  arg.elf arg-eeprom.hex