|  | include "llvm/Option/OptParser.td" | 
|  |  | 
|  | multiclass Eq<string name> { | 
|  | def NAME: Separate<["--", "-"], name>; | 
|  | def NAME # _eq: Joined<["--", "-"], name # "=">, Alias<!cast<Separate>(NAME)>; | 
|  | } | 
|  |  | 
|  | def help : Flag<["-", "--"], "help">; | 
|  | defm binary_architecture : Eq<"binary-architecture">, | 
|  | HelpText<"Used when transforming an architecture-less format (such as binary) to another format">; | 
|  | def B : JoinedOrSeparate<["-"], "B">, | 
|  | Alias<binary_architecture>; | 
|  | defm input_target : Eq<"input-target">, | 
|  | HelpText<"Format of the input file">, | 
|  | Values<"binary">; | 
|  | defm output_target : Eq<"output-target">, | 
|  | HelpText<"Format of the output file">, | 
|  | Values<"binary">; | 
|  | def O : JoinedOrSeparate<["-"], "O">, | 
|  | Alias<output_target>; | 
|  | defm split_dwo : Eq<"split-dwo">, | 
|  | MetaVarName<"dwo-file">, | 
|  | HelpText<"Equivalent to extract-dwo on the input file to <dwo-file>, then strip-dwo on the input file">; | 
|  | defm add_gnu_debuglink : Eq<"add-gnu-debuglink">, | 
|  | MetaVarName<"debug-file">, | 
|  | HelpText<"Add a .gnu_debuglink for <debug-file>">; | 
|  | defm remove_section : Eq<"remove-section">, | 
|  | MetaVarName<"section">, | 
|  | HelpText<"Remove <section>">; | 
|  | defm rename_section : Eq<"rename-section">, | 
|  | MetaVarName<"old=new">, | 
|  | HelpText<"Renames a section from old to new">; | 
|  | defm redefine_symbol : Eq<"redefine-sym">, | 
|  | MetaVarName<"old=new">, | 
|  | HelpText<"Change the name of a symbol old to new">; | 
|  | def R : JoinedOrSeparate<["-"], "R">, | 
|  | Alias<remove_section>; | 
|  | defm keep : Eq<"keep">, | 
|  | MetaVarName<"section">, | 
|  | HelpText<"Keep <section>">; | 
|  | defm only_keep : Eq<"only-keep">, | 
|  | MetaVarName<"section">, | 
|  | HelpText<"Remove all but <section>">; | 
|  | def j : JoinedOrSeparate<["-"], "j">, | 
|  | Alias<only_keep>; | 
|  | defm add_section : Eq<"add-section">, | 
|  | MetaVarName<"section=file">, | 
|  | HelpText<"Make a section named <section> with the contents of <file>.">; | 
|  | def strip_all : Flag<["-", "--"], "strip-all">, | 
|  | HelpText<"Remove non-allocated sections other than .gnu.warning* sections">; | 
|  | def strip_all_gnu : Flag<["-", "--"], "strip-all-gnu">, | 
|  | HelpText<"Compaitable with GNU objcopy's --strip-all">; | 
|  | def strip_debug : Flag<["-", "--"], "strip-debug">, | 
|  | HelpText<"Remove all debug information">; | 
|  | def strip_dwo : Flag<["-", "--"], "strip-dwo">, | 
|  | HelpText<"Remove all DWARF .dwo sections from file">; | 
|  | def strip_sections : Flag<["-", "--"], "strip-sections">, | 
|  | HelpText<"Remove all section headers">; | 
|  | def strip_non_alloc : Flag<["-", "--"], "strip-non-alloc">, | 
|  | HelpText<"Remove all non-allocated sections">; | 
|  | def extract_dwo : Flag<["-", "--"], "extract-dwo">, | 
|  | HelpText<"Remove all sections that are not DWARF .dwo sections from file">; | 
|  | def localize_hidden : Flag<["-", "--"], "localize-hidden">, | 
|  | HelpText<"Mark all symbols that have hidden or internal visibility as local">; | 
|  | defm localize_symbol : Eq<"localize-symbol">, | 
|  | MetaVarName<"symbol">, | 
|  | HelpText<"Mark <symbol> as local">; | 
|  | def L : JoinedOrSeparate<["-"], "L">, | 
|  | Alias<localize_symbol>; | 
|  | defm globalize_symbol : Eq<"globalize-symbol">, | 
|  | MetaVarName<"symbol">, | 
|  | HelpText<"Mark <symbol> as global">; | 
|  | defm weaken_symbol : Eq<"weaken-symbol">, | 
|  | MetaVarName<"symbol">, | 
|  | HelpText<"Mark <symbol> as weak">; | 
|  | def W : JoinedOrSeparate<["-"], "W">, | 
|  | Alias<weaken_symbol>; | 
|  | def weaken : Flag<["-", "--"], "weaken">, | 
|  | HelpText<"Mark all global symbols as weak">; | 
|  | def discard_all : Flag<["-", "--"], "discard-all">, | 
|  | HelpText<"Remove all local symbols except file and section symbols">; | 
|  | def x : Flag<["-"], "x">, | 
|  | Alias<discard_all>; | 
|  | defm strip_symbol : Eq<"strip-symbol">, | 
|  | MetaVarName<"symbol">, | 
|  | HelpText<"Remove symbol <symbol>">; | 
|  | def N : JoinedOrSeparate<["-"], "N">, | 
|  | Alias<strip_symbol>; | 
|  | defm keep_symbol : Eq<"keep-symbol">, | 
|  | MetaVarName<"symbol">, | 
|  | HelpText<"Do not remove symbol <symbol>">; | 
|  | def K : JoinedOrSeparate<["-"], "K">, | 
|  | Alias<keep_symbol>; | 
|  | def only_keep_debug : Flag<["-", "--"], "only-keep-debug">, | 
|  | HelpText<"Currently ignored. Only for compaitability with GNU objcopy.">; | 
|  | def strip_unneeded : Flag<["-", "--"], "strip-unneeded">, | 
|  | HelpText<"Remove all symbols not needed by relocations">; | 
|  | def keep_file_symbols : Flag<["-", "--"], "keep-file-symbols">, | 
|  | HelpText<"Do not remove file symbols">; |