rename libc_* to purego_* (#50)
While porting purego to Linux I discovered that I had missed the cgo_import_dynamic comment for pthread_sigmask. The reason purego was working was because the symbol is normally linked to in the runtime. I decided to make a unique name for the imported symbol so that we aren't relying on runtime behavior that can easily change.
- commit
- ec7a70a975491a130b940b79c9b41e66bcaba65f
- author
- TotallyGamerJet · · 2022-10-21 17:39 UTC
- committer
- GitHub · · 2022-10-21 17:39 UTC
- parent
- 7128aea
- signature
- GPG Unverified
4AEE18F83AFDEB23The key is unknown
4 files · +34 -33
M dlfcn_darwin.go +4 -4
| @@ -3,7 +3,7 @@ | |||
| 3 | 3 | ||
| 4 | 4 | package purego | |
| 5 | 5 | ||
| 6 | - | //go:cgo_import_dynamic _dlopen dlopen "/usr/lib/libSystem.B.dylib" | |
| 7 | - | //go:cgo_import_dynamic _dlsym dlsym "/usr/lib/libSystem.B.dylib" | |
| 8 | - | //go:cgo_import_dynamic _dlerror dlerror "/usr/lib/libSystem.B.dylib" | |
| 9 | - | //go:cgo_import_dynamic _dlclose dlclose "/usr/lib/libSystem.B.dylib" | |
| 6 | + | //go:cgo_import_dynamic purego_dlopen dlopen "/usr/lib/libSystem.B.dylib" | |
| 7 | + | //go:cgo_import_dynamic purego_dlsym dlsym "/usr/lib/libSystem.B.dylib" | |
| 8 | + | //go:cgo_import_dynamic purego_dlerror dlerror "/usr/lib/libSystem.B.dylib" | |
| 9 | + | //go:cgo_import_dynamic purego_dlclose dlclose "/usr/lib/libSystem.B.dylib" | |
| @@ -3,7 +3,7 @@ | |||||
| 3 | 3 | ||||
| 4 | package purego | 4 | package purego | ||
| 5 | 5 | ||||
| 6 | - | //go:cgo_import_dynamic _dlopen dlopen "/usr/lib/libSystem.B.dylib" | 6 | + | //go:cgo_import_dynamic purego_dlopen dlopen "/usr/lib/libSystem.B.dylib" |
| 7 | - | //go:cgo_import_dynamic _dlsym dlsym "/usr/lib/libSystem.B.dylib" | 7 | + | //go:cgo_import_dynamic purego_dlsym dlsym "/usr/lib/libSystem.B.dylib" |
| 8 | - | //go:cgo_import_dynamic _dlerror dlerror "/usr/lib/libSystem.B.dylib" | 8 | + | //go:cgo_import_dynamic purego_dlerror dlerror "/usr/lib/libSystem.B.dylib" |
| 9 | - | //go:cgo_import_dynamic _dlclose dlclose "/usr/lib/libSystem.B.dylib" | 9 | + | //go:cgo_import_dynamic purego_dlclose dlclose "/usr/lib/libSystem.B.dylib" |
M dlfcn_stubs.s +4 -4
| @@ -8,20 +8,20 @@ | |||
| 8 | 8 | ||
| 9 | 9 | // func dlopen(path *byte, mode int) (ret uintptr) | |
| 10 | 10 | TEXT dlopen(SB), NOSPLIT, $0-0 | |
| 11 | - | JMP _dlopen(SB) | |
| 11 | + | JMP purego_dlopen(SB) | |
| 12 | 12 | RET | |
| 13 | 13 | ||
| 14 | 14 | // func dlsym(handle uintptr, symbol *byte) (ret uintptr) | |
| 15 | 15 | TEXT dlsym(SB), NOSPLIT, $0-0 | |
| 16 | - | JMP _dlsym(SB) | |
| 16 | + | JMP purego_dlsym(SB) | |
| 17 | 17 | RET | |
| 18 | 18 | ||
| 19 | 19 | // func dlerror() (ret *byte) | |
| 20 | 20 | TEXT dlerror(SB), NOSPLIT, $0-0 | |
| 21 | - | JMP _dlerror(SB) | |
| 21 | + | JMP purego_dlerror(SB) | |
| 22 | 22 | RET | |
| 23 | 23 | ||
| 24 | 24 | // func dlclose(handle uintptr) (ret int) | |
| 25 | 25 | TEXT dlclose(SB), NOSPLIT, $0-0 | |
| 26 | - | JMP _dlclose(SB) | |
| 26 | + | JMP purego_dlclose(SB) | |
| 27 | 27 | RET | |
| @@ -8,20 +8,20 @@ | |||||
| 8 | 8 | ||||
| 9 | // func dlopen(path *byte, mode int) (ret uintptr) | 9 | // func dlopen(path *byte, mode int) (ret uintptr) | ||
| 10 | TEXT dlopen(SB), NOSPLIT, $0-0 | 10 | TEXT dlopen(SB), NOSPLIT, $0-0 | ||
| 11 | - | JMP _dlopen(SB) | 11 | + | JMP purego_dlopen(SB) |
| 12 | RET | 12 | RET | ||
| 13 | 13 | ||||
| 14 | // func dlsym(handle uintptr, symbol *byte) (ret uintptr) | 14 | // func dlsym(handle uintptr, symbol *byte) (ret uintptr) | ||
| 15 | TEXT dlsym(SB), NOSPLIT, $0-0 | 15 | TEXT dlsym(SB), NOSPLIT, $0-0 | ||
| 16 | - | JMP _dlsym(SB) | 16 | + | JMP purego_dlsym(SB) |
| 17 | RET | 17 | RET | ||
| 18 | 18 | ||||
| 19 | // func dlerror() (ret *byte) | 19 | // func dlerror() (ret *byte) | ||
| 20 | TEXT dlerror(SB), NOSPLIT, $0-0 | 20 | TEXT dlerror(SB), NOSPLIT, $0-0 | ||
| 21 | - | JMP _dlerror(SB) | 21 | + | JMP purego_dlerror(SB) |
| 22 | RET | 22 | RET | ||
| 23 | 23 | ||||
| 24 | // func dlclose(handle uintptr) (ret int) | 24 | // func dlclose(handle uintptr) (ret int) | ||
| 25 | TEXT dlclose(SB), NOSPLIT, $0-0 | 25 | TEXT dlclose(SB), NOSPLIT, $0-0 | ||
| 26 | - | JMP _dlclose(SB) | 26 | + | JMP purego_dlclose(SB) |
| 27 | RET | 27 | RET | ||
M internal/fakecgo/symbols_darwin.go +13 -12
| @@ -3,15 +3,16 @@ | |||
| 3 | 3 | ||
| 4 | 4 | package fakecgo | |
| 5 | 5 | ||
| 6 | - | //go:cgo_import_dynamic libc_malloc malloc "libSystem.dylib" | |
| 7 | - | //go:cgo_import_dynamic libc_free free "libSystem.dylib" | |
| 8 | - | //go:cgo_import_dynamic libc_setenv setenv "libSystem.dylib" | |
| 9 | - | //go:cgo_import_dynamic libc_unsetenv unsetenv "libSystem.dylib" | |
| 10 | - | //go:cgo_import_dynamic libc_pthread_attr_init pthread_attr_init "libSystem.dylib" | |
| 11 | - | //go:cgo_import_dynamic libc_pthread_create pthread_create "libSystem.dylib" | |
| 12 | - | //go:cgo_import_dynamic libc_pthread_detach pthread_detach "libSystem.dylib" | |
| 13 | - | //go:cgo_import_dynamic libc_pthread_attr_destroy pthread_attr_destroy "libSystem.dylib" | |
| 14 | - | //go:cgo_import_dynamic libc_pthread_attr_getstacksize pthread_attr_getstacksize "libSystem.dylib" | |
| 15 | - | //go:cgo_import_dynamic libc_abort abort "libSystem.dylib" | |
| 16 | - | //go:cgo_import_dynamic libc_sigfillset sigfillset "libSystem.dylib" | |
| 17 | - | //go:cgo_import_dynamic libc_nanosleep nanosleep "libSystem.dylib" | |
| 6 | + | //go:cgo_import_dynamic purego_malloc malloc "libSystem.dylib" | |
| 7 | + | //go:cgo_import_dynamic purego_free free "libSystem.dylib" | |
| 8 | + | //go:cgo_import_dynamic purego_setenv setenv "libSystem.dylib" | |
| 9 | + | //go:cgo_import_dynamic purego_unsetenv unsetenv "libSystem.dylib" | |
| 10 | + | //go:cgo_import_dynamic purego_pthread_attr_init pthread_attr_init "libSystem.dylib" | |
| 11 | + | //go:cgo_import_dynamic purego_pthread_create pthread_create "libSystem.dylib" | |
| 12 | + | //go:cgo_import_dynamic purego_pthread_detach pthread_detach "libSystem.dylib" | |
| 13 | + | //go:cgo_import_dynamic purego_pthread_attr_destroy pthread_attr_destroy "libSystem.dylib" | |
| 14 | + | //go:cgo_import_dynamic purego_pthread_attr_getstacksize pthread_attr_getstacksize "libSystem.dylib" | |
| 15 | + | //go:cgo_import_dynamic purego_pthread_sigmask pthread_sigmask "libSystem.dylib" | |
| 16 | + | //go:cgo_import_dynamic purego_abort abort "libSystem.dylib" | |
| 17 | + | //go:cgo_import_dynamic purego_sigfillset sigfillset "libSystem.dylib" | |
| 18 | + | //go:cgo_import_dynamic purego_nanosleep nanosleep "libSystem.dylib" | |
| @@ -3,15 +3,16 @@ | |||||
| 3 | 3 | ||||
| 4 | package fakecgo | 4 | package fakecgo | ||
| 5 | 5 | ||||
| 6 | - | //go:cgo_import_dynamic libc_malloc malloc "libSystem.dylib" | 6 | + | //go:cgo_import_dynamic purego_malloc malloc "libSystem.dylib" |
| 7 | - | //go:cgo_import_dynamic libc_free free "libSystem.dylib" | 7 | + | //go:cgo_import_dynamic purego_free free "libSystem.dylib" |
| 8 | - | //go:cgo_import_dynamic libc_setenv setenv "libSystem.dylib" | 8 | + | //go:cgo_import_dynamic purego_setenv setenv "libSystem.dylib" |
| 9 | - | //go:cgo_import_dynamic libc_unsetenv unsetenv "libSystem.dylib" | 9 | + | //go:cgo_import_dynamic purego_unsetenv unsetenv "libSystem.dylib" |
| 10 | - | //go:cgo_import_dynamic libc_pthread_attr_init pthread_attr_init "libSystem.dylib" | 10 | + | //go:cgo_import_dynamic purego_pthread_attr_init pthread_attr_init "libSystem.dylib" |
| 11 | - | //go:cgo_import_dynamic libc_pthread_create pthread_create "libSystem.dylib" | 11 | + | //go:cgo_import_dynamic purego_pthread_create pthread_create "libSystem.dylib" |
| 12 | - | //go:cgo_import_dynamic libc_pthread_detach pthread_detach "libSystem.dylib" | 12 | + | //go:cgo_import_dynamic purego_pthread_detach pthread_detach "libSystem.dylib" |
| 13 | - | //go:cgo_import_dynamic libc_pthread_attr_destroy pthread_attr_destroy "libSystem.dylib" | 13 | + | //go:cgo_import_dynamic purego_pthread_attr_destroy pthread_attr_destroy "libSystem.dylib" |
| 14 | - | //go:cgo_import_dynamic libc_pthread_attr_getstacksize pthread_attr_getstacksize "libSystem.dylib" | 14 | + | //go:cgo_import_dynamic purego_pthread_attr_getstacksize pthread_attr_getstacksize "libSystem.dylib" |
| 15 | - | //go:cgo_import_dynamic libc_abort abort "libSystem.dylib" | 15 | + | //go:cgo_import_dynamic purego_pthread_sigmask pthread_sigmask "libSystem.dylib" |
| 16 | - | //go:cgo_import_dynamic libc_sigfillset sigfillset "libSystem.dylib" | 16 | + | //go:cgo_import_dynamic purego_abort abort "libSystem.dylib" |
| 17 | - | //go:cgo_import_dynamic libc_nanosleep nanosleep "libSystem.dylib" | 17 | + | //go:cgo_import_dynamic purego_sigfillset sigfillset "libSystem.dylib" |
| 18 | + | //go:cgo_import_dynamic purego_nanosleep nanosleep "libSystem.dylib" | |||
M internal/fakecgo/trampolines_stubs_darwin.s +13 -13
| @@ -6,53 +6,53 @@ | |||
| 6 | 6 | // these stubs are here because it is not possible to go:linkname directly the C functions on darwin arm64 | |
| 7 | 7 | ||
| 8 | 8 | TEXT _malloc(SB), NOSPLIT, $0-0 | |
| 9 | - | JMP libc_malloc(SB) | |
| 9 | + | JMP purego_malloc(SB) | |
| 10 | 10 | RET | |
| 11 | 11 | ||
| 12 | 12 | TEXT _free(SB), NOSPLIT, $0-0 | |
| 13 | - | JMP libc_free(SB) | |
| 13 | + | JMP purego_free(SB) | |
| 14 | 14 | RET | |
| 15 | 15 | ||
| 16 | 16 | TEXT _setenv(SB), NOSPLIT, $0-0 | |
| 17 | - | JMP libc_setenv(SB) | |
| 17 | + | JMP purego_setenv(SB) | |
| 18 | 18 | RET | |
| 19 | 19 | ||
| 20 | 20 | TEXT _unsetenv(SB), NOSPLIT, $0-0 | |
| 21 | - | JMP libc_unsetenv(SB) | |
| 21 | + | JMP purego_unsetenv(SB) | |
| 22 | 22 | RET | |
| 23 | 23 | ||
| 24 | 24 | TEXT _pthread_attr_init(SB), NOSPLIT, $0-0 | |
| 25 | - | JMP libc_pthread_attr_init(SB) | |
| 25 | + | JMP purego_pthread_attr_init(SB) | |
| 26 | 26 | RET | |
| 27 | 27 | ||
| 28 | 28 | TEXT _pthread_create(SB), NOSPLIT, $0-0 | |
| 29 | - | JMP libc_pthread_create(SB) | |
| 29 | + | JMP purego_pthread_create(SB) | |
| 30 | 30 | RET | |
| 31 | 31 | ||
| 32 | 32 | TEXT _pthread_detach(SB), NOSPLIT, $0-12 | |
| 33 | - | JMP libc_pthread_detach(SB) | |
| 33 | + | JMP purego_pthread_detach(SB) | |
| 34 | 34 | RET | |
| 35 | 35 | ||
| 36 | 36 | TEXT _pthread_sigmask(SB), NOSPLIT, $0-0 | |
| 37 | - | JMP libc_pthread_sigmask(SB) | |
| 37 | + | JMP purego_pthread_sigmask(SB) | |
| 38 | 38 | RET | |
| 39 | 39 | ||
| 40 | 40 | TEXT _pthread_attr_getstacksize(SB), NOSPLIT, $0-0 | |
| 41 | - | JMP libc_pthread_attr_getstacksize(SB) | |
| 41 | + | JMP purego_pthread_attr_getstacksize(SB) | |
| 42 | 42 | RET | |
| 43 | 43 | ||
| 44 | 44 | TEXT _pthread_attr_destroy(SB), NOSPLIT, $0-0 | |
| 45 | - | JMP libc_pthread_attr_destroy(SB) | |
| 45 | + | JMP purego_pthread_attr_destroy(SB) | |
| 46 | 46 | RET | |
| 47 | 47 | ||
| 48 | 48 | TEXT _abort(SB), NOSPLIT, $0-0 | |
| 49 | - | JMP libc_abort(SB) | |
| 49 | + | JMP purego_abort(SB) | |
| 50 | 50 | RET | |
| 51 | 51 | ||
| 52 | 52 | TEXT _nanosleep(SB), NOSPLIT, $0-0 | |
| 53 | - | JMP libc_nanosleep(SB) | |
| 53 | + | JMP purego_nanosleep(SB) | |
| 54 | 54 | RET | |
| 55 | 55 | ||
| 56 | 56 | TEXT _sigfillset(SB), NOSPLIT, $0-12 | |
| 57 | - | CALL libc_sigfillset(SB) | |
| 57 | + | CALL purego_sigfillset(SB) | |
| 58 | 58 | RET | |
| @@ -6,53 +6,53 @@ | |||||
| 6 | // these stubs are here because it is not possible to go:linkname directly the C functions on darwin arm64 | 6 | // these stubs are here because it is not possible to go:linkname directly the C functions on darwin arm64 | ||
| 7 | 7 | ||||
| 8 | TEXT _malloc(SB), NOSPLIT, $0-0 | 8 | TEXT _malloc(SB), NOSPLIT, $0-0 | ||
| 9 | - | JMP libc_malloc(SB) | 9 | + | JMP purego_malloc(SB) |
| 10 | RET | 10 | RET | ||
| 11 | 11 | ||||
| 12 | TEXT _free(SB), NOSPLIT, $0-0 | 12 | TEXT _free(SB), NOSPLIT, $0-0 | ||
| 13 | - | JMP libc_free(SB) | 13 | + | JMP purego_free(SB) |
| 14 | RET | 14 | RET | ||
| 15 | 15 | ||||
| 16 | TEXT _setenv(SB), NOSPLIT, $0-0 | 16 | TEXT _setenv(SB), NOSPLIT, $0-0 | ||
| 17 | - | JMP libc_setenv(SB) | 17 | + | JMP purego_setenv(SB) |
| 18 | RET | 18 | RET | ||
| 19 | 19 | ||||
| 20 | TEXT _unsetenv(SB), NOSPLIT, $0-0 | 20 | TEXT _unsetenv(SB), NOSPLIT, $0-0 | ||
| 21 | - | JMP libc_unsetenv(SB) | 21 | + | JMP purego_unsetenv(SB) |
| 22 | RET | 22 | RET | ||
| 23 | 23 | ||||
| 24 | TEXT _pthread_attr_init(SB), NOSPLIT, $0-0 | 24 | TEXT _pthread_attr_init(SB), NOSPLIT, $0-0 | ||
| 25 | - | JMP libc_pthread_attr_init(SB) | 25 | + | JMP purego_pthread_attr_init(SB) |
| 26 | RET | 26 | RET | ||
| 27 | 27 | ||||
| 28 | TEXT _pthread_create(SB), NOSPLIT, $0-0 | 28 | TEXT _pthread_create(SB), NOSPLIT, $0-0 | ||
| 29 | - | JMP libc_pthread_create(SB) | 29 | + | JMP purego_pthread_create(SB) |
| 30 | RET | 30 | RET | ||
| 31 | 31 | ||||
| 32 | TEXT _pthread_detach(SB), NOSPLIT, $0-12 | 32 | TEXT _pthread_detach(SB), NOSPLIT, $0-12 | ||
| 33 | - | JMP libc_pthread_detach(SB) | 33 | + | JMP purego_pthread_detach(SB) |
| 34 | RET | 34 | RET | ||
| 35 | 35 | ||||
| 36 | TEXT _pthread_sigmask(SB), NOSPLIT, $0-0 | 36 | TEXT _pthread_sigmask(SB), NOSPLIT, $0-0 | ||
| 37 | - | JMP libc_pthread_sigmask(SB) | 37 | + | JMP purego_pthread_sigmask(SB) |
| 38 | RET | 38 | RET | ||
| 39 | 39 | ||||
| 40 | TEXT _pthread_attr_getstacksize(SB), NOSPLIT, $0-0 | 40 | TEXT _pthread_attr_getstacksize(SB), NOSPLIT, $0-0 | ||
| 41 | - | JMP libc_pthread_attr_getstacksize(SB) | 41 | + | JMP purego_pthread_attr_getstacksize(SB) |
| 42 | RET | 42 | RET | ||
| 43 | 43 | ||||
| 44 | TEXT _pthread_attr_destroy(SB), NOSPLIT, $0-0 | 44 | TEXT _pthread_attr_destroy(SB), NOSPLIT, $0-0 | ||
| 45 | - | JMP libc_pthread_attr_destroy(SB) | 45 | + | JMP purego_pthread_attr_destroy(SB) |
| 46 | RET | 46 | RET | ||
| 47 | 47 | ||||
| 48 | TEXT _abort(SB), NOSPLIT, $0-0 | 48 | TEXT _abort(SB), NOSPLIT, $0-0 | ||
| 49 | - | JMP libc_abort(SB) | 49 | + | JMP purego_abort(SB) |
| 50 | RET | 50 | RET | ||
| 51 | 51 | ||||
| 52 | TEXT _nanosleep(SB), NOSPLIT, $0-0 | 52 | TEXT _nanosleep(SB), NOSPLIT, $0-0 | ||
| 53 | - | JMP libc_nanosleep(SB) | 53 | + | JMP purego_nanosleep(SB) |
| 54 | RET | 54 | RET | ||
| 55 | 55 | ||||
| 56 | TEXT _sigfillset(SB), NOSPLIT, $0-12 | 56 | TEXT _sigfillset(SB), NOSPLIT, $0-12 | ||
| 57 | - | CALL libc_sigfillset(SB) | 57 | + | CALL purego_sigfillset(SB) |
| 58 | RET | 58 | RET | ||