+static void print_help_basic(const char *argv0)
+{
+ usage(argv0);
+ puts("");
+ put_help("--help", "Display this information");
+ put_help("--version", "Display compiler version");
+ put_help("--help-parser", "Display information about parser options");
+ put_help("--help-warnings", "Display information about warning options");
+ put_help("--help-codegen", "Display information about code-generation options");
+ put_help("--help-optimization", "Display information about optimization options");
+ put_help("--help-linker", "Display information about linker options");
+ put_help("--help-language-tools", "Display information about language tools options");
+ put_help("--help-debug", "Display information about compiler debugging options");
+ put_help("--help-firm", "Display information about direct firm options");
+ put_help("--help-all", "Display information about all options");
+ put_help("-c", "Compile and assemble but do not link");
+ put_help("-E", "Preprocess only");
+ put_help("-S", "Compile but do not assembler or link");
+ put_help("-o", "Specify output file");
+ put_help("-v", "Verbose output (show invocation of sub-processes)");
+ put_help("-x", "Force input language:");
+ put_choice("c", "C");
+ put_choice("c++", "C++");
+ put_choice("assembler", "Assembler (no preprocessing)");
+ put_choice("assembler-with-cpp", "Assembler with preprocessing");
+ put_choice("none", "Autodetection");
+ put_help("-pipe", "Ignored (gcc compatibility)");
+}
+
+static void print_help_preprocessor(void)
+{
+ put_help("-nostdinc", "Do not search standard system include directories");
+ put_help("-trigraphs", "Support ISO C trigraphs");
+ put_help("-isystem", "");
+ put_help("-include", "");
+ put_help("-I PATH", "");
+ put_help("-D SYMBOL[=value]", "");
+ put_help("-U SYMBOL", "");
+ put_help("-Wp,OPTION", "Pass option directly to preprocessor");
+ put_help("-M", "");
+ put_help("-MD", "");
+ put_help("-MMD", "");
+ put_help("-MM", "");
+ put_help("-MP", "");
+ put_help("-MT", "");
+ put_help("-MQ", "");
+ put_help("-MF", "");
+}
+
+static void print_help_parser(void)
+{
+ put_help("-finput-charset=CHARSET", "Select encoding of input files");
+ put_help("-fmessage-length=LEN", "Ignored (gcc compatibility)");
+ put_help("-fshort-wchar", "Type \"wchar_t\" is unsigned short instead of int");
+ put_help("-fshow-column", "Show the column number in diagnostic messages");
+ put_help("-fsigned-char", "Type \"char\" is a signed type");
+ put_help("-funsigned-char", "Type \"char\" is an unsigned type");
+ put_help("--ms", "Enable msvc extensions");
+ put_help("--no-ms", "Disable msvc extensions");
+ put_help("--gcc", "Enable gcc extensions");
+ put_help("--no-gcc", "Disable gcc extensions");
+ put_help("-std=STANDARD", "Specify language standard:");
+ put_choice("c99", "ISO C99 standard");
+ put_choice("c89", "ISO C89 standard");
+ put_choice("c9x", "Deprecated");
+ put_choice("c++", "ISO C++ 98");
+ put_choice("c++98", "ISO C++ 98");
+ put_choice("gnu99", "ISO C99 + GNU extensions (default)");
+ put_choice("gnu89", "ISO C89 + GNU extensions");
+ put_choice("gnu9x", "Deprecated");
+ put_choice("iso9899:1990", "ISO C89");
+ put_choice("iso9899:199409", "ISO C90");
+ put_choice("iso9899:1999", "ISO C99");
+ put_choice("iso9899:199x", "Deprecated");
+ put_help("-pedantic", "Ignored (gcc compatibility)");
+ put_help("-ansi", "Ignored (gcc compatibility)");
+ put_help("--strict", "Enable strict conformance checking");
+}
+
+static void print_help_warnings(void)
+{
+ put_help("-f[no-]diagnostics-show-option", "Show the switch, which controls a warning, after each warning");
+ put_help("-w", "Disable all warnings");
+ put_help("-Wno-trigraphs", "Warn if input contains trigraphs");
+ put_help("-Wundef", "Warn if an undefined macro is used in an #if");
+ put_help("-Winit-self", "Ignored (gcc compatibility)");
+ print_warning_opt_help();
+}
+
+static void print_help_optimization(void)