Есть ли утилита для редактирования версии символа в скомпилированном двоичном файле (исполняемая или разделяемая библиотека)?
Например, если у меня есть
> nm a.out
...
U powf@@GLIBC_2.27
, я бы хотел изменить егона
> nm a.out
...
U powf@GLIBC_2.2.5
Я могу изменить эту версию, добавив
__asm__(".symver powf,powf@GLIBC_2.2.5");
в исходный файл, но я хочу сделать это для двоичных файлов, которые уже скомпилированы.
Редактирование двоичного шестнадцатеричного кода почти работает, но, поскольку требуемая версия символа на 1 символ длиннее оригинала, я могу только заставить его сказать
/usr/lib/libm.so.6: version `GLIBC_2.2.' not found
во время выполнения.
В целом, я пытаюсь сделать двоичный файл, скомпилированный с glibc 2.27+ совместимым со старыми версиями glibc, и если этот метод работает, это будет намного проще, чем другие альтернативы, например, компиляция пользовательского GCC / glibc/ libstdc ++ / инструментальные средства для зависимостей.