Skip to content

Commit

Permalink
elf.reloc: added new constants for 32-bit PowerPC
Browse files Browse the repository at this point in the history
  • Loading branch information
andrew committed Dec 10, 2024
1 parent 48da3d8 commit 1675cb1
Showing 1 changed file with 164 additions and 0 deletions.
164 changes: 164 additions & 0 deletions src/elf/constants_relocation.rs
Original file line number Diff line number Diff line change
Expand Up @@ -905,6 +905,89 @@ pub const R_RISCV_SET16: u32 = 55;
/// Local label subtraction
pub const R_RISCV_SET32: u32 = 56;

/////////////////////
// PowerPC
// See: https://www.nxp.com/docs/en/reference-manual/E500ABIUG.pdf
/////////////////////
pub const R_PPC_NONE: u32 = 0;
pub const R_PPC_ADDR32: u32 = 1;
pub const R_PPC_ADDR24: u32 = 2;
pub const R_PPC_ADDR16: u32 = 3;
pub const R_PPC_ADDR16_LO: u32 = 4;
pub const R_PPC_ADDR16_HI: u32 = 5;
pub const R_PPC_ADDR16_HA: u32 = 6;
pub const R_PPC_ADDR14: u32 = 7;
pub const R_PPC_ADDR14_BRTAKEN: u32 = 8;
pub const R_PPC_ADDR14_BRNTAKEN: u32 = 9;
pub const R_PPC_REL24: u32 = 10;
pub const R_PPC_REL14: u32 = 11;
pub const R_PPC_REL14_BRTAKEN: u32 = 12;
pub const R_PPC_REL14_BRNTAKEN: u32 = 13;
pub const R_PPC_GOT16: u32 = 14;
pub const R_PPC_GOT16_LO: u32 = 15;
pub const R_PPC_GOT16_HI: u32 = 16;
pub const R_PPC_GOT16_HA: u32 = 17;
pub const R_PPC_PLTREL24: u32 = 18;
pub const R_PPC_COPY: u32 = 19;
pub const R_PPC_GLOB_DAT: u32 = 20;
pub const R_PPC_JMP_SLOT: u32 = 21;
pub const R_PPC_RELATIVE: u32 = 22;
pub const R_PPC_LOCAL24PC: u32 = 23;
pub const R_PPC_UADDR32: u32 = 24;
pub const R_PPC_UADDR16: u32 = 25;
pub const R_PPC_REL32: u32 = 26;
pub const R_PPC_PLT32: u32 = 27;
pub const R_PPC_PLTREL32: u32 = 28;
pub const R_PPC_PLT16_LO: u32 = 29;
pub const R_PPC_PLT16_HI: u32 = 30;
pub const R_PPC_PLT16_HA: u32 = 31;
pub const R_PPC_SDAREL16: u32 = 32;
pub const R_PPC_SECTOFF: u32 = 33;
pub const R_PPC_SECTOFF_LO: u32 = 34;
pub const R_PPC_SECTOFF_HI: u32 = 35;
pub const R_PPC_SECTOFF_HA: u32 = 36;
pub const R_PPC_ADDR30: u32 = 37;
pub const R_PPC_EMB_NADDR32: u32 = 101;
pub const R_PPC_EMB_NADDR16: u32 = 102;
pub const R_PPC_EMB_NADDR16_LO: u32 = 103;
pub const R_PPC_EMB_NADDR16_HI: u32 = 104;
pub const R_PPC_EMB_NADDR16_HA: u32 = 105;
pub const R_PPC_EMB_SDA_I16: u32 = 106;
pub const R_PPC_EMB_SDA2_I16: u32 = 107;
pub const R_PPC_EMB_SDA2REL: u32 = 108;
pub const R_PPC_EMB_SDA21: u32 = 109;
pub const R_PPC_EMB_MRKREF: u32 = 110;
pub const R_PPC_EMB_RELSEC16: u32 = 111;
pub const R_PPC_EMB_RELST_LO: u32 = 112;
pub const R_PPC_EMB_RELST_HI: u32 = 113;
pub const R_PPC_EMB_RELST_HA: u32 = 114;
pub const R_PPC_EMB_BIT_FLD: u32 = 115;
pub const R_PPC_EMB_RELSDA: u32 = 116;
pub const R_PPC_EMB_RELOC_120: u32 = 120;
pub const R_PPC_EMB_RELOC_121: u32 = 121;
pub const R_PPC_DIAB_SDA21_LO: u32 = 180;
pub const R_PPC_DIAB_SDA21_HI: u32 = 181;
pub const R_PPC_DIAB_SDA21_HA: u32 = 182;
pub const R_PPC_DIAB_RELSDA_LO: u32 = 183;
pub const R_PPC_DIAB_RELSDA_HI: u32 = 184;
pub const R_PPC_DIAB_RELSDA_HA: u32 = 185;
pub const R_PPC_EMB_SPE_DOUBLE: u32 = 201;
pub const R_PPC_EMB_SPE_WORD: u32 = 202;
pub const R_PPC_EMB_SPE_HALF: u32 = 203;
pub const R_PPC_EMB_SPE_DOUBLE_SDAREL: u32 = 204;
pub const R_PPC_EMB_SPE_WORD_SDAREL: u32 = 205;
pub const R_PPC_EMB_SPE_HALF_SDAREL: u32 = 206;
pub const R_PPC_EMB_SPE_DOUBLE_SDA2REL: u32 = 207;
pub const R_PPC_EMB_SPE_WORD_SDA2REL: u32 = 208;
pub const R_PPC_EMB_SPE_HALF_SDA2REL: u32 = 209;
pub const R_PPC_EMB_SPE_DOUBLE_SDA0REL: u32 = 210;
pub const R_PPC_EMB_SPE_WORD_SDA0REL: u32 = 211;
pub const R_PPC_EMB_SPE_HALF_SDA0REL: u32 = 212;
pub const R_PPC_EMB_SPE_DOUBLE_SDA: u32 = 213;
pub const R_PPC_EMB_SPE_WORD_SDA: u32 = 214;
pub const R_PPC_EMB_SPE_HALF_SDA: u32 = 215;


#[inline]
pub fn r_to_str(typ: u32, machine: u16) -> &'static str {
use crate::elf::header::*;
Expand Down Expand Up @@ -1412,6 +1495,87 @@ pub fn r_to_str(typ: u32, machine: u16) -> &'static str {
R_RISCV_SET32 => "R_RISCV_SET32",
_ => "R_UNKNOWN_RISCV",
}},
// Power-PC
EM_PPC => { match typ {
R_PPC_NONE => "R_PPC_NONE",
R_PPC_ADDR32 => "R_PPC_ADDR32",
R_PPC_ADDR24 => "R_PPC_ADDR24",
R_PPC_ADDR16 => "R_PPC_ADDR16",
R_PPC_ADDR16_LO => "R_PPC_ADDR16_LO",
R_PPC_ADDR16_HI => "R_PPC_ADDR16_HI",
R_PPC_ADDR16_HA => "R_PPC_ADDR16_HA",
R_PPC_ADDR14 => "R_PPC_ADDR14",
R_PPC_ADDR14_BRTAKEN => "R_PPC_ADDR14_BRTAKEN",
R_PPC_ADDR14_BRNTAKEN => "R_PPC_ADDR14_BRNTAKEN",
R_PPC_REL24 => "R_PPC_REL24",
R_PPC_REL14 => "R_PPC_REL14",
R_PPC_REL14_BRTAKEN => "R_PPC_REL14_BRTAKEN",
R_PPC_REL14_BRNTAKEN => "R_PPC_REL14_BRNTAKEN",
R_PPC_GOT16 => "R_PPC_GOT16",
R_PPC_GOT16_LO => "R_PPC_GOT16_LO",
R_PPC_GOT16_HI => "R_PPC_GOT16_HI",
R_PPC_GOT16_HA => "R_PPC_GOT16_HA",
R_PPC_PLTREL24 => "R_PPC_PLTREL24",
R_PPC_COPY => "R_PPC_COPY",
R_PPC_GLOB_DAT => "R_PPC_GLOB_DAT",
R_PPC_JMP_SLOT => "R_PPC_JMP_SLOT",
R_PPC_RELATIVE => "R_PPC_RELATIVE",
R_PPC_LOCAL24PC => "R_PPC_LOCAL24PC",
R_PPC_UADDR32 => "R_PPC_UADDR32",
R_PPC_UADDR16 => "R_PPC_UADDR16",
R_PPC_REL32 => "R_PPC_REL32",
R_PPC_PLT32 => "R_PPC_PLT32",
R_PPC_PLTREL32 => "R_PPC_PLTREL32",
R_PPC_PLT16_LO => "R_PPC_PLT16_LO",
R_PPC_PLT16_HI => "R_PPC_PLT16_HI",
R_PPC_PLT16_HA => "R_PPC_PLT16_HA",
R_PPC_SDAREL16 => "R_PPC_SDAREL16",
R_PPC_SECTOFF => "R_PPC_SECTOFF",
R_PPC_SECTOFF_LO => "R_PPC_SECTOFF_LO",
R_PPC_SECTOFF_HI => "R_PPC_SECTOFF_HI",
R_PPC_SECTOFF_HA => "R_PPC_SECTOFF_HA",
R_PPC_ADDR30 => "R_PPC_ADDR30",
R_PPC_EMB_NADDR32 => "R_PPC_EMB_NADDR32",
R_PPC_EMB_NADDR16 => "R_PPC_EMB_NADDR16",
R_PPC_EMB_NADDR16_LO => "R_PPC_EMB_NADDR16_LO",
R_PPC_EMB_NADDR16_HI => "R_PPC_EMB_NADDR16_HI",
R_PPC_EMB_NADDR16_HA => "R_PPC_EMB_NADDR16_HA",
R_PPC_EMB_SDA_I16 => "R_PPC_EMB_SDA_I16",
R_PPC_EMB_SDA2_I16 => "R_PPC_EMB_SDA2_I16",
R_PPC_EMB_SDA2REL => "R_PPC_EMB_SDA2REL",
R_PPC_EMB_SDA21 => "R_PPC_EMB_SDA21",
R_PPC_EMB_MRKREF => "R_PPC_EMB_MRKREF",
R_PPC_EMB_RELSEC16 => "R_PPC_EMB_RELSEC16",
R_PPC_EMB_RELST_LO => "R_PPC_EMB_RELST_LO",
R_PPC_EMB_RELST_HI => "R_PPC_EMB_RELST_HI",
R_PPC_EMB_RELST_HA => "R_PPC_EMB_RELST_HA",
R_PPC_EMB_BIT_FLD => "R_PPC_EMB_BIT_FLD",
R_PPC_EMB_RELSDA => "R_PPC_EMB_RELSDA",
R_PPC_EMB_RELOC_120 => "R_PPC_EMB_RELOC_120",
R_PPC_EMB_RELOC_121 => "R_PPC_EMB_RELOC_121",
R_PPC_DIAB_SDA21_LO => "R_PPC_DIAB_SDA21_LO",
R_PPC_DIAB_SDA21_HI => "R_PPC_DIAB_SDA21_HI",
R_PPC_DIAB_SDA21_HA => "R_PPC_DIAB_SDA21_HA",
R_PPC_DIAB_RELSDA_LO => "R_PPC_DIAB_RELSDA_LO",
R_PPC_DIAB_RELSDA_HI => "R_PPC_DIAB_RELSDA_HI",
R_PPC_DIAB_RELSDA_HA => "R_PPC_DIAB_RELSDA_HA",
R_PPC_EMB_SPE_DOUBLE => "R_PPC_EMB_SPE_DOUBLE",
R_PPC_EMB_SPE_WORD => "R_PPC_EMB_SPE_WORD",
R_PPC_EMB_SPE_HALF => "R_PPC_EMB_SPE_HALF",
R_PPC_EMB_SPE_DOUBLE_SDAREL => "R_PPC_EMB_SPE_DOUBLE_SDAREL",
R_PPC_EMB_SPE_WORD_SDAREL => "R_PPC_EMB_SPE_WORD_SDAREL",
R_PPC_EMB_SPE_HALF_SDAREL => "R_PPC_EMB_SPE_HALF_SDAREL",
R_PPC_EMB_SPE_DOUBLE_SDA2REL => "R_PPC_EMB_SPE_DOUBLE_SDA2REL",
R_PPC_EMB_SPE_WORD_SDA2REL => "R_PPC_EMB_SPE_WORD_SDA2REL",
R_PPC_EMB_SPE_HALF_SDA2REL => "R_PPC_EMB_SPE_HALF_SDA2REL",
R_PPC_EMB_SPE_DOUBLE_SDA0REL => "R_PPC_EMB_SPE_DOUBLE_SDA0REL",
R_PPC_EMB_SPE_WORD_SDA0REL => "R_PPC_EMB_SPE_WORD_SDA0REL",
R_PPC_EMB_SPE_HALF_SDA0REL => "R_PPC_EMB_SPE_HALF_SDA0REL",
R_PPC_EMB_SPE_DOUBLE_SDA => "R_PPC_EMB_SPE_DOUBLE_SDA",
R_PPC_EMB_SPE_WORD_SDA => "R_PPC_EMB_SPE_WORD_SDA",
R_PPC_EMB_SPE_HALF_SDA => "R_PPC_EMB_SPE_HALF_SDA",
_ => "R_UNKNOWN_PPC",
}},
_ => "R_UNKNOWN",
}
}

0 comments on commit 1675cb1

Please sign in to comment.