Ésta es una situación me encuentro de vez en cuando:en Java: determinar mediante programación direcciones de C/variables de C++ da un COFF/ELF/ejecutable ENANO
Para un sistema integrado que no utiliza direccionamiento virtual, tengo un archivo ejecutable que se compiló desde el código C o C++ con información de depuración incluida. Por lo general, está en formato COFF o ELF/DWARF (obtengo esos dos mezclados).
En tiempo de ejecución, en una PC, me gustaría determinar la dirección de una variable dado su nombre. (por ejemplo, "foo.bar [7] .baz") Esto me permite leer/escribir el valor de la variable en el sistema incorporado (dado un protocolo de depuración que está más allá del alcance de esta pregunta). Obviamente, todas las variables que están basadas en pila o en heap están fuera ya que no tienen direcciones estáticas.
He hecho esto antes que yo en C++ para analizar los archivos COFF del compilador de TI para sus DSP de la serie 2800, y fue un poco molesto. Me preguntaba si había una biblioteca de Java que hace este tipo de cosas, ya que estoy enfrentando lo mismo con los archivos ejecutables de uno o dos procesadores.
Actualización: (11/18/2009) Una pista prometedora!
¿Alguien ha usado el analizador Eclipse CDT ELF?
(Ver http://help.eclipse.org/help33/index.jsp?topic=/org.eclipse.cdt.doc.isv/reference/api/org/eclipse/cdt/core/model/IBinary.html para una de las páginas javadoc)
Código de TI Compositor 4 (basado en Eclipse) parece usar esto, así que parece que si puedo averiguar donde la documentación es tal vez pueda utilizar ese para resolver mi problema
Desafortunadamente GPL está fuera de lugar, pero gracias por la idea. –
Supongo que todavía es muy útil para probar contra cualquier implementación que termine usando. –