Пути к функциям файлов Map

#c

#c

Вопрос:

Есть ли какой-нибудь способ получить абсолютный путь к функциям в файлах карты? Файлы карт поддерживают следующий формат

 0001:000016a0       func                   00000001400026a0 f   lib:func.o
  

Есть ли какой-либо способ получить абсолютный путь к «func»

Ответ №1:

В зависимости от вашей ситуации это может оказаться бесполезным, но некоторые компоновщики не поддерживают наличие нескольких объектных файлов с одинаковым именем в разных каталогах. Поэтому, если вы дадите им some_directory/func.o и some_other_directory/func.o some_other_directory, только один из них будет связан. Я знаю, что CodeWarrior делает это.

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

Некоторые версии Visual Studio помещают все объектные файлы в один каталог, независимо от организации файлов .c и / или .cpp, и автоматически добавляют числовые суффиксы, чтобы избежать конфликтов. Для определения, какой объектный файл к какому файлу переходит .c, требуется прочитать файл проекта.

Комментарии:

1. Я думаю, вы правы. Файл Map получает свои данные из obj-файлов, которые обычно хранятся в некотором общем каталоге. Поэтому я, возможно, не смогу получить абсолютные пути к файлам c-файлов.