簡體   English   中英

如何在全局偏移表中初始化不是函數的全局符號條目?

[英]How are the entries for Global Symbols that are not functions initialized in the Global Offset Table?

所以我正在嘗試了解動態鏈接。 在 amd64 上的 SysV ABI 上,可以通過過程鏈接表延遲加載來自其他共享庫的函數,方法是初始化函數的 GOT 條目以指向其 plt 條目中的下一條指令。 這最終會將控制權傳遞給將加載庫、更新 GOT 條目並跳轉到函數的動態鏈接器。 現在對於其他不是函數的全局符號(沒有 PLT 條目),它們將如何或何時被初始化? 可以懶惰地做嗎?

這最終會將控制權傳遞給將加載庫、更新 GOT 條目並跳轉到函數的動態鏈接器

這只是部分正確:庫通常已經被加載,加載器只解析符號並更新GOT條目以指向符號定義。

現在對於其他不是函數的全局符號(沒有 PLT 條目),它們將如何或何時被初始化?

當引用該符號的庫(或可執行文件)被加載時,加載器在使其可用之前解析其中的所有數據符號。

可以懶惰地做嗎?

不。

另請參閱此答案

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM