¿Qué hacer el.eh marco y.eh frame hdr sections store, exactamente?


Sé que, cuando se utilizan lenguajes que admiten excepciones, como C++, se debe proporcionar información adicional al entorno de tiempo de ejecución para describir los marcos de llamada que se deben desenrollar durante el procesamiento de una excepción. Esta información está contenida en secciones especiales de los archivos objeto, como .eh_frame y .eh_frame_hdr.

Pero, ¿qué tipo de estructuras de datos se almacenan en estas secciones? Quiero decir, ¿se pueden leer usando cualquier estructura C? ¿Tienen algo que ver con el .cfi declaraciones (tales como .cfi_startproc, .cfi_endproc, .cfi_offset, .cfi_def_cfa_offset, .cfi_personality and .cfi_lsda) in GNU assembly code? Si lo hacen, ¿qué causa cada una de estas cláusulas en esas secciones? ¿Qué tiene que ver la sección .eh_frame_hdr con la sección .eh_frame?

Agradecería explicaciones usando estructuras C tanto como sea posible. Agradecer.

Author: LuisABOL, 2012-12-30

1 answers

Por favor, véase cfi-directivas

Debe cubrir la historia y la teoría de la mayoría de las secciones en cuestión.

Acerca de eh_frame, contiene el desenrollado de excepciones e información del idioma fuente. Cada entrada en esta sección está representada por un único CFI (call frame information)

Ver, eh_frame en linuxfoundation

Eh_frame_hdr, es utilizado por el código de tiempo de ejecución de c++ para acceder al eh_frame. Eso significa que contiene el puntero y la tabla de búsqueda binaria para recuperar eficientemente la información de eh_frame.

Ahora, en caso de que quieras ver cómo lees/escribes estas secciones, te sugiero que eches un vistazo al siguiente código enlazador.

(busca EhFrame.cpp, EhFrameHdr.cpp y EhFrameReader.cpp )

¡Buena suerte !!

 18
Author: Icarus3,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-01-17 12:50:26