sprof "PLTREL не найдена ошибка" - PullRequest
2 голосов
/ 06 августа 2009

Я пытаюсь профилировать нашу общую библиотеку, но всякий раз, когда у меня установлена ​​переменная окружения LD_PROFILE, я получаю «PLTREL не найден в объекте». Что дает? Я пропускаю какой-нибудь флаг компоновщика или как? Похоже, в интернете нет информации об этом. Страница man для sprof составляет около 10 слов.

Ответы [ 2 ]

2 голосов
/ 06 августа 2009

Согласно неотвеченному вопросу в группах Google , похоже, вы не первый человек, столкнувшийся с этой проблемой.

Я думаю, что pltrel означает plt-rel ative; в некоторых заметках о дизайне ELF ,

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

И здесь еще немного:

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

Звучит так, будто есть проблема с компиляцией или сборкой разделяемой библиотеки. Надеемся, что еще несколько запросов к эльфийской PLT-секции приведут вас на правильный путь.

0 голосов
/ 09 января 2014

Найдено это , что может быть актуально для вас:

Известные проблемы с LD_AUDIT

➢ LD_AUDIT не работает с общими библиотеками без кода в них.

➢ Пример ICU-4.0 «libicudata.so»

➢ Ошибка: «PLTREL не найден в объекте /usr/lib/libicudata.so.40tivation

➢ Перекомпилировать после исправления libicudata с помощью sed'ing -nostdlib и т.д. "s / -nodefaultlibs -nostdlib //" config / mh-linux

Кажется, то же самое относится и к LD_PROFILE

...