authorgravatar for thatlemon@gmail.comLemonBoy <thatlemon@gmail.com> 2019-04-11 15:41:42+02:00
committergravatar for thatlemon@gmail.comLemonBoy <thatlemon@gmail.com> 2019-04-11 15:41:42+02:00
log51eb4ebec1435dc0050bd1d40c48416019972e65
tree906033f6a954fd2d54c217d30bed60ee712fe9bb
parent38492b2ea4b7aac9685ede264701ac0b7bb291c0

Distinguish between absolute/relative addresses


1 files changed, 3 insertions(+), 2 deletions(-)

std/debug.zig+3-2
...@@ -1243,6 +1243,7 @@ const FormValue = union(enum) {...@@ -1243,6 +1243,7 @@ const FormValue = union(enum) {
1243 ExprLoc: []u8,1243 ExprLoc: []u8,
1244 Flag: bool,1244 Flag: bool,
1245 SecOffset: u64,1245 SecOffset: u64,
1246 Ref: u64,
1246 RefAddr: u64,1247 RefAddr: u64,
1247 String: []u8,1248 String: []u8,
1248 StrPtr: u64,1249 StrPtr: u64,
...@@ -1465,7 +1466,7 @@ fn parseFormValueTargetAddrSize(in_stream: var) !u64 {...@@ -1465,7 +1466,7 @@ fn parseFormValueTargetAddrSize(in_stream: var) !u64 {
14651466
1466fn parseFormValueRef(allocator: *mem.Allocator, in_stream: var, size: i32) !FormValue {1467fn parseFormValueRef(allocator: *mem.Allocator, in_stream: var, size: i32) !FormValue {
1467 return FormValue{1468 return FormValue{
1468 .RefAddr = switch (size) {1469 .Ref = switch (size) {
1469 1 => try in_stream.readIntLittle(u8),1470 1 => try in_stream.readIntLittle(u8),
1470 2 => try in_stream.readIntLittle(u16),1471 2 => try in_stream.readIntLittle(u16),
1471 4 => try in_stream.readIntLittle(u32),1472 4 => try in_stream.readIntLittle(u32),
...@@ -1510,7 +1511,7 @@ fn parseFormValue(allocator: *mem.Allocator, in_stream: var, form_id: u64, is_64...@@ -1510,7 +1511,7 @@ fn parseFormValue(allocator: *mem.Allocator, in_stream: var, form_id: u64, is_64
1510 DW.FORM_ref_udata => parseFormValueRef(allocator, in_stream, -1),1511 DW.FORM_ref_udata => parseFormValueRef(allocator, in_stream, -1),
15111512
1512 DW.FORM_ref_addr => FormValue{ .RefAddr = try parseFormValueDwarfOffsetSize(in_stream, is_64) },1513 DW.FORM_ref_addr => FormValue{ .RefAddr = try parseFormValueDwarfOffsetSize(in_stream, is_64) },
1513 DW.FORM_ref_sig8 => FormValue{ .RefAddr = try in_stream.readIntLittle(u64) },1514 DW.FORM_ref_sig8 => FormValue{ .Ref = try in_stream.readIntLittle(u64) },
15141515
1515 DW.FORM_string => FormValue{ .String = try readStringRaw(allocator, in_stream) },1516 DW.FORM_string => FormValue{ .String = try readStringRaw(allocator, in_stream) },
1516 DW.FORM_strp => FormValue{ .StrPtr = try parseFormValueDwarfOffsetSize(in_stream, is_64) },1517 DW.FORM_strp => FormValue{ .StrPtr = try parseFormValueDwarfOffsetSize(in_stream, is_64) },