llvm: Default to -mno-relax on RISC-V

Compiling on a RISC-V system fails with 'relocation R_RISCV_ALIGN
requires unimplemented linker relaxation; recompile with -mno-relax'.

Our default linker (ld.lld) doesn't support relaxation, so default to
no-relax so we don't generate object files the linker can't handle.

Reviewed by:	mhorne
Sponsored by:	Axiado
Differential Revision:	https://reviews.freebsd.org/D25210
This commit is contained in:
Kristof Provost 2020-06-16 18:39:56 +00:00
parent 95ef69c63c
commit 389f88cffd
Notes: svn2git 2020-12-20 02:59:44 +00:00
svn path=/head/; revision=362235

View File

@ -426,8 +426,9 @@ void riscv::getRISCVTargetFeatures(const Driver &D, const llvm::Triple &Triple,
if (Args.hasArg(options::OPT_ffixed_x31))
Features.push_back("+reserve-x31");
// -mrelax is default, unless -mno-relax is specified.
if (Args.hasFlag(options::OPT_mrelax, options::OPT_mno_relax, true))
// FreeBSD local, because ld.lld doesn't support relaxations
// -mno-relax is default, unless -mrelax is specified.
if (Args.hasFlag(options::OPT_mrelax, options::OPT_mno_relax, false))
Features.push_back("+relax");
else
Features.push_back("-relax");