+ DEFINE_bool(shared, options::ONE_DASH, '\0', false,
+ N_("Generate shared library"), NULL);
+
+ DEFINE_bool(Bshareable, options::ONE_DASH, '\0', false,
+ N_("Generate shared library"), NULL);
+
+ DEFINE_uint(split_stack_adjust_size, options::TWO_DASHES, '\0', 0x4000,
+ N_("Stack size when -fsplit-stack function calls non-split"),
+ N_("SIZE"));
+
+ // This is not actually special in any way, but I need to give it
+ // a non-standard accessor-function name because 'static' is a keyword.
+ DEFINE_special(static, options::ONE_DASH, '\0',
+ N_("Do not link against shared libraries"), NULL);
+
+ DEFINE_enum(icf, options::TWO_DASHES, '\0', "none",
+ N_("Identical Code Folding. "
+ "\'--icf=safe\' folds only ctors and dtors."),
+ ("[none,all,safe]"),
+ {"none", "all", "safe"});
+
+ DEFINE_uint(icf_iterations, options::TWO_DASHES , '\0', 0,
+ N_("Number of iterations of ICF (default 2)"), N_("COUNT"));
+
+ DEFINE_bool(print_icf_sections, options::TWO_DASHES, '\0', false,
+ N_("List folded identical sections on stderr"),
+ N_("Do not list folded identical sections"));
+
+ DEFINE_set(keep_unique, options::TWO_DASHES, '\0',
+ N_("Do not fold this symbol during ICF"), N_("SYMBOL"));
+
+ DEFINE_bool(gc_sections, options::TWO_DASHES, '\0', false,
+ N_("Remove unused sections"),
+ N_("Don't remove unused sections (default)"));
+
+ DEFINE_bool(print_gc_sections, options::TWO_DASHES, '\0', false,
+ N_("List removed unused sections on stderr"),
+ N_("Do not list removed unused sections"));
+
+ DEFINE_bool(stats, options::TWO_DASHES, '\0', false,
+ N_("Print resource usage statistics"), NULL);
+
+ DEFINE_string(sysroot, options::TWO_DASHES, '\0', "",
+ N_("Set target system root directory"), N_("DIR"));
+
+ DEFINE_bool(trace, options::TWO_DASHES, 't', false,
+ N_("Print the name of each input file"), NULL);
+
+ DEFINE_special(script, options::TWO_DASHES, 'T',
+ N_("Read linker script"), N_("FILE"));
+
+ DEFINE_bool(threads, options::TWO_DASHES, '\0', false,
+ N_("Run the linker multi-threaded"),
+ N_("Do not run the linker multi-threaded"));
+ DEFINE_uint(thread_count, options::TWO_DASHES, '\0', 0,
+ N_("Number of threads to use"), N_("COUNT"));
+ DEFINE_uint(thread_count_initial, options::TWO_DASHES, '\0', 0,
+ N_("Number of threads to use in initial pass"), N_("COUNT"));
+ DEFINE_uint(thread_count_middle, options::TWO_DASHES, '\0', 0,
+ N_("Number of threads to use in middle pass"), N_("COUNT"));
+ DEFINE_uint(thread_count_final, options::TWO_DASHES, '\0', 0,
+ N_("Number of threads to use in final pass"), N_("COUNT"));
+
+ DEFINE_uint64(Tbss, options::ONE_DASH, '\0', -1U,
+ N_("Set the address of the bss segment"), N_("ADDRESS"));
+ DEFINE_uint64(Tdata, options::ONE_DASH, '\0', -1U,
+ N_("Set the address of the data segment"), N_("ADDRESS"));
+ DEFINE_uint64(Ttext, options::ONE_DASH, '\0', -1U,
+ N_("Set the address of the text segment"), N_("ADDRESS"));
+
+ DEFINE_set(undefined, options::TWO_DASHES, 'u',
+ N_("Create undefined reference to SYMBOL"), N_("SYMBOL"));
+
+ DEFINE_bool(verbose, options::TWO_DASHES, '\0', false,
+ N_("Synonym for --debug=files"), NULL);
+
+ DEFINE_special(version_script, options::TWO_DASHES, '\0',
+ N_("Read version script"), N_("FILE"));
+
+ DEFINE_bool(warn_common, options::TWO_DASHES, '\0', false,
+ N_("Warn about duplicate common symbols"),
+ N_("Do not warn about duplicate common symbols (default)"));
+
+ DEFINE_bool(warn_constructors, options::TWO_DASHES, '\0', false,
+ N_("Ignored"), N_("Ignored"));
+
+ DEFINE_bool(warn_search_mismatch, options::TWO_DASHES, '\0', true,
+ N_("Warn when skipping an incompatible library"),
+ N_("Don't warn when skipping an incompatible library"));
+
+ DEFINE_bool(whole_archive, options::TWO_DASHES, '\0', false,
+ N_("Include all archive contents"),
+ N_("Include only needed archive contents"));
+
+ DEFINE_set(wrap, options::TWO_DASHES, '\0',
+ N_("Use wrapper functions for SYMBOL"), N_("SYMBOL"));
+
+ DEFINE_set(trace_symbol, options::TWO_DASHES, 'y',
+ N_("Trace references to symbol"), N_("SYMBOL"));
+
+ DEFINE_string(Y, options::EXACTLY_ONE_DASH, 'Y', "",
+ N_("Default search path for Solaris compatibility"),
+ N_("PATH"));
+
+ DEFINE_special(start_group, options::TWO_DASHES, '(',
+ N_("Start a library search group"), NULL);
+ DEFINE_special(end_group, options::TWO_DASHES, ')',
+ N_("End a library search group"), NULL);
+
+ // The -z options.
+
+ DEFINE_bool(combreloc, options::DASH_Z, '\0', true,
+ N_("Sort dynamic relocs"),
+ N_("Do not sort dynamic relocs"));
+ DEFINE_uint64(common_page_size, options::DASH_Z, '\0', 0,
+ N_("Set common page size to SIZE"), N_("SIZE"));
+ DEFINE_bool(defs, options::DASH_Z, '\0', false,
+ N_("Report undefined symbols (even with --shared)"),
+ NULL);
+ DEFINE_bool(execstack, options::DASH_Z, '\0', false,
+ N_("Mark output as requiring executable stack"), NULL);
+ DEFINE_bool(initfirst, options::DASH_Z, '\0', false,
+ N_("Mark DSO to be initialized first at runtime"),
+ NULL);
+ DEFINE_bool(interpose, options::DASH_Z, '\0', false,
+ N_("Mark object to interpose all DSOs but executable"),
+ NULL);
+ DEFINE_bool(lazy, options::DASH_Z, '\0', false,
+ N_("Mark object for lazy runtime binding (default)"),
+ NULL);
+ DEFINE_bool(loadfltr, options::DASH_Z, '\0', false,
+ N_("Mark object requiring immediate process"),
+ NULL);
+ DEFINE_uint64(max_page_size, options::DASH_Z, '\0', 0,
+ N_("Set maximum page size to SIZE"), N_("SIZE"));
+ DEFINE_bool(copyreloc, options::DASH_Z, '\0', true,
+ NULL,
+ N_("Do not create copy relocs"));
+ DEFINE_bool(nodefaultlib, options::DASH_Z, '\0', false,
+ N_("Mark object not to use default search paths"),
+ NULL);
+ DEFINE_bool(nodelete, options::DASH_Z, '\0', false,
+ N_("Mark DSO non-deletable at runtime"),
+ NULL);
+ DEFINE_bool(nodlopen, options::DASH_Z, '\0', false,
+ N_("Mark DSO not available to dlopen"),
+ NULL);
+ DEFINE_bool(nodump, options::DASH_Z, '\0', false,
+ N_("Mark DSO not available to dldump"),
+ NULL);
+ DEFINE_bool(noexecstack, options::DASH_Z, '\0', false,
+ N_("Mark output as not requiring executable stack"), NULL);
+ DEFINE_bool(now, options::DASH_Z, '\0', false,
+ N_("Mark object for immediate function binding"),
+ NULL);
+ DEFINE_bool(origin, options::DASH_Z, '\0', false,
+ N_("Mark DSO to indicate that needs immediate $ORIGIN "
+ "processing at runtime"), NULL);
+ DEFINE_bool(relro, options::DASH_Z, '\0', false,
+ N_("Where possible mark variables read-only after relocation"),
+ N_("Don't mark variables read-only after relocation"));