Есть ли способ извлечь символы из ELF и использовать LD для связывания другого файла с символами, определенными в предыдущем ELF?

Я создаю приложение специально для Nintendo Wii, используя devKitPro. Я хотел сделать свое приложение модульным, предлагая возможность загружать код, переданный через двоичный файл objcopy -O. Моя проблема в том, что я хочу, чтобы модули могли использовать символы из основного ELF, который загружен в память. Я пробовал разные вещи, и я не придумал никаких решений.

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

  • Я также попытался скомпилировать в общую библиотеку, но у меня это не сработало, так как компоновщик жаловался на «сегменты только для чтения с динамическим перемещением».

Мне действительно нужна помощь в этом, так как я не нахожусь ни в среде Windows или Linux.

2

Решение

Вы можете рассмотреть возможность сделать это с помощью libdl который сделан именно для загрузки символов по имени во время выполнения. С помощью libdl вы можете получить дескрипторы всех функций, которые вы хотите вызвать, как часть подпрограммы инициализации, а затем получить их, когда они нужны вашей программе. лучше всего, вам не нужно иметь библиотеку, с которой вы связываете во время компиляции, чтобы вы могли заменить ее любым эльфом, у которого эти символы определены без перекомпиляции.

0

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


По вопросам рекламы ammmcru@yandex.ru
Adblock
detector