Skip to content

Commit

Permalink
lld-link: Allow /? as option prefix, like -? is allowed
Browse files Browse the repository at this point in the history
link.exe seems to allow `/?foo` and `-?foo` in addition to `/foo` and `-foo`.

Since lld-link already supports the `-?foo` spelling, support `/?foo` as well.

Differential Revision: https://reviews.llvm.org/D61375

llvm-svn: 360150
  • Loading branch information
nico authored and MrSidims committed May 17, 2019
1 parent e7b0e30 commit 6a16d0a
Showing 1 changed file with 12 additions and 9 deletions.
21 changes: 12 additions & 9 deletions lld/COFF/Options.td
Expand Up @@ -3,11 +3,11 @@ 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>;
class F<string name> : Flag<["/", "-", "/?", "-?"], name>;

// Flag that takes one argument after ":".
class P<string name, string help> :
Joined<["/", "-", "-?"], name#":">, HelpText<help>;
Joined<["/", "-", "/?", "-?"], name#":">, HelpText<help>;

// Boolean flag which can be suffixed by ":no". Using it unsuffixed turns the
// flag on and using it suffixed by ":no" turns it off.
Expand Down Expand Up @@ -66,7 +66,8 @@ def timestamp : P<"timestamp", "Specify the PE header timestamp">;
def version : P<"version", "Specify a version number in the PE header">;
def wholearchive_file : P<"wholearchive", "Include all object files from this archive">;

def disallowlib : Joined<["/", "-", "-?"], "disallowlib:">, Alias<nodefaultlib>;
def disallowlib : Joined<["/", "-", "/?", "-?"], "disallowlib:">,
Alias<nodefaultlib>;

def manifest : F<"manifest">, HelpText<"Create .manifest file">;
def manifest_colon : P<
Expand All @@ -84,11 +85,11 @@ def manifestinput : P<
// We cannot use multiclass P because class name "incl" is different
// from its command line option name. We do this because "include" is
// a reserved keyword in tablegen.
def incl : Joined<["/", "-"], "include:">,
def incl : Joined<["/", "-", "/?", "-?"], "include:">,
HelpText<"Force symbol to be added to symbol table as undefined one">;

// "def" is also a keyword.
def deffile : Joined<["/", "-"], "def:">,
def deffile : Joined<["/", "-", "/?", "-?"], "def:">,
HelpText<"Use module-definition file">;

def debug : F<"debug">, HelpText<"Embed a symbol table in the image">;
Expand Down Expand Up @@ -155,7 +156,9 @@ defm tsaware : B<"tsaware",
"Create non-Terminal Server aware executable">;

def help : F<"help">;
def help_q : Flag<["/?", "-?"], "">, Alias<help>;

// /?? and -?? must be before /? and -? to not confuse lib/Options.
def help_q : Flag<["/??", "-??", "/?", "-?"], "">, Alias<help>;

// LLD extensions
def exclude_all_symbols : F<"exclude-all-symbols">;
Expand All @@ -165,7 +168,7 @@ defm demangle : B<"demangle",
"Do not demangle symbols in output">;
def kill_at : F<"kill-at">;
def lldmingw : F<"lldmingw">;
def output_def : Joined<["/", "-"], "output-def:">;
def output_def : Joined<["/", "-", "/?", "-?"], "output-def:">;
def pdb_source_path : P<"pdbsourcepath",
"Base path used to make relative source file path absolute in PDB">;
def rsp_quoting : Joined<["--"], "rsp-quoting=">,
Expand All @@ -178,15 +181,15 @@ defm threads: B<"threads",

// Flags for debugging
def lldmap : F<"lldmap">;
def lldmap_file : Joined<["/", "-"], "lldmap:">;
def lldmap_file : Joined<["/", "-", "/?", "-?"], "lldmap:">;
def show_timing : F<"time">;
def summary : F<"summary">;

//==============================================================================
// The flags below do nothing. They are defined only for link.exe compatibility.
//==============================================================================

class QF<string name> : Joined<["/", "-", "-?"], name#":">;
class QF<string name> : Joined<["/", "-", "/?", "-?"], name#":">;

def ignoreidl : F<"ignoreidl">;
def nologo : F<"nologo">;
Expand Down

0 comments on commit 6a16d0a

Please sign in to comment.