diff options
author | Nico Weber <nicolasweber@gmx.de> | 2012-04-04 23:00:14 +0000 |
---|---|---|
committer | Nico Weber <nicolasweber@gmx.de> | 2012-04-04 23:00:14 +0000 |
commit | bea0d04f8c7ca6512650464543779d851819d467 (patch) | |
tree | 49b08b2e84abbb9f9c1ec37a913729e035f7f7f2 | |
parent | b2d30b8699fc5920cce40a1c6ab96afb0b1ca9fc (diff) | |
download | bcm5719-llvm-bea0d04f8c7ca6512650464543779d851819d467.tar.gz bcm5719-llvm-bea0d04f8c7ca6512650464543779d851819d467.zip |
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
llvm-svn: 154064
-rw-r--r-- | clang/include/clang/Driver/Options.td | 2 | ||||
-rw-r--r-- | clang/lib/Driver/Tools.cpp | 6 | ||||
-rw-r--r-- | clang/test/Driver/fno-pic.c | 5 |
3 files changed, 12 insertions, 1 deletions
diff --git a/clang/include/clang/Driver/Options.td b/clang/include/clang/Driver/Options.td index 80f0ec193ce..7875eae4b74 100644 --- a/clang/include/clang/Driver/Options.td +++ b/clang/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<f_Group>; +def fno_PIC : Flag<"-fno-PIC">, Group<f_Group>; def fPIE : Flag<"-fPIE">, Group<f_Group>, Flags<[NoArgumentUnused]>; def fno_PIE : Flag<"-fno-PIE">, Group<f_Group>, Flags<[NoArgumentUnused]>; def faccess_control : Flag<"-faccess-control">, Group<f_Group>; @@ -497,6 +498,7 @@ def fpack_struct_EQ : Joined<"-fpack-struct=">, Group<f_Group>; def fpascal_strings : Flag<"-fpascal-strings">, Group<f_Group>; def fpch_preprocess : Flag<"-fpch-preprocess">, Group<f_Group>; def fpic : Flag<"-fpic">, Group<f_Group>; +def fno_pic : Flag<"-fno-pic">, Group<f_Group>; def fpie : Flag<"-fpie">, Group<f_Group>, Flags<[NoArgumentUnused]>; def fno_pie : Flag<"-fno-pie">, Group<f_Group>, Flags<[NoArgumentUnused]>; def fprofile_arcs : Flag<"-fprofile-arcs">, Group<f_Group>; diff --git a/clang/lib/Driver/Tools.cpp b/clang/lib/Driver/Tools.cpp index 84021084ca5..4c4ab7bc987 100644 --- a/clang/lib/Driver/Tools.cpp +++ b/clang/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/clang/test/Driver/fno-pic.c b/clang/test/Driver/fno-pic.c new file mode 100644 index 00000000000..5ec122850db --- /dev/null +++ b/clang/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" |