aboutsummaryrefslogtreecommitdiffstats
path: root/prog/encoding.go
diff options
context:
space:
mode:
authorDmitry Vyukov <dvyukov@google.com>2017-08-19 09:46:43 +0200
committerDmitry Vyukov <dvyukov@google.com>2017-08-19 10:16:23 +0200
commit838e336594e410898667fa06b15f1116a3b586fd (patch)
tree1520155493fabef45ab3b5d59f396c42f7968713 /prog/encoding.go
parent33b9e777cbaf25d5ac727783aedddb382c97338f (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.go15
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 {