Мои встроенные проекты имеют шаг после обработки, который заменяет значение в исполняемом файле на CRC (некоторые разделы) флэш-памяти.Этот шаг может быть сделан только после связывания, так как это первая возможность CRC изображения.В прошлом формат файла был COFF, и я создал собственный инструмент для внесения исправлений.
Инструмент разработки перешел на ELF, поэтому мне нужно заново внедрить патчер CRC.Прежде чем сделать это, я подумал, что я буду искать существующий инструмент для этого.Компилятор основан на gcc, но я не вижу какой-либо комбинации ld
и nm
и readelf
, которая может сделать эту работу.Поиск в Google не был плодотворным.
Мой нынешний инструмент использует nm
, чтобы найти адрес для исправления, и вызывает средство исправления с адресом, ожидаемым значением (чтобы предотвратить перезапись неверных данных) и новым значением CRC.CRC рассчитывается в «шестнадцатеричном» формате исполняемого файла (который я также исправляю), поэтому, к счастью, мне не нужно переделывать эту часть.
Я могу реализовать это с помощью libelf
и пользовательского кода снова,но до того, как я это сделаю, он уже существует?
Есть ли лучший способ выполнить мою задачу - поместить CRC исполняемого файла в исполняемый файл, чтобы он был доступен для приложения?