libslang0.99.34 > libslang0.99.38

Pavel Janik ml. Pavel.Janik na inet.cz
Čtvrtek Leden 15 01:08:48 CET 1998


   Datum: streda, 14.ledna 1998 21:16:03 +0100 (MET)
   Odesilatel: Pavel Machek <pavel na elf.ucw.cz>

   > >         libslang.so.0.99.34 => /usr/lib/libslang.so.0.99.34
   > > pak se program tvrde dozaduje urcite verze (coz neni moc ok, ale proste
   > > byl tak vytvoren) a lze 1) oblbnout ho linkem, 2) prekompilovat ho (resp.
   > > prelinkovat), 3) "opravit" exac (jen pro pokrocile)

A nepomuze pouhe LD_PRELOAD=/usr/lib/libslang.so.0.99.38?

   > Myslis doufam exec, ze? Hmm, nevidim jak by to pomohlo, ja bych
   > 'opravoval' ld.so.

Oprava do_execve by asi nepomohla, ale ve fs/binfmt_elf.c je funkce

	static int load_elf_library(int fd)

ktera zajistuje nahravani knihoven ve formatu ELF do pameti. Jeji
upravou by se jiste dalo docilit pozadovaneho cile...


BTW - Mam jeden souvisejici dotaz. Predstavte si tuto situaci. Mam
programek:

	#include <stdio.h>
	void main()
	{
	   printf("Hello World :-))\n");
	}

Zkompiluji ho (gcc program.c). Budu mit ./a.out:

SnowWhite:~/Tmp$ ldd a.out 
        libc.so.6 => /lib/libc.so.6 (0x40003000)
        /lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x00000000)
SnowWhite:~/Tmp$

A ted chci dat strace ./a.out, ale s jednou podminkou - chci pouzit
starou libc5 (ne pro strace, ale pro a.out). Ale v tom je hacek,
protoze strace konci s libc5 se SEGFAULT.

Napadlo mne pouze poslat strace -f na skript:

	#!/bin/bash
	LD_PRELOAD=/usr/i486-linux-libc5/lib/libc.so.5 ./a.out

Existuje i nejaka jina moznost (samozrejme krome staticke
kompilace...)?

-- 
Pavel Janik ml.
Pavel.Janik na inet.cz


Další informace o konferenci Linux