Port-hpcsh archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
Re: Text relocations in shared libs
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
--
uwe%ptc.spbu.ru@localhost | Zu Grunde kommen
http://snark.ptc.spbu.ru/~uwe/ | Ist zu Grunde gehen
Home |
Main Index |
Thread Index |
Old Index