http://gcc.gnu.org/bugzilla/show_bug.cgi?id=56453
--- Comment #1 from Simeon Pilgrim <simeon.pilgrim at gmail dot com> 2013-02-26 07:41:53 UTC --- Simplified that case down to the command: fr30-elf-gcc -c -o lib_a-argz_add.o argz_add.c and the code: void argz_add(char *str) { if (str == 0) return; return; } it appears to be the NULL comparison that's causing the problems. ie when more of the function was present removing that logic block made it all happy.