簡體   English   中英

優化弱符號查找

[英]Optimizing weak symbols lookup

如果您曾經嘗試在任何C ++程序上使用nm實用程序,則可能已經注意到許多符號被標識為“ V”或“ W”。 兩者都是不同類型的符號。

現在,在可執行文件中包含大量的弱符號是不好的,因為在運行時動態鏈接器將嘗試全部解決它們。 我當時認為鏈接可執行文件時通過執行簡單約定可以節省大量時間:

  • 每當在可執行文件中創建一個弱符號時,如果該符號具有默認值,請將其提升為常規符號。

對於我來說,這種破解似乎很安全,因為:

  • 如果任何庫用相同的名稱定義了一個弱符號,它將被提升的符號覆蓋,這很好,因為對於弱符號,我們可以自由選擇任何定義
  • 如果沒有庫實際定義此類符號...則不會發生任何特殊情況
  • 如果庫定義了在可執行文件中未定義的弱符號,則所有內容將照常運行。

在嘗試與binutils開發人員討論此問題之前,我是否會遺漏一個巨大的錯誤?

我看不到任何會阻止您描述的內容的內容。

但是,我確實想知道這是否值得做。 而且我很確定這也是您的“ binutils開發人員”所想知道的。

因此,我建議您看一些事情:在典型情況下,在可執行文件和動態庫中定義相同符號的頻率是多少?

由於很可能仍然會留下大量未在可執行文件中定義的弱符號,因此您實際上節省了多少時間?

現有程序的一些改進示例,或者至少是“對於應用程序X,平均花費這么多時間平均查找一個弱符號,這是潛在的收益嗎?”的答案。

作為binutils開發人員,這就是我想要的[我不是其中之一,但如果我是,那么]。

暫無
暫無

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

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