sprof“PLTREL 未发现错误”

发布于 2024-07-30 06:42:13 字数 146 浏览 4 评论 0原文

我正在尝试分析我们的共享库,但每当我设置环境变量 LD_PROFILE 时,我都会收到“PLTREL not found in object ”。 是什么赋予了? 我是否缺少某种链接器标志或者什么? 网上似乎没有这方面的信息。 sprof 的手册页大约有 10 个字长。

I'm trying to profile our shared library, but whenever I have the environmental variable LD_PROFILE set, I get "PLTREL not found in object ". What gives? Is there some sort of linker flag I'm missing or what? There seems to be no information about this on the internets. The man page for sprof is about 10 words long.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

謌踐踏愛綪 2024-08-06 06:42:13

根据未答复的内容Google 网上论坛上的问题,您似乎不是第一个遇到此问题的人。

我认为 pltrel 的意思是plt-relative; 在一些 ELF 设计说明中,

在代码段中创建了一个 .plt 部分,它是一个函数存根数组,用于处理库调用的运行时解析。

这里还有更多内容:

我要提到的下一部分是 .plt 部分。 它包含我们调用共享库中的函数时使用的跳转表。 默认情况下,.plt 条目均由链接器初始化,不是指向正确的目标函数,而是指向动态加载器本身。 因此,第一次调用任何给定函数时,动态加载器会查找该函数并修复 .plt 的目标,以便下次使用该 .plt 槽时我们调用正确的函数。 进行此更改后,动态加载器将调用该函数本身。

在我看来,共享库的编译或组装方式存在问题。 希望更多搜索 elf PLT 部分< /a> 让你走上正轨。

According to an unanswered question on Google Groups, it looks like you aren't the very first person with this problem.

I think pltrel means plt-relative; in some ELF design notes,

There is a .plt section created in the code segment, which is an array of function stubs used to handle the run-time resolution of library calls.

And here's yet a little more:

The next section I want to mention is the .plt section. This contains the jump table that is used when we call functions in the shared library. By default the .plt entries are all initialized by the linker not to point to the correct target functions, but instead to point to the dynamic loader itself. Thus, the first time you call any given function, the dynamic loader looks up the function and fixes the target of the .plt so that the next time this .plt slot is used we call the correct function. After making this change, the dynamic loader calls the function itself.

Sounds to me like there's an issue with how the shared library was compiled or assembled. Hopefully a few more searches to elf PLT section gets you on the right track.

最后的乘客 2024-08-06 06:42:13

找到可能与您相关的

LD_AUDIT 的已知问题

Ø LD_AUDIT 不适用于没有代码的共享库。

Ø 示例 ICU-4.0“libicudata.so”

Ø 错误:“在对象 /usr/lib/libicudata.so.40 中未找到 PLTREL”

➢ 通过 sed'ing -nostdlib 等修补 libicudata 后重新编译 sed -i --
“s/-nodefaultlibs -nostdlib//”config/mh-linux

似乎同样适用于 LD_PROFILE

Found this that may be relevante for you:

Known issues with LD_AUDIT

➢ LD_AUDIT does not work with Shared Libraries with no code in them.

➢ Example ICU-4.0 “libicudata.so”

➢ Error: “no PLTREL found in object /usr/lib/libicudata.so.40”

➢ Recompile after patching libicudata by sed'ing -nostdlib etc away sed -i --
"s/-nodefaultlibs -nostdlib//" config/mh-linux

It seems the same applies for LD_PROFILE

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文