This is the mail archive of the
mailing list for the binutils project.
Re: Stupid question: linking with a symbol under a different name
It's even more complex. I actually don't have any info about what that
symbol is and what convention it follows (except output of objdump, of
The full task is probably like that:
I'm given main.o (with some unresolved symbols).
I'm given libused.so (with some exported symbols).
I'm given recipe, like:
- map symbol1 (from main.o) to symbol1 (from libused.so) [names
- map symbol2 (from main.o) to symbol2 (from libused.so) [names
- map symbol3 (from main.o) to symbol862 (from libused.so) [names
- map symbol4 (from main.o) to symbol5837 (from libused.so)
- map symbol5 (from main.o) to symbol5 (from libused.so) [names
[Sorry for duplicate, first reply was accidentally sent to wrong address.]
On 06.10.16 23:00, Sasha Unknown wrote:
1. This is possible only with function. If it's a variable, I can't
create "wrapper variable" for it. (E.g. if symbol2 is "int" variable,
I of course can create foo.c with "int * const symbol1 = &symbol2",
but this won't match symbol1 convention from main.o, which expects
symbol1 to be "int", not "int *".)
2. Even with function this gives some overhead (one additional call;
AFAIK, wrapper function won't be inlined in this case).
On 06.10.16 15:58, Nick Clifton wrote:
Why not create a foo.c file that defines symbol1 and then passes any
reference on to symbol2 ?
Suppose I have:
- compiled object file "main.o" with unresolved symbol "symbol1";
- build shared library "libused.so" with exported symbol "symbol2".
Is there way to somehow link program "main" from "main.o", telling
it to use "symbol2" from "libused.so" as "symbol1"?