[ LUGOS ] free, delete ...

Rok Krulec Rok na fpp.edu
Tor Jun 23 14:40:49 CEST 1998


On Tue, 23 Jun 1998, Andrej Presern wrote:

Kapo dol, ocitno je tudi v Yugi se nekej ljudi, ki se spoznajo se na kej
druzga kot na lopovstvo. Stavim za en pir, da g. Andrej Preseren cez 2
leti ne bo vec fizicno lociran v Yugi ampak kje dalec stran in bo njegova 
veza z Yugo samo se e-mail in LUGOS mailing lista. 
	En pir torej, kdo stavi.
Ce placam pir, ga zaposlim jest s poslansko placo vkljucno s potnimi nalogi.

Rok Krulec aka Tantadruj

P.S.: Se opravicujem za off-topic sporocilo

> Ce detaljno poznas arhitekturo, je to vcasih mozno. Npr. pri Linuxu je
> mozno lociti globalne staticne spremenljivke od dinamicno dodeljenega
> pomnilnika, ker se dinamicno dodeljen pomnilnik dodeli bodisi s kopice
> (dinamicna alokacija lokalnih spremenljivk) ali pa se dolocen segment
> mapira direktno mapira v naslovni prostor aplikacije. Globalne
> spremenljivke so zapisane bodisi v .data bodisi v .bss segmentu, oba pa
> sta fiksirana na neko lokacijo; recimo ce pogledamo mape za proces init:
> 
> [root na soda /proc/1]# cat maps 
> 08048000-0804e000 r-xp 00000000 03:03 155686
> 0804e000-0804f000 rw-p 00005000 03:03 155686
> 0804f000-08053000 rwxp 00000000 00:00 0
> 40000000-40009000 r-xp 00000000 03:03 65831
> 40009000-4000b000 rw-p 00008000 03:03 65831
> 4000b000-40010000 r--p 00000000 03:03 12396
> 40010000-40012000 r-xp 00000000 03:03 65841
> 40012000-40013000 rw-p 00001000 03:03 65841
> 40013000-400a4000 r-xp 00000000 03:03 65832
> 400a4000-400ab000 rw-p 00090000 03:03 65832
> 400ab000-400b7000 rw-p 00000000 00:00 0
> bffff000-c0000000 rwxp 00000000 00:00 0
> 
> in ce pogledamo strukturo izvrsilne datoteke za isti proces:
> 
> [andrejp na soda ~]$ objdump --section-headers `which init`
> 
> /sbin/init:     file format elf32-i386
> 
> Sections:
> Idx Name          Size      VMA       LMA       File off  Algn
>   0 .interp       00000013  080480d4  080480d4  000000d4  2**0
>                   CONTENTS, ALLOC, LOAD, READONLY, DATA
>   1 .hash         00000294  080480e8  080480e8  000000e8  2**2
>                   CONTENTS, ALLOC, LOAD, READONLY, DATA
>   2 .dynsym       00000600  0804837c  0804837c  0000037c  2**2
>                   CONTENTS, ALLOC, LOAD, READONLY, DATA
>   3 .dynstr       00000328  0804897c  0804897c  0000097c  2**0
>                   CONTENTS, ALLOC, LOAD, READONLY, DATA
>   4 .rel.got      00000008  08048ca4  08048ca4  00000ca4  2**2
>                   CONTENTS, ALLOC, LOAD, READONLY, DATA
>   5 .rel.bss      00000038  08048cac  08048cac  00000cac  2**2
>                   CONTENTS, ALLOC, LOAD, READONLY, DATA
>   6 .rel.plt      00000260  08048ce4  08048ce4  00000ce4  2**2
>                   CONTENTS, ALLOC, LOAD, READONLY, DATA
>   7 .init         0000002c  08048f50  08048f50  00000f50  2**4
>                   CONTENTS, ALLOC, LOAD, READONLY, CODE
>   8 .plt          000004d0  08048f7c  08048f7c  00000f7c  2**2
>                   CONTENTS, ALLOC, LOAD, READONLY, CODE
>   9 .text         000034b4  0804944c  0804944c  0000144c  2**2
>                   CONTENTS, ALLOC, LOAD, READONLY, CODE
>  10 .fini         0000001c  0804c900  0804c900  00004900  2**4
>                   CONTENTS, ALLOC, LOAD, READONLY, CODE
>  11 .rodata       000007da  0804c91c  0804c91c  0000491c  2**0
>                   CONTENTS, ALLOC, LOAD, READONLY, DATA
>  12 .data         00000234  0804e0f8  0804e0f8  000050f8  2**2
>                   CONTENTS, ALLOC, LOAD, DATA
>  13 .ctors        00000008  0804e32c  0804e32c  0000532c  2**2
>                   CONTENTS, ALLOC, LOAD, DATA
>  14 .dtors        00000008  0804e334  0804e334  00005334  2**2
>                   CONTENTS, ALLOC, LOAD, DATA
>  15 .got          00000140  0804e33c  0804e33c  0000533c  2**2
>                   CONTENTS, ALLOC, LOAD, DATA
>  16 .dynamic      00000090  0804e47c  0804e47c  0000547c  2**2
>                   CONTENTS, ALLOC, LOAD, DATA
>  17 .bss          00000204  0804e50c  0804e50c  0000550c  2**3
>                   ALLOC
>  18 .comment      00000078  00000000  00000000  0000550c  2**0
>                   CONTENTS, READONLY
>  19 .note         00000078  00000078  00000078  00005584  2**0
>                   CONTENTS, READONLY
> 
> lahko vidimo, da se bo ta konkretni image mapiral na naslov 0x08048000,
> pri cemer ELF headerji zavzamejo prvih 0xD4 bytov, zato se segment zacne
> na 0x080480D4 (glej segment z indeksom 0). Da se je proces dejansko tja
> nalozil, lahko vidimo v maps tabeli.
> 
> Zadnja vrstica mapirne tabele oznacuje kopico. Kot lahko vidis, kopica
> pri x86 arhitekturi na Linux-u raste od zgoraj navzdol (pri cemer je
> zgornji gigabyte naslovnega prostora (nad 0xC0000000) rezerviran za
> kernel) in na njej je dodeljen prostor za lokalne spremenljivke in
> alociran pomnilnik. Torej, ce zelis izvedeti, kje je bila dolocena
> spremenljivka dodeljena, moras brskati po /proc/pid/maps, poznati pa
> moras tudi ELF strukturo programa, da lahko o cemerkoli vsaj priblizno
> sklepas (libelf.so saves the day).
> 
> Ne glede na to, da se da izvedeti, kje je bila dolocena spremenljivka
> dodeljena, pa osebno ne vidim v uporabi tega znanja prav nobene
> prednosti, ki jo ne bi mogli bolj ucinkovito doseci z uporabo kaksne
> druge metode (beri: ne delaj tega, ker je lame:)

--
Send mail to mailto:Rok na fpp.edu, check out my Web barn at http://Rok.fpp.edu or visit #Linux.SI
Point your finger to roki na mirage.fpp.edu for public PGP encryption key
#Linux.SI distribution at ftp://ftp.fpp.edu/LinuxSI - on CD-ROM for only 1000SIT




Dodatne informacije o seznamu Starilist