¿Existe una simple representación DWARF CFI para las funciones que configuran un puntero de trama convencional?

Estoy programando en una combinación de C, C ++ y ensamblaje y me gustaría obtener rastreos confiables de cualquier parte del código.

Esto generalmente funciona bien para el código C y C ++ ya que puedo generar información de depuración con-g, que para los compiladores y plataformas x86 modernos generaENANO información de depuración, lo que significa que el binario final incluye CFI (Call Frame Information). Esta información permite caminar hacia atrás a través de las funciones en la pila de llamadas actual. Puede soportar escenarios complejos como funciones sin un puntero base y dóndersp cambios en formas dinámicas. Para el código C y C ++ no tengo que preocuparme: el compilador solo genera el CFI correcto incluso para el código optimizado.

$6Esto generalmente funciona bien para el código C y C ++ ya que puedo generar información de depuración con7$

Me gustaría agregar CFI para las rutinas generadas por el ensamblado, pero no necesito toda la flexibilidad del CFI para identificar el CFA basado en cambios granulares de instrucciones pararsp y así sucesivamente: estoy perfectamente feliz de configurar un puntero de cuadro estándar enrbp para cada función de ensamblaje y déjelo intacto para toda la función. ¿DWARF3 admite este escenario con un simple bit de información CFI, con suerte una que pueda generar con una macro ensambladora?

1 El experimental "nextgen"versión of yasm tiene soporte para directivas CFI, pero ese proyecto no se ha actualizado en 5 años. Hay unTema abierto para transferir este soporte a la versión principal de yasm.

Respuestas a la pregunta(0)

Su respuesta a la pregunta