]> Cypherpunks repositories - gostls13.git/commitdiff
[dev.typeparams] runtime: crash the GC at clobberdead pointer on ARM64
authorCherry Mui <cherryyz@google.com>
Thu, 3 Jun 2021 16:26:18 +0000 (12:26 -0400)
committerCherry Mui <cherryyz@google.com>
Thu, 3 Jun 2021 20:00:56 +0000 (20:00 +0000)
Extend CL 310330 to ARM64, which now has clobberdead mode
implemented in the compiler.

Change-Id: I07f6951d81a0797ef7a74e48b79db5cea2bf876b
Reviewed-on: https://go-review.googlesource.com/c/go/+/324766
Trust: Cherry Mui <cherryyz@google.com>
Run-TryBot: Cherry Mui <cherryyz@google.com>
Reviewed-by: Michael Knyszek <mknyszek@google.com>
TryBot-Result: Go Bot <gobot@golang.org>

src/runtime/mbitmap.go

index 32b8db7a50282c70785615902af017232280bc35..819acf40bd6afa424c8361cbd1598ccaac907fed 100644 (file)
@@ -386,10 +386,10 @@ func findObject(p, refBase, refOff uintptr) (base uintptr, s *mspan, objIndex ui
        // If s is nil, the virtual address has never been part of the heap.
        // This pointer may be to some mmap'd region, so we allow it.
        if s == nil {
-               if GOARCH == "amd64" && p == clobberdeadPtr && debug.invalidptr != 0 {
-                       // Crash if clobberdeadPtr is seen. Only on AMD64 for now, as
-                       // it is the only platform where compiler's clobberdead mode is
-                       // implemented. On AMD64 clobberdeadPtr cannot be a valid address.
+               if (GOARCH == "amd64" || GOARCH == "arm64") && p == clobberdeadPtr && debug.invalidptr != 0 {
+                       // Crash if clobberdeadPtr is seen. Only on AMD64 and ARM64 for now,
+                       // as they are the only platform where compiler's clobberdead mode is
+                       // implemented. On these platforms clobberdeadPtr cannot be a valid address.
                        badPointer(s, p, refBase, refOff)
                }
                return