Re: Text relocations in shared libs

"Valeriy E. Ushakov" <[email protected]>
Newsgroups gmane.os.netbsd.ports.hpcsh,gmane.os.netbsd.ports.sh3,gmane.os.netbsd.ports.dreamcast
Message-ID <[email protected]>
On Sun, Dec 25, 2005 at 16:02:11 +0300, Valeriy E. Ushakov wrote:

> [Thanks to Nick Hudson for discovering this]
> 
> For sh3 a few shared libraries in the base system has text
> relocations.  This means that ld.so needs to perform relocations
> during startup.  E.g.
> 
> nada# ktruss echo                                                              
> ...
>    600      1 echo     open("/lib/libc.so.12", 0, 0xfffff804) = 3, 6214
>    600      1 echo     __fstat30(0x3, 0x7fffd82c)  = 0, 6214
>    600      1 echo     mmap(0, 0x1000, 0x1, 0x1, 0x3, 0, 0, 0) = 0x20434000
>    600      1 echo     munmap(0x20434000, 0x1000)  = 0, 541254268
>    600      1 echo     mmap(0, 0xdc000, 0x5, 0x10000002, 0x3, 0, 0, 0) = 0x20440000
>    600      1 echo     mmap(0x20505000, 0x8000, 0x3, 0x12, 0x3, 0, 0xb5000, 0) = 0x20505000
>    600      1 echo     mmap(0x2050d000, 0xf000, 0x3, 0x1012, 0xffffffff, 0, 0, 0) = 0x2050d000
>    600      1 echo     mprotect(0x204f6000, 0xf000, 0) = 0
>    600      1 echo     close(0x3)                  = 0, 831372
> !->600      1 echo     mprotect(0x20440000, 0xb6000, 0x7) = 0
> !->600      1 echo     mprotect(0x20440000, 0xb6000, 0x5) = 0
> 
> This also means that the pages are no longer shared.
> 
> 
> Offending libraries are libc, libposix, and libpthread.  Text
> relocations come from the handwritten asm files.  libc and libposix
> (that borrows SYS.h code from libc) has a lot of relocs for cerror:

I have cleaned up libc from text relocs.  It should be truly shared
now.  And an unscientific test of running /bin/echo -n in a loop 100
times went down from ~11s to ~8s of wall time on my Jornada.

SY, Uwe
-- 
[email protected]                         |       Zu Grunde kommen
http://snark.ptc.spbu.ru/~uwe/          |       Ist zu Grunde gehen
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.