Open
Description
What version of Go are you using (go version
)?
$ go version go version go1.14.2 darwin/amd64
Does this issue reproduce with the latest release?
Yes.
What operating system and processor architecture are you using (go env
)?
go env
Output
$ go env GO111MODULE="" GOARCH="amd64" GOBIN="/Users/elagergren/gopath/bin" GOCACHE="/Users/elagergren/Library/Caches/go-build" GOENV="/Users/elagergren/Library/Application Support/go/env" GOEXE="" GOFLAGS="" GOHOSTARCH="amd64" GOHOSTOS="darwin" GOINSECURE="" GONOPROXY="" GONOSUMDB="" GOOS="darwin" GOPATH="/Users/elagergren/gopath" GOPRIVATE="" GOPROXY="https://proxy.golang.org,direct" GOROOT="/usr/local/go" GOSUMDB="sum.golang.org" GOTMPDIR="" GOTOOLDIR="/usr/local/go/pkg/tool/darwin_amd64" GCCGO="gccgo" AR="ar" CC="clang" CXX="clang++" CGO_ENABLED="1" GOMOD="" CGO_CFLAGS="-g -O2" CGO_CPPFLAGS="" CGO_CXXFLAGS="-g -O2" CGO_FFLAGS="-g -O2" CGO_LDFLAGS="-g -O2" PKG_CONFIG="pkg-config" GOGCCFLAGS="-fPIC -m64 -pthread -fno-caret-diagnostics -Qunused-arguments -fmessage-length=0 -fdebug-prefix-map=/var/folders/2b/74fz3jhd4wz4vnbf4z7ywzww0000gp/T/go-build455376315=/tmp/go-build -gno-record-gcc-switches -fno-common"
What did you do?
https://play.golang.org/p/73rgY0pPok8
What did you expect to see?
The values for all types be 0xa4a4a4...
(i.e., unsigned integers).
What did you see instead?
Them converted to signed integers.
This is because
Line 618 in afd477f
*dwarf.UintType
when some types are, e.g., a *QualType
wrapping a *TypedefType
, which then contains a *UintType
.
This patch fixes it, at least on macOS.
615c615
< if isUnsigned(types[i]) {
---
> if _, ok := types[i].(*dwarf.UintType); ok {
653,672d652
< func isUnsigned(t dwarf.Type) bool {
< unwrap := func(t dwarf.Type) dwarf.Type {
< switch t := t.(type) {
< case *dwarf.QualType:
< return t.Type
< case *dwarf.TypedefType:
< return t.Type
< default:
< return nil
< }
< }
< for t != nil {
< if _, ok := t.(*dwarf.UintType); ok {
< return true
< }
< t = unwrap(t)
< }
< return false
< }
<
Metadata
Metadata
Assignees
Labels
Type
Projects
Status
Triage Backlog