[patch][Driver] -Bprefix option

David Fang fang at csl.cornell.edu
Fri Dec 13 10:43:02 PST 2013


Hi,
 	The attached patch adds help-text to clang -B, and also forwards 
-B to gcc in the Driver, which allows use of newer linker tools.

This would fix the issue I reported in 
http://llvm.org/bugs/show_bug.cgi?id=18238

Questions:
1) Should I do the same for the assembler? (commented out in patch)
2) How would you advise writing a host-independent test for this feature? 
Create directory with phony 'ld'?  Would -### or -v be sufficient to show 
that gcc/g++ is getting -B?

David


-- 
David Fang
http://www.csl.cornell.edu/~fang/
-------------- next part --------------
diff --git a/include/clang/Driver/Options.td b/include/clang/Driver/Options.td
index 091e25f..adf1c28 100644
--- a/include/clang/Driver/Options.td
+++ b/include/clang/Driver/Options.td
@@ -201,7 +201,8 @@ def _HASH_HASH_HASH : Flag<["-"], "###">, Flags<[DriverOption, CoreOption]>,
 def _DASH_DASH : Option<["--"], "", KIND_REMAINING_ARGS>,
     Flags<[DriverOption, CoreOption]>;
 def A : JoinedOrSeparate<["-"], "A">, Flags<[RenderJoined]>;
-def B : JoinedOrSeparate<["-"], "B">;
+def B : JoinedOrSeparate<["-"], "B">, Flags<[RenderJoined]>,
+  HelpText<"Add search paths for compiler executables (ld,as)">;
 def CC : Flag<["-"], "CC">, Flags<[CC1Option]>;
 def C : Flag<["-"], "C">, Flags<[CC1Option]>;
 def D : JoinedOrSeparate<["-"], "D">, Group<CompileOnly_Group>, Flags<[CC1Option]>;
diff --git a/lib/Driver/Tools.cpp b/lib/Driver/Tools.cpp
index c006939..e6a14b8 100644
--- a/lib/Driver/Tools.cpp
+++ b/lib/Driver/Tools.cpp
@@ -4658,6 +4658,9 @@ void darwin::Assemble::ConstructJob(Compilation &C, const JobAction &JA,
   // Derived from asm spec.
   AddDarwinArch(Args, CmdArgs);
 
+  // We probably want to allow use of newer assemblers.
+  // Args.AddAllArgs(CmdArgs, options::OPT_B);
+
   // Use -force_cpusubtype_ALL on x86 by default.
   if (getToolChain().getArch() == llvm::Triple::x86 ||
       getToolChain().getArch() == llvm::Triple::x86_64 ||
@@ -4950,6 +4974,7 @@ void darwin::Link::ConstructJob(Compilation &C, const JobAction &JA,
   // we follow suite for ease of comparison.
   AddLinkArgs(C, Args, CmdArgs, Inputs);
 
+  Args.AddAllArgs(CmdArgs, options::OPT_B);
   Args.AddAllArgs(CmdArgs, options::OPT_d_Flag);
   Args.AddAllArgs(CmdArgs, options::OPT_s);
   Args.AddAllArgs(CmdArgs, options::OPT_t);


More information about the cfe-commits mailing list