1
我想知道我的C++應用程序的.text開始和大小。我一直在閱讀這方面的相關主題(link),但我無法做到我想要的。Linux精靈.text方向
分析我的示例程序的readelf輸出我得到這個:
Section Headers:
[Nr] Name Type Address Offset
Size EntSize Flags Link Info Align
[14] .text PROGBITS 0000000000400830 00000830
0000000000000252 0000000000000000 AX 0 0 16
所以據我所知,在0x400830地址我的程序啓動的.text段。
,但我不能訪問這個地址從我的程序:
printf("My process ID : %d\n", getpid());
printf("Executable Start address: 0x%lx\n", (unsigned long)&__executable_start);
printf("Text Start Address: 0x%lx\n", (unsigned long)&__etext);
但輸出是:
My process ID : 4029
Executable Start address: 0x400000
Text Start Address: 0x400a8d
正如你可以看到起始地址是不一樣的。我如何訪問.text部分的起始地址。我需要知道大小或最終地址......這可能嗎?
__etext是文本部分的結尾,「e」有點暗示你。 –
C!= C++。只使用您正在使用的語言標記,除非兩者實際相關。 – tambre
,如果__etext是文本部分的結尾......我如何獲得文本部分的開始? –