Re: binutils 2.8.1 problems

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



> 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)



[Index of Archives]     [Linux MIPS Home]     [LKML Archive]     [Linux ARM Kernel]     [Linux ARM]     [Linux]     [Git]     [Yosemite News]     [Linux SCSI]     [Linux Hams]

  Powered by Linux