summaryrefslogtreecommitdiffstats
path: root/lld
diff options
context:
space:
mode:
authorRui Ueyama <ruiu@google.com>2013-09-23 20:36:39 +0000
committerRui Ueyama <ruiu@google.com>2013-09-23 20:36:39 +0000
commit2721aa4065a03ddbed4fdd09cad7803ebe7c3a5b (patch)
tree6cbb00dab4214c95da065cf1e0852312c40dd4c5 /lld
parent02bdb16524b952ae4ef459e066e29ee2232670df (diff)
downloadbcm5719-llvm-2721aa4065a03ddbed4fdd09cad7803ebe7c3a5b.tar.gz
bcm5719-llvm-2721aa4065a03ddbed4fdd09cad7803ebe7c3a5b.zip
[PECOFF] Simplify WinLinkOptions.td.
llvm-svn: 191223
Diffstat (limited to 'lld')
-rw-r--r--lld/lib/Driver/WinLinkDriver.cpp6
-rw-r--r--lld/lib/Driver/WinLinkOptions.td31
2 files changed, 17 insertions, 20 deletions
diff --git a/lld/lib/Driver/WinLinkDriver.cpp b/lld/lib/Driver/WinLinkDriver.cpp
index 56c9a602526..31204aabb3b 100644
--- a/lld/lib/Driver/WinLinkDriver.cpp
+++ b/lld/lib/Driver/WinLinkDriver.cpp
@@ -409,7 +409,7 @@ bool WinLinkDriver::parse(int argc, const char *argv[], PECOFFLinkingContext &ct
ctx.setDeadStripping(false);
break;
- case OPT_no_nxcompat:
+ case OPT_nxcompat_no:
// handle /nxcompat:no
ctx.setNxCompat(false);
break;
@@ -432,7 +432,7 @@ bool WinLinkDriver::parse(int argc, const char *argv[], PECOFFLinkingContext &ct
ctx.setDynamicBaseEnabled(false);
break;
- case OPT_no_dynamicbase:
+ case OPT_dynamicbase_no:
// handle /dynamicbase:no
ctx.setDynamicBaseEnabled(false);
break;
@@ -442,7 +442,7 @@ bool WinLinkDriver::parse(int argc, const char *argv[], PECOFFLinkingContext &ct
ctx.setTerminalServerAware(true);
break;
- case OPT_no_tsaware:
+ case OPT_tsaware_no:
// handle /tsaware:no
ctx.setTerminalServerAware(false);
break;
diff --git a/lld/lib/Driver/WinLinkOptions.td b/lld/lib/Driver/WinLinkOptions.td
index f2a89aab591..470321ddb5b 100644
--- a/lld/lib/Driver/WinLinkOptions.td
+++ b/lld/lib/Driver/WinLinkOptions.td
@@ -2,13 +2,21 @@ include "llvm/Option/OptParser.td"
// link.exe accepts options starting with either a dash or a slash.
+// Flag that takes no arguments.
class F<string name> : Flag<["/", "-", "-?"], name>;
+// Flag that takes one argument after ":".
multiclass P<string name, string help> {
def "" : Joined<["/", "-", "-?"], name#":">, HelpText<help>;
def _c : Separate<["/", "-", "-?"], name>, Alias<!cast<Option>(name)>;
}
+// Boolean flag suffixed by ":no".
+multiclass B<string name, string help> {
+ def "" : F<name>;
+ def _no : F<name#":no">, HelpText<help>;
+}
+
defm base : P<"base", "Base address of the program">;
defm defaultlib : P<"defaultlib", "Add the library to the list of input files">;
defm entry : P<"entry", "Name of entry point symbol">;
@@ -39,23 +47,12 @@ def ref : F<"opt:ref">;
def no_ref : F<"opt:noref">,
HelpText<"Keep unreferenced symbols to be included to the output">;
-def nxcompat : F<"nxcompat">;
-def no_nxcompat : F<"nxcompat:no">,
- HelpText<"Disable data execution provention">;
-
-def largeaddressaware : F<"largeaddressaware">;
-def no_largeaddressaware : F<"largeaddressaware:no">,
- HelpText<"Disable large addresses">;
-
-def fixed : F<"fixed">;
-def no_fixed : F<"fixed:no">, HelpText<"Enable base relocations">;
-
-def dynamicbase : F<"dynamicbase">;
-def no_dynamicbase : F<"dynamicbase:no">, HelpText<"Disable address space layout randomization">;
-
-def tsaware : F<"tsaware">;
-def no_tsaware : F<"tsaware:no">,
- HelpText<"Create non-Terminal Server aware executable">;
+defm nxcompat : B<"nxcompat", "Disable data execution provention">;
+defm largeaddressaware : B<"largeaddressaware", "Disable large addresses">;
+defm fixed : B<"fixed", "Enable base relocations">;
+defm tsaware : B<"tsaware", "Create non-Terminal Server aware executable">;
+defm dynamicbase : B<"dynamicbase",
+ "Disable address space layout randomization">;
def help : F<"help">;
def help_q : F<"?">, Alias<help>;
OpenPOWER on IntegriCloud