Skip to content

Commit

Permalink
runtime: skip floating point hardware check on Android
Browse files Browse the repository at this point in the history
CL 33652 removed the fake auxv for Android, and replaced it with
a /proc/self/auxv fallback. When /proc/self/auxv is unreadable,
however, hardware capabilities detection won't work and the runtime
will mistakenly think that floating point hardware is unavailable.

Fix this by always assuming floating point hardware on Android.

Manually tested on a Nexus 5 running Android 6.0.1. I suspect the
android/arm builder has a readable /proc/self/auxv and therefore
does not trigger the failure mode.

Change-Id: I95c3873803f9e17333c6cb8b9ff2016723104085
Reviewed-on: https://go-review.googlesource.com/34641
Reviewed-by: Brad Fitzpatrick <[email protected]>
Reviewed-by: Minux Ma <[email protected]>
Run-TryBot: Elias Naur <[email protected]>
TryBot-Result: Gobot Gobot <[email protected]>
  • Loading branch information
Elias Naur committed Dec 22, 2016
1 parent 1719034 commit f419b56
Showing 1 changed file with 6 additions and 0 deletions.
6 changes: 6 additions & 0 deletions src/runtime/os_linux_arm.go
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,12 @@ var armArch uint8 = 6 // we default to ARMv6
var hwcap uint32 // set by setup_auxv

func checkgoarm() {
// On Android, /proc/self/auxv might be unreadable and hwcap won't
// reflect the CPU capabilities. Assume that every Android arm device
// has the necessary floating point hardware available.
if GOOS == "android" {
return
}
if goarm > 5 && hwcap&_HWCAP_VFP == 0 {
print("runtime: this CPU has no floating point hardware, so it cannot run\n")
print("this GOARM=", goarm, " binary. Recompile using GOARM=5.\n")
Expand Down

0 comments on commit f419b56

Please sign in to comment.