xref: /freebsd/contrib/llvm-project/llvm/tools/llvm-symbolizer/Opts.td (revision e8d8bef961a50d4dc22501cde4fb9fb0be1b2532)
1*e8d8bef9SDimitry Andricinclude "llvm/Option/OptParser.td"
2*e8d8bef9SDimitry Andric
3*e8d8bef9SDimitry Andricmulticlass B<string name, string help1, string help2> {
4*e8d8bef9SDimitry Andric  def NAME: Flag<["--", "-"], name>, HelpText<help1>;
5*e8d8bef9SDimitry Andric  def no_ # NAME: Flag<["--", "-"], "no-" # name>, HelpText<help2>;
6*e8d8bef9SDimitry Andric}
7*e8d8bef9SDimitry Andric
8*e8d8bef9SDimitry Andricmulticlass Eq<string name, string help> {
9*e8d8bef9SDimitry Andric  def NAME #_EQ : Joined<["--", "-"], name #"=">,
10*e8d8bef9SDimitry Andric                  HelpText<help>;
11*e8d8bef9SDimitry Andric  def : Separate<["--", "-"], name>, Alias<!cast<Joined>(NAME #_EQ)>;
12*e8d8bef9SDimitry Andric}
13*e8d8bef9SDimitry Andric
14*e8d8bef9SDimitry Andricclass F<string name, string help>: Flag<["--", "-"], name>, HelpText<help>;
15*e8d8bef9SDimitry Andric
16*e8d8bef9SDimitry Andricdef addresses : F<"addresses", "Show address before line information">;
17*e8d8bef9SDimitry Andricdefm adjust_vma
18*e8d8bef9SDimitry Andric    : Eq<"adjust-vma", "Add specified offset to object file addresses">,
19*e8d8bef9SDimitry Andric      MetaVarName<"<offset>">;
20*e8d8bef9SDimitry Andricdef basenames : Flag<["--"], "basenames">, HelpText<"Strip directory names from paths">;
21*e8d8bef9SDimitry Andricdefm debug_file_directory : Eq<"debug-file-directory", "Path to directory where to look for debug files">, MetaVarName<"<dir>">;
22*e8d8bef9SDimitry Andricdefm default_arch : Eq<"default-arch", "Default architecture (for multi-arch objects)">;
23*e8d8bef9SDimitry Andricdefm demangle : B<"demangle", "Demangle function names", "Don't demangle function names">;
24*e8d8bef9SDimitry Andricdef functions : F<"functions", "Print function name for a given address">;
25*e8d8bef9SDimitry Andricdef functions_EQ : Joined<["--"], "functions=">, HelpText<"Print function name for a given address">, Values<"none,short,linkage">;
26*e8d8bef9SDimitry Andricdef help : F<"help", "Display this help">;
27*e8d8bef9SDimitry Andricdefm dwp : Eq<"dwp", "Path to DWP file to be use for any split CUs">, MetaVarName<"<file>">;
28*e8d8bef9SDimitry Andricdefm dsym_hint : Eq<"dsym-hint", "Path to .dSYM bundles to search for debug info for the object files">, MetaVarName<"<dir>">;
29*e8d8bef9SDimitry Andricdefm fallback_debug_path : Eq<"fallback-debug-path", "Fallback path for debug binaries">, MetaVarName<"<dir>">;
30*e8d8bef9SDimitry Andricdefm inlines : B<"inlines", "Print all inlined frames for a given address",
31*e8d8bef9SDimitry Andric                 "Do not print inlined frames">;
32*e8d8bef9SDimitry Andricdefm obj
33*e8d8bef9SDimitry Andric    : Eq<"obj", "Path to object file to be symbolized (if not provided, "
34*e8d8bef9SDimitry Andric                "object file should be specified for each input line)">, MetaVarName<"<file>">;
35*e8d8bef9SDimitry Andricdefm output_style
36*e8d8bef9SDimitry Andric    : Eq<"output-style", "Specify print style. Supported styles: LLVM, GNU">,
37*e8d8bef9SDimitry Andric      MetaVarName<"style">,
38*e8d8bef9SDimitry Andric      Values<"LLVM,GNU">;
39*e8d8bef9SDimitry Andricdef pretty_print : F<"pretty-print", "Make the output more human friendly">;
40*e8d8bef9SDimitry Andricdefm print_source_context_lines : Eq<"print-source-context-lines", "Print N lines of source file context">;
41*e8d8bef9SDimitry Andricdef relative_address : F<"relative-address", "Interpret addresses as addresses relative to the image base">;
42*e8d8bef9SDimitry Andricdef relativenames : F<"relativenames", "Strip the compilation directory from paths">;
43*e8d8bef9SDimitry Andricdefm untag_addresses : B<"untag-addresses", "", "Remove memory tags from addresses before symbolization">;
44*e8d8bef9SDimitry Andricdef use_dia: F<"dia", "Use the DIA library to access symbols (Windows only)">;
45*e8d8bef9SDimitry Andricdef verbose : F<"verbose", "Print verbose line info">;
46*e8d8bef9SDimitry Andricdef version : F<"version", "Display the version">;
47*e8d8bef9SDimitry Andric
48*e8d8bef9SDimitry Andricdef : Flag<["-"], "a">, Alias<addresses>, HelpText<"Alias for --addresses">;
49*e8d8bef9SDimitry Andricdef : F<"print-address", "Alias for --addresses">, Alias<addresses>;
50*e8d8bef9SDimitry Andricdef : Flag<["-"], "C">, Alias<demangle>, HelpText<"Alias for --demangle">;
51*e8d8bef9SDimitry Andricdef : Joined<["--"], "exe=">, Alias<obj_EQ>, HelpText<"Alias for --obj">, MetaVarName<"<file>">;
52*e8d8bef9SDimitry Andricdef : Separate<["--"], "exe">, Alias<obj_EQ>, HelpText<"Alias for --obj">, MetaVarName<"<file>">;
53*e8d8bef9SDimitry Andricdef : JoinedOrSeparate<["-"], "e">, Alias<obj_EQ>, HelpText<"Alias for --obj">, MetaVarName<"<file>">;
54*e8d8bef9SDimitry Andricdef : Joined<["-"], "e=">, Alias<obj_EQ>, HelpText<"Alias for --obj">, MetaVarName<"<file>">;
55*e8d8bef9SDimitry Andricdef : Flag<["-"], "f">, Alias<functions>, HelpText<"Alias for --functions">;
56*e8d8bef9SDimitry Andricdef : Joined<["-"], "f=">, Alias<functions_EQ>, HelpText<"Alias for --functions=">;
57*e8d8bef9SDimitry Andricdef : Flag<["-"], "h">, Alias<help>;
58*e8d8bef9SDimitry Andricdef : Flag<["-"], "i">, Alias<inlines>, HelpText<"Alias for --inlines">;
59*e8d8bef9SDimitry Andricdef : F<"inlining", "Alias for --inlines">, Alias<inlines>;
60*e8d8bef9SDimitry Andricdef : Flag<["-"], "p">, Alias<pretty_print>, HelpText<"Alias for --pretty-print">;
61*e8d8bef9SDimitry Andricdef : Flag<["-"], "s">, Alias<basenames>, HelpText<"Alias for --basenames">;
62*e8d8bef9SDimitry Andricdef : Flag<["-"], "v">, Alias<version>, HelpText<"Alias for --version">;
63*e8d8bef9SDimitry Andric
64*e8d8bef9SDimitry Andric// Compatibility aliases for old asan_symbolize.py and sanitizer binaries (before 2020-08).
65*e8d8bef9SDimitry Andricdef : Flag<["--"], "inlining=true">, Alias<inlines>, HelpText<"Alias for --inlines">;
66*e8d8bef9SDimitry Andricdef : Flag<["--"], "inlining=false">, Alias<no_inlines>, HelpText<"Alias for --no-inlines">;
67*e8d8bef9SDimitry Andric// Compatibility aliases for pprof's symbolizer.
68*e8d8bef9SDimitry Andricdef : Flag<["-"], "demangle=true">, Alias<demangle>, HelpText<"Alias for --demangle">;
69*e8d8bef9SDimitry Andricdef : Flag<["-"], "demangle=false">, Alias<no_demangle>, HelpText<"Alias for --no-demangle">;
70*e8d8bef9SDimitry Andric// Compatibility no-op options.
71*e8d8bef9SDimitry Andricdef : Flag<["--"], "use-symbol-table=true">;
72