Skip to content

Fails to build for ARM: "selected processor lacks an FPU" #249

Closed
@xobs

Description

@xobs

Note: This bug is for backtrace-sys, however I'm unable to locate that repository -- the page at https://crates.io/crates/backtrace-sys links to here.

When attempting to build backtrace-rs for arm7-unknown-linux-musleabi, I get the error cargo:warning=cc1.exe: error: '-mfloat-abi=hard': selected processor lacks an FPU.

Full cargo output:

❯ cargo build --target=armv7-unknown-linux-musleabihf
   Compiling cc v1.0.42
   Compiling rustc-demangle v0.1.16
   Compiling libusb-sys v0.2.5 (D:\Code\Fomu\wishbone-adapter\wishbone-tool\libusb-sys)
   Compiling backtrace-sys v0.1.31
error: failed to run custom build command for `backtrace-sys v0.1.31`

Caused by:
  process didn't exit successfully: `D:\Code\Fomu\wishbone-adapter\wishbone-tool\target\debug\build\backtrace-sys-518864e4e1eb0544\build-script-build` (exit code: 1)
--- stdout
cargo:rustc-cfg=rbt
TARGET = Some("armv7-unknown-linux-musleabihf")
OPT_LEVEL = Some("0")
HOST = Some("x86_64-pc-windows-msvc")
CC_armv7-unknown-linux-musleabihf = None
CC_armv7_unknown_linux_musleabihf = None
TARGET_CC = None
CC = Some("arm-linux-musleabihf-gcc")
CFLAGS_armv7-unknown-linux-musleabihf = None
CFLAGS_armv7_unknown_linux_musleabihf = None
TARGET_CFLAGS = None
CFLAGS = None
CRATE_CC_NO_DEFAULTS = None
CARGO_CFG_TARGET_FEATURE = Some("crt-static")
running: "arm-linux-musleabihf-gcc" "-O0" "-ffunction-sections" "-fdata-sections" "-fPIC" "-static" "-march=armv7-a" "-I" "src/libbacktrace" "-I" "D:\\Code\\Fomu\\wishbone-adapter\\wishbone-tool\\target\\armv7-unknown-linux-musleabihf\\debug\\build\\backtrace-sys-8a0e27e4d3390088\\out" "-fvisibility=hidden" "-DBACKTRACE_ELF_SIZE=32" "-DBACKTRACE_SUPPORTED=1" "-DBACKTRACE_USES_MALLOC=1" "-DBACKTRACE_SUPPORTS_THREADS=0" "-DBACKTRACE_SUPPORTS_DATA=0" "-DHAVE_DL_ITERATE_PHDR=1" "-D_GNU_SOURCE=1" "-D_LARGE_FILES=1" "-Dbacktrace_full=__rbt_backtrace_full" "-Dbacktrace_dwarf_add=__rbt_backtrace_dwarf_add" "-Dbacktrace_initialize=__rbt_backtrace_initialize" "-Dbacktrace_pcinfo=__rbt_backtrace_pcinfo" "-Dbacktrace_syminfo=__rbt_backtrace_syminfo" "-Dbacktrace_get_view=__rbt_backtrace_get_view" "-Dbacktrace_release_view=__rbt_backtrace_release_view" "-Dbacktrace_alloc=__rbt_backtrace_alloc" "-Dbacktrace_free=__rbt_backtrace_free" "-Dbacktrace_vector_finish=__rbt_backtrace_vector_finish" "-Dbacktrace_vector_grow=__rbt_backtrace_vector_grow" "-Dbacktrace_vector_release=__rbt_backtrace_vector_release" "-Dbacktrace_close=__rbt_backtrace_close" "-Dbacktrace_open=__rbt_backtrace_open" "-Dbacktrace_print=__rbt_backtrace_print" "-Dbacktrace_simple=__rbt_backtrace_simple" "-Dbacktrace_qsort=__rbt_backtrace_qsort" "-Dbacktrace_create_state=__rbt_backtrace_create_state" "-Dbacktrace_uncompress_zdebug=__rbt_backtrace_uncompress_zdebug" "-Dmacho_get_view=__rbt_macho_get_view" "-Dmacho_symbol_type_relevant=__rbt_macho_symbol_type_relevant" "-Dmacho_get_commands=__rbt_macho_get_commands" "-Dmacho_try_dsym=__rbt_macho_try_dsym" "-Dmacho_try_dwarf=__rbt_macho_try_dwarf" "-Dmacho_get_addr_range=__rbt_macho_get_addr_range" "-Dmacho_get_uuid=__rbt_macho_get_uuid" "-Dmacho_add=__rbt_macho_add" "-Dmacho_add_symtab=__rbt_macho_add_symtab" "-Dmacho_file_to_host_u64=__rbt_macho_file_to_host_u64" "-Dmacho_file_to_host_u32=__rbt_macho_file_to_host_u32" "-Dmacho_file_to_host_u16=__rbt_macho_file_to_host_u16" "-o" "D:\\Code\\Fomu\\wishbone-adapter\\wishbone-tool\\target\\armv7-unknown-linux-musleabihf\\debug\\build\\backtrace-sys-8a0e27e4d3390088\\out\\src/libbacktrace\\alloc.o" "-c" "src/libbacktrace/alloc.c"
cargo:warning=cc1.exe: error: '-mfloat-abi=hard': selected processor lacks an FPU
exit code: 1

--- stderr


error occurred: Command "arm-linux-musleabihf-gcc" "-O0" "-ffunction-sections" "-fdata-sections" "-fPIC" "-static" "-march=armv7-a" "-I" "src/libbacktrace" "-I" "D:\\Code\\Fomu\\wishbone-adapter\\wishbone-tool\\target\\armv7-unknown-linux-musleabihf\\debug\\build\\backtrace-sys-8a0e27e4d3390088\\out" "-fvisibility=hidden" "-DBACKTRACE_ELF_SIZE=32" "-DBACKTRACE_SUPPORTED=1" "-DBACKTRACE_USES_MALLOC=1" "-DBACKTRACE_SUPPORTS_THREADS=0" "-DBACKTRACE_SUPPORTS_DATA=0" "-DHAVE_DL_ITERATE_PHDR=1" "-D_GNU_SOURCE=1" "-D_LARGE_FILES=1" "-Dbacktrace_full=__rbt_backtrace_full" "-Dbacktrace_dwarf_add=__rbt_backtrace_dwarf_add" "-Dbacktrace_initialize=__rbt_backtrace_initialize" "-Dbacktrace_pcinfo=__rbt_backtrace_pcinfo" "-Dbacktrace_syminfo=__rbt_backtrace_syminfo" "-Dbacktrace_get_view=__rbt_backtrace_get_view" "-Dbacktrace_release_view=__rbt_backtrace_release_view" "-Dbacktrace_alloc=__rbt_backtrace_alloc" "-Dbacktrace_free=__rbt_backtrace_free" "-Dbacktrace_vector_finish=__rbt_backtrace_vector_finish" "-Dbacktrace_vector_grow=__rbt_backtrace_vector_grow" "-Dbacktrace_vector_release=__rbt_backtrace_vector_release" "-Dbacktrace_close=__rbt_backtrace_close" "-Dbacktrace_open=__rbt_backtrace_open" "-Dbacktrace_print=__rbt_backtrace_print" "-Dbacktrace_simple=__rbt_backtrace_simple" "-Dbacktrace_qsort=__rbt_backtrace_qsort" "-Dbacktrace_create_state=__rbt_backtrace_create_state" "-Dbacktrace_uncompress_zdebug=__rbt_backtrace_uncompress_zdebug" "-Dmacho_get_view=__rbt_macho_get_view" "-Dmacho_symbol_type_relevant=__rbt_macho_symbol_type_relevant" "-Dmacho_get_commands=__rbt_macho_get_commands" "-Dmacho_try_dsym=__rbt_macho_try_dsym" "-Dmacho_try_dwarf=__rbt_macho_try_dwarf" "-Dmacho_get_addr_range=__rbt_macho_get_addr_range" "-Dmacho_get_uuid=__rbt_macho_get_uuid" "-Dmacho_add=__rbt_macho_add" "-Dmacho_add_symtab=__rbt_macho_add_symtab" "-Dmacho_file_to_host_u64=__rbt_macho_file_to_host_u64" "-Dmacho_file_to_host_u32=__rbt_macho_file_to_host_u32" "-Dmacho_file_to_host_u16=__rbt_macho_file_to_host_u16" "-o" "D:\\Code\\Fomu\\wishbone-adapter\\wishbone-tool\\target\\armv7-unknown-linux-musleabihf\\debug\\build\\backtrace-sys-8a0e27e4d3390088\\out\\src/libbacktrace\\alloc.o" "-c" "src/libbacktrace/alloc.c" with args "arm-linux-musleabihf-gcc" did not execute successfully (status code exit code: 1).



warning: build failed, waiting for other jobs to finish...
error: build failed
❯ 

Note that it is attempting to build with -march=armv7-a and -mfloat-abi=hard. It seems that as of https://gcc.gnu.org/viewcvs/gcc?view=revision&revision=262556 the armv7-a target no longer includes an FPU by default, and instead you need to specify -march=armv7-a+fp.

I am able to compile other software using build.rs where I have added the following to build.rs:

	if target_os == "linux" {
		if target_triple == "armv7-unknown-linux-musleabihf" {
			base_config.flag("-mfpu=neon");
		}
        }

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions