internal/fakecgo: generate more (#141)
Before only the symbols.go and trampolines_stubs.s were generated. however, if more symbols are added symbols_GOOS.go also needs to be updated. Might as well generate that too.
- commit
- 08ca952ca680063c8cbbc86e73071412ee707287
- author
- TotallyGamerJet · · 2023-07-01 03:26 UTC
- committer
- GitHub · · 2023-07-01 03:26 UTC
- parent
- ee8dcec
- signature
- GPG Unverified
4AEE18F83AFDEB23The key is unknown
5 files · +124 -82
M internal/fakecgo/gen.go +64 -20
| @@ -6,6 +6,9 @@ | |||
| 6 | 6 | package main | |
| 7 | 7 | ||
| 8 | 8 | import ( | |
| 9 | + | "bytes" | |
| 10 | + | "fmt" | |
| 11 | + | "go/format" | |
| 9 | 12 | "log" | |
| 10 | 13 | "os" | |
| 11 | 14 | "strings" | |
| @@ -108,24 +111,28 @@ type Symbol struct { | |||
| 108 | 111 | Return string | |
| 109 | 112 | } | |
| 110 | 113 | ||
| 111 | - | var symbols = []Symbol{ | |
| 112 | - | {"malloc", [5]Arg{{"size", "uintptr"}}, "unsafe.Pointer"}, | |
| 113 | - | {"free", [5]Arg{{"ptr", "unsafe.Pointer"}}, ""}, | |
| 114 | - | {"setenv", [5]Arg{{"name", "*byte"}, {"value", "*byte"}, {"overwrite", "int32"}}, "int32"}, | |
| 115 | - | {"unsetenv", [5]Arg{{"name", "*byte"}}, "int32"}, | |
| 116 | - | {"pthread_attr_init", [5]Arg{{"attr", "*pthread_attr_t"}}, "int32"}, | |
| 117 | - | {"pthread_create", [5]Arg{{"thread", "*pthread_t"}, {"attr", "*pthread_attr_t"}, {"start", "unsafe.Pointer"}, {"arg", "unsafe.Pointer"}}, "int32"}, | |
| 118 | - | {"pthread_detach", [5]Arg{{"thread", "pthread_t"}}, "int32"}, | |
| 119 | - | {"pthread_sigmask", [5]Arg{{"how", "sighow"}, {"ign", "*sigset_t"}, {"oset", "*sigset_t"}}, "int32"}, | |
| 120 | - | {"pthread_self", [5]Arg{}, "pthread_t"}, | |
| 121 | - | {"pthread_get_stacksize_np", [5]Arg{{"thread", "pthread_t"}}, "size_t"}, | |
| 122 | - | {"pthread_attr_getstacksize", [5]Arg{{"attr", "*pthread_attr_t"}, {"stacksize", "*size_t"}}, "int32"}, | |
| 123 | - | {"pthread_attr_setstacksize", [5]Arg{{"attr", "*pthread_attr_t"}, {"size", "size_t"}}, "int32"}, | |
| 124 | - | {"pthread_attr_destroy", [5]Arg{{"attr", "*pthread_attr_t"}}, "int32"}, | |
| 125 | - | {"sigfillset", [5]Arg{{"set", "*sigset_t"}}, "int32"}, | |
| 126 | - | {"nanosleep", [5]Arg{{"ts", "*syscall.Timespec"}, {"rem", "*syscall.Timespec"}}, "int32"}, | |
| 127 | - | {"abort", [5]Arg{}, ""}, | |
| 128 | - | } | |
| 114 | + | var ( | |
| 115 | + | libcSymbols = []Symbol{ | |
| 116 | + | {"malloc", [5]Arg{{"size", "uintptr"}}, "unsafe.Pointer"}, | |
| 117 | + | {"free", [5]Arg{{"ptr", "unsafe.Pointer"}}, ""}, | |
| 118 | + | {"setenv", [5]Arg{{"name", "*byte"}, {"value", "*byte"}, {"overwrite", "int32"}}, "int32"}, | |
| 119 | + | {"unsetenv", [5]Arg{{"name", "*byte"}}, "int32"}, | |
| 120 | + | {"sigfillset", [5]Arg{{"set", "*sigset_t"}}, "int32"}, | |
| 121 | + | {"nanosleep", [5]Arg{{"ts", "*syscall.Timespec"}, {"rem", "*syscall.Timespec"}}, "int32"}, | |
| 122 | + | {"abort", [5]Arg{}, ""}, | |
| 123 | + | } | |
| 124 | + | pthreadSymbols = []Symbol{ | |
| 125 | + | {"pthread_attr_init", [5]Arg{{"attr", "*pthread_attr_t"}}, "int32"}, | |
| 126 | + | {"pthread_create", [5]Arg{{"thread", "*pthread_t"}, {"attr", "*pthread_attr_t"}, {"start", "unsafe.Pointer"}, {"arg", "unsafe.Pointer"}}, "int32"}, | |
| 127 | + | {"pthread_detach", [5]Arg{{"thread", "pthread_t"}}, "int32"}, | |
| 128 | + | {"pthread_sigmask", [5]Arg{{"how", "sighow"}, {"ign", "*sigset_t"}, {"oset", "*sigset_t"}}, "int32"}, | |
| 129 | + | {"pthread_self", [5]Arg{}, "pthread_t"}, | |
| 130 | + | {"pthread_get_stacksize_np", [5]Arg{{"thread", "pthread_t"}}, "size_t"}, | |
| 131 | + | {"pthread_attr_getstacksize", [5]Arg{{"attr", "*pthread_attr_t"}, {"stacksize", "*size_t"}}, "int32"}, | |
| 132 | + | {"pthread_attr_setstacksize", [5]Arg{{"attr", "*pthread_attr_t"}, {"size", "size_t"}}, "int32"}, | |
| 133 | + | {"pthread_attr_destroy", [5]Arg{{"attr", "*pthread_attr_t"}}, "int32"}, | |
| 134 | + | } | |
| 135 | + | ) | |
| 129 | 136 | ||
| 130 | 137 | var funcs = map[string]any{ | |
| 131 | 138 | "hasPrefix": strings.HasPrefix, | |
| @@ -141,7 +148,16 @@ func run() error { | |||
| 141 | 148 | if err != nil { | |
| 142 | 149 | return err | |
| 143 | 150 | } | |
| 144 | - | if err := t.Execute(f, symbols); err != nil { | |
| 151 | + | allSymbols := append(append([]Symbol{}, libcSymbols...), pthreadSymbols...) | |
| 152 | + | buf := new(bytes.Buffer) | |
| 153 | + | if err := t.Execute(buf, allSymbols); err != nil { | |
| 154 | + | return err | |
| 155 | + | } | |
| 156 | + | source, err := format.Source(buf.Bytes()) | |
| 157 | + | if err != nil { | |
| 158 | + | return err | |
| 159 | + | } | |
| 160 | + | if _, err = f.Write(source); err != nil { | |
| 145 | 161 | return err | |
| 146 | 162 | } | |
| 147 | 163 | t, err = template.New("trampolines_stubs.s").Funcs(funcs).Parse(templateTrampolinesStubs) | |
| @@ -153,9 +169,37 @@ func run() error { | |||
| 153 | 169 | if err != nil { | |
| 154 | 170 | return err | |
| 155 | 171 | } | |
| 156 | - | if err := t.Execute(f, symbols); err != nil { | |
| 172 | + | if err := t.Execute(f, allSymbols); err != nil { | |
| 157 | 173 | return err | |
| 158 | 174 | } | |
| 175 | + | for _, goos := range []string{"darwin", "linux"} { | |
| 176 | + | f, err = os.Create(fmt.Sprintf("symbols_%s.go", goos)) | |
| 177 | + | defer f.Close() | |
| 178 | + | if err != nil { | |
| 179 | + | return err | |
| 180 | + | } | |
| 181 | + | f.WriteString(`// Code generated by 'go generate' with gen.go. DO NOT EDIT. | |
| 182 | + | ||
| 183 | + | // SPDX-License-Identifier: Apache-2.0 | |
| 184 | + | // SPDX-FileCopyrightText: 2022 The Ebitengine Authors | |
| 185 | + | ||
| 186 | + | package fakecgo | |
| 187 | + | ||
| 188 | + | `) | |
| 189 | + | const importPragma = `//go:cgo_import_dynamic purego_%s %s "%s"` + "\n" | |
| 190 | + | libcSO := "/usr/lib/libSystem.B.dylib" | |
| 191 | + | pthreadSO := "/usr/lib/libSystem.B.dylib" | |
| 192 | + | if goos == "linux" { | |
| 193 | + | libcSO = "libc.so.6" | |
| 194 | + | pthreadSO = "libpthread.so.0" | |
| 195 | + | } | |
| 196 | + | for _, sym := range libcSymbols { | |
| 197 | + | f.WriteString(fmt.Sprintf(importPragma, sym.Name, sym.Name, libcSO)) | |
| 198 | + | } | |
| 199 | + | for _, sym := range pthreadSymbols { | |
| 200 | + | f.WriteString(fmt.Sprintf(importPragma, sym.Name, sym.Name, pthreadSO)) | |
| 201 | + | } | |
| 202 | + | } | |
| 159 | 203 | return nil | |
| 160 | 204 | } | |
| 161 | 205 | ||
| @@ -6,6 +6,9 @@ | |||||
| 6 | package main | 6 | package main | ||
| 7 | 7 | ||||
| 8 | import ( | 8 | import ( | ||
| 9 | + | "bytes" | |||
| 10 | + | "fmt" | |||
| 11 | + | "go/format" | |||
| 9 | "log" | 12 | "log" | ||
| 10 | "os" | 13 | "os" | ||
| 11 | "strings" | 14 | "strings" | ||
| @@ -108,24 +111,28 @@ type Symbol struct { | |||||
| 108 | Return string | 111 | Return string | ||
| 109 | } | 112 | } | ||
| 110 | 113 | ||||
| 111 | - | var symbols = []Symbol{ | 114 | + | var ( |
| 112 | - | {"malloc", [5]Arg{{"size", "uintptr"}}, "unsafe.Pointer"}, | 115 | + | libcSymbols = []Symbol{ |
| 113 | - | {"free", [5]Arg{{"ptr", "unsafe.Pointer"}}, ""}, | 116 | + | {"malloc", [5]Arg{{"size", "uintptr"}}, "unsafe.Pointer"}, |
| 114 | - | {"setenv", [5]Arg{{"name", "*byte"}, {"value", "*byte"}, {"overwrite", "int32"}}, "int32"}, | 117 | + | {"free", [5]Arg{{"ptr", "unsafe.Pointer"}}, ""}, |
| 115 | - | {"unsetenv", [5]Arg{{"name", "*byte"}}, "int32"}, | 118 | + | {"setenv", [5]Arg{{"name", "*byte"}, {"value", "*byte"}, {"overwrite", "int32"}}, "int32"}, |
| 116 | - | {"pthread_attr_init", [5]Arg{{"attr", "*pthread_attr_t"}}, "int32"}, | 119 | + | {"unsetenv", [5]Arg{{"name", "*byte"}}, "int32"}, |
| 117 | - | {"pthread_create", [5]Arg{{"thread", "*pthread_t"}, {"attr", "*pthread_attr_t"}, {"start", "unsafe.Pointer"}, {"arg", "unsafe.Pointer"}}, "int32"}, | 120 | + | {"sigfillset", [5]Arg{{"set", "*sigset_t"}}, "int32"}, |
| 118 | - | {"pthread_detach", [5]Arg{{"thread", "pthread_t"}}, "int32"}, | 121 | + | {"nanosleep", [5]Arg{{"ts", "*syscall.Timespec"}, {"rem", "*syscall.Timespec"}}, "int32"}, |
| 119 | - | {"pthread_sigmask", [5]Arg{{"how", "sighow"}, {"ign", "*sigset_t"}, {"oset", "*sigset_t"}}, "int32"}, | 122 | + | {"abort", [5]Arg{}, ""}, |
| 120 | - | {"pthread_self", [5]Arg{}, "pthread_t"}, | 123 | + | } |
| 121 | - | {"pthread_get_stacksize_np", [5]Arg{{"thread", "pthread_t"}}, "size_t"}, | 124 | + | pthreadSymbols = []Symbol{ |
| 122 | - | {"pthread_attr_getstacksize", [5]Arg{{"attr", "*pthread_attr_t"}, {"stacksize", "*size_t"}}, "int32"}, | 125 | + | {"pthread_attr_init", [5]Arg{{"attr", "*pthread_attr_t"}}, "int32"}, |
| 123 | - | {"pthread_attr_setstacksize", [5]Arg{{"attr", "*pthread_attr_t"}, {"size", "size_t"}}, "int32"}, | 126 | + | {"pthread_create", [5]Arg{{"thread", "*pthread_t"}, {"attr", "*pthread_attr_t"}, {"start", "unsafe.Pointer"}, {"arg", "unsafe.Pointer"}}, "int32"}, |
| 124 | - | {"pthread_attr_destroy", [5]Arg{{"attr", "*pthread_attr_t"}}, "int32"}, | 127 | + | {"pthread_detach", [5]Arg{{"thread", "pthread_t"}}, "int32"}, |
| 125 | - | {"sigfillset", [5]Arg{{"set", "*sigset_t"}}, "int32"}, | 128 | + | {"pthread_sigmask", [5]Arg{{"how", "sighow"}, {"ign", "*sigset_t"}, {"oset", "*sigset_t"}}, "int32"}, |
| 126 | - | {"nanosleep", [5]Arg{{"ts", "*syscall.Timespec"}, {"rem", "*syscall.Timespec"}}, "int32"}, | 129 | + | {"pthread_self", [5]Arg{}, "pthread_t"}, |
| 127 | - | {"abort", [5]Arg{}, ""}, | 130 | + | {"pthread_get_stacksize_np", [5]Arg{{"thread", "pthread_t"}}, "size_t"}, |
| 128 | - | } | 131 | + | {"pthread_attr_getstacksize", [5]Arg{{"attr", "*pthread_attr_t"}, {"stacksize", "*size_t"}}, "int32"}, |
| 132 | + | {"pthread_attr_setstacksize", [5]Arg{{"attr", "*pthread_attr_t"}, {"size", "size_t"}}, "int32"}, | |||
| 133 | + | {"pthread_attr_destroy", [5]Arg{{"attr", "*pthread_attr_t"}}, "int32"}, | |||
| 134 | + | } | |||
| 135 | + | ) | |||
| 129 | 136 | ||||
| 130 | var funcs = map[string]any{ | 137 | var funcs = map[string]any{ | ||
| 131 | "hasPrefix": strings.HasPrefix, | 138 | "hasPrefix": strings.HasPrefix, | ||
| @@ -141,7 +148,16 @@ func run() error { | |||||
| 141 | if err != nil { | 148 | if err != nil { | ||
| 142 | return err | 149 | return err | ||
| 143 | } | 150 | } | ||
| 144 | - | if err := t.Execute(f, symbols); err != nil { | 151 | + | allSymbols := append(append([]Symbol{}, libcSymbols...), pthreadSymbols...) |
| 152 | + | buf := new(bytes.Buffer) | |||
| 153 | + | if err := t.Execute(buf, allSymbols); err != nil { | |||
| 154 | + | return err | |||
| 155 | + | } | |||
| 156 | + | source, err := format.Source(buf.Bytes()) | |||
| 157 | + | if err != nil { | |||
| 158 | + | return err | |||
| 159 | + | } | |||
| 160 | + | if _, err = f.Write(source); err != nil { | |||
| 145 | return err | 161 | return err | ||
| 146 | } | 162 | } | ||
| 147 | t, err = template.New("trampolines_stubs.s").Funcs(funcs).Parse(templateTrampolinesStubs) | 163 | t, err = template.New("trampolines_stubs.s").Funcs(funcs).Parse(templateTrampolinesStubs) | ||
| @@ -153,9 +169,37 @@ func run() error { | |||||
| 153 | if err != nil { | 169 | if err != nil { | ||
| 154 | return err | 170 | return err | ||
| 155 | } | 171 | } | ||
| 156 | - | if err := t.Execute(f, symbols); err != nil { | 172 | + | if err := t.Execute(f, allSymbols); err != nil { |
| 157 | return err | 173 | return err | ||
| 158 | } | 174 | } | ||
| 175 | + | for _, goos := range []string{"darwin", "linux"} { | |||
| 176 | + | f, err = os.Create(fmt.Sprintf("symbols_%s.go", goos)) | |||
| 177 | + | defer f.Close() | |||
| 178 | + | if err != nil { | |||
| 179 | + | return err | |||
| 180 | + | } | |||
| 181 | + | f.WriteString(`// Code generated by 'go generate' with gen.go. DO NOT EDIT. | |||
| 182 | + | ||||
| 183 | + | // SPDX-License-Identifier: Apache-2.0 | |||
| 184 | + | // SPDX-FileCopyrightText: 2022 The Ebitengine Authors | |||
| 185 | + | ||||
| 186 | + | package fakecgo | |||
| 187 | + | ||||
| 188 | + | `) | |||
| 189 | + | const importPragma = `//go:cgo_import_dynamic purego_%s %s "%s"` + "\n" | |||
| 190 | + | libcSO := "/usr/lib/libSystem.B.dylib" | |||
| 191 | + | pthreadSO := "/usr/lib/libSystem.B.dylib" | |||
| 192 | + | if goos == "linux" { | |||
| 193 | + | libcSO = "libc.so.6" | |||
| 194 | + | pthreadSO = "libpthread.so.0" | |||
| 195 | + | } | |||
| 196 | + | for _, sym := range libcSymbols { | |||
| 197 | + | f.WriteString(fmt.Sprintf(importPragma, sym.Name, sym.Name, libcSO)) | |||
| 198 | + | } | |||
| 199 | + | for _, sym := range pthreadSymbols { | |||
| 200 | + | f.WriteString(fmt.Sprintf(importPragma, sym.Name, sym.Name, pthreadSO)) | |||
| 201 | + | } | |||
| 202 | + | } | |||
| 159 | return nil | 203 | return nil | ||
| 160 | } | 204 | } | ||
| 161 | 205 | ||||
M internal/fakecgo/symbols.go +24 -24
| @@ -39,6 +39,18 @@ func unsetenv(name *byte) int32 { | |||
| 39 | 39 | return int32(call5(unsetenvABI0, uintptr(unsafe.Pointer(name)), 0, 0, 0, 0)) | |
| 40 | 40 | } | |
| 41 | 41 | ||
| 42 | + | func sigfillset(set *sigset_t) int32 { | |
| 43 | + | return int32(call5(sigfillsetABI0, uintptr(unsafe.Pointer(set)), 0, 0, 0, 0)) | |
| 44 | + | } | |
| 45 | + | ||
| 46 | + | func nanosleep(ts *syscall.Timespec, rem *syscall.Timespec) int32 { | |
| 47 | + | return int32(call5(nanosleepABI0, uintptr(unsafe.Pointer(ts)), uintptr(unsafe.Pointer(rem)), 0, 0, 0)) | |
| 48 | + | } | |
| 49 | + | ||
| 50 | + | func abort() { | |
| 51 | + | call5(abortABI0, 0, 0, 0, 0, 0) | |
| 52 | + | } | |
| 53 | + | ||
| 42 | 54 | func pthread_attr_init(attr *pthread_attr_t) int32 { | |
| 43 | 55 | return int32(call5(pthread_attr_initABI0, uintptr(unsafe.Pointer(attr)), 0, 0, 0, 0)) | |
| 44 | 56 | } | |
| @@ -75,18 +87,6 @@ func pthread_attr_destroy(attr *pthread_attr_t) int32 { | |||
| 75 | 87 | return int32(call5(pthread_attr_destroyABI0, uintptr(unsafe.Pointer(attr)), 0, 0, 0, 0)) | |
| 76 | 88 | } | |
| 77 | 89 | ||
| 78 | - | func sigfillset(set *sigset_t) int32 { | |
| 79 | - | return int32(call5(sigfillsetABI0, uintptr(unsafe.Pointer(set)), 0, 0, 0, 0)) | |
| 80 | - | } | |
| 81 | - | ||
| 82 | - | func nanosleep(ts *syscall.Timespec, rem *syscall.Timespec) int32 { | |
| 83 | - | return int32(call5(nanosleepABI0, uintptr(unsafe.Pointer(ts)), uintptr(unsafe.Pointer(rem)), 0, 0, 0)) | |
| 84 | - | } | |
| 85 | - | ||
| 86 | - | func abort() { | |
| 87 | - | call5(abortABI0, 0, 0, 0, 0, 0) | |
| 88 | - | } | |
| 89 | - | ||
| 90 | 90 | //go:linkname _malloc _malloc | |
| 91 | 91 | var _malloc uintptr | |
| 92 | 92 | var mallocABI0 = uintptr(unsafe.Pointer(&_malloc)) | |
| @@ -103,6 +103,18 @@ var setenvABI0 = uintptr(unsafe.Pointer(&_setenv)) | |||
| 103 | 103 | var _unsetenv uintptr | |
| 104 | 104 | var unsetenvABI0 = uintptr(unsafe.Pointer(&_unsetenv)) | |
| 105 | 105 | ||
| 106 | + | //go:linkname _sigfillset _sigfillset | |
| 107 | + | var _sigfillset uintptr | |
| 108 | + | var sigfillsetABI0 = uintptr(unsafe.Pointer(&_sigfillset)) | |
| 109 | + | ||
| 110 | + | //go:linkname _nanosleep _nanosleep | |
| 111 | + | var _nanosleep uintptr | |
| 112 | + | var nanosleepABI0 = uintptr(unsafe.Pointer(&_nanosleep)) | |
| 113 | + | ||
| 114 | + | //go:linkname _abort _abort | |
| 115 | + | var _abort uintptr | |
| 116 | + | var abortABI0 = uintptr(unsafe.Pointer(&_abort)) | |
| 117 | + | ||
| 106 | 118 | //go:linkname _pthread_attr_init _pthread_attr_init | |
| 107 | 119 | var _pthread_attr_init uintptr | |
| 108 | 120 | var pthread_attr_initABI0 = uintptr(unsafe.Pointer(&_pthread_attr_init)) | |
| @@ -138,15 +150,3 @@ var pthread_attr_setstacksizeABI0 = uintptr(unsafe.Pointer(&_pthread_attr_setsta | |||
| 138 | 150 | //go:linkname _pthread_attr_destroy _pthread_attr_destroy | |
| 139 | 151 | var _pthread_attr_destroy uintptr | |
| 140 | 152 | var pthread_attr_destroyABI0 = uintptr(unsafe.Pointer(&_pthread_attr_destroy)) | |
| 141 | - | ||
| 142 | - | //go:linkname _sigfillset _sigfillset | |
| 143 | - | var _sigfillset uintptr | |
| 144 | - | var sigfillsetABI0 = uintptr(unsafe.Pointer(&_sigfillset)) | |
| 145 | - | ||
| 146 | - | //go:linkname _nanosleep _nanosleep | |
| 147 | - | var _nanosleep uintptr | |
| 148 | - | var nanosleepABI0 = uintptr(unsafe.Pointer(&_nanosleep)) | |
| 149 | - | ||
| 150 | - | //go:linkname _abort _abort | |
| 151 | - | var _abort uintptr | |
| 152 | - | var abortABI0 = uintptr(unsafe.Pointer(&_abort)) | |
| @@ -39,6 +39,18 @@ func unsetenv(name *byte) int32 { | |||||
| 39 | return int32(call5(unsetenvABI0, uintptr(unsafe.Pointer(name)), 0, 0, 0, 0)) | 39 | return int32(call5(unsetenvABI0, uintptr(unsafe.Pointer(name)), 0, 0, 0, 0)) | ||
| 40 | } | 40 | } | ||
| 41 | 41 | ||||
| 42 | + | func sigfillset(set *sigset_t) int32 { | |||
| 43 | + | return int32(call5(sigfillsetABI0, uintptr(unsafe.Pointer(set)), 0, 0, 0, 0)) | |||
| 44 | + | } | |||
| 45 | + | ||||
| 46 | + | func nanosleep(ts *syscall.Timespec, rem *syscall.Timespec) int32 { | |||
| 47 | + | return int32(call5(nanosleepABI0, uintptr(unsafe.Pointer(ts)), uintptr(unsafe.Pointer(rem)), 0, 0, 0)) | |||
| 48 | + | } | |||
| 49 | + | ||||
| 50 | + | func abort() { | |||
| 51 | + | call5(abortABI0, 0, 0, 0, 0, 0) | |||
| 52 | + | } | |||
| 53 | + | ||||
| 42 | func pthread_attr_init(attr *pthread_attr_t) int32 { | 54 | func pthread_attr_init(attr *pthread_attr_t) int32 { | ||
| 43 | return int32(call5(pthread_attr_initABI0, uintptr(unsafe.Pointer(attr)), 0, 0, 0, 0)) | 55 | return int32(call5(pthread_attr_initABI0, uintptr(unsafe.Pointer(attr)), 0, 0, 0, 0)) | ||
| 44 | } | 56 | } | ||
| @@ -75,18 +87,6 @@ func pthread_attr_destroy(attr *pthread_attr_t) int32 { | |||||
| 75 | return int32(call5(pthread_attr_destroyABI0, uintptr(unsafe.Pointer(attr)), 0, 0, 0, 0)) | 87 | return int32(call5(pthread_attr_destroyABI0, uintptr(unsafe.Pointer(attr)), 0, 0, 0, 0)) | ||
| 76 | } | 88 | } | ||
| 77 | 89 | ||||
| 78 | - | func sigfillset(set *sigset_t) int32 { | |||
| 79 | - | return int32(call5(sigfillsetABI0, uintptr(unsafe.Pointer(set)), 0, 0, 0, 0)) | |||
| 80 | - | } | |||
| 81 | - | ||||
| 82 | - | func nanosleep(ts *syscall.Timespec, rem *syscall.Timespec) int32 { | |||
| 83 | - | return int32(call5(nanosleepABI0, uintptr(unsafe.Pointer(ts)), uintptr(unsafe.Pointer(rem)), 0, 0, 0)) | |||
| 84 | - | } | |||
| 85 | - | ||||
| 86 | - | func abort() { | |||
| 87 | - | call5(abortABI0, 0, 0, 0, 0, 0) | |||
| 88 | - | } | |||
| 89 | - | ||||
| 90 | //go:linkname _malloc _malloc | 90 | //go:linkname _malloc _malloc | ||
| 91 | var _malloc uintptr | 91 | var _malloc uintptr | ||
| 92 | var mallocABI0 = uintptr(unsafe.Pointer(&_malloc)) | 92 | var mallocABI0 = uintptr(unsafe.Pointer(&_malloc)) | ||
| @@ -103,6 +103,18 @@ var setenvABI0 = uintptr(unsafe.Pointer(&_setenv)) | |||||
| 103 | var _unsetenv uintptr | 103 | var _unsetenv uintptr | ||
| 104 | var unsetenvABI0 = uintptr(unsafe.Pointer(&_unsetenv)) | 104 | var unsetenvABI0 = uintptr(unsafe.Pointer(&_unsetenv)) | ||
| 105 | 105 | ||||
| 106 | + | //go:linkname _sigfillset _sigfillset | |||
| 107 | + | var _sigfillset uintptr | |||
| 108 | + | var sigfillsetABI0 = uintptr(unsafe.Pointer(&_sigfillset)) | |||
| 109 | + | ||||
| 110 | + | //go:linkname _nanosleep _nanosleep | |||
| 111 | + | var _nanosleep uintptr | |||
| 112 | + | var nanosleepABI0 = uintptr(unsafe.Pointer(&_nanosleep)) | |||
| 113 | + | ||||
| 114 | + | //go:linkname _abort _abort | |||
| 115 | + | var _abort uintptr | |||
| 116 | + | var abortABI0 = uintptr(unsafe.Pointer(&_abort)) | |||
| 117 | + | ||||
| 106 | //go:linkname _pthread_attr_init _pthread_attr_init | 118 | //go:linkname _pthread_attr_init _pthread_attr_init | ||
| 107 | var _pthread_attr_init uintptr | 119 | var _pthread_attr_init uintptr | ||
| 108 | var pthread_attr_initABI0 = uintptr(unsafe.Pointer(&_pthread_attr_init)) | 120 | var pthread_attr_initABI0 = uintptr(unsafe.Pointer(&_pthread_attr_init)) | ||
| @@ -138,15 +150,3 @@ var pthread_attr_setstacksizeABI0 = uintptr(unsafe.Pointer(&_pthread_attr_setsta | |||||
| 138 | //go:linkname _pthread_attr_destroy _pthread_attr_destroy | 150 | //go:linkname _pthread_attr_destroy _pthread_attr_destroy | ||
| 139 | var _pthread_attr_destroy uintptr | 151 | var _pthread_attr_destroy uintptr | ||
| 140 | var pthread_attr_destroyABI0 = uintptr(unsafe.Pointer(&_pthread_attr_destroy)) | 152 | var pthread_attr_destroyABI0 = uintptr(unsafe.Pointer(&_pthread_attr_destroy)) | ||
| 141 | - | ||||
| 142 | - | //go:linkname _sigfillset _sigfillset | |||
| 143 | - | var _sigfillset uintptr | |||
| 144 | - | var sigfillsetABI0 = uintptr(unsafe.Pointer(&_sigfillset)) | |||
| 145 | - | ||||
| 146 | - | //go:linkname _nanosleep _nanosleep | |||
| 147 | - | var _nanosleep uintptr | |||
| 148 | - | var nanosleepABI0 = uintptr(unsafe.Pointer(&_nanosleep)) | |||
| 149 | - | ||||
| 150 | - | //go:linkname _abort _abort | |||
| 151 | - | var _abort uintptr | |||
| 152 | - | var abortABI0 = uintptr(unsafe.Pointer(&_abort)) | |||
M internal/fakecgo/symbols_darwin.go +10 -8
| @@ -1,3 +1,5 @@ | |||
| 1 | + | // Code generated by 'go generate' with gen.go. DO NOT EDIT. | |
| 2 | + | ||
| 1 | 3 | // SPDX-License-Identifier: Apache-2.0 | |
| 2 | 4 | // SPDX-FileCopyrightText: 2022 The Ebitengine Authors | |
| 3 | 5 | ||
| @@ -7,15 +9,15 @@ package fakecgo | |||
| 7 | 9 | //go:cgo_import_dynamic purego_free free "/usr/lib/libSystem.B.dylib" | |
| 8 | 10 | //go:cgo_import_dynamic purego_setenv setenv "/usr/lib/libSystem.B.dylib" | |
| 9 | 11 | //go:cgo_import_dynamic purego_unsetenv unsetenv "/usr/lib/libSystem.B.dylib" | |
| 10 | - | //go:cgo_import_dynamic purego_pthread_self pthread_self "/usr/lib/libSystem.B.dylib" | |
| 11 | - | //go:cgo_import_dynamic purego_pthread_get_stacksize_np pthread_get_stacksize_np "/usr/lib/libSystem.B.dylib" | |
| 12 | - | //go:cgo_import_dynamic purego_pthread_attr_setstacksize pthread_attr_setstacksize "/usr/lib/libSystem.B.dylib" | |
| 12 | + | //go:cgo_import_dynamic purego_sigfillset sigfillset "/usr/lib/libSystem.B.dylib" | |
| 13 | + | //go:cgo_import_dynamic purego_nanosleep nanosleep "/usr/lib/libSystem.B.dylib" | |
| 14 | + | //go:cgo_import_dynamic purego_abort abort "/usr/lib/libSystem.B.dylib" | |
| 13 | 15 | //go:cgo_import_dynamic purego_pthread_attr_init pthread_attr_init "/usr/lib/libSystem.B.dylib" | |
| 14 | 16 | //go:cgo_import_dynamic purego_pthread_create pthread_create "/usr/lib/libSystem.B.dylib" | |
| 15 | 17 | //go:cgo_import_dynamic purego_pthread_detach pthread_detach "/usr/lib/libSystem.B.dylib" | |
| 16 | - | //go:cgo_import_dynamic purego_pthread_attr_destroy pthread_attr_destroy "/usr/lib/libSystem.B.dylib" | |
| 17 | - | //go:cgo_import_dynamic purego_pthread_attr_getstacksize pthread_attr_getstacksize "/usr/lib/libSystem.B.dylib" | |
| 18 | 18 | //go:cgo_import_dynamic purego_pthread_sigmask pthread_sigmask "/usr/lib/libSystem.B.dylib" | |
| 19 | - | //go:cgo_import_dynamic purego_abort abort "/usr/lib/libSystem.B.dylib" | |
| 20 | - | //go:cgo_import_dynamic purego_sigfillset sigfillset "/usr/lib/libSystem.B.dylib" | |
| 21 | - | //go:cgo_import_dynamic purego_nanosleep nanosleep "/usr/lib/libSystem.B.dylib" | |
| 19 | + | //go:cgo_import_dynamic purego_pthread_self pthread_self "/usr/lib/libSystem.B.dylib" | |
| 20 | + | //go:cgo_import_dynamic purego_pthread_get_stacksize_np pthread_get_stacksize_np "/usr/lib/libSystem.B.dylib" | |
| 21 | + | //go:cgo_import_dynamic purego_pthread_attr_getstacksize pthread_attr_getstacksize "/usr/lib/libSystem.B.dylib" | |
| 22 | + | //go:cgo_import_dynamic purego_pthread_attr_setstacksize pthread_attr_setstacksize "/usr/lib/libSystem.B.dylib" | |
| 23 | + | //go:cgo_import_dynamic purego_pthread_attr_destroy pthread_attr_destroy "/usr/lib/libSystem.B.dylib" | |
| @@ -1,3 +1,5 @@ | |||||
| 1 | + | // Code generated by 'go generate' with gen.go. DO NOT EDIT. | |||
| 2 | + | ||||
| 1 | // SPDX-License-Identifier: Apache-2.0 | 3 | // SPDX-License-Identifier: Apache-2.0 | ||
| 2 | // SPDX-FileCopyrightText: 2022 The Ebitengine Authors | 4 | // SPDX-FileCopyrightText: 2022 The Ebitengine Authors | ||
| 3 | 5 | ||||
| @@ -7,15 +9,15 @@ package fakecgo | |||||
| 7 | //go:cgo_import_dynamic purego_free free "/usr/lib/libSystem.B.dylib" | 9 | //go:cgo_import_dynamic purego_free free "/usr/lib/libSystem.B.dylib" | ||
| 8 | //go:cgo_import_dynamic purego_setenv setenv "/usr/lib/libSystem.B.dylib" | 10 | //go:cgo_import_dynamic purego_setenv setenv "/usr/lib/libSystem.B.dylib" | ||
| 9 | //go:cgo_import_dynamic purego_unsetenv unsetenv "/usr/lib/libSystem.B.dylib" | 11 | //go:cgo_import_dynamic purego_unsetenv unsetenv "/usr/lib/libSystem.B.dylib" | ||
| 10 | - | //go:cgo_import_dynamic purego_pthread_self pthread_self "/usr/lib/libSystem.B.dylib" | 12 | + | //go:cgo_import_dynamic purego_sigfillset sigfillset "/usr/lib/libSystem.B.dylib" |
| 11 | - | //go:cgo_import_dynamic purego_pthread_get_stacksize_np pthread_get_stacksize_np "/usr/lib/libSystem.B.dylib" | 13 | + | //go:cgo_import_dynamic purego_nanosleep nanosleep "/usr/lib/libSystem.B.dylib" |
| 12 | - | //go:cgo_import_dynamic purego_pthread_attr_setstacksize pthread_attr_setstacksize "/usr/lib/libSystem.B.dylib" | 14 | + | //go:cgo_import_dynamic purego_abort abort "/usr/lib/libSystem.B.dylib" |
| 13 | //go:cgo_import_dynamic purego_pthread_attr_init pthread_attr_init "/usr/lib/libSystem.B.dylib" | 15 | //go:cgo_import_dynamic purego_pthread_attr_init pthread_attr_init "/usr/lib/libSystem.B.dylib" | ||
| 14 | //go:cgo_import_dynamic purego_pthread_create pthread_create "/usr/lib/libSystem.B.dylib" | 16 | //go:cgo_import_dynamic purego_pthread_create pthread_create "/usr/lib/libSystem.B.dylib" | ||
| 15 | //go:cgo_import_dynamic purego_pthread_detach pthread_detach "/usr/lib/libSystem.B.dylib" | 17 | //go:cgo_import_dynamic purego_pthread_detach pthread_detach "/usr/lib/libSystem.B.dylib" | ||
| 16 | - | //go:cgo_import_dynamic purego_pthread_attr_destroy pthread_attr_destroy "/usr/lib/libSystem.B.dylib" | |||
| 17 | - | //go:cgo_import_dynamic purego_pthread_attr_getstacksize pthread_attr_getstacksize "/usr/lib/libSystem.B.dylib" | |||
| 18 | //go:cgo_import_dynamic purego_pthread_sigmask pthread_sigmask "/usr/lib/libSystem.B.dylib" | 18 | //go:cgo_import_dynamic purego_pthread_sigmask pthread_sigmask "/usr/lib/libSystem.B.dylib" | ||
| 19 | - | //go:cgo_import_dynamic purego_abort abort "/usr/lib/libSystem.B.dylib" | 19 | + | //go:cgo_import_dynamic purego_pthread_self pthread_self "/usr/lib/libSystem.B.dylib" |
| 20 | - | //go:cgo_import_dynamic purego_sigfillset sigfillset "/usr/lib/libSystem.B.dylib" | 20 | + | //go:cgo_import_dynamic purego_pthread_get_stacksize_np pthread_get_stacksize_np "/usr/lib/libSystem.B.dylib" |
| 21 | - | //go:cgo_import_dynamic purego_nanosleep nanosleep "/usr/lib/libSystem.B.dylib" | 21 | + | //go:cgo_import_dynamic purego_pthread_attr_getstacksize pthread_attr_getstacksize "/usr/lib/libSystem.B.dylib" |
| 22 | + | //go:cgo_import_dynamic purego_pthread_attr_setstacksize pthread_attr_setstacksize "/usr/lib/libSystem.B.dylib" | |||
| 23 | + | //go:cgo_import_dynamic purego_pthread_attr_destroy pthread_attr_destroy "/usr/lib/libSystem.B.dylib" | |||
M internal/fakecgo/symbols_linux.go +14 -18
| @@ -1,27 +1,23 @@ | |||
| 1 | + | // Code generated by 'go generate' with gen.go. DO NOT EDIT. | |
| 2 | + | ||
| 1 | 3 | // SPDX-License-Identifier: Apache-2.0 | |
| 2 | 4 | // SPDX-FileCopyrightText: 2022 The Ebitengine Authors | |
| 3 | 5 | ||
| 4 | 6 | package fakecgo | |
| 5 | 7 | ||
| 6 | - | // pthread_attr_init will get us the wrong version on glibc - but this doesn't matter, since the memory we | |
| 7 | - | // provide is zeroed - which will lead the correct result again | |
| 8 | - | ||
| 9 | - | //go:cgo_import_dynamic purego_pthread_attr_init pthread_attr_init "libpthread.so.0" | |
| 10 | - | //go:cgo_import_dynamic purego_pthread_attr_getstacksize pthread_attr_getstacksize "libpthread.so.0" | |
| 11 | - | //go:cgo_import_dynamic purego_pthread_attr_destroy pthread_attr_destroy "libpthread.so.0" | |
| 12 | - | //go:cgo_import_dynamic purego_pthread_sigmask pthread_sigmask "libpthread.so.0" | |
| 13 | - | //go:cgo_import_dynamic purego_pthread_create pthread_create "libpthread.so.0" | |
| 14 | - | //go:cgo_import_dynamic purego_pthread_detach pthread_detach "libpthread.so.0" | |
| 15 | - | //go:cgo_import_dynamic purego_setenv setenv "libc.so.6" | |
| 16 | - | //go:cgo_import_dynamic purego_unsetenv unsetenv "libc.so.6" | |
| 17 | 8 | //go:cgo_import_dynamic purego_malloc malloc "libc.so.6" | |
| 18 | 9 | //go:cgo_import_dynamic purego_free free "libc.so.6" | |
| 19 | - | //go:cgo_import_dynamic purego_nanosleep nanosleep "libc.so.6" | |
| 10 | + | //go:cgo_import_dynamic purego_setenv setenv "libc.so.6" | |
| 11 | + | //go:cgo_import_dynamic purego_unsetenv unsetenv "libc.so.6" | |
| 20 | 12 | //go:cgo_import_dynamic purego_sigfillset sigfillset "libc.so.6" | |
| 13 | + | //go:cgo_import_dynamic purego_nanosleep nanosleep "libc.so.6" | |
| 21 | 14 | //go:cgo_import_dynamic purego_abort abort "libc.so.6" | |
| 22 | - | ||
| 23 | - | // on amd64 we don't need the following lines - on 386 we do... | |
| 24 | - | // anyway - with those lines the output is better (but doesn't matter) - without it on amd64 we get multiple DT_NEEDED with "libc.so.6" etc | |
| 25 | - | ||
| 26 | - | //go:cgo_import_dynamic _ _ "libpthread.so.0" | |
| 27 | - | //go:cgo_import_dynamic _ _ "libc.so.6" | |
| 15 | + | //go:cgo_import_dynamic purego_pthread_attr_init pthread_attr_init "libpthread.so.0" | |
| 16 | + | //go:cgo_import_dynamic purego_pthread_create pthread_create "libpthread.so.0" | |
| 17 | + | //go:cgo_import_dynamic purego_pthread_detach pthread_detach "libpthread.so.0" | |
| 18 | + | //go:cgo_import_dynamic purego_pthread_sigmask pthread_sigmask "libpthread.so.0" | |
| 19 | + | //go:cgo_import_dynamic purego_pthread_self pthread_self "libpthread.so.0" | |
| 20 | + | //go:cgo_import_dynamic purego_pthread_get_stacksize_np pthread_get_stacksize_np "libpthread.so.0" | |
| 21 | + | //go:cgo_import_dynamic purego_pthread_attr_getstacksize pthread_attr_getstacksize "libpthread.so.0" | |
| 22 | + | //go:cgo_import_dynamic purego_pthread_attr_setstacksize pthread_attr_setstacksize "libpthread.so.0" | |
| 23 | + | //go:cgo_import_dynamic purego_pthread_attr_destroy pthread_attr_destroy "libpthread.so.0" | |
| @@ -1,27 +1,23 @@ | |||||
| 1 | + | // Code generated by 'go generate' with gen.go. DO NOT EDIT. | |||
| 2 | + | ||||
| 1 | // SPDX-License-Identifier: Apache-2.0 | 3 | // SPDX-License-Identifier: Apache-2.0 | ||
| 2 | // SPDX-FileCopyrightText: 2022 The Ebitengine Authors | 4 | // SPDX-FileCopyrightText: 2022 The Ebitengine Authors | ||
| 3 | 5 | ||||
| 4 | package fakecgo | 6 | package fakecgo | ||
| 5 | 7 | ||||
| 6 | - | // pthread_attr_init will get us the wrong version on glibc - but this doesn't matter, since the memory we | |||
| 7 | - | // provide is zeroed - which will lead the correct result again | |||
| 8 | - | ||||
| 9 | - | //go:cgo_import_dynamic purego_pthread_attr_init pthread_attr_init "libpthread.so.0" | |||
| 10 | - | //go:cgo_import_dynamic purego_pthread_attr_getstacksize pthread_attr_getstacksize "libpthread.so.0" | |||
| 11 | - | //go:cgo_import_dynamic purego_pthread_attr_destroy pthread_attr_destroy "libpthread.so.0" | |||
| 12 | - | //go:cgo_import_dynamic purego_pthread_sigmask pthread_sigmask "libpthread.so.0" | |||
| 13 | - | //go:cgo_import_dynamic purego_pthread_create pthread_create "libpthread.so.0" | |||
| 14 | - | //go:cgo_import_dynamic purego_pthread_detach pthread_detach "libpthread.so.0" | |||
| 15 | - | //go:cgo_import_dynamic purego_setenv setenv "libc.so.6" | |||
| 16 | - | //go:cgo_import_dynamic purego_unsetenv unsetenv "libc.so.6" | |||
| 17 | //go:cgo_import_dynamic purego_malloc malloc "libc.so.6" | 8 | //go:cgo_import_dynamic purego_malloc malloc "libc.so.6" | ||
| 18 | //go:cgo_import_dynamic purego_free free "libc.so.6" | 9 | //go:cgo_import_dynamic purego_free free "libc.so.6" | ||
| 19 | - | //go:cgo_import_dynamic purego_nanosleep nanosleep "libc.so.6" | 10 | + | //go:cgo_import_dynamic purego_setenv setenv "libc.so.6" |
| 11 | + | //go:cgo_import_dynamic purego_unsetenv unsetenv "libc.so.6" | |||
| 20 | //go:cgo_import_dynamic purego_sigfillset sigfillset "libc.so.6" | 12 | //go:cgo_import_dynamic purego_sigfillset sigfillset "libc.so.6" | ||
| 13 | + | //go:cgo_import_dynamic purego_nanosleep nanosleep "libc.so.6" | |||
| 21 | //go:cgo_import_dynamic purego_abort abort "libc.so.6" | 14 | //go:cgo_import_dynamic purego_abort abort "libc.so.6" | ||
| 22 | - | 15 | + | //go:cgo_import_dynamic purego_pthread_attr_init pthread_attr_init "libpthread.so.0" | |
| 23 | - | // on amd64 we don't need the following lines - on 386 we do... | 16 | + | //go:cgo_import_dynamic purego_pthread_create pthread_create "libpthread.so.0" |
| 24 | - | // anyway - with those lines the output is better (but doesn't matter) - without it on amd64 we get multiple DT_NEEDED with "libc.so.6" etc | 17 | + | //go:cgo_import_dynamic purego_pthread_detach pthread_detach "libpthread.so.0" |
| 25 | - | 18 | + | //go:cgo_import_dynamic purego_pthread_sigmask pthread_sigmask "libpthread.so.0" | |
| 26 | - | //go:cgo_import_dynamic _ _ "libpthread.so.0" | 19 | + | //go:cgo_import_dynamic purego_pthread_self pthread_self "libpthread.so.0" |
| 27 | - | //go:cgo_import_dynamic _ _ "libc.so.6" | 20 | + | //go:cgo_import_dynamic purego_pthread_get_stacksize_np pthread_get_stacksize_np "libpthread.so.0" |
| 21 | + | //go:cgo_import_dynamic purego_pthread_attr_getstacksize pthread_attr_getstacksize "libpthread.so.0" | |||
| 22 | + | //go:cgo_import_dynamic purego_pthread_attr_setstacksize pthread_attr_setstacksize "libpthread.so.0" | |||
| 23 | + | //go:cgo_import_dynamic purego_pthread_attr_destroy pthread_attr_destroy "libpthread.so.0" | |||
M internal/fakecgo/trampolines_stubs.s +12 -12
| @@ -25,6 +25,18 @@ TEXT _unsetenv(SB), NOSPLIT, $0-0 | |||
| 25 | 25 | JMP purego_unsetenv(SB) | |
| 26 | 26 | RET | |
| 27 | 27 | ||
| 28 | + | TEXT _sigfillset(SB), NOSPLIT, $0-0 | |
| 29 | + | JMP purego_sigfillset(SB) | |
| 30 | + | RET | |
| 31 | + | ||
| 32 | + | TEXT _nanosleep(SB), NOSPLIT, $0-0 | |
| 33 | + | JMP purego_nanosleep(SB) | |
| 34 | + | RET | |
| 35 | + | ||
| 36 | + | TEXT _abort(SB), NOSPLIT, $0-0 | |
| 37 | + | JMP purego_abort(SB) | |
| 38 | + | RET | |
| 39 | + | ||
| 28 | 40 | TEXT _pthread_attr_init(SB), NOSPLIT, $0-0 | |
| 29 | 41 | JMP purego_pthread_attr_init(SB) | |
| 30 | 42 | RET | |
| @@ -60,15 +72,3 @@ TEXT _pthread_attr_setstacksize(SB), NOSPLIT, $0-0 | |||
| 60 | 72 | TEXT _pthread_attr_destroy(SB), NOSPLIT, $0-0 | |
| 61 | 73 | JMP purego_pthread_attr_destroy(SB) | |
| 62 | 74 | RET | |
| 63 | - | ||
| 64 | - | TEXT _sigfillset(SB), NOSPLIT, $0-0 | |
| 65 | - | JMP purego_sigfillset(SB) | |
| 66 | - | RET | |
| 67 | - | ||
| 68 | - | TEXT _nanosleep(SB), NOSPLIT, $0-0 | |
| 69 | - | JMP purego_nanosleep(SB) | |
| 70 | - | RET | |
| 71 | - | ||
| 72 | - | TEXT _abort(SB), NOSPLIT, $0-0 | |
| 73 | - | JMP purego_abort(SB) | |
| 74 | - | RET | |
| @@ -25,6 +25,18 @@ TEXT _unsetenv(SB), NOSPLIT, $0-0 | |||||
| 25 | JMP purego_unsetenv(SB) | 25 | JMP purego_unsetenv(SB) | ||
| 26 | RET | 26 | RET | ||
| 27 | 27 | ||||
| 28 | + | TEXT _sigfillset(SB), NOSPLIT, $0-0 | |||
| 29 | + | JMP purego_sigfillset(SB) | |||
| 30 | + | RET | |||
| 31 | + | ||||
| 32 | + | TEXT _nanosleep(SB), NOSPLIT, $0-0 | |||
| 33 | + | JMP purego_nanosleep(SB) | |||
| 34 | + | RET | |||
| 35 | + | ||||
| 36 | + | TEXT _abort(SB), NOSPLIT, $0-0 | |||
| 37 | + | JMP purego_abort(SB) | |||
| 38 | + | RET | |||
| 39 | + | ||||
| 28 | TEXT _pthread_attr_init(SB), NOSPLIT, $0-0 | 40 | TEXT _pthread_attr_init(SB), NOSPLIT, $0-0 | ||
| 29 | JMP purego_pthread_attr_init(SB) | 41 | JMP purego_pthread_attr_init(SB) | ||
| 30 | RET | 42 | RET | ||
| @@ -60,15 +72,3 @@ TEXT _pthread_attr_setstacksize(SB), NOSPLIT, $0-0 | |||||
| 60 | TEXT _pthread_attr_destroy(SB), NOSPLIT, $0-0 | 72 | TEXT _pthread_attr_destroy(SB), NOSPLIT, $0-0 | ||
| 61 | JMP purego_pthread_attr_destroy(SB) | 73 | JMP purego_pthread_attr_destroy(SB) | ||
| 62 | RET | 74 | RET | ||
| 63 | - | ||||
| 64 | - | TEXT _sigfillset(SB), NOSPLIT, $0-0 | |||
| 65 | - | JMP purego_sigfillset(SB) | |||
| 66 | - | RET | |||
| 67 | - | ||||
| 68 | - | TEXT _nanosleep(SB), NOSPLIT, $0-0 | |||
| 69 | - | JMP purego_nanosleep(SB) | |||
| 70 | - | RET | |||
| 71 | - | ||||
| 72 | - | TEXT _abort(SB), NOSPLIT, $0-0 | |||
| 73 | - | JMP purego_abort(SB) | |||
| 74 | - | RET | |||