Otázka:
Proč nemohu přímo získat obsah sekce `.bss`?
lllllllllllll
2014-05-02 02:50:43 UTC
view on stackexchange narkive permalink

Test je na 32bitovém systému Linux.

Pomocí tohoto příkazu získám kontext .text .rodata a .data sekce:

  objdump -s -j .text elf_binaryobjdump -s -j .rodata elf_binaryobjdump -s -j .data elf_binary  

Ale v zásadě když jsem se pokusil použít toto k získání obsahu sekce .bss , vždy se mi zobrazí následující chyba:

  objdump -s -j .bss elf_binaryobjdump: sekce '.bss' zmíněný v možnosti -j, ale nenalezený v žádném vstupním souboru  

Jak v podstatě mohu získat obsah sekce .bss z binárního souboru ELF ?

Dva odpovědi:
Dale
2014-05-02 03:03:49 UTC
view on stackexchange narkive permalink

Soubor .bss nemá žádný obsah. Je to prostě tip na zavaděč, aby při spuštění programu předem určil nějaký prostor. Při provádění to bude všech 0 s a nebude obsahovat žádné užitečné informace, dokud na něj program nezapíše. Poté můžete pomocí debuggeru vypsat paměť a prozkoumat její obsah.

Další informace najdete na stránce Wikipedia.

yaspr
2014-05-02 16:44:07 UTC
view on stackexchange narkive permalink

.bss blok zahájený symbolem (také nazývaný neinicializovaný datový segment - bss je stará montážní instrukce na starém čipu IBM) sekce má obsahovat globální proměnné a statické proměnné neinicializované nebo inicializované na 0 nebo NULL. Sekce .bss obvykle neexistuje, dokud se program nespustí, proto nemůžete staticky načíst její obsah. Je docela důležité si uvědomit, že tato část pomáhá zmenšit velikost programu, díky čemuž & umožňuje rychlejší načítání.



Tyto otázky a odpovědi byly automaticky přeloženy z anglického jazyka.Původní obsah je k dispozici na webu stackexchange, za který děkujeme za licenci cc by-sa 3.0, pod kterou je distribuován.
Loading...