From: Kito Cheng Date: Tue, 29 Jun 2021 07:23:55 +0000 (+0800) Subject: [RISCV] Pass -u to linker correctly. X-Git-Tag: llvmorg-14-init~1522 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=5635d2a56dab6dc64d3a3f185d68f676b81dc736;p=platform%2Fupstream%2Fllvm.git [RISCV] Pass -u to linker correctly. `-u` is a linker option used to pretend a symbol is undefined, this option are common used for forcing archive member extraction. This option should pass to `ld`, and many other toolchain in Clang like `tools::gnutools` has pass that too. Reviewed By: MaskRay Differential Revision: https://reviews.llvm.org/D105091 --- diff --git a/clang/lib/Driver/ToolChains/RISCVToolchain.cpp b/clang/lib/Driver/ToolChains/RISCVToolchain.cpp index 0b8c520..075c1dc 100644 --- a/clang/lib/Driver/ToolChains/RISCVToolchain.cpp +++ b/clang/lib/Driver/ToolChains/RISCVToolchain.cpp @@ -184,6 +184,7 @@ void RISCV::Linker::ConstructJob(Compilation &C, const JobAction &JA, AddLinkerInputs(ToolChain, Inputs, Args, CmdArgs, JA); Args.AddAllArgs(CmdArgs, options::OPT_L); + Args.AddAllArgs(CmdArgs, options::OPT_u); ToolChain.AddFilePathLibArgs(Args, CmdArgs); Args.AddAllArgs(CmdArgs, {options::OPT_T_Group, options::OPT_e, options::OPT_s, diff --git a/clang/test/Driver/riscv-args.c b/clang/test/Driver/riscv-args.c index 7b68df9..305a508 100644 --- a/clang/test/Driver/riscv-args.c +++ b/clang/test/Driver/riscv-args.c @@ -1,7 +1,6 @@ // Check the arguments are correctly passed // Make sure -T is the last with gcc-toolchain option -// RUN: %clang -### -target riscv32 \ -// RUN: --gcc-toolchain= -Xlinker --defsym=FOO=10 -T a.lds %s 2>&1 \ +// RUN: %clang -### -target riscv32 --gcc-toolchain= -Xlinker --defsym=FOO=10 -T a.lds -u foo %s 2>&1 \ // RUN: | FileCheck -check-prefix=CHECK-LD %s -// CHECK-LD: {{.*}} "--defsym=FOO=10" {{.*}} "-T" "a.lds" +// CHECK-LD: {{.*}} "--defsym=FOO=10" {{.*}} "-u" "foo" {{.*}} "-T" "a.lds"