summaryrefslogtreecommitdiff
path: root/src/cmd/cgo
diff options
context:
space:
mode:
authorShenghou Ma <minux.ma@gmail.com>2013-07-12 04:35:53 +0800
committerShenghou Ma <minux.ma@gmail.com>2013-07-12 04:35:53 +0800
commitdaca379a15cf644ff9023406b3cf2451aa94fd0b (patch)
treeaf1da17cc34284ea323b3e53e8d77a1dd5b54663 /src/cmd/cgo
parent55f26cc29e8dac80c27b2a8e636642a4ffbb5135 (diff)
downloadgo-daca379a15cf644ff9023406b3cf2451aa94fd0b.tar.gz
cmd/cgo: silence two gcc warnings for *.cgo2.c
1. "int e;" is unused, generating "unused variable" error. 2. a->e was typed void *[2], but was accessed with *(int *)(a->e), this generated "dereferencing type-punned pointer will break strict-aliasing rules" error. R=golang-dev, rsc CC=golang-dev https://codereview.appspot.com/11009043
Diffstat (limited to 'src/cmd/cgo')
-rw-r--r--src/cmd/cgo/out.go5
1 files changed, 2 insertions, 3 deletions
diff --git a/src/cmd/cgo/out.go b/src/cmd/cgo/out.go
index be05c85a2..20f5afd5c 100644
--- a/src/cmd/cgo/out.go
+++ b/src/cmd/cgo/out.go
@@ -47,7 +47,7 @@ func (p *Package) writeDefs() {
} else {
// If we're not importing runtime/cgo, we *are* runtime/cgo,
// which provides crosscall2. We just need a prototype.
- fmt.Fprintf(fm, "void crosscall2(void(*fn)(void*, int), void *a, int c);")
+ fmt.Fprintf(fm, "void crosscall2(void(*fn)(void*, int), void *a, int c);\n")
}
fmt.Fprintf(fm, "void _cgo_allocate(void *a, int c) { }\n")
fmt.Fprintf(fm, "void _cgo_panic(void *a, int c) { }\n")
@@ -282,7 +282,7 @@ func (p *Package) structType(n *Name) (string, int64) {
off += pad
}
if n.AddError {
- fmt.Fprint(&buf, "\t\tvoid *e[2]; /* error */\n")
+ fmt.Fprint(&buf, "\t\tint e[2*sizeof(void *)/sizeof(int)]; /* error */\n")
off += 2 * p.PtrSize
}
if off == 0 {
@@ -478,7 +478,6 @@ func (p *Package) writeOutputFunc(fgcc *os.File, n *Name) {
fmt.Fprintf(fgcc, "_cgo%s%s(void *v)\n", cPrefix, n.Mangle)
fmt.Fprintf(fgcc, "{\n")
if n.AddError {
- fmt.Fprintf(fgcc, "\tint e;\n") // assuming 32 bit (see comment above structType)
fmt.Fprintf(fgcc, "\terrno = 0;\n")
}
// We're trying to write a gcc struct that matches 6c/8c/5c's layout.