arm: switch to hardfloat ABI for Linux

This avoids an error on the Raspberry Pi 3.
Этот коммит содержится в:
Ayke van Laethem 2019-02-14 11:40:27 +01:00 коммит произвёл Ron Evans
родитель 1c68da89af
коммит 9b4071237f
3 изменённых файлов: 11 добавлений и 8 удалений

Просмотреть файл

@ -18,9 +18,9 @@ addons:
- llvm-7-dev - llvm-7-dev
- clang-7 - clang-7
- libclang-7-dev - libclang-7-dev
- gcc-arm-linux-gnueabi - gcc-arm-linux-gnueabihf
- binutils-arm-none-eabi - binutils-arm-none-eabi
- libc6-dev-armel-cross - libc6-dev-armhf-cross
- gcc-aarch64-linux-gnu - gcc-aarch64-linux-gnu
- libc6-dev-arm64-cross - libc6-dev-arm64-cross
- qemu-system-arm - qemu-system-arm

Просмотреть файл

@ -68,7 +68,7 @@ func TestCompiler(t *testing.T) {
continue // TODO: improve CGo continue // TODO: improve CGo
} }
t.Run(path, func(t *testing.T) { t.Run(path, func(t *testing.T) {
runTest(path, tmpdir, "arm--linux-gnueabi", t) runTest(path, tmpdir, "arm--linux-gnueabihf", t)
}) })
} }
@ -78,7 +78,7 @@ func TestCompiler(t *testing.T) {
continue // TODO: improve CGo continue // TODO: improve CGo
} }
t.Run(path, func(t *testing.T) { t.Run(path, func(t *testing.T) {
runTest(path, tmpdir, "aarch64--linux-gnueabi", t) runTest(path, tmpdir, "aarch64--linux-gnu", t)
}) })
} }
} }

Просмотреть файл

@ -162,6 +162,9 @@ func LoadTarget(target string) (*TargetSpec, error) {
llvmarch = goarch llvmarch = goarch
} }
target = llvmarch + "--" + llvmos target = llvmarch + "--" + llvmos
if goarch == "arm" {
target += "-gnueabihf"
}
return defaultTarget(goos, goarch, target) return defaultTarget(goos, goarch, target)
} }
@ -226,10 +229,10 @@ func defaultTarget(goos, goarch, triple string) (*TargetSpec, error) {
if goarch != runtime.GOARCH { if goarch != runtime.GOARCH {
// Some educated guesses as to how to invoke helper programs. // Some educated guesses as to how to invoke helper programs.
if goarch == "arm" && goos == "linux" { if goarch == "arm" && goos == "linux" {
spec.Linker = "arm-linux-gnueabi-gcc" spec.Linker = "arm-linux-gnueabihf-gcc"
spec.Objcopy = "arm-linux-gnueabi-objcopy" spec.Objcopy = "arm-linux-gnueabihf-objcopy"
spec.GDB = "arm-linux-gnueabi-gdb" spec.GDB = "arm-linux-gnueabihf-gdb"
spec.Emulator = []string{"qemu-arm", "-L", "/usr/arm-linux-gnueabi"} spec.Emulator = []string{"qemu-arm", "-L", "/usr/arm-linux-gnueabihf"}
} }
if goarch == "arm64" && goos == "linux" { if goarch == "arm64" && goos == "linux" {
spec.Linker = "aarch64-linux-gnu-gcc" spec.Linker = "aarch64-linux-gnu-gcc"