diff --git a/src/cmd/go/build.go b/src/cmd/go/build.go index cfbf30d918b33f0382fa4f006be0dfc471a8c018..2ce968a46dc99d464410a8bcba264b6c2ba244b7 100644 --- a/src/cmd/go/build.go +++ b/src/cmd/go/build.go @@ -1903,7 +1903,7 @@ func (b *builder) gccArchArgs() []string { case "6": return []string{"-m64"} case "5": - return []string{"-marm", "-march=armv5t"} // not thumb + return []string{"-marm"} // not thumb } return nil } diff --git a/src/pkg/runtime/cgo/gcc_arm.S b/src/pkg/runtime/cgo/gcc_arm.S index cfe899b1d287b529785789ef0695f8a2135a8ee0..17e98d91f62748b9eaa505e845305de2e81c6976 100644 --- a/src/pkg/runtime/cgo/gcc_arm.S +++ b/src/pkg/runtime/cgo/gcc_arm.S @@ -11,6 +11,13 @@ #define EXT(s) s #endif +/* + * Because the assembler might target an earlier revision of the ISA + * by default, we must explicitly specify the ISA revision to ensure + * BLX is recognized as a valid instruction. + */ +.arch armv5t + /* * void crosscall_arm2(void (*fn)(void), void (*setmg_gcc)(void *m, void *g), void *m, void *g) *