У меня есть некоторый скомпилированный объектный файл с символами отладки, но без доступа к источникам.
Есть ли способ конвертировать этот файл, чтобы быть независимым от позиции?
Насколько я понимаю, флаг ‘-fPIC’ делает все прыжки относительными. Мне интересно, достаточно ли иметь отладочные символы, чтобы исправить эти скачки и создать двоичный файл PIC.
Если нет, пожалуйста, скажите мне, почему эту операцию невозможно сделать.
Я думаю, что этот вопрос скорее зависит от платформы, чем от компилятора, поскольку разные платформы по-разному реализуют код PIC.
Тем не менее, я не знаю ни одной платформы, где можно было бы с помощью простого инструмента преобразовать обычный код в независимый от позиции код. Это решение должно быть принято во время компиляции / генерации кода. Вероятно, единственный способ достичь вашей цели — разобрать код и преобразовать каждую абсолютную ссылку на код / данные в относительную адресацию.
Короткий ответ будет: нет, (практически) невозможно.