Constantine Kousoulos <wuwei@freemail.gr> writes: > line 1: extern int _data, _edata; You'll find it more portable to define these like this: extern char _data[]; extern char _edata[]; This prevents the compiler from treating them like optimizable short symbols. MIPS, for example, stores small data in the .sdata segment, and addresses it differently.