Skip to content

Commit 2847f2d

Browse files
ivlzmeandrew
andauthored
elf.reloc: add some missing PowerPC 32-bit relocation type constants (#495)
* Add missing 32-bit PowerPC relocation type constants * Also consoldiated a few PPC and PPC64 constants which overlap * Clarify a couple of PPC comments --------- Co-authored-by: andrew <[email protected]>
1 parent 41c4d92 commit 2847f2d

File tree

1 file changed

+54
-9
lines changed

1 file changed

+54
-9
lines changed

src/elf/constants_relocation.rs

Lines changed: 54 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -906,8 +906,9 @@ pub const R_RISCV_SET16: u32 = 55;
906906
pub const R_RISCV_SET32: u32 = 56;
907907

908908
/////////////////////
909-
// PowerPC
910-
// See: https://www.nxp.com/docs/en/reference-manual/E500ABIUG.pdf
909+
// PowerPC 32-bit
910+
// See: https://example61560.wordpress.com/wp-content/uploads/2016/11/powerpc_abi.pdf
911+
// and https://www.nxp.com/docs/en/reference-manual/E500ABIUG.pdf
911912
/////////////////////
912913
pub const R_PPC_NONE: u32 = 0;
913914
pub const R_PPC_ADDR32: u32 = 1;
@@ -986,6 +987,28 @@ pub const R_PPC_EMB_SPE_HALF_SDA0REL: u32 = 212;
986987
pub const R_PPC_EMB_SPE_DOUBLE_SDA: u32 = 213;
987988
pub const R_PPC_EMB_SPE_WORD_SDA: u32 = 214;
988989
pub const R_PPC_EMB_SPE_HALF_SDA: u32 = 215;
990+
pub const R_PPC_VLE_REL8: u32 = 216;
991+
pub const R_PPC_VLE_REL15: u32 = 217;
992+
pub const R_PPC_VLE_REL24: u32 = 218;
993+
pub const R_PPC_VLE_LO16A: u32 = 219;
994+
pub const R_PPC_VLE_LO16D: u32 = 220;
995+
pub const R_PPC_VLE_HI16A: u32 = 221;
996+
pub const R_PPC_VLE_HI16D: u32 = 222;
997+
pub const R_PPC_VLE_HA16A: u32 = 223;
998+
pub const R_PPC_VLE_HA16D: u32 = 224;
999+
pub const R_PPC_VLE_SDA21: u32 = 225;
1000+
pub const R_PPC_VLE_SDA21_LO: u32 = 226;
1001+
pub const R_PPC_VLE_SDAREL_LO16A: u32 = 227;
1002+
pub const R_PPC_VLE_SDAREL_LO16D: u32 = 228;
1003+
pub const R_PPC_VLE_SDAREL_HI16A: u32= 229;
1004+
pub const R_PPC_VLE_SDAREL_HI16D: u32 = 230;
1005+
pub const R_PPC_VLE_SDAREL_HA16A: u32 = 231;
1006+
pub const R_PPC_VLE_SDAREL_HA16D: u32 = 232;
1007+
pub const R_PPC_VLE_ADDR20: u32 = 233;
1008+
pub const R_PPC_REL16: u32 = 249;
1009+
pub const R_PPC_REL16_LO: u32 = 250;
1010+
pub const R_PPC_REL16_HI: u32 = 251;
1011+
pub const R_PPC_REL16_HA: u32 = 252;
9891012

9901013
/////////////////////
9911014
// PowerPC64
@@ -1035,7 +1058,7 @@ pub const R_PPC64_SECTOFF_LO: u32 = R_PPC_SECTOFF_LO;
10351058
pub const R_PPC64_SECTOFF_HI: u32 = R_PPC_SECTOFF_HI;
10361059
pub const R_PPC64_SECTOFF_HA: u32 = R_PPC_SECTOFF_HA;
10371060
/// word30 (S + A - P) >> 2.
1038-
pub const R_PPC64_ADDR30: u32 = 37;
1061+
pub const R_PPC64_ADDR30: u32 = R_PPC_ADDR30;
10391062
/// doubleword64 S + A.
10401063
pub const R_PPC64_ADDR64: u32 = 38;
10411064
/// half16 #higher(S + A).
@@ -1189,10 +1212,10 @@ pub const R_PPC64_ENTRY: u32 = 118;
11891212
pub const R_PPC64_PCREL34: u32 = 132;
11901213
pub const R_PPC64_GOT_PCREL34: u32 = 133;
11911214
pub const R_PPC64_IRELATIVE: u32 = 248;
1192-
pub const R_PPC64_REL16: u32 = 249;
1193-
pub const R_PPC64_REL16_LO: u32 = 250;
1194-
pub const R_PPC64_REL16_HI: u32 = 251;
1195-
pub const R_PPC64_REL16_HA: u32 = 252;
1215+
pub const R_PPC64_REL16: u32 = R_PPC_REL16;
1216+
pub const R_PPC64_REL16_LO: u32 = R_PPC_REL16_LO;
1217+
pub const R_PPC64_REL16_HI: u32 = R_PPC_REL16_HI;
1218+
pub const R_PPC64_REL16_HA: u32 = R_PPC_REL16_HA;
11961219
pub const R_PPC64_GNU_VTINHERIT: u32 = 253;
11971220
pub const R_PPC64_GNU_VTENTRY: u32 = 254;
11981221

@@ -1824,7 +1847,7 @@ pub fn r_to_str(typ: u32, machine: u16) -> &'static str {
18241847
R_RISCV_SET32 => "R_RISCV_SET32",
18251848
_ => "R_UNKNOWN_RISCV",
18261849
},
1827-
// Power-PC
1850+
// Power-PC 32-bit
18281851
EM_PPC => match typ {
18291852
R_PPC_NONE => "R_PPC_NONE",
18301853
R_PPC_ADDR32 => "R_PPC_ADDR32",
@@ -1903,9 +1926,31 @@ pub fn r_to_str(typ: u32, machine: u16) -> &'static str {
19031926
R_PPC_EMB_SPE_DOUBLE_SDA => "R_PPC_EMB_SPE_DOUBLE_SDA",
19041927
R_PPC_EMB_SPE_WORD_SDA => "R_PPC_EMB_SPE_WORD_SDA",
19051928
R_PPC_EMB_SPE_HALF_SDA => "R_PPC_EMB_SPE_HALF_SDA",
1929+
R_PPC_VLE_REL8 => "R_PPC_VLE_REL8",
1930+
R_PPC_VLE_REL15 => "R_PPC_VLE_REL15",
1931+
R_PPC_VLE_REL24 => "R_PPC_VLE_REL24",
1932+
R_PPC_VLE_LO16A => "R_PPC_VLE_LO16A",
1933+
R_PPC_VLE_LO16D => "R_PPC_VLE_LO16D",
1934+
R_PPC_VLE_HI16A => "R_PPC_VLE_HI16A",
1935+
R_PPC_VLE_HI16D => "R_PPC_VLE_HI16D",
1936+
R_PPC_VLE_HA16A => "R_PPC_VLE_HA16A",
1937+
R_PPC_VLE_HA16D => "R_PPC_VLE_HA16D",
1938+
R_PPC_VLE_SDA21 => "R_PPC_VLE_SDA21",
1939+
R_PPC_VLE_SDA21_LO => "R_PPC_VLE_SDA21_LO",
1940+
R_PPC_VLE_SDAREL_LO16A => "R_PPC_VLE_SDAREL_LO16A",
1941+
R_PPC_VLE_SDAREL_LO16D => "R_PPC_VLE_SDAREL_LO16D",
1942+
R_PPC_VLE_SDAREL_HI16A => "R_PPC_VLE_SDAREL_HI16A",
1943+
R_PPC_VLE_SDAREL_HI16D => "R_PPC_VLE_SDAREL_HI16D",
1944+
R_PPC_VLE_SDAREL_HA16A => "R_PPC_VLE_SDAREL_HA16A",
1945+
R_PPC_VLE_SDAREL_HA16D => "R_PPC_VLE_SDAREL_HA16D",
1946+
R_PPC_VLE_ADDR20 => "R_PPC_VLE_ADDR20",
1947+
R_PPC_REL16 => "R_PPC_REL16",
1948+
R_PPC_REL16_LO => "R_PPC_REL16_LO",
1949+
R_PPC_REL16_HI => "R_PPC_REL16_HI",
1950+
R_PPC_REL16_HA => "R_PPC_REL16_HA",
19061951
_ => "R_UNKNOWN_PPC",
19071952
},
1908-
// Power-PC
1953+
// Power-PC 64-bit
19091954
EM_PPC64 => match typ {
19101955
R_PPC64_NONE => "R_PPC64_NONE",
19111956
R_PPC64_ADDR32 => "R_PPC64_ADDR32",

0 commit comments

Comments
 (0)