Skip to content

Commit

Permalink
[RISCV] Propagate -mabi and -march values to GNU assembler.
Browse files Browse the repository at this point in the history
When using -fno-integrated-as flag, the gnu assembler produces code
with some default march/mabi which later causes linker failure due
to incompatible mabi/march.

In this patch we explicitly propagate -mabi and -march flags to the
GNU assembler.

In this patch we explicitly propagate -mabi and -march flags to the GNU assembler.

Differential Revision: https://reviews.llvm.org/D41271

llvm-svn: 322769
  • Loading branch information
Ana Pazos committed Jan 17, 2018
1 parent 6ae8abf commit f4b1c00
Show file tree
Hide file tree
Showing 3 changed files with 27 additions and 0 deletions.
12 changes: 12 additions & 0 deletions clang/lib/Driver/ToolChains/Gnu.cpp
Expand Up @@ -629,6 +629,18 @@ void tools::gnutools::Assembler::ConstructJob(Compilation &C,
ppc::getPPCAsmModeForCPU(getCPUName(Args, getToolChain().getTriple())));
break;
}
case llvm::Triple::riscv32:
case llvm::Triple::riscv64: {
StringRef ABIName = riscv::getRISCVABI(Args, getToolChain().getTriple());
CmdArgs.push_back("-mabi");
CmdArgs.push_back(ABIName.data());
if (const Arg *A = Args.getLastArg(options::OPT_march_EQ)) {
StringRef MArch = A->getValue();
CmdArgs.push_back("-march");
CmdArgs.push_back(MArch.data());
}
break;
}
case llvm::Triple::sparc:
case llvm::Triple::sparcel: {
CmdArgs.push_back("-32");
Expand Down
@@ -0,0 +1 @@
#!/bin/true
14 changes: 14 additions & 0 deletions clang/test/Driver/riscv-gnutools.c
@@ -0,0 +1,14 @@
// Check gnutools are invoked with propagated values for -mabi and -march.

// RUN: %clang -target riscv32-linux-unknown-elf -fno-integrated-as \
// RUN: --gcc-toolchain=%S/Inputs/multilib_riscv_linux_sdk \
// RUN: --sysroot=%S/Inputs/multilib_riscv_linux_sdk/sysroot %s -### \
// RUN: 2>&1 | FileCheck -check-prefix=MABI-ILP32 %s
// RUN: %clang -target riscv32-linux-unknown-elf -fno-integrated-as \
// RUN: -march=rv32g --gcc-toolchain=%S/Inputs/multilib_riscv_linux_sdk \
// RUN: --sysroot=%S/Inputs/multilib_riscv_linux_sdk/sysroot %s -### \
// RUN: 2>&1 | FileCheck -check-prefix=MABI-ILP32-MARCH-G %s

// MABI-ILP32: "{{.*}}/Inputs/multilib_riscv_linux_sdk/lib/gcc/riscv64-unknown-linux-gnu/7.2.0/../../../../riscv64-unknown-linux-gnu/bin{{/|\\\\}}as" "-mabi" "ilp32"
// MABI-ILP32-MARCH-G: "{{.*}}/Inputs/multilib_riscv_linux_sdk/lib/gcc/riscv64-unknown-linux-gnu/7.2.0/../../../../riscv64-unknown-linux-gnu/bin{{/|\\\\}}as" "-mabi" "ilp32" "-march" "rv32g"

0 comments on commit f4b1c00

Please sign in to comment.