Discussion:
Multiple symbol with same name?
kamlesh kumar
2018-10-05 07:43:34 UTC
Permalink
Hi devs,

Consider following test case:
$cat test.c
extern int print();
extern int xprint();
int main()
{
print();
xprint();
return 0;
}

$ gcc -c test.c
$nm test.o
0000000000000000 T main
U print
U xprint

$objcopy --redefine-sym print=xprint test.o
$nm test.o
0000000000000000 T main
U xprint
U xprint

As you can see there is the two symbols with same name "xprint" and in
this case the objcopy should had merged the xprint in the symbol table
to one instance (provided both has same symbol attributes ) .

Is that bug in the objcopy utility or do we are missing something here ?

Thank you
Kamlesh
Alan Modra
2018-10-09 12:39:39 UTC
Permalink
Post by kamlesh kumar
$nm test.o
0000000000000000 T main
U print
U xprint
$objcopy --redefine-sym print=xprint test.o
$nm test.o
0000000000000000 T main
U xprint
U xprint
As you can see there is the two symbols with same name "xprint" and in
this case the objcopy should had merged the xprint in the symbol table
to one instance (provided both has same symbol attributes ) .
Is that bug in the objcopy utility or do we are missing something here ?
objcopy doesn't do the sort of manipulation of object files you think
it should do. It's not a linker after all. (And that is a hint as to
how you might be able to merge those two undefined symbols.)
--
Alan Modra
Australia Development Lab, IBM
Continue reading on narkive:
Loading...