New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

all: port to Windows/ARM32 #26148

Open
jordanrh1 opened this Issue Jun 29, 2018 · 22 comments

Comments

Projects
None yet
7 participants
@jordanrh1
Contributor

jordanrh1 commented Jun 29, 2018

Hi everyone, we will be submitting a patch in the near future that adds Windows/ARM32 support to GO. All but a few tests are passing, and this implementation has been used to compile GO itself and run Docker containers on Windows/ARM32. We look forward to working with the community to iron out the last remaining issues and get this merged!

@cznic

This comment has been minimized.

Contributor

cznic commented Jun 29, 2018

I'm curious why was the port developed out-of-tree? I'm asking because I'm afraid it's much more complicated to properly review such a big change, as an port to new architecture is, in a single CL.

In any case, please check https://github.com/golang/go/blob/master/CONTRIBUTING.md and the linked from there https://golang.org/doc/contribute.html for more details.

(Personal wish: Please spell the name of the language as 'Go'.)

@bcmills bcmills added this to the Unplanned milestone Jun 29, 2018

@alexbrainman

This comment has been minimized.

Member

alexbrainman commented Jun 29, 2018

@jordanrh1

This comment has been minimized.

Contributor

jordanrh1 commented Jun 30, 2018

@cznic We were under a tight deadline and did not know if it was feasible. This is the earliest I could engage the community. We can break down the change into smaller chunks if necessary.

@alexbrainman Thanks for the link. We are committed to meeting the requirements outlined in the doc.

@alexbrainman

This comment has been minimized.

Member

alexbrainman commented Jun 30, 2018

We are committed to meeting the requirements outlined in the doc.

SGTM.

Alex

@agnivade agnivade changed the title from Porting GO to Windows/ARM32 to all: port to Windows/ARM32 Jun 30, 2018

@ALTree ALTree added the OS-Windows label Jul 10, 2018

@gopherbot

This comment has been minimized.

gopherbot commented Jul 24, 2018

Change https://golang.org/cl/125643 mentions this issue: dashboard: add windows-arm builder

gopherbot pushed a commit to golang/build that referenced this issue Jul 24, 2018

dashboard: add windows-arm builder
Updates golang/go#26148

Change-Id: I23a2c7bd1c2f8f7c960aaedfe0dcdee4e11825ab
Reviewed-on: https://go-review.googlesource.com/125643
Reviewed-by: Andrew Bonventre <andybons@golang.org>
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>

jordanrh1 added a commit to jordanrh1/go that referenced this issue Jul 24, 2018

jordanrh1 added a commit to jordanrh1/go that referenced this issue Jul 24, 2018

jordanrh1 added a commit to jordanrh1/go that referenced this issue Jul 24, 2018

cmd/link: support windows/arm
Enable the Go linker to generate executables for windows/arm.

Generates PE relocation tables, which are used by Windows to
dynamically relocate the Go binary in memory. Windows on ARM
requires all modules to be relocatable, unlike x86/amd64 which are
permitted to have fixed base addresses.

Updates golang#26148

jordanrh1 added a commit to jordanrh1/go that referenced this issue Jul 24, 2018

debug/pe: support windows/arm
Enable 'go tool objdump' to disassemble windows/arm images.

Updates golang#26148

jordanrh1 added a commit to jordanrh1/go that referenced this issue Jul 24, 2018

runtime: add definitions for windows/arm
Must define 'overlapped' to avoid failure in API tests.

Updates golang#26148

jordanrh1 added a commit to jordanrh1/go that referenced this issue Jul 24, 2018

jordanrh1 added a commit to jordanrh1/go that referenced this issue Jul 24, 2018

jordanrh1 added a commit to jordanrh1/go that referenced this issue Jul 24, 2018

cmd/link: support windows/arm
Enable the Go linker to generate executables for windows/arm.

Generates PE relocation tables, which are used by Windows to
dynamically relocate the Go binary in memory. Windows on ARM
requires all modules to be relocatable, unlike x86/amd64 which are
permitted to have fixed base addresses.

Updates golang#26148

jordanrh1 added a commit to jordanrh1/go that referenced this issue Jul 24, 2018

debug/pe: support windows/arm
Enable 'go tool objdump' to disassemble windows/arm images.

Updates golang#26148
@gopherbot

This comment has been minimized.

gopherbot commented Jul 24, 2018

Change https://golang.org/cl/125648 mentions this issue: cmd/link: support windows/arm

@gopherbot

This comment has been minimized.

gopherbot commented Jul 24, 2018

Change https://golang.org/cl/125649 mentions this issue: debug/pe: support windows/arm

@gopherbot

This comment has been minimized.

gopherbot commented Jul 24, 2018

Change https://golang.org/cl/125645 mentions this issue: runtime: add definitions for windows/arm

@gopherbot

This comment has been minimized.

gopherbot commented Jul 24, 2018

Change https://golang.org/cl/125647 mentions this issue: cmd/api: support windows/arm

@gopherbot

This comment has been minimized.

gopherbot commented Jul 24, 2018

Change https://golang.org/cl/125646 mentions this issue: cmd/dist: support windows/arm

@gopherbot

This comment has been minimized.

gopherbot commented Aug 8, 2018

Change https://golang.org/cl/128715 mentions this issue: runtime: support windows/arm

@gopherbot

This comment has been minimized.

gopherbot commented Aug 8, 2018

Change https://golang.org/cl/128716 mentions this issue: syscall: support windows/arm

@bradfitz bradfitz modified the milestones: Unplanned, Go1.12 Aug 14, 2018

gopherbot pushed a commit that referenced this issue Aug 20, 2018

cmd/dist: support windows/arm
Updates #26148

Change-Id: I407481f9c0f8e3565dcfcbbc53e5aa7427d74680
Reviewed-on: https://go-review.googlesource.com/125646
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>

gopherbot pushed a commit that referenced this issue Aug 20, 2018

debug/pe: support windows/arm
Enable 'go tool objdump' to disassemble windows/arm images.

Updates #26148

Change-Id: I7d11226f01d92288061f8e25980334b9bd82c41f
Reviewed-on: https://go-review.googlesource.com/125649
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
@gopherbot

This comment has been minimized.

gopherbot commented Aug 20, 2018

Change https://golang.org/cl/130056 mentions this issue: cmd/dist: support windows/arm

gopherbot pushed a commit that referenced this issue Aug 20, 2018

cmd/dist: support windows/arm
Updates #26148

Change-Id: I4744ebcc77fda3acc1301a1d8857754c0ee797fa
Reviewed-on: https://go-review.googlesource.com/130056
Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>

gopherbot pushed a commit that referenced this issue Aug 21, 2018

cmd/link: support windows/arm
Enable the Go linker to generate executables for windows/arm.

Generates PE relocation tables, which are used by Windows to
dynamically relocate the Go binary in memory. Windows on ARM
requires all modules to be relocatable, unlike x86/amd64 which are
permitted to have fixed base addresses.

Updates #26148

Change-Id: Ie63964ff52c2377e121b2885e9d05ec3ed8dc1cd
Reviewed-on: https://go-review.googlesource.com/125648
Run-TryBot: Ian Lance Taylor <iant@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>

gopherbot pushed a commit that referenced this issue Aug 22, 2018

syscall: support windows/arm
Updates #26148

Change-Id: I008502232642237270b7c8a2efb4a378345d06fd
Reviewed-on: https://go-review.googlesource.com/128716
Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
Reviewed-by: Ian Lance Taylor <iant@golang.org>

jordanrh1 added a commit to jordanrh1/go that referenced this issue Aug 23, 2018

runtime: support windows/arm
Updates golang#26148

Change-Id: I8f68b2c926c7b11dc86c9664ed7ff2d2f78b64b4
@gopherbot

This comment has been minimized.

gopherbot commented Aug 24, 2018

Change https://golang.org/cl/131282 mentions this issue: cmd/vet: remove exclusions for callbackasm

gopherbot pushed a commit that referenced this issue Sep 18, 2018

runtime: support windows/arm
Updates #26148

Change-Id: I8f68b2c926c7b11dc86c9664ed7ff2d2f78b64b4
Reviewed-on: https://go-review.googlesource.com/128715
Run-TryBot: Ian Lance Taylor <iant@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Ian Lance Taylor <iant@golang.org>
@gopherbot

This comment has been minimized.

gopherbot commented Sep 24, 2018

Change https://golang.org/cl/127665 mentions this issue: windows: add support for windows/arm

gopherbot pushed a commit to golang/sys that referenced this issue Sep 24, 2018

windows: add support for windows/arm
Updates golang/go#26148

Change-Id: I0425244bfb0c8f600a6f02d9d7b228e175a720a4
Reviewed-on: https://go-review.googlesource.com/127665
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
@gopherbot

This comment has been minimized.

gopherbot commented Sep 24, 2018

Change https://golang.org/cl/137015 mentions this issue: cmd/vendor: update golang.org/x/sys/windows for windows/arm support

gopherbot pushed a commit that referenced this issue Sep 24, 2018

cmd/vendor: update golang.org/x/sys/windows for windows/arm support
Updates to golang.org/x/sys git rev 90868a75f.

Updates #26148

Change-Id: Ic687e7e0e171690e8d937c7bb29b0e55316f874a
Reviewed-on: https://go-review.googlesource.com/137015
Reviewed-by: Ian Lance Taylor <iant@golang.org>
@bcmills

This comment has been minimized.

Member

bcmills commented Nov 19, 2018

Sounds like the builder is still failing (#28854). @jordanrh1, what work remains to have this port stable for the release?

@jordanrh1

This comment has been minimized.

Contributor

jordanrh1 commented Nov 19, 2018

These are the failing runtime tests:

  • TestPanicInlined
  • TestAbort
  • TestArenaCollision (out of memory)
  • TestSmhasherTwoNonzero (out of memory)
  • TestSmhasherSparse
  • TestSmhasherPermutation
  • TestStackWrapperStackPanic/sigpanic/CallersFrames
  • TestNetpollDeadlock (out of memory)

Some are due to out of memory, and the rest I believe are due to issues with traceback.

It looks like there are some new failures in html/template.

@alexbrainman

This comment has been minimized.

Member

alexbrainman commented Nov 21, 2018

Some are due to out of memory,

I am pretty sure it is OK to skip tests that take too much memory on RPI.

and the rest I believe are due to issues with traceback.

Please, see if you can debug and fix it. Feel free to ask questions - everyone will help.

It looks like there are some new failures in html/template.

I can see from your comment #28854 (comment) it could be same bug.

Alex

komuw added a commit to komuw/go that referenced this issue Dec 4, 2018

cmd/dist: support windows/arm
Updates golang#26148

Change-Id: I407481f9c0f8e3565dcfcbbc53e5aa7427d74680
Reviewed-on: https://go-review.googlesource.com/125646
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>

komuw added a commit to komuw/go that referenced this issue Dec 4, 2018

debug/pe: support windows/arm
Enable 'go tool objdump' to disassemble windows/arm images.

Updates golang#26148

Change-Id: I7d11226f01d92288061f8e25980334b9bd82c41f
Reviewed-on: https://go-review.googlesource.com/125649
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>

komuw added a commit to komuw/go that referenced this issue Dec 4, 2018

cmd/dist: support windows/arm
Updates golang#26148

Change-Id: I4744ebcc77fda3acc1301a1d8857754c0ee797fa
Reviewed-on: https://go-review.googlesource.com/130056
Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>

komuw added a commit to komuw/go that referenced this issue Dec 4, 2018

cmd/link: support windows/arm
Enable the Go linker to generate executables for windows/arm.

Generates PE relocation tables, which are used by Windows to
dynamically relocate the Go binary in memory. Windows on ARM
requires all modules to be relocatable, unlike x86/amd64 which are
permitted to have fixed base addresses.

Updates golang#26148

Change-Id: Ie63964ff52c2377e121b2885e9d05ec3ed8dc1cd
Reviewed-on: https://go-review.googlesource.com/125648
Run-TryBot: Ian Lance Taylor <iant@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>

komuw added a commit to komuw/go that referenced this issue Dec 4, 2018

syscall: support windows/arm
Updates golang#26148

Change-Id: I008502232642237270b7c8a2efb4a378345d06fd
Reviewed-on: https://go-review.googlesource.com/128716
Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
Reviewed-by: Ian Lance Taylor <iant@golang.org>
@gopherbot

This comment has been minimized.

gopherbot commented Dec 11, 2018

Change https://golang.org/cl/153518 mentions this issue: builders: skip writing snapshop for windows/arm builder

@gopherbot

This comment has been minimized.

gopherbot commented Dec 11, 2018

Change https://golang.org/cl/153719 mentions this issue: runtime/pprof: fix TestCPUProfileWithFork on Windows/ARM

@gopherbot

This comment has been minimized.

gopherbot commented Dec 11, 2018

Change https://golang.org/cl/153718 mentions this issue: runtime: fix profiling on windows/ARM

gopherbot pushed a commit that referenced this issue Dec 12, 2018

runtime: fix profiling on windows/ARM
Fix profiling handler to get the correct g for the m being profiled.
Store a pointer to the TLS slot holding g in the thread's m. This
enables the profiling handler to get the current g for the thread,
even if the thread is executing external code or system code.

Updates #26148

Signed-off-by: Jordan Rhee <jordanrh@microsoft.com>

Change-Id: Ie061284c12341c76c7d96cc0c2d5bac969230829
Reviewed-on: https://go-review.googlesource.com/c/153718
Run-TryBot: Ian Lance Taylor <iant@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Ian Lance Taylor <iant@golang.org>

gopherbot pushed a commit that referenced this issue Dec 12, 2018

runtime/pprof: fix TestCPUProfileWithFork on Windows/ARM
Use smaller heap on Windows/ARM, which generally does not have
page file enabled and therefore has limited virtual address space.

Updates #26148

Signed-off-by: Jordan Rhee <jordanrh@microsoft.com>

Change-Id: I4030be24a10fab7b9b659e3736b7e83f10710bfa
Reviewed-on: https://go-review.googlesource.com/c/153719
Run-TryBot: Hyang-Ah Hana Kim <hyangah@gmail.com>
Reviewed-by: Ian Lance Taylor <iant@golang.org>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment