From kde-core-devel Thu May 31 11:26:08 2001 From: Michael Matz Date: Thu, 31 May 2001 11:26:08 +0000 To: kde-core-devel Subject: Re: exporting symbols (was Re: The goodness of goodness) X-MARC-Message: https://marc.info/?l=kde-core-devel&m=99131130729087 Hi, On Tue, 29 May 2001, Waldo Bastian wrote: > > Nope. E.g. in this example class: > > class A {public: A(); > > private: void m(); > > }; > > A::A() { m(); m(); } > > > > Here the two calls to m() result in two R_386_PC32 rels which are > > symbol-based, whereas if A::m() would be non-visible, that could be > > converted to _one_ R_386_RELATIVE which is constant-based. This is also > > what -Bsymbolic is basically doing, but I just noticed a bug in that, > > dealing with static class members returned by inline functions. If that > > would be fixed we could get to these numbers: > > Euhm.. why does my "objdump -R " not show any R_386_PC32 reloc > at all? Could it be that R_386_PC32 rels are only generated for non-PIC code? Bah. Of course, with -fPIC they indeed are R_386_JUMP_SLOT's. > > The numbers are symbol-based relocations (lazy and non-lazy) > > (objdump -R .so | grep -v '\*ABS\*' | wc -l), first number normal build > > (not quite current CVS), second number custom build with invoking the > > linker by hand and some options. > > Can you do a "grep 'R_386_32' | wc -l" for and after and a "grep > 'R_386_JUMP_SLOT' | wc -l" for and after? Yep, here: libkdecore.so.3.0.0 : R_386_32 1708 - 955 R_386_JUMP_SLOT 1715 - 906 libkdesu.so.1.0.0 : R_386_32 37 - 6 R_386_JUMP_SLOT 157 - 119 libkdeui.so.3.0.0 : R_386_32 15660 - 12591 R_386_JUMP_SLOT 2870 - 1526 libkfile.so.3.0.0 : R_386_32 3392 - 2871 R_386_JUMP_SLOT 1008 - 693 libkhtml.so.3.0.0 : R_386_32 13134 - 1414 R_386_JUMP_SLOT 2310 - 874 libkio.so.3.0.0 : R_386_32 1183 - 689 R_386_JUMP_SLOT 837 - 458 libkjava.so.1.0.0 : R_386_32 321 - 321 R_386_JUMP_SLOT 227 - 227 libksycoca.so.3.0.0 : R_386_32 1017 - 522 R_386_JUMP_SLOT 789 - 456 The rest of the symbol based relocs are R_386_GLOB_DAT's and add up to the other numbers minus 7 (the header lines of objdump output which isn't removed by grep -v '\*ABS\*'). Ciao, Michael.