kito-cheng created this revision.
Herald added subscribers: vkmr, frasercrmck, evandro, luismarques, apazos, 
sameer.abuasal, s.egerton, Jim, benna, psnobl, jocewei, PkmX, the_o, 
brucehoult, MartinMosbeck, rogfer01, edward-jones, zzheng, jrtc27, shiva0217, 
niosHD, sabuasal, simoncook, johnrusso, rbar, asb.
kito-cheng requested review of this revision.
Herald added subscribers: cfe-commits, MaskRay.
Herald added a project: clang.

`-u` is a linker option used to pretend a symbol is undefined,
this option are common used for force pull-in weak symbol.

This option should pass to `ld`, and many other toolchain in Clang
like `tools::gnutools` has pass that too.


Repository:
  rG LLVM Github Monorepo

https://reviews.llvm.org/D105091

Files:
  clang/lib/Driver/ToolChains/RISCVToolchain.cpp
  clang/test/Driver/riscv-args.c


Index: clang/test/Driver/riscv-args.c
===================================================================
--- clang/test/Driver/riscv-args.c
+++ clang/test/Driver/riscv-args.c
@@ -5,3 +5,9 @@
 // RUN:   --gcc-toolchain= -Xlinker --defsym=FOO=10 -T a.lds %s 2>&1 \
 // RUN:   | FileCheck -check-prefix=CHECK-LD %s
 // CHECK-LD: {{.*}} "--defsym=FOO=10" {{.*}} "-T" "a.lds"
+
+// Make sure -u has passed to linker
+// RUN: %clang -### -target riscv32 \
+// RUN:   --gcc-toolchain= -u foo %s 2>&1 \
+// RUN:   | FileCheck -check-prefix=CHECK-U-LD %s
+// CHECK-U-LD: {{.*}} "-u" "foo"
Index: clang/lib/Driver/ToolChains/RISCVToolchain.cpp
===================================================================
--- clang/lib/Driver/ToolChains/RISCVToolchain.cpp
+++ clang/lib/Driver/ToolChains/RISCVToolchain.cpp
@@ -184,6 +184,7 @@
   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,


Index: clang/test/Driver/riscv-args.c
===================================================================
--- clang/test/Driver/riscv-args.c
+++ clang/test/Driver/riscv-args.c
@@ -5,3 +5,9 @@
 // RUN:   --gcc-toolchain= -Xlinker --defsym=FOO=10 -T a.lds %s 2>&1 \
 // RUN:   | FileCheck -check-prefix=CHECK-LD %s
 // CHECK-LD: {{.*}} "--defsym=FOO=10" {{.*}} "-T" "a.lds"
+
+// Make sure -u has passed to linker
+// RUN: %clang -### -target riscv32 \
+// RUN:   --gcc-toolchain= -u foo %s 2>&1 \
+// RUN:   | FileCheck -check-prefix=CHECK-U-LD %s
+// CHECK-U-LD: {{.*}} "-u" "foo"
Index: clang/lib/Driver/ToolChains/RISCVToolchain.cpp
===================================================================
--- clang/lib/Driver/ToolChains/RISCVToolchain.cpp
+++ clang/lib/Driver/ToolChains/RISCVToolchain.cpp
@@ -184,6 +184,7 @@
   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,
_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to