Mis proyectos integrados tienen un paso posterior al proceso que reemplaza un valor en el ejecutable con el CRC de (algunas secciones de) el flash. Este paso solo se puede realizar después del enlace, ya que es la primera oportunidad para CRC la imagen. En el pasado, el formato de archivo era COFF, y he creado una herramienta personalizada para realizar el parche.¿Herramienta para la modificación simple del archivo elf?
La herramienta de desarrollo se ha cambiado a ELF, por lo que necesito volver a implementar el parche CRC. Antes de hacerlo, pensé que buscaría una herramienta existente para hacer esto. El compilador se basa en gcc, pero no puedo ver ninguna combinación de ld
y nm
y readelf
que pueda hacer el trabajo. Una búsqueda en Google no ha sido fructífera.
Mi herramienta actual usa nm
para encontrar la dirección a parchar, y llama al parcheador con la dirección, el valor esperado (para evitar sobrescribir los datos incorrectos) y el nuevo valor CRC. El CRC se calcula en un formato "hexadecimal" del ejecutable (que también parche), así que afortunadamente no tengo que volver a hacer esa parte.
Puedo implementar esto con libelf
y código personalizado de nuevo, pero antes de hacerlo, ¿ya existe?
¿Hay alguna forma mejor de lograr mi objetivo de colocar un CRC del ejecutable en el ejecutable para que esté disponible para la aplicación?
Esta es una gran sugerencia, +1. Lo probaré. –