> > +extern char _text[], _end[], _etext[], _edata[], _bss[]; > > These should be in a header file. Normally the "no externs in .c" rule doesn't apply to assembler or linker script defined labels. That's because the point of the header file is to type check them, but there is nothing to type check here. -Andi