Skip to content
Failed

Changes

Summary

  1. configure: use cc as assembler with clang and for all FreeBSD platforms (#9437) (commit: 88a1bce) (details)
  2. Add riscv64 backend (commit: d6b3808) (details)
Commit 88a1bceb1b1aef7347055f82c963efdff037a083 by noreply
configure: use cc as assembler with clang and for all FreeBSD platforms (#9437)

In recent FreeBSD, `cc` is Clang and `ld` is LLD, the LLVM linker, but
`as` is still GNU binutils.  Moreover, Clang contains its own
assembler and does not call `as`.  Consequently, object files produced
by invoking `as` directly are slightly different from those produced
by `cc`.

This can cause obscure errors such as issue #9068: `ld -r` fails when
combining objects produced by `as` and objects produced by `cc`.

The workaround is to use `cc` as the assembler.  We already did that
for the ARM and ARM64 targets, but #9068 shows that it is necessary
for AMD64 too.  Just use `cc` as assembler for all FreeBSD targets.

Similar issues were reported under Linux when clang and LLD are used
instead of GCC and binutils.  We already used clang as the preprocessed
assembler in this case.  Also use clang as the assembler in this case.

Closes: #9068
(commit: 88a1bce)
The file was modifiedconfigure (diff)
The file was modifiedChanges (diff)
The file was modifiedconfigure.ac (diff)
The file was addedasmcomp/riscv/arch.ml
The file was addedasmcomp/riscv/CSE.ml
The file was modifiedconfigure.ac (diff)
The file was modifiedREADME.adoc (diff)
The file was addedasmcomp/riscv/scheduling.ml
The file was modifiedruntime/caml/stack.h (diff)
The file was addedruntime/riscv.S
The file was modifiedMakefile (diff)
The file was addedasmcomp/riscv/selection.ml
The file was addedtestsuite/tools/asmgen_riscv.S
The file was addedasmcomp/riscv/proc.ml
The file was addedasmcomp/riscv/emit.mlp
The file was modifiedconfigure (diff)
The file was addedasmcomp/riscv/reload.ml