nowy perl
Jakub Bogusz
qboosh w pld-linux.org
Nie, 9 Maj 2004, 18:31:00 CEST
On Sun, May 09, 2004 at 04:16:26PM +0200, Radoslaw Zielinski wrote:
> Jakub Bogusz <qboosh w pld-linux.org> [09-05-2004 15:23]:
> > On Sun, May 09, 2004 at 01:50:05PM +0200, Radoslaw Zielinski wrote:
> >> Jakub Bogusz <qboosh w pld-linux.org> [08-05-2004 19:27]:
> >>> On Sat, May 08, 2004 at 07:21:16PM +0200, Jakub Bogusz wrote:
> >>> A tak przy okazji, to łata perl_580-use-LD_PRELOAD-for-libperl.so.patch
> >>> coś chyba nie działa, bo i tak jest używane LD_LIBRARY_PATH.
> [...]
> >> that with LD_LIBRARY_PATH; on Linux, you can only override at runtime
> >> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
> >> via LD_PRELOAD, specifying the exact filename you wish to be used;
> >> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
> [...]
> >> Zgodnie z moimi testami, to nie jest prawdą; LD_LIBRARY_PATH jak
> >> najbardziej działa. Do wywalenia, nie?
> > Trochę mnie to dziwi, bo w podobnych przypadkach LD_LIBRARY_PATH mi nie
> > chciało działać (i tak wczytywał bibliotekę z /usr/lib) i musiałem
> > używać LD_PRELOAD.
> > A w tym przypadku działa (a strace potwierdza), że LD_LIBRARY_PATH
> > wystarcza, żeby przy wywołaniu ./{mini,}perl była używana nowa
> > biblioteka, a nie ta z /usr/lib.
>
> Może przy Twoich testach binarka była zlinkowana z libfoo.so.X, który
> był symlinkiem do /usr/lib/libfoo.so.X.Y.Z i nie uwzględniłeś tego przy
> testowaniu?
Nie sądzę, był komplet.
Może sytuacja dotyczyła bibliotek wczytywanych przez inne biblioteki,
a nie samą binarkę.
A co do rzeczonego błędu na ppc, to jednak wygląda na winę gcc.
W jednym z plików (pp_hot.c) jest użyte makro:
PUSHSUB(cx);
które zawiera:
PUSHSUB_BASE(cx) \
a to z kolei:
if (!CvDEPTH(cv)) { \
(void)SvREFCNT_inc(cv); \
(void)SvREFCNT_inc(cv); \
SAVEFREESV(cv); \
}
No i na ppc z -O2 te dwa SvREFCNT_int zwiększają licznik odwołań... o 1
zamiast o 2.
Próbowałem oglądać kod po asemblacji, po -O2 w tym miejscu jest jakaś
dziwna sieczka, ale nie wiem na ile niepoprawna, bo ten bezsamogłoskowy
asembler nie bardzo do mnie przemawia.
-fno-strict-aliasing jak się okazuje i tak jest używane przy budowaniu
perla, więc dodanie drugi raz nic nie daje.
Czyli zostanie -O1 na ppc. Ciekawe czy gcc 3.4 też ma taki "ficzer".
--
Jakub Bogusz http://cyber.cs.net.pl/~qboosh/
Więcej informacji o liście dyskusyjnej pld-devel-pl