[Mono-dev] A question on Mono and -Bsymbolic

H. J. Lu hjl at lucon.org
Fri Jan 26 10:54:54 EST 2007


I am working on improving performance of applications linked with
shared libraries on Linux. By default, when a global function in a
DSO is called internally, it has to go through PLT even if it is
defined within the same DSO. Its impacts are

1. Longer startup time due to PLT relocation.
2. Run time indirection overhead due to extra PLT jump.

My optimization is to remove those extra PLT relocations and jumps
at link-time.  People reported:

The performance improvements are quiet impressive. We tried on the Greenphone,
a phone sold by Trolltech running Qtopia. 
For instance, the phone boots 2 seconds faster and the mail client starts 1
second faster as well, thanks to the number of relocations which decreased
significantly, as expected.
To give you an idea of the benefit, you can find some benchmark results as
Thanks again for your patch!

There are some performance numbers at


One side effect is you can no longer override global functions in a
shared libraries. Does it work with Mono shared libraries? If not,
is there a list of Mono functions which have to be overridable by
another shared library or user?



More information about the Mono-devel-list mailing list