diff options
| author | Dmitry Vyukov <dvyukov@google.com> | 2017-08-19 09:46:43 +0200 |
|---|---|---|
| committer | Dmitry Vyukov <dvyukov@google.com> | 2017-08-19 10:16:23 +0200 |
| commit | 838e336594e410898667fa06b15f1116a3b586fd (patch) | |
| tree | 1520155493fabef45ab3b5d59f396c42f7968713 /prog/encoding.go | |
| parent | 33b9e777cbaf25d5ac727783aedddb382c97338f (diff) | |
sys, prog: switch values to to uint64
We currently use uintptr for all values.
This won't work for 32-bit archs.
Moreover in some cases we use uintptr but assume
that it is always 64-bits (e.g. in encodingexec).
Switch everything to uint64.
Update #324
Diffstat (limited to 'prog/encoding.go')
| -rw-r--r-- | prog/encoding.go | 15 |
1 files changed, 7 insertions, 8 deletions
diff --git a/prog/encoding.go b/prog/encoding.go index 69fcdc6cb..f6eb4d168 100644 --- a/prog/encoding.go +++ b/prog/encoding.go @@ -213,9 +213,9 @@ func parseArg(typ sys.Type, p *parser, vars map[string]Arg) (Arg, error) { } switch typ.(type) { case *sys.ConstType, *sys.IntType, *sys.FlagsType, *sys.ProcType, *sys.LenType, *sys.CsumType: - arg = constArg(typ, uintptr(v)) + arg = constArg(typ, v) case *sys.ResourceType: - arg = resultArg(typ, nil, uintptr(v)) + arg = resultArg(typ, nil, v) case *sys.PtrType: arg = pointerArg(typ, 0, 0, 0, nil) case *sys.VmaType: @@ -237,7 +237,7 @@ func parseArg(typ sys.Type, p *parser, vars map[string]Arg) (Arg, error) { if err != nil { return nil, fmt.Errorf("wrong result div op: '%v'", op) } - arg.(*ResultArg).OpDiv = uintptr(v) + arg.(*ResultArg).OpDiv = v } if p.Char() == '+' { p.Parse('+') @@ -246,7 +246,7 @@ func parseArg(typ sys.Type, p *parser, vars map[string]Arg) (Arg, error) { if err != nil { return nil, fmt.Errorf("wrong result add op: '%v'", op) } - arg.(*ResultArg).OpAdd = uintptr(v) + arg.(*ResultArg).OpAdd = v } case '&': var typ1 sys.Type @@ -383,9 +383,8 @@ const ( ) func serializeAddr(arg Arg) string { - var pageIndex uintptr + var pageIndex, pagesNum uint64 var pageOffset int - var pagesNum uintptr switch a := arg.(type) { case *PointerArg: pageIndex = a.PageIndex @@ -414,7 +413,7 @@ func serializeAddr(arg Arg) string { return fmt.Sprintf("(0x%x%v%v)", page, soff, ssize) } -func parseAddr(p *parser, base bool) (uintptr, int, uintptr, error) { +func parseAddr(p *parser, base bool) (uint64, int, uint64, error) { p.Parse('(') pstr := p.Ident() page, err := strconv.ParseUint(pstr, 0, 64) @@ -461,7 +460,7 @@ func parseAddr(p *parser, base bool) (uintptr, int, uintptr, error) { p.Parse(')') page /= encodingPageSize size /= encodingPageSize - return uintptr(page), int(off), uintptr(size), nil + return page, int(off), size, nil } type parser struct { |
