¿Por qué no puedo obtener directamente el contenido de la sección `.bss`?

La prueba es en Linux de 32 bits.

Utilizo este comando para obtener el contexto de .text .rodata y .data sección:

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

Pero básicamente cuando intenté usar esto para obtener el contenido de la sección .bss, siempre obtengo el error que se muestra a continuación:

objdump -s -j .bss elf_binary objdump: section ".bss" mentioned in a -j option, but not found in any input file 

Básicamente, ¿cómo puedo obtener el contenido de la sección .bss del binario ELF?

Respuesta

El .bss no tiene contenido. Es simplemente un consejo para el cargador preasignar algo de espacio al iniciar el programa. Será todo 0 en la ejecución y no retendrá ninguna información útil hasta que el programa escriba en él. Después de eso, puede usar un depurador para volcar la memoria y explorar su contenido.

Consulte la página de Wikipedia para obtener más información.

Respuesta

El .bss bloque iniciado por el símbolo ( también llamado segmento de datos sin inicializar – bss es una antigua instrucción de ensamblaje en un chip IBM antiguo) se supone que la sección contiene global variables y static variables sin inicializar o inicializado a 0 o NULL. La sección .bss generalmente no existe hasta que su programa comienza a ejecutarse, por eso no puede «recuperar su contenido de forma estática. Es muy importante tener en cuenta que esta sección ayuda a reducir el programa» s size & hace que la carga sea más rápida.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *