From: Nico Weber Date: Wed, 4 Apr 2012 23:00:14 +0000 (+0000) Subject: Honor -fno-pic, -fno-PIC, -fno-pie, -fno-PIE. X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=3953911de1e81aec780c00102b39a2bfac8f4734;p=clang Honor -fno-pic, -fno-PIC, -fno-pie, -fno-PIE. Review at http://lists.cs.uiuc.edu/pipermail/cfe-commits/Week-of-Mon-20120402/055759.html git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@154064 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/include/clang/Driver/Options.td b/include/clang/Driver/Options.td index 80f0ec193c..7875eae4b7 100644 --- a/include/clang/Driver/Options.td +++ b/include/clang/Driver/Options.td @@ -264,6 +264,7 @@ def emit_llvm : Flag<"-emit-llvm">, def exported__symbols__list : Separate<"-exported_symbols_list">; def e : JoinedOrSeparate<"-e">; def fPIC : Flag<"-fPIC">, Group; +def fno_PIC : Flag<"-fno-PIC">, Group; def fPIE : Flag<"-fPIE">, Group, Flags<[NoArgumentUnused]>; def fno_PIE : Flag<"-fno-PIE">, Group, Flags<[NoArgumentUnused]>; def faccess_control : Flag<"-faccess-control">, Group; @@ -497,6 +498,7 @@ def fpack_struct_EQ : Joined<"-fpack-struct=">, Group; def fpascal_strings : Flag<"-fpascal-strings">, Group; def fpch_preprocess : Flag<"-fpch-preprocess">, Group; def fpic : Flag<"-fpic">, Group; +def fno_pic : Flag<"-fno-pic">, Group; def fpie : Flag<"-fpie">, Group, Flags<[NoArgumentUnused]>; def fno_pie : Flag<"-fno-pie">, Group, Flags<[NoArgumentUnused]>; def fprofile_arcs : Flag<"-fprofile-arcs">, Group; diff --git a/lib/Driver/Tools.cpp b/lib/Driver/Tools.cpp index 84021084ca..4c4ab7bc98 100644 --- a/lib/Driver/Tools.cpp +++ b/lib/Driver/Tools.cpp @@ -1477,7 +1477,11 @@ void Clang::ConstructJob(Compilation &C, const JobAction &JA, Args.hasArg(options::OPT_fPIE) || Args.hasArg(options::OPT_fpie)); bool PICDisabled = (Args.hasArg(options::OPT_mkernel) || - Args.hasArg(options::OPT_static)); + Args.hasArg(options::OPT_static) || + Args.hasArg(options::OPT_fno_PIC) || + Args.hasArg(options::OPT_fno_pic) || + Args.hasArg(options::OPT_fno_PIE) || + Args.hasArg(options::OPT_fno_pie)); const char *Model = getToolChain().GetForcedPicModel(); if (!Model) { if (Args.hasArg(options::OPT_mdynamic_no_pic)) diff --git a/test/Driver/fno-pic.c b/test/Driver/fno-pic.c new file mode 100644 index 0000000000..5ec122850d --- /dev/null +++ b/test/Driver/fno-pic.c @@ -0,0 +1,5 @@ +// RUN: %clang -c %s -target i386-apple-darwin -### 2>&1 | FileCheck %s --check-prefix=PIC_ON_BY_DEFAULT +// PIC_ON_BY_DEFAULT: "-pic-level" "1" + +// RUN: %clang -c %s -target i386-apple-darwin -### -fno-pic 2>&1 | FileCheck %s --check-prefix=FNO_PIC +// FNO_PIC: "-mrelocation-model" "static"