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/
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);
_______________________________________________
cfe-commits mailing list
[email protected]
http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits

Reply via email to