79 "--retain-symbols-file",
83 "--spare-dynamic-tags",
90 "--unresolved-symbols",
91 "--version-exports-section",
98 "--macosx_version_min",
111 "--no-export-dynamic",
134 "--no-strip-discarded",
151 "--accept-unknown-input-arch",
152 "--no-accept-unknown-input-arch",
165 "--Bsymbolic-functions",
167 "--no-check-sections",
168 "--copy-dt-needed-entries",
169 "--no-copy-dt-needed-entries",
174 "--no-fatal-warnings",
175 "--force-exe-suffix",
178 "--print-gc-sections",
179 "--no-print-gc-sections",
181 "--no-define-common",
185 "--allow-shlib-undefined",
186 "--no-allow-shlib-undefined",
187 "--allow-multiple-definition",
188 "--no-undefined-version",
190 "--default-imported-symver",
191 "--no-warn-mismatch",
192 "--no-warn-search-mismatch",
193 "--no-whole-archive",
197 "--print-output-format",
199 "--reduce-memory-overheads",
212 "--traditional-format",
216 "--dynamic-list-data",
217 "--dynamic-list-cpp-new",
218 "--dynamic-list-cpp-typeinfo",
220 "--warn-constructors",
221 "--warn-multiple-gp",
223 "--warn-section-align",
224 "--warn-shared-textrel",
225 "--warn-alternate-em",
226 "--warn-unresolved-symbols",
227 "--error-unresolved-symbols",
231 "--enable-new-dtags",
247 for(
int i=1; i<argc; i++)
249 std::string argv_i=argv[i];
268 *o!=
nullptr && !found;
275 (os.size()>=3 && os[0]==
'-' && os[1]==
'-' &&
"-"+argv_i==os))
285 std::cerr <<
"Warning: missing argument for " << argv_i <<
'\n';
289 else if(os.size()>2 &&
has_prefix(argv_i, os+
"="))
292 set(os, argv[i]+os.size()+1);
310 (os.size()>=3 && os[0]==
'-' && os[1]==
'-' &&
"-"+argv_i==os))
328 (os.size()>=3 && os[0]==
'-' && os[1]==
'-' &&
"-"+argv_i==os))
339 std::cerr <<
"Warning: missing argument for " << argv_i <<
'\n';
343 else if(os.size()==2 &&
has_prefix(argv_i, os))
346 set(os, argv[i]+os.size());
348 else if(os.size()>2 &&
has_prefix(argv_i, os+
"="))
351 set(os, argv[i]+os.size()+1);
354 else if(os.size()>2 &&
has_prefix(
"-"+argv_i, os+
"="))
357 set(os, argv[i]+os.size()+1-1);
364 std::cerr <<
"Warning: uninterpreted ld option '" << argv_i
const char * ld_options_without_argument[]
virtual bool parse(int, const char **)
parses the command line options into a cmdlinet
A special command line object for the ld-like options.
void add_arg(const std::string &arg)
bool has_prefix(const std::string &s, const std::string &prefix)
const char * ld_options_with_argument[]
const char * goto_ld_options_with_argument[]
void add_infile_arg(const std::string &arg)