| ... | @@ -22,7 +22,7 @@ pub fn lookup(vername: []const u8, name: []const u8) usize { | ... | @@ -22,7 +22,7 @@ pub fn lookup(vername: []const u8, name: []const u8) usize { |
| 22 | }) { | 22 | }) { |
| 23 | const this_ph = @intToPtr(*elf.Phdr, ph_addr); | 23 | const this_ph = @intToPtr(*elf.Phdr, ph_addr); |
| 24 | switch (this_ph.p_type) { | 24 | switch (this_ph.p_type) { |
| 25 | elf.PT_LOAD => base = vdso_addr + this_ph.p_offset - this_ph.p_vaddr, | 25 | elf.PT_LOAD => base = vdso_addr +% this_ph.p_offset -% this_ph.p_vaddr, |
| 26 | elf.PT_DYNAMIC => maybe_dynv = @intToPtr([*]usize, vdso_addr + this_ph.p_offset), | 26 | elf.PT_DYNAMIC => maybe_dynv = @intToPtr([*]usize, vdso_addr + this_ph.p_offset), |
| 27 | else => {}, | 27 | else => {}, |
| 28 | } | 28 | } |
| ... | @@ -40,7 +40,7 @@ pub fn lookup(vername: []const u8, name: []const u8) usize { | ... | @@ -40,7 +40,7 @@ pub fn lookup(vername: []const u8, name: []const u8) usize { |
| 40 | { | 40 | { |
| 41 | var i: usize = 0; | 41 | var i: usize = 0; |
| 42 | while (dynv[i] != 0) : (i += 2) { | 42 | while (dynv[i] != 0) : (i += 2) { |
| 43 | const p = base + dynv[i + 1]; | 43 | const p = base +% dynv[i + 1]; |
| 44 | switch (dynv[i]) { | 44 | switch (dynv[i]) { |
| 45 | elf.DT_STRTAB => maybe_strings = @intToPtr([*]u8, p), | 45 | elf.DT_STRTAB => maybe_strings = @intToPtr([*]u8, p), |
| 46 | elf.DT_SYMTAB => maybe_syms = @intToPtr([*]elf.Sym, p), | 46 | elf.DT_SYMTAB => maybe_syms = @intToPtr([*]elf.Sym, p), |
| ... | @@ -71,7 +71,7 @@ pub fn lookup(vername: []const u8, name: []const u8) usize { | ... | @@ -71,7 +71,7 @@ pub fn lookup(vername: []const u8, name: []const u8) usize { |
| 71 | if (!checkver(maybe_verdef.?, versym[i], vername, strings)) | 71 | if (!checkver(maybe_verdef.?, versym[i], vername, strings)) |
| 72 | continue; | 72 | continue; |
| 73 | } | 73 | } |
| 74 | return base + syms[i].st_value; | 74 | return base +% syms[i].st_value; |
| 75 | } | 75 | } |
| 76 | | 76 | |
| 77 | return 0; | 77 | return 0; |