partial linking that resolves relocations

Yni Mous ynimous@gmail.com
Wed May 18 07:50:00 GMT 2011


Hi,

I'm not sure I'm using the correct terminology, so I will use a simple example:

Assuming two C files:

$ cat 1.c
void foo();

void lala() {
       foo();
}
$ cat 2.c
void foo(){}

$ gcc -c 1.c
$ gcc -c 2.c

$ objdump -dr 1.o
0000000000000000 <lala>:
  0:   55                      push   %rbp
  1:   48 89 e5             mov    %rsp,%rbp
  4:   b8 00 00 00 00   mov    $0x0,%eax
  9:   e8 00 00 00 00   callq  e <lala+0xe>
                       a: R_X86_64_PC32        foo+0xfffffffffffffffc
  e:   5d                       pop    %rbp
  f:   c3                         retq

Is there a way to combine object files (1.o and 2.o) to produce another
object file (similar to ld -i) with the relocations "resolved"?

In this particular case I would want something like:

00000000004004a4 <foo>:
 ....
0000000000400494 <lala>:
 400494:       55                      push   %rbp
 400495:       48 89 e5             mov    %rsp,%rbp
 400498:       b8 00 00 00 00   mov    $0x0,%eax
 40049d:       e8 02 00 00 00   callq  4004a4 <foo>
 4004a2:       5d                       pop    %rbp
 4004a3:       c3                       retq


I want to use this as a quick fix for two libraries that export the same symbol.

Thanks,



More information about the Binutils mailing list