내부 기호의 주소를 .got에 기록해야 하는 이유는 무엇입니까?

내부 기호의 주소를 .got에 기록해야 하는 이유는 무엇입니까?

나는 블로그를 읽고 있어요https://eli.thegreenplace.net/2011/11/11/position-independent-code-pic-in-shared-libraries-on-x64

"데이터 참조가 포함된 x64 PIC - 예제" 섹션에서 모듈은 동적 링커에게 절대 주소를 채우라고 지시한 myglob다음 .got코드가 해당 주소를 가져오고 해당 주소에서 데이터를 읽는 것으로 보입니다.

그러나 컴파일러가 왜 이 작업을 수행해야 하는지, 이는 자체 기호이므로 이 기호에 액세스하기 위해 RIP 상대 주소 지정을 사용할 수 없는 이유는 무엇입니까? 때때로 .data모듈이 알 수 없는 오프셋에 로드될 수 있기 때문입니까 .text(항상 측면에 로드되는 대신 .text)?

내 말은, address_of(myglob)-address_of(instruction_that_access_myglob)그것이 어떤 가치라면 왜 우리는 절대 주소를 알아야 합니까 myglob?

관련 정보