From: Dimitry Andric Date: Sun, 27 Dec 2015 10:36:44 +0000 (+0000) Subject: On {mips,mipsel,mips64,mips64el}-freebsd, we need to pass any -G option to the assembler. X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=451b776a1f477321cc1924088e933d130a7d2ae2;p=clang On {mips,mipsel,mips64,mips64el}-freebsd, we need to pass any -G option to the assembler. Summary: See also: https://sourceware.org/binutils/docs/as/MIPS-Options.html#index-g_t_0040code_007b_002dG_007d-option-_0028MIPS_0029-1392 Reviewers: theraven, atanasyan, brooks, emaste Subscribers: rnk, emaste, cfe-commits, seanbruno, dim Differential Revision: http://reviews.llvm.org/D10137 git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@256468 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/lib/Driver/Tools.cpp b/lib/Driver/Tools.cpp index e65a84cb26..d28825152e 100644 --- a/lib/Driver/Tools.cpp +++ b/lib/Driver/Tools.cpp @@ -7776,6 +7776,12 @@ void freebsd::Assembler::ConstructJob(Compilation &C, const JobAction &JA, else CmdArgs.push_back("-EL"); + if (Arg *A = Args.getLastArg(options::OPT_G)) { + StringRef v = A->getValue(); + CmdArgs.push_back(Args.MakeArgString("-G" + v)); + A->claim(); + } + AddAssemblerKPIC(getToolChain(), Args, CmdArgs); break; } diff --git a/test/Driver/freebsd-mips-as.c b/test/Driver/freebsd-mips-as.c index da2d1200c4..7555888e06 100644 --- a/test/Driver/freebsd-mips-as.c +++ b/test/Driver/freebsd-mips-as.c @@ -89,3 +89,9 @@ // RUN: -no-integrated-as -c %s 2>&1 \ // RUN: | FileCheck -check-prefix=MIPS-ALIAS-64R2 %s // MIPS-ALIAS-64R2: as{{(.exe)?}}" "-march" "mips64r2" "-mabi" "64" "-EB" +// +// RUN: %clang -target mips-unknown-freebsd -### \ +// RUN: -no-integrated-as -G0 -c %s 2>&1 \ +// RUN: | FileCheck -check-prefix=MIPS32-EB-AS-G0 %s +// MIPS32-EB-AS-G0: as{{(.exe)?}}" "-march" "mips32r2" "-mabi" "32" "-EB" "-G0" +// MIPS32-EB-AS-G0-NOT: "-KPIC"