|
@@ -17,22 +17,7 @@ import (
|
|
|
"strings"
|
|
"strings"
|
|
|
)
|
|
)
|
|
|
|
|
|
|
|
-func main() {
|
|
|
|
|
- in1, err := ioutil.ReadFile("syscall_darwin.go")
|
|
|
|
|
- if err != nil {
|
|
|
|
|
- log.Fatalf("can't open syscall_darwin.go: %s", err)
|
|
|
|
|
- }
|
|
|
|
|
- arch := os.Args[1]
|
|
|
|
|
- in2, err := ioutil.ReadFile(fmt.Sprintf("syscall_darwin_%s.go", arch))
|
|
|
|
|
- if err != nil {
|
|
|
|
|
- log.Fatalf("can't open syscall_darwin_%s.go: %s", arch, err)
|
|
|
|
|
- }
|
|
|
|
|
- in3, err := ioutil.ReadFile(fmt.Sprintf("zsyscall_darwin_%s.go", arch))
|
|
|
|
|
- if err != nil {
|
|
|
|
|
- log.Fatalf("can't open zsyscall_darwin_%s.go: %s", arch, err)
|
|
|
|
|
- }
|
|
|
|
|
- in := string(in1) + string(in2) + string(in3)
|
|
|
|
|
-
|
|
|
|
|
|
|
+func writeASMFile(in string, fileName string, buildTags string) {
|
|
|
trampolines := map[string]bool{}
|
|
trampolines := map[string]bool{}
|
|
|
|
|
|
|
|
var out bytes.Buffer
|
|
var out bytes.Buffer
|
|
@@ -40,7 +25,7 @@ func main() {
|
|
|
fmt.Fprintf(&out, "// go run mkasm_darwin.go %s\n", strings.Join(os.Args[1:], " "))
|
|
fmt.Fprintf(&out, "// go run mkasm_darwin.go %s\n", strings.Join(os.Args[1:], " "))
|
|
|
fmt.Fprintf(&out, "// Code generated by the command above; DO NOT EDIT.\n")
|
|
fmt.Fprintf(&out, "// Code generated by the command above; DO NOT EDIT.\n")
|
|
|
fmt.Fprintf(&out, "\n")
|
|
fmt.Fprintf(&out, "\n")
|
|
|
- fmt.Fprintf(&out, "// +build go1.12\n")
|
|
|
|
|
|
|
+ fmt.Fprintf(&out, "// +build %s\n", buildTags)
|
|
|
fmt.Fprintf(&out, "\n")
|
|
fmt.Fprintf(&out, "\n")
|
|
|
fmt.Fprintf(&out, "#include \"textflag.h\"\n")
|
|
fmt.Fprintf(&out, "#include \"textflag.h\"\n")
|
|
|
for _, line := range strings.Split(in, "\n") {
|
|
for _, line := range strings.Split(in, "\n") {
|
|
@@ -54,8 +39,40 @@ func main() {
|
|
|
fmt.Fprintf(&out, "\tJMP\t%s(SB)\n", fn)
|
|
fmt.Fprintf(&out, "\tJMP\t%s(SB)\n", fn)
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
- err = ioutil.WriteFile(fmt.Sprintf("zsyscall_darwin_%s.s", arch), out.Bytes(), 0644)
|
|
|
|
|
|
|
+ err := ioutil.WriteFile(fileName, out.Bytes(), 0644)
|
|
|
if err != nil {
|
|
if err != nil {
|
|
|
- log.Fatalf("can't write zsyscall_darwin_%s.s: %s", arch, err)
|
|
|
|
|
|
|
+ log.Fatalf("can't write %s: %s", fileName, err)
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
|
|
+
|
|
|
|
|
+func main() {
|
|
|
|
|
+ in1, err := ioutil.ReadFile("syscall_darwin.go")
|
|
|
|
|
+ if err != nil {
|
|
|
|
|
+ log.Fatalf("can't open syscall_darwin.go: %s", err)
|
|
|
|
|
+ }
|
|
|
|
|
+ arch := os.Args[1]
|
|
|
|
|
+ in2, err := ioutil.ReadFile(fmt.Sprintf("syscall_darwin_%s.go", arch))
|
|
|
|
|
+ if err != nil {
|
|
|
|
|
+ log.Fatalf("can't open syscall_darwin_%s.go: %s", arch, err)
|
|
|
|
|
+ }
|
|
|
|
|
+ in3, err := ioutil.ReadFile(fmt.Sprintf("zsyscall_darwin_%s.go", arch))
|
|
|
|
|
+ if err != nil {
|
|
|
|
|
+ log.Fatalf("can't open zsyscall_darwin_%s.go: %s", arch, err)
|
|
|
|
|
+ }
|
|
|
|
|
+ in := string(in1) + string(in2) + string(in3)
|
|
|
|
|
+
|
|
|
|
|
+ writeASMFile(in, fmt.Sprintf("zsyscall_darwin_%s.s", arch), "go1.12")
|
|
|
|
|
+
|
|
|
|
|
+ in1, err = ioutil.ReadFile("syscall_darwin.1_13.go")
|
|
|
|
|
+ if err != nil {
|
|
|
|
|
+ log.Fatalf("can't open syscall_darwin.1_13.go: %s", err)
|
|
|
|
|
+ }
|
|
|
|
|
+ in2, err = ioutil.ReadFile(fmt.Sprintf("zsyscall_darwin_%s.1_13.go", arch))
|
|
|
|
|
+ if err != nil {
|
|
|
|
|
+ log.Fatalf("can't open zsyscall_darwin_%s.1_13.go: %s", arch, err)
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ in = string(in1) + string(in2)
|
|
|
|
|
+
|
|
|
|
|
+ writeASMFile(in, fmt.Sprintf("zsyscall_darwin_%s.1_13.s", arch), "go1.13")
|
|
|
|
|
+}
|