c / c ++ конвертирует позиционно-зависимый объект в позиционно-независимый

У меня есть некоторый скомпилированный объектный файл с символами отладки, но без доступа к источникам.

Есть ли способ конвертировать этот файл, чтобы быть независимым от позиции?

Насколько я понимаю, флаг ‘-fPIC’ делает все прыжки относительными. Мне интересно, достаточно ли иметь отладочные символы, чтобы исправить эти скачки и создать двоичный файл PIC.

Если нет, пожалуйста, скажите мне, почему эту операцию невозможно сделать.

0

Решение

Я думаю, что этот вопрос скорее зависит от платформы, чем от компилятора, поскольку разные платформы по-разному реализуют код PIC.

Тем не менее, я не знаю ни одной платформы, где можно было бы с помощью простого инструмента преобразовать обычный код в независимый от позиции код. Это решение должно быть принято во время компиляции / генерации кода. Вероятно, единственный способ достичь вашей цели — разобрать код и преобразовать каждую абсолютную ссылку на код / ​​данные в относительную адресацию.

Короткий ответ будет: нет, (практически) невозможно.

1

Другие решения


По вопросам рекламы [email protected]