2010-03-24 5 views
13

En Linux moderno casi todos los objetos se quitan y se dividen en dos partes (dos archivos). Primero es ejecutable y el segundo es símbolos de depuración, eliminados de ELF original. Tales archivos se crean conCómo revertir la tira de objcopy con only-keep-debug?

objcopy --only-keep-debug original.elf binary.dbg 
mv original.elf binary 
objcopy --strip-debug binary 

Cómo puedo fusionar I binary y binary.dbg en un archivo ELF con la depuración de información? Quiero volver a crear un binario original no desenrollado. No puede ser byte a byte igual al original, pero debe tener símbolos de depuración dentro.

PS Sí, sé de gnu.debuglink sección, pero no funciona para algunos depuradores (Etnus) y desensambladores (objdump no puede restaurar símbolos info)

Respuesta

5
Para

ELF, el paquete elfutils contiene una herramienta llamada eu-unstrip que hace el trabajo. En el contexto de su ejemplo:

eu-unstrip binary binary.dbg

binary.dbg ahora cuenta tanto los símbolos binarios y depurar. Incluiría una referencia a la documentación si pudiera encontrar alguna ...

+0

Existe el documento: http://www.linuxfromscratch.org/blfs/view/svn/general/elfutils.html "*' eu- unstrip' combina archivos eliminados con símbolos separados e información de depuración. * "y esta es la página de inicio https://fedorahosted.org/elfutils/ y esta es la fuente https://git.fedorahosted.org/cgit/elfutils.git/tree/ src/unstrip.c "Combina los archivos eliminados con símbolos separados e información de depuración. Copyright (C) 2007-2012, 2014, 2015 Red Hat, Inc ... Roland McGrath". Si tengo "program.bin" como ELF eliminado normal y "program.dbg" con solo información de depuración, ¿cómo debo iniciar 'eu-unstrip' y qué archivo se cambiará? – osgx

+3

Según mi uso, combina el binario en los símbolos de depuración. Si tiene program.dbg y program.bin, entonces 'eu-unstrip program.bin program.dbg' fusiona el bin en el archivo dbg. Obtener los params invertidos produce errores. – lyngvi

+0

No tengo acceso a elfutils pero solo binutils. ¿Es posible hacerlo usando objcopy --add-section o similar? – sunil

Cuestiones relacionadas