Zahada neexistujiciho souboru

Leonardo leo na matrix-leo.cz
Sobota Květen 11 19:40:05 CEST 2013


Dne So 11. května 2013 16:35:31 Pavel Kankovsky napsal(a):
> On Sat, 11 May 2013, Leonardo wrote:
> > Dne So 11. května 2013 13:18:53 Pavel Janík napsal(a):
> >> head -1 /usr/firefox/firefox?
> > 
> > ELF4~4  (444  TTT???y???y???y???       ???       4t???z???
> > 
> > Tak z toho moc moudrý nejsem.
> 
> Zkuste ještě tento příkaz:
> 
> $ objdump -j .interp -s /usr/firefox/firefox

file format elf32-i386

Contents of section .interp:
 8048154 2f6c6962 2f6c642d 6c696e75 782e736f  /lib/ld-linux.so
 8048164 2e3200

Pravděpodobně se vám jedná o /lib/ld-linux.so
Jen tak zkusmo, jsem si stáhl jiný firefox přímo od výrobce 
(http://www.mozilla.org/en-US/firefox/all/ ) a výsledek je naprosto stejný.
> 
> (Hmm... proč vlastně objdump -p vypisuje všechno možné, ale ne obsah
> .interp?)
> 
> Dynamicky linkované ELFové programy jsou trochu jako skripty. V sekci
> .interp (*) může být odkaz na jiný program tzv. interpreter, což je
> obvykle dynamický linker, a jádro se pak de facto pokouší spustit tento
> interpreter, což může ale skončit s chybou (jako např. ENOENT), která je
> pak vrácena tomu, kdo provedl execve(), aniž by bylo možno rozlišit, zda
> se týká původního programu, nebo až interpreteru.
Ted jsem se kouknul chybý mi /lib/ld-linux.so, to by mohlo vysvětlovat, proč 
některé programy x86, které jsou na tomtéž filesystemu vykazují stejnou chybu.
Děkuji všem za pomoc a vysvětlení příčiny, asi se budu muset naučit kompilovat 
firefox nebo se spokojit s iceweassel :-(
Na štěstí oba programy zas tak nutně nepotřebuji, protože běžně používám 
chromium.
> 
> (*) Nebo přesněji v segmentu PT_INTERP, protože program má dvě
> alternativní struktury: segmenty (jejich tabulka se jmenuje program
> header), které popisují strukturu z hlediska toho, kdo chce program
> spustit a potřebuje vědět, co kam namapovat do paměti, a sekce, které
> reprezentují spíš logický pohled na věc. Obvykle je rozdělení souboru do
> sekcí zjemněním rozdělení na segmenty. Tabulka sekcí (section header)
> může v principu ve spustitelném soubboru chybět. Nebo by čistě hypoteticky
> přítomna být mohla, ale ukazovat na jiná místa než tabulka segmentů, a pak
> by objdump -j .interp ukazovalo špatná data. Pokud máte dojem, že po Vás
> jdou, tak to můžete zkontrolovat porovnání obou tabulek v objdump -x.
Děkuji za vysvětlení.
-- 
 Leonardo
------
 „Teoretické znalosti dnes už nestačí.
 Člověk musí překročit jejich hranice a umění se stane neumělým uměním, které 
vyrústá z nevědomí“
             Daitsu Suzuki ( 1870 – 1966 ) 
---------
 Feder ajsi romňi, so buter manušňi sar džuvli.
	Cikánské přísloví


Další informace o konferenci Linux