1 From d4872a014f47cd3109d2eaf1b2ffb5889640fff1 Mon Sep 17 00:00:00 2001 2 From: Simon Atanasyan <satanasyan (a] mips.com> 3 Date: Sat, 18 Aug 2012 22:24:18 +0800 4 Subject: [PATCH] MIPS: Pass -KPIC argument to MIPS assembler if necessary. 5 6 --- 7 llvm-3.1/tools/clang/lib/Driver/Tools.cpp | 12 ++++++++++++ 8 llvm-3.1/tools/clang/test/Driver/mips-as.c | 7 +++++++ 9 2 files changed, 19 insertions(+), 0 deletions(-) 10 11 diff --git a/llvm-3.1/tools/clang/lib/Driver/Tools.cpp b/llvm-3.1/tools/clang/lib/Driver/Tools.cpp 12 index 8ef16b5..d457a53 100644 13 --- a/llvm-3.1/tools/clang/lib/Driver/Tools.cpp 14 +++ b/llvm-3.1/tools/clang/lib/Driver/Tools.cpp 15 @@ -5089,6 +5089,18 @@ void linuxtools::Assemble::ConstructJob(Compilation &C, const JobAction &JA, 16 CmdArgs.push_back("-EB"); 17 else 18 CmdArgs.push_back("-EL"); 19 + 20 + Arg *LastPICArg = Args.getLastArg(options::OPT_fPIC, options::OPT_fno_PIC, 21 + options::OPT_fpic, options::OPT_fno_pic, 22 + options::OPT_fPIE, options::OPT_fno_PIE, 23 + options::OPT_fpie, options::OPT_fno_pie); 24 + if (LastPICArg && 25 + (LastPICArg->getOption().matches(options::OPT_fPIC) || 26 + LastPICArg->getOption().matches(options::OPT_fpic) || 27 + LastPICArg->getOption().matches(options::OPT_fPIE) || 28 + LastPICArg->getOption().matches(options::OPT_fpie))) { 29 + CmdArgs.push_back("-KPIC"); 30 + } 31 } 32 33 Args.AddLastArg(CmdArgs, options::OPT_march_EQ); 34 diff --git a/llvm-3.1/tools/clang/test/Driver/mips-as.c b/llvm-3.1/tools/clang/test/Driver/mips-as.c 35 index 44b8d8d..f905536 100644 36 --- a/llvm-3.1/tools/clang/test/Driver/mips-as.c 37 +++ b/llvm-3.1/tools/clang/test/Driver/mips-as.c 38 @@ -4,6 +4,13 @@ 39 // RUN: -no-integrated-as -c %s 2>&1 \ 40 // RUN: | FileCheck -check-prefix=MIPS32-EB-AS %s 41 // CHECK-MIPS32-EB-AS: as{{(.exe)?}}" "-march" "mips32" "-mabi" "32" "-EB" 42 +// CHECK-MIPS32-EB-AS-NOT: "-KPIC" 43 +// 44 +// RUN: %clang -target mips-linux-gnu -### \ 45 +// RUN: -no-integrated-as -fPIC -c %s 2>&1 \ 46 +// RUN: | FileCheck -check-prefix=MIPS32-EB-PIC %s 47 +// CHECK-MIPS32-EB-PIC: as{{(.exe)?}}" "-march" "mips32" "-mabi" "32" "-EB" 48 +// CHECK-MIPS32-EB-PIC: "-KPIC" 49 // 50 // RUN: %clang -target mipsel-linux-gnu -### \ 51 // RUN: -no-integrated-as -c %s 2>&1 \ 52 -- 53 1.7.7.3 54 55