-fpie를 사용하여 ARM 용으로 컴파일 된 코드 모듈이 있으며 처음 실행될 때 BSS를 지우고 싶습니다. 그러나 BSS 섹션의 시작과 끝 부분에 대한 링커 스크립트 심볼을 참조하면 로컬 변수에 절대 주소가 포함 된 코드가 생성됩니다. Disassembly of section .text:
00180000 <code_entry>:
180000:
kali 리눅스를 업데이트 한 후 gcc를 사용하여 프로그램을 컴파일합니다. 시스템을 업데이트하기 전에 objdump를 사용하여 프로그램을 해체하고 .text 주소는 0x08048 ...이지만 그 뒤에 .text 주소는 0x00000 ...이고 gcc 버전은 6.1.1에서 6.3, 뭐가 잘못 됐어? 왜 이런 일이 생길까요?
내가 http://eli.thegreenplace.net/2011/11/03/position-independent-code-pic-in-shared-libraries/#id1 질문을 읽는 동안은 온 : 어떻게 프로세스의 가상 주소 공간 어딘가에로드 된 후 PIC 공유 라이브러리가 어떻게 외부 변수를 참조하기가 알고 있습니까? #include <stdio.h