diff --git a/src/cmd/cgo/gcc.go b/src/cmd/cgo/gcc.go index ad28ec18cb2..4b0a521a87a 100644 --- a/src/cmd/cgo/gcc.go +++ b/src/cmd/cgo/gcc.go @@ -783,7 +783,13 @@ func (p *Package) gccCmd() []string { if strings.Contains(p.gccName(), "clang") { c = append(c, "-ferror-limit=0", + // Apple clang version 1.7 (tags/Apple/clang-77) (based on LLVM 2.9svn) + // doesn't have -Wno-unneeded-internal-declaration, so we need yet another + // flag to disable the warning. Yes, really good diagnostics, clang. + "-Wno-unknown-warning-option", "-Wno-unneeded-internal-declaration", + "-Wno-unused-function", + "-Qunused-arguments", ) } @@ -1049,6 +1055,12 @@ func (c *typeConv) Type(dtype dwarf.Type, pos token.Pos) *Type { return t } + // clang won't generate DW_AT_byte_size for pointer types, + // so we have to fix it here. + if dt, ok := base(dtype).(*dwarf.PtrType); ok && dt.ByteSize == -1 { + dt.ByteSize = c.ptrSize + } + t := new(Type) t.Size = dtype.Size() t.Align = -1 diff --git a/src/cmd/dist/build.c b/src/cmd/dist/build.c index eb72074ec8f..cf754a41037 100644 --- a/src/cmd/dist/build.c +++ b/src/cmd/dist/build.c @@ -409,6 +409,7 @@ static char *proto_gccargs[] = { "-Wno-comment", "-Werror", "-fno-common", + "-ggdb", "-pipe", "-O2", }; @@ -604,10 +605,10 @@ install(char *dir) splitfields(&gccargs, bstr(&b)); for(i=0; i