}
ctxt.Bso = obj.Binitw(os.Stdout)
defer ctxt.Bso.Flush()
- ctxt.Diag = log.Fatalf
output := obj.Binitw(fd)
fmt.Fprintf(output, "go object %s %s %s\n", obj.Getgoos(), obj.Getgoarch(), obj.Getgoversion())
fmt.Fprintf(output, "!\n")
lexer := lex.NewLexer(flag.Arg(0), ctxt)
parser := asm.NewParser(ctxt, architecture, lexer)
+ diag := false
+ ctxt.Diag = func(format string, args ...interface{}) {
+ diag = true
+ log.Printf(format, args...)
+ }
pList := obj.Linknewplist(ctxt)
var ok bool
pList.Firstpc, ok = parser.Parse()
- if !ok {
+ if ok {
+ // reports errors to parser.Errorf
+ obj.Writeobjdirect(ctxt, output)
+ }
+ if !ok || diag {
log.Printf("asm: assembly of %s failed", flag.Arg(0))
os.Remove(*flags.OutputFile)
os.Exit(1)
}
- obj.Writeobjdirect(ctxt, output)
output.Flush()
}
}
}
- ctxt.Diag("doasm: notfound ft=%d tt=%d %v %d %d", p.Ft, p.Tt, p, oclass(ctxt, p, &p.From), oclass(ctxt, p, &p.To))
+ ctxt.Diag("invalid instruction: %v", p)
+ // ctxt.Diag("doasm: notfound ft=%d tt=%d %v %d %d", p.Ft, p.Tt, p, oclass(ctxt, p, &p.From), oclass(ctxt, p, &p.To))
return
}