1. Is there a master list of all GNU ld relocation types?
不,它是基於硬件架構
2. If not, then is there a way to interrogate my specific version of LD to determine what a relocation type means?
均田,你可以找到類型爲您的硬件。 Microblaze是一個軟cpu,但它模仿了PowerPC的架構。在「PowerPC的重定位類型」快速谷歌後,我發現http://math-atlas.sourceforge.net/devel/assembly/elfspec_ppc.pdf(表4-8),我們有以下重定位類型
Table 4-8 Relocation Types
Name Value Field Calculation
R_PPC_NONE 0 none none
R_PPC_ADDR32 1 word32 S + A
R_PPC_ADDR24 2 low24* (S + A) >> 2
R_PPC_ADDR16 3 half16* S + A
R_PPC_ADDR16_LO 4 half16 #lo(S + A)
R_PPC_ADDR16_HI 5 half16 #hi(S + A)
R_PPC_ADDR16_HA 6 half16 #ha(S + A)
R_PPC_ADDR14 7 low14* (S + A) >> 2
R_PPC_ADDR14_BRTAKEN 8 low14* (S + A) >> 2
R_PPC_ADDR14_BRNTAKEN 9 low14* (S + A) >> 2
R_PPC_REL24 10 low24* (S + A - P) >> 2
R_PPC_REL14 11 low14* (S + A - P) >> 2
R_PPC_REL14_BRTAKEN 12 low14* (S + A - P) >> 2
R_PPC_REL14_BRNTAKEN 13 low14* (S + A - P) >> 2
R_PPC_GOT16 14 half16* G + A
R_PPC_GOT16_LO 15 half16 #lo(G + A)
R_PPC_GOT16_HI 16 half16 #hi(G + A)
R_PPC_GOT16_HA 17 half16 #ha(G + A)
R_PPC_PLTREL24 18 low24* (L + A - P) >> 2
R_PPC_COPY 19 none none
R_PPC_GLOB_DAT 20 word32 S + A
R_PPC_JMP_SLOT 21 none see below
R_PPC_RELATIVE 22 word32 B + A
R_PPC_LOCAL24PC 23 low24* see below
R_PPC_UADDR32 24 word32 S + A
R_PPC_UADDR16 25 half16* S + A
R_PPC_REL32 26 word32 S + A - P
R_PPC_PLT32 27 word32 L + A
我的猜測是,這些將成爲的MicroBlaze(可能與R_MB代替R_PPC相同在名字裏)。當然,應該有一個官方文件能夠告訴你到底發生了什麼,我還沒有找到它。
我無法在Xilinx工具,Xilinx網站或某些常規因特網搜索中找到此特定於MicroBlaze或PowerPC的重定位類型30定義。但是,這個答案表明這些信息通常保存在哪裏(在特定於體系結構的補充或一般的頭文件中),並導致我爲這種位置類型提供了一些額外的錯誤報告。 – deaks