@@ -27,17 +27,27 @@ pub type Elf32_Half = u16;
27
27
pub type Elf32_Word = u32 ;
28
28
pub type Elf32_Off = u32 ;
29
29
pub type Elf32_Addr = u32 ;
30
+ pub type Elf32_Xword = u64 ;
31
+ pub type Elf32_Sword = i32 ;
30
32
31
33
pub type Elf64_Half = u16 ;
32
34
pub type Elf64_Word = u32 ;
33
35
pub type Elf64_Off = u64 ;
34
36
pub type Elf64_Addr = u64 ;
35
37
pub type Elf64_Xword = u64 ;
36
38
pub type Elf64_Sxword = i64 ;
39
+ pub type Elf64_Sword = i32 ;
37
40
38
41
pub type Elf32_Section = u16 ;
39
42
pub type Elf64_Section = u16 ;
40
43
44
+ pub type Elf32_Relr = Elf32_Word ;
45
+ pub type Elf64_Relr = Elf32_Xword ;
46
+ pub type Elf32_Rel = __c_anonymous_elf32_rel ;
47
+ pub type Elf64_Rel = __c_anonymous_elf64_rel ;
48
+ pub type Elf32_Rela = __c_anonymous_elf32_rela ;
49
+ pub type Elf64_Rela = __c_anonymous_elf64_rela ;
50
+
41
51
// linux/can.h
42
52
pub type canid_t = u32 ;
43
53
@@ -564,6 +574,28 @@ s! {
564
574
pub sh_entsize: Elf64_Xword ,
565
575
}
566
576
577
+ pub struct __c_anonymous_elf32_rel {
578
+ pub r_offset: Elf32_Addr ,
579
+ pub r_info: Elf32_Word ,
580
+ }
581
+
582
+ pub struct __c_anonymous_elf64_rel {
583
+ pub r_offset: Elf64_Addr ,
584
+ pub r_info: Elf64_Xword ,
585
+ }
586
+
587
+ pub struct __c_anonymous_elf32_rela {
588
+ pub r_offset: Elf32_Addr ,
589
+ pub r_info: Elf32_Word ,
590
+ pub r_addend: Elf32_Sword ,
591
+ }
592
+
593
+ pub struct __c_anonymous_elf64_rela {
594
+ pub r_offset: Elf64_Addr ,
595
+ pub r_info: Elf64_Xword ,
596
+ pub r_addend: Elf64_Sxword ,
597
+ }
598
+
567
599
pub struct ucred {
568
600
pub pid: :: pid_t,
569
601
pub uid: :: uid_t,
@@ -5214,6 +5246,30 @@ f! {
5214
5246
pub fn BPF_JUMP ( code: :: __u16, k: :: __u32, jt: :: __u8, jf: :: __u8) -> sock_filter {
5215
5247
sock_filter{ code: code, jt: jt, jf: jf, k: k}
5216
5248
}
5249
+
5250
+ pub fn ELF32_R_SYM ( val: Elf32_Word ) -> Elf32_Word {
5251
+ val >> 8
5252
+ }
5253
+
5254
+ pub fn ELF32_R_TYPE ( val: Elf32_Word ) -> Elf32_Word {
5255
+ val & 0xff
5256
+ }
5257
+
5258
+ pub fn ELF32_R_INFO ( sym: Elf32_Word , t: Elf32_Word ) -> Elf32_Word {
5259
+ sym << 8 + t & 0xff
5260
+ }
5261
+
5262
+ pub fn ELF64_R_SYM ( val: Elf64_Xword ) -> Elf64_Xword {
5263
+ val >> 32
5264
+ }
5265
+
5266
+ pub fn ELF64_R_TYPE ( val: Elf64_Xword ) -> Elf64_Xword {
5267
+ val & 0xffffffff
5268
+ }
5269
+
5270
+ pub fn ELF64_R_INFO ( sym: Elf64_Xword , t: Elf64_Xword ) -> Elf64_Xword {
5271
+ sym << 32 + t
5272
+ }
5217
5273
}
5218
5274
5219
5275
safe_f ! {
0 commit comments