gpt4 book ai didi

c - .data + .bss的ELF二次加载段地址

转载 作者:太空宇宙 更新时间:2023-11-04 08:42:43 25 4
gpt4 key购买 nike

ELF output of readelf

在这种情况下,正确的地址是:

.data0x08048054 开始到 0x08048054+0x0000e

.bss0x08048054+0x0000e 开始到 0x0804805+0x00016

还是我遗漏了什么?请为我澄清一下。

编辑

我使用此命令获取图像中的信息:

readelf -l filename

最佳答案

好的,那我从哪里开始呢...是的,.data.bss 都在内存中的那个区域。问题是无法确定它们的顺序。

我们可以假定遵循默认顺序并进行有根据的猜测,但我不喜欢这样。

在问题下的冗长评论线程中,您提到了一些有趣的事情,这在您的问题中并不明显。

the executable isn't dynamically linked as file command says: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), statically linked, stripped in this case, there's no a linker script, isn't? – The Mask

在这种情况下,库包含带有所有符号偏移量的符号表。该表包括部分信息。当您编译您的应用程序时,它将由链接器处理。那时,您的链接描述文件控制着 .data.bss 部分的输出顺序。

如果它是默认的链接描述文件,请查找它。如果它是自定义的,您应该可以访问它并且可以阅读它。如果不确定在这里详细说明,我们会尽力提供帮助:)

我自己问过a question 这是不相关的,但提供了一个链接描述文件的示例代码和一些 C 代码。在该链接描述文件中,.bss 段位于 .data 段之后。

关于c - .data + .bss的ELF二次加载段地址,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22947792/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com