diff --git a/recipes/wip/dev/lang/go/01_redox.patch b/recipes/wip/dev/lang/go/01_redox.patch index 66895a0f..aaa22459 100644 --- a/recipes/wip/dev/lang/go/01_redox.patch +++ b/recipes/wip/dev/lang/go/01_redox.patch @@ -1,6 +1,6 @@ diff -ruwN source/src/cmd/dist/build.go source-new/src/cmd/dist/build.go --- source/src/cmd/dist/build.go 2025-07-03 04:47:15.000000000 +0700 -+++ source-new/src/cmd/dist/build.go 2025-07-20 22:44:22.522527140 +0700 ++++ source-new/src/cmd/dist/build.go 2025-07-20 23:50:47.312425484 +0700 @@ -94,6 +94,7 @@ "wasip1", "linux", @@ -66,7 +66,7 @@ diff -ruwN source/src/cmd/dist/build.go source-new/src/cmd/dist/build.go "js/wasm": false, diff -ruwN source/src/cmd/go/go_test.go source-new/src/cmd/go/go_test.go --- source/src/cmd/go/go_test.go 2025-07-03 04:47:15.000000000 +0700 -+++ source-new/src/cmd/go/go_test.go 2025-07-20 23:14:12.602481300 +0700 ++++ source-new/src/cmd/go/go_test.go 2025-07-20 23:50:47.312425484 +0700 @@ -2081,7 +2081,7 @@ tg.run(args...) @@ -78,7 +78,7 @@ diff -ruwN source/src/cmd/go/go_test.go source-new/src/cmd/go/go_test.go t.Fatal(err) diff -ruwN source/src/cmd/go/internal/modindex/build.go source-new/src/cmd/go/internal/modindex/build.go --- source/src/cmd/go/internal/modindex/build.go 2025-07-03 04:47:15.000000000 +0700 -+++ source-new/src/cmd/go/internal/modindex/build.go 2025-07-20 23:27:26.452458389 +0700 ++++ source-new/src/cmd/go/internal/modindex/build.go 2025-07-20 23:50:47.312425484 +0700 @@ -873,6 +873,9 @@ if ctxt.GOOS == "android" && name == "linux" { return true @@ -91,7 +91,7 @@ diff -ruwN source/src/cmd/go/internal/modindex/build.go source-new/src/cmd/go/in } diff -ruwN source/src/cmd/go/internal/work/exec.go source-new/src/cmd/go/internal/work/exec.go --- source/src/cmd/go/internal/work/exec.go 2025-07-03 04:47:15.000000000 +0700 -+++ source-new/src/cmd/go/internal/work/exec.go 2025-07-20 23:28:05.892457627 +0700 ++++ source-new/src/cmd/go/internal/work/exec.go 2025-07-20 23:50:47.312425484 +0700 @@ -3056,7 +3056,7 @@ dynobj := objdir + "_cgo_.o" @@ -103,7 +103,7 @@ diff -ruwN source/src/cmd/go/internal/work/exec.go source-new/src/cmd/go/interna // this seems to be outdated, but we don't want to break existing builds depending on this (Issue 45940) diff -ruwN source/src/cmd/go/internal/work/init.go source-new/src/cmd/go/internal/work/init.go --- source/src/cmd/go/internal/work/init.go 2025-07-03 04:47:15.000000000 +0700 -+++ source-new/src/cmd/go/internal/work/init.go 2025-07-20 23:14:04.102481503 +0700 ++++ source-new/src/cmd/go/internal/work/init.go 2025-07-20 23:50:47.312425484 +0700 @@ -220,7 +220,7 @@ codegenArg = "-fPIC" } else { @@ -113,9 +113,38 @@ diff -ruwN source/src/cmd/go/internal/work/init.go source-new/src/cmd/go/interna codegenArg = "-shared" case "windows": // Do not add usual .exe suffix to the .dll file. +diff -ruwN source/src/cmd/go/testdata/script/cgo_suspect_flag_force_external.txt source-new/src/cmd/go/testdata/script/cgo_suspect_flag_force_external.txt +--- source/src/cmd/go/testdata/script/cgo_suspect_flag_force_external.txt 2025-07-03 04:47:15.000000000 +0700 ++++ source-new/src/cmd/go/testdata/script/cgo_suspect_flag_force_external.txt 2025-08-03 00:53:55.626580074 +0700 +@@ -39,7 +39,7 @@ + ! stderr preferlinkext + env CGO_CFLAGS=-flto + go build -x -n -o dummy.exe ./noUseOfCgo +-! stderr preferlinkext ++! stderr preferlinkextg + env CGO_CFLAGS= + + # Second build uses CGO, so we expect to see the token present in the +diff -ruwN source/src/cmd/internal/obj/x86/asm6.go source-new/src/cmd/internal/obj/x86/asm6.go +--- source/src/cmd/internal/obj/x86/asm6.go 2025-07-03 04:47:15.000000000 +0700 ++++ source-new/src/cmd/internal/obj/x86/asm6.go 2025-08-03 01:50:35.376496054 +0700 +@@ -28,6 +28,13 @@ + // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + // THE SOFTWARE. + ++// ------------------- HELP NEEDED FOR REDOX ------------------- ++// We need to write the definition for obj files in Redox!!!!!!! ++// Yes, Redox is using ELF but that ELF is different with Linux ++// As of current implemention, it emits Linux binaries instead ++// Please continue your work in this file if you know how to do it ++// ------------------------------------------------------------- ++ + package x86 + + import ( diff -ruwN source/src/cmd/internal/objabi/head.go source-new/src/cmd/internal/objabi/head.go --- source/src/cmd/internal/objabi/head.go 2025-07-03 04:47:15.000000000 +0700 -+++ source-new/src/cmd/internal/objabi/head.go 2025-07-20 23:13:51.872481802 +0700 ++++ source-new/src/cmd/internal/objabi/head.go 2025-07-20 23:50:47.312425484 +0700 @@ -63,7 +63,7 @@ *h = Hfreebsd case "js": @@ -125,9 +154,84 @@ diff -ruwN source/src/cmd/internal/objabi/head.go source-new/src/cmd/internal/ob *h = Hlinux case "netbsd": *h = Hnetbsd +diff -ruwN source/src/cmd/link/internal/amd64/obj.go source-new/src/cmd/link/internal/amd64/obj.go +--- source/src/cmd/link/internal/amd64/obj.go 2025-07-03 04:47:15.000000000 +0700 ++++ source-new/src/cmd/link/internal/amd64/obj.go 2025-08-03 01:04:51.706561825 +0700 +@@ -64,6 +64,7 @@ + ELF: ld.ELFArch{ + Linuxdynld: "/lib64/ld-linux-x86-64.so.2", + LinuxdynldMusl: "/lib/ld-musl-x86_64.so.1", ++ Redoxdynld: "/usr/lib/ld64.so.1", + Freebsddynld: "/libexec/ld-elf.so.1", + Openbsddynld: "/usr/libexec/ld.so", + Netbsddynld: "/libexec/ld.elf_so", +diff -ruwN source/src/cmd/link/internal/arm64/obj.go source-new/src/cmd/link/internal/arm64/obj.go +--- source/src/cmd/link/internal/arm64/obj.go 2025-07-03 04:47:15.000000000 +0700 ++++ source-new/src/cmd/link/internal/arm64/obj.go 2025-08-03 01:03:56.606564078 +0700 +@@ -61,6 +61,7 @@ + + ELF: ld.ELFArch{ + Androiddynld: "/system/bin/linker64", ++ Redoxdynld: "/usr/lib/ld64.so.1", + Linuxdynld: "/lib/ld-linux-aarch64.so.1", + LinuxdynldMusl: "/lib/ld-musl-aarch64.so.1", + +diff -ruwN source/src/cmd/link/internal/ld/elf.go source-new/src/cmd/link/internal/ld/elf.go +--- source/src/cmd/link/internal/ld/elf.go 2025-07-03 04:47:15.000000000 +0700 ++++ source-new/src/cmd/link/internal/ld/elf.go 2025-08-03 01:13:08.346551565 +0700 +@@ -197,6 +197,7 @@ + type ELFArch struct { + // TODO: Document these fields. + ++ Redoxdynld string + Androiddynld string + Linuxdynld string + LinuxdynldMusl string +@@ -204,6 +205,7 @@ + Netbsddynld string + Openbsddynld string + Dragonflydynld string ++ Redoxflydynld string + Solarisdynld string + + Reloc1 func(*Link, *OutBuf, *loader.Loader, loader.Sym, loader.ExtReloc, int, int64) bool +@@ -1939,6 +1941,11 @@ + if interpreter == "" { + Exitf("ELF interpreter not set") + } ++ } else if buildcfg.GOOS == "redox" { ++ interpreter = thearch.ELF.Redoxdynld ++ if interpreter == "" { ++ Exitf("ELF interpreter not set") ++ } + } else { + interpreter = thearch.ELF.Linuxdynld + // If interpreter does not exist, try musl instead. +diff -ruwN source/src/cmd/link/internal/riscv64/obj.go source-new/src/cmd/link/internal/riscv64/obj.go +--- source/src/cmd/link/internal/riscv64/obj.go 2025-07-03 04:47:15.000000000 +0700 ++++ source-new/src/cmd/link/internal/riscv64/obj.go 2025-08-03 01:05:35.886560535 +0700 +@@ -38,6 +38,7 @@ + Machoreloc1: machoreloc1, + + ELF: ld.ELFArch{ ++ Redoxdynld: "/usr/lib/ld64.so.1", + Linuxdynld: "/lib/ld.so.1", + + Freebsddynld: "/usr/libexec/ld-elf.so.1", +diff -ruwN source/src/cmd/link/internal/x86/obj.go source-new/src/cmd/link/internal/x86/obj.go +--- source/src/cmd/link/internal/x86/obj.go 2025-07-03 04:47:15.000000000 +0700 ++++ source-new/src/cmd/link/internal/x86/obj.go 2025-08-03 01:05:11.816561638 +0700 +@@ -59,6 +59,7 @@ + PEreloc1: pereloc1, + + ELF: ld.ELFArch{ ++ Redoxdynld: "/usr/lib/ld.so.1", + Linuxdynld: "/lib/ld-linux.so.2", + LinuxdynldMusl: "/lib/ld-musl-i386.so.1", + Freebsddynld: "/usr/libexec/ld-elf.so.1", diff -ruwN source/src/cmd/vendor/golang.org/x/telemetry/internal/telemetry/dir.go source-new/src/cmd/vendor/golang.org/x/telemetry/internal/telemetry/dir.go --- source/src/cmd/vendor/golang.org/x/telemetry/internal/telemetry/dir.go 2025-07-03 04:47:15.000000000 +0700 -+++ source-new/src/cmd/vendor/golang.org/x/telemetry/internal/telemetry/dir.go 2025-07-20 23:29:12.692455838 +0700 +`+++ source-new/src/cmd/vendor/golang.org/x/telemetry/internal/telemetry/dir.go 2025-07-20 23:50:47.312425484 +0700 @@ -155,6 +155,7 @@ runtime.GOOS == "openbsd" || // #60614 runtime.GOOS == "solaris" || // #60968 #60970 @@ -136,9 +240,33 @@ diff -ruwN source/src/cmd/vendor/golang.org/x/telemetry/internal/telemetry/dir.g runtime.GOOS == "illumos" || // #65544 // These platforms fundamentally can't be supported: runtime.GOOS == "js" || // #60971 +diff -ruwN source/src/crypto/internal/sysrand/internal/seccomp/seccomp_linux.go source-new/src/crypto/internal/sysrand/internal/seccomp/seccomp_linux.go +--- source/src/crypto/internal/sysrand/internal/seccomp/seccomp_linux.go 2025-07-03 04:47:15.000000000 +0700 ++++ source-new/src/crypto/internal/sysrand/internal/seccomp/seccomp_linux.go 2025-08-02 17:13:31.518836103 +0700 +@@ -2,6 +2,8 @@ + // Use of this source code is governed by a BSD-style + // license that can be found in the LICENSE file. + ++//go:build !linux ++ + package seccomp + + /* +diff -ruwN source/src/crypto/internal/sysrand/internal/seccomp/seccomp_unsupported.go source-new/src/crypto/internal/sysrand/internal/seccomp/seccomp_unsupported.go +--- source/src/crypto/internal/sysrand/internal/seccomp/seccomp_unsupported.go 2025-07-03 04:47:15.000000000 +0700 ++++ source-new/src/crypto/internal/sysrand/internal/seccomp/seccomp_unsupported.go 2025-08-02 17:13:37.268835776 +0700 +@@ -2,7 +2,7 @@ + // Use of this source code is governed by a BSD-style + // license that can be found in the LICENSE file. + +-//go:build !linux || !cgo ++//go:build !linux || !cgo || redox + + package seccomp + diff -ruwN source/src/go/build/build.go source-new/src/go/build/build.go --- source/src/go/build/build.go 2025-07-03 04:47:15.000000000 +0700 -+++ source-new/src/go/build/build.go 2025-07-20 22:44:22.522527140 +0700 ++++ source-new/src/go/build/build.go 2025-07-20 23:50:47.312425484 +0700 @@ -1971,6 +1971,9 @@ if ctxt.GOOS == "android" && name == "linux" { return true @@ -151,7 +279,7 @@ diff -ruwN source/src/go/build/build.go source-new/src/go/build/build.go } diff -ruwN source/src/internal/goos/gengoos.go source-new/src/internal/goos/gengoos.go --- source/src/internal/goos/gengoos.go 2025-07-03 04:47:15.000000000 +0700 -+++ source-new/src/internal/goos/gengoos.go 2025-07-20 22:44:22.522527140 +0700 ++++ source-new/src/internal/goos/gengoos.go 2025-07-20 23:50:47.312425484 +0700 @@ -43,6 +43,7 @@ var tags []string if target == "linux" { @@ -162,7 +290,7 @@ diff -ruwN source/src/internal/goos/gengoos.go source-new/src/internal/goos/geng tags = append(tags, "!illumos") // must explicitly exclude illumos for solaris diff -ruwN source/src/internal/goos/zgoos_aix.go source-new/src/internal/goos/zgoos_aix.go --- source/src/internal/goos/zgoos_aix.go 2025-07-03 04:47:15.000000000 +0700 -+++ source-new/src/internal/goos/zgoos_aix.go 2025-07-20 22:44:22.532527140 +0700 ++++ source-new/src/internal/goos/zgoos_aix.go 2025-07-20 23:50:47.312425484 +0700 @@ -20,6 +20,7 @@ const IsNetbsd = 0 const IsOpenbsd = 0 @@ -173,7 +301,7 @@ diff -ruwN source/src/internal/goos/zgoos_aix.go source-new/src/internal/goos/zg const IsWindows = 0 diff -ruwN source/src/internal/goos/zgoos_android.go source-new/src/internal/goos/zgoos_android.go --- source/src/internal/goos/zgoos_android.go 2025-07-03 04:47:15.000000000 +0700 -+++ source-new/src/internal/goos/zgoos_android.go 2025-07-20 22:44:22.532527140 +0700 ++++ source-new/src/internal/goos/zgoos_android.go 2025-07-20 23:50:47.312425484 +0700 @@ -20,6 +20,7 @@ const IsNetbsd = 0 const IsOpenbsd = 0 @@ -184,7 +312,7 @@ diff -ruwN source/src/internal/goos/zgoos_android.go source-new/src/internal/goo const IsWindows = 0 diff -ruwN source/src/internal/goos/zgoos_darwin.go source-new/src/internal/goos/zgoos_darwin.go --- source/src/internal/goos/zgoos_darwin.go 2025-07-03 04:47:15.000000000 +0700 -+++ source-new/src/internal/goos/zgoos_darwin.go 2025-07-20 22:44:22.532527140 +0700 ++++ source-new/src/internal/goos/zgoos_darwin.go 2025-07-20 23:50:47.312425484 +0700 @@ -20,6 +20,7 @@ const IsNetbsd = 0 const IsOpenbsd = 0 @@ -195,7 +323,7 @@ diff -ruwN source/src/internal/goos/zgoos_darwin.go source-new/src/internal/goos const IsWindows = 0 diff -ruwN source/src/internal/goos/zgoos_dragonfly.go source-new/src/internal/goos/zgoos_dragonfly.go --- source/src/internal/goos/zgoos_dragonfly.go 2025-07-03 04:47:15.000000000 +0700 -+++ source-new/src/internal/goos/zgoos_dragonfly.go 2025-07-20 22:44:22.532527140 +0700 ++++ source-new/src/internal/goos/zgoos_dragonfly.go 2025-07-20 23:50:47.312425484 +0700 @@ -20,6 +20,7 @@ const IsNetbsd = 0 const IsOpenbsd = 0 @@ -206,7 +334,7 @@ diff -ruwN source/src/internal/goos/zgoos_dragonfly.go source-new/src/internal/g const IsWindows = 0 diff -ruwN source/src/internal/goos/zgoos_freebsd.go source-new/src/internal/goos/zgoos_freebsd.go --- source/src/internal/goos/zgoos_freebsd.go 2025-07-03 04:47:15.000000000 +0700 -+++ source-new/src/internal/goos/zgoos_freebsd.go 2025-07-20 22:44:22.532527140 +0700 ++++ source-new/src/internal/goos/zgoos_freebsd.go 2025-07-20 23:50:47.312425484 +0700 @@ -20,6 +20,7 @@ const IsNetbsd = 0 const IsOpenbsd = 0 @@ -217,7 +345,7 @@ diff -ruwN source/src/internal/goos/zgoos_freebsd.go source-new/src/internal/goo const IsWindows = 0 diff -ruwN source/src/internal/goos/zgoos_hurd.go source-new/src/internal/goos/zgoos_hurd.go --- source/src/internal/goos/zgoos_hurd.go 2025-07-03 04:47:15.000000000 +0700 -+++ source-new/src/internal/goos/zgoos_hurd.go 2025-07-20 22:44:22.532527140 +0700 ++++ source-new/src/internal/goos/zgoos_hurd.go 2025-07-20 23:50:47.312425484 +0700 @@ -20,6 +20,7 @@ const IsNetbsd = 0 const IsOpenbsd = 0 @@ -228,7 +356,7 @@ diff -ruwN source/src/internal/goos/zgoos_hurd.go source-new/src/internal/goos/z const IsWindows = 0 diff -ruwN source/src/internal/goos/zgoos_illumos.go source-new/src/internal/goos/zgoos_illumos.go --- source/src/internal/goos/zgoos_illumos.go 2025-07-03 04:47:15.000000000 +0700 -+++ source-new/src/internal/goos/zgoos_illumos.go 2025-07-20 22:44:22.532527140 +0700 ++++ source-new/src/internal/goos/zgoos_illumos.go 2025-07-20 23:50:47.312425484 +0700 @@ -20,6 +20,7 @@ const IsNetbsd = 0 const IsOpenbsd = 0 @@ -239,7 +367,7 @@ diff -ruwN source/src/internal/goos/zgoos_illumos.go source-new/src/internal/goo const IsWindows = 0 diff -ruwN source/src/internal/goos/zgoos_ios.go source-new/src/internal/goos/zgoos_ios.go --- source/src/internal/goos/zgoos_ios.go 2025-07-03 04:47:15.000000000 +0700 -+++ source-new/src/internal/goos/zgoos_ios.go 2025-07-20 22:44:22.532527140 +0700 ++++ source-new/src/internal/goos/zgoos_ios.go 2025-07-20 23:50:47.322425484 +0700 @@ -20,6 +20,7 @@ const IsNetbsd = 0 const IsOpenbsd = 0 @@ -250,7 +378,7 @@ diff -ruwN source/src/internal/goos/zgoos_ios.go source-new/src/internal/goos/zg const IsWindows = 0 diff -ruwN source/src/internal/goos/zgoos_js.go source-new/src/internal/goos/zgoos_js.go --- source/src/internal/goos/zgoos_js.go 2025-07-03 04:47:15.000000000 +0700 -+++ source-new/src/internal/goos/zgoos_js.go 2025-07-20 22:44:22.532527140 +0700 ++++ source-new/src/internal/goos/zgoos_js.go 2025-07-20 23:50:47.322425484 +0700 @@ -20,6 +20,7 @@ const IsNetbsd = 0 const IsOpenbsd = 0 @@ -261,7 +389,7 @@ diff -ruwN source/src/internal/goos/zgoos_js.go source-new/src/internal/goos/zgo const IsWindows = 0 diff -ruwN source/src/internal/goos/zgoos_linux.go source-new/src/internal/goos/zgoos_linux.go --- source/src/internal/goos/zgoos_linux.go 2025-07-03 04:47:15.000000000 +0700 -+++ source-new/src/internal/goos/zgoos_linux.go 2025-07-20 22:44:22.532527140 +0700 ++++ source-new/src/internal/goos/zgoos_linux.go 2025-07-20 23:50:47.322425484 +0700 @@ -1,6 +1,6 @@ // Code generated by gengoos.go using 'go generate'. DO NOT EDIT. @@ -280,7 +408,7 @@ diff -ruwN source/src/internal/goos/zgoos_linux.go source-new/src/internal/goos/ const IsWindows = 0 diff -ruwN source/src/internal/goos/zgoos_netbsd.go source-new/src/internal/goos/zgoos_netbsd.go --- source/src/internal/goos/zgoos_netbsd.go 2025-07-03 04:47:15.000000000 +0700 -+++ source-new/src/internal/goos/zgoos_netbsd.go 2025-07-20 22:44:22.532527140 +0700 ++++ source-new/src/internal/goos/zgoos_netbsd.go 2025-07-20 23:50:47.322425484 +0700 @@ -20,6 +20,7 @@ const IsNetbsd = 1 const IsOpenbsd = 0 @@ -291,7 +419,7 @@ diff -ruwN source/src/internal/goos/zgoos_netbsd.go source-new/src/internal/goos const IsWindows = 0 diff -ruwN source/src/internal/goos/zgoos_openbsd.go source-new/src/internal/goos/zgoos_openbsd.go --- source/src/internal/goos/zgoos_openbsd.go 2025-07-03 04:47:15.000000000 +0700 -+++ source-new/src/internal/goos/zgoos_openbsd.go 2025-07-20 22:44:22.532527140 +0700 ++++ source-new/src/internal/goos/zgoos_openbsd.go 2025-07-20 23:50:47.322425484 +0700 @@ -20,6 +20,7 @@ const IsNetbsd = 0 const IsOpenbsd = 1 @@ -302,7 +430,7 @@ diff -ruwN source/src/internal/goos/zgoos_openbsd.go source-new/src/internal/goo const IsWindows = 0 diff -ruwN source/src/internal/goos/zgoos_plan9.go source-new/src/internal/goos/zgoos_plan9.go --- source/src/internal/goos/zgoos_plan9.go 2025-07-03 04:47:15.000000000 +0700 -+++ source-new/src/internal/goos/zgoos_plan9.go 2025-07-20 22:44:22.532527140 +0700 ++++ source-new/src/internal/goos/zgoos_plan9.go 2025-07-20 23:50:47.322425484 +0700 @@ -20,6 +20,7 @@ const IsNetbsd = 0 const IsOpenbsd = 0 @@ -313,7 +441,7 @@ diff -ruwN source/src/internal/goos/zgoos_plan9.go source-new/src/internal/goos/ const IsWindows = 0 diff -ruwN source/src/internal/goos/zgoos_redox.go source-new/src/internal/goos/zgoos_redox.go --- source/src/internal/goos/zgoos_redox.go 1970-01-01 07:00:00.000000000 +0700 -+++ source-new/src/internal/goos/zgoos_redox.go 2025-07-20 22:44:22.532527140 +0700 ++++ source-new/src/internal/goos/zgoos_redox.go 2025-07-20 23:50:47.322425484 +0700 @@ -0,0 +1,27 @@ +// Code generated by gengoos.go using 'go generate'. DO NOT EDIT. + @@ -344,7 +472,7 @@ diff -ruwN source/src/internal/goos/zgoos_redox.go source-new/src/internal/goos/ +const IsZos = 0 diff -ruwN source/src/internal/goos/zgoos_solaris.go source-new/src/internal/goos/zgoos_solaris.go --- source/src/internal/goos/zgoos_solaris.go 2025-07-03 04:47:15.000000000 +0700 -+++ source-new/src/internal/goos/zgoos_solaris.go 2025-07-20 22:44:22.532527140 +0700 ++++ source-new/src/internal/goos/zgoos_solaris.go 2025-07-20 23:50:47.322425484 +0700 @@ -20,6 +20,7 @@ const IsNetbsd = 0 const IsOpenbsd = 0 @@ -355,7 +483,7 @@ diff -ruwN source/src/internal/goos/zgoos_solaris.go source-new/src/internal/goo const IsWindows = 0 diff -ruwN source/src/internal/goos/zgoos_wasip1.go source-new/src/internal/goos/zgoos_wasip1.go --- source/src/internal/goos/zgoos_wasip1.go 2025-07-03 04:47:15.000000000 +0700 -+++ source-new/src/internal/goos/zgoos_wasip1.go 2025-07-20 22:44:22.532527140 +0700 ++++ source-new/src/internal/goos/zgoos_wasip1.go 2025-07-20 23:50:47.322425484 +0700 @@ -20,6 +20,7 @@ const IsNetbsd = 0 const IsOpenbsd = 0 @@ -366,7 +494,7 @@ diff -ruwN source/src/internal/goos/zgoos_wasip1.go source-new/src/internal/goos const IsWindows = 0 diff -ruwN source/src/internal/goos/zgoos_windows.go source-new/src/internal/goos/zgoos_windows.go --- source/src/internal/goos/zgoos_windows.go 2025-07-03 04:47:15.000000000 +0700 -+++ source-new/src/internal/goos/zgoos_windows.go 2025-07-20 22:44:22.532527140 +0700 ++++ source-new/src/internal/goos/zgoos_windows.go 2025-07-20 23:50:47.322425484 +0700 @@ -20,6 +20,7 @@ const IsNetbsd = 0 const IsOpenbsd = 0 @@ -377,7 +505,7 @@ diff -ruwN source/src/internal/goos/zgoos_windows.go source-new/src/internal/goo const IsWindows = 1 diff -ruwN source/src/internal/goos/zgoos_zos.go source-new/src/internal/goos/zgoos_zos.go --- source/src/internal/goos/zgoos_zos.go 2025-07-03 04:47:15.000000000 +0700 -+++ source-new/src/internal/goos/zgoos_zos.go 2025-07-20 22:44:22.532527140 +0700 ++++ source-new/src/internal/goos/zgoos_zos.go 2025-07-20 23:50:47.322425484 +0700 @@ -20,6 +20,7 @@ const IsNetbsd = 0 const IsOpenbsd = 0 @@ -388,8 +516,16 @@ diff -ruwN source/src/internal/goos/zgoos_zos.go source-new/src/internal/goos/zg const IsWindows = 0 diff -ruwN source/src/internal/platform/supported.go source-new/src/internal/platform/supported.go --- source/src/internal/platform/supported.go 2025-07-03 04:47:15.000000000 +0700 -+++ source-new/src/internal/platform/supported.go 2025-07-20 22:44:22.532527140 +0700 -@@ -209,7 +209,7 @@ ++++ source-new/src/internal/platform/supported.go 2025-08-02 18:27:27.688723910 +0700 +@@ -194,6 +194,7 @@ + "ios/amd64", "ios/arm64", + "aix/ppc64", + "openbsd/arm64", ++ "redox/386","redox/amd64","redox/arm64", + "windows/386", "windows/amd64", "windows/arm", "windows/arm64": + return true + } +@@ -209,7 +210,7 @@ case "plugin": switch platform { case "linux/amd64", "linux/arm", "linux/arm64", "linux/386", "linux/loong64", "linux/s390x", "linux/ppc64le", @@ -398,7 +534,15 @@ diff -ruwN source/src/internal/platform/supported.go source-new/src/internal/pla "darwin/amd64", "darwin/arm64", "freebsd/amd64": return true -@@ -237,7 +237,7 @@ +@@ -226,6 +227,7 @@ + case "android/arm64", + "darwin/amd64", "darwin/arm64", + "linux/amd64", "linux/arm64", "linux/ppc64le", ++ "redox/386","redox/amd64","redox/arm64", + "windows/386", "windows/amd64", "windows/arm", "windows/arm64": + return true + } +@@ -237,7 +239,7 @@ // so force the caller to pass that in to centralize that choice. func DefaultPIE(goos, goarch string, isRace bool) bool { switch goos { @@ -409,7 +553,7 @@ diff -ruwN source/src/internal/platform/supported.go source-new/src/internal/pla if isRace { diff -ruwN source/src/internal/platform/zosarch.go source-new/src/internal/platform/zosarch.go --- source/src/internal/platform/zosarch.go 2025-07-03 04:47:15.000000000 +0700 -+++ source-new/src/internal/platform/zosarch.go 2025-07-20 22:44:22.532527140 +0700 ++++ source-new/src/internal/platform/zosarch.go 2025-07-20 23:50:47.322425484 +0700 @@ -13,6 +13,9 @@ {"android", "amd64"}, {"android", "arm"}, @@ -432,7 +576,7 @@ diff -ruwN source/src/internal/platform/zosarch.go source-new/src/internal/platf {"dragonfly", "amd64"}: {CgoSupported: true}, diff -ruwN source/src/internal/poll/sendfile_unix.go source-new/src/internal/poll/sendfile_unix.go --- source/src/internal/poll/sendfile_unix.go 2025-07-03 04:47:15.000000000 +0700 -+++ source-new/src/internal/poll/sendfile_unix.go 2025-07-20 23:20:57.622471583 +0700 ++++ source-new/src/internal/poll/sendfile_unix.go 2025-07-20 23:50:47.322425484 +0700 @@ -28,7 +28,7 @@ // has not modified the source or destination, // and the caller should perform the copy using a fallback implementation. @@ -444,7 +588,7 @@ diff -ruwN source/src/internal/poll/sendfile_unix.go source-new/src/internal/pol // updates the position of the source after sending. diff -ruwN source/src/internal/syslist/syslist.go source-new/src/internal/syslist/syslist.go --- source/src/internal/syslist/syslist.go 2025-07-03 04:47:15.000000000 +0700 -+++ source-new/src/internal/syslist/syslist.go 2025-07-20 22:44:22.532527140 +0700 ++++ source-new/src/internal/syslist/syslist.go 2025-07-20 23:50:47.322425484 +0700 @@ -29,6 +29,7 @@ "netbsd": true, "openbsd": true, @@ -461,9 +605,88 @@ diff -ruwN source/src/internal/syslist/syslist.go source-new/src/internal/syslis "solaris": true, } +diff -ruwN source/src/net/cgo_stub.go source-new/src/net/cgo_stub.go +--- source/src/net/cgo_stub.go 2025-07-03 04:47:15.000000000 +0700 ++++ source-new/src/net/cgo_stub.go 2025-08-02 18:20:37.688742244 +0700 +@@ -9,7 +9,7 @@ + // (Darwin always provides the cgo functions, in cgo_unix_syscall.go) + // - on wasip1, where cgo is never available + +-//go:build (netgo && unix) || (unix && !cgo && !darwin) || js || wasip1 ++//go:build (netgo && unix) || (unix && !cgo && !darwin) || js || wasip1 || redox + + package net + +diff -ruwN source/src/net/cgo_unix.go source-new/src/net/cgo_unix.go +--- source/src/net/cgo_unix.go 2025-07-03 04:47:15.000000000 +0700 ++++ source-new/src/net/cgo_unix.go 2025-08-02 17:54:26.168771131 +0700 +@@ -7,7 +7,7 @@ + // Instead of C.foo it uses _C_foo, which is defined in either + // cgo_unix_cgo.go or cgo_unix_syscall.go + +-//go:build !netgo && ((cgo && unix) || darwin) ++//go:build !netgo && ((cgo && unix) || darwin) && !redox + + package net + +diff -ruwN source/src/net/cgo_unix_cgo_res.go source-new/src/net/cgo_unix_cgo_res.go +--- source/src/net/cgo_unix_cgo_res.go 2025-07-03 04:47:15.000000000 +0700 ++++ source-new/src/net/cgo_unix_cgo_res.go 2025-08-02 23:37:48.006690697 +0700 +@@ -4,7 +4,7 @@ + + // res_search, for cgo systems where that is thread-safe. + +-//go:build cgo && !netgo && (linux || openbsd) ++//go:build cgo && !netgo && (linux || openbsd) && !redox + + package net + +@@ -18,7 +18,7 @@ + #include + #include + +-#cgo !android,!openbsd LDFLAGS: -lresolv ++#cgo !android,!openbsd,!redox LDFLAGS: -lresolv + */ + import "C" + +diff -ruwN source/src/net/cgo_unix_cgo_resn.go source-new/src/net/cgo_unix_cgo_resn.go +--- source/src/net/cgo_unix_cgo_resn.go 2025-07-03 04:47:15.000000000 +0700 ++++ source-new/src/net/cgo_unix_cgo_resn.go 2025-08-02 23:37:55.206690614 +0700 +@@ -4,7 +4,7 @@ + + // res_nsearch, for cgo systems where that's available. + +-//go:build cgo && !netgo && unix && !(darwin || linux || openbsd) ++//go:build cgo && !netgo && unix && !(darwin || linux || openbsd || redox) + + package net + +@@ -18,7 +18,7 @@ + #include + #include + +-#cgo !aix,!dragonfly,!freebsd LDFLAGS: -lresolv ++#cgo !aix,!dragonfly,!freebsd,!redox LDFLAGS: -lresolv + */ + import "C" + +diff -ruwN source/src/os/user/cgo_lookup_unix.go source-new/src/os/user/cgo_lookup_unix.go +--- source/src/os/user/cgo_lookup_unix.go 2025-07-03 04:47:15.000000000 +0700 ++++ source-new/src/os/user/cgo_lookup_unix.go 2025-08-02 17:15:57.178834645 +0700 +@@ -194,7 +194,7 @@ + // Because we can't use cgo in tests: + func structPasswdForNegativeTest() _C_struct_passwd { + sp := _C_struct_passwd{} +- *_C_pw_uidp(&sp) = 1<<32 - 2 +- *_C_pw_gidp(&sp) = 1<<32 - 3 ++ *_C_pw_uidp(&sp) = 1<<31 - 2 ++ *_C_pw_gidp(&sp) = 1<<31 - 3 + return sp + } diff -ruwN source/src/runtime/cgo/cgo.go source-new/src/runtime/cgo/cgo.go --- source/src/runtime/cgo/cgo.go 2025-07-03 04:47:15.000000000 +0700 -+++ source-new/src/runtime/cgo/cgo.go 2025-07-20 22:44:22.532527140 +0700 ++++ source-new/src/runtime/cgo/cgo.go 2025-07-20 23:50:47.322425484 +0700 @@ -16,7 +16,8 @@ #cgo dragonfly LDFLAGS: -lpthread #cgo freebsd LDFLAGS: -lpthread @@ -476,7 +699,7 @@ diff -ruwN source/src/runtime/cgo/cgo.go source-new/src/runtime/cgo/cgo.go #cgo aix LDFLAGS: -Wl,-berok diff -ruwN source/src/runtime/pprof/pprof_rusage.go source-new/src/runtime/pprof/pprof_rusage.go --- source/src/runtime/pprof/pprof_rusage.go 2025-07-03 04:47:15.000000000 +0700 -+++ source-new/src/runtime/pprof/pprof_rusage.go 2025-07-20 22:49:29.702520564 +0700 ++++ source-new/src/runtime/pprof/pprof_rusage.go 2025-07-20 23:50:47.322425484 +0700 @@ -17,7 +17,7 @@ func addMaxRSS(w io.Writer) { var rssToBytes uintptr @@ -488,7 +711,7 @@ diff -ruwN source/src/runtime/pprof/pprof_rusage.go source-new/src/runtime/pprof rssToBytes = 1 diff -ruwN source/src/runtime/pprof/proto_test.go source-new/src/runtime/pprof/proto_test.go --- source/src/runtime/pprof/proto_test.go 2025-07-03 04:47:15.000000000 +0700 -+++ source-new/src/runtime/pprof/proto_test.go 2025-07-20 22:49:40.452520165 +0700 ++++ source-new/src/runtime/pprof/proto_test.go 2025-07-20 23:50:47.322425484 +0700 @@ -83,7 +83,7 @@ // to use in test profiles. func testPCs(t *testing.T) (addr1, addr2 uint64, map1, map2 *profile.Mapping) { @@ -500,7 +723,7 @@ diff -ruwN source/src/runtime/pprof/proto_test.go source-new/src/runtime/pprof/p if err != nil { diff -ruwN source/src/runtime/race/internal/amd64v1/doc.go source-new/src/runtime/race/internal/amd64v1/doc.go --- source/src/runtime/race/internal/amd64v1/doc.go 2025-07-03 04:47:15.000000000 +0700 -+++ source-new/src/runtime/race/internal/amd64v1/doc.go 2025-07-20 22:55:01.602514355 +0700 ++++ source-new/src/runtime/race/internal/amd64v1/doc.go 2025-07-20 23:50:47.322425484 +0700 @@ -5,6 +5,6 @@ // This package holds the race detector .syso for // amd64 architectures with GOAMD64 /dev/null; then +if ! command -v go &> /dev/null; then GO_TARBALL=go1.24.5.linux-$( [ "$(uname -m)" = "aarch64" ] && echo "arm64" || echo "amd64" ).tar.gz GO_DOWNLOAD_URL="https://dl.google.com/go/${GO_TARBALL}" echo "Installing Go..." @@ -23,27 +23,33 @@ fi # Go does not support out-of-tree builds :( rsync -a --delete "${COOKBOOK_SOURCE}/" ./ -export GOOS=redox +export GOHOSTOS=redox case "${TARGET}" in x86-unknown-redox) - export GOARCH=386 + export GOHOSTARCH=386 ;; x86_64-unknown-redox) - export GOARCH=amd64 + export GOHOSTARCH=amd64 ;; aarch64-unknown-redox) - export GOARCH=arm64 + export GOHOSTARCH=arm64 + ;; + riscv64-unknown-redox) +# TODO: Patches for this ARCH is not complete + export GOHOSTARCH=riscv64 ;; esac -export GOROOT_FINAL=${COOKBOOK_STAGE} +export GOOS=${GOHOSTOS} +export GOARCH=${GOHOSTARCH} + export CGO_ENABLED=1 -export CC_FOR_TARGET="${CC}" -export CXX_FOR_TARGET="${CXX}" +export CC_FOR_redox_${GOHOSTARCH}="${CC}" +export CXX_FOR_redox_${GOHOSTARCH}="${CXX}" # Don't poison the runtime tools (host -> host) unset AR AS CC CXX LD LDFLAGS NM OBJCOPY OBJDUMP RANLIB READELF STRIP -cd ./src -bash ./make.bash -v -bash run.bash --no-rebuild -"$GOTOOLDIR/dist" banner # print build info +(cd ./src && bash ./make.bash -v --no-banner) + +mkdir -p ${COOKBOOK_STAGE}/bin +rsync -a --delete "bin/redox_${GOHOSTARCH}/" ${COOKBOOK_STAGE}/bin """