]> granicus.if.org Git - clang/commitdiff
In the FreeBSD assembler driver, inform the sparc assembler that we're producing
authorRoman Divacky <rdivacky@freebsd.org>
Thu, 2 Jan 2014 15:13:18 +0000 (15:13 +0000)
committerRoman Divacky <rdivacky@freebsd.org>
Thu, 2 Jan 2014 15:13:18 +0000 (15:13 +0000)
PIC code.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@198311 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Driver/Tools.cpp

index 00ec3b09688724e283fde0d949e9bf868aa17843..d27bf4b18c165c16e1f25940450e1ee75a1370d1 100644 (file)
@@ -5850,6 +5850,19 @@ void freebsd::Assemble::ConstructJob(Compilation &C, const JobAction &JA,
     default:
       CmdArgs.push_back("-matpcs");
     }
+  } else if (getToolChain().getArch() == llvm::Triple::sparc ||
+            getToolChain().getArch() == llvm::Triple::sparcv9) {
+    Arg *LastPICArg = Args.getLastArg(options::OPT_fPIC, options::OPT_fno_PIC,
+                                      options::OPT_fpic, options::OPT_fno_pic,
+                                      options::OPT_fPIE, options::OPT_fno_PIE,
+                                      options::OPT_fpie, options::OPT_fno_pie);
+    if (LastPICArg &&
+        (LastPICArg->getOption().matches(options::OPT_fPIC) ||
+         LastPICArg->getOption().matches(options::OPT_fpic) ||
+         LastPICArg->getOption().matches(options::OPT_fPIE) ||
+         LastPICArg->getOption().matches(options::OPT_fpie))) {
+      CmdArgs.push_back("-KPIC");
+    }
   }
 
   Args.AddAllArgValues(CmdArgs, options::OPT_Wa_COMMA,