109467b48Spatrickinclude "CommonOpts.td"
209467b48Spatrick
309467b48Spatrickdefm binary_architecture
409467b48Spatrick    : Eq<"binary-architecture", "Ignored for compatibility">;
509467b48Spatrickdef B : JoinedOrSeparate<["-"], "B">,
609467b48Spatrick        Alias<binary_architecture>,
709467b48Spatrick        HelpText<"Alias for --binary-architecture">;
809467b48Spatrick
909467b48Spatrickdefm target : Eq<"target", "Format of the input and output file">,
1009467b48Spatrick              Values<"binary">;
1109467b48Spatrickdef F : JoinedOrSeparate<["-"], "F">,
1209467b48Spatrick        Alias<target>,
1309467b48Spatrick        HelpText<"Alias for --target">;
1409467b48Spatrick
1509467b48Spatrickdefm input_target : Eq<"input-target", "Format of the input file">,
1609467b48Spatrick                    Values<"binary">;
1709467b48Spatrickdef I : JoinedOrSeparate<["-"], "I">,
1809467b48Spatrick        Alias<input_target>,
1909467b48Spatrick        HelpText<"Alias for --input-target">;
2009467b48Spatrick
2109467b48Spatrickdefm output_target : Eq<"output-target", "Format of the output file">,
2209467b48Spatrick                     Values<"binary">;
2309467b48Spatrickdef O : JoinedOrSeparate<["-"], "O">,
2409467b48Spatrick        Alias<output_target>,
2509467b48Spatrick        HelpText<"Alias for --output-target">;
2609467b48Spatrick
2709467b48Spatrickdefm new_symbol_visibility : Eq<"new-symbol-visibility", "Visibility of "
2809467b48Spatrick                                "symbols generated for binary input or added"
2909467b48Spatrick                                " with --add-symbol unless otherwise"
3009467b48Spatrick                                " specified. The default value is 'default'.">;
3109467b48Spatrick
32*d415bd75Srobertdef compress_debug_sections
3309467b48Spatrick    : Joined<["--"], "compress-debug-sections=">,
34*d415bd75Srobert      MetaVarName<"format">,
35*d415bd75Srobert      HelpText<"Compress DWARF debug sections using specified format. Supported "
36*d415bd75Srobert               "formats: zlib, zstd. Select zlib if <format> is omitted">;
37*d415bd75Srobertdef : Flag<["--"], "compress-debug-sections">, Alias<compress_debug_sections>,
38*d415bd75Srobert      AliasArgs<["zlib"]>;
3909467b48Spatrickdef decompress_debug_sections : Flag<["--"], "decompress-debug-sections">,
4009467b48Spatrick                                HelpText<"Decompress DWARF debug sections.">;
4109467b48Spatrickdefm split_dwo
4209467b48Spatrick    : Eq<"split-dwo", "Equivalent to extract-dwo on the input file to "
4309467b48Spatrick                      "<dwo-file>, then strip-dwo on the input file">,
4409467b48Spatrick      MetaVarName<"dwo-file">;
4509467b48Spatrick
4609467b48Spatrickdefm add_gnu_debuglink
4709467b48Spatrick    : Eq<"add-gnu-debuglink", "Add a .gnu_debuglink for <debug-file>">,
4809467b48Spatrick      MetaVarName<"debug-file">;
4909467b48Spatrick
5009467b48Spatrickdefm rename_section
5109467b48Spatrick    : Eq<"rename-section",
5209467b48Spatrick         "Renames a section from old to new, optionally with specified flags. "
5309467b48Spatrick         "Flags supported for GNU compatibility: alloc, load, noload, "
54*d415bd75Srobert         "readonly, exclude, debug, code, data, rom, share, contents, merge, "
55*d415bd75Srobert         "strings.">,
5609467b48Spatrick      MetaVarName<"old=new[,flag1,...]">;
5709467b48Spatrickdefm redefine_symbol
5809467b48Spatrick    : Eq<"redefine-sym", "Change the name of a symbol old to new">,
5909467b48Spatrick      MetaVarName<"old=new">;
6009467b48Spatrickdefm redefine_symbols
6109467b48Spatrick    : Eq<"redefine-syms",
6209467b48Spatrick         "Reads a list of symbol pairs from <filename> and runs as if "
6309467b48Spatrick         "--redefine-sym=<old>=<new> is set for each one. <filename> "
6409467b48Spatrick         "contains two symbols per line separated with whitespace and may "
6509467b48Spatrick         "contain comments beginning with '#'. Leading and trailing "
6609467b48Spatrick         "whitespace is stripped from each line. May be repeated to read "
6709467b48Spatrick         "symbols from many files.">,
6809467b48Spatrick      MetaVarName<"filename">;
6909467b48Spatrick
7009467b48Spatrickdefm only_section : Eq<"only-section", "Remove all but <section>">,
7109467b48Spatrick                    MetaVarName<"section">;
7209467b48Spatrickdef j : JoinedOrSeparate<["-"], "j">,
7309467b48Spatrick        Alias<only_section>,
7409467b48Spatrick        HelpText<"Alias for --only-section">;
7509467b48Spatrickdefm add_section
7609467b48Spatrick    : Eq<"add-section",
7709467b48Spatrick         "Make a section named <section> with the contents of <file>.">,
7809467b48Spatrick      MetaVarName<"section=file">;
7909467b48Spatrick
8009467b48Spatrickdefm set_section_alignment
8109467b48Spatrick    : Eq<"set-section-alignment", "Set alignment for a given section.">,
8209467b48Spatrick      MetaVarName<"section=align">;
8309467b48Spatrick
8409467b48Spatrickdefm set_section_flags
8509467b48Spatrick    : Eq<"set-section-flags",
8609467b48Spatrick         "Set section flags for a given section. Flags supported for GNU "
87*d415bd75Srobert         "compatibility: alloc, load, noload, readonly, exclude, debug, code, "
88*d415bd75Srobert         "data, rom, share, contents, merge, strings.">,
8909467b48Spatrick      MetaVarName<"section=flag1[,flag2,...]">;
9009467b48Spatrick
91*d415bd75Srobertdefm set_section_type
92*d415bd75Srobert    : Eq<"set-section-type",
93*d415bd75Srobert         "Set the type of section <section> to the integer <type>">,
94*d415bd75Srobert      MetaVarName<"section=type">;
95*d415bd75Srobert
9609467b48Spatrickdef S : Flag<["-"], "S">,
9709467b48Spatrick        Alias<strip_all>,
9809467b48Spatrick        HelpText<"Alias for --strip-all">;
9909467b48Spatrickdef strip_dwo : Flag<["--"], "strip-dwo">,
10009467b48Spatrick                HelpText<"Remove all DWARF .dwo sections from file">;
10109467b48Spatrickdef strip_non_alloc
10209467b48Spatrick    : Flag<["--"], "strip-non-alloc">,
10309467b48Spatrick      HelpText<"Remove all non-allocated sections outside segments">;
10409467b48Spatrickdefm strip_unneeded_symbol
10509467b48Spatrick    : Eq<"strip-unneeded-symbol",
10609467b48Spatrick         "Remove symbol <symbol> if it is not needed by relocations">,
10709467b48Spatrick      MetaVarName<"symbol">;
10809467b48Spatrickdefm strip_unneeded_symbols
10909467b48Spatrick    : Eq<"strip-unneeded-symbols",
11009467b48Spatrick         "Reads a list of symbols from <filename> and removes them "
11109467b48Spatrick         "if they are not needed by relocations">,
11209467b48Spatrick      MetaVarName<"filename">;
11309467b48Spatrick
114*d415bd75Srobertdefm subsystem
115*d415bd75Srobert    : Eq<"subsystem",
116*d415bd75Srobert         "Set PE subsystem and version">,
117*d415bd75Srobert      MetaVarName<"name[:version]">;
118*d415bd75Srobert
11909467b48Spatrickdef extract_dwo
12009467b48Spatrick    : Flag<["--"], "extract-dwo">,
12109467b48Spatrick      HelpText<
12209467b48Spatrick          "Remove all sections that are not DWARF .dwo sections from file">;
12309467b48Spatrick
12409467b48Spatrickdefm extract_partition
12509467b48Spatrick    : Eq<"extract-partition", "Extract named partition from input file">,
12609467b48Spatrick      MetaVarName<"name">;
12709467b48Spatrickdef extract_main_partition
12809467b48Spatrick    : Flag<["--"], "extract-main-partition">,
12909467b48Spatrick      HelpText<"Extract main partition from the input file">;
13009467b48Spatrick
13109467b48Spatrickdef localize_hidden
13209467b48Spatrick    : Flag<["--"], "localize-hidden">,
13309467b48Spatrick      HelpText<
13409467b48Spatrick          "Mark all symbols that have hidden or internal visibility as local">;
13509467b48Spatrickdefm localize_symbol : Eq<"localize-symbol", "Mark <symbol> as local">,
13609467b48Spatrick                       MetaVarName<"symbol">;
13709467b48Spatrickdefm localize_symbols
13809467b48Spatrick    : Eq<"localize-symbols",
13909467b48Spatrick         "Reads a list of symbols from <filename> and marks them local.">,
14009467b48Spatrick      MetaVarName<"filename">;
14109467b48Spatrick
14209467b48Spatrickdef L : JoinedOrSeparate<["-"], "L">,
14309467b48Spatrick        Alias<localize_symbol>,
14409467b48Spatrick        HelpText<"Alias for --localize-symbol">;
14509467b48Spatrick
14609467b48Spatrickdefm globalize_symbol : Eq<"globalize-symbol", "Mark <symbol> as global">,
14709467b48Spatrick                        MetaVarName<"symbol">;
14809467b48Spatrick
14909467b48Spatrickdefm globalize_symbols
15009467b48Spatrick    : Eq<"globalize-symbols",
15109467b48Spatrick         "Reads a list of symbols from <filename> and marks them global.">,
15209467b48Spatrick      MetaVarName<"filename">;
15309467b48Spatrick
15409467b48Spatrickdefm keep_global_symbol
15509467b48Spatrick    : Eq<"keep-global-symbol",
15609467b48Spatrick         "Convert all symbols except <symbol> to local. May be repeated to "
15709467b48Spatrick         "convert all except a set of symbols to local.">,
15809467b48Spatrick      MetaVarName<"symbol">;
15909467b48Spatrickdef G : JoinedOrSeparate<["-"], "G">,
16009467b48Spatrick        Alias<keep_global_symbol>,
16109467b48Spatrick        HelpText<"Alias for --keep-global-symbol">;
16209467b48Spatrick
16309467b48Spatrickdefm keep_global_symbols
16409467b48Spatrick    : Eq<"keep-global-symbols",
16509467b48Spatrick         "Reads a list of symbols from <filename> and runs as if "
16609467b48Spatrick         "--keep-global-symbol=<symbol> is set for each one. <filename> "
16709467b48Spatrick         "contains one symbol per line and may contain comments beginning with "
16809467b48Spatrick         "'#'. Leading and trailing whitespace is stripped from each line. May "
16909467b48Spatrick         "be repeated to read symbols from many files.">,
17009467b48Spatrick      MetaVarName<"filename">;
17109467b48Spatrick
17209467b48Spatrickdefm weaken_symbol : Eq<"weaken-symbol", "Mark <symbol> as weak">,
17309467b48Spatrick                     MetaVarName<"symbol">;
17409467b48Spatrickdefm weaken_symbols
17509467b48Spatrick    : Eq<"weaken-symbols",
17609467b48Spatrick         "Reads a list of symbols from <filename> and marks them weak.">,
17709467b48Spatrick      MetaVarName<"filename">;
17809467b48Spatrick
17909467b48Spatrickdef W : JoinedOrSeparate<["-"], "W">,
18009467b48Spatrick        Alias<weaken_symbol>,
18109467b48Spatrick        HelpText<"Alias for --weaken-symbol">;
18209467b48Spatrickdef weaken : Flag<["--"], "weaken">,
18309467b48Spatrick             HelpText<"Mark all global symbols as weak">;
18409467b48Spatrick
18509467b48Spatrickdefm strip_symbols
18609467b48Spatrick    : Eq<"strip-symbols",
18709467b48Spatrick         "Reads a list of symbols from <filename> and removes them.">,
18809467b48Spatrick      MetaVarName<"filename">;
18909467b48Spatrick
19009467b48Spatrickdefm keep_symbols
19109467b48Spatrick    : Eq<"keep-symbols",
19209467b48Spatrick         "Reads a list of symbols from <filename> and runs as if "
19309467b48Spatrick         "--keep-symbol=<symbol> is set for each one. <filename> "
19409467b48Spatrick         "contains one symbol per line and may contain comments beginning with "
19509467b48Spatrick         "'#'. Leading and trailing whitespace is stripped from each line. May "
19609467b48Spatrick         "be repeated to read symbols from many files.">,
19709467b48Spatrick      MetaVarName<"filename">;
19809467b48Spatrick
19909467b48Spatrickdefm dump_section
20009467b48Spatrick    : Eq<"dump-section",
20109467b48Spatrick         "Dump contents of section named <section> into file <file>">,
20209467b48Spatrick      MetaVarName<"section=file">;
20309467b48Spatrickdefm prefix_symbols
20409467b48Spatrick    : Eq<"prefix-symbols", "Add <prefix> to the start of every symbol name">,
20509467b48Spatrick      MetaVarName<"prefix">;
20609467b48Spatrick
20709467b48Spatrickdefm prefix_alloc_sections
20809467b48Spatrick    : Eq<"prefix-alloc-sections", "Add <prefix> to the start of every allocated section name">,
20909467b48Spatrick      MetaVarName<"prefix">;
21009467b48Spatrick
21109467b48Spatrickdefm set_start : Eq<"set-start", "Set the start address to <addr>. Overrides "
21209467b48Spatrick                    "any previous --change-start or --adjust-start values.">,
21309467b48Spatrick                 MetaVarName<"addr">;
21409467b48Spatrickdefm change_start : Eq<"change-start", "Add <incr> to the start address. Can be "
21509467b48Spatrick                       "specified multiple times, all values will be applied "
21609467b48Spatrick                       "cumulatively.">,
21709467b48Spatrick                    MetaVarName<"incr">;
21809467b48Spatrickdef adjust_start : JoinedOrSeparate<["--"], "adjust-start">,
21909467b48Spatrick                   Alias<change_start>,
22009467b48Spatrick                   HelpText<"Alias for --change-start">;
22109467b48Spatrick
22209467b48Spatrickdefm add_symbol
22309467b48Spatrick    : Eq<"add-symbol", "Add new symbol <name> to .symtab. Accepted flags: "
22409467b48Spatrick         "global, local, weak, default, hidden, protected, file, section, object, "
22509467b48Spatrick         "function, indirect-function. Accepted but ignored for "
22609467b48Spatrick         "compatibility: debug, constructor, warning, indirect, synthetic, "
22709467b48Spatrick         "unique-object, before.">,
22809467b48Spatrick      MetaVarName<"name=[section:]value[,flags]">;
229*d415bd75Srobert
230*d415bd75Srobertdefm update_section
231*d415bd75Srobert    : Eq<"update-section", "Replace the contents of section <name> with contents from a file <file>.">,
232*d415bd75Srobert      MetaVarName<"name=file">;
233