Частично связанный Vxworks Image Project (VIP) - PullRequest
0 голосов
/ 20 июня 2019

Продукт, над которым я работаю, структурирован как несколько DKM-проектов, на которые ссылается мой VIP-проект.

, однако существует одна реализация функции "Неизвестно", которая будет загружена позже на этапе инициализации.

Для того, чтобы загрузить его:
1. Я объявляю указатель функции (funcPtr).
2. после того, как я вызываю LoadModule() aka.ld ()
3. вызовите symFind(), чтобы получить адрес вновь загруженного символа. 4. присвойте funcPtr адрес.

У меня проблемы с этим решением, поскольку у меня не должно быть символав моей версии сборки.
Он рассматривается как конфиденциальные организационные данные, но без него я не смог бы использовать symFind()

Любой из следующих вопросов может смягчить или решить мою проблему, поэтому я быблагодарен за любой ответ:)

  • При вызове loadModule(myModule.o), есть ли в myModule функция, которая вызывается сразу после загрузки?

  • Могу ли я скомпилировать проект VIP с отсутствующим символом extern , как в linux.что будет перенесено позже, когда я использую ld () для моего модуля?

  • Могу ли я ограничить Таблицу символов для выдачи sym-tbl за исключением нескольких нужных мне символов, Как?

1 Ответ

0 голосов
/ 02 июля 2019

Я столкнулся с той же проблемой некоторое время назад.Я реализовал средство динамического связывания следующим образом (в VxWorks 6.8), предполагая, что существует функция с сигнатурой void* callMeDynamic():

  1. , использующая loadModule() для загрузки необходимых объектных файлов.

  2. Получить адрес (а) функции.

Я не смог найти простой способ выполнить этот шаг.Я нашел работу вокруг следующим:

2.1.Создайте канал и перенаправьте стандартный вывод, как описано в Использование VxWorks Pipe

2.2.Вызовите lkup(callMeDynamic) и сохраните вывод, используя указанный канал.

2.3.Разберите вывод дампа lkup и получите адрес вашей функции входа.

Приведите и присвойте полученный адрес подходящему указателю на функцию Вызовите функцию при необходимости

Надеюсь, это поможет.

...