.text 시작 및 내 C++ 응용 프로그램의 크기를 알고 싶습니다. 이 (link)에 관한 관련 주제를 읽었지만 원하는 것을 할 수 없습니다. 리눅스 엘프. 텍스트 방향
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 주소에서 내 프로그램 시작의 텍스트 섹션 :
내 샘플 프로그램의 readelf 출력을 분석 난이 있어요.
는하지만 내 프로그램에서이 주소에 대한 액세스를 기울인다 :
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가 텍스트 섹션의 끝이면 ... 어떻게 텍스트 섹션의 시작을 얻을 수 있습니까? –