#[cfg(test)]
mod test;
#[derive(Eq, PartialEq, Debug, Clone, Copy)]
#[allow(non_camel_case_types)]
#[repr(u32)]
pub enum RelocationTypes {
R_ARM_NONE,
R_AARCH64_NONE,
R_AARCH64_ABS64,
R_AARCH64_ABS32,
R_AARCH64_ABS16,
R_AARCH64_PREL64,
R_AARCH64_PREL32,
R_AARCH64_PREL16,
R_AARCH64_MOVW_UABS_G0,
R_AARCH64_MOVW_UABS_G0_NC,
R_AARCH64_MOVW_UABS_G1,
R_AARCH64_MOVW_UABS_G1_NC,
R_AARCH64_MOVW_UABS_G2,
R_AARCH64_MOVW_UABS_G2_NC,
R_AARCH64_MOVW_UABS_G3,
R_AARCH64_MOVW_SABS_G0,
R_AARCH64_MOVW_SABS_G1,
R_AARCH64_MOVW_SABS_G2,
R_AARCH64_LD_PREL_LO19,
R_AARCH64_ADR_PREL_LO21,
R_AARCH64_ADR_PREL_PG_HI21,
R_AARCH64_ADR_PREL_PG_HI21_NC,
R_AARCH64_ADD_ABS_LO12_NC,
R_AARCH64_LDST8_ABS_LO12_NC,
R_AARCH64_TSTBR14,
R_AARCH64_CONDBR19,
R_AARCH64_JUMP26,
R_AARCH64_CALL26,
R_AARCH64_LDST16_ABS_LO12_NC,
R_AARCH64_LDST32_ABS_LO12_NC,
R_AARCH64_LDST64_ABS_LO12_NC,
R_AARCH64_LDST128_ABS_LO12_NC,
R_AARCH64_MOVW_PREL_G0,
R_AARCH64_MOVW_PREL_G0_NC,
R_AARCH64_MOVW_PREL_G1,
R_AARCH64_MOVW_PREL_G1_NC,
R_AARCH64_MOVW_PREL_G2,
R_AARCH64_MOVW_PREL_G2_NC,
R_AARCH64_MOVW_PREL_G3,
R_AARCH64_MOVW_GOTOFF_G0,
R_AARCH64_MOVW_GOTOFF_G0_NC,
R_AARCH64_MOVW_GOTOFF_G1,
R_AARCH64_MOVW_GOTOFF_G1_NC,
R_AARCH64_MOVW_GOTOFF_G2,
R_AARCH64_MOVW_GOTOFF_G2_NC,
R_AARCH64_MOVW_GOTOFF_G3,
R_AARCH64_GOTREL64,
R_AARCH64_GOTREL32,
R_AARCH64_GOT_LD_PREL19,
R_AARCH64_LD64_GOTOFF_LO15,
R_AARCH64_ADR_GOT_PAGE,
R_AARCH64_LD64_GOT_LO12_NC,
R_AARCH64_LD64_GOTPAGE_LO15,
R_AARCH64_TLSGD_ADR_PREL21,
R_AARCH64_TLSGD_ADR_PAGE21,
R_AARCH64_TLSGD_ADD_LO12_NC,
R_AARCH64_TLSGD_MOVW_G1,
R_AARCH64_TLSGD_MOVW_G0_NC,
R_AARCH64_TLSLD_ADR_PREL21,
R_AARCH64_TLSLD_ADR_PAGE21,
R_AARCH64_TLSLD_ADD_LO12_NC,
R_AARCH64_TLSLD_MOVW_G1,
R_AARCH64_TLSLD_MOVW_G0_NC,
R_AARCH64_TLSLD_LD_PREL19,
R_AARCH64_TLSLD_MOVW_DTPREL_G2,
R_AARCH64_TLSLD_MOVW_DTPREL_G1,
R_AARCH64_TLSLD_MOVW_DTPREL_G1_NC,
R_AARCH64_TLSLD_MOVW_DTPREL_G0,
R_AARCH64_TLSLD_MOVW_DTPREL_G0_NC,
R_AARCH64_TLSLD_ADD_DTPREL_HI12,
R_AARCH64_TLSLD_ADD_DTPREL_LO12,
R_AARCH64_TLSLD_ADD_DTPREL_LO12_NC,
R_AARCH64_TLSLD_LDST8_DTPREL_LO12,
R_AARCH64_TLSLD_LDST8_DTPREL_LO12_NC,
R_AARCH64_TLSLD_LDST16_DTPREL_LO12,
R_AARCH64_TLSLD_LDST16_DTPREL_LO12_NC,
R_AARCH64_TLSLD_LDST32_DTPREL_LO12,
R_AARCH64_TLSLD_LDST32_DTPREL_LO12_NC,
R_AARCH64_TLSLD_LDST64_DTPREL_LO12,
R_AARCH64_TLSLD_LDST64_DTPREL_LO12_NC,
R_AARCH64_TLSLD_LDST128_DTPREL_LO12,
R_AARCH64_TLSLD_LDST128_DTPREL_LO12_NC,
R_AARCH64_TLSIE_MOVW_GOTTPREL_G1,
R_AARCH64_TLSIE_MOVW_GOTTPREL_G0_NC,
R_AARCH64_TLSIE_ADR_GOTTPREL_PAGE21,
R_AARCH64_TLSIE_LD64_GOTTPREL_LO12_NC,
R_AARCH64_TLSIE_LD_GOTTPREL_PREL19,
R_AARCH64_TLSLE_MOVW_TPREL_G2,
R_AARCH64_TLSLE_MOVW_TPREL_G1,
R_AARCH64_TLSLE_MOVW_TPREL_G1_NC,
R_AARCH64_TLSLE_MOVW_TPREL_G0,
R_AARCH64_TLSLE_MOVW_TPREL_G0_NC,
R_AARCH64_TLSLE_ADD_TPREL_HI12,
R_AARCH64_TLSLE_ADD_TPREL_LO12,
R_AARCH64_TLSLE_ADD_TPREL_LO12_NC,
R_AARCH64_TLSLE_LDST8_TPREL_LO12,
R_AARCH64_TLSLE_LDST8_TPREL_LO12_NC,
R_AARCH64_TLSLE_LDST16_TPREL_LO12,
R_AARCH64_TLSLE_LDST16_TPREL_LO12_NC,
R_AARCH64_TLSLE_LDST32_TPREL_LO12,
R_AARCH64_TLSLE_LDST32_TPREL_LO12_NC,
R_AARCH64_TLSLE_LDST64_TPREL_LO12,
R_AARCH64_TLSLE_LDST64_TPREL_LO12_NC,
R_AARCH64_TLSLE_LDST128_TPREL_LO12,
R_AARCH64_TLSLE_LDST128_TPREL_LO12_NC,
R_AARCH64_TLSDESC_LD_PREL19,
R_AARCH64_TLSDESC_ADR_PREL21,
R_AARCH64_TLSDESC_ADR_PAGE21,
R_AARCH64_TLSDESC_LD64_LO12,
R_AARCH64_TLSDESC_ADD_LO12,
R_AARCH64_TLSDESC_OFF_G1,
R_AARCH64_TLSDESC_OFF_G0_NC,
R_AARCH64_TLSDESC_LDR,
R_AARCH64_TLSDESC_ADD,
R_AARCH64_TLSDESC_CALL,
R_AARCH64_COPY,
R_AARCH64_GLOB_DAT,
R_AARCH64_JUMP_SLOT,
R_AARCH64_RELATIVE,
R_AARCH64_TLS_DTPREL64,
R_AARCH64_TLS_DTPMOD64,
R_AARCH64_TLS_TPREL64,
R_AARCH64_TLSDESC,
R_AARCH64_IRELATIVE,
Unknown(u32),
}
impl RelocationTypes {
pub fn from(typ: u32) -> RelocationTypes {
use RelocationTypes::*;
match typ {
0 => R_ARM_NONE,
256 => R_AARCH64_NONE,
257 => R_AARCH64_ABS64,
258 => R_AARCH64_ABS32,
259 => R_AARCH64_ABS16,
260 => R_AARCH64_PREL64,
261 => R_AARCH64_PREL32,
262 => R_AARCH64_PREL16,
263 => R_AARCH64_MOVW_UABS_G0,
264 => R_AARCH64_MOVW_UABS_G0_NC,
265 => R_AARCH64_MOVW_UABS_G1,
266 => R_AARCH64_MOVW_UABS_G1_NC,
267 => R_AARCH64_MOVW_UABS_G2,
268 => R_AARCH64_MOVW_UABS_G2_NC,
269 => R_AARCH64_MOVW_UABS_G3,
270 => R_AARCH64_MOVW_SABS_G0,
271 => R_AARCH64_MOVW_SABS_G1,
272 => R_AARCH64_MOVW_SABS_G2,
273 => R_AARCH64_LD_PREL_LO19,
274 => R_AARCH64_ADR_PREL_LO21,
275 => R_AARCH64_ADR_PREL_PG_HI21,
276 => R_AARCH64_ADR_PREL_PG_HI21_NC,
277 => R_AARCH64_ADD_ABS_LO12_NC,
278 => R_AARCH64_LDST8_ABS_LO12_NC,
279 => R_AARCH64_TSTBR14,
280 => R_AARCH64_CONDBR19,
282 => R_AARCH64_JUMP26,
283 => R_AARCH64_CALL26,
284 => R_AARCH64_LDST16_ABS_LO12_NC,
285 => R_AARCH64_LDST32_ABS_LO12_NC,
286 => R_AARCH64_LDST64_ABS_LO12_NC,
299 => R_AARCH64_LDST128_ABS_LO12_NC,
287 => R_AARCH64_MOVW_PREL_G0,
288 => R_AARCH64_MOVW_PREL_G0_NC,
289 => R_AARCH64_MOVW_PREL_G1,
290 => R_AARCH64_MOVW_PREL_G1_NC,
291 => R_AARCH64_MOVW_PREL_G2,
292 => R_AARCH64_MOVW_PREL_G2_NC,
293 => R_AARCH64_MOVW_PREL_G3,
300 => R_AARCH64_MOVW_GOTOFF_G0,
301 => R_AARCH64_MOVW_GOTOFF_G0_NC,
302 => R_AARCH64_MOVW_GOTOFF_G1,
303 => R_AARCH64_MOVW_GOTOFF_G1_NC,
304 => R_AARCH64_MOVW_GOTOFF_G2,
305 => R_AARCH64_MOVW_GOTOFF_G2_NC,
306 => R_AARCH64_MOVW_GOTOFF_G3,
307 => R_AARCH64_GOTREL64,
308 => R_AARCH64_GOTREL32,
309 => R_AARCH64_GOT_LD_PREL19,
310 => R_AARCH64_LD64_GOTOFF_LO15,
311 => R_AARCH64_ADR_GOT_PAGE,
312 => R_AARCH64_LD64_GOT_LO12_NC,
313 => R_AARCH64_LD64_GOTPAGE_LO15,
512 => R_AARCH64_TLSGD_ADR_PREL21,
513 => R_AARCH64_TLSGD_ADR_PAGE21,
514 => R_AARCH64_TLSGD_ADD_LO12_NC,
515 => R_AARCH64_TLSGD_MOVW_G1,
516 => R_AARCH64_TLSGD_MOVW_G0_NC,
517 => R_AARCH64_TLSLD_ADR_PREL21,
518 => R_AARCH64_TLSLD_ADR_PAGE21,
519 => R_AARCH64_TLSLD_ADD_LO12_NC,
520 => R_AARCH64_TLSLD_MOVW_G1,
521 => R_AARCH64_TLSLD_MOVW_G0_NC,
522 => R_AARCH64_TLSLD_LD_PREL19,
523 => R_AARCH64_TLSLD_MOVW_DTPREL_G2,
524 => R_AARCH64_TLSLD_MOVW_DTPREL_G1,
525 => R_AARCH64_TLSLD_MOVW_DTPREL_G1_NC,
526 => R_AARCH64_TLSLD_MOVW_DTPREL_G0,
527 => R_AARCH64_TLSLD_MOVW_DTPREL_G0_NC,
528 => R_AARCH64_TLSLD_ADD_DTPREL_HI12,
529 => R_AARCH64_TLSLD_ADD_DTPREL_LO12,
530 => R_AARCH64_TLSLD_ADD_DTPREL_LO12_NC,
531 => R_AARCH64_TLSLD_LDST8_DTPREL_LO12,
532 => R_AARCH64_TLSLD_LDST8_DTPREL_LO12_NC,
533 => R_AARCH64_TLSLD_LDST16_DTPREL_LO12,
534 => R_AARCH64_TLSLD_LDST16_DTPREL_LO12_NC,
535 => R_AARCH64_TLSLD_LDST32_DTPREL_LO12,
536 => R_AARCH64_TLSLD_LDST32_DTPREL_LO12_NC,
537 => R_AARCH64_TLSLD_LDST64_DTPREL_LO12,
538 => R_AARCH64_TLSLD_LDST64_DTPREL_LO12_NC,
572 => R_AARCH64_TLSLD_LDST128_DTPREL_LO12,
573 => R_AARCH64_TLSLD_LDST128_DTPREL_LO12_NC,
539 => R_AARCH64_TLSIE_MOVW_GOTTPREL_G1,
540 => R_AARCH64_TLSIE_MOVW_GOTTPREL_G0_NC,
541 => R_AARCH64_TLSIE_ADR_GOTTPREL_PAGE21,
542 => R_AARCH64_TLSIE_LD64_GOTTPREL_LO12_NC,
543 => R_AARCH64_TLSIE_LD_GOTTPREL_PREL19,
544 => R_AARCH64_TLSLE_MOVW_TPREL_G2,
545 => R_AARCH64_TLSLE_MOVW_TPREL_G1,
546 => R_AARCH64_TLSLE_MOVW_TPREL_G1_NC,
547 => R_AARCH64_TLSLE_MOVW_TPREL_G0,
548 => R_AARCH64_TLSLE_MOVW_TPREL_G0_NC,
549 => R_AARCH64_TLSLE_ADD_TPREL_HI12,
550 => R_AARCH64_TLSLE_ADD_TPREL_LO12,
551 => R_AARCH64_TLSLE_ADD_TPREL_LO12_NC,
552 => R_AARCH64_TLSLE_LDST8_TPREL_LO12,
553 => R_AARCH64_TLSLE_LDST8_TPREL_LO12_NC,
554 => R_AARCH64_TLSLE_LDST16_TPREL_LO12,
555 => R_AARCH64_TLSLE_LDST16_TPREL_LO12_NC,
556 => R_AARCH64_TLSLE_LDST32_TPREL_LO12,
557 => R_AARCH64_TLSLE_LDST32_TPREL_LO12_NC,
558 => R_AARCH64_TLSLE_LDST64_TPREL_LO12,
559 => R_AARCH64_TLSLE_LDST64_TPREL_LO12_NC,
570 => R_AARCH64_TLSLE_LDST128_TPREL_LO12,
571 => R_AARCH64_TLSLE_LDST128_TPREL_LO12_NC,
560 => R_AARCH64_TLSDESC_LD_PREL19,
561 => R_AARCH64_TLSDESC_ADR_PREL21,
562 => R_AARCH64_TLSDESC_ADR_PAGE21,
563 => R_AARCH64_TLSDESC_LD64_LO12,
564 => R_AARCH64_TLSDESC_ADD_LO12,
565 => R_AARCH64_TLSDESC_OFF_G1,
566 => R_AARCH64_TLSDESC_OFF_G0_NC,
567 => R_AARCH64_TLSDESC_LDR,
568 => R_AARCH64_TLSDESC_ADD,
569 => R_AARCH64_TLSDESC_CALL,
1024 => R_AARCH64_COPY,
1025 => R_AARCH64_GLOB_DAT,
1026 => R_AARCH64_JUMP_SLOT,
1027 => R_AARCH64_RELATIVE,
1028 => R_AARCH64_TLS_DTPREL64,
1029 => R_AARCH64_TLS_DTPMOD64,
1030 => R_AARCH64_TLS_TPREL64,
1031 => R_AARCH64_TLSDESC,
1032 => R_AARCH64_IRELATIVE,
x => Unknown(x),
}
}
}