> So then is a binutils and not a compiler problem. What binutils are you > using? Binutils 2.8.1 which I'm still recommending (mostly to avoid > sending people into a maze of version dependencies) is getting dated and > the bug may well have been fixed in the meantime. I have met a weird bug in binutils 2.8.1 on mips lately: when using ".weak" directive in some module which make use of the same asliased symbol, during linkage the symbol doesn't get relocated to a "strong" symbol: ---------------------- in foo.c: ---------------------- extern void bar(); void foo(){ printf("A\n"); } __asm__(".weak bar; bar = foo"); void f1(){ bar(); } ----------------------- in bar.c: ---------------------- void bar(){ printf("B\n"); } ---------------------- in main.c: ---------------------- extern void bar(); extern void f1(); int main(){ f1(); bar(); } ----------------------- This code produce printout of A B since f1() always calls foo() no matter that bar() is defined outside. AFIAIK, there is no ".weakext" macro in 2.8.1. Using objdump on foo.o I see there is no relocation entry for bar, however using gas-2.10 on exactly same assembly does produce relocation entry. So it must definitely be a "gas" problem. Sincerely yours, Michael Shmulevich ______________________________________ Software Developer Jungo - R&D email: michaels@jungo.com web: http://www.jungo.com Phone: 1-877-514-0537(USA) +972-9-8859365(Worldwide) ext. 233 Fax: 1-877-514-0538(USA) +972-9-8859366(Worldwide)