Re: [xml] elfgcchack.h vs -Bsymbolic



On Wed, Nov 19, 2008 at 09:32:10AM +0100, Daniel Veillard <veillard redhat com> wrote:
On Sat, Nov 15, 2008 at 06:24:48PM +0100, Mike Hommey wrote:
Hi,

Have you considered using -Bsymbolic linker option instead of the
elfgcchack.h hack ?

  Hum, no ... I don't know -Bsymbolic, but I fail to see how the
linker could solve the problem I tried to solve (bypass costly ELF
lookup when doing internal library calls). Could you explain ?

My understanding of what elfgcchack.h tries to achieve is to remove
indirect calls (through the PLT) for function calls within the library.
-Bsymbolic just does that:

$ cat test.c
int foo(int a)
{
        return a;
}

int bar(void)
{
        return foo(0);
}
$ gcc -shared -fPIC -o test.so test.c
$ objdump -d test.so  |less
$ objdump -d test.so| grep foo
000003c8 <foo plt>:
000004bc <foo>:
 4dd:   e8 e6 fe ff ff          call   3c8 <foo plt>
$ gcc -Wl,-Bsymbolic -shared -fPIC -o test.so test.c
$ objdump -d test.so| grep foo
0000049c <foo>:
 4bd:   e8 da ff ff ff          call   49c <foo>

-Bsymbolic is supposed to do that for most symbols. -Bsymbolic-functions
is specialized to function calls.

Mike



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