Compare commits
2 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| c60762fe85 | |||
|
6ee3ed1711
|
68
cmd/irdump/main.go
Normal file
68
cmd/irdump/main.go
Normal file
@@ -0,0 +1,68 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"bytes"
|
||||
"errors"
|
||||
"io"
|
||||
"log"
|
||||
"os"
|
||||
|
||||
"hakurei.app/command"
|
||||
)
|
||||
|
||||
func main() {
|
||||
log.SetFlags(0)
|
||||
log.SetPrefix("irdump: ")
|
||||
|
||||
var (
|
||||
flagOutput string
|
||||
flagReal bool
|
||||
)
|
||||
c := command.New(os.Stderr, log.Printf, "irdump", func(args []string) (err error) {
|
||||
var input *os.File
|
||||
if len(args) < 1 {
|
||||
return errors.New("irdump requires 1 argument")
|
||||
}
|
||||
if input, err = os.Open(args[0]); err != nil {
|
||||
return
|
||||
}
|
||||
defer input.Close()
|
||||
|
||||
var output *os.File
|
||||
if flagOutput == "" {
|
||||
output = os.Stdout
|
||||
} else {
|
||||
defer output.Close()
|
||||
if output, err = os.Create(flagOutput); err != nil {
|
||||
return
|
||||
}
|
||||
}
|
||||
|
||||
inputData := bytes.NewBuffer(nil)
|
||||
if _, err = io.Copy(inputData, input); err != nil {
|
||||
return
|
||||
}
|
||||
var out string
|
||||
if out, err = Disassemble(inputData.Bytes(), flagReal); err != nil {
|
||||
return
|
||||
}
|
||||
if _, err = output.WriteString(out); err != nil {
|
||||
return
|
||||
}
|
||||
return
|
||||
}).Flag(
|
||||
&flagOutput,
|
||||
"o", command.StringFlag(""),
|
||||
"Output file for asm (leave empty for stdout)",
|
||||
).Flag(
|
||||
&flagReal,
|
||||
"r", command.BoolFlag(false),
|
||||
"skip label generation; idents print real value")
|
||||
|
||||
c.MustParse(os.Args[1:], func(err error) {
|
||||
log.Fatal(err)
|
||||
})
|
||||
}
|
||||
func Disassemble(ir []byte, real bool) (string, error) {
|
||||
return "hello world", nil
|
||||
}
|
||||
@@ -98,7 +98,6 @@ func (t Toolchain) newGoLatest() pkg.Artifact {
|
||||
append(bootstrapEnv, "CGO_ENABLED=0"), `
|
||||
rm \
|
||||
crypto/tls/handshake_client_test.go \
|
||||
cmd/pprof/pprof_test.go \
|
||||
os/os_unix_test.go
|
||||
sed -i \
|
||||
's/os\.Getenv("GCCGO")$/"nonexistent"/' \
|
||||
|
||||
Reference in New Issue
Block a user