The checkgoarm function in libgo's runtime package is never called, and the whole point of that function is to verify a goarm variable that libgo never sets it. This patch removes the function. Committed to mainline.
Ian
Index: gcc/go/gofrontend/MERGE =================================================================== --- gcc/go/gofrontend/MERGE (revision 264813) +++ gcc/go/gofrontend/MERGE (working copy) @@ -1,4 +1,4 @@ -bde5ac90e0b4efdf3e9a4d72af4eb23250608611 +9f4cf23e716bcf65e071260afa032a64acd3fdde The first line of this file holds the git revision number of the last merge done from the gofrontend repository. Index: libgo/go/runtime/os_linux_arm.go =================================================================== --- libgo/go/runtime/os_linux_arm.go (revision 264813) +++ libgo/go/runtime/os_linux_arm.go (working copy) @@ -19,25 +19,6 @@ var armArch uint8 = 6 // we default to A var hwcap uint32 // set by archauxv var hardDiv bool // set if a hardware divider is available -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") - exit(1) - } - if goarm > 6 && hwcap&_HWCAP_VFPv3 == 0 { - print("runtime: this CPU has no VFPv3 floating point hardware, so it cannot run\n") - print("this GOARM=", goarm, " binary. Recompile using GOARM=5 or GOARM=6.\n") - exit(1) - } -} - func archauxv(tag, val uintptr) { switch tag { case _AT_RANDOM: