81 "--retain-symbols-file",
85 "--spare-dynamic-tags",
92 "--unresolved-symbols",
93 "--version-exports-section",
100 "--macosx_version_min",
112 "--no-export-dynamic",
135 "--no-strip-discarded",
152 "--accept-unknown-input-arch",
153 "--no-accept-unknown-input-arch",
166 "--Bsymbolic-functions",
168 "--no-check-sections",
169 "--copy-dt-needed-entries",
170 "--no-copy-dt-needed-entries",
175 "--no-fatal-warnings",
176 "--force-exe-suffix",
179 "--print-gc-sections",
180 "--no-print-gc-sections",
182 "--no-define-common",
186 "--allow-shlib-undefined",
187 "--no-allow-shlib-undefined",
188 "--allow-multiple-definition",
189 "--no-undefined-version",
191 "--default-imported-symver",
192 "--no-warn-mismatch",
193 "--no-warn-search-mismatch",
194 "--no-whole-archive",
198 "--print-output-format",
200 "--reduce-memory-overheads",
213 "--traditional-format",
217 "--dynamic-list-data",
218 "--dynamic-list-cpp-new",
219 "--dynamic-list-cpp-typeinfo",
221 "--warn-constructors",
222 "--warn-multiple-gp",
224 "--warn-section-align",
225 "--warn-shared-textrel",
226 "--warn-alternate-em",
227 "--warn-unresolved-symbols",
228 "--error-unresolved-symbols",
232 "--enable-new-dtags",
244 for(
int i=1; i<argc; i++)
246 std::string argv_i=argv[i];
265 *o!=
nullptr && !found;
272 (os.size()>=3 && os[0]==
'-' && os[1]==
'-' &&
"-"+argv_i==os))
282 std::cerr <<
"Warning: missing argument for " << argv_i <<
'\n';
286 else if(os.size()>2 &&
has_prefix(argv_i, os+
"="))
289 set(os, argv[i]+os.size()+1);
307 (os.size()>=3 && os[0]==
'-' && os[1]==
'-' &&
"-"+argv_i==os))
325 (os.size()>=3 && os[0]==
'-' && os[1]==
'-' &&
"-"+argv_i==os))
336 std::cerr <<
"Warning: missing argument for " << argv_i <<
'\n';
340 else if(os.size()==2 &&
has_prefix(argv_i, os))
343 set(os, argv[i]+os.size());
345 else if(os.size()>2 &&
has_prefix(argv_i, os+
"="))
348 set(os, argv[i]+os.size()+1);
351 else if(os.size()>2 &&
has_prefix(
"-"+argv_i, os+
"="))
354 set(os, argv[i]+os.size()+1-1);
361 std::cerr <<
"Warning: uninterpreted ld option '" << argv_i
const char * ld_options_without_argument[]
virtual bool parse(int, const char **)
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[]
parses the command line options into a cmdlinet
void add_infile_arg(const std::string &arg)