Lines Matching defs:opts
292 /// @param opts the options data structure. This is set by the
295 /// @return true if the command line could be parsed and opts filed,
298 parse_command_line(int argc, char* argv[], options& opts)
307 if (opts.file1.empty())
308 opts.file1 = argv[i];
309 else if (opts.file2.empty())
310 opts.file2 = argv[i];
317 opts.display_version = true;
326 opts.missing_operand = true;
327 opts.wrong_option = argv[i];
332 opts.di_root_paths1.push_back
342 opts.missing_operand = true;
343 opts.wrong_option = argv[i];
348 opts.di_root_paths2.push_back
358 opts.missing_operand = true;
359 opts.wrong_option = argv[i];
364 opts.headers_dirs1.push_back(argv[j]);
373 opts.missing_operand = true;
374 opts.wrong_option = argv[i];
377 opts.header_files1.push_back(argv[j]);
386 opts.missing_operand = true;
387 opts.wrong_option = argv[i];
392 opts.headers_dirs2.push_back(argv[j]);
401 opts.missing_operand = true;
402 opts.wrong_option = argv[i];
405 opts.header_files2.push_back(argv[j]);
414 opts.missing_operand = true;
415 opts.wrong_option = argv[i];
418 opts.kernel_abi_whitelist_paths.push_back(argv[j]);
422 opts.show_stats_only = true;
424 opts.show_symtabs = true;
428 opts.display_usage = true;
432 opts.drop_private_types = true;
434 opts.exported_interfaces_only = true;
436 opts.exported_interfaces_only = false;
438 opts.no_default_supprs = true;
440 opts.no_arch = true;
442 opts.no_corpus = true;
444 opts.ignore_soname = true;
446 opts.fail_no_debug_info = true;
449 opts.leaf_changes_only = true;
452 opts.show_deleted_fns = true;
453 opts.show_all_fns = false;
454 opts.show_all_vars = false;
458 opts.show_changed_fns = true;
459 opts.show_all_fns = false;
460 opts.show_all_vars = false;
464 opts.show_added_fns = true;
465 opts.show_all_fns = false;
466 opts.show_all_vars = false;
470 opts.show_deleted_vars = true;
471 opts.show_all_fns = false;
472 opts.show_all_vars = false;
476 opts.show_changed_vars = true;
477 opts.show_all_fns = false;
478 opts.show_all_vars = false;
482 opts.show_added_vars = true;
483 opts.show_all_fns = false;
484 opts.show_all_vars = false;
488 opts.show_all_types = true;
491 opts.show_added_syms = false;
492 opts.show_added_vars = false;
493 opts.show_added_fns = false;
500 if (!(opts.show_changed_fns
501 || opts.show_changed_vars
502 || opts.show_deleted_fns
503 || opts.show_deleted_vars))
505 opts.show_changed_fns = true;
506 opts.show_changed_vars = true;
508 opts.show_deleted_vars = true;
509 opts.show_deleted_fns = true;
512 opts.show_all_fns = false;
513 opts.show_all_vars = false;
516 opts.show_linkage_names = false;
518 opts.show_symbols_not_referenced_by_debug_info = false;
520 opts.show_locs = false;
522 opts.show_offsets_sizes_in_bits = false;
524 opts.show_offsets_sizes_in_bits = true;
526 opts.show_hexadecimal_values = true;
528 opts.show_hexadecimal_values = false;
530 opts.show_relative_offset_changes = false;
537 opts.missing_operand = true;
538 opts.wrong_option = argv[i];
541 opts.suppression_paths.push_back(argv[j]);
549 opts.missing_operand = true;
550 opts.wrong_option = argv[i];
553 opts.drop_fn_regex_patterns.push_back(argv[j]);
554 opts.drop_var_regex_patterns.push_back(argv[j]);
562 opts.missing_operand = true;
563 opts.wrong_option = argv[i];
566 opts.drop_fn_regex_patterns.push_back(argv[j]);
574 opts.missing_operand = true;
575 opts.wrong_option = argv[i];
578 opts.drop_var_regex_patterns.push_back(argv[j]);
586 opts.missing_operand = true;
587 opts.wrong_option = argv[i];
590 opts.keep_fn_regex_patterns.push_back(argv[j]);
591 opts.keep_var_regex_patterns.push_back(argv[j]);
599 opts.missing_operand = true;
600 opts.wrong_option = argv[i];
603 opts.keep_fn_regex_patterns.push_back(argv[j]);
610 opts.missing_operand = true;
611 opts.wrong_option = argv[i];
614 opts.keep_var_regex_patterns.push_back(argv[j]);
617 opts.show_harmless_changes = true;
619 opts.show_harmful_changes = false;
621 opts.show_redundant_changes = true;
623 opts.show_redundant_changes = false;
625 opts.show_impacted_interfaces = true;
627 opts.leverage_dwarf_factorization = false;
629 opts.leverage_dwarf_factorization = false;
631 opts.dump_diff_tree = true;
633 opts.show_stats = true;
635 opts.do_log = true;
638 opts.use_ctf = true;
642 opts.do_debug_self_comparison = true;
646 opts.do_debug_type_canonicalization = true;
651 opts.wrong_option = argv[i];
701 /// @param opts the options instance to use.
706 maybe_check_suppression_files(const options& opts)
708 for (vector<string>::const_iterator i = opts.suppression_paths.begin();
709 i != opts.suppression_paths.end();
715 opts.kernel_abi_whitelist_paths.begin();
716 i != opts.kernel_abi_whitelist_paths.end();
728 /// @param opts the instance of @ref options to consider.
731 options& opts)
735 ctxt->show_leaf_changes_only(opts.leaf_changes_only);
736 ctxt->show_hex_values(opts.show_hexadecimal_values);
737 ctxt->show_offsets_sizes_in_bits(opts.show_offsets_sizes_in_bits);
738 ctxt->show_relative_offset_changes(opts.show_relative_offset_changes);
739 ctxt->show_stats_only(opts.show_stats_only);
740 ctxt->show_deleted_fns(opts.show_all_fns || opts.show_deleted_fns);
741 ctxt->show_changed_fns(opts.show_all_fns || opts.show_changed_fns);
742 ctxt->show_added_fns(opts.show_all_fns || opts.show_added_fns);
743 ctxt->show_deleted_vars(opts.show_all_vars || opts.show_deleted_vars);
744 ctxt->show_changed_vars(opts.show_all_vars || opts.show_changed_vars);
745 ctxt->show_added_vars(opts.show_all_vars || opts.show_added_vars);
746 ctxt->show_linkage_names(opts.show_linkage_names);
747 ctxt->show_locs(opts.show_locs);
749 ctxt->show_soname_change(!opts.ignore_soname);
761 ctxt->show_redundant_changes(opts.show_redundant_changes
762 || opts.leaf_changes_only);
764 (opts.show_symbols_not_referenced_by_debug_info);
766 (opts.show_symbols_not_referenced_by_debug_info && opts.show_added_syms);
767 ctxt->show_unreachable_types(opts.show_all_types);
768 ctxt->show_impacted_interfaces(opts.show_impacted_interfaces);
770 if (!opts.show_harmless_changes)
773 if (!opts.show_harmful_changes)
777 for (vector<string>::const_iterator i = opts.suppression_paths.begin();
778 i != opts.suppression_paths.end();
783 if (!opts.no_default_supprs && opts.suppression_paths.empty())
792 if (!opts.headers_dirs1.empty() || !opts.header_files1.empty())
797 gen_suppr_spec_from_headers(opts.headers_dirs1, opts.header_files1);
802 if (!opts.headers_dirs2.empty() || !opts.header_files2.empty())
807 gen_suppr_spec_from_headers(opts.headers_dirs2, opts.header_files2);
812 ctxt->dump_diff_tree(opts.dump_diff_tree);
820 /// @param opts the command line options.
822 set_generic_options(abigail::elf_based_reader& rdr, options& opts)
824 rdr.options().show_stats = opts.show_stats;
825 rdr.options().do_log = opts.do_log;
827 opts.leverage_dwarf_factorization;
829 opts.assume_odr_for_cplusplus;
846 /// @param opts the options where to get the suppression
849 set_suppressions(abigail::fe_iface& reader, const options& opts)
852 for (vector<string>::const_iterator i = opts.suppression_paths.begin();
853 i != opts.suppression_paths.end();
857 if (reader.corpus_path() == opts.file1
858 && (!opts.headers_dirs1.empty() || !opts.header_files1.empty()))
868 gen_suppr_spec_from_headers(opts.headers_dirs1, opts.header_files1);
871 if (opts.drop_private_types)
877 if (reader.corpus_path() == opts.file2
878 && (!opts.headers_dirs2.empty() || !opts.header_files2.empty()))
888 gen_suppr_spec_from_headers(opts.headers_dirs2, opts.header_files2);
891 if (opts.drop_private_types)
899 opts.kernel_abi_whitelist_paths);
911 /// @param opts the command-line options to configure @p ctxt from.
914 const options& opts)
917 opts.show_all_types);
923 /// @param opts the options to the regex patterns from.
927 set_corpus_keep_drop_regex_patterns(options& opts, corpus_sptr c)
929 if (!opts.drop_fn_regex_patterns.empty())
931 vector<string>& v = opts.drop_fn_regex_patterns;
936 if (!opts.keep_fn_regex_patterns.empty())
938 vector<string>& v = opts.keep_fn_regex_patterns;
943 if (!opts.drop_var_regex_patterns.empty())
945 vector<string>& v = opts.drop_var_regex_patterns;
950 if (!opts.keep_var_regex_patterns.empty())
952 vector<string>& v = opts.keep_var_regex_patterns;
1016 const options& opts)
1021 << "failed to read input file " << opts.file1 << "\n";
1028 if (opts.prepared_di_root_paths1.empty() == 0)
1039 = opts.prepared_di_root_paths1.begin();
1040 i != opts.prepared_di_root_paths1.end();
1043 if (i != opts.prepared_di_root_paths1.end())
1052 if (opts.prepared_di_root_paths2.empty())
1063 = opts.prepared_di_root_paths2.begin();
1064 i != opts.prepared_di_root_paths2.end();
1067 if (i != opts.prepared_di_root_paths2.end())
1090 << opts.file1
1128 options opts;
1129 if (!parse_command_line(argc, argv, opts))
1133 << opts.wrong_option << "\n"
1139 if (opts.missing_operand)
1142 << "missing operand to option: " << opts.wrong_option <<"\n"
1148 if (opts.display_usage)
1155 if (opts.display_version)
1163 prepare_di_root_paths(opts);
1165 if (!maybe_check_suppression_files(opts))
1170 if (!opts.file1.empty() && !opts.file2.empty())
1172 if (!check_file(opts.file1, cerr))
1175 if (!check_file(opts.file2, cerr))
1180 t1_type = guess_file_type(opts.file1);
1181 t2_type = guess_file_type(opts.file2);
1184 if (opts.exported_interfaces_only.has_value())
1185 env.analyze_exported_interfaces_only(*opts.exported_interfaces_only);
1188 if (opts.do_debug_self_comparison)
1192 if (opts.do_debug_type_canonicalization)
1204 set_diff_context_from_opts(ctxt, opts);
1206 files_suppressed = (file_is_suppressed(opts.file1, supprs)
1207 || file_is_suppressed(opts.file2, supprs));
1219 << "Unknown content type for file " << opts.file1 << "\n";
1223 t1 = abixml::read_translation_unit_from_file(opts.file1,
1231 if (opts.use_ctf)
1235 create_best_elf_based_reader(opts.file1,
1236 opts.prepared_di_root_paths1,
1238 opts.show_all_types);
1240 set_generic_options(*rdr, opts);
1241 set_suppressions(*rdr, opts);
1245 || (opts.fail_no_debug_info
1249 argv[0], opts);
1256 abixml::create_reader(opts.file1, env);
1258 set_suppressions(*rdr, opts);
1259 set_native_xml_reader_options(*rdr, opts);
1262 return handle_error(c1_status, /*ctxt=*/0, argv[0], opts);
1268 abixml::create_reader(opts.file1,
1271 set_suppressions(*rdr, opts);
1272 set_native_xml_reader_options(*rdr, opts);
1276 argv[0], opts);
1291 << "Unknown content type for file " << opts.file2 << "\n";
1295 t2 = abixml::read_translation_unit_from_file(opts.file2,
1303 if (opts.use_ctf)
1307 create_best_elf_based_reader(opts.file2,
1308 opts.prepared_di_root_paths2,
1310 opts.show_all_types);
1313 set_generic_options(*rdr, opts);
1314 set_suppressions(*rdr, opts);
1319 || (opts.fail_no_debug_info
1322 return handle_error(c2_status, rdr.get(), argv[0], opts);
1327 abigail::fe_iface_sptr rdr = abixml::create_reader(opts.file2, env);
1329 set_suppressions(*rdr, opts);
1330 set_native_xml_reader_options(*rdr, opts);
1333 return handle_error(c2_status, /*ctxt=*/0, argv[0], opts);
1339 abigail::fe_iface_sptr rdr = abixml::create_reader(opts.file2, env);
1341 set_suppressions(*rdr, opts);
1342 set_native_xml_reader_options(*rdr, opts);
1345 return handle_error(c2_status, /*ctxt=*/0, argv[0], opts);
1365 if (opts.no_arch)
1372 if (opts.no_corpus)
1388 if (opts.show_symtabs)
1398 emit_incompatible_format_version_error_message(opts.file1,
1400 opts.file2,
1406 set_corpus_keep_drop_regex_patterns(opts, c1);
1407 set_corpus_keep_drop_regex_patterns(opts, c2);
1422 if (opts.show_symtabs)
1432 emit_incompatible_format_version_error_message(opts.file1,
1434 opts.file2,