12022-12-02 Dodji Seketeli <dodji@redhat.com> 2 3 NEWS: Update for 2.2 release 4 * NEWS: Update for 2.2 release, with the output of 5 `git shortlog libabigail-2.1..HEAD` 6 72022-12-02 Dodji Seketeli <dodji@redhat.com> 8 9 Bug 29829 - dwarf-reader: Allow DIEs to be in a lexical block 10 * src/abg-dwarf-reader.cc (get_scope_for_die): Support 11 DW_TAG_lexical_block as DIE scope. 12 132022-12-02 Dodji Seketeli <dodji@redhat.com> 14 15 dwarf-reader: Make die_peel_{qual_ptr,typedef} always set peeled type 16 * src/abg-dwarf-reader.cc (die_peel_qual_ptr, die_peel_typedef): 17 If the function returned true, then set the peeled argument even 18 if the function hasn't peeled anything. 19 202022-11-24 Dodji Seketeli <dodji@redhat.com> 21 22 dwarf-reader: Avoid duplicating member functions 23 * src/abg-dwarf-reader.cc 24 (build_or_get_fn_decl_if_not_suppressed): Fix the code that is 25 supposed to avoid duplicating a member function. 26 * tests/data/test-annotate/test14-pr18893.so.abi: Adjust. 27 * tests/data/test-annotate/test15-pr18892.so.abi: Likewise. 28 * tests/data/test-annotate/test17-pr19027.so.abi: Likewise. 29 * tests/data/test-annotate/test18-pr19037-libvtkRenderingLIC-6.1.so.abi: 30 Likewise. 31 * tests/data/test-annotate/test19-pr19023-libtcmalloc_and_profiler.so.abi: 32 Likewise. 33 * tests/data/test-annotate/test20-pr19025-libvtkParallelCore-6.1.so.abi: 34 Likewise. 35 * tests/data/test-annotate/test21-pr19092.so.abi: Likewise. 36 * tests/data/test-read-dwarf/PR22122-libftdc.so.abi: Likewise. 37 * tests/data/test-read-dwarf/test-libandroid.so.abi: Likewise. 38 * tests/data/test-read-dwarf/test10-pr18818-gcc.so.abi: Likewise. 39 * tests/data/test-read-dwarf/test12-pr18844.so.abi: Likewise. 40 * tests/data/test-read-dwarf/test14-pr18893.so.abi: Likewise. 41 * tests/data/test-read-dwarf/test15-pr18892.so.abi: Likewise. 42 * tests/data/test-read-dwarf/test16-pr18904.so.abi: Likewise. 43 * tests/data/test-read-dwarf/test17-pr19027.so.abi: Likewise. 44 * tests/data/test-read-dwarf/test18-pr19037-libvtkRenderingLIC-6.1.so.abi: 45 Likewise. 46 * tests/data/test-read-dwarf/test19-pr19023-libtcmalloc_and_profiler.so.abi: 47 Likewise. 48 * tests/data/test-read-dwarf/test20-pr19025-libvtkParallelCore-6.1.so.abi: 49 Likewise. 50 * tests/data/test-read-dwarf/test21-pr19092.so.abi: Likewise. 51 * tests/data/test-read-dwarf/test22-pr19097-libstdc++.so.6.0.17.so.abi: 52 Likewise. 53 * tests/data/test-read-dwarf/test9-pr18818-clang.so.abi: Likewise. 54 552022-11-23 Dodji Seketeli <dodji@redhat.com> 56 57 dwarf-reader: Leverage ODR & DWZ 58 * doc/manuals/abidiff.rst: Add documentation for 59 --no-leverage-dwarf-factorization and 60 --no-assume-odr-for-cplusplus 61 * doc/manuals/abidw.rst: Likewise. 62 * doc/manuals/abipkgdiff.rst: Likewise. 63 * include/abg-fe-iface.h (options::{leverage_dwarf_factorization, 64 assume_odr_for_cplusplus}): New data members. 65 * src/abg-dwarf-reader.cc (reader::leverage_dwarf_factorization_): 66 New data member. 67 (reader::leverage_dwarf_factorization): New accessor. 68 (compare_dies): If we are allowed to leverage the DWARF 69 factorization and if two type DIEs coming from the 70 .gnu_debugaltlink DWARF section have different offset, then they 71 are different. Also, if we are allowed to assume ODR, use it to 72 speed up class/struct/unions comparisons. 73 * tools/abidiff.cc (options::{assume_odr_for_cplusplus, 74 leverage_dwarf_factorization}): Define new data members. 75 (options::options): Initialize them. 76 (display_usage): Add new help strings for 77 --no-leverage-dwarf-factorization and 78 --no-assume-odr-for-cplusplus. 79 (parse_command_line): Parse these new options. 80 (set_generic_options): New function. 81 (main): Use the new set_generic_options function. 82 * tools/abidw.cc (options::{assume_odr_for_cplusplus, 83 leverage_dwarf_factorization}): Define new data members. 84 (options::options): Initialize them. 85 (display_usage): Add new help strings for 86 --no-leverage-dwarf-factorization and 87 --no-assume-odr-for-cplusplus. 88 (parse_command_line): Parse these new options. 89 (set_generic_options): New function. 90 (load_corpus_and_write_abixml): Use the new set_generic_options 91 function. 92 * tools/abipkgdiff.cc (options::{assume_odr_for_cplusplus, 93 leverage_dwarf_factorization}): Define new data members. 94 (options::options): Initialize them. 95 (display_usage): Add new help strings for 96 --no-leverage-dwarf-factorization and 97 --no-assume-odr-for-cplusplus. 98 (parse_command_line): Parse these new options. 99 (set_generic_options): New function. 100 (compare): Use it. 101 1022022-11-25 Dodji Seketeli <dodji@redhat.com> 103 104 Fix spurious deleted/added virtual destructor change report 105 * src/abg-comparison.cc (find_virtual_dtor_in_map): Define new 106 static function. 107 (class_diff::ensure_lookup_tables_populated): If a virtual 108 destructor is removed from the old binary version but is added to 109 the new one (but through a different name), let's assume the 110 virtual destructor is still there so there is no ABI issue 111 from that point of view. 112 * tests/data/test-diff-pkg/tbb-4.1-9.20130314.fc22.x86_64--tbb-4.3-3.20141204.fc23.x86_64-report-0.txt: Adjust. 113 1142022-11-16 Guillermo E. Martinez via Libabigail <libabigail@sourceware.org> 115 116 ctf-reader: Fix array size representation 117 * src/abg-ctf-reader.cc (build_array_ctf_range): Use 118 * tests/data/Makefile.am: Add new test. 119 `upper_bound' and number of elements to indicate infinite 120 array size. 121 * tests/data/test-read-ctf/test-array-size.abi: New test. 122 * tests/data/test-read-ctf/test-array-size.c: Likewise. 123 * tests/data/test-read-ctf/test-array-size.o: Likewise. 124 * tests/test-read-ctf.cc: Update testsuite. 125 1262022-11-16 Guillermo E. Martinez <guillermo.e.martinez@oracle.com> 127 128 ctf-reader: Fix representation of multidimensional arrays 129 * src/abg-ctf-reader.cc (+build_array_ctf_range): New definition. 130 * tests/data/Makefile.am: Add new testcase. 131 * tests/data/test-read-ctf/test-array-mdimension.abi: New testcase. 132 * tests/data/test-read-ctf/test-array-mdimension.c: Likewise. 133 * tests/data/test-read-ctf/test-array-mdimension.o: Likewise. 134 * tests/data/test-read-ctf/test9.o.abi: Adjust. 135 * tests/test-read-ctf.cc: Update testsuite. 136 1372022-11-16 Guillermo E. Martinez <guillermo.e.martinez@oracle.com> 138 139 ctf-reader: Strip qualification from a qualified array type 140 * src/abg-ctf-reader.cc (maybe_strip_qualification): New 141 definition. 142 (process_ctf_qualified_type): Strip redundant qualifiers. 143 * tests/data/test-read-ctf/test-const-array.abi: New test. 144 * tests/data/test-read-ctf/test-const-array.c: Likewise. 145 * tests/data/test-read-ctf/test-const-array.o: Likewise. 146 * tests/Makefile.am: Add the new test material to source 147 distribution. 148 1492022-11-29 Dodji Seketeli <dodji@redhat.com> 150 151 test-read-ctf: Update tests for fixing size and name for underlying types 152 * src/abg-ctf-reader.cc (process_ctf_{base_type,enum_type}): 153 Look at ctf refence type to build the underlying type if present. 154 * tests/data/Makefile.am: New test cases. 155 * tests/data/test-read-ctf/PR27700/test-PR27700.abi: New test input. 156 * tests/data/test-read-ctf/test-bitfield-enum.abi: Likewise. 157 * tests/data/test-read-ctf/test-bitfield-enum.c: Likewise. 158 * tests/data/test-read-ctf/test-bitfield-enum.o: Likewise. 159 * tests/data/test-read-ctf/test-bitfield.abi: Likewise. 160 * tests/data/test-read-ctf/test-bitfield.c: Likewise. 161 * tests/data/test-read-ctf/test-bitfield.o: Likewise. 162 * tests/data/test-read-ctf/test-enum-many.o.hash.abi: Adjust. 163 * tests/data/test-read-ctf/test-enum-symbol.o.hash.abi: Likewise. 164 * tests/data/test-read-ctf/test-enum.o.abi: Likewise: 165 * tests/data/test-read-ctf/test0.abi: Likewise. 166 * tests/data/test-read-ctf/test0.hash.abi: Likewise. 167 * tests/data/test-read-ctf/test1.so.abi: Likewise. 168 * tests/data/test-read-ctf/test1.so.hash.abi: Likewise. 169 * tests/data/test-read-ctf/test5.o.abi: Likewise. 170 * tests/test-read-ctf.cc: Update test suite. 171 1722022-11-16 Guillermo E. Martinez <guillermo.e.martinez@oracle.com> 173 174 ctf-reader: Fix size and name for underlying types 175 * src/abg-ctf-reader.cc (process_ctf_{base_type,enum_type}): 176 Look at ctf refence type to build the underlying type if present. 177 * tests/data/Makefile.am: New test cases. 178 * tests/data/test-read-ctf/PR27700/test-PR27700.abi: New test input. 179 * tests/data/test-read-ctf/test-bitfield-enum.abi: Likewise. 180 * tests/data/test-read-ctf/test-bitfield-enum.c: Likewise. 181 * tests/data/test-read-ctf/test-bitfield-enum.o: Likewise. 182 * tests/data/test-read-ctf/test-bitfield.abi: Likewise. 183 * tests/data/test-read-ctf/test-bitfield.c: Likewise. 184 * tests/data/test-read-ctf/test-bitfield.o: Likewise. 185 * tests/data/test-read-ctf/test-enum-many.o.hash.abi: Adjust. 186 * tests/data/test-read-ctf/test-enum-symbol.o.hash.abi: Likewise. 187 * tests/data/test-read-ctf/test-enum.o.abi: Likewise: 188 * tests/data/test-read-ctf/test0.abi: Likewise. 189 * tests/data/test-read-ctf/test0.hash.abi: Likewise. 190 * tests/data/test-read-ctf/test1.so.abi: Likewise. 191 * tests/data/test-read-ctf/test1.so.hash.abi: Likewise. 192 * tests/data/test-read-ctf/test5.o.abi: Likewise. 193 * tests/test-read-ctf.cc: Update test suite. 194 1952022-11-16 Guillermo E. Martinez <guillermo.e.martinez@oracle.com> 196 197 ctf-reader: Set alignment-in-bits property to 0 198 * src/abg-ctf-reader.cc (process_ctf_base_type) 199 (process_ctf_function_type, process_ctf_struct_type): Adjust 200 `align_in_bits' argument to `0'. 201 * tests/data/test-diff-pkg-ctf/dirpkg-3-report-1.txt: Adjust test. 202 * tests/data/test-diff-pkg-ctf/dirpkg-3-report-2.txt: Likewise. 203 * tests/data/test-diff-pkg-ctf/gmp-6.x.x86_64-report-0.txt: Likewise. 204 * tests/data/test-read-ctf/PR27700/test-PR27700.abi: Likewise. 205 * tests/data/test-read-ctf/test-PR26568-1.o.abi: Likewise. 206 * tests/data/test-read-ctf/test-PR26568-2.o.abi: Likewise. 207 * tests/data/test-read-ctf/test-ambiguous-struct-A.o.hash.abi: Likewise. 208 * tests/data/test-read-ctf/test-ambiguous-struct-B.o.hash.abi: Likewise. 209 * tests/data/test-read-ctf/test-anonymous-fields.o.abi: Likewise. 210 * tests/data/test-read-ctf/test-array-of-pointers.abi: Likewise. 211 * tests/data/test-read-ctf/test-callback.abi: Likewise. 212 * tests/data/test-read-ctf/test-callback2.abi: Likewise. 213 * tests/data/test-read-ctf/test-conflicting-type-syms-a.o.hash.abi: Likewise. 214 * tests/data/test-read-ctf/test-conflicting-type-syms-b.o.hash.abi: Likewise. 215 * tests/data/test-read-ctf/test-dynamic-array.o.abi: Likewise. 216 * tests/data/test-read-ctf/test-fallback.abi: Likewise. 217 * tests/data/test-read-ctf/test-forward-type-decl.abi: Likewise. 218 * tests/data/test-read-ctf/test-functions-declaration.abi: Likewise. 219 * tests/data/test-read-ctf/test-linux-module.abi: Likewise. 220 * tests/data/test-read-ctf/test-linux-module.abi: Likewise. 221 * tests/data/test-read-ctf/test-list-struct.abi: Likewise. 222 * tests/data/test-read-ctf/test0.abi: Likewise. 223 * tests/data/test-read-ctf/test0.hash.abi: Likewise. 224 * tests/data/test-read-ctf/test1.so.abi: Likewise. 225 * tests/data/test-read-ctf/test1.so.hash.abi: Likewise. 226 * tests/data/test-read-ctf/test2.so.abi: Likewise. 227 * tests/data/test-read-ctf/test2.so.hash.abi: Likewise. 228 * tests/data/test-read-ctf/test3.so.abi: Likewise. 229 * tests/data/test-read-ctf/test3.so.hash.abi: Likewise. 230 * tests/data/test-read-ctf/test4.so.abi: Likewise. 231 * tests/data/test-read-ctf/test4.so.hash.abi: Likewise. 232 * tests/data/test-read-ctf/test5.o.abi: Likewise. 233 * tests/data/test-read-ctf/test7.o.abi: Likewise. 234 * tests/data/test-read-ctf/test8.o.abi: Likewise. 235 * tests/data/test-read-ctf/test9.o.abi: Likewise. 236 2372022-11-22 Guillermo E. Martinez <guillermo.e.martinez@oracle.com> 238 239 Use the CTF reader by default when applicable 240 * doc/manuals/abidiff.rst: Adjust. 241 * doc/manuals/abidw.rst: Likewise. 242 * doc/manuals/abipkgdiff.rst: Likewise. 243 * doc/manuals/kmidiff.rst: Likewise. 244 * include/abg-elf-based-reader.h (initialize): Add member function. 245 * include/abg-elf-reader.h (has_{dwarf,ctf}_debug_info): Add predicate 246 functions. 247 * include/abg-tools-utils.h (create_best_elf_based_reader): Add arguments. 248 * src/abg-ctf-reader.cc (process_ctf_typedef, process_ctf_base_type) 249 (process_ctf_function_type, process_ctf_sou_members, process_ctf_forward_type) 250 (process_ctf_struct_type, process_ctf_union_type, process_ctf_array_type) 251 (process_ctf_qualified_type, process_ctf_pointer_type, process_ctf_enum_type): 252 Remove arguments. Using getters to access required information instead. 253 (reader::cur_tu_): Add data member. 254 (initialize): Add arguments. 255 (cur_transl_unit): Add {get,set)ter. 256 (slurp_elf_info): Clear `STATUS_DEBUG_INFO_NOT_FOUND' if corpus is 257 `LINUX_KERNEL_BINARY_ORIGIN'. 258 (reader::lookup_type): Remove. 259 (reader::build_type): New member function. 260 * src/abg-elf-reader.cc (reader::reader): Locate ctf debug info 261 from binary file. 262 (reader::reader): Reset base `fe_iface' constructor. 263 (reader::has_{dwarf,ctf}_debug_info): New definitions. 264 (reader::read_corpus): Set `STATUS_DEBUG_INFO_NOT_FOUND' according 265 to corpus::origin. 266 * src/abg-tools-utils.cc (dir_contains_ctf_archive): Define new member. 267 (file_has_ctf_debug_info): Looks for kernel ctf debug information archive. 268 (maybe_load_vmlinux_{dwarf,ctf}_corpus): Remove. 269 (load_vmlinux_corpus): Define function to load IR from kernel 270 regardless of the corpus::origin. 271 (build_corpus_group_from_kernel_dist_under): Use 272 create_best_elf_based_reader to select the front-end. 273 (create_best_elf_based_reader): Adjust to allow fallback behaviour 274 for different front-ends. 275 * tests/data/Makefile.am: Add tests. 276 * tests/data/test-diff-pkg-ctf/dirpkg-3-report-2.txt: Adjust. 277 * tests/data/test-read-ctf/test-fallback.abi: New test case. 278 * tests/data/test-read-ctf/test-fallback.c: Likewise. 279 * tests/data/test-read-ctf/test-fallback.o: Likewise. 280 * tests/data/test-read-dwarf/test-fallback.abi: Likewise. 281 * tests/data/test-read-dwarf/test-fallback.c: Likewise. 282 * tests/data/test-read-dwarf/test-fallback.o: Likewise. 283 * tests/test-diff-pkg.cc: Adjust. 284 * tests/test-read-common.cc (test_task::run_abidw): Use the 285 `options:option' field. 286 * tests/test-read-common.h (InOutSpec): Add new member. 287 * tests/test-read-ctf.cc (in_out_specs): Add option field to test 288 suite. Add new test case. 289 * tests/test-read-dwarf.cc: Likewise. 290 * tools/abidiff.cc (main): Use create_best_elf_based_reader. 291 * tools/abidw.cc: Likewise. 292 * tools/abipkgdiff.cc: Likewise. 293 2942022-11-15 Dodji Seketeli <dodji@redhat.com> 295 296 Make Front Ends first class citizens 297 * include/abg-fwd.h (build_internal_underlying_enum_type_name): 298 Move this here from src/abg-dwarf-reader.cc. 299 * include/abg-elf-reader-common.h: Delete this file. Its content 300 is going to be put in the new include/abg-elf-reader.h. 301 * src/abg-elf-reader-common.cc: Likewise. 302 * include/abg-{elf-based-reader, elf-reader, fe-iface}.h: Add new 303 files. 304 * src/abg-fe-iface.cc: Likewise. 305 * include/Makefile.am: Add the new file abg-fe-iface.h, 306 abg-elf-based-reader.h and abg-elf-reader.h to source distribution 307 and remove include/abg-elf-reader-common.h from source 308 distribution. 309 * src/abg-ir.cc (build_internal_underlying_enum_type_name): Move 310 this here from abg-dwarf-reader.cc so that it can be used by other 311 readers. 312 * include/abg-reader.h (abigail::abixml::reader): Rename the 313 namespace abigail::xml_reader into this one. 314 (read_context, create_native_xml_read_context) 315 (read_context_get_path, read_corpus_from_native_xml) 316 (read_corpus_from_native_xml_file) 317 (read_corpus_group_from_native_xml) 318 (read_corpus_group_from_native_xml_file): Remove. 319 (read_translation_unit_from_file) 320 (read_translation_unit_from_buffer) 321 (read_translation_unit_from_istream) 322 (read_translation_unit) 323 (consider_types_not_reachable_from_public_interfaces) 324 (get_types_from_type_id, get_artifact_used_by_relation_map) 325 (load_canonical_type_ids): Take an fe_iface&, not a read_context. 326 (create_reader): Declare new function that returns a 327 fe_iface_sptr. 328 (read_corpus_from_abixml, read_corpus_from_abixml_file) 329 (read_corpus_group_from_abixml) 330 (read_corpus_group_from_abixml_file): Declare new functions. 331 * src/abg-reader.cc (namespace abixml): Rename the 332 xml_reader namespace into this. 333 (abixml::reader_sptr): New typedef. 334 (abixml::reader): Rename read_context into this. Make it 335 inherit the fe_iface interface. 336 (abixml::reader::{m_path, m_env, m_corpus, m_corpus_group, 337 m_exported_decls_builder, m_supprs}): Remove these data members 338 that are now part of the fe_iface parent type. 339 (abixml::reader::{set_environment, get_corpus, set_corpus, 340 set_corpus_group, maybe_add_fn_to_exported_decls, 341 maybe_add_var_to_exported_decls, 342 maybe_check_abixml_canonical_type_stability, 343 suppression_matches_function_sym_name, 344 suppression_matches_variable_name, 345 suppression_matches_variable_sym_name}): Remove. 346 (read_corpus_from_input): Remove. Actually the code of this went 347 into abixml::reader::read_context(). 348 (abixml::reader::get_libxml_reader): Rename the get_reader 349 member function into this. 350 (abixml::add_reader_suppressions): Rename 351 add_read_context_suppressions into this. 352 (abixml::reader::read_corpus): Implement this virtual 353 member function if the fe_iface parent interface. 354 (maybe_set_naming_typedef, advance_cursor) 355 (handle_version_attribute, walk_xml_node_to_map_type_ids) 356 (read_elf_needed_from_input, read_symbol_db_from_input) 357 (get_or_read_and_add_translation_unit, build_needed) 358 (read_elf_needed_from_input, add_read_context_suppressions) 359 (maybe_set_artificial_location, maybe_set_naming_typedef) 360 (build_namespace_decl, build_elf_symbol) 361 (build_elf_symbol_from_reference, build_elf_symbol_db) 362 (build_function_parameter, build_function_decl) 363 (build_function_decl_if_not_suppressed, function_is_suppressed) 364 (type_is_suppressed, build_var_decl_if_not_suppressed) 365 (variable_is_suppressed, variable_is_suppressed, build_var_decl) 366 (build_type_decl, build_qualified_type_decl) 367 (build_pointer_type_def, build_reference_type_def) 368 (build_function_type, build_subrange_type, build_array_type_def) 369 (build_enum_type_decl_if_not_suppressed, build_enum_type_decl) 370 (build_typedef_decl, build_class_decl_if_not_suppressed) 371 (build_union_decl_if_not_suppressed, build_class_decl) 372 (build_union_decl, build_function_tdecl, build_class_tdecl) 373 (build_type_tparameter, build_type_composition) 374 (build_non_type_tparameter, build_non_type_tparameter) 375 (build_template_tparameter, build_template_parameter, build_type) 376 (handle_type_decl, handle_namespace_decl) 377 (handle_qualified_type_decl, handle_pointer_type_def) 378 (handle_reference_type_def, handle_function_type) 379 (handle_array_type_def, handle_enum_type_decl) 380 (handle_typedef_decl, handle_var_decl, handle_function_decl) 381 (handle_class_decl, handle_union_decl, handle_function_tdecl) 382 (read_translation_unit_from_istream): Take or use an 383 abixml::reader rather than a read_context. 384 (read_translation_unit, read_translation_unit_from_input) 385 (consider_types_not_reachable_from_public_interfaces) 386 (get_types_from_type_id, get_artifact_used_by_relation_map) 387 (read_corpus_group_from_input, read_translation_unit) 388 (handle_element_node, read_location, read_artificial_location) 389 (load_canonical_type_ids) : Take an fe_iface&, not a read_context. 390 (create_abixml_reader): Rename create_native_xml_read_context 391 into this. Make it return a fe_iface_sptr. 392 (read_corpus_from_abixml): Rename read_corpus_from_abixml into 393 this. 394 (read_corpus_from_abixml_file): Rename 395 read_corpus_from_native_xml_file into this. 396 (read_context_get_path): Remove. 397 * include/abg-tools-utils.h 398 (abigail::tools_utils::{file_has_dwarf_debug_info, 399 file_has_ctf_debug_info}): Declare new functions. 400 (create_best_elf_based_reader): Declare new function. 401 * include/abg-corpus.h (corpus::add): Pass the translation unit by 402 reference. 403 (corpus::exported_decls_builder::maybe_add_{fn,var}_to_exported_fns): 404 Take a const parameter. 405 * src/abg-corpus-priv.h 406 (corpus::exported_decls_builder::priv::add_{fn,var}_to_exported): 407 Take a const parameter and adjust. 408 * src/abg-corpus.cc 409 (corpus::exported_decls_builder::maybe_add_{fn,var}_to_exported_fns): 410 Take a const parameter. 411 (corpus::add): Take a reference to translation_unit_sptr. 412 * include/abg-suppression.h (abigail::fe_iface): Forward-declare 413 this. 414 (abigail::{suppression_sptr, suppressions_type}): Declare these 415 types here. 416 (abigail::suppr::{suppression_can_match, 417 suppression_matches_function_name, 418 suppression_matches_function_sym_name, 419 suppression_matches_variable_name, 420 suppression_matches_variable_sym_name, 421 suppression_matches_type_name_or_location, 422 is_elf_symbol_suppressed, is_elf_symbol_suppressed, 423 is_function_suppressed, is_variable_suppressed, 424 is_type_suppressed}): Declare these functions here. 425 * src/abg-suppression-priv.h (function_is_suppressed) 426 (variable_is_suppressed, type_is_suppressed) 427 (is_elf_symbol_suppressed): Remove these template functions. 428 * src/abg-suppression.cc (suppression_matches_function_name) 429 (suppression_matches_function_sym_name): Remove. 430 (variable_is_suppressed, suppression_can_match) 431 (suppression_matches_function_name) 432 (suppression_matches_function_sym_name) 433 (suppression_matches_variable_name) 434 (suppression_matches_variable_sym_name) 435 (suppression_matches_type_name_or_location) 436 (is_elf_symbol_suppressed, is_elf_symbol_suppressed) 437 (is_function_suppressed, is_variable_suppressed) 438 (is_type_suppressed): New functions. 439 * include/abg-ctf-reader.h (abigail::ctf::{read_context, 440 create_read_context, read_corpus, 441 read_and_add_corpus_to_group_from_elf, 442 set_read_context_corpus_group, reset_read_context, dic_type_key}): 443 Remove. 444 (ctf::{create_reader, reset_reader}): Declare new 445 functions. 446 * src/abg-ctf-reader.cc (read_context): Remove. 447 (process_ctf_typedef, process_ctf_base_type) 448 (build_ir_node_for_variadic_parameter_type) 449 (process_ctf_function_type, process_ctf_sou_members) 450 (process_ctf_forward_type, process_ctf_struct_type) 451 (process_ctf_union_type, process_ctf_array_type) 452 (process_ctf_qualified_type, process_ctf_pointer_type) 453 (process_ctf_enum_type, fill_ctf_section) 454 (lookup_symbol_in_ctf_archive, dic_type_key): Forward-declare 455 these static functions. 456 (ctf::reader): New class that is the abstraction 457 of the CTF reader. It extends the abigail::elf_based_reader 458 class. This is a renaming of the 459 abigail::ctf::read_context class. 460 (ctf::reader::{elf_handler, elf_fd, 461 elf_handler_dbg, elf_fd_dbg, symtab, debug_info_root_paths_, 462 debug_info_root_paths_}): Remove these data members as they are 463 now properties of the abigail::elf_reader class, which is a parent 464 class of this abigail::ctf::reader class. 465 (ctf::reader::{exported_decls_builder, 466 maybe_add_fn_to_exported_decls, current_corpus_group, 467 has_corpus_group, main_corpus_from_current_group, 468 current_corpus_is_main_corpus_from_current_group, 469 should_reuse_type_from_corpus_group}): Remove these accessors 470 that can now be used from the parent classes abigail::{elf_reader, 471 elf_based_reader}. 472 (ctf::reader::reader): This now delegates to the constructor of 473 elf_based_reader. It doesn't pass any argument to initialize() 474 anymore. 475 (ctf::reader::initialize): Add an overload with no 476 parameter. In the other overload, do not take a pointer to an 477 environment as no new environment can be passed to the instance of 478 reader that is being reset. Adjust the code of the initializer to 479 reflect all the data members that got removed. 480 (ctf::{env, find_ctfa_file, slurp_elf_info, 481 process_ctf_archive, process_ctf_type, lookup_type, read_corpus, 482 ~reader}): New member functions. Most of these were free-form 483 functions that took ctf::read_context as first parameter. 484 In read_corpus, do not set the corpus::LINUX_KERNEL_BINARY_ORIGIN 485 origin as that is now done by elf::reader when it reads the 486 binary. 487 (lookup_type): Remove. These are now member functions of the 488 ctf::reader class. 489 (process_ctf_typedef, process_ctf_base_type) 490 (build_ir_node_for_variadic_parameter_type) 491 (process_ctf_function_type, process_ctf_sou_members) 492 (process_ctf_forward_type, process_ctf_struct_type) 493 (process_ctf_union_type, process_ctf_array_type) 494 (process_ctf_qualified_type, process_ctf_pointer_type): Take a 495 ctf::reader rather an ctf::read_context. Adjust the 496 content of the functions. 497 (process_ctf_type, lookup_type, process_ctf_archive): Remove these 498 and turn them into member functions of ctf::reader. 499 (open_elf_handler, close_elf_handler, find_alt_debuginfo): Remove 500 these ELF handling functions as ELF handling is now done by the 501 elf_reader parent class. 502 (fill_ctf_section): Take a const pointer to Elf_Scn. 503 (slurp_elf_info, find_ctfa_file): Remove this and make it be a 504 member of ctf::reader. Also, make it handle only CTF 505 reader specific pieces. slurp_elf_info now delegates the reading 506 of generic ELF properties to elf::reader by calling 507 elf::reader::read_corpus(). 508 (create_read_context, read_corpus, set_read_context_corpus_group) 509 (read_and_add_corpus_to_group_from_elf): Remove these functions. 510 (create_reader, reset_reader): Create new functions 511 (dic_type_key): Make this static. 512 * include/abg-dwarf-reader.h (abigail::dwarf::elf_type): 513 Move this enum into the namespace abigail::elf_reader in the file 514 include/abg-elf-reader.h. 515 (abigail::dwarf::{read_context, read_context_sptr, 516 create_read_context, read_context_get_path, reset_read_context, 517 add_read_context_suppressions, set_read_context_corpus_group, 518 read_corpus_from_elf, read_and_add_corpus_to_group_from_elf, 519 read_and_add_corpus_to_group_from_elf, 520 add_read_context_suppressions, refers_to_alt_debug_info, 521 has_alt_debug_info, get_soname_of_elf_file, get_type_of_elf_file, 522 set_debug_info_root_path, get_debug_info_root_path, 523 get_show_stats, set_show_stats, set_drop_undefined_syms, 524 set_do_log, set_environment, get_environment}): Remove. 525 * src/abg-dwarf-reader.cc (struct dwfl_deleter, dwfl_sptr) 526 (addr_elf_symbol_sptr_map_type, address_set_type) 527 (address_set_sptr): Delete these types. 528 (read_context::options_type): Remove. The data members of this 529 type got moved to struct fe_iface::options_type. 530 (find_alt_debug_info_link, find_alt_debug_info_path) 531 (find_alt_debug_info, lookup_data_tag_from_dynamic_segment) 532 (elf_file_type, refers_to_alt_debug_info, has_alt_debug_info) 533 (get_soname_of_elf_file, get_type_of_elf_file) : Remove these ELF 534 specific functions from here; move them to the elf_reader 535 namespace. 536 (dwarf::reader): Create new class that extends 537 elf_based_reader. dwarf::read_context is renamed into this 538 type, actually. 539 (dwarf::reader::die_source_dependant_container_set::get_container): 540 Adjust. 541 (dwarf::reader::{supprs_, dwarf_version_, 542 offline_callbacks_, debug_info_root_paths_, handle_, dwarf_, 543 alt_fd_, alt_dwarf_, alt_debug_info_path_, elf_module_, 544 elf_handle_, elf_path_, symtab_section_, cur_corpus_group_, 545 cur_corpus_, dt_needed_, dt_soname_, elf_architecture_, 546 exported_decls_builder_, options_, drop_undefined_syms_}): Remove 547 these ELF-related data members to move them into the elf_reader 548 namespace. 549 (maybe_propagate_canonical_type) 550 (build_translation_unit_and_add_to_ir, build_ir_node_from_die) 551 (add_or_update_class_type, add_or_update_union_type) 552 (build_ir_node_for_void_type) 553 (build_ir_node_for_variadic_parameter_type, build_function_decl) 554 (function_is_suppressed, build_or_get_fn_decl_if_not_suppressed) 555 (build_var_decl, build_or_get_var_decl_if_not_suppressed) 556 (variable_is_suppressed) 557 (propagate_canonical_type) 558 (get_parent_die, get_scope_die, die_is_at_class_scope) 559 (die_location, die_qualified_type_name, die_qualified_name) 560 (die_qualified_type_name_empty) 561 (die_return_and_parm_names_from_fn_type_die) 562 (die_function_signature, die_function_type_is_method_type) 563 (die_pretty_print_type, die_pretty_print_decl, die_pretty_print) 564 (maybe_canonicalize_type, build_subrange_type) 565 (build_subranges_from_array_type_die, compare_dies, die_location) 566 (die_loc_and_name, die_is_effectively_public_decl) 567 (maybe_cache_type_comparison_result) 568 (get_cached_type_comparison_result) 569 (maybe_get_cached_type_comparison_result, die_is_at_class_scope) 570 (die_function_type_is_method_type, die_member_offset) 571 (die_qualified_type_name, die_qualified_decl_name) 572 (die_qualified_name, die_qualified_type_name_empty) 573 (die_return_and_parm_names_from_fn_type_die) 574 (die_function_signature, die_pretty_print_type) 575 (die_pretty_print_decl, die_pretty_print) 576 (at_least_one_decl_only_among_odr_relevant_dies) 577 (compare_as_type_dies, compare_as_decl_and_type_dies) 578 (fn_die_equal_by_linkage_name, try_canonical_die_comparison) 579 (maybe_propagate_canonical_type, propagate_canonical_type) 580 (compare_dies, compare_dies_during_canonicalization) 581 (find_import_unit_point_between_dies, get_parent_die) 582 (get_scope_die, find_lower_bound_in_imported_unit_points) 583 (build_translation_unit_and_add_to_ir) 584 (build_namespace_decl_and_add_to_ir, build_type_decl) 585 (build_enum_underlying_type, build_enum_type) 586 (finish_member_function_reading) 587 (maybe_finish_function_decl_reading) 588 (lookup_class_or_typedef_from_corpus) 589 (is_function_for_die_a_member_of_class) 590 (add_or_update_member_function, add_or_update_class_type) 591 (add_or_update_union_type, build_qualified_type) 592 (schedule_array_tree_for_late_canonicalization) 593 (maybe_strip_qualification, build_pointer_type_def) 594 (build_reference_type, build_function_type, build_subrange_type) 595 (build_subranges_from_array_type_die, build_array_type) 596 (build_typedef_type, build_or_get_var_decl_if_not_suppressed) 597 (build_var_decl, function_is_suppressed) 598 (build_or_get_fn_decl_if_not_suppressed, variable_is_suppressed) 599 (type_is_suppressed, type_is_suppressed) 600 (get_opaque_version_of_type, create_default_fn_sym) 601 (build_function_decl, maybe_canonicalize_type) 602 (build_ir_node_from_die) 603 (build_ir_node_for_variadic_parameter_type): Take a reference to 604 the new dwarf::reader rather than to the previous 605 read_context. Adjust the function body. 606 (return_comparison_result): Adjust. 607 (dwarf::reader::reader): Adjust this from 608 read_context::read_context. 609 (dwarf::reader::initialize): Adjust from 610 dwarf::read_context::initialize. 611 (dwarf::reader::create): New factory static member 612 function. 613 (dwarf::reader::~reader): This doesn't have to clear 614 anything for now. 615 (dwarf::reader::read_corpus): New virtual member function 616 which implements the fe_iface::read_corpus pure virtual interface. 617 This now delegates the reading of the generic ELF properties to 618 elf::reader by calling elf::reader::read_corpus(). 619 Newer front-ends will be able to do the same. 620 (dwarf::reader::reset_corpus): New member function. 621 (dwarf::reader::read_debug_info_into_corpus): Adjust. This 622 is now a member function. Also, do not set the 623 corpus::LINUX_KERNEL_BINARY_ORIGIN here as it's now set by the 624 elf::reader when it loads the binary. 625 (dwarf::reader::{env, drop_undefined_syms, 626 drop_undefined_syms, dwarf_elf_handle, dwarf_per_die_source, 627 elf_path, compute_canonical_die_offset, get_die_source, 628 get_die_from_offset, get_die_qualified_name, 629 get_die_pretty_type_representation, get_die_qualified_type_name, 630 get_die_pretty_representation, odr_is_relevant, 631 set_canonical_die_offset, get_canonical_die_offset, 632 erase_canonical_die_offset, die_wip_classes_map, 633 die_wip_function_types_map, compare_before_canonicalisation, 634 resolve_declaration_only_classes, resolve_declaration_only_enums, 635 symbol_already_belongs_to_a_function, 636 fixup_functions_with_no_symbols, canonicalize_types_scheduled, 637 tu_die_imported_unit_points_map, die_parent_map, 638 find_symbol_table_section, get_variable_address, 639 exported_decls_builder, load_all_types, load_in_linux_kernel_mode, 640 show_stats, do_log, build_die_parent_maps): Adjust. 641 (offset_pairs_stack_type::rdr_): Changed the ctxt_ into this. 642 (offset_pairs_stack_type::offset_pairs_stack_type): Adjust. 643 (offset_pairs_stack_type::{erase_redundant_type_pair_entry, 644 cancel_canonical_propagated_type}): Adjust. 645 (dwarf::reader::{get_suppressions, offline_callbacks, 646 create_default_dwfl, dwfl_handle, elf_module, elf_handle, 647 add_debug_info_root_paths, add_debug_info_root_path, 648 find_alt_debug_info, dwarf, alt_dwarf, alt_debug_info_path, 649 current_corpus, reset_current_corpus, current_corpus_group, 650 has_corpus_group, main_corpus_from_current_group, 651 current_corpus_is_main_corpus_from_current_group, 652 should_reuse_type_from_corpus_group, function_symbol_is_exported, 653 variable_symbol_is_exported, symtab, dt_needed, dt_soname, 654 elf_architecture, is_elf_symbol_suppressed, 655 load_dt_soname_and_needed, load_elf_architecture, 656 load_elf_properties, maybe_add_fn_to_exported_decls, 657 maybe_add_var_to_exported_decls}): Remove these member functions 658 as they got moved into the elf_reader namespace or into the 659 fe_iface class. 660 (dwarf::read_context::{suppression_can_match, 661 suppression_matches_function_sym_name, 662 suppression_matches_function_name, 663 suppression_matches_variable_name, 664 suppression_matches_variable_sym_name, 665 suppression_matches_type_name_or_location}): Move these into the 666 suppr namespace. Make it take an additional parameter that is 667 reference fe_iface. 668 (dwarf::reader::load_debug_info): Remove. This became 669 merged into dwarf::read_debug_info_into_corpus. 670 (dwarf::{set_debug_info_root_path, 671 get_debug_info_root_path, get_show_stats, set_drop_undefined_syms, 672 set_do_log}): Remove. 673 (add_read_context_suppressions) 674 (set_read_context_corpus_group, read_corpus_from_elf): Remove. 675 (read_debug_info_into_corpus): This became a member function of 676 dwarf::reader. 677 (create_reader): Renamed create_read_context into this. 678 Make it return an elf_based_reader_sptr, like the other front-end 679 factory functions. Adjust. 680 (reset_dwarf_reader): Renamed reset_read_context into this. 681 Adjust. 682 (read_corpus_from_elf): Adjust. 683 * src/abg-elf-based-reader.cc: New file. 684 * src/abg-elf-helpers.h (struct dwfl_deleter, dwfl_sptr) 685 (addr_elf_symbol_sptr_map_type, address_set_sptr): Move these 686 types here from abg-dwarf-reader.cc 687 (initialize_dwfl_callbacks, lookup_data_tag_from_dynamic_segment): 688 * src/abg-elf-helpers.cc (lookup_data_tag_from_dynamic_segment) 689 (lookup_data_tag_from_dynamic_segment, initialize_dwfl_callbacks) 690 (create_new_dwfl_handle, get_soname_of_elf_file): New functions 691 that got moved here from the factorizing of abg-dwarf-reader.cc 692 and abg-ctf-reader.cc. 693 * src/abg-tools-utils.cc (file_has_dwarf_debug_info) 694 (file_has_ctf_debug_info): New functions. 695 (load_generate_apply_suppressions): Take an elf_based_reader, not 696 a dwarf::read_context. 697 (maybe_load_vmlinux_dwarf_corpus): Adjust the body to use the new 698 front-end types. 699 * src/Makefile.am: Add the new files src/abg-{fe-iface, 700 elf-based-reader, elf-reader}.cc to source distribution. Remove 701 src/abg-elf-reader-common.cc. 702 * tools/Makefile.am: Factorize linking to libabigail.so by using 703 LDADD. 704 * tools/abicompat.cc (read_corpus, main): Adjust. 705 * tools/abidiff.cc (set_suppressions) 706 (set_native_xml_reader_options, handle_error, main): Adjust. 707 * tools/abidw.cc (set_suppressions, load_corpus_and_write_abixml) 708 (load_kernel_corpus_group_and_write_abixml): Adjust. 709 * tools/abilint.cc (build_type_use_tree, show_how_type_is_used) 710 (set_suppressions, main): Adjust. 711 * tools/abipkgdiff.cc (elf_file::type, compare, compare_to_self) 712 (create_maps_of_package_content) 713 (compare_prepared_userspace_packages) 714 (self_compare_prepared_userspace_package): Adjust. 715 * tools/abisym.cc: Adjust invocation to 716 abigail::dwarf::lookup_symbol_from_elf, from 717 abigail::dwarf_reader::lookup_symbol_from_elf. 718 * tools/kmidiff.cc (main): Adjust. 719 * tests/print-diff-tree.cc (main): Adjust. 720 * tests/test-abidiff.cc (main): Likewise. 721 * tests/test-diff-dwarf.cc (main): Likewise. 722 * tests/test-ir-walker.cc (main): Likewise. 723 * tests/test-read-ctf.cc (test_task_ctf::perform): Likewise. 724 * tests/test-read-dwarf.cc: Remove the useless "using" statements. 725 * tests/test-read-write.cc: Likewise. 726 * tests/test-symtab.cc (read_corpus, TEST_CASE) 727 (assert_symbol_count): Adjust. 728 * tests/data/test-read-ctf/test0.abi: Adjust. 729 * tests/data/test-read-ctf/test0.hash.abi: Likewise. 730 * tests/data/test-read-ctf/test1.so.abi: Likewise. 731 * tests/data/test-read-ctf/test1.so.hash.abi: Likewise. 732 * tests/data/test-read-ctf/test2.so.abi: Likewise. 733 * tests/data/test-read-ctf/test2.so.hash.abi: Likewise. 734 * tests/data/test-read-ctf/test3.so.abi: Likewise. 735 * tests/data/test-read-ctf/test3.so.hash.abi: Likewise. 736 * tests/data/test-read-ctf/test4.so.abi: Likewise. 737 * tests/data/test-read-ctf/test4.so.hash.abi: Likewise. 738 7392022-11-10 Dodji Seketeli <dodji@redhat.com> 740 741 Use environment by reference. 742 * include/abg-corpus.h (corpus::corpus) 743 (corpus_group::corpus_group): Take environment&, not environment* 744 as parameter. 745 (corpus::{get_environment, set_environment}): Take or return 746 environment&, not environment*. 747 * src/abg-corpus.cc (corpus::corpus): Likewise. 748 (corpus::{get_environment, set_environment}): Likewise. 749 (corpus::add): Don't update the environment of the translation 750 unit. 751 (corpus::{record_type_as_reachable_from_public_interfaces, 752 type_is_reachable_from_public_interfaces, init_format_version, 753 add_corpus}): Adjust for accessing a reference to environment, 754 rather than a pointer. 755 * include/abg-ctf-reader.h (create_read_context): Take or return 756 environment&, not environment*. 757 * src/abg-ctf-reader.cc (read_context::ir_env): Make this a 758 reference to environment, not pointer anymore. 759 (read_context::read_context): Initialize the reference to 760 environment. 761 (read_context::initialize): Do not re-set the environment. 762 (process_ctf_base_type) 763 (build_ir_node_for_variadic_parameter_type) 764 (process_ctf_enum_type, read_corpus): Adjust for accessing a 765 reference to environment, rather than a pointer. 766 (create_read_context, reset_read_context): Take environment&, not 767 environment*. 768 * include/abg-dwarf-reader.h (create_read_context) 769 (reset_read_context, read_corpus_from_elf) 770 (lookup_symbol_from_elf, lookup_public_function_symbol_from_elf): 771 Likewise. 772 * src/abg-dwarf-reader.cc (lookup_symbol_from_sysv_hash_tab) 773 (lookup_symbol_from_gnu_hash_tab) 774 (lookup_symbol_from_elf_hash_tab, lookup_symbol_from_symtab) 775 (lookup_symbol_from_elf, lookup_public_function_symbol_from_elf): 776 Likewise. 777 (read_context::options_type::env): Make this be a reference to 778 environment, not a pointer. 779 (read_context::options::options): Remove the default constructor. 780 Add a new one to initialize the environment data member. 781 (read_context::read_context): Take environment&, not environment*. 782 Initialize the options_ data member. 783 (read_context::initialize): Do not take or initialize an 784 environment anymore. 785 (read_context::env): Return or take environment&, not 786 environment*. 787 (read_context::{get_die_qualified_name, 788 get_die_qualified_type_name, get_die_pretty_type_representation, 789 get_die_pretty_representation, compare_before_canonicalisation}) 790 (build_translation_unit_and_add_to_ir, build_function_type) 791 (build_typedef_type, read_debug_info_into_corpus) 792 (read_debug_info_into_corpus, build_ir_node_from_die) 793 (build_ir_node_for_variadic_parameter_type, has_alt_debug_info): 794 Adjust to use an environment&, not a pointer. 795 (create_default_fn_sym, create_read_context) 796 (read_corpus_from_elf, lookup_symbol_from_elf) 797 (lookup_public_function_symbol_from_elf): Take environment&, not 798 environment*. 799 (reset_read_context): Do not take or reset environment* anymore. 800 * include/abg-fwd.h (type_or_void): Likewise. 801 * include/abg-ir.h (translation_unit::translation_unit): Likewise. 802 (translation_unit::{get_environment, set_environment}): Likewise. 803 (elf_symbol::elf_symbol): Likewise. 804 (elf_symbol::create): Remove the overload that takes no 805 parameter. Then for overload that take parameters then take 806 environment&, not environment*. 807 (elf_symbol::get_environment): Take environment&, not 808 environment*. 809 (type_or_decl_base::type_or_decl_base): Make the copy constructor 810 and assignment operator private. 811 (type_or_decl_base::{s,g}et_environment): Take or return 812 environment& not environment*. 813 (type_or_decl_base::set_environment_for_artifact): Erase these 814 methods. 815 (decl_base::decl_base): Make copy constructor private. Take or 816 return environment&, not environment* for the other constructors. 817 (scope_decl::scope_decl): Take or return environment&, not 818 environment*. 819 (type_base::type_base): Likewise. 820 (scope_type_decl::scope_type_decl): Likewise. 821 (namespace_decl::namespace_decl): Likewise. 822 (qualified_type_def::qualified_type_def): Likewise. 823 (pointer_type_def::pointer_type_def): Likewise. 824 (reference_type_def::reference_type_def): Likewise. 825 (array_type_def::subrange_type::subrange_type): Likewise. 826 (enum_type_def::enumerator::enumerator): Likewise. 827 (enum_type_def::enumerator::{get_name, get_qualified_name}): 828 Return a string&, no more interned_string&. As the enumerator 829 don't have an enumerator anymore, there is no way to intern the 830 string anymore. Hopefully this won't incur a performance loss. 831 (typedef_decl::typedef_decl, function_type::function_type) 832 (method_type::method_type, template_decl::template_decl) 833 (function_tdecl::function_tdecl, class_tdecl::class_tdecl) 834 (class_or_union::class_or_union, class_decl::class_decl) 835 (union_decl::union_decl): Take or return environment&, not 836 environment*. 837 * include/abg-reader.h (read_translation_unit_from_file) 838 (read_translation_unit_from_buffer) 839 (read_translation_unit_from_istream) 840 (create_native_xml_read_context, create_native_xml_read_context) 841 (read_corpus_from_native_xml, read_corpus_from_native_xml_file) 842 (read_corpus_group_from_native_xml) 843 (read_corpus_group_from_native_xml_file): Likewise. 844 * include/abg-tools-utils.h 845 (build_corpus_group_from_kernel_dist_under): Likewise. 846 * src/abg-tools-utils.cc (maybe_load_vmlinux_dwarf_corpus) 847 (maybe_load_vmlinux_ctf_corpus) 848 (build_corpus_group_from_kernel_dist_under): Likewise. 849 * include/abg-writer.h (create_write_context): Likewise. 850 * src/abg-writer.cc (id_manager::m_env, id_manager::id_manager) 851 (id_manager::get_environment, id_manager::get_id) 852 (id_manager::get_id_with_prefix): Adjust. 853 (write_context::m_env, write_context::write_context) 854 (write_context::get_environment, write_context::get_config) 855 (write_context::get_id_for_type, write_context::decl_is_emitted) 856 (write_context::record_decl_as_emitted, create_write_context) 857 (write_class_decl): Likewise. 858 * src/abg-comparison.cc (compute_diff): Stop ensuring that the two 859 artifacts being compare are in the same environment. Now that the 860 environment is passed by reference, the potential for 861 accendentally comparing artifacts coming from different 862 environments is very low, given how the API is used in practice. 863 This is in the overloads for decl_base_sptr, type_base_sptr, 864 var_decl_sptr, pointer_type_def_sptr, array_type_def_sptr, 865 reference_type_def_sptr, qualified_type_def_sptr, 866 enum_type_decl_sptr, class_decl_sptr, class_decl::base_spec_sptr, 867 union_decl_sptr, scope_decl_sptr, function_decl::parameter_sptr, 868 function_type_sptr, function_decl_sptr, type_decl_sptr, 869 typedef_decl_sptr, translation_unit_sptr, corpus_sptr. 870 * src/abg-corpus-priv.h (corpus::priv::env): Make this be a 871 reference to environments, not a pointer. 872 (corpus::priv::priv): Pass environment&, not environment*. 873 * src/abg-ir-priv.h (translation_unit::priv::env_): Make this an 874 environment&, not an environment* anymore. 875 (translation_unit::priv::priv): Take an environment&, not an 876 environment*. 877 (environment::priv::{confirm_ct_propagation_for_types_dependant_on, 878 confirm_ct_propagation, 879 cancel_ct_propagation_for_types_dependant_on, 880 mark_as_being_compared, unmark_as_being_compared, 881 comparison_started, mark_as_being_compared, comparison_started}): 882 Adjust to use an environment&, not a pointer. 883 * src/abg-ir.cc (class environment_setter): Remove this class. 884 (push_composite_type_comparison_operands) 885 (pop_composite_type_comparison_operands, try_canonical_compare) 886 (return_comparison_result, translation_unit::{get_global_scope, 887 bind_function_type_life_time}): Adjust. 888 (translation_unit::{translation_unit, get_environment}): Take or 889 get an environment&, not an environment*. Remove the getter that 890 returns an environment*. 891 (elf_symbol::priv::env_): Make this an environment&, not an 892 environment*. 893 (elf_symbol::priv::priv): Adjust. 894 (elf_symbol::elf_symbol): Remove the default constructor. Change 895 the one that takes an environment. 896 (elf_symbol::create): Remove the default one. Adjust the one that 897 takes an environment. 898 (elf_symbol::get_environment): Adjust. 899 (elf_symbol::set_environment_for_artifact): Remove. 900 (environment::{get_void_type, get_variadic_parameter_type}): 901 Adjust. 902 (type_or_decl_base::priv::env_): Make this be a const 903 environment&, not a const environment*. 904 (type_or_decl_base::priv::priv): Adjust. 905 (type_or_decl_base::type_or_decl_base): Remove the default and 906 copy constructor. 907 (type_or_decl_base::{set_environment, operator=}) 908 (set_environment_for_artifact): Remove. 909 (type_or_decl_base::get_environment): Adjust. 910 (decl_base::{decl_base, set_name, set_naming_typedef, 911 set_linkage_name}): Adjust. 912 (get_decl_name_for_comparison, strip_typedef) 913 (strip_useless_const_qualification): Adjust. 914 (scope_decl::{scope_decl, add_member_decl, insert_member_decl}): 915 Adjust. 916 (get_generic_anonymous_internal_type_name, get_type_name) 917 (get_name_of_pointer_to_type, get_name_of_reference_to_type) 918 (get_name_of_qualified_type, get_function_type_name) 919 (get_method_type_name, is_void_pointer_type, lookup_basic_type) 920 (lookup_union_type, lookup_union_type_per_location) 921 (lookup_enum_type, lookup_typedef_type, lookup_pointer_type) 922 (lookup_type, lookup_basic_type_per_location) 923 (lookup_basic_type_per_location, lookup_basic_type) 924 (lookup_class_type, lookup_class_types) 925 (lookup_class_type_per_location, lookup_union_type) 926 (lookup_enum_type, lookup_enum_types) 927 (lookup_enum_type_per_location, lookup_typedef_type) 928 (lookup_typedef_type_per_location, maybe_update_types_lookup_map) 929 (maybe_update_types_lookup_map) 930 (synthesize_type_from_translation_unit) 931 (synthesize_function_type_from_translation_unit) 932 (demangle_cplus_mangled_name, type_or_void) 933 (types_defined_same_linux_kernel_corpus_public) 934 (compare_types_during_canonicalization) 935 (type_base::get_canonical_type_for, type_base::type_base) 936 (type_base::get_cached_pretty_representation) 937 (type_decl::type_decl, type_decl::get_qualified_name): Adjust. 938 (scope_type_decl::scope_type_decl) 939 (namespace_decl::namespace_decl, qualified_type_def::build_name) 940 (qualified_type_def::qualified_type_def) 941 (qualified_type_def::get_qualified_name) 942 (qualified_type_def::set_underlying_type) 943 (pointer_type_def::pointer_type_def) 944 (pointer_type_def::set_pointed_to_type) 945 (reference_type_def::reference_type_def) 946 (reference_type_def::set_pointed_to_type) 947 (array_type_def::subrange_type::subrange_type) 948 (array_type_def::array_type_def, array_type_def::update_size) 949 (array_type_def::set_element_type) 950 (array_type_def::append_subranges) 951 (array_type_def::get_qualified_name, enum_has_non_name_change): 952 Adjust. 953 (enum_type_decl::enumerator::priv::env_): Remove this pointer to 954 env. This is because the enumerator must be copy-able. As the 955 enumerator doesn't have an env anymore, it can't intern strings. 956 So the enumerator name and qualified name is not going to be 957 interned. If that incurs a performance hit, we'll reconsider this 958 decision. For now, it seems to work OK. As it simplifies things, 959 I am keeping this for now. 960 (enum_type_decl::enumerator::priv::{name, qualified_name}): Make 961 this be string, not interned_string. 962 (enum_type_decl::enumerator::get_environment): Remove. 963 (enum_type_decl::enumerator::priv::priv): Adjust. 964 (enum_type_decl::enumerator::enumerator) 965 (enum_type_decl::enumerator::operator=) 966 (enum_type_decl::enumerator::get_name) 967 (enum_type_decl::enumerator::get_qualified_name) 968 (enum_type_decl::enumerator::set_name): Likewise. 969 (typedef_decl::typedef_decl): Adjust. 970 (var_decl::get_id, var_decl::get_qualified_name): Adjust. 971 (function_type::function_type, method_type::method_type) 972 (function_decl::get_pretty_representation_of_declarator) 973 (function_decl::set_symbol): Likewise. 974 (function_decl::get_id, function_decl::parameter::get_type) 975 (function_decl::parameter::get_type_name) 976 (function_decl::parameter::get_type_pretty_representation) 977 (function_decl::parameter::get_name_id) 978 (class_or_union::class_or_union, class_decl::class_decl) 979 (class_decl::add_base_specifier, union_decl::union_decl) 980 (union_decl::union_decl, template_decl::template_decl) 981 (class_tdecl::class_tdecl) 982 (maybe_cancel_propagated_canonical_type) 983 (dump_classes_being_compared) 984 (dump_fn_types_being_compared, copy_member_function) 985 (maybe_propagate_canonical_type, keep_type_alive) 986 (is_non_canonicalized_type, qualified_name_setter::do_update): 987 Likewise. 988 (equals): Adjust the overloads for var_decl, function_type, 989 class_or_union, class_decl, union_decl. 990 * src/abg-reader.cc (read_context::m_env): Make this be an 991 environment&, not an environment*. 992 (read_context::read_context): Adjust 993 (read_context::set_environment): Remove. 994 (read_context::{get_environment, 995 maybe_check_abixml_canonical_type_stability}): Adjust. 996 (read_corpus_from_input, read_corpus_group_from_native_xml) 997 (read_corpus_group_from_native_xml_file) 998 (read_translation_unit_from_file) 999 (read_translation_unit_from_buffer, read_translation_unit) 1000 (maybe_map_type_with_type_id, build_namespace_decl) 1001 (build_elf_symbol, build_function_parameter, build_function_decl) 1002 (build_function_type, build_enum_type_decl, build_class_decl) 1003 (build_union_decl, build_function_tdecl, build_class_tdecl) 1004 (build_type_tparameter, read_translation_unit_from_istream) 1005 (create_native_xml_read_context, read_corpus_from_native_xml): 1006 Likewise. 1007 * src/abg-symtab-reader.h (symtab::load): Likewise. 1008 * src/abg-symtab-reader.cc (symtab::load): Likewise. 1009 * tests/print-diff-tree.cc (main): Likewise. 1010 * tests/test-abidiff.cc (main): Likewise. 1011 * tests/test-diff-dwarf.cc (main): Likewise. 1012 * tests/test-ir-walker.cc (main): Likewise. 1013 * tests/test-read-ctf.cc (test_task_ctf::perform): Likewise. 1014 * tests/test-symtab.cc (read_corpus): Likewise. 1015 * tools/abicompat.cc (read_corpus, main): Likewise. 1016 * tools/abidiff.cc (main): Likewise. 1017 * tools/abidw.cc (load_corpus_and_write_abixml) 1018 (load_kernel_corpus_group_and_write_abixml, main): Likewise. 1019 * tools/abilint.cc (main): Likewise. 1020 * tools/abipkgdiff.cc (compare, compare_to_self) 1021 (compare_prepared_linux_kernel_packages, compare_task::perform): 1022 Likewise. 1023 * tools/abisym.cc (main): Likewise. 1024 * tools/kmidiff.cc (main): Likewise. 1025 10262022-11-18 Aleksei Vetrov <vvvvvv@google.com> 1027 1028 symtab: add support for CRC values from __kcrctab 1029 * src/abg-elf-helpers.h (get_crc_for_symbol): Defined new 1030 helper function to extract CRC from ELF symbol. 1031 * src/abg-elf-helpers.cc (get_crc_for_symbol): Implemented this 1032 function with support of old and new CRC values format. 1033 * src/abg-symtab-reader.cc (symtab::load_): Used the new 1034 function when building CRC values map. 1035 Change-Id: I7de5c737d5caaef0c5b7b2ea0d448368889a16be 1036 10372022-11-08 Sam James <sam@gentoo.org> 1038 1039 Use xz as the default tarball compression format 1040 * configure.ac: add dist-xz to AM_INIT_AUTOMAKE. 1041 * Makefile.am: adjust $(TARBALL) to new extension. 1042 * Makefile.am: pass XZ_OPT="-0" for distcheck-fast. 1043 10442022-11-11 Giuliano Procida <gprocida@google.com> 1045 1046 Narrow Linux symbol CRCs to 32 bits 1047 * include/abg-ir.h (elf_symbol::elf_symbol): Change CRC type 1048 from optional<uint64_t> to optional<uint32_t>. 1049 (elf_symbol::create): Likewise. 1050 (elf_symbol::get_crc): Likewise. 1051 (elf_symbol::set_crc): Likewise. 1052 * src/abg-ir.cc (elf_symbol::priv) Change CRC type from 1053 optional<uint64_t> to optional<uint32_t>. 1054 (elf_symbol::priv::priv): Likewise. 1055 (elf_symbol::elf_symbol): Likewise. 1056 (elf_symbol::create): Likewise. 1057 (elf_symbol::get_crc): Likewise. 1058 (elf_symbol::set_crc): Likewise. 1059 * src/abg-reporter-priv.cc (maybe_report_diff_for_symbol): 1060 Change CRC type from optional<uint64_t> to 1061 optional<uint32_t>. 1062 * src/abg-symtab-reader.cc (symtab::load_): Change crc_values 1063 value type from uint64_t to uint32_t. 1064 10652022-11-08 Dodji Seketeli <dodji@redhat.com> 1066 1067 kmidiff: Fix spacing in the help string 1068 * tools/kmidiff.cc (display_usage): Fix spacing. 1069 10702022-10-14 Dodji Seketeli <dodji@redhat.com> 1071 1072 ir: Don't crash when looking at corpus-less translation units 1073 * src/abg-ir.cc ({decl,type}_topo_comp::operator()): Support types 1074 that inherits from an empty corpus. 1075 10762022-10-20 Dodji Seketeli <dodji@redhat.com> 1077 1078 rhbz2114909 - Refer to changed base classes using their non-qualified names 1079 * src/abg-comparison.cc 1080 (class_diff::ensure_lookup_tables_populated): Refer to the added 1081 or removed base class using its qualified name. 1082 * src/abg-ir.cc (class_decl::base_spec::base_spec): Set the 1083 qualified name of the base_spec. 1084 * tests/data/test-abidiff-exit/test-rhbz2114909-report-1.txt: New 1085 reference test output. 1086 * tests/data/test-abidiff-exit/test-rhbz2114909-v{0,1}.o: New 1087 input test binaries. 1088 * tests/data/test-abidiff-exit/test-rhbz2114909-v{0,1}.cc: Source 1089 code of the binaries, above. 1090 * tests/data/Makefile.am: Add the new test materials above to 1091 source distribution. 1092 * tests/test-abidiff-exit.cc (in_out_specs): Add the new tests to 1093 this harness. 1094 * tests/data/test-diff-pkg/libsigc++-2.0-0c2a_2.4.0-1_amd64--libsigc++-2.0-0v5_2.4.1-1ubuntu2_amd64-report-0.txt: Adjust. 1095 10962022-10-16 Xiaole He <hexiaole@kylinos.cn> 1097 1098 abg-diff-utils: fix typo in comments 1099 * src/abg-diff-utils.h: fix typo in comments 1100 11012022-10-16 Xiaole He <hexiaole@kylinos.cn> 1102 1103 abg-reader: optimize if construction 1104 * src/abg-reader.cc: 1105 11062022-10-16 Xiaole He <hexiaole@kylinos.cn> 1107 1108 abg-ir: add missing else 1109 * src/abg-ir.cc (bind_function_type_life_time): add missing 1110 else 1111 Tested-by: Xiaole He <hexiaole@kylinos.cn> 1112 11132022-10-12 Dodji Seketeli <dodji@redhat.com> 1114 1115 dwarf-reader: Fix class size setting bug 1116 * src/abg-dwarf-reader.cc (add_or_update_class_type): If we are 1117 looking at a class DIE with children node, if it's advertized as 1118 having non-zero size, then update the size. 1119 * tests/data/test-annotate/libtest23.so.abi: Adjust. 1120 * tests/data/test-annotate/test17-pr19027.so.abi: Likewise. 1121 * tests/data/test-annotate/test18-pr19037-libvtkRenderingLIC-6.1.so.abi: 1122 Likewise. 1123 * tests/data/test-annotate/test19-pr19023-libtcmalloc_and_profiler.so.abi: 1124 Likewise. 1125 * tests/data/test-annotate/test20-pr19025-libvtkParallelCore-6.1.so.abi: 1126 Likewise. 1127 * tests/data/test-diff-dwarf-abixml/test0-pr19026-libvtkIOSQL-6.1.so.1-report-0.txt: 1128 Likewise. 1129 * tests/data/test-read-dwarf/libtest23.so.abi: Likewise. 1130 * tests/data/test-read-dwarf/test17-pr19027.so.abi: Likewise. 1131 * tests/data/test-read-dwarf/test18-pr19037-libvtkRenderingLIC-6.1.so.abi: 1132 Likewise. 1133 * tests/data/test-read-dwarf/test19-pr19023-libtcmalloc_and_profiler.so.abi: 1134 Likewise. 1135 * tests/data/test-read-dwarf/test20-pr19025-libvtkParallelCore-6.1.so.abi: 1136 Likewise. 1137 11382022-10-10 Dodji Seketeli <dodji@redhat.com> 1139 1140 ir: Properly indent overload of equals() for class_decl 1141 * src/abg-ir.cc (equals): Fix indentation. 1142 11432022-10-10 Dodji Seketeli <dodji@redhat.com> 1144 1145 ir: Fix a wrong comment in canonicalize() 1146 * src/abg-ir.cc (canonicalize): Fix a comment. 1147 11482022-10-10 Dodji Seketeli <dodji@redhat.com> 1149 1150 ir: remove redundant cycle detection code in equals 1151 * src/abg-ir.cc (equals): In the overload for class_or_union 1152 remove redundant cycle detection code when comparison a decl-only 1153 class to another class. 1154 11552022-10-07 Dodji Seketeli <dodji@redhat.com> 1156 1157 Bug 29650 - Caching class comparison result potentially too early 1158 * src/abg-ir.cc (equal): In the overload of class_or_union do not 1159 cache the result comparing just the data members sub-types of of 1160 classes. In the overload for class_decl, put cycle detection 1161 management code /after/ the call to equals for class_or_union, 1162 because that called function does perform the cycle detection 1163 management as well; otherwise, that introduces an unwarranted 1164 redundancy. In the overload of equals for union_decl, cache the 1165 result of the comparison. 1166 * tests/data/test-abidiff/test-PR18791-report0.txt: Adjust. 1167 * tests/data/test-diff-pkg/tbb-4.1-9.20130314.fc22.x86_64--tbb-4.3-3.20141204.fc23.x86_64-report-0.txt: 1168 Adjust. 1169 * tests/data/test-diff-pkg/tbb-4.1-9.20130314.fc22.x86_64--tbb-4.3-3.20141204.fc23.x86_64-report-1.txt: 1170 Adjust. 1171 11722022-10-07 Dodji Seketeli <dodji@redhat.com> 1173 1174 abidiff: add a --debug-tc option 1175 * doc/manuals/abidiff.rst: Add documentation for the new 1176 --debug-tc option. Fix the existing documentation for 1177 --debug-self-comparison. 1178 * tools/abidiff.cc (options::do_debug_self_comparison): Renamed 1179 options::do_debug into this. 1180 (options::do_debug_type_canonicalization): Add new data member. 1181 (display_usage): Fix help string for the --debug option that is 1182 now --debug-self-comparison. Also, add a help string for the new 1183 option --debug-tc option. 1184 (main): Adjust use options::do_debug into 1185 options::do_debug_self_comparison. Call 1186 environment::debug_type_canonicalization() if the user provided 1187 the --debug-tc option. 1188 11892022-10-02 Dodji Seketeli <dodji@redhat.com> 1190 1191 ir: Fix documentation of canonical type propagation 1192 * src/abg-ir.cc (on-the-fly-canonicalization): Enclose the comment 1193 into <pre> html tag to make the ascii-art graph look good. 1194 11952022-10-02 Dodji Seketeli <dodji@redhat.com> 1196 1197 Update website for 2.1 release. 1198 * doc/website/mainpage.txt: 1199 12002022-09-26 Dodji Seketeli <dodji@redhat.com> 1201 1202 Bump version number to 2.2 1203 * configure.ac: Bump version number to 2.2 1204 12052022-09-25 Dodji Seketeli <dodji@redhat.com> 1206 1207 Update NEWS file for 2.1 1208 * NEWS: Update for 2.1. 1209 12102022-09-25 Dodji Seketeli <dodji@redhat.com> 1211 1212 Update ChangeLog for 2.1 release. 1213 * ChangeLog: Update by running "make update-changelog". 1214 12152022-09-24 Dodji Seketeli <dodji@redhat.com> 1216 1217 ir: Avoid cancelling a "confirmed" propagated canonical type 1218 * src/abg-ir-priv.h 1219 (type_base::priv::propagated_canonical_type_confirmed_): Define 1220 new data member. 1221 (type_base::priv::priv): Initialize it. 1222 (type_base::priv::{propagated_canonical_type_confirmed, 1223 set_propagated_canonical_type_confirmed}): Define new member 1224 functions. 1225 (type_base::priv::clear_propagated_canonical_type): Do not clear 1226 the propagated canonical type if it has been confirmed already. 1227 (type_base::priv::confirm_ct_propagation_for_types_dependant_on): Rename 1228 type_base::confirm_ct into this. Mark the confirmed propagated 1229 types as being confirmed. 1230 (type_base::priv::confirm_ct_propagation): This is now a new member 1231 function that calls 1232 type_base::confirm_ct_propagation_for_types_dependant_on and that 1233 does the book-keeping that was being done in 1234 return_comparison_result. 1235 (type_base::priv::cancel_ct_propagation_for_types_dependant_on): 1236 Renamed type_base::priv::cancel_ct_propagation in this. 1237 (type_base::priv::cancel_ct_propagation): In this new one, call 1238 type_base::priv::cancel_ct_propagation_for_types_dependant_on. Perform here 1239 the book-keeping that was being done in return_comparison_result. 1240 Also, do not cancel a confirmed propagated canonical type. 1241 (type_base::priv::add_to_types_with_non_confirmed_propagated_ct): 1242 Define new member function. 1243 * src/abg-ir.cc (return_comparison_result): Consider only types 1244 with non-confirmed propagated canonical types for the 1245 non-confirmed type queue. Also, only sub-types can be considered 1246 non-confirmed. Split out some of the book-keeping into 1247 type_base::priv::{confirm_ct_propagation, cancel_ct_propagation} 1248 and call these instead. Confirm the propagated canonical types of 1249 all types that remain after the comparison is fully done and is 1250 successful. 1251 (canonicalize): Assert the rule "The result of canonicalizing must 1252 always been a confirmed canonical type". 1253 12542022-09-22 Dodji Seketeli <dodji@redhat.com> 1255 1256 dwarf-reader: Accept SHT_PROGBITS sections in .dynamic segment 1257 * src/abg-dwarf-reader.cc (get_soname_of_elf_file): Accept 1258 SHT_PROGBITS sections in the dynamic segment. 1259 12602022-09-22 Dodji Seketeli <dodji@redhat.com> 1261 1262 ir: Support cloning data members of unions 1263 * src/abg-ir.cc (var_decl::clone): Support cloning data members 1264 for unions. 1265 12662022-09-22 Dodji Seketeli <dodji@redhat.com> 1267 1268 Better support for golang programs 1269 * src/abg-dwarf-reader.cc (die_qualified_type_name): Don't look at 1270 the underlying type unnecessarily. 1271 (build_function_type): Look for the WIP type first to avoid 1272 infinite recursion. 1273 * src/abg-ir.cc 1274 (function_decl::get_pretty_representation_of_declarator): A 1275 parameter can have a function type. 1276 * src/abg-writer.cc (write_elf_symbol_reference) 1277 (write_function_decl): Escape symbol names, function names and 1278 symbol references. 1279 12802022-07-19 Dodji Seketeli <dodji@redhat.com> 1281 1282 comparison: Ensure that fn parms with basic types can't be redundant 1283 * include/abg-comparison.h (peel_fn_parm_diff) 1284 (peel_typedef_qualified_type_or_parameter_diff): Declare ... 1285 * src/abg-comparison.cc (peel_fn_parm_diff) 1286 (peel_typedef_qualified_type_or_parameter_diff): ... new 1287 functions. 1288 (has_basic_type_change_only): Look through function parameters, 1289 typedefs and qualified types. 1290 * src/abg-default-reporter.cc (default_reporter::report): Remove 1291 the temporary removal of the redundant categorisation. 1292 Redundant-ness should have been handled by the 1293 redundancy_marking_visitor pass. 1294 * tests/data/test-diff-filter/test-PR29387-report.txt: Reference 1295 test output. 1296 * tests/data/test-diff-filter/test-PR29387-v{0,1}.c: Source of the 1297 input tests. 1298 * tests/data/test-diff-filter/test-PR29387-v{0,1}.o: Input test 1299 binaries. 1300 * tests/data/Makefile.am: Add the new test material above to the 1301 source distribution. 1302 * tests/test-diff-filter.cc (in_out_specs): Add the test binaries 1303 above to the test harness. 1304 13052022-09-21 Dodji Seketeli <dodji@redhat.com> 1306 1307 test-read-ctf: Update test output files after typedef canonicalization 1308 * tests/data/test-read-ctf/test-ambiguous-struct-A.o.hash.abi: 1309 Adjust. 1310 * tests/data/test-read-ctf/test-conflicting-type-syms-a.o.hash.abi: 1311 Likewise. 1312 * tests/data/test-read-ctf/test-conflicting-type-syms-b.o.hash.abi: 1313 Likewise. 1314 * tests/data/test-read-ctf/test-linux-module.abi: Likewise. 1315 * tests/data/test-read-ctf/test1.so.abi: Likewise. 1316 * tests/data/test-read-ctf/test1.so.hash.abi: Likewise. 1317 * tests/data/test-read-ctf/test2.so.abi: Likewise. 1318 * tests/data/test-read-ctf/test2.so.hash.abi: Likewise. 1319 * tests/data/test-read-ctf/test5.o.abi: Likewise. 1320 * tests/data/test-read-ctf/test7.o.abi: Likewise. 1321 13222022-09-13 Dodji Seketeli <dodji@redhat.com> 1323 1324 ir, writer: Go back to canonicalizing typedefs in the IR 1325 * include/abg-fwd.h (lookup_decl_only_class_types): Declare new 1326 function. 1327 * src/abg-ir-priv.h (class_or_union::priv::member_types_): Move 1328 this data member into scope_decl::priv. 1329 (class_or_union::priv::priv): Do not take member types. 1330 * include/abg-ir.h (sort_type): Likewise. 1331 (namespaces_type): Add new typedefs. 1332 (scope_decl::insert_member_decl): Make this be non-virtual. 1333 (scope_decl::{insert_member_type, add_member_type, 1334 remove_member_type, get_member_types, get_sorted_member_types, 1335 find_member_type}): Move these methods here from ... 1336 (class_or_union::{insert_member_type, add_member_type, 1337 remove_member_type, get_member_types, get_sorted_member_types, 1338 find_member_type}): ... here. 1339 (class_or_union::insert_member_decl): Make this be non-virtual. 1340 (class_decl::insert_member_decl): Make this be non-virtual. 1341 (class_or_union::get_sorted_member_types): Declare ... 1342 * src/abg-dwarf-reader.cc (add_or_update_class_type): Do not add a 1343 member type to the class type being built if it already exists 1344 there. 1345 (build_ir_node_from_die): If a scope (namespace, union or class) 1346 already has a typedef, do not create a new one to add it there 1347 again. 1348 * src/abg-ir.cc (equals): In the overload for typedefs take into 1349 account the name of typedefs again. 1350 (lookup_decl_only_class_types): Define new function. 1351 (compare_using_locations): Define new static function that has 1352 been factorized out of ... 1353 (decl_topo_comp::operator()): ... here. Also, two decls originate 1354 from an abixml corpus, compare them only using their artificial 1355 locations, meaning make them keep the same order as the order of 1356 the original abixml file. 1357 (type_top_comp::operator()): Likewise. 1358 (sort_types): Define new function. 1359 (scope_decl::priv::member_types_): Move this here from 1360 class_or_union::priv. 1361 (scope_decl::priv::sorted_member_types_): Define new data member. 1362 (scope_decl::{get_member_types, find_member_type, 1363 insert_member_type, add_member_type, remove_member_type}): Move 1364 these methods here from class_or_union. 1365 (scope_decl::get_sorted_member_types): Define new method. 1366 (is_non_canonicalized_type): Canonicalize typedefs. 1367 (lookup_type_in_map): Allow this to look through decl-only types 1368 to get their definition. Otherwise, if only a decl-only was 1369 found, return it. 1370 (maybe_update_types_lookup_map<class_decl>): Allow adding 1371 decl-only class types to the map of classes held per TU and per 1372 corpus. 1373 (class_or_union::{class_or_union, add_member_decl, 1374 has_no_member}): Adjust. 1375 (class_or_union::{insert_member_type, add_member_type, 1376 add_member_type, remove_member_type, get_member_types, 1377 get_sorted_member_types, find_member_type}): Move these methods to 1378 scope_decl. 1379 ({class_decl, class_or_union}::insert_member_decl): Remove the 1380 "before" parameter as it was not used anymore due to the re-use of 1381 the scope_decl::add_member that handles member types. 1382 * src/abg-reader.cc (read_corpus_group_from_input) 1383 (create_native_xml_read_context): Set the corpus origin. 1384 * src/abg-writer.cc (write_context::{m_nc_type_id_map, 1385 m_emitted_non_canonicalized_type_set, 1386 m_referenced_non_canonicalized_types_set}): Remove these maps that 1387 hold stuff for non-canonicalized types. 1388 (write_context::{type_has_existing_id, get_id_for_type, 1389 clear_type_id_map, has_non_emitted_referenced_types, 1390 record_type_as_referenced, type_is_referenced, 1391 record_type_as_emitted, type_is_emitted, clear_referenced_types, 1392 write_referenced_types, write_canonical_type_ids}): Adjust these 1393 as the maps for non-canonicalized types are gone. 1394 (write_context::{get_referenced_non_canonicalized_types, 1395 get_emitted_non_canonicalized_type_set}): Remove these methods. 1396 (write_decl_in_scope) 1397 (write_class_decl_opening_tag, write_union_decl_opening_tag) 1398 (write_union_decl): Adjust comments. 1399 (write_class_decl): Sort member types. Also, When emitting a 1400 decl-only class, get all of the decl-only classes of the same name 1401 declared in several other TUs and emit all their member types into 1402 this decl-only class just once. This reduces redundancies and 1403 sorting instabilities because for libabigail, all decl-only 1404 classes of a given name are equal, even if they have member types. 1405 * tests/data/test-abidiff/test-PR18791-report0.txt: Adjust. 1406 * tests/data/test-annotate/libtest23.so.abi: Likewise. 1407 * tests/data/test-annotate/libtest24-drop-fns-2.so.abi: Likewise. 1408 * tests/data/test-annotate/libtest24-drop-fns.so.abi: Likewise. 1409 * tests/data/test-annotate/test-anonymous-members-0.o.abi: 1410 Likewise. 1411 * tests/data/test-annotate/test0.abi: Likewise. 1412 * tests/data/test-annotate/test1.abi: Likewise. 1413 * tests/data/test-annotate/test13-pr18894.so.abi: Likewise. 1414 * tests/data/test-annotate/test14-pr18893.so.abi: Likewise. 1415 * tests/data/test-annotate/test15-pr18892.so.abi: Likewise. 1416 * tests/data/test-annotate/test17-pr19027.so.abi: Likewise. 1417 * tests/data/test-annotate/test18-pr19037-libvtkRenderingLIC-6.1.so.abi: 1418 Likewise. 1419 * tests/data/test-annotate/test19-pr19023-libtcmalloc_and_profiler.so.abi: 1420 Likewise. 1421 * tests/data/test-annotate/test2.so.abi: Likewise. 1422 * tests/data/test-annotate/test20-pr19025-libvtkParallelCore-6.1.so.abi: 1423 Likewise. 1424 * tests/data/test-annotate/test21-pr19092.so.abi: Likewise. 1425 * tests/data/test-diff-dwarf/test42-PR21296-clanggcc-report0.txt: 1426 Likewise. 1427 * tests/data/test-diff-filter/test31-pr18535-libstdc++-report-0.txt: 1428 Likewise. 1429 * tests/data/test-diff-filter/test31-pr18535-libstdc++-report-1.txt: 1430 Likewise. 1431 * tests/data/test-diff-filter/test41-report-0.txt: Likewise. 1432 * tests/data/test-diff-pkg/PR24690/PR24690-report-0.txt: Likewise. 1433 * tests/data/test-diff-pkg/spice-server-0.12.4-19.el7.x86_64-0.12.8-1.el7.x86_64-report-2.txt: 1434 Likewise. 1435 * tests/data/test-read-dwarf/PR22015-libboost_iostreams.so.abi: 1436 Likewise. 1437 * tests/data/test-read-dwarf/PR22122-libftdc.so.abi: Likewise. 1438 * tests/data/test-read-dwarf/PR25007-sdhci.ko.abi: Likewise. 1439 * tests/data/test-read-dwarf/PR25042-libgdbm-clang-dwarf5.so.6.0.0.abi: 1440 Likewise. 1441 * tests/data/test-read-dwarf/PR26261/PR26261-exe.abi: Likewise. 1442 * tests/data/test-read-dwarf/PR27700/test-PR27700.abi: Likewise. 1443 * tests/data/test-read-dwarf/libtest23.so.abi: Likewise. 1444 * tests/data/test-read-dwarf/libtest24-drop-fns-2.so.abi: 1445 Likewise. 1446 * tests/data/test-read-dwarf/libtest24-drop-fns.so.abi: Likewise. 1447 * tests/data/test-read-dwarf/test-PR26568-1.o.abi: Likewise. 1448 * tests/data/test-read-dwarf/test-PR26568-2.o.abi: Likewise. 1449 * tests/data/test-read-dwarf/test-libaaudio.so.abi: Likewise. 1450 * tests/data/test-read-dwarf/test-libandroid.so.abi: Likewise. 1451 * tests/data/test-read-dwarf/test0.abi: Likewise. 1452 * tests/data/test-read-dwarf/test0.hash.abi: Likewise. 1453 * tests/data/test-read-dwarf/test1.abi: Likewise. 1454 * tests/data/test-read-dwarf/test1.hash.abi: Likewise. 1455 * tests/data/test-read-dwarf/test10-pr18818-gcc.so.abi: Likewise. 1456 * tests/data/test-read-dwarf/test11-pr18828.so.abi: Likewise. 1457 * tests/data/test-read-dwarf/test12-pr18844.so.abi: Likewise. 1458 * tests/data/test-read-dwarf/test13-pr18894.so.abi: Likewise. 1459 * tests/data/test-read-dwarf/test14-pr18893.so.abi: Likewise. 1460 * tests/data/test-read-dwarf/test15-pr18892.so.abi: Likewise. 1461 * tests/data/test-read-dwarf/test16-pr18904.so.abi: Likewise. 1462 * tests/data/test-read-dwarf/test17-pr19027.so.abi: Likewise. 1463 * tests/data/test-read-dwarf/test18-pr19037-libvtkRenderingLIC-6.1.so.abi: 1464 Likewise. 1465 * tests/data/test-read-dwarf/test19-pr19023-libtcmalloc_and_profiler.so.abi: 1466 Likewise. 1467 * tests/data/test-read-dwarf/test2.so.abi: Likewise. 1468 * tests/data/test-read-dwarf/test2.so.hash.abi: Likewise. 1469 * tests/data/test-read-dwarf/test20-pr19025-libvtkParallelCore-6.1.so.abi: 1470 Likewise. 1471 * tests/data/test-read-dwarf/test21-pr19092.so.abi: Likewise. 1472 * tests/data/test-read-dwarf/test22-pr19097-libstdc++.so.6.0.17.so.abi: 1473 Likewise. 1474 * tests/data/test-read-dwarf/test9-pr18818-clang.so.abi: Likewise. 1475 * tests/data/test-read-write/test18.xml: Likewise. 1476 * tests/data/test-read-write/test28-without-std-fns-ref.xml: 1477 Likewise. 1478 * tests/data/test-read-write/test28-without-std-vars-ref.xml: 1479 Likewise. 1480 14812022-09-08 Dodji Seketeli <dodji@redhat.com> 1482 1483 Fix IR comparison result caching and canonical type propagation tracking 1484 * src/abg-ir-priv.h (environment::priv::recursive_types_): Define 1485 new data member. 1486 (environment::priv::cache_type_comparison_result): Cache results 1487 only non-recursive and not dependant types, or when the result is 1488 "false". In all these cases, the result, once cached, will not 1489 change. 1490 (environment::priv::mark_dependant_types_compared_until): Mark 1491 types as recursive at the same time others are marked as 1492 dependant. 1493 (environment::priv::{is_recursive_type, set_is_not_recursive}): 1494 Define new member functions. 1495 (environment::priv::{confirm_ct_propagation, 1496 cancel_ct_propagation}): Confirming canonical type propagation 1497 should happen for recursive types as well as their dependant 1498 types. 1499 * src/abg-ir.cc (return_comparison_result): Keep up with the 1500 book-keeping at all time when type canonicalization process is 1501 on-going. Whenever we expect types that depends on recursive 1502 types, expect recursive types too, obviously. 1503 (type_base::get_canonical_type_for): Do not erase the comparison 1504 result cache between the canonicalization of two different types. 1505 (is_comparison_cycle_detected) 1506 (mark_types_as_being_compared, unmark_types_as_being_compared): 1507 Define new overloads for class_decl; 1508 (equals): In the overloads for class_decl and union_decl, use 1509 RETURN_COMPARISON_RESULT and mark_types_as_being_compared without 1510 casting it to class_or_union. 1511 * tests/data/test-abidiff/test-PR18791-report0.txt: Adjust. 1512 * tests/data/test-diff-dwarf/PR25058-liblttng-ctl-report-1.txt: 1513 Adjust. 1514 * tests/data/test-diff-pkg/nss-3.23.0-1.0.fc23.x86_64-report-0.txt: 1515 Adjust. 1516 * tests/data/test-diff-pkg/spice-server-0.12.4-19.el7.x86_64-0.12.8-1.el7.x86_64-report-2.txt: 1517 Adjust. 1518 * tests/data/test-diff-pkg/tbb-4.1-9.20130314.fc22.x86_64--tbb-4.3-3.20141204.fc23.x86_64-report-0.txt: 1519 Adjust. 1520 * tests/data/test-diff-pkg/tbb-4.1-9.20130314.fc22.x86_64--tbb-4.3-3.20141204.fc23.x86_64-report-1.txt: 1521 Adjust. 1522 15232022-09-02 Dodji Seketeli <dodji@redhat.com> 1524 1525 Allow restricting analyzed decls to exported symbols 1526 * doc/manuals/tools-use-libabigail.txt: New doc text. 1527 * doc/manuals/Makefile.am: Add the new tools-use-libabigail.rst 1528 tool to the source distribution. 1529 * doc/manuals/abidiff.rst: Include the new 1530 tools-use-libabigail.rst. Document the --exported-interfaces-only 1531 and --allow-non-exported-interfaces. 1532 * doc/manuals/abidw.rst: Likewise. 1533 * doc/manuals/abipkgdiff.rst: Likewise. 1534 * doc/manuals/kmidiff.rst: Likewise. 1535 * include/abg-ir.h 1536 (environment::{user_set_analyze_exported_interfaces_only, 1537 analyze_exported_interfaces_only}): Declare new accessors. 1538 * src/abg-ir.cc 1539 (environment::{user_set_analyze_exported_interfaces_only, 1540 analyze_exported_interfaces_only}): Define new accessors. 1541 * src/abg-dwarf-reader.cc (die_is_variable_decl) 1542 (die_is_function_decl): Define new static functions. 1543 (read_context::is_decl_die_with_exported_symbol): Define new 1544 member function. 1545 (read_context::get_{function,variable}_address): Const-ify the 1546 Dwarf_Die* parameter. 1547 (build_translation_unit_and_add_to_ir): If the user asks to 1548 analyze exported interfaces only, the analyze only interfaces 1549 that have exported ELF symbols. 1550 (read_debug_info_into_corpus): If we are looking at the Linux 1551 Kernel, then only analyze exported interfaces unless the user asks 1552 otherwise. 1553 * src/abg-ir-priv.h 1554 (environment::priv::analyze_exported_interfaces_only_): Define new 1555 data member. 1556 * tools/abidiff.cc (options::exported_interfaces_only): Define new 1557 data member. 1558 (display_usage): Add new help strings for 1559 --exported-interfaces-only and --allow-non-exported-interfaces. 1560 (parse_command_line): Parse the new options 1561 --exported-interfaces-only and --allow-non-exported-interfaces. 1562 (main): Pass the value of opts.exported_interfaces_only to the 1563 environment. 1564 * tools/abidw.cc (options::exported_interfaces_only): Define new 1565 data member. 1566 (display_usage): Add new help strings for 1567 --exported-interfaces-only and --allow-non-exported-interfaces. 1568 (parse_command_line): Parse the new options 1569 (load_corpus_and_write_abixml) 1570 (load_kernel_corpus_group_and_write_abixml): Pass the value of 1571 opts.exported_interfaces_only onto the environment. 1572 * tools/abipkgdiff.cc (options::exported_interfaces_only): Define new 1573 data member. 1574 (display_usage): Add new help strings for 1575 --exported-interfaces-only and --allow-non-exported-interfaces. 1576 (parse_command_line): Parse the new options 1577 (compare_task::perform, self_compare_task::perform): Pass the 1578 value of opts.exported_interfaces_only onto the environment. 1579 (compare_prepared_linux_kernel_packages): Likewise. 1580 * tools/kmidiff.cc(options::exported_interfaces_only): Define new 1581 data member. 1582 (display_usage): Add new help strings for 1583 --exported-interfaces-only and --allow-non-exported-interfaces. 1584 (parse_command_line): Parse the new options 1585 (main): Pass the value of opts.exported_interfaces_only onto the 1586 environment. 1587 15882022-09-01 Dodji Seketeli <dodji@redhat.com> 1589 1590 dwarf-reader: Revamp the canonical type DIE propagation algorithm 1591 * src/abg-ir-priv.h (enum comparison_result): Define new enum. 1592 * src/abg-dwarf-reader.cc (type_comparison_result_to_be_cached) 1593 (maybe_cache_type_comparison_result) 1594 (get_cached_type_comparison_result) 1595 (maybe_get_cached_type_comparison_result) 1596 (maybe_propagate_canonical_type, propagate_canonical_type) 1597 (return_comparison_result): Define new static functions. 1598 (has_offset_pair, insert_offset_pair, erase_offset_pair) 1599 (have_offset_pair_in_common): Remove static functions. 1600 (read_context::die_comparison_visits_): Remove data member. The 1601 concept supported by this data member is now replaced by caching 1602 the results of comparing aggregate types, especially those that 1603 are not yet canonicalized. This essentially prevents the same 1604 aggregate type pair to be compared again and again. 1605 (read_context::{die_comparison_results_, compare_count_, 1606 canonical_propagated_count_, cancelled_propagation_count_}): New 1607 data members. 1608 (read_context::initialize): Initialize the new data members 1609 compare_count_, canonical_propagated_count_, 1610 cancelled_propagation_count_ of integral type. 1611 (read_context::{erase_canonical_die_offset}): New member 1612 functions. 1613 (struct offset_pairs_stack_type): Define new type. 1614 (die_offset): Remove. 1615 (is_canon_type_to_be_propagated_tag): Add union types to the set 1616 of types for which canonical type propagation might occur. 1617 (is_type_die_to_be_canonicalized): Add function types and array 1618 types to the types to be canonicalized. 1619 (ABG_RETURN): Change this macro to consider 1620 COMPARISON_RESULT_DIFFERENT rather than the "false" boolean. 1621 Also, it uses the new return_comparison_result function. 1622 (ABG_RETURN_FALSE): Likewise, use the new return_comparison_result 1623 function. 1624 (SET_RESULT_TO_FALSE): Make this return 1625 COMPARISON_RESULT_DIFFERENT. 1626 (SET_RESULT_TO, RETURN_IF_COMPARISON_CYCLE_DETECTED): Define new 1627 macros. 1628 (compare_dies): Make this return comparison_result rather than 1629 just a bool. This is also the core of the overhaul of the 1630 canonical DIE propagation algorithm. The algorithm is now similar 1631 to the one implemented in the equals function for class_or_union 1632 types in abg-ir.cc. It's described in the comment that starts 1633 with '@defgroup OnTheFlyCanonicalization' in abg-ir.cc. The type 1634 of the aggregates_being_compared parameter is now 1635 offset_pairs_stack_type in parameter. No more need for the 1636 redundant_aggregates_being_compared parameter. The new 1637 offset_type that also encapsulates the source of the offset is now 1638 used in lieu of the Dwarf_Off type. Results of comparing 1639 aggregates being compared are now cached. When comparing 1640 aggregates, use the RETURN_IF_COMPARISON_CYCLE_DETECTED to return 1641 early if a cycle is detected. The invocation of the ABG_RETURN 1642 macro (especially the call to return_comparison_result) is where 1643 the book keeping for canonical types propagation takes place, so 1644 remove the explicit code that was handling that from the end of 1645 this function. 1646 (read_debug_info_into_corpus): Print statistics about the number 1647 of aggregates compared and canonical-type-propagated. 1648 * tests/data/test-annotate/test14-pr18893.so.abi: Adjust. 1649 * tests/data/test-annotate/test15-pr18892.so.abi: Likewise. 1650 * tests/data/test-annotate/test17-pr19027.so.abi: Likewise. 1651 * tests/data/test-annotate/test19-pr19023-libtcmalloc_and_profiler.so.abi: 1652 Likewise. 1653 * tests/data/test-annotate/test20-pr19025-libvtkParallelCore-6.1.so.abi: 1654 Likewise. 1655 * tests/data/test-diff-pkg/GtkAda-gl-2.24.2-29.fc29.x86_64--2.24.2-30.fc30.x86_64-report-0.txt: 1656 Likewise. 1657 * tests/data/test-read-dwarf/PR22122-libftdc.so.abi: Likewise. 1658 * tests/data/test-read-dwarf/test-libandroid.so.abi: Likewise. 1659 * tests/data/test-read-dwarf/test14-pr18893.so.abi: Likewise. 1660 * tests/data/test-read-dwarf/test15-pr18892.so.abi: Likewise. 1661 * tests/data/test-read-dwarf/test16-pr18904.so.abi: Likewise. 1662 * tests/data/test-read-dwarf/test17-pr19027.so.abi: Likewise. 1663 * tests/data/test-read-dwarf/test19-pr19023-libtcmalloc_and_profiler.so.abi: 1664 Likewise. 1665 * tests/data/test-read-dwarf/test20-pr19025-libvtkParallelCore-6.1.so.abi: 1666 Likewise. 1667 * tests/data/test-read-dwarf/test22-pr19097-libstdc++.so.6.0.17.so.abi: 1668 Likewise. 1669 * tests/data/test-read-dwarf/test9-pr18818-clang.so.abi: Likewise. 1670 16712022-07-20 Mark Wielaard <mark@klomp.org> 1672 1673 Handle zero sh_entsize in get_soname_of_elf_file 1674 * src/abg-dwarf-reader.cc (get_soname_of_elf_file): 1675 Make sure entsize is non-zero before use. 1676 https://sourceware.org/bugzilla/show_bug.cgi?id=29346 1677 16782022-09-19 Xiaole He via Libabigail <libabigail@sourceware.org> 1679 1680 abg-reader: fix comment of function 1681 * src/abg-reader.cc (walk_xml_node_to_map_type_ids): fix comment 1682 16832022-09-20 Dodji Seketeli <dodji@redhat.com> 1684 1685 Fix butchered tests/data/Makefile.am 1686 * tests/data/Makefile.am: Fix test file paths. 1687 16882022-09-19 Dodji Seketeli <dodji@redhat.com> 1689 1690 test-annotate: Don't emit architecture data 1691 * tests/test-annotate.cc (main): Add the --no-architecture option 1692 to abidw. 1693 * tests/data/test-annotate/PR29443-missing-xx.o.annotated.abi: 1694 Adjust. 1695 * tests/data/test-annotate/libtest23.so.abi: Likewise. 1696 * tests/data/test-annotate/libtest24-drop-fns-2.so.abi: Likewise. 1697 * tests/data/test-annotate/libtest24-drop-fns.so.abi: Likewise. 1698 * tests/data/test-annotate/test-anonymous-members-0.o.abi: 1699 Likewise. 1700 * tests/data/test-annotate/test0.abi: Likewise. 1701 * tests/data/test-annotate/test1.abi: Likewise. 1702 * tests/data/test-annotate/test13-pr18894.so.abi: Likewise. 1703 * tests/data/test-annotate/test14-pr18893.so.abi: Likewise. 1704 * tests/data/test-annotate/test15-pr18892.so.abi: Likewise. 1705 * tests/data/test-annotate/test17-pr19027.so.abi: Likewise. 1706 * tests/data/test-annotate/test18-pr19037-libvtkRenderingLIC-6.1.so.abi: 1707 Likewise. 1708 * tests/data/test-annotate/test19-pr19023-libtcmalloc_and_profiler.so.abi: 1709 Likewise. 1710 * tests/data/test-annotate/test2.so.abi: Likewise. 1711 * tests/data/test-annotate/test20-pr19025-libvtkParallelCore-6.1.so.abi: 1712 Likewise. 1713 * tests/data/test-annotate/test21-pr19092.so.abi: Likewise. 1714 * tests/data/test-annotate/test3.so.abi: Likewise. 1715 * tests/data/test-annotate/test4.so.abi: Likewise. 1716 * tests/data/test-annotate/test5.o.abi: Likewise. 1717 * tests/data/test-annotate/test6.so.abi: Likewise. 1718 * tests/data/test-annotate/test7.so.abi: Likewise. 1719 * tests/data/test-annotate/test8-qualified-this-pointer.so.abi: 1720 Likewise. 1721 17222022-09-19 Dodji Seketeli <dodji@redhat.com> 1723 1724 Bug PR29443 - Global variables not emitted to abixml in some cases 1725 * src/abg-ir.cc (var_decl::get_pretty_representation): Always use 1726 qualified name of vars in an anonymous scope for internal 1727 purposes. 1728 * tests/data/test-annotate/PR29443-missing-xx.o.annotated.abi: New 1729 reference test output. 1730 * tests/test-annotate.cc (in_out_specs): Add the above to the test 1731 harness. 1732 * tests/data/test-read-dwarf/PR29443-missing-xx.cc: New source 1733 code for the test. 1734 * tests/data/test-read-dwarf/PR29443-missing-xx.o: New test input 1735 binary. 1736 * tests/data/test-read-dwarf/PR29443-missing-xx.o.abi: New test 1737 reference output. 1738 * tests/data/Makefile.am: Add the new test material to source 1739 distribution. 1740 * tests/test-read-dwarf.cc (in_out_specs): Add the above to the 1741 test harness. 1742 17432022-09-07 Guillermo E. Martinez via Libabigail <libabigail@sourceware.org> 1744 1745 ctf-reader: Lookup debug info for symbols in a non default archive member 1746 * src/abg-ctf-reader.cc (lookup_symbol_in_ctf_archive): New function. 1747 (process_ctf_archive): Use `lookup_symbol_in_ctf_archive'. 1748 17492022-06-28 Ben Woodard via Libabigail <libabigail@sourceware.org> 1750 1751 Bug 28669 - Increment Library version 1752 * configure.ac: Define the variables libabigail_so_{current, 1753 revision, age}. These are to be adjusted after each releases 1754 depending on how the compatibility status of the libabigail's 1755 code. 1756 * src/Makefile.am: Add -version-info 1757 $(LIBABIGAIL_SO_CURRENT):$(LIBABIGAIL_SO_REVISION):$(LIBABIGAIL_SO_AGE) 1758 to LDFLAGS. 1759 17602022-09-01 Dodji Seketeli <dodji@redhat.com> 1761 1762 dwarf-reader: Simplify the canonicalization decision of types added to IR 1763 * src/abg-dwarf-reader.cc (maybe_canonicalize_type): Remove 1764 the overload that takes a Dwarf_Die* parameter. 1765 (operator++(die_source& source)): Likewise. 1766 (read_context::{types_to_canonicalize_, 1767 alt_types_to_canonicalize_, 1768 type_unit_types_to_canonicalize_}): Remove these data members 1769 of type vector<Dwarf_Off>. (read_context::initialize): Remove 1770 invocations to alt_types_to_canonicalize_.clear(), 1771 type_unit_types_to_canonicalize_.clear(), and 1772 extra_types_to_canonicalize_.clear(). 1773 (read_context::extra_types_to_canonicalize_): Rename this into 1774 read_context::types_to_canonicalize_, of type 1775 vector<type_base_sptr>. 1776 (read_context::types_to_canonicalize): Remove these member 1777 functions that take a parameter of type die_source. 1778 (read_context::extra_types_to_canonicalize): Rename this 1779 function into types_to_canonicalize. It returns a type const 1780 vector<type_base_sptr>&. 1781 (read_context::schedule_type_for_late_canonicalization): 1782 Remove this overload that takes a type const Dwarf_Die*. In 1783 the overload that takes a parameter const type_base_sptr 1784 however, rename the invocation to 1785 extra_types_to_canonicalize_.push_back(t) into 1786 types_to_canonicalize_.push_back(t). 1787 (read_context::canonicalize_types_scheduled): This doesn't 1788 take a die_source parameter anymore. It now only cycles 1789 through the types retrieved by types_to_canonicalize() to 1790 canonicalize them. 1791 (read_context::add_late_canonicalized_types_stats): Remove the 1792 die_source parameter. Use types_to_canonicalize(). 1793 (read_context::perform_late_type_canonicalizing): Just call 1794 read_context::canonicalize_types_scheduled(). 1795 (build_ir_node_from_die): Adjust calls to maybe_canonicalize_type. 1796 Also, really canonicalize the function type when a function decl is 1797 constructed. 1798 * tests/data/test-annotate/test13-pr18894.so.abi: Adjust. 1799 * tests/data/test-annotate/test15-pr18892.so.abi: Likewise. 1800 * tests/data/test-annotate/test20-pr19025-libvtkParallelCore-6.1.so.abi: 1801 Likewise. 1802 * tests/data/test-annotate/test21-pr19092.so.abi: Likewise. 1803 * tests/data/test-diff-pkg/nss-3.23.0-1.0.fc23.x86_64-report-0.txt: 1804 Likewise. 1805 * tests/data/test-read-dwarf/PR22122-libftdc.so.abi: Likewise. 1806 * tests/data/test-read-dwarf/test12-pr18844.so.abi: Likewise. 1807 * tests/data/test-read-dwarf/test13-pr18894.so.abi: Likewise. 1808 * tests/data/test-read-dwarf/test15-pr18892.so.abi: Likewise. 1809 * tests/data/test-read-dwarf/test16-pr18904.so.abi: Likewise. 1810 * tests/data/test-read-dwarf/test20-pr19025-libvtkParallelCore-6.1.so.abi: 1811 Likewise. 1812 * tests/data/test-read-dwarf/test21-pr19092.so.abi: Likewise. 1813 18142022-09-02 Dodji Seketeli <dodji@redhat.com> 1815 1816 ir: translation_unit::is_empty should work without environment. 1817 * src/abg-ir.cc (translation_unit::is_empty): If there is no 1818 global scope, then we know its empty. No need to create one. 1819 18202022-09-01 Dodji Seketeli <dodji@redhat.com> 1821 1822 ir: Don't overdo canonical type propagation control when comparing classes 1823 * src/abg-ir.cc (equals): In the overload for const class_decl&, 1824 do not cancel the propagated canonical type if the propagation is 1825 not the result of invoking the equals overload for class_or_union. 1826 18272022-09-05 Dodji Seketeli <dodji@redhat.com> 1828 1829 Add test-abidiff-exit/ld-2.28-21{0,1}.so to source distribution 1830 * tests/data/Makefile.am: Add the new files to source 1831 distribution. Also, add the new 1832 test-abidiff-exit/ld-2.28-21x.so.sources.txt. 1833 * tests/data/test-abidiff-exit/ld-2.28-21x.so.sources.txt: New 1834 file describing where the sources are. 1835 18362022-08-25 Giuliano Procida <gprocida@google.com> 1837 1838 abidw: resolve declaration-only enums the same as classes 1839 * src/abg-dwarf-reader.cc 1840 (read_context::resolve_declaration_only_enums): Use an ordered 1841 map to ensure TUs are always considered in the same order and 1842 so improve ABI XML stability. Given multiple possible 1843 definitions for a enum declaration, check to see if they are 1844 equal and resolve the declaration to the first definition if 1845 so. 1846 18472022-08-25 Giuliano Procida <gprocida@google.com> 1848 1849 abidw: remove always true test in resolve_declaration_only_classes 1850 * src/abg-dwarf-reader.cc 1851 (read_context::resolve_declaration_only_classes): Remove 1852 tautological conditional. 1853 18542022-08-25 Giuliano Procida <gprocida@google.com> 1855 1856 abidw: fix --stats output for resolved classes and enums 1857 * src/abg-dwarf-reader.cc 1858 (read_context::resolve_declaration_only_classes): Fix 1859 conditional logic so that showing stats includes the first 1860 unresolved type. 1861 (read_context::resolve_declaration_only_enums): Likewise. 1862 18632022-08-15 Guillermo E. Martinez via Libabigail <libabigail@sourceware.org> 1864 1865 ctf-reader: looks for debug information in out-of-tree modules 1866 * src/abg-ctf-reader.cc (process_ctf_archive, read_corpus 1867 slurp_elf_info): Avoid looking for `vmlinux.ctfa' when we aren't 1868 processing a `cur_corpus_group_'. So CTF info is embedded in the 1869 `.ko' file. 1870 * tests/data/Makefile.am: Add test inputs and expected files. 1871 * tests/data/test-read-ctf/test-linux-module.{ko,c,abi}: Add new 1872 test input and reference kABI. 1873 * tests/test-read-ctf.cc: Add new testcase. 1874 18752022-08-26 Dodji Seketeli <dodji@redhat.com> 1876 1877 dwarf-reader: Better handle the absence of a die->parent map 1878 * src/abg-dwarf-reader.cc (get_scope_for_die): Consider that in 1879 the absence of the DIE->PARENT map, all decls are in the global. 1880 namespace. 1881 * tests/data/test-abidiff-exit/ld-2.28-210.so: New test. 1882 * tests/data/test-abidiff-exit/ld-2.28-211.so: Likewise. 1883 * tests/data/test-abidiff-exit/test-ld-2.28-210.so--ld-2.28-211.so.txt: New reference test output. 1884 * tests/test-abidiff-exit.cc (in_out_specs): Add the test above to 1885 the harness. 1886 18872022-08-29 Dodji Seketeli <dodji@redhat.com> 1888 1889 Update test-read-ctf reference output 1890 * tests/data/test-read-ctf/test-PR26568-1.o.abi: Adjust. 1891 * tests/data/test-read-ctf/test-PR26568-2.o.abi: Likewise. 1892 * tests/data/test-read-ctf/test-ambiguous-struct-A.o.hash.abi: 1893 Likewise. 1894 * tests/data/test-read-ctf/test-ambiguous-struct-B.o.hash.abi: 1895 Likewise. 1896 * tests/data/test-read-ctf/test-anonymous-fields.o.abi: Likewise. 1897 * tests/data/test-read-ctf/test-array-of-pointers.abi: Likewise. 1898 * tests/data/test-read-ctf/test-callback2.abi: Likewise. 1899 * tests/data/test-read-ctf/test-conflicting-type-syms-a.o.hash.abi: 1900 Likewise. 1901 * tests/data/test-read-ctf/test-conflicting-type-syms-b.o.hash.abi: 1902 Likewise. 1903 * tests/data/test-read-ctf/test-list-struct.abi: Likewise. 1904 * tests/data/test-read-ctf/test0.abi: Likewise. 1905 * tests/data/test-read-ctf/test0.hash.abi: Likewise. 1906 * tests/data/test-read-ctf/test1.so.abi: Likewise. 1907 * tests/data/test-read-ctf/test1.so.hash.abi: Likewise. 1908 * tests/data/test-read-ctf/test7.o.abi: Likewise. 1909 * tests/data/test-read-ctf/test9.o.abi: Likewise. 1910 19112022-08-19 Dodji Seketeli <dodji@redhat.com> 1912 1913 ir: Don't consider different int types of same kind and size as equivalent 1914 * src/abg-ir.cc (equals): In the overload for type_decl, do not 1915 consider int types of the same type as being equivalent by 1916 overlooking their long and short modifiers. 1917 * tests/data/test-annotate/libtest23.so.abi: Adjust. 1918 * tests/data/test-annotate/libtest24-drop-fns-2.so.abi: Likewise. 1919 * tests/data/test-annotate/libtest24-drop-fns.so.abi: Likewise. 1920 * tests/data/test-annotate/test0.abi: Likewise. 1921 * tests/data/test-annotate/test15-pr18892.so.abi: Likewise. 1922 * tests/data/test-annotate/test18-pr19037-libvtkRenderingLIC-6.1.so.abi: 1923 Likewise. 1924 * tests/data/test-annotate/test19-pr19023-libtcmalloc_and_profiler.so.abi: 1925 Likewise. 1926 * tests/data/test-annotate/test20-pr19025-libvtkParallelCore-6.1.so.abi: 1927 Likewise. 1928 * tests/data/test-read-dwarf/PR22015-libboost_iostreams.so.abi: 1929 Likewise. 1930 * tests/data/test-read-dwarf/PR22122-libftdc.so.abi: Likewise. 1931 * tests/data/test-read-dwarf/PR25007-sdhci.ko.abi: Likewise. 1932 * tests/data/test-read-dwarf/PR25042-libgdbm-clang-dwarf5.so.6.0.0.abi: 1933 Likewise. 1934 * tests/data/test-read-dwarf/libtest23.so.abi: Likewise. 1935 * tests/data/test-read-dwarf/libtest24-drop-fns-2.so.abi: 1936 Likewise. 1937 * tests/data/test-read-dwarf/libtest24-drop-fns.so.abi: Likewise. 1938 * tests/data/test-read-dwarf/test-libaaudio.so.abi: Likewise. 1939 * tests/data/test-read-dwarf/test-libandroid.so.abi: Likewise. 1940 * tests/data/test-read-dwarf/test0.abi: Likewise. 1941 * tests/data/test-read-dwarf/test0.hash.abi: Likewise. 1942 * tests/data/test-read-dwarf/test10-pr18818-gcc.so.abi: Likewise. 1943 * tests/data/test-read-dwarf/test11-pr18828.so.abi: Likewise. 1944 * tests/data/test-read-dwarf/test12-pr18844.so.abi: Likewise. 1945 * tests/data/test-read-dwarf/test15-pr18892.so.abi: Likewise. 1946 * tests/data/test-read-dwarf/test16-pr18904.so.abi: Likewise. 1947 * tests/data/test-read-dwarf/test18-pr19037-libvtkRenderingLIC-6.1.so.abi: 1948 Likewise. 1949 * tests/data/test-read-dwarf/test19-pr19023-libtcmalloc_and_profiler.so.abi: 1950 Likewise. 1951 * tests/data/test-read-dwarf/test20-pr19025-libvtkParallelCore-6.1.so.abi: 1952 Likewise. 1953 * tests/data/test-read-dwarf/test22-pr19097-libstdc++.so.6.0.17.so.abi: 1954 Likewise. 1955 * tests/data/test-read-dwarf/test9-pr18818-clang.so.abi: Likewise. 1956 * tests/data/test-read-write/test28-without-std-fns-ref.xml: 1957 Likewise. 1958 * tests/data/test-read-write/test28-without-std-vars-ref.xml: 1959 Likewise. 1960 19612022-07-24 Dodji Seketeli <dodji@redhat.com> 1962 1963 writer: Make sorting referenced typedefs types stable in abixml 1964 * src/abg-writer.cc (read_context::type_ptr_cmp::operator()): In 1965 the less-than operator the type pointer comparison functor, use 1966 the non-internal pretty representation of types for sorting 1967 purposes. 1968 * tests/data/test-annotate/test18-pr19037-libvtkRenderingLIC-6.1.so.abi: 1969 Adjust 1970 * tests/data/test-read-dwarf/test18-pr19037-libvtkRenderingLIC-6.1.so.abi: 1971 Likewise. 1972 19732022-07-22 Dodji Seketeli <dodji@redhat.com> 1974 1975 ir: Consider integral types of same kind and size as equivalent 1976 * include/abg-fwd.h (is_integral_type): Declare new function. 1977 * include/abg-ir.h (type_decl::get_qualified_name): Add a 1978 declaration of an implementation of the virtual interface 1979 get_qualified_name. 1980 * src/abg-ir-priv.h (integral_type::set_modifiers): Define a new 1981 setter. 1982 (integral_type::to_string): Add an "internal" flag. 1983 * src/abg-ir.cc (operator~, operator&=): Declare 1984 new operators. 1985 (get_internal_integral_type_name): Define new static function. 1986 (decl_base::priv::{temporary_internal_qualified_name_, 1987 internal_qualified_name_}): Define two new data members. 1988 (get_type_name): For internal name of integral types, use the new 1989 get_internal_integral_type_name function. 1990 (is_integral_type): Define new function. 1991 (integral_type::set_modifiers): Define new member function. 1992 (operator|, operator&): Fix some indentation. 1993 (operator~, operator&=): Define new operators. 1994 (parse_integral_type): Fix the logic of this function. Namely, it 1995 wasn't handling parsing "long long" correctly. 1996 (integral_type::to_string): Add an "internal" flag. 1997 (equals): In the overload for type_decl, do not take the short, 1998 long and long long into account when comparing integral types of 1999 the same size. 2000 (type_decl::get_qualified_name): Define new method. 2001 (type_decl::get_pretty_representation): For internal name of 2002 integral types, use the new get_internal_integral_type_name 2003 function. 2004 ({decl,type}_topo_comp::operator()): Use the non-internal pretty 2005 representation of decls/types for sorting purpose. 2006 * src/abg-reader.cc (build_type_decl): We don't expect the 2007 integral type name from abixml to the same as the name of the 2008 parsed integral type, as the abixml file can be old and have an 2009 old format. 2010 * tests/data/test-annotate/libtest23.so.abi: Adjust. 2011 * tests/data/test-annotate/libtest24-drop-fns-2.so.abi: Adjust. 2012 * tests/data/test-annotate/libtest24-drop-fns.so.abi: Adjust. 2013 * tests/data/test-annotate/test0.abi: Adjust. 2014 * tests/data/test-annotate/test15-pr18892.so.abi: Adjust. 2015 * tests/data/test-annotate/test17-pr19027.so.abi: Adjust. 2016 * tests/data/test-annotate/test18-pr19037-libvtkRenderingLIC-6.1.so.abi: 2017 Adjust. 2018 * tests/data/test-annotate/test19-pr19023-libtcmalloc_and_profiler.so.abi: 2019 Adjust. 2020 * tests/data/test-annotate/test20-pr19025-libvtkParallelCore-6.1.so.abi: 2021 Adjust. 2022 * tests/data/test-annotate/test21-pr19092.so.abi: Adjust. 2023 * tests/data/test-diff-dwarf/PR25058-liblttng-ctl-report-1.txt: 2024 Adjust. 2025 * tests/data/test-diff-filter/test41-report-0.txt: Adjust. 2026 * tests/data/test-diff-pkg/tbb-4.1-9.20130314.fc22.x86_64--tbb-4.3-3.20141204.fc23.x86_64-report-0.txt: 2027 Adjust. 2028 * tests/data/test-diff-pkg/tbb-4.1-9.20130314.fc22.x86_64--tbb-4.3-3.20141204.fc23.x86_64-report-1.txt: 2029 Adjust. 2030 * tests/data/test-diff-dwarf/PR25058-liblttng-ctl-report-1.txt: 2031 Adjust. 2032 * tests/data/test-read-dwarf/PR22015-libboost_iostreams.so.abi: 2033 Adjust. 2034 * tests/data/test-read-dwarf/PR22122-libftdc.so.abi: Adjust. 2035 * tests/data/test-read-dwarf/PR25007-sdhci.ko.abi: Adjust. 2036 * tests/data/test-read-dwarf/PR25042-libgdbm-clang-dwarf5.so.6.0.0.abi: 2037 Adjust. 2038 * tests/data/test-read-dwarf/libtest23.so.abi: Adjust. 2039 * tests/data/test-read-dwarf/libtest24-drop-fns-2.so.abi: Adjust. 2040 * tests/data/test-read-dwarf/libtest24-drop-fns.so.abi: Adjust. 2041 * tests/data/test-read-dwarf/test-PR26568-1.o.abi: Adjust. 2042 * tests/data/test-read-dwarf/test-PR26568-2.o.abi: Adjust. 2043 * tests/data/test-read-dwarf/test-libaaudio.so.abi: Adjust. 2044 * tests/data/test-read-dwarf/test-libandroid.so.abi: Adjust. 2045 * tests/data/test-read-dwarf/test0.abi: Adjust. 2046 * tests/data/test-read-dwarf/test0.hash.abi: Adjust. 2047 * tests/data/test-read-dwarf/test1.hash.abi: Adjust. 2048 * tests/data/test-read-dwarf/test10-pr18818-gcc.so.abi: Adjust. 2049 * tests/data/test-read-dwarf/test11-pr18828.so.abi: Adjust. 2050 * tests/data/test-read-dwarf/test12-pr18844.so.abi: Adjust. 2051 * tests/data/test-read-dwarf/test15-pr18892.so.abi: Adjust. 2052 * tests/data/test-read-dwarf/test16-pr18904.so.abi: Adjust. 2053 * tests/data/test-read-dwarf/test17-pr19027.so.abi: Adjust. 2054 * tests/data/test-read-dwarf/test18-pr19037-libvtkRenderingLIC-6.1.so.abi: 2055 Adjust. 2056 * tests/data/test-read-dwarf/test19-pr19023-libtcmalloc_and_profiler.so.abi: 2057 Adjust. 2058 * tests/data/test-read-dwarf/test20-pr19025-libvtkParallelCore-6.1.so.abi: 2059 Adjust. 2060 * tests/data/test-read-dwarf/test21-pr19092.so.abi: Adjust. 2061 * tests/data/test-read-dwarf/test22-pr19097-libstdc++.so.6.0.17.so.abi: 2062 Adjust. 2063 * tests/data/test-read-dwarf/test9-pr18818-clang.so.abi: Adjust. 2064 * tests/data/test-read-write/test22.xml: Adjust. 2065 * tests/data/test-read-write/test23.xml: Adjust. 2066 * tests/data/test-read-write/test28-without-std-fns-ref.xml: Adjust. 2067 * tests/data/test-read-write/test28-without-std-vars-ref.xml: Adjust. 2068 20692022-07-22 Dodji Seketeli <dodji@redhat.com> 2070 2071 dwarf-reader: Remove redundant qualifiers from qualified types 2072 * include/abg-fwd.h (strip_redundant_quals_from_underyling_types): 2073 Declare new function. 2074 * include/abg-ir.h (operator&=): Declare new binary operator for 2075 qualified_type_def::CV and ... 2076 * src/abg-ir.cc (+operator&=): ... define it here. 2077 (strip_redundant_quals_from_underyling_types): Define new function 2078 and ... 2079 * src/abg-dwarf-reader.cc (maybe_strip_qualification): ... Use it 2080 here. 2081 * tests/data/test-abidiff-exit/qualifier-typedef-array-report-1.txt: 2082 Adjust. 2083 20842022-07-22 Dodji Seketeli <dodji@redhat.com> 2085 2086 ir: Disambiguate sorting of array element types 2087 * src/abg-ir.cc (get_type_representation): In the overload for 2088 array_type_def, use qualified names for element types. 2089 * tests/data/test-abidiff-exit/qualifier-typedef-array-report-1.txt: Adjust. 2090 * tests/data/test-annotate/test15-pr18892.so.abi: Adjust. 2091 * tests/data/test-annotate/test17-pr19027.so.abi: Adjust. 2092 * tests/data/test-annotate/test19-pr19023-libtcmalloc_and_profiler.so.abi: 2093 Adjust. 2094 * tests/data/test-diff-filter/test-PR26739-2-report-0.txt: Adjust. 2095 20962022-07-19 Dodji Seketeli <dodji@redhat.com> 2097 2098 ir: Make pointers name stable wrt decl-only-ness of pointed-to types 2099 * src/abg-ir.cc (look_through_decl_only): New overload for 2100 type_base. 2101 * tests/data/test-read-dwarf/PR22122-libftdc.so.abi: Adjust. 2102 21032022-07-18 Dodji Seketeli <dodji@redhat.com> 2104 2105 tests-diff-{filter,pkg,pkg-ctf}: Fix tests broken by the previous commit 2106 * tests/data/test-diff-filter/test41-report-0.txt: Adjust. 2107 * tests/data/test-diff-pkg-ctf/gmp-6.x.x86_64-report-0.txt: 2108 Adjust. 2109 * tests/data/test-diff-pkg/tbb-4.1-9.20130314.fc22.x86_64--tbb-4.3-3.20141204.fc23.x86_64-report-0.txt: 2110 Adjust. 2111 * tests/data/test-diff-pkg/tbb-4.1-9.20130314.fc22.x86_64--tbb-4.3-3.20141204.fc23.x86_64-report-1.txt: 2112 Adjust. 2113 21142022-07-18 Dodji Seketeli <dodji@redhat.com> 2115 2116 dwarf-reader: Support DWARF incomplete class types 2117 * src/abg-dwarf-reader.cc 2118 (read_context::resolve_declaration_only_classes): Do not avoid 2119 comparing ODR-relevant classes. 2120 (add_or_update_class_type): Detect incomplete classes and treat 2121 them as decl-only types. They'll be resolved to their proper 2122 complete types later, by 2123 read_context::resolve_declaration_only_classes. 2124 * tests/data/test-annotate/libtest23.so.abi: Adjust. 2125 * tests/data/test-annotate/test14-pr18893.so.abi: Likewise. 2126 * tests/data/test-annotate/test15-pr18892.so.abi: Likewise. 2127 * tests/data/test-annotate/test17-pr19027.so.abi: Likewise. 2128 * tests/data/test-annotate/test18-pr19037-libvtkRenderingLIC-6.1.so.abi: Likewise. 2129 * tests/data/test-annotate/test20-pr19025-libvtkParallelCore-6.1.so.abi: Likewise. 2130 * tests/data/test-diff-filter/test41-report-0.txt: Likewise. 2131 * tests/data/test-diff-pkg/tbb-4.1-9.20130314.fc22.x86_64--tbb-4.3-3.20141204.fc23.x86_64-report-0.txt: 2132 Likewise. 2133 * tests/data/test-diff-pkg/tbb-4.1-9.20130314.fc22.x86_64--tbb-4.3-3.20141204.fc23.x86_64-report-1.txt: 2134 Likewise. 2135 * tests/data/test-read-dwarf/PR22122-libftdc.so.abi: Likewise. 2136 * tests/data/test-read-dwarf/libtest23.so.abi: Likewise. 2137 * tests/data/test-read-dwarf/test-libaaudio.so.abi: Likewise. 2138 * tests/data/test-read-dwarf/test-libandroid.so.abi: Likewise. 2139 * tests/data/test-read-dwarf/test11-pr18828.so.abi: Likewise. 2140 * tests/data/test-read-dwarf/test12-pr18844.so.abi: Likewise. 2141 * tests/data/test-read-dwarf/test14-pr18893.so.abi: Likewise. 2142 * tests/data/test-read-dwarf/test15-pr18892.so.abi: Likewise. 2143 * tests/data/test-read-dwarf/test16-pr18904.so.abi: Likewise. 2144 * tests/data/test-read-dwarf/test17-pr19027.so.abi: Likewise. 2145 * tests/data/test-read-dwarf/test18-pr19037-libvtkRenderingLIC-6.1.so.abi: Likewise. 2146 * tests/data/test-read-dwarf/test20-pr19025-libvtkParallelCore-6.1.so.abi: Likewise. 2147 * tests/data/test-read-dwarf/test22-pr19097-libstdc++.so.6.0.17.so.abi: Likewise. 2148 * tests/data/test-read-dwarf/test9-pr18818-clang.so.abi: Likewise. 2149 21502022-07-14 Dodji Seketeli <dodji@redhat.com> 2151 2152 Better Handle naming typedefs on anonymous enums 2153 * src/abg-dwarf-reader.cc (build_typedef_type): Do not re-use 2154 typedefs. 2155 * src/abg-ir.cc (get_function_type_name, get_method_type_name) 2156 (function_decl::get_pretty_representation_of_declarator): Strip 2157 typedefs when the function name is computed for internal purposes. 2158 (equals): In the overload for function_decl::parameter, strip 2159 typedefs when comparing parameter types. 2160 * tests/data/test-annotate/libtest23.so.abi: Adjust. 2161 * tests/data/test-annotate/test14-pr18893.so.abi: Likewise. 2162 * tests/data/test-annotate/test15-pr18892.so.abi: Likewise. 2163 * tests/data/test-annotate/test17-pr19027.so.abi: Likewise. 2164 * tests/data/test-annotate/test18-pr19037-libvtkRenderingLIC-6.1.so.abi: 2165 Likewise. 2166 * tests/data/test-annotate/test19-pr19023-libtcmalloc_and_profiler.so.abi: 2167 Likewise. 2168 * tests/data/test-annotate/test20-pr19025-libvtkParallelCore-6.1.so.abi: 2169 Likewise. 2170 * tests/data/test-annotate/test21-pr19092.so.abi: Likewise. 2171 * tests/data/test-diff-dwarf/test2-report.txt: Likewise. 2172 * tests/data/test-diff-filter/test3-report.txt: Likewise. 2173 * tests/data/test-diff-pkg/PR24690/PR24690-report-0.txt: Likewise. 2174 * tests/data/test-read-dwarf/PR22122-libftdc.so.abi: Likewise. 2175 * tests/data/test-read-dwarf/PR25007-sdhci.ko.abi: Likewise. 2176 * tests/data/test-read-dwarf/PR25042-libgdbm-clang-dwarf5.so.6.0.0.abi: 2177 Likewise. 2178 * tests/data/test-read-dwarf/libtest23.so.abi: Likewise. 2179 * tests/data/test-read-dwarf/test-libaaudio.so.abi: Likewise. 2180 * tests/data/test-read-dwarf/test-libandroid.so.abi: Likewise. 2181 * tests/data/test-read-dwarf/test10-pr18818-gcc.so.abi: Likewise. 2182 * tests/data/test-read-dwarf/test12-pr18844.so.abi: Likewise. 2183 * tests/data/test-read-dwarf/test14-pr18893.so.abi: Likewise. 2184 * tests/data/test-read-dwarf/test15-pr18892.so.abi: Likewise. 2185 * tests/data/test-read-dwarf/test16-pr18904.so.abi: Likewise. 2186 * tests/data/test-read-dwarf/test17-pr19027.so.abi: Likewise. 2187 * tests/data/test-read-dwarf/test18-pr19037-libvtkRenderingLIC-6.1.so.abi: 2188 Likewise. 2189 * tests/data/test-read-dwarf/test19-pr19023-libtcmalloc_and_profiler.so.abi: 2190 Likewise. 2191 * tests/data/test-read-dwarf/test20-pr19025-libvtkParallelCore-6.1.so.abi: 2192 Likewise. 2193 * tests/data/test-read-dwarf/test21-pr19092.so.abi: Likewise. 2194 * tests/data/test-read-dwarf/test22-pr19097-libstdc++.so.6.0.17.so.abi: 2195 Likewise. 2196 * tests/data/test-read-dwarf/test9-pr18818-clang.so.abi: Likewise. 2197 21982022-07-14 Dodji Seketeli <dodji@redhat.com> 2199 2200 dwarf-reader: Fix a thinko when building vars 2201 * src/abg-dwarf-reader.cc (build_ir_node_from_die): Don't get out 2202 early when building vars. 2203 22042022-07-11 Dodji Seketeli <dodji@redhat.com> 2205 2206 Bug 29302 - Don't edit fn linkage name when not appropriate 2207 * src/abg-dwarf-reader.cc (build_function_decl): If the linkage 2208 name is properly set in the DWARF, do not change it. 2209 * tests/data/test-read-dwarf/test22-pr19097-libstdc++.so.6.0.17.so.abi: Adjust. 2210 22112022-07-08 Guillermo E. Martinez <guillermo.e.martinez@oracle.com> 2212 2213 ctf-reader: add support to looks for debug information to extract kABI 2214 * src/abg-ctf-reader.cc (find_ctfa_file): Add new function 2215 meant to locate the Linux Kernel debug information file 2216 `vmlinux.ctfa'. 2217 (ctf_reader::read_corpus): Use `find_ctfa_file' function. 2218 22192022-07-08 Guillermo E. Martinez via Libabigail <libabigail@sourceware.org> 2220 2221 Add regression tests for abipkgdiff using ctf info 2222 * doc/manuals/abipkgdiff.rst: Document the fact that abipkgdiff 2223 now supports the CTF format. 2224 * tests/data/test-diff-pkg-ctf/cracklib-2.9.6-15-ol8.x86_64-report-0.txt: 2225 New test input. 2226 * tests/data/test-diff-pkg-ctf/cracklib-2.9.6-15-ol8u0.x86_64.rpm: 2227 Likewise. 2228 * tests/data/test-diff-pkg-ctf/cracklib-2.9.6-15-ol8u6.x86_64.rpm: 2229 Likewise. 2230 * tests/data/test-diff-pkg-ctf/dirpkg-0-dir1/dir.abignore: 2231 Likewise. 2232 * tests/data/test-diff-pkg-ctf/dirpkg-0-dir1/libobj-v0.so: 2233 Likewise. 2234 * tests/data/test-diff-pkg-ctf/dirpkg-0-dir1/obj-v0.c: Likewise. 2235 * tests/data/test-diff-pkg-ctf/dirpkg-0-dir2/libobj-v0.so: 2236 Likewise. 2237 * tests/data/test-diff-pkg-ctf/dirpkg-0-dir2/obj-v0.c: Likewise. 2238 * tests/data/test-diff-pkg-ctf/dirpkg-0-report-0.txt: Likewise. 2239 * tests/data/test-diff-pkg-ctf/dirpkg-1-dir1/libobj-v0.so: 2240 Likewise. 2241 * tests/data/test-diff-pkg-ctf/dirpkg-1-dir1/obj-v0.c: Likewise. 2242 * tests/data/test-diff-pkg-ctf/dirpkg-1-dir2/dir.abignore: 2243 Likewise. 2244 * tests/data/test-diff-pkg-ctf/dirpkg-1-dir2/libobj-v0.so: 2245 Likewise. 2246 * tests/data/test-diff-pkg-ctf/dirpkg-1-dir2/obj-v0.c: Likewise. 2247 * tests/data/test-diff-pkg-ctf/dirpkg-1-report-0.txt: Likewise. 2248 * tests/data/test-diff-pkg-ctf/dirpkg-1-report-1.txt: Likewise. 2249 * tests/data/test-diff-pkg-ctf/dirpkg-2-dir1/libobj-v0.so: 2250 Likewise. 2251 * tests/data/test-diff-pkg-ctf/dirpkg-2-dir1/obj-v0.c: Likewise. 2252 * tests/data/test-diff-pkg-ctf/dirpkg-2-dir2/.abignore: Likewise. 2253 * tests/data/test-diff-pkg-ctf/dirpkg-2-dir2/dir.abignore: 2254 Likewise. 2255 * tests/data/test-diff-pkg-ctf/dirpkg-2-dir2/libobj-v0.so: 2256 Likewise. 2257 * tests/data/test-diff-pkg-ctf/dirpkg-2-dir2/obj-v0.c: Likewise. 2258 * tests/data/test-diff-pkg-ctf/dirpkg-2-report-0.txt: Likewise. 2259 * tests/data/test-diff-pkg-ctf/dirpkg-3-dir1/libobj-v0.so: 2260 Likewise. 2261 * tests/data/test-diff-pkg-ctf/dirpkg-3-dir1/obj-v0.c: Likewise. 2262 * tests/data/test-diff-pkg-ctf/dirpkg-3-dir2/.abignore: Likewise. 2263 * tests/data/test-diff-pkg-ctf/dirpkg-3-dir2/libobj-v0.so: 2264 Likewise. 2265 * tests/data/test-diff-pkg-ctf/dirpkg-3-dir2/obj-v0.c: Likewise. 2266 * tests/data/test-diff-pkg-ctf/dirpkg-3-report-0.txt: Likewise. 2267 * tests/data/test-diff-pkg-ctf/dirpkg-3-report-1.txt: Likewise. 2268 * tests/data/test-diff-pkg-ctf/dirpkg-3-report-2.txt: Likewise. 2269 * tests/data/test-diff-pkg-ctf/dirpkg-3.suppr: Likewise. 2270 * tests/data/test-diff-pkg-ctf/elfutils-libelf-0.186-1.x86_64.rpm: 2271 Likewise. 2272 * tests/data/test-diff-pkg-ctf/elfutils-libelf-0.186-2.x86_64.rpm: 2273 Likewise. 2274 * tests/data/test-diff-pkg-ctf/elfutils-libelf-0.186-report-0.txt: 2275 Likewise. 2276 * tests/data/test-diff-pkg-ctf/elfutils-libelf-0.186-report-1.txt: 2277 Likewise. 2278 * tests/data/test-diff-pkg-ctf/gmp-6.1.2-8-ol8u0.x86_64.rpm: 2279 Likewise. 2280 * tests/data/test-diff-pkg-ctf/gmp-6.2.0-10-ol9u0.x86_64.rpm: 2281 Likewise. 2282 * tests/data/test-diff-pkg-ctf/gmp-6.x.x86_64-report-0.txt: 2283 Likewise. 2284 * tests/data/test-diff-pkg-ctf/isl-0.16.1-6.x86_64.rpm: Likewise. 2285 * tests/data/test-diff-pkg-ctf/isl-0.16.1-7.x86_64.rpm: Likewise. 2286 * tests/data/test-diff-pkg-ctf/isl-0.16.1-report-0.txt: Likewise. 2287 * tests/data/test-diff-pkg-ctf/isl-debuginfo-0.16.1-6.x86_64.rpm: 2288 Likewise. 2289 * tests/data/test-diff-pkg-ctf/isl-debuginfo-0.16.1-7.x86_64.rpm: 2290 Likewise. 2291 * tests/data/test-diff-pkg-ctf/libdwarf-20180129-4-no-ctf.x86_64.rpm: 2292 Likewise. 2293 * tests/data/test-diff-pkg-ctf/libdwarf-20180129-4.x86_64.rpm: 2294 Likewise. 2295 * tests/data/test-diff-pkg-ctf/libdwarf-20180129-5-no-ctf.x86_64.rpm: 2296 Likewise. 2297 * tests/data/test-diff-pkg-ctf/libdwarf-20180129-5.x86_64.rpm: 2298 Likewise. 2299 * tests/data/test-diff-pkg-ctf/symlink-dir-test1-report0.txt: 2300 Likewise. 2301 * tests/data/test-diff-pkg-ctf/symlink-dir-test1/dir1/symlinks/foo.o: 2302 Likewise. 2303 * tests/data/test-diff-pkg-ctf/symlink-dir-test1/dir1/symlinks/libfoo.so: 2304 Likewise. 2305 * tests/data/test-diff-pkg-ctf/symlink-dir-test1/dir1/targets/foo.c: 2306 Likewise. 2307 * tests/data/test-diff-pkg-ctf/symlink-dir-test1/dir1/targets/foo.o: 2308 Likewise. 2309 * tests/data/test-diff-pkg-ctf/symlink-dir-test1/dir1/targets/libfoo.so: 2310 Likewise. 2311 * tests/data/test-diff-pkg-ctf/symlink-dir-test1/dir2/symlinks/foo.o: 2312 Likewise. 2313 * tests/data/test-diff-pkg-ctf/symlink-dir-test1/dir2/symlinks/libfoo.so: 2314 Likewise. 2315 * tests/data/test-diff-pkg-ctf/symlink-dir-test1/dir2/targets/foo.c: 2316 Likewise. 2317 * tests/data/test-diff-pkg-ctf/symlink-dir-test1/dir2/targets/foo.o: 2318 Likewise. 2319 * tests/data/test-diff-pkg-ctf/symlink-dir-test1/dir2/targets/libfoo.so: 2320 Likewise. 2321 * tests/data/test-diff-pkg-ctf/tarpkg-0-dir1.ta: Likewise. 2322 * tests/data/test-diff-pkg-ctf/tarpkg-0-dir1.tar: Likewise. 2323 * tests/data/test-diff-pkg-ctf/tarpkg-0-dir1.tar.bz2: Likewise. 2324 * tests/data/test-diff-pkg-ctf/tarpkg-0-dir1.tar.gz: Likewise. 2325 * tests/data/test-diff-pkg-ctf/tarpkg-0-dir2.ta: Likewise. 2326 * tests/data/test-diff-pkg-ctf/tarpkg-0-dir2.tar: Likewise. 2327 * tests/data/test-diff-pkg-ctf/tarpkg-0-dir2.tar.bz2: Likewise. 2328 * tests/data/test-diff-pkg-ctf/tarpkg-0-dir2.tar.gz: Likewise. 2329 * tests/data/test-diff-pkg-ctf/tarpkg-0-report-0.txt: Likewise. 2330 * tests/data/test-diff-pkg-ctf/tarpkg-1-dir1.tar.gz: Likewise. 2331 * tests/data/test-diff-pkg-ctf/tarpkg-1-dir2.tar.gz: Likewise. 2332 * tests/data/test-diff-pkg-ctf/tarpkg-1-report-0.txt: Likewise. 2333 * tests/data/test-diff-pkg-ctf/test-rpm-report-0.txt: Likewise. 2334 * tests/data/test-diff-pkg-ctf/test-rpm-report-1.txt: Likewise. 2335 * tests/data/test-diff-pkg-ctf/test-rpm-report-2.txt: Likewise. 2336 * tests/data/test-diff-pkg-ctf/test-rpm-report-3.txt: Likewise. 2337 * tests/data/test-diff-pkg-ctf/test-rpm-report-4.txt: Likewise. 2338 * tests/data/test-diff-pkg-ctf/test-rpm-report-5.txt: Likewise. 2339 * tests/data/Makefile.am: Add the test material above to source 2340 distribution. 2341 * tests/test-diff-pkg.cc (in_out_spec): Add the test inputs above 2342 to this harness. 2343 23442022-07-08 Matthias Maennich <maennich@google.com> 2345 2346 tests: Update Catch2 library to v2.13.9 2347 * tests/lib/catch.hpp: Update to v2.13.9 2348 23492022-07-04 Guillermo E. Martinez via Libabigail <libabigail@sourceware.org> 2350 2351 kmidiff: Add CTF support to comparing Kernel trees 2352 * doc/manuals/kmidiff.rst: Add documentation for the new --ctf option. 2353 * tools/kmidiff.cc (options::use_ctf): Define new data member. 2354 (display_usage): Add a help string for the --ctf option. 2355 (main): Adjust call to pass 2356 build_corpus_group_from_kernel_dist_under with origin being 2357 corpus::CTF_ORIGIN when the user provides the --ctf option. 2358 23592022-07-04 Dodji Seketeli <dodji@redhat.com> 2360 2361 dwarf-reader,ir: Don't canonicalize enums too early & too naively 2362 * src/abg-dwarf-reader.cc (maybe_canonicalize_type): Delay enum 2363 type canonicalization. 2364 * src/abg-ir.cc (type_base::get_canonical_type_for): Look through 2365 all decl-only types, not just decl-only classes. 2366 (equals): In the overload for enums, look through decl-only 2367 enums. Also, fix redundant enumerators detection to make it more 2368 robust, otherwise, some regression tests break. 2369 23702022-06-13 Giuliano Procida <gprocida@google.com> 2371 2372 add Linux kernel symbol namespace support 2373 * include/abg-ir.h (elf_symbol::elf_symbol): Add ns argument. 2374 (elf_symbol::create): Add ns argument. 2375 (elf_symbol::get_namespace): Declare new function. 2376 (elf_symbol::set_namespace): Declare new function. 2377 and set_namespace. 2378 * src/abg-comp-filter.cc (namespace_changed): Define new 2379 helper functions. 2380 (categorize_harmful_diff_node): Also call namespace_changed(). 2381 * src/abg-ir.cc (elf_symbol::priv): Add namespace_ member. 2382 (elf_symbol::priv::priv): Add namespace_ to initialisers. 2383 (elf_symbol::elf_symbol): Take new ns argument and pass it to 2384 priv constructor. 2385 (elf_symbol::create): Take new ns argument and pass it to 2386 elf_symbol constructor. 2387 (elf_symbol::get_namespace): Define new function. 2388 (elf_symbol::set_namespace): Define new function. 2389 * src/abg-reader.cc (build_elf_symbol): If namespace 2390 attribute is present, set symbol namespace. 2391 * src/abg-reporter-priv.cc (maybe_report_diff_for_symbol): If 2392 symbol namespaces differ, report this. 2393 * src/abg-symtab-reader.cc (symtab::load): Get ELF header to 2394 distinguish vmlinux from .ko. Try to get __ksymtab_strings 2395 metadata and data. Use these to look up __kstrtabns_FOO 2396 namespace entries. Set symbol namespace where found. 2397 * src/abg-writer.cc (write_elf_symbol): Emit namespace 2398 attribute, if symbol has a namespace. 2399 * tests/data/Makefile.am: Add new test files. 2400 * tests/data/test-abidiff/test-namespace-0.xml: New test file. 2401 * tests/data/test-abidiff/test-namespace-1.xml: Likewise 2402 * tests/data/test-abidiff/test-namespace-report.txt: Likewise. 2403 * tests/test-abidiff.cc: Add new test case. 2404 Reviewed-by: Matthias Maennich <maennich@google.com> 2405 24062022-06-13 Giuliano Procida <gprocida@google.com> 2407 2408 Linux symbol CRCs: support 0 and report presence changes 2409 * include/abg-ir.h (elf_symbol::elf_symbol): Argument crc is 2410 now an optional defaulted to absent. 2411 (elf_symbol::create): Likewise. 2412 (elf_symbol::get_crc): Now returns an optional uint64_t. 2413 (elf_symbol::set_src): Now takes an optional uint64_t. 2414 * src/abg-comp-filter.cc (crc_changed): Simplify comparison. 2415 * src/abg-ir.cc (elf_symbol::priv): Member crc_ is now an 2416 optional uint64_t. 2417 (elf_symbol::priv::priv): Argument crc is now an optional 2418 uint64_t. 2419 (elf_symbol::elf_symbol): Likewise. 2420 (elf_symbol::create): Argument crc is now an optional uint64_t 2421 and defaults to absent. 2422 (textually_equals): Simplify comparison. 2423 (elf_symbol::get_crc): Now returns an optional uint64_t. 2424 (elf_symbol::set_crc): Now takes an optional uint64_t. 2425 * src/abg-reader.cc (build_elf_symbol): Treat CRC 0 the same 2426 as other CRC values. 2427 * src/abg-reporter-priv.cc (maybe_report_diff_for_symbol): 2428 Treat CRC 0 the same as other CRC values and also report 2429 changes to CRC presence. 2430 * src/abg-writer.cc (write_elf_symbol): Treat CRC 0 the same 2431 as other CRC values. 2432 * tests/data/Makefile: Remove test-abidiff/test-crc-report.txt 2433 and add test-abidiff/test-crc-report-{0-1,1-0,1-2}.txt. 2434 * tests/data/test-abidiff/test-crc-report-0-1.txt: Report 2435 showing additional of CRCs. 2436 * tests/data/test-abidiff/test-crc-report-1-0.txt: Report 2437 showing removal of CRCs. 2438 * tests/data/test-abidiff/test-crc-report-1-2.txt: Renamed 2439 from tests/data/test-abidiff/test-crc-report.txt. 2440 * tests/test-abidiff.cc: Update test cases that no longer 2441 generate empty reports. 2442 * tests/test-symtab.cc: Update KernelSymtabsWithCRC test. 2443 Reviewed-by: Matthias Maennich <maennich@google.com> 2444 24452022-06-13 Giuliano Procida <gprocida@google.com> 2446 2447 optional: minor improvements 2448 * include/abg-cxx-compat.h (optional): Add operator== and 2449 operator!=. Add noexcept decorations. Tweak operator bool. 2450 Reviewed-by: Matthias Maennich <maennich@google.com> 2451 24522022-06-13 Giuliano Procida <gprocida@google.com> 2453 2454 crc_changed: eliminate copying of shared_ptr values 2455 * src/abg-comp-filter.cc (crc_changed): Take references to 2456 avoid std::shared_ptr copying. Split declarations into one per 2457 line. Remove unnecessary return expression parentheses. 2458 Reviewed-by: Matthias Maennich <maennich@google.com> 2459 24602022-06-30 Dodji Seketeli <dodji@redhat.com> 2461 2462 ir: Add some debugging facilities for the comparison machinery 2463 * src/abg-ir-priv.h: Include iostream to access std::cerr. 2464 (environment::priv::{dump_classes_being_compared, 2465 dump_fn_types_being_compared}): Define new member functions. 2466 * src/abg-ir.cc (dump_classes_being_compared) 2467 (dump_fn_types_being_compared): Define new functions. 2468 24692022-06-30 Dodji Seketeli <dodji@redhat.com> 2470 2471 Bug 29303 - Cache the result of structural aggregate comparison 2472 * src/abg-ir-priv.h (struct uint64_t_pair_hash): Define new type. 2473 (uint64_t_pair_type, uint64_t_pairs_set_type) 2474 (type_comparison_result_type): Define new typedefs. 2475 (environment::priv::{classes_being_compared_, 2476 fn_types_being_compared_}): Use the new uint64_t_pairs_set_type 2477 type for these. 2478 (environment::priv::{type_comparison_results_cache_, 2479 allow_type_comparison_results_caching_}): Define new data members. 2480 (environment::priv::priv): Initialize the new 2481 allow_type_comparison_results_caching_ scalar data member. 2482 (environment::priv::{allow_type_comparison_results_caching, 2483 cache_type_comparison_result, is_type_comparison_cached, 2484 clear_type_comparison_results_cache}): Define new member 2485 functions. 2486 (environment::priv::{mark_as_being_compared, 2487 unmark_as_being_compared, comparison_started}): Take a pair of 2488 types. 2489 (struct function_type::priv): Move this here, from ... 2490 * src/abg-ir.cc (struct function_type::priv): ... here. 2491 (is_comparison_cycle_detected, mark_types_as_being_compared) 2492 (unmark_types_as_being_compared): Adjust call to the new 2493 environment::priv::{comparison_started, mark_as_being_compared, 2494 unmark_as_being_compared}. 2495 (type_base::get_canonical_type_for): Use aggregate types 2496 comparison result caching when doing type comparison. 2497 (equals): In the overload for function_type, class_or_union and 2498 class_decl, cache the result of aggregate type comparison and 2499 re-use that cached result when it's available. 2500 * src/abg-dwarf-reader.cc 2501 (read_context::compare_before_canonicalisation): Use aggregate 2502 types comparison result caching when doing type comparison. 2503 25042022-06-28 Dodji Seketeli <dodji@redhat.com> 2505 2506 dwarf-reader: Don't consider top-level types as private 2507 * src/abg-dwarf-reader.cc (die_is_public_decl): Only function and 2508 variable decls having the DW_AT_external, as well as non-anonymous 2509 namespaces are considered public decls. The rest is considered 2510 private. 2511 (build_namespace_decl_and_add_to_ir): If the current namespace is 2512 private (anonymous), then its content is also private. Otherwise, 2513 use die_is_public_decl to know if its content is public or not. 2514 25152022-06-24 Dodji Seketeli <dodji@redhat.com> 2516 2517 dwarf-reader: Avoid long comparisons when resolving C++ decl-only classes 2518 * src/abg-dwarf-reader.cc 2519 (read_context::resolve_declaration_only_classes): Don't compare 2520 same-name-types of a binary if the ODR is relevant. 2521 * tests/data/test-annotate/test14-pr18893.so.abi: Adjust. 2522 * tests/data/test-read-dwarf/test-libandroid.so.abi: Likewise. 2523 * tests/data/test-read-dwarf/test14-pr18893.so.abi: Likewise. 2524 * tests/data/test-read-dwarf/test9-pr18818-clang.so.abi: Likewise. 2525 25262022-06-23 Dodji Seketeli <dodji@redhat.com> 2527 2528 test-alt-dwarf: Add missing dwz alt-debug file 2529 * tests/data/test-alt-dwarf-file/libstdc++/libstdc++-report-1.txt: 2530 New reference test output. 2531 * tests/data/test-alt-dwarf-file/libstdc++/usr/lib/debug/.dwz/gcc-12.1.1-1.fc37.x86_64: 2532 New dwz alt-debug info file. 2533 * tests/data/Makefile.am: Add the test material above to source 2534 distribution. 2535 25362022-06-23 Dodji Seketeli <dodji@redhat.com> 2537 2538 ir: Make canonicalization stable wrt typedefs in fn return types 2539 * src/abg-ir.cc (get_function_type_name, get_method_type_name): 2540 When the function type name is for internal purposes, strip 2541 potential typedefs off. 2542 (equal): In the overload for function_type, strip potential 2543 typedefs off of return types before comparing them. 2544 (decl_base::set_naming_typedef): Properly adjust the qualified 2545 name of the type to which a naming typedef is being set. 2546 * tests/data/test-alt-dwarf-file/libstdc++/libstdc++-report.txt: 2547 New reference test output. 2548 * tests/data/test-alt-dwarf-file/libstdc++/usr/lib/debug/usr/lib64/libstdc++.so.6.0.30-12.1.1-1.fc37.x86_64.debug: 2549 New binary test input. 2550 * tests/data/test-alt-dwarf-file/libstdc++/usr/lib64/libstdc++.so.6.0.30: 2551 New binary test input. 2552 * tests/data/Makefile.am: Add the new test material to source 2553 distribution. 2554 * tests/data/test-annotate/test15-pr18892.so.abi: Adjust. 2555 * tests/data/test-annotate/test17-pr19027.so.abi: Likewise. 2556 * tests/data/test-annotate/test21-pr19092.so.abi: Likewise. 2557 * tests/data/test-read-dwarf/PR25007-sdhci.ko.abi: Likewise. 2558 * tests/data/test-read-dwarf/test-libaaudio.so.abi: Likewise. 2559 * tests/data/test-read-dwarf/test-libandroid.so.abi: Likewise. 2560 * tests/data/test-read-dwarf/test15-pr18892.so.abi: Likewise. 2561 * tests/data/test-read-dwarf/test16-pr18904.so.abi: Likewise. 2562 * tests/data/test-read-dwarf/test17-pr19027.so.abi: Likewise. 2563 * tests/data/test-read-dwarf/test21-pr19092.so.abi: Likewise. 2564 25652022-06-21 Dodji Seketeli <dodji@redhat.com> 2566 2567 Update year in copyright notice 2568 * include/abg-comp-filter.h: Update year in copyright notice. 2569 * include/abg-comparison.h: Likewise. 2570 * include/abg-config.h: Likewise. 2571 * include/abg-corpus.h: Likewise. 2572 * include/abg-ctf-reader.h: Likewise. 2573 * include/abg-cxx-compat.h: Likewise. 2574 * include/abg-diff-utils.h: Likewise. 2575 * include/abg-dwarf-reader.h: Likewise. 2576 * include/abg-elf-reader-common.h: Likewise. 2577 * include/abg-fwd.h: Likewise. 2578 * include/abg-hash.h: Likewise. 2579 * include/abg-ini.h: Likewise. 2580 * include/abg-interned-str.h: Likewise. 2581 * include/abg-ir.h: Likewise. 2582 * include/abg-libxml-utils.h: Likewise. 2583 * include/abg-reader.h: Likewise. 2584 * include/abg-regex.h: Likewise. 2585 * include/abg-reporter.h: Likewise. 2586 * include/abg-sptr-utils.h: Likewise. 2587 * include/abg-suppression.h: Likewise. 2588 * include/abg-tools-utils.h: Likewise. 2589 * include/abg-traverse.h: Likewise. 2590 * include/abg-viz-common.h: Likewise. 2591 * include/abg-viz-dot.h: Likewise. 2592 * include/abg-viz-svg.h: Likewise. 2593 * include/abg-workers.h: Likewise. 2594 * include/abg-writer.h: Likewise. 2595 * src/abg-comp-filter.cc: Likewise. 2596 * src/abg-comparison-priv.h: Likewise. 2597 * src/abg-comparison.cc: Likewise. 2598 * src/abg-config.cc: Likewise. 2599 * src/abg-corpus-priv.h: Likewise. 2600 * src/abg-corpus.cc: Likewise. 2601 * src/abg-ctf-reader.cc: Likewise. 2602 * src/abg-default-reporter.cc: Likewise. 2603 * src/abg-diff-utils.cc: Likewise. 2604 * src/abg-dwarf-reader.cc: Likewise. 2605 * src/abg-elf-helpers.cc: Likewise. 2606 * src/abg-elf-helpers.h: Likewise. 2607 * src/abg-elf-reader-common.cc: Likewise. 2608 * src/abg-hash.cc: Likewise. 2609 * src/abg-ini.cc: Likewise. 2610 * src/abg-internal.h: Likewise. 2611 * src/abg-ir-priv.h: Likewise. 2612 * src/abg-ir.cc: Likewise. 2613 * src/abg-leaf-reporter.cc: Likewise. 2614 * src/abg-libxml-utils.cc: Likewise. 2615 * src/abg-reader.cc: Likewise. 2616 * src/abg-regex.cc: Likewise. 2617 * src/abg-reporter-priv.cc: Likewise. 2618 * src/abg-reporter-priv.h: Likewise. 2619 * src/abg-suppression-priv.h: Likewise. 2620 * src/abg-suppression.cc: Likewise. 2621 * src/abg-symtab-reader.cc: Likewise. 2622 * src/abg-symtab-reader.h: Likewise. 2623 * src/abg-tools-utils.cc: Likewise. 2624 * src/abg-traverse.cc: Likewise. 2625 * src/abg-viz-common.cc: Likewise. 2626 * src/abg-viz-dot.cc: Likewise. 2627 * src/abg-viz-svg.cc: Likewise. 2628 * src/abg-workers.cc: Likewise. 2629 * src/abg-writer.cc: Likewise. 2630 * tests/print-diff-tree.cc: Likewise. 2631 * tests/test-abicompat.cc: Likewise. 2632 * tests/test-abidiff-exit.cc: Likewise. 2633 * tests/test-abidiff.cc: Likewise. 2634 * tests/test-alt-dwarf-file.cc: Likewise. 2635 * tests/test-core-diff.cc: Likewise. 2636 * tests/test-cxx-compat.cc: Likewise. 2637 * tests/test-diff-dwarf-abixml.cc: Likewise. 2638 * tests/test-diff-dwarf.cc: Likewise. 2639 * tests/test-diff-filter.cc: Likewise. 2640 * tests/test-diff-pkg.cc: Likewise. 2641 * tests/test-diff-suppr.cc: Likewise. 2642 * tests/test-diff2.cc: Likewise. 2643 * tests/test-elf-helpers.cc: Likewise. 2644 * tests/test-ini.cc: Likewise. 2645 * tests/test-ir-walker.cc: Likewise. 2646 * tests/test-kmi-whitelist.cc: Likewise. 2647 * tests/test-lookup-syms.cc: Likewise. 2648 * tests/test-read-ctf.cc: Likewise. 2649 * tests/test-read-dwarf.cc: Likewise. 2650 * tests/test-read-write.cc: Likewise. 2651 * tests/test-symtab-reader.cc: Likewise. 2652 * tests/test-symtab.cc: Likewise. 2653 * tests/test-tools-utils.cc: Likewise. 2654 * tests/test-types-stability.cc: Likewise. 2655 * tests/test-utils.cc: Likewise. 2656 * tests/test-utils.h: Likewise. 2657 * tools/abicompat.cc: Likewise. 2658 * tools/abidiff.cc: Likewise. 2659 * tools/abidw.cc: Likewise. 2660 * tools/abilint.cc: Likewise. 2661 * tools/abipkgdiff.cc: Likewise. 2662 * tools/abisym.cc: Likewise. 2663 * tools/binilint.cc: Likewise. 2664 * tools/kmidiff.cc: Likewise. 2665 * update-copyright.sh: Likewise. 2666 26672022-06-21 Dodji Seketeli <dodji@redhat.com> 2668 2669 reporter-priv: Passing a string parm by reference 2670 * src/abg-reporter-priv.h 2671 (maybe_report_data_members_replaced_by_anon_dm): Pass the string parm by ... 2672 * src/abg-reporter-priv.cc 2673 (maybe_report_data_members_replaced_by_anon_dm): ... reference. 2674 26752022-04-11 Dodji Seketeli <dodji@redhat.com> 2676 2677 dwarf-reader: Fix DWARF string comparison optimization 2678 * src/abg-dwarf-reader.cc (slowly_compare_strings) 2679 (die_char_str_attribute): Define new static functions. 2680 (compare_dies_string_attribute_value): Use the new 2681 slowly_compare_strings here. 2682 * tests/data/test-annotate/test15-pr18892.so.abi: Adjust. 2683 * tests/data/test-annotate/test17-pr19027.so.abi: Likewise. 2684 * tests/data/test-annotate/test19-pr19023-libtcmalloc_and_profiler.so.abi: Likewise. 2685 * tests/data/test-read-dwarf/PR25042-libgdbm-clang-dwarf5.so.6.0.0.abi: Likewise. 2686 * tests/data/test-read-dwarf/test-libandroid.so.abi: Likewise. 2687 * tests/data/test-read-dwarf/test15-pr18892.so.abi: Likewise. 2688 * tests/data/test-read-dwarf/test17-pr19027.so.abi: Likewise. 2689 * tests/data/test-read-dwarf/test19-pr19023-libtcmalloc_and_profiler.so.abi: Likewise. 2690 * tests/data/test-read-dwarf/test22-pr19097-libstdc++.so.6.0.17.so.abi: Likewise. 2691 26922022-04-04 Dodji Seketeli <dodji@redhat.com> 2693 2694 Canonicalize DIEs w/o assuming ODR & handle typedefs transparently 2695 * include/abg-fwd.h (peel_typedef_pointer_or_reference_type): 2696 Declare new function. 2697 * src/abg-dwarf-reader.cc (read_context::{compute_canonical_die, 2698 get_canonical_die, get_or_compute_canonical_die}): Don't 2699 special-case ODR-relevant cases. 2700 (is_canon_type_to_be_propagated_tag): Rename 2701 is_canonicalizeable_type_tag into this. 2702 (erase_offset_pair): Make this return a bool, not void. 2703 (have_offset_pair_in_common, try_canonical_die_comparison) 2704 (notify_die_comparison_failed): Define new static functions. 2705 (ABG_RETURN, ABG_RETURN_FALSE): Define new macros. 2706 (compare_dies): Handle DW_TAG_{class,unspecified}_type DIES. Also 2707 if a comparing a DIE kind is not supported, assume the comparison 2708 yields "false" for the purpose of canonicalization. Add a new 2709 parameter for redundant aggregates being compared. Use the 2710 redundant aggregate set to detect if a redundant aggregate has 2711 been detected and is still being "explored"; if that's the case, 2712 then canonical DIE propagation is de-activated. This might incur 2713 a performance hit. Use the new ABG_RETURN and ABG_RETURN_FALSE 2714 macros. Use the new try_canonical_die_comparison to compare 2715 canonical DIEs rather than doing it by hand. 2716 (build_typedef_type): Don't try to rely on canonical typedefs 2717 DIEs. 2718 * src/abg-ir.cc 2719 (type_topo_comp::has_artificial_or_natural_location): Define new 2720 method. 2721 (type_topo_comp::operator(const type_base*, const type_base*)): In 2722 this topological comparison operator of types, when two types have 2723 the same textual representation, if they don't have any location, 2724 if they are pointer/reference/typedef types, use the textual 2725 representation of their ultimate underlying type for sorting 2726 order. 2727 (peel_typedef_pointer_or_reference_type): Define new function. 2728 (compare_types_during_canonicalization): Perform the structural 2729 canonical comparison first. 2730 (equals): In the overload for array_type_def::subrange_type&, 2731 remove unused code. In the overload for typedef_decl& don't 2732 compare typedef names. In the overload for class_or_union, make 2733 the RETURN macro *NOT* propagate canonical type because this equal 2734 function is used as a subroutine by overloads for class and union. 2735 That means that the class_or_union equal function can return true, 2736 and still, the caller (overload for class_decl or union_decl) can 2737 later return false; in that case, we don't want canonical type to 2738 be propagated. In the overload for class_decl::base_spec, use the 2739 ABG_RETURN macro when returning comparing decl-bases. In the 2740 overload for class_decl, use ABG_RETURN when returning the result 2741 of comparing class_or_union artifacts. 2742 (maybe_propagate_canonical_type): If we are using canonical type 2743 comparison, then do not propagate the type, if 2744 WITH_DEBUG_TYPE_CANONICALIZATION is defined. 2745 (is_non_canonicalized_type): Add typedefs to the set of 2746 non-canonicalized types. 2747 * src/abg-writer.cc (struct non_canonicalized_type_hash, struct 2748 non_canonicalized_type_equal): Define new functors. 2749 (typedef nc_type_ptr_set_type): Define a new non-canonicalized set 2750 type. 2751 (typedef nc_type_ptr_istr_map_type): Define a new map of 2752 non-canonicalized types/interned string map. 2753 (write_context::{m_nc_type_id_map, 2754 m_emitted_non_canonicalized_type_set, 2755 m_referenced_non_canonicalized_types_set}): New data members. 2756 (write_context::type_has_existing_id): Look for non-canonicalized 2757 types in the m_nc_type_id_map map. 2758 (write_context::get_id_for_type): Use m_nc_type_id_map for 2759 non-canonicalized types. 2760 (write_context::clear_type_id_map): Clear m_nc_type_id_map too. 2761 (write_context::get_referenced_non_canonicalized_types): Renamed 2762 write_context::get_referenced_non_canonical_types into this. Make 2763 it return the new 2764 write_context::m_referenced_non_canonicalized_types_set. 2765 (write_context::has_non_emitted_referenced_types): Just use 2766 write_context::type_is_emitted as it knows where to look up for 2767 non-canonicalized types. 2768 (write_context::record_type_as_referenced): Use 2769 m_referenced_non_canonicalized_types_set to store referenced 2770 non-canonicalized types. The other types are stored in 2771 m_emitted_set as previously. 2772 (write_context::type_is_emitted): Look into 2773 m_emitted_non_canonicalized_type_set for non-canonicalized types. 2774 Other types are still in m_emitted_type_set. 2775 (write_context::{record_decl_only_type_as_emitted, 2776 decl_only_type_is_emitted, get_emitted_decl_only_types_set}): 2777 Remove methods. 2778 (write_context::get_emitted_non_canonicalized_type_set): Define 2779 new method. 2780 (write_context::clear_referenced_types): Clear 2781 m_referenced_non_canonicalized_types_set too, as 2782 m_referenced_non_canonical_types_set is no more. 2783 (write_context::referenced_type_should_be_emitted): Use only 2784 write_context::type_is_emitted as it knows how to check it all 2785 now. 2786 (write_referenced_types): Use the more compact ranged-base for 2787 loops. 2788 (write_translation_unit): Write the non-canonicalized types that 2789 are not yet emitted. 2790 (write_class_decl, write_union_decl): Adjust recording type as 2791 emitted. 2792 (write_canonical_type_ids): Adjust. 2793 * tests/data/test-abidiff/test-PR18791-report0.txt: Adjust. 2794 * tests/data/test-annotate/libtest23.so.abi: Likewise. 2795 * tests/data/test-annotate/libtest24-drop-fns-2.so.abi: Likewise. 2796 * tests/data/test-annotate/libtest24-drop-fns.so.abi: Likewise. 2797 * tests/data/test-annotate/test-anonymous-members-0.o.abi: Likewise. 2798 * tests/data/test-annotate/test0.abi: Likewise. 2799 * tests/data/test-annotate/test1.abi: Likewise. 2800 * tests/data/test-annotate/test13-pr18894.so.abi: Likewise. 2801 * tests/data/test-annotate/test14-pr18893.so.abi: Adjust. 2802 * tests/data/test-annotate/test15-pr18892.so.abi: Likewise. 2803 * tests/data/test-annotate/test17-pr19027.so.abi: Likewise. 2804 * tests/data/test-annotate/test18-pr19037-libvtkRenderingLIC-6.1.so.abi: Likewise. 2805 * tests/data/test-annotate/test19-pr19023-libtcmalloc_and_profiler.so.abi: Likewise. 2806 * tests/data/test-annotate/test2.so.abi: Likewise. 2807 * tests/data/test-annotate/test20-pr19025-libvtkParallelCore-6.1.so.abi: Likewise. 2808 * tests/data/test-annotate/test21-pr19092.so.abi: Likewise. 2809 * tests/data/test-annotate/test3.so.abi: Likewise. 2810 * tests/data/test-annotate/test5.o.abi: Likewise. 2811 * tests/data/test-diff-dwarf-abixml/PR25409-librte_bus_dpaa.so.20.0.abi: 2812 Likewise. 2813 * tests/data/test-diff-dwarf-abixml/test0-pr19026-libvtkIOSQL-6.1.so.1.abi: 2814 Likewise. 2815 * tests/data/test-diff-dwarf/PR25058-liblttng-ctl-report-1.txt: Likewise. 2816 * tests/data/test-diff-dwarf/test42-PR21296-clanggcc-report0.txt: Likewise. 2817 * tests/data/test-diff-filter/test31-pr18535-libstdc++-report-0.txt: Likewise. 2818 * tests/data/test-diff-filter/test31-pr18535-libstdc++-report-1.txt: Likewise. 2819 * tests/data/test-diff-filter/test41-report-0.txt: Likewise. 2820 * tests/data/test-diff-pkg/libICE-1.0.6-1.el6.x86_64.rpm--libICE-1.0.9-2.el7.x86_64: 2821 Likewise. 2822 * tests/data/test-diff-pkg/nmap-7.70-5.el8_testjcc.x86_64-self-check-report-0.txt: 2823 Likewise 2824 * tests/data/test-diff-pkg/nss-3.23.0-1.0.fc23.x86_64-report-0.txt: 2825 Likewise. 2826 * tests/data/test-diff-pkg/spice-server-0.12.4-19.el7.x86_64-0.12.8-1.el7.x86_64-report-0.txt: 2827 Likewise. 2828 * tests/data/test-diff-pkg/spice-server-0.12.4-19.el7.x86_64-0.12.8-1.el7.x86_64-report-2.txt: 2829 Likewise. 2830 * tests/data/test-diff-pkg/tbb-4.1-9.20130314.fc22.x86_64--tbb-4.3-3.20141204.fc23.x86_64-report-0.txt: 2831 Likewise. 2832 * tests/data/test-diff-pkg/tbb-4.1-9.20130314.fc22.x86_64--tbb-4.3-3.20141204.fc23.x86_64-report-1.txt: 2833 Likewise. 2834 * tests/data/test-diff-suppr/test39-opaque-type-report-0.txt: 2835 Likewise. 2836 * tests/data/test-read-ctf/test-ambiguous-struct-A.o.hash.abi: 2837 Likewise. 2838 * tests/data/test-read-ctf/test-conflicting-type-syms-a.o.hash.abi: 2839 Likewise. 2840 * tests/data/test-read-ctf/test-conflicting-type-syms-b.o.hash.abi: 2841 Likewise. 2842 * tests/data/test-read-ctf/test-functions-declaration.abi: 2843 Likewise. 2844 * tests/data/test-read-ctf/test1.so.abi: Likewise. 2845 * tests/data/test-read-ctf/test1.so.hash.abi: Likewise. 2846 * tests/data/test-read-ctf/test2.so.abi: Likewise. 2847 * tests/data/test-read-ctf/test2.so.hash.abi: Likewise. 2848 * tests/data/test-read-ctf/test5.o.abi: Likewise. 2849 * tests/data/test-read-ctf/test7.o.abi: Likewise. 2850 * tests/data/test-read-dwarf/PR22015-libboost_iostreams.so.abi: 2851 Likewise. 2852 * tests/data/test-read-dwarf/PR22122-libftdc.so.abi: Likewise. 2853 * tests/data/test-read-dwarf/PR24378-fn-is-not-scope.abi: 2854 Likewise. 2855 * tests/data/test-read-dwarf/PR25007-sdhci.ko.abi: Likewise. 2856 * tests/data/test-read-dwarf/PR25042-libgdbm-clang-dwarf5.so.6.0.0.abi: 2857 Likewise. 2858 * tests/data/test-read-dwarf/PR26261/PR26261-exe.abi: Likewise. 2859 * tests/data/test-read-dwarf/PR27700/test-PR27700.abi: Likewise. 2860 * tests/data/test-read-dwarf/libtest23.so.abi: Likewise. 2861 * tests/data/test-read-dwarf/libtest24-drop-fns-2.so.abi: 2862 Likewise. 2863 * tests/data/test-read-dwarf/libtest24-drop-fns.so.abi: Likewise. 2864 * tests/data/test-read-dwarf/test-PR26568-1.o.abi: Likewise. 2865 * tests/data/test-read-dwarf/test-PR26568-2.o.abi: Likewise. 2866 * tests/data/test-read-dwarf/test-libaaudio.so.abi: Likewise. 2867 * tests/data/test-read-dwarf/test-libandroid.so.abi: Likewise. 2868 * tests/data/test-read-dwarf/test-suppressed-alias.o.abi: 2869 Likewise. 2870 * tests/data/test-read-dwarf/test0.abi: Likewise. 2871 * tests/data/test-read-dwarf/test0.hash.abi: Likewise. 2872 * tests/data/test-read-dwarf/test1.abi: Likewise. 2873 * tests/data/test-read-dwarf/test1.hash.abi: Likewise. 2874 * tests/data/test-read-dwarf/test10-pr18818-gcc.so.abi: Likewise. 2875 * tests/data/test-read-dwarf/test11-pr18828.so.abi: Likewise. 2876 * tests/data/test-read-dwarf/test12-pr18844.so.abi: Likewise. 2877 * tests/data/test-read-dwarf/test13-pr18894.so.abi: Likewise. 2878 * tests/data/test-read-dwarf/test14-pr18893.so.abi: Likewise. 2879 * tests/data/test-read-dwarf/test15-pr18892.so.abi: Likewise. 2880 * tests/data/test-read-dwarf/test16-pr18904.so.abi: Likewise. 2881 * tests/data/test-read-dwarf/test17-pr19027.so.abi: Likewise. 2882 * tests/data/test-read-dwarf/test18-pr19037-libvtkRenderingLIC-6.1.so.abi: 2883 Likewise. 2884 * tests/data/test-read-dwarf/test19-pr19023-libtcmalloc_and_profiler.so.abi: 2885 Likewise. 2886 * tests/data/test-read-dwarf/test2.so.abi: Likewise. 2887 * tests/data/test-read-dwarf/test2.so.hash.abi: Likewise. 2888 * tests/data/test-read-dwarf/test20-pr19025-libvtkParallelCore-6.1.so.abi: 2889 Likewise. 2890 * tests/data/test-read-dwarf/test21-pr19092.so.abi: Likewise. 2891 * tests/data/test-read-dwarf/test22-pr19097-libstdc++.so.6.0.17.so.abi: 2892 Likewise. 2893 * tests/data/test-read-dwarf/test3-alias-1.so.hash.abi: Likewise. 2894 * tests/data/test-read-dwarf/test3-alias-2.so.hash.abi: Likewise. 2895 * tests/data/test-read-dwarf/test3-alias-3.so.hash.abi: Likewise. 2896 * tests/data/test-read-dwarf/test3-alias-4.so.hash.abi: Likewise. 2897 * tests/data/test-read-dwarf/test3.so.abi: Likewise. 2898 * tests/data/test-read-dwarf/test3.so.hash.abi: Likewise. 2899 * tests/data/test-read-dwarf/test5.o.abi: Likewise. 2900 * tests/data/test-read-dwarf/test5.o.hash.abi: Likewise. 2901 * tests/data/test-read-dwarf/test9-pr18818-clang.so.abi: Likewise. 2902 * tests/data/test-read-write/test18.xml: Likewise. 2903 * tests/data/test-read-write/test28-without-std-fns-ref.xml: 2904 Likewise. 2905 * tests/data/test-read-write/test28-without-std-vars-ref.xml: 2906 Likewise. 2907 29082022-04-14 Dodji Seketeli <dodji@redhat.com> 2909 2910 dwarf-reader: compare_dies sometimes compares empty formal parms 2911 * src/abg-dwarf-reader.cc (compare_dies): Don't try to compare 2912 formal parameters if there is none. 2913 29142022-03-31 Dodji Seketeli <dodji@redhat.com> 2915 2916 abidw, dwarf-reader: Add an option to debug DIE canonicalization 2917 * include/abg-ir.h 2918 (environment::debug_die_canonicalization_is_on): Declare new methods. 2919 * src/abg-ir.cc (environment::debug_die_canonicalization_is_on): 2920 Define them. 2921 * src/abg-dwarf-reader.cc 2922 (compare_dies_during_canonicalization): Define new static 2923 function. 2924 (read_context::{debug_die_canonicalization_is_on_, 2925 use_canonical_die_comparison_}): Declare these data members. 2926 (read_context::read_context): Initialize them. 2927 (read_context::get_canonical_die): When ODR is considered, if DIE 2928 canonicalization debugging is on, use the new 2929 compare_dies_during_canonicalization for the type comparison to be 2930 done both structurally and canonically; both comparison should 2931 yield the same result. Also, make this method function non-const. 2932 * src/abg-ir-priv.h 2933 (environment::priv::debug_die_canonicalization_): Define new data 2934 member. 2935 (environment::priv::priv): Initialize it. 2936 * tools/abidw.cc (options::debug_die_canonicalization_): Define 2937 new data member. 2938 (options::options): Initialize it. 2939 (display_usage): Add a description for the --debug-dc option. 2940 (parse_command): Parse the new --debug-dc option. 2941 (load_corpus_and_write_abixml): Use the new 2942 environment::debug_die_canonicalization_is_on. 2943 29442022-03-31 Dodji Seketeli <dodji@redhat.com> 2945 2946 test-read-dwarf: Use abidw rather than using the library 2947 * tests/test-read-dwarf.cc (set_suppressions) 2948 (set_suppressions_from_headers): Remove these static functions. 2949 (test_task_dwarf::perform): Use abidw rather than using the 2950 library. Remove the path and architecture from the abixml files. 2951 Also, when the test fails, display the actual command that failed. 2952 29532022-03-31 Dodji Seketeli <dodji@redhat.com> 2954 2955 Add better error messaging to several tests 2956 * tests/test-diff-filter.cc (test_task::perform): Display the 2957 failing command. 2958 * tests/test-read-common.cc (test_task::run_abidw): Likewise. 2959 * tests/test-read-common.h (test_task::run_diff): Likewise. 2960 29612022-06-13 Dodji Seketeli <dodji@redhat.com> 2962 2963 ir, test-read-ctf: Remove uncertainty in sorting anonymous types 2964 * src/abg-ir.cc ({class_decl, 2965 union_decl}::get_pretty_representation): If the anonymous class 2966 has no internal name, use its flat representation as internal 2967 representation. 2968 * tests/data/test-read-ctf/test-PR26568-1.o.abi: Likewise. 2969 * tests/data/test-read-ctf/test-PR26568-2.o.abi: Likewise. 2970 * tests/data/test-read-ctf/test-anonymous-fields.o.abi: Likewise. 2971 * tests/data/test-read-ctf/test-anonymous-fields.o.abi: Likewise. 2972 * tests/data/test-read-ctf/test0.hash.abi: Likewise. 2973 29742022-06-09 Giuliano Procida <gprocida@google.com> 2975 2976 limit repeated DIE comparisons 2977 * src/abg-dwarf-reader.cc (read_context): Add mutable 2978 die_comparison_visits_ member. 2979 (compare_dies): Return true if this is a self-comparison. 2980 Return true if we have visited this comparison 10000 times. 2981 29822022-06-09 Dodji Seketeli <dodji@redhat.com> 2983 2984 abicompat: Properly guard inclusion of abg-ctf-reader.h 2985 * tools/abicompat.cc: Guard inclusion of abg-ctf-reader.h with 2986 #ifdef WITH_CTF. 2987 29882022-06-03 Dodji Seketeli <dodji@redhat.com> 2989 2990 Bug 29144 - abidiff doesn't report base class re-ordering 2991 * include/abg-comparison.h (class_diff::moved_bases): Declare new 2992 method. 2993 * src/abg-comparison-priv.h (class_diff::priv::moved_bases_): 2994 Define new data member. 2995 * src/abg-reporter-priv.h (maybe_report_base_class_reordering): 2996 Declare new function. 2997 * src/abg-reporter-priv.cc (maybe_report_base_class_reordering): 2998 Define new function. 2999 * src/abg-comparison.cc 3000 (class_diff::ensure_lookup_tables_populated): Detect that a base 3001 class moved position and record it into 3002 class_diff::priv::moved_bases_ data member. 3003 * src/abg-default-reporter.cc (default_reporter::report): Use the 3004 new maybe_report_base_class_reordering. 3005 * src/abg-leaf-reporter.cc (leaf_reporter::report): Likewise. 3006 * tests/data/test-abidiff-exit/test-PR29144-report-2.txt: New 3007 testing input file. 3008 * tests/data/test-abidiff-exit/test-PR29144-report.txt: Likewise. 3009 * tests/data/test-abidiff-exit/test-PR29144-v0.cc: Likewise. 3010 * tests/data/test-abidiff-exit/test-PR29144-v0.o: Likewise. 3011 * tests/data/test-abidiff-exit/test-PR29144-v1.cc: Likewise. 3012 * tests/data/test-abidiff-exit/test-PR29144-v1.o: Likewise. 3013 * tests/data/Makefile.am: Add the new files to source 3014 distribution. 3015 * tests/test-abidiff-exit.cc (in_out_specs): Add the new tests to 3016 this harness. 3017 30182022-06-03 Ben Woodard via Libabigail <libabigail@sourceware.org> 3019 3020 abicompat: Support reading CTF and abixml 3021 * tools/abicompat.cc (options::{fail_no_debug_info, use_ctf}): New 3022 data members. 3023 (options::options): Initialize them. 3024 (display_usage): Add a help string for the new options 3025 --fail-no-debug-info and --ctf. 3026 (parse_command_line): Support parsing the new options 3027 --fail-no-debug-info and --ctf. 3028 (read_corpus): New static function. 3029 (main): Use the new read_corpus in lieu of using 3030 dwarf_reader::read_corpus_from_elf and/or ctf_reader::read_corpus 3031 and/or xml::reader::read_corpus_from_input. 3032 * doc/manuals/abicompat.rst: add documentation for new options. 3033 30342022-06-03 Ben Woodard <woodard@redhat.com> 3035 3036 abidiff: Remove redundant code 3037 * tools/abidiff.cc (main): Remove redundant code. 3038 30392022-06-03 Giuliano Procida <gprocida@google.com> 3040 3041 XML writer: unify type emission tracking 3042 * src/abg-writer.cc (write_context): Remove the 3043 m_emitted_decl_only_set member. 3044 (write_context::has_non_emitted_referenced_types): Remove the 3045 calls to decl_only_type_is_emitted. 3046 (write_context::record_decl_only_type_as_emitted): Removed. 3047 (write_context::decl_only_type_is_emitted): Ditto. 3048 (write_context::get_emitted_decl_only_types_set): Ditto. 3049 (referenced_type_should_be_emitted): Remove the calls to 3050 decl_only_type_is_emitted. 3051 (write_class_decl): Just call record_type_as_emitted. 3052 (write_union_decl): Ditto. 3053 (write_enum_type_decl): Not changed, but now all 3 functions 3054 have the same behaviour. 3055 (write_canonical_type_ids): Remove the call to 3056 get_emitted_decl_only_types_set. 3057 30582022-06-03 Ben Woodard <woodard@redhat.com> 3059 3060 abicompat: Add missing space 3061 * tools/abicompat.cc (main): Add missing space in expression. 3062 30632022-06-01 Dodji Seketeli <dodji@redhat.com> 3064 3065 comparison: Fix leaf report summary 3066 * src/abg-comparison.cc (corpus_diff::priv::emit_diff_stats): In 3067 the "leaf change summary" section, add the number of removed/added 3068 symbols not described by debug info. 3069 30702022-05-30 Giuliano Procida <gprocida@google.com> 3071 3072 test-annotate.cc: ignore whitespace during diff 3073 * tests/test-annotate.cc (main): Pass diff -w option. 3074 Suggested-by: Bogdan Graur <bgraur@google.com> 3075 30762022-05-16 Mark Wielaard <mark@klomp.org> 3077 3078 symtab-reader: Setup aliases before checking ppc64 opd function entries 3079 * src/abg-elf-helpers.h (architecture_is_ppc32): Declare new 3080 function. 3081 * src/abg-elf-helpers.cc (architecture_is_ppc32): Define it. 3082 * src/abg-symtab-reader.cc 3083 (symtab::setup_symbol_lookup_tables): Rename 3084 symtab::get_symbol_value into this. Setup symbol aliases before 3085 setting up function entry address maps for ppc{32,64} ELFv1 and 3086 after fixing up arm32/64 addresses. 3087 (symtab::load_): Invoke the new setup_symbol_lookup_tables. 3088 update_function_entry_address_symbol_map after setting up aliases. 3089 No need to setup symbol aliases anymore. 3090 (symtab::add_alternative_address_lookups): Invoke the new 3091 setup_symbol_lookup_tables. 3092 30932022-05-16 Guillermo E. Martinez <guillermo.e.martinez@oracle.com> 3094 3095 ctf-reader: add support to looking debug information in external path 3096 * include/abg-ctf-reader.h (ctf_reader::create_read_context): 3097 Add `debug_info_root_paths' argument. 3098 (ctf_reader::reset_read_context): Likewise. 3099 * src/abg-ctf-reader.cc: Add `read_context::elf_{handler,fd}_dbg', 3100 data members. 3101 (read_context::read_context): Add new `debug_info_root_paths' 3102 argument. 3103 (read_context::initialize): Likewise. 3104 (ctf_reader::create_read_context): Likewise. 3105 (ctf_reader::close_elf_handler): Release 3106 `read_context::elf_{handler,fd}_dbg' members. 3107 (ctf_reader::find_alt_debuginfo): Add new function. 3108 (ctf_reader::slurp_elf_info): Add new argument `status'. Use 3109 `find_alt_debuginfo' and `elf_helpers::find_section_by_name' 3110 to read the symtab and ctf information from an external .debug 3111 file, the `status' reference is updated. 3112 (ctf_reader::read_corpus): Verify `status' after `slurp_elf_info'. 3113 (ctf_reader::reset_read_context): Add new `debug_info_root_path' 3114 argument. 3115 * src/abg-elf-helpers.cc (elf_helpers::find_section_by_name): Update 3116 comment. 3117 * src/abg-tools-utils.cc (maybe_load_vmlinux_ctf_corpus): 3118 Adjust `ctf_reader::{create,reset}_read_context'. 3119 * tests/test-read-ctf.cc: Likewise. 3120 * tools/abidiff.cc (display_usage): Add `--ctf' command line 3121 option. 3122 (main): Adjust `ctf_reader::create_read_context'. 3123 Likewise. 3124 * tools/abidw.cc (load_corpus_and_write_abixml): Adjust 3125 `ctf_reader::create_read_context'. 3126 * tools/abilint.cc (main): Likewise. 3127 * tools/abipkgdiff.cc (compare, compare_to_self): Likewise. 3128 31292022-05-16 Vanessa Sochat <sochat1@llnl.gov> 3130 3131 Adding missing newline to build-container workflow 3132 * .github/workflows/build-container.yaml: Add missing newline. 3133 Reviewed-by: Ben Woodard <woodard@redhat.com> 3134 31352022-05-16 Ben Woodard <woodard@redhat.com> 3136 3137 Add github actions to support workflows 3138 * .github/workflows/build-container.yaml: New file. 3139 * .github/workflows/libabigail.yaml: Likewise. 3140 * .github/workflows/test.yaml: Likewise. 3141 * .github/workflows/test-fedora.yaml: Likewise. 3142 * .github/README.md: Likewise. 3143 * docker/Dockerfile.fedora: Likewise. 3144 * docker/Dockerfile.ubuntu: Likewise. 3145 * docker/Dockerfile.fedora-base: Likewise. 3146 * docker/Dockerfile.test: Likewise. 3147 * README-DOCKER.md: Likewise. 3148 Reviewed-by: Ben Woodard <woodard@redhat.com> 3149 31502022-05-06 Guillermo E. Martinez <guillermo.e.martinez@oracle.com> 3151 3152 abipkgdiff: Add support to compare packages with CTF debug format 3153 * tools/abipkgdiff.cc: Include `abg-ctf-reader.h'. 3154 (options::use_ctf): Add new data member. 3155 (display_usage): Add `--ctf' usage. 3156 (compare): Add condition to use ctf-reader to extract 3157 (parse_command_line): Set `options::use_ctf' when --ctf 3158 option is provided. 3159 and build CTF corpora when `options::use_ctf' is set. 3160 (compare_to_self): Likewise. 3161 31622022-05-06 Guillermo E. Martinez <guillermo.e.martinez@oracle.com> 3163 3164 ctf-reader: CTF debug info for some symbols is not found 3165 * src/abg-ctf-reader.cc (read_context::is_elf_exec): Remove 3166 data member. 3167 (ctf_reader::process_ctf_qualified_type): Add condition to avoid 3168 use qualifier in functions. 3169 (ctf_reader::process_ctf_archive): Use `ctf_lookup_by_symbol_name' 3170 to find debug information when `ctf_lookup_variable' was not 3171 lucky iff `corpus::CTF_ORIGIN'. 3172 (ctf_reader::slurp_elf_info): Use `elf_helpers::find_section_by_name' 3173 to read .dynsym and .dynstr when {EXEC,DYN}. 3174 * src/abg-elf-helpers.h (elf_helpers::find_section_by_name): Add new 3175 declaration. 3176 * src/abg-elf-helpers.cc (elf_helpers::find_section_by_name): Add new 3177 definition. 3178 31792022-05-06 Guillermo E. Martinez <guillermo.e.martinez@oracle.com> 3180 3181 ctf-reader: shows incomplete summary changes 3182 * src/abg-ctf-reader.cc (read_context::exported_decls_builder_): 3183 Add new data member. 3184 (read_context::exported_decls_builder): Add new get/set member functions. 3185 (read_context::maybe_add_{fn,var}_to_exported_decls): Likewise. 3186 (read_context::initialize): Initialize exported_decls_builder_ member. 3187 (read_context::build_ir_node_for_variadic_parameter_type): Add new function. 3188 (read_context::process_ctf_function_type): Add additional code to handle 3189 function's variadic parameter. 3190 (read_context::process_ctf_archive): Rename variable for clarity 3191 from `ctf_var_type' to `ctf_sym_type', using new member functions 3192 `maybe_add_{fn,var}_to_exported_decls'. 3193 (read_context::read_corpus): Set `exported_decls_builder'. 3194 * tests/test-read-common.cc (test_task::run_abidw): Fix error message. 3195 * tests/data/test-read-ctf/test-PR26568-1.o.abi: Adjust test case. 3196 * tests/data/test-read-ctf/test-PR26568-2.o.abi: Likewise. 3197 * tests/data/test-read-ctf/test-anonymous-fields.o.abi Likewise. 3198 * tests/data/test-read-ctf/test5.o.abi: Likewise. 3199 * tests/data/test-read-ctf/test7.o.abi: Likewise. 3200 32012022-05-06 Frederic Cambus <fred@statdns.com> 3202 3203 Fix numbering error in the abidiff manual. 3204 * doc/manuals/abidiff.rst: Fix numbering error for the 3205 --headers-dir2 option. 3206 32072022-05-04 Guillermo E. Martinez <guillermo.e.martinez@oracle.com> 3208 3209 ctf-reader: Add support to read CTF information from the Linux Kernel 3210 * abg-elf-reader-common.h: Include ctf-api.h file. 3211 (read_and_add_corpus_to_group_from_elf, set_read_context_corpus_group) 3212 (reset_read_context, dic_type_key): Declare new member functions. 3213 * include/abg-ir.cc (types_defined_same_linux_kernel_corpus_public): Use 3214 bitwise to know the corpus `origin'. 3215 * src/abg-ctf-reader.cc: Include map, algorithms header files. 3216 (read_context::type_map): Change from unordered_map to std::map storing 3217 ctf dictionary name as part of the key. 3218 (read_context::is_elf_exec): Add new member variable. 3219 (read_context::{cur_corpus_, cur_corpus_group_}): Likewise. 3220 (read_context::unknown_types_set): Likewise. 3221 (read_context::{current_corpus_group, main_corpus_from_current_group, 3222 has_corpus_group, current_corpus_is_main_corpus_from_current_group, 3223 should_reuse_type_from_corpus_group}): Add new member functions. 3224 (read_context::{add_unknown_type, lookup_unknown_type, initialize}): 3225 Likewise. 3226 (read_context::{add_type, lookup_type}): Add new `ctf_dict_t' type 3227 argument. 3228 (ctf_reader::{process_ctf_typedef, process_ctf_base_type, 3229 process_ctf_function_type, process_ctf_forward_type, 3230 process_ctf_struct_type, process_ctf_union_type, process_ctf_array_type, 3231 process_ctf_qualified_type, process_ctf_enum_type}): Add code to `reuse' 3232 types already registered in main corpus `should_reuse_type_from_corpus_group'. 3233 Use new `lookup_type' and `add_type' operations on `read_context::types_map'. 3234 Replace function calls to the new ctf interface. Add verifier to not build 3235 types duplicated by recursive calling chain. 3236 (ctf_reader::process_ctf_type): Add code to return immediately if the 3237 ctf type is unknown. Add unknown types to `unknown_types_set'. 3238 (ctf_reader::process_ctf_archive): Change comment. 3239 Add code to iterate over global symbols, searching by symbol name in the 3240 ctf dictionary using `ctf_lookup_{variable,by_symbol_name}' depending of 3241 the ELF file type and corpus type, creating a `{var,fuc}_decl' using the 3242 return type of `ctf_type_kind'. Also close the ctf dict and call 3243 `canonicalize_all_types'. 3244 (slurp_elf_info): Set `is_elf_exec' depending of ELF type. Also return 3245 success if corpus origin is Linux and symbol table was read. 3246 (ctf_reader::read_corpus): Add current corpus. Set corpus origin to 3247 `LINUX_KERNEL_BINARY_ORIGIN' if `is_linux_kernel' returns true. Verify 3248 the ctf reader status, now the ctf archive is 'opened' using 3249 `ctf_arc{open,bufopen}' depending if the corpus origin has 3250 `corpus::LINUX_KERNEL_BINARY_ORIGIN' bit set. Use 3251 `sort_{function,variables}' calls after extract ctf information. 3252 `ctf_close' is called from `read_context' destructor. 3253 (read:context::{set_read_context_corpus_group, reset_read_context, 3254 read_and_add_corpus_to_group_from_elf, dic_type_key): Add new member 3255 function implementation. 3256 * include/abg-tools-utils.h (build_corpus_group_from_kernel_dist_under): 3257 Add `origin' parameter with default `corpus::DWARF_ORIGIN'. 3258 * src/abg-tools-utils.cc: Use `abg-ctf-reader.h' file. 3259 (maybe_load_vmlinux_dwarf_corpus): Add new function. 3260 (maybe_load_vmlinux_ctf_corpus): Likewise. 3261 (build_corpus_group_from_kernel_dist_under): Update comments. 3262 Add new `origin' argument. Use `maybe_load_vmlinux_dwarf_corpus' 3263 or `maybe_load_vmlinux_ctf_corpus' according to `origin' value. 3264 * src/abg-corpus.h (corpus::origin): Update `origin' type 3265 values in enum. 3266 * src/abg-corpus-priv.h (corpus::priv): Replace `origin' type 3267 from `corpus::origin' to `uint32_t'. 3268 * src/abg-corpus.cc (corpus::{get,set}_origin): Replace data 3269 type from `corpus::origin' to `uint32_t'. 3270 * tools/abidw.cc (main): Use of --ctf argument to set format debug. 3271 * tests/test-read-ctf.cc: Add new tests to harness. 3272 * tests/data/test-read-ctf/test-PR27700.abi: New test expected 3273 result. 3274 * tests/data/test-read-ctf/test-anonymous-fields.o.abi: Likewise. 3275 * tests/data/test-read-ctf/test-enum-many-ctf.o.hash.abi: Likewise. 3276 * tests/data/test-read-ctf/test-enum-many.o.hash.abi: Likewise. 3277 * tests/data/test-read-ctf/test-enum-symbol-ctf.o.hash.abi: Likewise. 3278 * tests/data/test-read-common/test-PR26568-2.o: Adjust. 3279 * tests/data/test-read-ctf/test-PR26568-1.o.abi: Likewise. 3280 * tests/data/test-read-ctf/test-PR26568-2.o.abi: Likewise. 3281 * tests/data/test-read-ctf/test-ambiguous-struct-A.o.hash.abi: Likewise. 3282 * tests/data/test-read-ctf/test-ambiguous-struct-B.c: Likewise. 3283 * tests/data/test-read-ctf/test-ambiguous-struct-B.o: Likewise. 3284 * tests/data/test-read-ctf/test-ambiguous-struct-B.o.hash.abi: Likewise. 3285 * tests/data/test-read-ctf/test-array-of-pointers.abi: Likewise. 3286 * tests/data/test-read-ctf/test-callback.abi: Likewise. 3287 * tests/data/test-read-ctf/test-callback2.abi: Likewise. 3288 * tests/data/test-read-ctf/test-conflicting-type-syms-a.o.hash.abi: 3289 Likewise. 3290 * tests/data/test-read-ctf/test-conflicting-type-syms-b.o.hash.abi: 3291 Likewise. 3292 * tests/data/test-read-ctf/test-dynamic-array.o.abi: Likewise. 3293 * tests/data/test-read-ctf/test-enum-ctf.o.abi: Likewise. 3294 * tests/data/test-read-ctf/test-enum-symbol.o.hash.abi: Likewise. 3295 * tests/data/test-read-ctf/test-enum.o.abi: Likewise. 3296 * tests/data/test-read-ctf/test-forward-type-decl.abi: Likewise. 3297 * tests/data/test-read-ctf/test-functions-declaration.abi: Likewise. 3298 * tests/data/test-read-ctf/test-list-struct.abi: Likewise. 3299 * tests/data/test-read-ctf/test0: Likewise. 3300 * tests/data/test-read-ctf/test0.abi: Likewise. 3301 * tests/data/test-read-ctf/test0.c: Likewise. 3302 * tests/data/test-read-ctf/test0.hash.abi: Likewise. 3303 * tests/data/test-read-ctf/test1.so.abi: Likewise. 3304 * tests/data/test-read-ctf/test1.so.hash.abi: Likewise. 3305 * tests/data/test-read-ctf/test2.so.abi: Likewise. 3306 * tests/data/test-read-ctf/test2.so.hash.abi: Likewise. 3307 * tests/data/test-read-ctf/test3.so.abi: Likewise. 3308 * tests/data/test-read-ctf/test3.so.hash.abi: Likewise. 3309 * tests/data/test-read-ctf/test4.so.abi: Likewise. 3310 * tests/data/test-read-ctf/test4.so.hash.abi: Likewise. 3311 * tests/data/test-read-ctf/test5.o.abi: Likewise. 3312 * tests/data/test-read-ctf/test7.o.abi: Likewise. 3313 * tests/data/test-read-ctf/test8.o.abi: Likewise. 3314 * tests/data/test-read-ctf/test9.o.abi: Likewise. 3315 33162022-05-04 vsoch <vsoch@users.noreply.github.com> 3317 3318 Add Logic to detect file type by extension 3319 * tools/fedabipkgdiff - add logic to detect file type by extension 3320 Reviewed-by: Ben Woodard <woodard@redhat.com> 3321 33222022-05-04 Ben Woodard <woodard@redhat.com> 3323 3324 Add an option ignore SONAME differences in libraries 3325 * doc/manuals/abicompat.rst - added new option 3326 * doc/manuals/abidiff.rst - added new option to manpage 3327 * src/abg-comparison.cc (compute_diff): don't bother comparing the 3328 sonames if you aren't going to print them. 3329 * tools/abicompat.cc (options::ignore_soname): Add new data 3330 member. 3331 (parse_command_line): Support the new --ignore-soname command line 3332 option. 3333 (display_usage): Add a description string for the new 3334 --ignore-soname command line option. 3335 (create_diff_context): Set the diff_context::show_soname_change 3336 from the new options::ignore_soname data member. 3337 * tools/abidiff.cc (options::ignore_soname): Add new data member. 3338 (display_usage): Add a description string for the new 3339 --ignore-soname command line option. 3340 (parse_command_line): Support the new --ignore-soname command line 3341 option. 3342 (set_diff_context_from_opts): Set the 3343 diff_context::show_soname_change from the new 3344 options::ignore_soname. 3345 33462022-04-07 Giuliano Procida <gprocida@google.com> 3347 3348 symtab: fix up 64-bit ARM address which may contain tags 3349 * src/abg-elf-helpers.cc: (architecture_is_arm64): Add helper. 3350 * src/abg-elf-helpers.h: Likewise. 3351 * src/abg-symtab-reader.cc: (get_symbol_value): Adjust 64-bit 3352 ARM symbol values by extending bit 55 into bits 56 to 63. 3353 33542022-04-07 Giuliano Procida <gprocida@google.com> 3355 3356 symtab: refactor ELF symbol value tweaks 3357 * src/abg-symtab-reader.cc (symtab::load_): Replace address 3358 tweaking logic with a call to get_symbol_value. 3359 (symtab::add_alternative_address_lookups): Likewise. 3360 (symtab::get_symbol_value): New function containing address 3361 tweaking logic for PPC and ARM. 3362 33632022-04-29 Guillermo E. Martinez <guillermo.e.martinez@oracle.com> 3364 3365 ctf-reader: Fix multiple var-decl in anonymous struct/uninons 3366 * src/abg-ctf-reader.cc (process_ctf_sou_members): Remove 3367 CTF_MN_RECURSE flag. 3368 * tests/data/Makefile.am: Add new input test files. 3369 * tests/data/test-read-ctf/test-anonymous-fields.c: New 3370 test file. 3371 * tests/data/test-read-ctf/test-anonymous-fields.o: New 3372 expected test output. 3373 * tests/data/test-read-ctf/test-anonymous-fields.o.abi: 3374 Likewise. 3375 * tests/test-read-ctf.cc: Add new test. 3376 33772022-04-25 Guillermo E. Martinez via Libabigail <libabigail@sourceware.org> 3378 3379 tools-utils: `entry_of_file_with_name' returns incorrect result 3380 * src/abg-tools-utils.cc (entry_of_file_with_name): Replace 3381 call `string_ends_with' by `basename'. 3382 33832022-04-19 Ben Woodard <woodard@redhat.com> 3384 3385 Fix typo in abipkgdiff manpage 3386 * doc/manuals/abipkgdiff.rst: add missing `--` 3387 33882022-03-17 Guillermo E. Martinez via Libabigail <libabigail@sourceware.org> 3389 3390 ctf-reader: Add support to undefined forward declaration types 3391 * src/abg-ctf-reader.cc (process_ctf_forward_type): New 3392 function. 3393 (process_ctf_type): New CTF_K_FORWARD case. 3394 * tests/data/test-read-ctf/test-forward-undefine-type-decl.c: 3395 New testcase. 3396 * tests/data/test-read-ctf/test-forward-undefine-type-decl.abi: 3397 New expected result. 3398 * tests/data/test-read-ctf/test-forward-undefine-type-decl.o 3399 New test input. 3400 * tests/test-read-ctf.cc: Add new testcase to test harness. 3401 * tests/data/Makefile.am: Add new test input files to test harness. 3402 34032022-03-07 Dodji Seketeli <dodji@redhat.com> 3404 3405 comparison: Avoid sorting diff nodes with wrong criteria 3406 * src/abg-comparison.cc (diff::append_child_node): Do not sort 3407 children nodes here because they must have been sorted already. 3408 * tests/data/test-diff-filter/test30-pr18904-rvalueref-report0.txt: Adjust. 3409 * tests/data/test-diff-filter/test30-pr18904-rvalueref-report1.txt: Likewise. 3410 * tests/data/test-diff-filter/test30-pr18904-rvalueref-report2.txt: Likewise. 3411 * tests/data/test-diff-filter/test35-pr18754-no-added-syms-report-0.txt: Likewise. 3412 * tests/data/test-diff-filter/test41-report-0.txt: Likewise. 3413 * tests/data/test-diff-pkg/libICE-1.0.6-1.el6.x86_64.rpm--libICE-1.0.9-2.el7.x86_64.rpm-report-0.txt: 3414 Likewise. 3415 34162022-03-07 Dodji Seketeli <dodji@redhat.com> 3417 3418 comparison: Factorize the code that inserts diff nodes to the graph 3419 * include/abg-comparison.h ({distinct, var, pointer, reference, 3420 array, qualified_type, enum, class_or_union, class, union, base, 3421 scope, fn_parm, function_type, function_decl, type_decl, 3422 typedef}_diff::finish_diff_type): Remove these declarations. 3423 * src/abg-comparison.cc ({distinct, var, pointer, reference, 3424 array, qualified_type, enum, class_or_union, class, union, base, 3425 scope, fn_parm, function_type, function_decl, type_decl, 3426 typedef}_diff::finish_diff_type): Remove these definitions. 3427 (diff::finish_diff_type): Add the code to connect the children 3428 nodes to the current node, making the generic view of the diff 3429 node usable to walk the graph. 3430 34312022-03-07 Dodji Seketeli <dodji@redhat.com> 3432 3433 comparison: Describe the "generic view" of a diff node 3434 * include/abg-comparison.h (class diff): Add comments to this class. 3435 (diff::chain_into_hierarchy): Add comment to this method. 3436 * src/abg-comparison-priv.h (diff::priv): Add comment to this class. 3437 * src/abg-comparison.cc (diff::finish_diff_type): Add comment to 3438 this method. 3439 (diff::traverse): Add comment. 3440 34412022-03-03 Dodji Seketeli <dodji@redhat.com> 3442 3443 Bug 28013 - Acknowledge variadic parameter type is not canonicalized 3444 * src/abg-ir.cc (is_non_canonicalized_type): Recognize variadic 3445 parameter types. 3446 * tests/data/test-diff-filter/test-PR28013-fn-variadic.c.{0,1}.abi: New test inputs. 3447 * tests/data/test-diff-filter/test-PR28013-fn-variadic.c.report.txt: Likewise. 3448 * tests/data/Makefile.am: Add the new test files to source distribution. 3449 * tests/test-diff-filter.cc (in_out_specs): Add the new tests to 3450 this harness. 3451 * tests/data/test-annotate/libtest23.so.abi: Likewise. 3452 * tests/data/test-annotate/libtest24-drop-fns-2.so.abi: Likewise. 3453 * tests/data/test-annotate/libtest24-drop-fns.so.abi: Likewise. 3454 * tests/data/test-annotate/test0.abi: Likewise. 3455 * tests/data/test-annotate/test13-pr18894.so.abi: Likewise. 3456 * tests/data/test-annotate/test15-pr18892.so.abi: Likewise. 3457 * tests/data/test-annotate/test17-pr19027.so.abi: Likewise. 3458 * tests/data/test-annotate/test18-pr19037-libvtkRenderingLIC-6.1.so.abi: Likewise. 3459 * tests/data/test-annotate/test19-pr19023-libtcmalloc_and_profiler.so.abi: Likewise. 3460 * tests/data/test-annotate/test20-pr19025-libvtkParallelCore-6.1.so.abi: Likewise. 3461 * tests/data/test-annotate/test21-pr19092.so.abi: Likewise. 3462 * tests/data/test-diff-filter/test-PR28013-fn-variadic.c.0.abi: Likewise. 3463 * tests/data/test-diff-filter/test-PR28013-fn-variadic.c.1.abi: Likewise. 3464 * tests/data/test-diff-filter/test-PR28013-fn-variadic.c.report.txt: Likewise. 3465 * tests/data/test-read-dwarf/PR22015-libboost_iostreams.so.abi: Likewise. 3466 * tests/data/test-read-dwarf/PR22122-libftdc.so.abi: Likewise. 3467 * tests/data/test-read-dwarf/PR25042-libgdbm-clang-dwarf5.so.6.0.0.abi: Likewise. 3468 * tests/data/test-read-dwarf/libtest23.so.abi: Likewise. 3469 * tests/data/test-read-dwarf/libtest24-drop-fns-2.so.abi: Likewise. 3470 * tests/data/test-read-dwarf/libtest24-drop-fns.so.abi: Likewise. 3471 * tests/data/test-read-dwarf/test-libaaudio.so.abi: Likewise. 3472 * tests/data/test-read-dwarf/test-libandroid.so.abi: Likewise. 3473 * tests/data/test-read-dwarf/test0.abi: Likewise. 3474 * tests/data/test-read-dwarf/test0.hash.abi: Likewise. 3475 * tests/data/test-read-dwarf/test10-pr18818-gcc.so.abi: Likewise. 3476 * tests/data/test-read-dwarf/test11-pr18828.so.abi: Likewise. 3477 * tests/data/test-read-dwarf/test12-pr18844.so.abi: Likewise. 3478 * tests/data/test-read-dwarf/test13-pr18894.so.abi: Likewise. 3479 * tests/data/test-read-dwarf/test15-pr18892.so.abi: Likewise. 3480 * tests/data/test-read-dwarf/test16-pr18904.so.abi: Likewise. 3481 * tests/data/test-read-dwarf/test17-pr19027.so.abi: Likewise. 3482 * tests/data/test-read-dwarf/test18-pr19037-libvtkRenderingLIC-6.1.so.abi: Likewise. 3483 * tests/data/test-read-dwarf/test19-pr19023-libtcmalloc_and_profiler.so.abi: Likewise. 3484 * tests/data/test-read-dwarf/test20-pr19025-libvtkParallelCore-6.1.so.abi: Likewise. 3485 * tests/data/test-read-dwarf/test21-pr19092.so.abi: Likewise. 3486 * tests/data/test-read-dwarf/test22-pr19097-libstdc++.so.6.0.17.so.abi: Likewise. 3487 * tests/data/test-read-dwarf/test9-pr18818-clang.so.abi: Likewise. 3488 34892022-02-24 Dodji Seketeli <dodji@redhat.com> 3490 3491 dwarf-reader: Don't propagate canonical type upon aggregate redundancy 3492 * src/abg-dwarf-reader.cc (compare_dies): Do not propagate 3493 canonical type when aggregate redundancy is detected. 3494 34952022-02-10 Dodji Seketeli <dodji@redhat.com> 3496 3497 Bug 26646 - unexpected declaration-only types (part 2) 3498 * src/abg-dwarf-reader.cc (struct dwarf_offset_pair_hash) 3499 (dwarf_offset_pair_set_type): Define new type. 3500 (die_offset, has_offset_pair, insert_offset_pair) 3501 (erase_offset_pair): Define new static helper functions. 3502 (compare_dies): Use a set of DWARF offsets for the 3503 'aggregates_being_compared' data structure, rather than a set of 3504 string representation of the DIEs. Always look at the size of the 3505 types being compared first so that we can get out quickly if they 3506 differ. For DIEs of DW_TAG_{union,struct}_type kind, don't limit 3507 the depth of the stack of DIEs being compared to 5; so we don't 3508 consider two types as being equal just because the depth of the 3509 stack being compared is 5 and the two types have the same size and 3510 are equal. Hopefully things don't take too long. 3511 35122022-03-01 Dodji Seketeli <dodji@redhat.com> 3513 3514 ir: Remove obsolete comment from enumerator equal operator 3515 * src/abg-ir.cc (enum_type_decl::enumerator::operator==): Remove 3516 the obsolete parts from the comment. 3517 35182022-03-01 Dodji Seketeli <dodji@redhat.com> 3519 3520 reader: Fix a compilation warning 3521 * src/abg-reader.cc (build_var_decl): Add braces to an 'if' 3522 statement. 3523 35242022-02-28 Dodji Seketeli <dodji@redhat.com> 3525 3526 abilint --show-type-use: Show results for global decls that have no symbols 3527 * include/abg-fwd.h (is_at_global_scope): Declare ... 3528 * src/abg-ir.cc (is_at_global_scope): ... new overload. 3529 * tools/abilint.cc (emit_artifact_use_trace): Emit the trace also 3530 when the decl is at global scope or has a linkage name. 3531 35322022-02-17 Dodji Seketeli <dodji@redhat.com> 3533 3534 abilint: add the --show-type-use option 3535 * configure.ac: Define the --enable-show-type-use-in-abilint 3536 configure option. It defines the WITH_SHOW_TYPE_USE_IN_ABILINT 3537 macro. 3538 * include/abg-reader.h (read_translation_unit): Add an overload 3539 that takes the read context. 3540 (get_types_from_type_id, get_artifact_used_by_relation_map): 3541 Declare new functions. 3542 * src/abg-reader.cc (get_types_from_type_id) 3543 (get_artifact_used_by_relation_map): Declare these functions as 3544 friend of the read_context type. 3545 (read_context::m_artifact_used_by_map): 3546 (read_context::key_type_decl): Replace the shared_ptr<type_base> 3547 type of the first parm by the equivalent type_base_sptr type. 3548 (read_context::{record_artifact_as_used_by, 3549 record_artifacts_as_used_in_fn_decl, 3550 record_artifacts_as_used_in_fn_type}): Add new methods guarded by 3551 the WITH_SHOW_TYPE_USE_IN_ABILINT macro. 3552 (get_types_from_type_id, get_artifact_used_by_relation_map): Define 3553 new functions guarded by the WITH_SHOW_TYPE_USE_IN_ABILINT macro. 3554 (read_translation_unit): Define new overload. 3555 (RECORD_ARTIFACT_AS_USED_BY, RECORD_ARTIFACTS_AS_USED_IN_FN_DECL) 3556 (RECORD_ARTIFACTS_AS_USED_IN_FN_TYPE): Define new macros. 3557 (build_function_decl, build_var_decl, build_qualified_type_decl) 3558 (build_pointer_type_def, build_reference_type_def) 3559 (build_function_type, build_array_type_def, build_enum_type_decl) 3560 (build_typedef_decl, build_class_decl, build_union_decl): Use the 3561 macros above to mark the relevant sub-types as used by the 3562 artifact being built. 3563 * tools/abilint.cc (struct artifact_use_relation_tree): Define new 3564 type, guarded by the WITH_SHOW_TYPE_USE_IN_ABILINT macro. 3565 (fill_artifact_use_tree, build_type_use_tree, emit_trace) 3566 (emit_artifact_use_trace, emit_artifact_use_trace) 3567 (show_how_type_is_used): Define static functions guarded by the 3568 WITH_SHOW_TYPE_USE_IN_ABILINT macro. 3569 (display_usage): Add doc string for the --show-type-use option, 3570 guarded by the WITH_SHOW_TYPE_USE_IN_ABILINT macro. 3571 (parse_command_line): Parse the --show-type-use option, guarded by 3572 the WITH_SHOW_TYPE_USE_IN_ABILINT macro. 3573 (main): Slight re-organisation to make the abixml file reading use 3574 a read_context. That read context is then used to analyze how a 3575 given type is used whenever the --show-type-use option is used. 3576 35772022-02-17 Dodji Seketeli <dodji@redhat.com> 3578 3579 configure: Remove use of obsolete AC_CONFIG_HEADER 3580 * configure.ac: Replace the use of the obsolete AC_CONFIG_HEADER 3581 by AC_CONFIG_HEADERS. 3582 35832022-02-08 Randy MacLeod <Randy.MacLeod@windriver.com> 3584 3585 Improve some grammar 3586 * COMPILING: Improve grammar 3587 * CONTRIBUTING: Improve grammar 3588 * README: Improve grammar 3589 * VISIBILITY: Improve grammar 3590 35912022-01-21 Giuliano Procida <gprocida@google.com> 3592 3593 XML writer: do not create extra temporary referenced type shared_ptr 3594 * src/abg-writer.cc (write_referenced_types): Create temporary 3595 shared_ptr objects within each conditional branch instead of 3596 outside the conditionals and within one of the branches. 3597 Reviewed-by: Matthias Maennich <maennich@google.com> 3598 35992022-01-21 Giuliano Procida <gprocida@google.com> 3600 3601 XML writer: improve slightly emission of top-level declarations 3602 * src/abg-writer.cc (decl_is_emitted): Make decl_base_sptr 3603 argument a const reference. 3604 (write_translation_unit): Eliminate a typedef and just use a 3605 range-for loop without the extra dynamic cast for the non-type 3606 case. Use else instead of continue to make it clear there are 3607 only two possibilities. 3608 Reviewed-by: Matthias Maennich <maennich@google.com> 3609 36102022-01-21 Giuliano Procida <gprocida@google.com> 3611 3612 XML writer: drop write_elf_symbols_table variable emitted_syms 3613 * src/abg-writer.cc (write_elf_symbols_table): Drop unused 3614 local variable emitted_syms. 3615 Reviewed-by: Matthias Maennich <maennich@google.com> 3616 36172022-01-21 Giuliano Procida <gprocida@google.com> 3618 3619 XML writer: remove type_hasher and remaining comment 3620 * src/abg-writer.cc (type_hasher): Remove this unused functor. 3621 Remove a following comment referencing it. 3622 Reviewed-by: Matthias Maennich <maennich@google.com> 3623 36242022-02-07 Dodji Seketeli <dodji@redhat.com> 3625 3626 Bug 26646 - unexpected declaration-only types 3627 * src/abg-dwarf-reader.cc (add_or_update_class_type): Do not reuse 3628 the IR for a DIE with the same textual representation as the one 3629 we are seeing now. 3630 * tests/data/test-annotate/test21-pr19092.so.abi: Adjust. 3631 * tests/data/test-read-dwarf/test21-pr19092.so.abi: Likewise. 3632 36332022-02-07 Dodji Seketeli <dodji@redhat.com> 3634 3635 symtab-reader: Remove an over-agressive assertion 3636 * src/abg-symtab-reader.cc 3637 (symtab::add_alternative_address_lookups): Remove over-aggressive 3638 assert. 3639 Reviewed-by: Giuliano Procida <gprocida@google.com> 3640 36412022-01-29 David Seifert <soap@gentoo.org> 3642 3643 Find fts-standalone on musl 3644 * configure.ac: Invoke AC_CANONICAL_HOST to compute the host_cpu, 3645 host_vendor, host_os parts of the 'host" variable. Then if the 3646 host_os ends up with "musl" then, check for the fts-standalone 3647 pkgconfig module and record the fts library into 3648 FTS_{LIBS,CFLAGS}. 3649 * src/Makefile.am: Link to $FTS_LIBS and use $FTS_CFLAGS for 3650 compilation. 3651 * tools/Makefile.am: Likewise. 3652 * tools/abisym.cc: Include libgen.h 3653 * tools/kmidiff.cc: Remove useless fts.h header file. 3654 36552022-02-07 Dodji Seketeli <dodji@redhat.com> 3656 3657 symtab-reader: Fix typo in comment 3658 * src/abg-symtab-reader.cc 3659 (symtab::update_function_entry_address_symbol_map): Fix typo in 3660 comment. 3661 36622022-01-20 Dodji Seketeli <dodji@redhat.com> 3663 3664 writer: small compilation error fix 3665 * abg-writer.cc (write_type_record): Fix const-ness in argument 3666 passing. 3667 36682021-11-26 Matthias Maennich <maennich@google.com> 3669 3670 abidiff: improve whitespace generation in symbol diff report 3671 * src/abg-reporter-priv.cc (maybe_report_diff_for_symbol): 3672 Make return void. Simplify and fix new-line emission. Remove 3673 comma emission. Tweak CRC wording. 3674 * src/abg-reporter-priv.h (maybe_report_diff_for_symbol): 3675 Return void. 3676 * tests/data/test-abidiff-exit/test-crc-report.txt: Shorten CRC 3677 wording. 3678 * tests/data/test-abidiff/test-crc-report.txt: Likewise. 3679 * tests/data/test-diff-filter/test-PR27569-report-0.txt: 3680 Likewise. 3681 Reviewed-by: Giuliano Procida <gprocida@google.com> 3682 36832022-01-19 George Rawlinson <grawlinson@archlinux.org> 3684 3685 Bug 28663 - generate man page for kmidiff 3686 * doc/manuals/conf.py: Update copyright year. Generate man page 3687 for the kmidiff tool. 3688 36892021-12-03 Matthias Maennich <maennich@google.com> 3690 3691 XML writer: resolve declaration-only enum definitions 3692 * src/abg-writer.cc (write_enum_type_decl): Look through 3693 declaration-only types the same as for structs and unions. 3694 Reviewed-by: Giuliano Procida <gprocida@google.com> 3695 36962021-12-03 Matthias Maennich <maennich@google.com> 3697 3698 XML writer: map type ids by bare pointer 3699 * src/abg-writer.cc (type_ptr_map): use default equality on 3700 type_base pointer. 3701 * tests/data/test-read-dwarf/PR22122-libftdc.so.abi: Refresh 3702 test case, as described above. 3703 * tests/data/test-read-dwarf/PR25007-sdhci.ko.abi: Likewise. 3704 Reviewed-by: Giuliano Procida <gprocida@google.com> 3705 37062021-12-03 Matthias Maennich <maennich@google.com> 3707 3708 XML writer: track emitted types by bare pointer 3709 * src/abg-writer.cc (type_ptr_set_type): Change typedef 3710 container type to use default equality and hashing for pointer 3711 keys. 3712 (fn_type_ptr_set_type): Likewise. 3713 Reviewed-by: Giuliano Procida <gprocida@google.com> 3714 37152022-01-18 Giuliano Procida <gprocida@google.com> 3716 3717 abidiff: include ABI XML versions when reporting a mismatch cont. 3718 * tools/abidiff.cc 3719 (emit_incompatible_format_version_error_message): Fix 3720 parameter documentation. 3721 Fixes: b251bc611eb6 ("abidiff: include ABI XML versions when reporting a mismatch") 3722 37232022-01-18 Giuliano Procida <gprocida@google.com> 3724 3725 abidiff: include ABI XML versions when reporting a mismatch 3726 * tools/abidiff.cc 3727 (emit_incompatible_format_version_error_message): Add version1 3728 and version2 arguments. Add versions to error message. 3729 (main): Pass emit_incompatible_format_version_error_message 3730 mismatching versions. 3731 37322022-01-18 Mark Wielaard <mark@klomp.org> 3733 3734 DWARF reader: use size_t for DWARF expression length cont. 3735 * src/abg-dwarf-reader.cc (eval_last_constant_dwarf_sub_expr): 3736 Change expr_len argument type to size_t. 3737 (op_pushes_constant_value): Update ops_len and index argument 3738 types to size_t. Update next_index argument type to size_t&. 3739 (op_pushes_non_constant_value): Likewise. 3740 (op_is_arith_logic): Update expr_len and index argument types 3741 to size_t. Update next_index argument type to size_t&. 3742 (op_is_control_flow): Likewise. 3743 Fixes: 16207c4af7bc ("Bug 28191 - Interpret DWARF 5 addrx locations") 3744 37452022-01-17 Giuliano Procida <gprocida@google.com> 3746 3747 DWARF reader: use size_t for DWARF expression length 3748 * src/abg-dwarf-reader.cc (die_location_expr): Change expr_len 3749 argument type to size_t*. 3750 (op_manipulates_stack): Change expr_len and index argument 3751 types to size_t; change next_index argument type to size_t&. 3752 (eval_last_constant_dwarf_sub_expr): Change expr_len argument 3753 and local variables index and next_index types to size_t. 3754 (die_member_offset): Change local variable expr_len type to 3755 size_t. 3756 (die_location_address): Likewise. 3757 (die_virtual_function_index): Likewise. 3758 Fixes: 16207c4af7bc ("Bug 28191 - Interpret DWARF 5 addrx locations") 3759 37602022-01-11 Giuliano Procida <gprocida@google.com> 3761 3762 symtab reader: fix up alternative addresses 3763 * src/abg-symtab-reader.cc 3764 (symtab::add_alternative_address_lookups): Tweak function 3765 addresses in the same manner as done in symtab::load_. 3766 37672022-01-14 David Cantrell <dcantrell@redhat.com> 3768 3769 Include <libgen.h> in tools/abisym.cc for basename(3) 3770 * tools/abisym.cc: 3771 37722022-01-13 Giuliano Procida <gprocida@google.com> 3773 3774 Bug 28191 - Interpret DWARF 5 addrx locations 3775 * src/abg-dwarf-reader.cc (die_location_address): Use 3776 dwarf_attr_integrate, dwarf_getlocation and 3777 dwarf_getlocation_attr to decode addreses, instead of 3778 die_location_expr and eval_last_constant_dwarf_sub_expr. 3779 * tests/data/test-read-dwarf/PR25042-libgdbm-clang-dwarf5.so.6.0.0.abi: 3780 Refresh test reference output; two more symbols have types. 3781 37822022-01-14 Dodji Seketeli <dodji@redhat.com> 3783 3784 Bug 28319 - re-fix of rhbz1951526 - SELF CHECK FAILED for 'gimp-2.10' 3785 * include/abg-ir.h (environment::use_enum_binary_only_equality): 3786 Remove. 3787 * src/abg-comparison.cc (compute_diff): In the overload for 3788 enum_type_decl, stop using binary-only-equality for enums. 3789 * src/abg-dwarf-reader.cc 3790 (read_context::compare_before_canonicalisation): Likewise. 3791 * src/abg-ir.cc (environment::use_enum_binary_only_equality): 3792 Remove. 3793 (enumerators_values_are_equal) 3794 (is_enumerator_value_present_in_enum) 3795 (is_enumerator_value_redundant): Define new static functions. 3796 (equals): In the overload for enum_type_decl, use the new 3797 is_enumerator_value_redundant to detect if two enums are equal 3798 modulo a redundant enumerator value. In that case, consider they 3799 are equal. 3800 * tests/data/test-abidiff/test-enum0-report.txt: Adjust. 3801 * tests/data/test-annotate/test-anonymous-members-0.o.abi: Likewise. 3802 * tests/data/test-annotate/test18-pr19037-libvtkRenderingLIC-6.1.so.abi: Likewise. 3803 * tests/data/test-annotate/test19-pr19023-libtcmalloc_and_profiler.so.abi: Likewise. 3804 * tests/data/test-diff-dwarf/PR25058-liblttng-ctl-report-1.txt: Likewise. 3805 * tests/data/test-read-dwarf/test18-pr19037-libvtkRenderingLIC-6.1.so.abi: Likewise. 3806 * tests/data/test-read-dwarf/test19-pr19023-libtcmalloc_and_profiler.so.abi: Likewise. 3807 * tests/data/test-read-dwarf/test22-pr19097-libstdc++.so.6.0.17.so.abi: Likewise. 3808 38092022-01-05 Thomas Schwinge <thomas@codesourcery.com> 3810 3811 Handle several variants of Python 'imp', 'importlib' modules 3812 * tests/mockfedabipkgdiff.in: Handle several variants of Python 3813 'imp', 'importlib' modules. 3814 Tested-by: Mark Wielaard <mark@klomp.org> (CentOS 7) 3815 38162021-12-21 Dodji Seketeli <dodji@redhat.com> 3817 3818 suppression: Fix compilation warning on el7 3819 * src/abg-suppression.cc (type_suppression::suppresses_diff): 3820 Remove the unused variable second_type_decl. 3821 38222021-12-21 Guillermo E. Martinez via Libabigail <libabigail@sourceware.org> 3823 3824 ctf-reader: Assert on ir::hash_as_canonical_type_or_constant 3825 * src/abg-ctf-reader.cc (process_ctf_base_type): Add new 3826 `translation_unit_sptr' parameter. Add condition to validate 3827 success 'base_type' construction and register type object. 3828 (process_ctf_typedef): Add `lookup_type' to get a `type_base' 3829 object when this was previously created, if this is not the 3830 case, register ctf type. Add condition to validate success 3831 'base_type' construction and register type object. 3832 (process_ctf_function_type): Likewise. 3833 (process_ctf_array_type): Likewise. 3834 (process_ctf_qualified_type): Likewise. 3835 (process_ctf_pointer_type): Likewise. 3836 (process_ctf_struct_type): Add `add_decl_to_scope'. 3837 (process_ctf_union_type): Likewise. 3838 (process_ctf_type): Add `lookup_type' to get a `type_base' 3839 object when this was previously created. Delegate register 3840 type object to `process_ctf_*'. 3841 * tests/data/Makefile.am: Add tests I/O and expected files. 3842 * tests/data/test-read-ctf/test-array-of-pointers.[co]: New 3843 testcase. 3844 * tests/data/test-read-ctf/test-list-struct.[co]: Likewise. 3845 * tests/data/test-read-ctf/test-callback.[co]: Likewise. 3846 * tests/data/test-read-ctf/test-callback2.[co]: Likewise. 3847 * tests/data/test-read-ctf/test-functions-declaration.[co]: Likewise. 3848 * tests/data/test-read-ctf/test-forward-type-decl.[co]: Likewise. 3849 * tests/data/test-read-ctf/test-array-of-pointers.abi: 3850 Expected test output. 3851 * tests/data/test-read-ctf/test-callback.abi: Likewise. 3852 * tests/data/test-read-ctf/test-callback2.abi: Likewise. 3853 * tests/data/test-read-ctf/test-forward-type-decl.abi: Likewise. 3854 * tests/data/test-read-ctf/test-functions-declaration.abi: Likewise. 3855 * tests/data/test-read-ctf/test-list-struct.abi: Likewise. 3856 * tests/test-read-ctf.cc: Add testcases to CTF test harness. 3857 38582021-12-21 Thomas Schwinge <thomas@codesourcery.com> 3859 3860 Replace Python 'import importlib' with 'import importlib.machinery' 3861 * tests/mockfedabipkgdiff.in: Replace Python 'import importlib' 3862 with 'import importlib.machinery'. 3863 38642021-12-17 Thomas Schwinge <thomas@codesourcery.com> 3865 3866 fedabipkgdiff: Also accept MIME type 'application/x-redhat-package-manager' for RPM files 3867 *** 4.0.0 900 3868 900 http://ftp.de.debian.org/debian testing/main amd64 Packages 3869 900 http://ftp.de.debian.org/debian testing/main i386 Packages 3870 800 http://ftp.de.debian.org/debian unstable/main amd64 Packages 3871 800 http://ftp.de.debian.org/debian unstable/main i386 Packages 3872 100 /var/lib/dpkg/status 3873 $ awk '$2 ~ /rpm/' < /etc/mime.types 3874 application/x-redhat-package-manager rpm 3875 $ dpkg -S /etc/mime.types 3876 mime-support: /etc/mime.types 3877 $ apt policy mime-support 3878 mime-support: 3879 Installed: 3.64ubuntu1 3880 Candidate: 3.64ubuntu1 3881 Version table: 3882 *** 3.64ubuntu1 500 3883 500 http://de.archive.ubuntu.com/ubuntu focal/main amd64 Packages 3884 500 http://de.archive.ubuntu.com/ubuntu focal/main i386 Packages 3885 100 /var/lib/dpkg/status 3886 $ awk '$2 ~ /rpm/' < /etc/mime.types 3887 application/x-redhat-package-manager rpm 3888 $ dpkg -S /etc/mime.types 3889 mime-support: /etc/mime.types 3890 $ apt-cache policy mime-support 3891 mime-support: 3892 Installed: 3.54ubuntu1.1 3893 Candidate: 3.54ubuntu1.1 3894 Version table: 3895 *** 3.54ubuntu1.1 0 3896 500 http://us.archive.ubuntu.com/ubuntu/ trusty-updates/main amd64 Packages 3897 500 http://us.archive.ubuntu.com/ubuntu/ trusty-security/main amd64 Packages 3898 100 /var/lib/dpkg/status 3899 3.54ubuntu1 0 3900 500 http://us.archive.ubuntu.com/ubuntu/ trusty/main amd64 Packages 3901 Otherwise, 'is_rpm_file' fails, resulting in a few test cases failing with an 3902 unhelpful 'Unknown arguments. Please refer to --help.' message (similar to what 3903 had been observed in PR22077 "runtestfedabipkgdiff.py fails on centos-x86_64"). 3904 * tools/fedabipkgdiff (is_rpm_file): Also accept MIME type 3905 'application/x-redhat-package-manager' for RPM files. 3906 CC: Chenxiong Qi <cqi@redhat.com> 3907 39082021-12-17 Thomas Schwinge <thomas@codesourcery.com> 3909 3910 Replace use of deprecated Python 'imp' module with 'importlib' 3911 * tests/mockfedabipkgdiff.in: Replace use of deprecated Python 3912 'imp' module with 'importlib'. 3913 CC: Chenxiong Qi <cqi@redhat.com> 3914 39152021-12-17 Thomas Schwinge <thomas@codesourcery.com> 3916 3917 fedabipkgdiff: Enable testing without proper Koji installation 3918 * tools/fedabipkgdiff: Handle 'koji.ConfigurationError'. 3919 * configure.ac: Likewise. 3920 * CONTRIBUTING: Document "fedabipkgdiff testing". 3921 Documenting/providing a way to enable such testing, this commit can be 3922 considered a sequel to commit 90d236a03343d75ea504d53c73270e50b9000e75 3923 "Bug 22076 - Disable fedabipkgdiff for old koji clients", for Mark Wielaard's 3924 PR22076 "runtestfedabipkgdiff.py fails on debian-amd64". 3925 39262021-12-10 Thomas Schwinge <thomas@codesourcery.com> 3927 3928 abipkgdiff: Use 'convert_path_to_relative' in 'create_abi_file_path' 3929 * tools/abipkgdiff.cc (create_abi_file_path): Use 3930 'convert_path_to_relative'. 3931 39322021-12-10 Thomas Schwinge <thomas@codesourcery.com> 3933 3934 abipkgdiff: Respect 'create_abi_file_path' interface 3935 * tools/abipkgdiff.cc (compare_to_self): Respect 3936 'create_abi_file_path' interface. 3937 39382021-12-10 Thomas Schwinge <thomas@codesourcery.com> 3939 3940 configure: Instead of for rpm 4.15+ version, test actual rpm/zstd support 3941 * configure.ac: Instead of for rpm 4.15+ version, test actual 3942 rpm/zstd support. 3943 * tests/test-diff-pkg.cc: Adjust. 3944 39452021-12-14 Thomas Schwinge <thomas@codesourcery.com> 3946 3947 Further update 'make distcheck-fast' 3948 * CONTRIBUTING: Further update 'make distcheck-fast'. 3949 Suggested-by: Matthias Maennich <maennich@google.com> 3950 39512021-12-14 Thomas Schwinge <thomas@codesourcery.com> 3952 3953 Add '.mailmap' 3954 * .mailmap: New. 3955 CC: Ben Woodard <woodard@redhat.com> 3956 CC: Guillermo E. Martinez <guillermo.e.martinez@oracle.com> 3957 CC: Jose E. Marchesi <jose.marchesi@oracle.com> 3958 CC: Matthias Maennich <maennich@google.com> 3959 CC: Xiao Jia <xiaoj@google.com> 3960 39612021-12-11 Thomas Schwinge <thomas@codesourcery.com> 3962 3963 configure: Tune fedabipkgdiff dependencies detection 3964 * configure.ac: Tune fedabipkgdiff dependencies detection. 3965 39662021-12-11 Thomas Schwinge <thomas@codesourcery.com> 3967 3968 CONTRIBUTING: Move "Coding language and style" section 3969 * CONTRIBUTING: Move "Coding language and style" section. 3970 39712021-12-15 Mark Wielaard <mark@klomp.org> 3972 3973 dwarf-reader: Workaround libdw dwarf_location_expression bug 3974 * src/abg-dwarf-reader.cc (die_constant_data_member_location): 3975 New function. 3976 (die_member_offset): Use die_constant_data_member_location 3977 before calling die_location_expr and eval_quickly. 3978 39792021-12-14 Guillermo E. Martinez via Libabigail <libabigail@sourceware.org> 3980 3981 Add regression tests for ctf reading 3982 * tests/test-read-ctf.cc: New ctf reading regression test. 3983 * tests/test-read-common.cc: New library to be used with 3984 test-read-{ctf,dwarf}.cc. 3985 * tests/test-read-common.h: Likewise. 3986 * tests/test-annotate.cc (in_out_specs): Adjust path for input files. 3987 * tests/Makefile.am: Build new tests/test-read-ctf.cc file. 3988 * tests/data/Makefile.am: Add test inputs and expected files. 3989 Add libtestreadcommon.a test library and use it for test-read-{ctf,dwarf}. 3990 * tests/test-read-dwarf.cc: Adapt test to use libtestreadcommon.a in 3991 test-read-common.{cc,h}. 3992 * tests/data/test-annotate/test3.so.abi: Adjust ELF input path file 3993 location to ./tests/data/test-read-common. 3994 * tests/data/test-annotate/test4.so.abi: Likewise. 3995 * tests/data/test-read-common/PR26261: Move test harness to 3996 test-read-common directory. 3997 * tests/data/test-read-common/PR27700: Likewise. 3998 * tests/data/test-read-common/test-PR26568-*: Likewise. 3999 * tests/data/test-read-common/test3.{c,so}: Likewise. 4000 * tests/data/test-read-common/test4.{c,so}: Likewise. 4001 * tests/data/test-read-common/crti*: Helper object to export 4002 _init and _fini sysmbols. 4003 * tests/data/test-read-ctf/test-ambiguous-struct-A.c: New testcase. 4004 * tests/data/test-read-ctf/test-ambiguous-struct-B.c: Likewise. 4005 * tests/data/test-read-ctf/test-conflicting-type-syms-a.c: Likewise. 4006 * tests/data/test-read-ctf/test-conflicting-type-syms-b.c: Likewise. 4007 * tests/data/test-read-ctf/test-enum.c: Likewise. 4008 * tests/data/test-read-ctf/test-enum-many.c: Likewise. 4009 * tests/data/test-read-ctf/test-enum-symbol.c: Likewise. 4010 * tests/data/test-read-ctf/test-struct-iteration.c: Likewise. 4011 * tests/data/test-read-ctf/test-dynamic-array.c: Likewise. 4012 * tests/data/test-read-ctf/test0.c: Likewise. 4013 * tests/data/test-read-ctf/test1.c: Likewise. 4014 * tests/data/test-read-ctf/test2.c: Likewise. 4015 * tests/data/test-read-ctf/test5.c: Likewise. 4016 * tests/data/test-read-ctf/test7.{c,h}: Likewise. 4017 * tests/data/test-read-ctf/test8.c: Likewise. 4018 * tests/data/test-read-ctf/test9.c: Likewise. 4019 * tests/data/test-read-ctf/test-ambiguous-struct-A.o.hash.abi: Testcase 4020 expected result. 4021 * tests/data/test-read-ctf/PR26261/PR26261-exe.abi: Likewise. 4022 * tests/data/test-read-ctf/PR27700/test-PR27700.abi: Likewise. 4023 * tests/data/test-read-ctf/test-ambiguous-struct-A.o.hash.abi: Likewise. 4024 * tests/data/test-read-ctf/test-ambiguous-struct-B.o.hash.abi: Likewise. 4025 * tests/data/test-read-ctf/test-conflicting-type-syms-a.o.hash.abi: Likewise. 4026 * tests/data/test-read-ctf/test-conflicting-type-syms-b.o.hash.abi: Likewise. 4027 * tests/data/test-read-ctf/test-enum.o.abi: Likewise. 4028 * tests/data/test-read-ctf/test-enum-many.o.hash.abi: Likewise. 4029 * tests/data/test-read-ctf/test-enum-symbol.o.hash.abi: Likewise. 4030 * tests/data/test-read-ctf/test-struct-iteration.o.abi: Likewise. 4031 * tests/data/test-read-ctf/test-dynamic-array.o.abi: Likewise. 4032 * tests/data/test-read-ctf/test0: Likewise. 4033 * tests/data/test-read-ctf/test0*.abi: Likewise. 4034 * tests/data/test-read-ctf/test1.so: Likewise. 4035 * tests/data/test-read-ctf/test1*.abi: Likewise. 4036 * tests/data/test-read-ctf/test2.so: Likewise. 4037 * tests/data/test-read-ctf/test2*.abi: Likewise. 4038 * tests/data/test-read-ctf/test3.so.abi: Likewise. 4039 * tests/data/test-read-ctf/test4*.abi: Likewise. 4040 * tests/data/test-read-ctf/test5.o.abi: Likewise. 4041 * tests/data/test-read-ctf/test7.o.abi: Likewise. 4042 * tests/data/test-read-ctf/test8.o.abi: Likewise. 4043 * tests/data/test-read-ctf/test9.o.abi: Likewise. 4044 * tests/data/test-read-dwarf/PR26261/PR26261-exe.abi: Update 4045 expected abixml file. 4046 * tests/data/test-read-dwarf/PR27700/test-PR27700.abi: Likewise. 4047 * tests/data/test-read-dwarf/test-PR26568-1.*.abi: Likewise. 4048 * tests/data/test-read-dwarf/test3*.abi: Likewise. 4049 * tests/data/test-read-dwarf/test4*.abi: Likewise. 4050 * doc/api/libabigail.doxy: Add tests/test-read-common.{cc,h} to 4051 doxygen. 4052 40532021-11-27 Guillermo E. Martinez via Libabigail <libabigail@sourceware.org> 4054 4055 ctf-reader: Fix length in dynamic array definition 4056 * src/abg-ctf-reader.cc (process_ctf_array_type): 4057 set subrange_type::is_infinite when `upper_bound' value 4058 is equal to `0'. 4059 40602021-12-09 Thomas Schwinge <thomas@codesourcery.com> 4061 4062 Better highlight 'make distcheck-fast' 4063 * CONTRIBUTING: Better highlight 'make distcheck-fast'. 4064 40652021-12-03 Matthias Maennich <maennich@google.com> 4066 4067 XML writer: use exemplar types for tracking referenced types 4068 * src/abg-writer.cc (record_type_as_referenced): Use exemplar 4069 type with referenced type sets. 4070 (type_is_referenced): Likewise. 4071 (tests/data/test-annotate/test14-pr18893.so.abi): Duplicate 4072 type(s) removed, as described above. 4073 (tests/data/test-read-dwarf/test14-pr18893.so.abi): Likewise. 4074 (tests/data/test-annotate/test19-pr19023-libtcmalloc_and_profiler.so.abi): 4075 Likewise. 4076 (tests/data/test-read-dwarf/test16-pr18904.so.abi): Likewise. 4077 (tests/data/test-read-dwarf/test19-pr19023-libtcmalloc_and_profiler.so.abi): 4078 Likewise. 4079 (tests/data/test-read-dwarf/test22-pr19097-libstdc++.so.6.0.17.so.abi): 4080 Likewise. 4081 (tests/data/test-read-dwarf/PR25007-sdhci.ko.abi): Some 4082 function type(s) reordered, as described above. 4083 (tests/data/test-read-dwarf/PR25042-libgdbm-clang-dwarf5.so.6.0.0.abi): 4084 Likewise. 4085 (tests/data/test-annotate/test15-pr18892.so.abi):: Duplicate 4086 type(s) removed and some function type(s) reordered, as 4087 described above. 4088 (tests/data/test-read-dwarf/test15-pr18892.so.abi): Likewise. 4089 (tests/data/test-annotate/test21-pr19092.so.abi): Likewise. 4090 (tests/data/test-read-dwarf/test21-pr19092.so.abi): Likewise 4091 Reviewed-by: Giuliano Procida <gprocida@google.com> 4092 40932021-12-03 Matthias Maennich <maennich@google.com> 4094 4095 XML writer: use consistent type pointers for type ids and emission tracking 4096 * include/abg-fwd.h (get_exemplar_type): Declare new function. 4097 * src/abg-ir.cc (get_exemplar_type): Define new function. 4098 * src/abg-writer.cc (type_has_existing_id): use get_exemplar_type 4099 for resolution. 4100 (get_id_for_type): Likewise. 4101 (record_type_as_emitted): Likewise. 4102 (type_is_emitted): Likewise. 4103 Reviewed-by: Giuliano Procida <gprocida@google.com> 4104 41052021-12-06 Dodji Seketeli <dodji@redhat.com> 4106 4107 reader: Build array types with their element type "a priori" 4108 * src/abg-ir.cc (var_decl::get_pretty_representation): Assert that 4109 array element types are not empty. 4110 * src/abg-reader.cc (build_array_type_def): Set array element 4111 types a priori. 4112 41132021-12-02 Dodji Seketeli <dodji@redhat.com> 4114 4115 suppression: Fix has_data_member_inserted_between = {offset_of(), offset_of()} 4116 * doc/manuals/libabigail-concepts.rst: Update the documentation to 4117 reflect that has_data_member* properties will never suppress any 4118 type change if the change carries a data member suppression or a 4119 type size reduction. 4120 * include/abg-fwd.h (get_last_data_member) 4121 (get_next_data_member_offset): Declare new functions. 4122 * include/abg-suppression.h 4123 (insertion_range::boundary_value_is_end): Declare new static 4124 member function. 4125 (type_supression::insertion_range::eval_boundary): Make this 4126 static function take an uint64_t rather than ssize_t. 4127 (type_suppression::insertion_range::integer_boundary::{integer_boundary, 4128 as_integer, operator int}): Make these member functions and 4129 operator take or return uint64_t rather than int. 4130 * src/abg-ir.cc (get_last_data_member) 4131 (get_next_data_member_offset): Define new functions. 4132 * src/abg-suppression.cc 4133 (type_suppression::suppresses_diff): Rework logic to better handle 4134 "has_data_member_inserted_*" properties in the context of class 4135 diffs. If the diff object carries data member removal or size 4136 reduction, the diff object is not suppressed by the current type 4137 suppression. Also, the property "has_data_member_inserted_at = 4138 end", is now represented by an insertion range where the beginning 4139 and the end of the range are both the max possible value of 4140 insertion range boundaries; the code is made to recognize that. 4141 (type_suppression::insertion_range::eval_boundary): Make this 4142 static function take an uint64_t rather than ssize_t. If the 4143 boundary is expressed as a "offset_after" expression, make sure 4144 the offset of the next data member is considered if it's present. 4145 (type_suppression::insertion_range::integer_boundary::{integer_boundary, 4146 as_integer, operator int}): Make these take or return uint64_t 4147 rather than int. 4148 (type_suppression::insertion_range::boundary_value_is_end): Define 4149 new member function. 4150 (type_suppression::insertion_range::integer_boundary::priv::value_): 4151 Turn the type of this into uint64_t, from int. 4152 (type_suppression::insertion_range::integer_boundary::priv::priv): 4153 The parameter of this is now uint64_t, from int. 4154 * tests/data/test-diff-suppr/PR28073/PR28073-bitfield-removed.c: 4155 New test source code. 4156 * tests/data/test-diff-suppr/PR28073/PR28073-bitfield-removed.o: 4157 New test binary. 4158 * tests/data/test-diff-suppr/PR28073/PR28073-bitfield-removed.o.abi: 4159 New test input. 4160 * tests/data/test-diff-suppr/PR28073/PR28073-output-{1,2}.txt: New 4161 test reference output. 4162 * tests/data/test-diff-suppr/PR28073/PR28073.after.o: New test 4163 binary. 4164 * tests/data/test-diff-suppr/PR28073/PR28073.after.o.abi: New test 4165 input. 4166 * tests/data/test-diff-suppr/PR28073/PR28073.before.o: New test 4167 binary. 4168 * tests/data/test-diff-suppr/PR28073/PR28073.before.o.abi: New 4169 test input. 4170 * tests/data/test-diff-suppr/PR28073/PR28073.c: New test source 4171 code. 4172 * tests/data/test-diff-suppr/PR28073/bitfield.suppr: New test 4173 input. 4174 * tests/data/Makefile.am: Add the new test material to source 4175 distribution. 4176 * tests/test-diff-suppr.cc: Add the new test input to this test 4177 harness. 4178 41792021-11-24 Matthias Maennich <maennich@google.com> 4180 4181 XML writer: adjust tracking of emitted declarations 4182 * abg-writer.cc (write_context): Replace mutable 4183 m_emitted_decls_map with plain m_emitted_decls_set. 4184 (decl_name_is_emitted): Inlined into decl_is_emitted; dropped. 4185 (decl_is_emitted): Turn the is_type check into an assert and 4186 inline decl_name_is_emitted. Look up in set instead of map. 4187 (record_decl_as_emitted): Make non-const. Insert into set 4188 instead of map. 4189 Reviewed-by: Giuliano Procida <gprocida@google.com> 4190 41912021-11-22 Guillermo E. Martinez via Libabigail <libabigail@sourceware.org> 4192 4193 ctf-reader: Fix memory leak reported by valgrind 4194 * src/abg-ctf-reader.cc (process_ctf_archive): Add 4195 ctf_dict_close 4196 41972021-11-18 Guillermo E. Martinez via Libabigail <libabigail@sourceware.org> 4198 4199 ctf-reader: Use ABG_ASSERT instead of assert 4200 * tools/abidiff.cc (main): Use ABG_ASSERT instead of assert. 4201 * tools/abilint.cc: Likewise. 4202 42032021-11-18 Guillermo E. Martinez via Libabigail <libabigail@sourceware.org> 4204 4205 ctf-reader: Make create_read_context return a smart pointer. 4206 * include/abg-ctf-reader.h (read_context_sptr): New typedef. 4207 (create_read_context): Use read_context_sptr as return value. 4208 (read_corpus): New overload that takes a read_context_sptr. 4209 * src/abg-ctf-reader.cc (create_read_context): Use 4210 read_context_sptr as return value. 4211 (read_corpus): New overload that takes a read_context_sptr. 4212 * tools/abidiff.cc (main): Use read_context_sptr. 4213 * tools/abidw.cc (load_corpus_and_write_abixml): Adjust call to 4214 create_read_context. 4215 * tools/abilint.cc: Likewise. 4216 42172021-11-22 Dodji Seketeli <dodji@redhat.com> 4218 4219 ctf-reader: Remove useless parameter from fill_ctf_section 4220 * src/abg-ctf-reader.cc (fill_ctf_section): Remove the now useless 4221 context parameter. Adjust the comment accordingly. 4222 (slurp_elf_info): Adjust the invocation of fill_ctf_section. 4223 42242021-11-17 Guillermo E. Martinez via Libabigail <libabigail@sourceware.org> 4225 4226 ctf-reader: Use argument by reference reading the context 4227 * include/abg-ctf-reader.h (create_read_context): Pass the string 4228 by reference. 4229 * src/abg-ctf-reader.cc (ctf_reader::read_context): Likewise. 4230 (create_read_context): Likewise. 4231 42322021-11-17 Jose E. Marchesi via Libabigail <libabigail@sourceware.org> 4233 4234 abidw: add support for CTF 4235 * tools/abidw.cc: Conditionally include abg-ctf-reader.h. 4236 (load_corpus_and_write_abixml): Do not get a 4237 dwarf_reader::read_context as an argument. 4238 (main): Adjust call to load_corpus_and_write_abixml accordingly. 4239 (struct options): New option use_ctf. 4240 (options): ... and initialize it. 4241 (display_usage): Document --ctf. 4242 (parse_command_line): Handle --ctf. 4243 * doc/manuals/abidw.rst: Document --ctf. 4244 42452021-11-16 Jose E. Marchesi via Libabigail <libabigail@sourceware.org> 4246 4247 ctf: ctf_reader::read_corpus now sets a status 4248 * include/abg-ctf-reader.h: Include abg-elf-reader-common.h. 4249 read_corpus now gets an extra argument `status'. 4250 * src/abg-ctf-reader.cc (read_corpus): Likewise, and set `status' 4251 accordingly when the debug info is not found. 4252 * tools/abilint.cc (main): Pass a status argument to 4253 ctf_reader::read_corpus. 4254 * tools/abidiff.cc (main): Likewise. 4255 42562021-11-11 tangmeng <tangmeng@uniontech.com> 4257 4258 Standardize and improve the output of several tests 4259 * tests/test-abidiff-exit.cc (main): Use 4260 abigail::tests::emit_test_{summary, status_and_update_counters} 4261 functions to ameliorate and standardize test output. 4262 * tests/test-alt-dwarf-file.cc (main): Likewise. 4263 * tests/test-annotate.cc (main): Likewise. 4264 * tests/test-diff-dwarf-abixml.cc (main): Likewise. 4265 * tests/test-ini.cc (main): Likewise. 4266 * tests/test-lookup-syms.cc (main): Likewise. 4267 42682021-11-17 Dodji Seketeli <dodji@redhat.com> 4269 4270 test-utils: Define test status reporting functions 4271 * tests/test-utils.h (emit_test_status_and_update_counters) 4272 (emit_test_summary): Declare ... 4273 * tests/test-utils.cc (emit_test_status_and_update_counters) 4274 (emit_test_summary): ... new functions. 4275 42762021-11-17 Dodji Seketeli <dodji@redhat.com> 4277 4278 test-utils: Define colors for test status messages 4279 * tests/test-utils.h (TEST_FAILURE_COLOR, TEST_SUCCESS_COLOR): 4280 Define macros. 4281 42822021-11-15 Dodji Seketeli <dodji@redhat.com> 4283 4284 Bug 28584 - Don't drop global variables that lack DW_AT_external 4285 * src/abg-dwarf-reader.cc (die_is_effectively_public_decl): Define 4286 new static function. 4287 (die_flag_attribute, die_is_public_decl): Adjust const-ness. 4288 (build_ir_node_from_die): When building an IR for a variable, 4289 consider the variable as being external if the variable is at 4290 namespace scope, even if its DIE doesn't have the DW_AT_external 4291 attribute. 4292 * tests/data/test-read-dwarf/PR28584/PR28584-smv.cc: New source 4293 code for a new clang-built binary. 4294 * tests/data/test-read-dwarf/PR28584/PR28584-smv.clang.o: New 4295 clang-built input binary for testing purposes. 4296 * tests/data/test-read-dwarf/PR28584/PR28584-smv.clang.o.abi: The 4297 reference output abixml. 4298 * tests/data/Makefile.am: Add the new test material above to 4299 source distribution. 4300 * tests/test-read-dwarf.cc (in_out_specs): Add the new test input 4301 to this test harness. 4302 * tests/data/test-read-dwarf/PR22122-libftdc.so.abi: Adjust. 4303 * tests/data/test-read-dwarf/test-libandroid.so.abi: Likewise. 4304 43052021-11-12 Jose E. Marchesi via Libabigail <libabigail@sourceware.org> 4306 4307 Move dwarf_reader::status facilities to an abigail::elf_reader namespace 4308 * include/abg-reader-common.h: New file. 4309 * include/abg-dwarf-reader.h (enum status): Move to 4310 abg-reader-status.h. 4311 (status_to_diagnostic_string): Likewise. 4312 (operator|): Likewise. 4313 (operator&): Likewise. 4314 (operator|=): Likewise. 4315 (operator&=): Likewise. 4316 Include abg-reader-common.h. 4317 * include/Makefile.am (pkginclude_HEADERS): Add 4318 abg-elf-reader-common.h. 4319 * src/abg-elf-reader-status.cc: New file. 4320 * src/abg-dwarf-reader.cc (operator|): Move to 4321 abg-elf-reader-common.cc. 4322 (operator&): Likewise. 4323 (operator|): Likewise. 4324 (operator|=): Likewise. 4325 (operator&=): Likewise. 4326 (status_to_diagnostic_string): Likewise. 4327 * src/Makefile.am (libabigail_la_SOURCES): Add 4328 elf-reader-common.cc. 4329 * src/abg-tools-utils.cc: Use abigail::elf_reader instead of 4330 abigail::dwarf_reader for the status definitions. 4331 * tools/abicompat.cc: Likewise. 4332 * tools/abidiff.cc: Likewise. 4333 * tools/abidw.cc: Likewise. 4334 * tools/abilint.cc: Likewise. 4335 * tools/abipkgdiff.cc: Likewise. 4336 * tests/print-diff-tree.cc: Likewise. 4337 * tests/test-diff-dwarf.cc: Likewise. 4338 * tests/test-read-dwarf.cc: Likewise. 4339 * tests/test-symtab.cc: Likewise. 4340 * tests/test-ir-walker.cc: Likewise. 4341 43422021-11-12 Dodji Seketeli <dodji@redhat.com> 4343 4344 abg-config.{cc,h}: Misc comment cleanups 4345 * include/abg-config.h (abigail_get_library_version): Remove the 4346 comment from the header file ... 4347 * src/abg-config.cc (abigail_get_library_version): ... to put it 4348 in the definition. 4349 43502021-11-12 Dodji Seketeli <dodji@redhat.com> 4351 4352 abidw: Add --abixml-version 4353 * doc/manuals/abidw.rst: Document the --abixml-version command 4354 line option. 4355 * configure.ac (ABIXML_VERSION_MAJOR, ABIXML_VERSION_MINOR): 4356 Define these two new autoconf variables. 4357 * include/abg-config.h (abigail_get_abixml_version): Declare new 4358 function. 4359 * include/abg-tools-utils.h (get_abixml_version_string): Declare 4360 new function. 4361 * include/abg-version.h.in (ABIGAIL_ABIXML_VERSION_MAJOR) 4362 (ABIGAIL_ABIXML_VERSION_MINOR): Define new preprocessor macros. 4363 * src/abg-config.cc (config::config): Initialize 4364 config::m_format_{minor,major} using the newly defined 4365 preprocessor macros ABIGAIL_ABIXML_VERSION_M{IN,AJ}OR. 4366 * src/abg-tools-utils.cc (get_abixml_version_string): Define new 4367 function. 4368 * tools/abidw.cc (options::display_abixml_version): Define new 4369 data member. 4370 (options::options): Initialize it. 4371 (display_usage): Emit a help string for the new --abixml-version 4372 option. 4373 (parse_command_line): Parse the --abixml-version string. 4374 (main): Emit the abixml version when asked. 4375 43762021-11-04 Dodji Seketeli <dodji@redhat.com> 4377 4378 Bug 28450 - Fix cloned member function handling in DWARF 4379 * ABIXML-FORMAT-VERSIONS: New file that documents the version 4380 changes of the ABIXML-FORMAT-VERSIONS. 4381 * include/abg-fwd.h (look_through_no_op_qualified_type): Remove 4382 this function declaration. 4383 (strip_useless_const_qualification): Declare new function 4384 declaration. 4385 * src/abg-comparison.cc (compute_diff_for_types): Avoid stripping 4386 off no-op-qualified types as these beasts don't exist anymore. 4387 (redundancy_marking_visitor::visit_end): Allow a variable which 4388 type has local changes to be considered redundant if its type is 4389 itself redundant. 4390 * src/abg-config.cc (config::config): Bump the abixml version from 4391 2.0 to 2.1. 4392 * src/abg-dwarf-reader.cc (maybe_strip_qualification): Factorize 4393 out the new strip_useless_const_qualification function from here. 4394 (build_or_get_fn_decl_if_not_suppressed): If the function is 4395 created but doesn't have an ELF symbol associated to it, then 4396 update it so that the ELF symbol can be associated. Otherwise, 4397 potential_member_fn_should_be_dropped might later drop that 4398 function on the floor because it doesn't have any ELF symbol 4399 associated. 4400 * src/abg-ir.cc (strip_useless_const_qualification): Define this, 4401 which is has been factorized out of maybe_strip_qualification. 4402 (look_through_no_op_qualified_type): Remove this definition. 4403 (equals): In the overload for reference_type_def, do not peel 4404 typedefs off from the reference before comparison. This is now 4405 useless as the comparison infrastructure got a lot better. In the 4406 overload for references, stop using 4407 look_through_no_op_qualified_type as this function doesn't exist 4408 anymore. 4409 * src/abg-tools-utils.cc (abidiff_status_has_error): Detect when 4410 there is a usage error as well. 4411 * tests/data/test-types-stability/PR28450-libepetra.so.13.0: Add 4412 new testing binary to the repository. 4413 * tests/data/Makefile.am: Add the new testing binary above to 4414 source distribution. 4415 * tests/test-types-stability.cc (elf_paths): Add the new test to 4416 this test harness. 4417 * tests/test-diff-dwarf-abixml.cc (main): Add better error messages. 4418 * tests/data/test-abidiff-exit/test-member-size-report0.txt: Adjust. 4419 * tests/data/test-annotate/libtest23.so.abi: Likewise. 4420 * tests/data/test-annotate/libtest24-drop-fns-2.so.abi: Likewise. 4421 * tests/data/test-annotate/libtest24-drop-fns.so.abi: Likewise. 4422 * tests/data/test-annotate/test-anonymous-members-0.o.abi: Likewise. 4423 * tests/data/test-annotate/test0.abi: Likewise. 4424 * tests/data/test-annotate/test1.abi: Likewise. 4425 * tests/data/test-annotate/test13-pr18894.so.abi: Likewise. 4426 * tests/data/test-annotate/test14-pr18893.so.abi: Likewise. 4427 * tests/data/test-annotate/test15-pr18892.so.abi: Likewise. 4428 * tests/data/test-annotate/test17-pr19027.so.abi: Likewise. 4429 * tests/data/test-annotate/test18-pr19037-libvtkRenderingLIC-6.1.so.abi: Likewise. 4430 * tests/data/test-annotate/test19-pr19023-libtcmalloc_and_profiler.so.abi: Likewise. 4431 * tests/data/test-annotate/test20-pr19025-libvtkParallelCore-6.1.so.abi: Likewise. 4432 * tests/data/test-annotate/test6.so.abi: Likewise. 4433 * tests/data/test-annotate/test7.so.abi: Likewise. 4434 * tests/data/test-annotate/test8-qualified-this-pointer.so.abi: Likewise. 4435 * tests/data/test-diff-dwarf-abixml/test0-pr19026-libvtkIOSQL-6.1.so.1.abi: Likewise. 4436 * tests/data/test-diff-dwarf/test0-report.txt: Likewise. 4437 * tests/data/test-diff-dwarf/test28-vtable-changes-report-0.txt: Likewise. 4438 * tests/data/test-diff-dwarf/test42-PR21296-clanggcc-report0.txt: Likewise. 4439 * tests/data/test-diff-filter/test0-report.txt: Likewise. 4440 * tests/data/test-diff-filter/test01-report.txt: Likewise. 4441 * tests/data/test-diff-filter/test10-report.txt: Likewise. 4442 * tests/data/test-diff-filter/test30-pr18904-rvalueref-report0.txt: Likewise. 4443 * tests/data/test-diff-filter/test30-pr18904-rvalueref-report1.txt: Likewise. 4444 * tests/data/test-diff-filter/test30-pr18904-rvalueref-report2.txt: Likewise. 4445 * tests/data/test-diff-filter/test31-pr18535-libstdc++-report-0.txt: Likewise. 4446 * tests/data/test-diff-filter/test31-pr18535-libstdc++-report-1.txt: Likewise. 4447 * tests/data/test-diff-filter/test35-pr18754-no-added-syms-report-0.txt: Likewise. 4448 * tests/data/test-diff-filter/test35-pr18754-no-added-syms-report-1.txt: Likewise. 4449 * tests/data/test-diff-filter/test41-report-0.txt: Likewise. 4450 * tests/data/test-diff-filter/test9-report.txt: Likewise. 4451 * tests/data/test-diff-pkg/libsigc++-2.0-0c2a_2.4.0-1_amd64--libsigc++-2.0-0v5_2.4.1-1ubuntu2_amd64-report-0.txt: 4452 Likewise. 4453 * tests/data/test-diff-pkg/tbb-4.1-9.20130314.fc22.x86_64--tbb-4.3-3.20141204.fc23.x86_64-report-0.txt: 4454 Likewise. 4455 * tests/data/test-diff-pkg/tbb-4.1-9.20130314.fc22.x86_64--tbb-4.3-3.20141204.fc23.x86_64-report-1.txt: 4456 Likewise. 4457 * tests/data/test-diff-suppr/test24-soname-report-1.txt: Likewise. 4458 * tests/data/test-diff-suppr/test24-soname-report-10.txt: Likewise. 4459 * tests/data/test-diff-suppr/test24-soname-report-12.txt: Likewise. 4460 * tests/data/test-diff-suppr/test24-soname-report-14.txt: Likewise. 4461 * tests/data/test-diff-suppr/test24-soname-report-16.txt: Likewise. 4462 * tests/data/test-diff-suppr/test24-soname-report-4.txt: Likewise. 4463 * tests/data/test-diff-suppr/test31-report-1.txt: Likewise. 4464 * tests/data/test-read-dwarf/PR22015-libboost_iostreams.so.abi: Likewise. 4465 * tests/data/test-read-dwarf/PR22122-libftdc.so.abi: Likewise. 4466 * tests/data/test-read-dwarf/libtest23.so.abi: Likewise. 4467 * tests/data/test-read-dwarf/libtest24-drop-fns-2.so.abi: Likewise. 4468 * tests/data/test-read-dwarf/libtest24-drop-fns.so.abi: Likewise. 4469 * tests/data/test-read-dwarf/test-libaaudio.so.abi: Likewise. 4470 * tests/data/test-read-dwarf/test-libandroid.so.abi: Likewise. 4471 * tests/data/test-read-dwarf/test0.abi: Likewise. 4472 * tests/data/test-read-dwarf/test0.hash.abi: Likewise. 4473 * tests/data/test-read-dwarf/test1.abi: Likewise. 4474 * tests/data/test-read-dwarf/test1.hash.abi: Likewise. 4475 * tests/data/test-read-dwarf/test10-pr18818-gcc.so.abi: Likewise. 4476 * tests/data/test-read-dwarf/test11-pr18828.so.abi: Likewise. 4477 * tests/data/test-read-dwarf/test12-pr18844.so.abi: Likewise. 4478 * tests/data/test-read-dwarf/test14-pr18893.so.abi: Likewise. 4479 * tests/data/test-read-dwarf/test15-pr18892.so.abi: Likewise. 4480 * tests/data/test-read-dwarf/test16-pr18904.so.abi: Likewise. 4481 * tests/data/test-read-dwarf/test17-pr19027.so.abi: Likewise. 4482 * tests/data/test-read-dwarf/test18-pr19037-libvtkRenderingLIC-6.1.so.abi: Likewise. 4483 * tests/data/test-read-dwarf/test19-pr19023-libtcmalloc_and_profiler.so.abi: Likewise. 4484 * tests/data/test-read-dwarf/test2.so.abi: Likewise. 4485 * tests/data/test-read-dwarf/test2.so.hash.abi: Likewise. 4486 * tests/data/test-read-dwarf/test20-pr19025-libvtkParallelCore-6.1.so.abi: Likewise. 4487 * tests/data/test-read-dwarf/test21-pr19092.so.abi: Likewise. 4488 * tests/data/test-read-dwarf/test22-pr19097-libstdc++.so.6.0.17.so.abi: Likewise. 4489 * tests/data/test-read-dwarf/test3-alias-1.so.hash.abi: Likewise. 4490 * tests/data/test-read-dwarf/test3-alias-2.so.hash.abi: Likewise. 4491 * tests/data/test-read-dwarf/test3-alias-3.so.hash.abi: Likewise. 4492 * tests/data/test-read-dwarf/test3-alias-4.so.hash.abi: Likewise. 4493 * tests/data/test-read-dwarf/test3.so.abi: Likewise. 4494 * tests/data/test-read-dwarf/test3.so.hash.abi: Likewise. 4495 * tests/data/test-read-dwarf/test4.so.abi: Likewise. 4496 * tests/data/test-read-dwarf/test4.so.hash.abi: Likewise. 4497 * tests/data/test-read-dwarf/test5.o.abi: Likewise. 4498 * tests/data/test-read-dwarf/test5.o.hash.abi: Likewise. 4499 * tests/data/test-read-dwarf/test6.so.abi: Likewise. 4500 * tests/data/test-read-dwarf/test6.so.hash.abi: Likewise. 4501 * tests/data/test-read-dwarf/test7.so.abi: Likewise. 4502 * tests/data/test-read-dwarf/test7.so.hash.abi: Likewise. 4503 * tests/data/test-read-dwarf/test8-qualified-this-pointer.so.abi: Likewise. 4504 * tests/data/test-read-dwarf/test8-qualified-this-pointer.so.hash.abi: Likewise. 4505 * tests/data/test-read-dwarf/test9-pr18818-clang.so.abi: Likewise. 4506 * tests/data/test-read-write/test-crc.xml: Likewise. 4507 * tests/data/test-read-write/test26.xml: Likewise. 4508 * tests/data/test-read-write/test27.xml: Likewise. 4509 * tests/data/test-read-write/test28-without-std-fns-ref.xml: Likewise. 4510 * tests/data/test-read-write/test28-without-std-vars-ref.xml: Likewise. 4511 45122021-11-10 Jose E. Marchesi via Libabigail <libabigail@sourceware.org> 4513 4514 abg-ctf-reader: use the right string table for CTF data 4515 * src/abg-ctf-reader.cc (slurp_elf_info): Use 4516 find_strtab_for_symtab_section. 4517 45182021-11-10 Jose E. Marchesi via Libabigail <libabigail@sourceware.org> 4519 4520 elf_helpers: new utility function find_strtab_for_symtab_section 4521 * src/abg-elf-helpers.h: Prototype for find_strtab_for_symtab_section. 4522 * src/abg-elf-helpers.cc (find_strtab_for_symtab_section): New function. 4523 45242021-11-09 tangmeng <tangmeng@uniontech.com> 4525 4526 test-abicompat: Make the test output more pleasant 4527 * test/test-abicompat.cc (main): make test output more pleasant. 4528 45292021-11-05 tangmeng <tangmeng@uniontech.com> 4530 4531 abicompat: Add prompt message for abnormal operation 4532 * tools/abicompat.cc (parse_command_line): Notify the user 4533 when --redundant and --no-redundant are used at the same time 4534 45352021-11-05 tangmeng <tangmeng@uniontech.com> 4536 4537 abilint: Add prompt message for abnormal operation 4538 * tools/abilint.cc (parse_command_line): Notify the user when the 4539 path to the file is ignored because the --stdin option was 4540 provided. 4541 45422021-11-03 Jose E. Marchesi via Libabigail <libabigail@sourceware.org> 4543 4544 ctf: make libabigail::ctf_reader::read_corpus reentrant 4545 * src/abg-ctf-reader.cc (class read_context): New attributes 4546 elf_handler, elf_fd, ctf_sect, symtab_sec and strtab_sect. 4547 (read_context): Do not read the CTF archive here. 4548 (slurp_elf_info): Adjust to use attributes instead of locals, and 4549 fetch the raw ELF section contents for libctf. 4550 (close_elf_handler): New function. 4551 (fill_ctf_section): Likewise. 4552 (read_corpus): Call open_elf_handler, close_elf_handler and build 4553 the CTF archive using ctf_arc_bufopen instead of ctf_open. 4554 Signed-by: Jose E. Marchesi <jose.marchesi@oracle.com> 4555 45562021-11-03 tangmeng <tangmeng@uniontech.com> 4557 4558 Fix trivial typo when printing message 4559 * tools/abilint.cc (main): End the 'FILE_TYPE_UNKNOWN' tips with a 4560 newline. 4561 * tools/abisym.cc (main): Add a newline after version string. 4562 45632021-10-29 Jose E. Marchesi via Libabigail <libabigail@sourceware.org> 4564 4565 Add support for the CTF debug format to libabigail. 4566 * configure.ac: Check for libctf. 4567 * src/abg-ctf-reader.cc: New file. 4568 * include/abg-ctf-reader.h: Likewise. 4569 * src/Makefile.am (libabigail_la_SOURCES): Add abg-ctf-reader.cc 4570 conditionally. 4571 * include/Makefile.am (pkginclude_HEADERS): Add abg-ctf-reader.h 4572 conditionally. 4573 * tools/abilint.cc (struct options): New option `use_ctf'. 4574 (display_usage): Documentation for --ctf. 4575 (parse_command_line): Handle --ctf. 4576 (main): Honour --ctf. 4577 * tools/abidiff.cc (struct options): New option `use_ctf'. 4578 (display_usage): Documentation for --ctf. 4579 (parse_command_line): Handle --ctf. 4580 (main): Honour --ctf. 4581 * doc/manuals/abidiff.rst: Document --ctf. 4582 * doc/manuals/abilint.rst: Likewise. 4583 45842021-10-29 tangmeng <tangmeng@uniontech.com> 4585 4586 abicompat: Add prompt message for abnormal operation 4587 * tools/abicompat.cc (main): Notify the user when the path to 4588 the second library is ignored because the --weak-mode option 4589 was provided. Also, fix comment. 4590 45912021-10-29 tangmeng <tangmeng@uniontech.com> 4592 4593 abilint: fix trivial typo when using abilint 4594 * tools/abilint.cc (display_usage): Correct the errors and 4595 redundant content in the help information. 4596 (main): Add a newline after version string. 4597 45982021-10-27 tangmeng <tangmeng@uniontech.com> 4599 4600 Fix trivial typo when printing help information 4601 * tools/abicompat.cc (display_usage): End the usage message with a 4602 newline and properly indent it. 4603 46042021-10-20 Dodji Seketeli <dodji@redhat.com> 4605 4606 PR28365 - Assert on empty typedef on webkit2gtk3-jsc-2.32.3-1.fc34.x86_64 4607 * src/abg-reader.cc (build_enum_type_decl): Set the naming typedef 4608 only after the enum is created and keyed. 4609 (build_typedef_decl): Build the underlying type of the typedef 4610 first. 4611 46122021-10-11 Giuliano Procida <gprocida@google.com> 4613 4614 Tweak clang-format configuration 4615 * .clang-format: Various tweaks to Clang format configuration. 4616 46172021-10-15 Vanessa Sochat <sochat1@llnl.gov> 4618 4619 Fixing incorrect symbol 4620 * include/abg-ir.h (translation_unit::language<>LANG_PLI): Rename 4621 LANG_PL1 into this. 4622 * src/abg-dwarf-reader.cc (dwarf_language_to_tu_language): Rename 4623 DW_LANG_PL1 into DW_LANG_PLI. 4624 (get_default_array_lower_bound): Rename translation_unit::LANG_PL1 4625 into translation_unit::LANG_PLI. 4626 * src/abg-ir.cc (translation_unit_language_to_string): Rename 4627 translation_unit::LANG_PL1 into case translation_unit::LANG_PLI. 4628 (string_to_translation_unit_language): Rename 4629 translation_unit::LANG_PL1 into translation_unit::LANG_PLI. 4630 46312021-10-18 Dodji Seketeli <dodji@redhat.com> 4632 4633 Update licensing information on the web page after 2.0 4634 * doc/website/mainpage.txt: Libabigail is now Apache V2 + LLVM 4635 exception. 4636 46372021-10-18 Dodji Seketeli <dodji@redhat.com> 4638 4639 Add debug info package for wireshark-cli-3.4.9-1.fc36.x86_64.rpm 4640 * tests/data/test-diff-pkg/wireshark/wireshark-debuginfo-3.4.9-1.fc36.x86_64.rpm: 4641 Add new debug info package. 4642 * tests/data/Makefile.am: Add it to the source distribution. 4643 * tests/test-diff-pkg.cc: Use the new debug info package in the 4644 test harness. 4645 46462021-10-14 Dodji Seketeli <dodji@redhat.com> 4647 4648 Bug 28364 - libwiretap fails self comparison 4649 * src/abg-dwarf-reader.cc (build_function_type): Associate the DIE 4650 representation to the constructed type once it's fully built. 4651 * src/abg-reader.cc (build_function_type): Support member function of unions. 4652 * tests/data/Makefile.am: Add the new test input files to the 4653 source distribution. 4654 * tests/data/test-diff-pkg/wireshark/wireshark-cli-3.4.9-1.fc36.x86_64-self-check-report.txt: 4655 Add new test input file. 4656 * tests/data/test-diff-pkg/wireshark/wireshark-cli-3.4.9-1.fc36.x86_64.rpm: 4657 Likewise. 4658 * tests/data/test-diff-pkg/wireshark/wireshark-cli-debuginfo-3.4.9-1.fc36.x86_64.rpm: 4659 Likewise. 4660 * tests/test-diff-pkg.cc (in_out_specs): Add these new test input 4661 files to this test harness. 4662 * tests/data/test-read-dwarf/PR25007-sdhci.ko.abi: Adjust. 4663 46642021-10-14 Dodji Seketeli <dodji@redhat.com> 4665 4666 writer: Don't forget that a naming typedef is referenced 4667 * src/abg-writer.cc (write_naming_typedef): Notice that the naming 4668 typedef is referenced. 4669 46702021-10-14 Dodji Seketeli <dodji@redhat.com> 4671 4672 writer: Don't forget when emitting array subrange types 4673 * src/abg-writer.cc (write_array_subrange_type): Record the type 4674 as emitted. 4675 46762021-10-14 Dodji Seketeli <dodji@redhat.com> 4677 4678 writer: Don't forget to emit types referenced by function types 4679 * src/abg-writer.cc (write_referenced_types): Factorize out of ... 4680 (write_translation_unit): ... here. Also, use it to write the 4681 types referenced by emitted function types. 4682 46832021-10-14 Dodji Seketeli <dodji@redhat.com> 4684 4685 ir: Avoid canonicalizing types that are not meant to 4686 * src/abg-ir.cc (type_base::get_canonical_type_for): Do not 4687 canonicalize types that are not meant to. 4688 (maybe_adjust_canonical_type): Do not crash when dealing with a 4689 nil canonical type. 4690 * tests/data/test-annotate/libtest23.so.abi: Adjust. 4691 * tests/data/test-annotate/libtest24-drop-fns-2.so.abi: Likewise. 4692 * tests/data/test-annotate/libtest24-drop-fns.so.abi: Likewise. 4693 * tests/data/test-annotate/test-anonymous-members-0.o.abi: Likewise. 4694 * tests/data/test-annotate/test0.abi: Likewise. 4695 * tests/data/test-annotate/test1.abi: Likewise. 4696 * tests/data/test-annotate/test13-pr18894.so.abi: Likewise. 4697 * tests/data/test-annotate/test14-pr18893.so.abi: Likewise. 4698 * tests/data/test-annotate/test15-pr18892.so.abi: Likewise. 4699 * tests/data/test-annotate/test17-pr19027.so.abi: Likewise. 4700 * tests/data/test-annotate/test18-pr19037-libvtkRenderingLIC-6.1.so.abi: Likewise. 4701 * tests/data/test-annotate/test19-pr19023-libtcmalloc_and_profiler.so.abi: Likewise. 4702 * tests/data/test-annotate/test2.so.abi: Likewise. 4703 * tests/data/test-annotate/test20-pr19025-libvtkParallelCore-6.1.so.abi: Likewise. 4704 * tests/data/test-annotate/test21-pr19092.so.abi: Likewise. 4705 * tests/data/test-annotate/test3.so.abi: Likewise. 4706 * tests/data/test-annotate/test5.o.abi: Likewise. 4707 * tests/data/test-annotate/test8-qualified-this-pointer.so.abi: Likewise. 4708 * tests/data/test-read-dwarf/PR22015-libboost_iostreams.so.abi: Likewise. 4709 * tests/data/test-read-dwarf/PR22122-libftdc.so.abi: Likewise. 4710 * tests/data/test-read-dwarf/PR24378-fn-is-not-scope.abi: Likewise. 4711 * tests/data/test-read-dwarf/PR25007-sdhci.ko.abi: Likewise. 4712 * tests/data/test-read-dwarf/PR25042-libgdbm-clang-dwarf5.so.6.0.0.abi: Likewise. 4713 * tests/data/test-read-dwarf/PR26261/PR26261-exe.abi: Likewise. 4714 * tests/data/test-read-dwarf/PR27700/test-PR27700.abi: Likewise. 4715 * tests/data/test-read-dwarf/libtest23.so.abi: Likewise. 4716 * tests/data/test-read-dwarf/libtest24-drop-fns-2.so.abi: Likewise. 4717 * tests/data/test-read-dwarf/libtest24-drop-fns.so.abi: Likewise. 4718 * tests/data/test-read-dwarf/test-PR26568-1.o.abi: Likewise. 4719 * tests/data/test-read-dwarf/test-PR26568-2.o.abi: Likewise. 4720 * tests/data/test-read-dwarf/test-libaaudio.so.abi: Likewise. 4721 * tests/data/test-read-dwarf/test-libandroid.so.abi: Likewise. 4722 * tests/data/test-read-dwarf/test-suppressed-alias.o.abi: Likewise. 4723 * tests/data/test-read-dwarf/test0.abi: Likewise. 4724 * tests/data/test-read-dwarf/test0.hash.abi: Likewise. 4725 * tests/data/test-read-dwarf/test1.abi: Likewise. 4726 * tests/data/test-read-dwarf/test1.hash.abi: Likewise. 4727 * tests/data/test-read-dwarf/test10-pr18818-gcc.so.abi: Likewise. 4728 * tests/data/test-read-dwarf/test11-pr18828.so.abi: Likewise. 4729 * tests/data/test-read-dwarf/test12-pr18844.so.abi: Likewise. 4730 * tests/data/test-read-dwarf/test13-pr18894.so.abi: Likewise. 4731 * tests/data/test-read-dwarf/test14-pr18893.so.abi: Likewise. 4732 * tests/data/test-read-dwarf/test15-pr18892.so.abi: Likewise. 4733 * tests/data/test-read-dwarf/test16-pr18904.so.abi: Likewise. 4734 * tests/data/test-read-dwarf/test17-pr19027.so.abi: Likewise. 4735 * tests/data/test-read-dwarf/test18-pr19037-libvtkRenderingLIC-6.1.so.abi: Likewise. 4736 * tests/data/test-read-dwarf/test19-pr19023-libtcmalloc_and_profiler.so.abi: Likewise. 4737 * tests/data/test-read-dwarf/test2.so.abi: Likewise. 4738 * tests/data/test-read-dwarf/test2.so.hash.abi: Likewise. 4739 * tests/data/test-read-dwarf/test20-pr19025-libvtkParallelCore-6.1.so.abi: Likewise. 4740 * tests/data/test-read-dwarf/test21-pr19092.so.abi: Likewise. 4741 * tests/data/test-read-dwarf/test22-pr19097-libstdc++.so.6.0.17.so.abi: Likewise. 4742 * tests/data/test-read-dwarf/test3-alias-1.so.hash.abi: Likewise. 4743 * tests/data/test-read-dwarf/test3-alias-2.so.hash.abi: Likewise. 4744 * tests/data/test-read-dwarf/test3-alias-3.so.hash.abi: Likewise. 4745 * tests/data/test-read-dwarf/test3.so.abi: Likewise. 4746 * tests/data/test-read-dwarf/test3.so.hash.abi: Likewise. 4747 * tests/data/test-read-dwarf/test5.o.abi: Likewise. 4748 * tests/data/test-read-dwarf/test5.o.hash.abi: Likewise. 4749 * tests/data/test-read-dwarf/test8-qualified-this-pointer.so.abi: Likewise. 4750 * tests/data/test-read-dwarf/test8-qualified-this-pointer.so.hash.abi: Likewise. 4751 * tests/data/test-read-dwarf/test9-pr18818-clang.so.abi: Likewise. 4752 47532021-10-14 Dodji Seketeli <dodji@redhat.com> 4754 4755 tests/Makefile.am: Fix warning 4756 * tests/Makefile.am: Stop referring to test-dot.cc which is no 4757 more. 4758 47592021-10-14 Dodji Seketeli <dodji@redhat.com> 4760 4761 Add --enable-debug-type-canonicalization to configure 4762 * configure.ac: Support the new 4763 --enable-debug-type-canonicalization option. Define macro 4764 WITH_DEBUG_TYPE_CANONICALIZATION accordingly. 4765 * doc/manuals/abidw.rst: Update documentation. 4766 * include/abg-ir.h 4767 (environment::debug_type_canonicalization_is_on): Declare new 4768 member function if WITH_DEBUG_TYPE_CANONICALIZATION is defined. 4769 * src/abg-ir-priv.h 4770 (environment::priv::{use_canonical_type_comparison_, 4771 debug_type_canonicalization_}): Define new data members if 4772 WITH_DEBUG_TYPE_CANONICALIZATION is defined. 4773 (environment::priv::priv): Initialize them. 4774 * src/abg-ir.cc (try_canonical_compare): When 4775 WITH_DEBUG_TYPE_CANONICALIZATION is defined, perform comparison 4776 using either structural or canonical equality depending on the 4777 environment::priv::use_canonical_type_comparison_ flag. 4778 (environment::debug_type_canonicalization_is_on): Define member 4779 function when WITH_DEBUG_TYPE_CANONICALIZATION is defined. 4780 (compare_types_during_canonicalization): Define new function. 4781 (type_base::get_canonical_type_for): Use the new function 4782 compare_types_during_canonicalization. 4783 * tools/abidw.cc (options::debug_type_canonicalization): Define 4784 new data member. 4785 (option::option): Initialize it. 4786 (display_usage): Add help string for --debug-tc. 4787 (parse_command_line): Support new option --debug-tc or 4788 --debug-type-canonicalization. 4789 (load_corpus_and_write_abixml): Turn type canonicalization 4790 debugging on if --enable-tc is provided. 4791 47922021-10-13 Dodji Seketeli <dodji@redhat.com> 4793 4794 Improve type (de)serialization instability debugging 4795 * include/abg-fwd.h (is_non_canonicalized_type): Declare new 4796 function. 4797 * src/abg-ir-priv.h: Include abg-corpus.h 4798 (environment::priv::pointer_type_id_map_): Fix comment. 4799 (environment::priv::check_canonical_type_from_abixml_during_self_comp): 4800 Define new member function. 4801 * src/abg-ir.cc (unmark_types_as_being_compared): Factorize this 4802 from ... 4803 (return_comparison_result): ... here. Also, add a parameter to 4804 control whether this function should perform the "canonical type 4805 propagation optimization" or not. By default the optimization is 4806 performed. This can be changed for debugging purposes later. 4807 (type_base::get_canonical_type_for): Re-organise the self 4808 comparison debugging process to invoke the new function 4809 environment::priv::check_canonical_type_from_abixml_during_self_comp 4810 each time a canonical type is computed, in addition to doing the 4811 previous verification that was done when no canonical type was 4812 found. Emit better error messages. 4813 (is_non_canonicalized_type): Rename the static function 4814 is_allowed_non_canonicalized_type into this and make it 4815 non-static. 4816 (hash_as_canonical_type_or_constant): Adjust. 4817 * src/abg-reader.cc (maybe_map_type_with_type_id): Define new 4818 static function. 4819 (read_context::maybe_check_abixml_canonical_type_stability): 4820 Ignore types that were not canonicalized. 4821 (read_corpus_from_input): Set the origin of the corpus early 4822 enough so that it's available to the canonicalizer even for types 4823 being canonicalized early. 4824 (MAYBE_MAP_TYPE_WITH_TYPE_ID): Factorize this macro out of ... 4825 (build_type): ... this. That macro is defined only when debugging 4826 self comparison. 4827 (build_array_type_def): Map the read subrange type with its 4828 type-id. 4829 (handle_{type_decl, qualified_type, pointer_type_def, 4830 reference_type_def, function_type, array_type_def,enum_type_decl, 4831 typedef_decl, class_decl, union_decl}): Map the read type with its 4832 type-id. 4833 (load_canonical_type_ids): Ignore non-canonicalized types that 4834 which ids were saved in the type-id file. 4835 * src/abg-writer.cc (write_type_record): Factorize from ... 4836 (write_canonical_type_ids): ... here. Don't forget to write the 4837 type-ids of decl-only types. This can be useful for eye 4838 inspection. 4839 * tools/abidw.cc (load_corpus_and_write_abixml): Wait until the 4840 end of the function before removing the type-id file. This can be 4841 useful for eye inspection. 4842 48432021-10-05 Dodji Seketeli <dodji@redhat.com> 4844 4845 Bump to 2.1 version 4846 * configure.ac: Bump to 2.1 version. 4847 48482021-10-04 Dodji Seketeli <dodji@redhat.com> 4849 4850 Update libabigail web page for 2.0 release 4851 * doc/website/mainpage.txt: Update. 4852 48532021-10-04 Dodji Seketeli <dodji@redhat.com> 4854 4855 Fix tarball upload directory 4856 * Makefile.am: The tarball upload director is really /var/ftp. 4857 48582021-10-04 Dodji Seketeli <dodji@redhat.com> 4859 4860 Update ChangeLog for 2.0 4861 * ChangeLog: Update automatically with make update-changelog. 4862 48632021-10-04 Dodji Seketeli <dodji@redhat.com> 4864 4865 Update NEWS file for 2.0 4866 * NEWS: Update for 2.0 4867 48682021-09-23 Dodji Seketeli <dodji@redhat.com> 4869 4870 Bug 27086 - Consider all C++ virtual destructors when there are many 4871 * src/abg-dwarf-reader.c (build_or_get_fn_decl_if_not_suppressed): 4872 Do not try to re-use a virtual destructor of a class, based on its 4873 signature. Several different of these can have the same 4874 signature, inside a given class. 4875 * tests/data/test-types-stability/PR27086-libstdc++.so.6.0.26: 4876 Add new binary test input. 4877 * tests/data/Makefile.am: Add the new test input to source 4878 distribution. 4879 * tests/test-types-stability.cc (elf_paths): Add the test input 4880 above to this harness. 4881 48822021-09-23 Dodji Seketeli <dodji@redhat.com> 4883 4884 dwarf-reader: Indent 4885 * src/abg-dwarf-reader.cc (finish_member_function_reading): Fix 4886 indentation. 4887 48882021-09-22 Dodji Seketeli <dodji@redhat.com> 4889 4890 Bug 27970 - Duplicated member functions cause spurious self comparison changes 4891 * src/abg-dwarf-reader.cc (fixup_functions_with_no_symbols): When 4892 the function decl is finally associated to its (publicly defined) 4893 ELF symbol, mark it as being exported. 4894 (finish_member_function_reading): Don't risk marking a virtual 4895 function as being non-virtual when updating its properties. 4896 (build_or_get_fn_decl_if_not_suppressed): Update comment. If the 4897 member function is already present in the class, do not create a 4898 new one; rather, reuse the existing one. It's going to be later 4899 updated by finish_member_function_reading. 4900 * tests/data/test-annotate/test18-pr19037-libvtkRenderingLIC-6.1.so.abi: Adjust. 4901 * tests/data/test-annotate/test20-pr19025-libvtkParallelCore-6.1.so.abi: Likewise. 4902 * tests/data/test-diff-filter/test31-pr18535-libstdc++-report-0.txt: Likewise. 4903 * tests/data/test-diff-filter/test31-pr18535-libstdc++-report-1.txt: Likewise. 4904 * tests/data/test-diff-filter/test41-report-0.txt: Likewise. 4905 * tests/data/test-diff-pkg/tbb-4.1-9.20130314.fc22.x86_64--tbb-4.3-3.20141204.fc23.x86_64-report-0.txt: 4906 Likewise. 4907 * tests/data/test-diff-pkg/tbb-4.1-9.20130314.fc22.x86_64--tbb-4.3-3.20141204.fc23.x86_64-report-1.txt: 4908 Likewise. 4909 * tests/data/test-read-dwarf/PR22015-libboost_iostreams.so.abi: Likewise. 4910 * tests/data/test-read-dwarf/test10-pr18818-gcc.so.abi: Likewise. 4911 * tests/data/test-read-dwarf/test18-pr19037-libvtkRenderingLIC-6.1.so.abi: Likewise. 4912 * tests/data/test-read-dwarf/test20-pr19025-libvtkParallelCore-6.1.so.abi: Likewise. 4913 * tests/data/test-read-dwarf/test22-pr19097-libstdc++.so.6.0.17.so.abi: Likewise. 4914 49152021-09-21 Dodji Seketeli <dodji@redhat.com> 4916 4917 abipkgdiff: Do not erase working dirs before we are done using them 4918 * tools/abipkgdiff.cc (compare_prepared_userspace_packages): 4919 Removing working directories "early" prevents e.g, 4920 dwarf_reader::get_soname_of_elf_file from accessing those files. 4921 So do not remove them until the very end. 4922 * tests/data/test-diff-pkg/libxcrypt-4.1.1-6.el8.x86_64--libxcrypt-4.1.1-6.el8.x86_64-output-1.txt: 4923 Adjust. 4924 49252021-09-14 Dodji Seketeli <dodji@redhat.com> 4926 4927 Bug 28316 - Failure to represent typedef named anonymous enums 4928 * include/abg-fwd.h (scope_anonymous_or_typedef_named) 4929 (is_anonymous_or_typedef_named): Declare new functions. 4930 * include/abg-ir.h (decl_base::set_has_anonymous_parent): Remove 4931 declaration. 4932 (decl_base::{get,set}_naming_typedef): Declare new member 4933 functions. 4934 * src/abg-ir.cc (update_qualified_name): Define static function. 4935 (decl_base::priv::naming_typedef_): Define new data member. 4936 (decl_base::priv::has_anonymous_parent_): Remove data member. 4937 (decl_base::priv::priv): Adjust constructor. 4938 (decl_base::get_has_anonymous_parent): Rather than storing a flag 4939 for this, dynamically look at if the scope is anonymous. 4940 (decl_base::set_has_anonymous_parent): Remove definition. 4941 (decl_base::{get,set}_naming_typedef): Define new member 4942 functions. 4943 (scope_anonymous_or_typedef_named) 4944 (is_anonymous_or_typedef_named): Define new functions. 4945 (get_decl_name_for_comparison): Define new sub-routine for the 4946 decl_base overload of equals. 4947 (equals): In the overload for decl_base, use the new 4948 get_decl_name_for_comparison. It helps to ensure that all 4949 anonymous decls of the same kind have the same name for the 4950 purpose of comparison. It also ensures that non anonymous decls 4951 that are part of anonymous scopes should be compared only by 4952 looking at their non-qualified names. In the overload for 4953 class_or_union, adjust. 4954 (scope_decl::add_member_decl): No more need to flag the fast that 4955 the parent scope is anonymous here. 4956 (get_debug_representation): Fix a thinko. 4957 (class_or_union::get_naming_typedef): Remove member function as 4958 it's now handled by decl_base::get_naming_typedef. 4959 * src/abg-dwarf-reader.cc (build_typedef_type): When a typedef is 4960 a naming typedef, then mark the named decl as being typedef-named. 4961 (maybe_canonicalize_type): Delay canonicalization of anonymous 4962 types because they can be typedef-named later. 4963 * src/abg-reader.cc (read_naming_typedef_id_string) 4964 (maybe_set_naming_typedef): Define new static function. 4965 (build_class_decl): Use it here, rather than reading the 4966 "naming-typedef-id" by hand. 4967 (build_enum_type_decl, build_union_decl): Read the 4968 "naming-typedef-id" property. 4969 * src/abg-writer.cc (write_naming_typedef): Make this accept 4970 decl_base_sptr, rather than just class_decl_sptr. 4971 (write_enum_type_decl): Write the naming-typedef-id property if 4972 needed. 4973 * tests/data/test-abidiff-exit/test-PR28316-report.txt: New test 4974 reference output. 4975 * tests/data/test-abidiff-exit/test-PR28316-v{0,1}.cc: Source code 4976 of new binary test input. 4977 * tests/data/test-abidiff-exit/test-PR28316-v{0,1}.o: New binary 4978 test input files. 4979 * tests/data/Makefile.am: Add the new test files to the source 4980 distribution. 4981 * tests/test-abidiff-exit.cc: Add the new test files above to this 4982 harness. 4983 * tests/data/test-annotate/libtest23.so.abi: Adjust. 4984 * tests/data/test-annotate/libtest24-drop-fns-2.so.abi: Likewise. 4985 * tests/data/test-annotate/libtest24-drop-fns.so.abi: Likewise. 4986 * tests/data/test-annotate/test13-pr18894.so.abi: Likewise. 4987 * tests/data/test-annotate/test14-pr18893.so.abi: Likewise. 4988 * tests/data/test-annotate/test15-pr18892.so.abi: Likewise. 4989 * tests/data/test-annotate/test21-pr19092.so.abi: Likewise. 4990 * tests/data/test-diff-dwarf/test15-enum-report.txt: Likewise. 4991 * tests/data/test-diff-filter/test19-enum-report-1.txt: Likewise. 4992 * tests/data/test-diff-filter/test30-pr18904-rvalueref-report0.txt: 4993 Likewise. 4994 * tests/data/test-diff-filter/test30-pr18904-rvalueref-report1.txt: 4995 Likewise. 4996 * tests/data/test-diff-filter/test30-pr18904-rvalueref-report2.txt: 4997 Likewise. 4998 * tests/data/test-diff-filter/test35-pr18754-no-added-syms-report-0.txt: 4999 Likewise. 5000 * tests/data/test-diff-pkg/PR24690/PR24690-report-0.txt: Likewise. 5001 * tests/data/test-diff-pkg/nss-3.23.0-1.0.fc23.x86_64-report-0.txt: 5002 Likewise. 5003 * tests/data/test-diff-pkg/spice-server-0.12.4-19.el7.x86_64-0.12.8-1.el7.x86_64-report-0.txt: 5004 Likewise. 5005 * tests/data/test-diff-pkg/spice-server-0.12.4-19.el7.x86_64-0.12.8-1.el7.x86_64-report-1.txt: 5006 Likewise. 5007 * tests/data/test-diff-pkg/spice-server-0.12.4-19.el7.x86_64-0.12.8-1.el7.x86_64-report-2.txt: 5008 Likewise. 5009 * tests/data/test-diff-pkg/spice-server-0.12.4-19.el7.x86_64-0.12.8-1.el7.x86_64-report-3.txt: 5010 Likewise. 5011 * tests/data/test-read-dwarf/PR22015-libboost_iostreams.so.abi: 5012 Likewise. 5013 * tests/data/test-read-dwarf/PR22122-libftdc.so.abi: Likewise. 5014 * tests/data/test-read-dwarf/PR25007-sdhci.ko.abi: Likewise. 5015 * tests/data/test-read-dwarf/PR25042-libgdbm-clang-dwarf5.so.6.0.0.abi: 5016 Likewise. 5017 * tests/data/test-read-dwarf/libtest23.so.abi: Likewise. 5018 * tests/data/test-read-dwarf/libtest24-drop-fns-2.so.abi: 5019 Likewise. 5020 * tests/data/test-read-dwarf/libtest24-drop-fns.so.abi: Likewise. 5021 * tests/data/test-read-dwarf/test-libaaudio.so.abi: Likewise. 5022 * tests/data/test-read-dwarf/test-libandroid.so.abi: Likewise. 5023 * tests/data/test-read-dwarf/test10-pr18818-gcc.so.abi: Likewise. 5024 * tests/data/test-read-dwarf/test11-pr18828.so.abi: Likewise. 5025 * tests/data/test-read-dwarf/test12-pr18844.so.abi: Likewise. 5026 * tests/data/test-read-dwarf/test13-pr18894.so.abi: Likewise. 5027 * tests/data/test-read-dwarf/test14-pr18893.so.abi: Likewise. 5028 * tests/data/test-read-dwarf/test15-pr18892.so.abi: Likewise. 5029 * tests/data/test-read-dwarf/test16-pr18904.so.abi: Likewise. 5030 * tests/data/test-read-dwarf/test21-pr19092.so.abi: Likewise. 5031 * tests/data/test-read-dwarf/test22-pr19097-libstdc++.so.6.0.17.so.abi: 5032 Likewise. 5033 * tests/data/test-read-dwarf/test9-pr18818-clang.so.abi: Likewise. 5034 50352021-09-17 Dodji Seketeli <dodji@redhat.com> 5036 5037 abipkgdiff: Fix showing added/removed files 5038 * tools/abipkgdiff.cc (compare_prepared_userspace_packages): Do 5039 not return early if there are no binaries to compare. Also add 5040 more verbose messages. 5041 * tests/data/test-diff-pkg/libxcrypt-4.1.1-6.el8.x86_64--libxcrypt-4.1.1-6.el8.x86_64-output-1.txt: 5042 New reference output file. 5043 * tests/data/test-diff-pkg/libxcrypt-4.1.1-6.el8.x86_64--libxcrypt-compat-4.4.18-3.el9.x86_64-report-1.txt: 5044 New reference output file. 5045 * tests/data/test-diff-pkg/libxcrypt-4.1.1-6.el8.x86_64.rpm: New 5046 binary input file. 5047 * tests/data/test-diff-pkg/libxcrypt-4.4.18-3.el9.x86_64.rpm: Likewise. 5048 * tests/data/test-diff-pkg/libxcrypt-compat-4.4.18-3.el9.x86_64.rpm: Likewise. 5049 * tests/data/test-diff-pkg/libxcrypt-compat-debuginfo-4.4.18-3.el9.x86_64.rpm: Likewise. 5050 * tests/data/test-diff-pkg/libxcrypt-debuginfo-4.1.1-6.el8.x86_64.rpm: Likewise. 5051 * tests/data/test-diff-pkg/libxcrypt-debuginfo-4.4.18-3.el9.x86_64.rpm: Likewise. 5052 * tests/data/Makefile.am: Add the new testing files to source 5053 distribution. 5054 * tests/test-diff-pkg.cc (in_out_specs): Add these binary packages 5055 to this testing harness. 5056 50572021-09-09 Dodji Seketeli <dodji@redhat.com> 5058 5059 RHBZ1944102 - self comparing ABI of protobuf-3.14.0-2.el9 failed 5060 * src/abg-reader.cc (read_size_and_alignment): Use atoll to read 5061 long long values, not atoi. 5062 50632021-09-08 Dodji Seketeli <dodji@redhat.com> 5064 5065 RHBZ1951496 - ir: Acknowledge that "void type" is not canonicalized 5066 * src/abg-ir.cc (is_allowed_non_canonicalized_type): Define new 5067 static function. 5068 (hash_as_canonical_type_or_constant): Use it. 5069 50702021-09-08 Dodji Seketeli <dodji@redhat.com> 5071 5072 writer: Avoid sigsev on types with no translation unit 5073 * src/abg-writer.cc (referenced_type_should_be_emitted): Don't 5074 crash on types with no associated translation unit. 5075 50762021-09-08 Dodji Seketeli <dodji@redhat.com> 5077 5078 xml-reader: Get back to original way of building qualified types 5079 * src/abg-reader.cc (build_qualified_type_decl): Create the 5080 underlying type first, then create the qualified type. 5081 This helps fix bug 5082 50832021-09-08 Dodji Seketeli <dodji@redhat.com> 5084 5085 ir: Fix canonical type propagation cancelling 5086 * src/abg-ir.cc (return_comparison_result): When the comparison of 5087 the current type sub-object fails, clear the potentially 5088 propagated canonical type and remove it from the set of types with 5089 non confirmed propagated canonical types. 5090 50912021-09-08 Dodji Seketeli <dodji@redhat.com> 5092 5093 ir: Avoid infinite loop during type canonicalization 5094 * src/abg-ir-priv.h 5095 (environment::priv::collect_types_that_depends_on): Don't try to 5096 collect a type that has already been collected. 5097 50982021-09-07 Dodji Seketeli <dodji@redhat.com> 5099 5100 writer: escape enum linkage name in abixml 5101 * src/abg-writer.cc (write_enum_type_decl): Escape linkage name. 5102 51032021-09-07 Dodji Seketeli <dodji@redhat.com> 5104 5105 RHBZ-1944096 - assertion failure during self comparison of systemd 5106 * src/abg-reader.cc (build_enum_type_decl): When strtoll detects 5107 an underflow or overflo, it sets errno to ERANGE. So take that 5108 into account. 5109 51102021-09-03 Dodji Seketeli <dodji@redhat.com> 5111 5112 Bug 27985 - abidiff: bad array types in report 5113 * src/abg-ir.cc (array_type_def::get_qualified_name): Use the 5114 cache for temporary qualified names when the type is not yet 5115 canonicalized. That way, the cache for (non-temporary) qualified 5116 names is used only for canonicalized types. 5117 * tests/data/test-abidiff/test-PR27985-report.txt: Reference 5118 output for the new test. 5119 * tests/data/test-abidiff/test-PR27985-v{0,1}.c: Source code for 5120 the new test binary inputs. 5121 * tests/data/test-abidiff/test-PR27985-v{0,1}.o: New test binary inputs. 5122 * tests/data/test-abidiff/test-PR27985-v{0,1}.o.abi: New test 5123 abixml input. 5124 * tests/data/Makefile.am: Add the new test materials above to 5125 source distribution. 5126 * tests/test-abidiff.cc (specs): Add the tests above to the harness. 5127 * tests/data/test-diff-pkg/nss-3.23.0-1.0.fc23.x86_64-report-0.txt: 5128 Adjust. 5129 * tests/data/test-abidiff-exit/qualifier-typedef-array-report-1.txt: 5130 Adjust. 5131 51322021-08-27 Giuliano Procida <gprocida@google.com> 5133 5134 abg-writer: faster referenced type emission tests 5135 * src/abg-writer.cc (write_translation_unit): Reorder 5136 referenced type emission tests for efficiency. Consolidate 5137 related comments. 5138 Reviewed-by: Matthias Maennich <maennich@google.com> 5139 51402021-08-10 Dodji Seketeli <dodji@redhat.com> 5141 5142 RHBZ 1925886 - Compare anonymous types without qualified names 5143 * include/abg-fwd.h (is_anonymous_type): Constify this function. 5144 * src/abg-ir.cc (equals): In the overload for decl_base, do not 5145 take scope of anonymous types into account. In the overload for 5146 array_type_def do not peel of typedefs. This is not directly 5147 related to anonymous types, but it make comparison more robust 5148 against naming typedefs used for anonymous types in array 5149 elements. 5150 (get_type_name): Do not take into account the scope of anonymous 5151 types when building internal representation of types. Note that 5152 the internal representation is what is used for canonicalization. 5153 This means that all anonymous types are compared against each 5154 others during type canonicalization. 5155 * src/abg-reader.cc (build_class_decl): Do not try to re-use 5156 anonymous types, just like we already do for DWARF. 5157 * tests/data/test-annotate/test17-pr19027.so.abi: Adjust. 5158 * tests/data/test-annotate/test18-pr19037-libvtkRenderingLIC-6.1.so.abi: 5159 Likewise. 5160 * tests/data/test-annotate/test19-pr19023-libtcmalloc_and_profiler.so.abi: 5161 Likewise. 5162 * tests/data/test-diff-filter/test31-pr18535-libstdc++-report-0.txt: 5163 Likewise. 5164 * tests/data/test-diff-filter/test31-pr18535-libstdc++-report-1.txt: 5165 Likewise. 5166 * tests/data/test-read-dwarf/PR22122-libftdc.so.abi: Likewise. 5167 * tests/data/test-read-dwarf/test-libaaudio.so.abi: Likewise. 5168 * tests/data/test-read-dwarf/test-libandroid.so.abi: Likewise. 5169 * tests/data/test-read-dwarf/test10-pr18818-gcc.so.abi: Likewise. 5170 * tests/data/test-read-dwarf/test11-pr18828.so.abi: Likewise. 5171 * tests/data/test-read-dwarf/test12-pr18844.so.abi: Likewise. 5172 * tests/data/test-read-dwarf/test16-pr18904.so.abi: Likewise. 5173 * tests/data/test-read-dwarf/test17-pr19027.so.abi: Likewise. 5174 * tests/data/test-read-dwarf/test18-pr19037-libvtkRenderingLIC-6.1.so.abi: 5175 Likewise. 5176 * tests/data/test-read-dwarf/test19-pr19023-libtcmalloc_and_profiler.so.abi: 5177 Likewise. 5178 * tests/data/test-read-dwarf/test22-pr19097-libstdc++.so.6.0.17.so.abi: 5179 Likewise. 5180 * tests/data/test-read-dwarf/test9-pr18818-clang.so.abi: Likewise. 5181 51822021-07-29 Dodji Seketeli <dodji@redhat.com> 5183 5184 Bug 27236 - Don't forget to emit some referenced types 5185 * include/abg-writer.h (write_translation_unit): Add a new 5186 parameter that says if we are emitting the last TU. 5187 * src/abg-writer.cc (write_translation_unit::{type_is_emitted, 5188 decl_only_type_is_emitted}): Constify these methods. 5189 (write_context::has_non_emitted_referenced_types): Define new 5190 member function using the const methods above. 5191 (write_translation_unit): When emitting the last TU, emit all the 5192 referenced types. 5193 (write_corpus): Set signal when emitting the last translation 5194 unit. 5195 51962021-07-29 Dodji Seketeli <dodji@redhat.com> 5197 5198 Bug 27236 - Allow updating classes from abixml 5199 * src/abg-reader.cc (build_class_decl): Keep going when the class 5200 has already been built. The rest of the code knows how to add new 5201 stuff. 5202 * tests/data/test-abidiff/test-PR18791-report0.txt: Adjust. 5203 52042021-07-29 Dodji Seketeli <dodji@redhat.com> 5205 5206 Bug 27236 - Fix the canonical type propagation optimization 5207 * include/abg-ir.h (pointer_set): This typedef is now for an 5208 unordered_set<uintptr_t> rather than an unordered_set<size_t>. 5209 (environment::priv_): Make this public so that code in free form 5210 function from abg-ir.cc can access it. 5211 * src/abg-ir-priv.h (struct type_base::priv): Move this private 5212 structure here, from abg-ir.cc. 5213 (type_base::priv::{depends_on_recursive_type_, 5214 canonical_type_propagated_}): Added these two new data members. 5215 (type_base::priv::priv): Initialize the two new data members. 5216 (type_base::priv::{depends_on_recursive_type, 5217 set_depends_on_recursive_type, 5218 set_does_not_depend_on_recursive_type, canonical_type_propagated, 5219 set_canonical_type_propagated, clear_propagated_canonical_type}): 5220 Define new member functions. 5221 (struct environment::priv): Move this struct here, from abg-ir.cc. 5222 (environment::priv::{types_with_non_confirmed_propagated_ct_, 5223 left_type_comp_operands_, right_type_comp_operands_}): New data 5224 members. 5225 (environment::priv::{mark_dependant_types, 5226 mark_dependant_types_compared_until, confirm_ct_propagation, 5227 collect_types_that_depends_on, cancel_ct_propagation, 5228 remove_from_types_with_non_confirmed_propagated_ct}): New member 5229 functions. 5230 * src/abg-ir.cc (struct environment::priv, struct) 5231 (type_base::priv, struct class_or_union::priv): Move these struct 5232 to include/abg-ir-priv.h. 5233 (push_composite_type_comparison_operands) 5234 (pop_composite_type_comparison_operands) 5235 (mark_dependant_types_compared_until) 5236 (maybe_cancel_propagated_canonical_type): Define new functions. 5237 (notify_equality_failed, mark_types_as_being_compared): Re-indent. 5238 (is_comparison_cycle_detected, return_comparison_result): Define 5239 new function templates. 5240 (RETURN_TRUE_IF_COMPARISON_CYCLE_DETECTED): Define new macro. 5241 (equals(const function_type& l, const function_type& r)): Redefine 5242 the RETURN macro using the new return_comparison_result function 5243 template. Use the new RETURN_TRUE_IF_COMPARISON_CYCLE_DETECTED 5244 and mark_types_as_being_compared functions. 5245 (equals(const class_or_union& l, const class_or_union&, change_kind*)): 5246 Likewise. 5247 (equals(const class_decl& l, const class_decl&, change_kind*)): 5248 Likewise. Because this uses another equal() function to compare 5249 the class_or_union part the type, ensure that no canonical type 5250 propagation occurs at that point. 5251 (types_are_being_compared): Remove as it's not used anymore. 5252 (maybe_propagate_canonical_type): Use the new 5253 environment::priv::propagate_ct() function here. 5254 (method_matches_at_least_one_in_vector): Ensure the 5255 right-hand-side operand of the equality stays on the right. This 5256 is important because the equals() functions expect that. 5257 * src/abg-reader.cc (build_type): Ensure all types are 5258 canonicalized. 5259 * tests/data/test-diff-dwarf/PR25058-liblttng-ctl-report-1.txt: 5260 Adjust. 5261 * tests/data/test-diff-pkg/nss-3.23.0-1.0.fc23.x86_64-report-0.txt: 5262 Likewise. 5263 * tests/data/test-diff-pkg/spice-server-0.12.4-19.el7.x86_64-0.12.8-1.el7.x86_64-report-2.txt: 5264 Likewise. 5265 * tests/data/test-diff-pkg/tbb-4.1-9.20130314.fc22.x86_64--tbb-4.3-3.20141204.fc23.x86_64-report-0.txt: 5266 Likewise. 5267 * tests/data/test-diff-pkg/tbb-4.1-9.20130314.fc22.x86_64--tbb-4.3-3.20141204.fc23.x86_64-report-1.txt: 5268 Likewise. 5269 * tests/data/test-read-dwarf/test-libaaudio.so.abi: Likewise. 5270 52712021-06-30 Dodji Seketeli <dodji@redhat.com> 5272 5273 Bug 27995 - Self comparison error from abixml file 5274 * doc/manuals/abidiff.rst: Add documentation for the --debug 5275 option. 5276 * src/abg-ir.cc (equals): In the overload for decl_base consider 5277 the internal version of qualified decl name. In the overload for 5278 pointer_type_def do not peel typedefs off from the compared 5279 pointed-to types. In the overload for typedef_decl compare the 5280 typedef as a decl as well. In the overload for var_decl, compare 5281 variables that have the same ELF symbols without taking into 5282 account their qualified name, rather than their name. Stop 5283 comparing data member without considering their names. 5284 In the overload for class_or_union, when a decl-only class that is 5285 ODR-relevant is compared against another type, assume that 5286 equality if names are equal. This is useful in environments where 5287 some TUs are ODR-relevant and others aren't. 5288 (*::get_pretty_representation): Update doxygen comments. 5289 (enum_type_decl::get_pretty_representation): Return an internal 5290 pretty representation that is stable across all anonymous enums. 5291 (var_decl::get_anon_dm_reliable_name): Use the non-internal pretty 5292 representation for anonymous data members. 5293 (function_type::priv::temp_internal_cached_name_): New data 5294 member. 5295 (function_type::get_cached_name): Cache the internal name after 5296 the function type is canonicalized. Make sure internal name and 5297 non-internal name are cached separately. 5298 (class_or_union::find_anonymous_data_member): Look for the anonymous 5299 data member by looking at its non-internal name. 5300 ({class, union}_decl::get_pretty_representation): Use something like "class 5301 __anonymous_{union,struct}__" for all anonymous classes, so that they can 5302 all be compared against each other during type canonicalization. 5303 (type_has_sub_type_changes): Use non-internal pretty 5304 representation. 5305 (hash_type_or_decl, function_decl_is_less_than:): Use internal 5306 pretty representation for comparison here. 5307 * src/abg-reader.cc (read_context::maybe_canonicalize_type): Don't 5308 early canonicalize array types. 5309 * src/abg-writer.cc (annotate): Use non-internal pretty 5310 representation. 5311 * tests/data/test-diff-filter/test-PR27995-report-0.txt: New 5312 reference report. 5313 * tests/data/test-diff-filter/test-PR27995.abi: New test input 5314 abixml file. 5315 * tests/data/Makefile.am: Add test-PR27995.abi, 5316 test-PR27995-report-0.txt to the source distribution. 5317 * tests/data/test-annotate/libtest23.so.abi: Adjust. 5318 * tests/data/test-diff-dwarf/test6-report.txt: Adjust. 5319 * tests/data/test-diff-filter/test31-pr18535-libstdc++-report-0.txt: Adjust. 5320 * tests/data/test-diff-filter/test31-pr18535-libstdc++-report-1.txt: Adjust. 5321 * tests/data/test-diff-filter/test41-report-0.txt: Adjust. 5322 * tests/data/test-diff-filter/test43-decl-only-def-change-leaf-report-0.txt: Adjust. 5323 * tests/data/test-diff-filter/test8-report.txt: Adjust. 5324 * tests/data/test-diff-pkg/libICE-1.0.6-1.el6.x86_64.rpm--libICE-1.0.9-2.el7.x86_64.rpm-report-0.txt: 5325 Adjust. 5326 * tests/data/test-diff-pkg/spice-server-0.12.4-19.el7.x86_64-0.12.8-1.el7.x86_64-report-0.txt: 5327 Adjust. 5328 * tests/data/test-diff-pkg/spice-server-0.12.4-19.el7.x86_64-0.12.8-1.el7.x86_64-report-2.txt: 5329 Adjust. 5330 * tests/data/test-diff-pkg/spice-server-0.12.4-19.el7.x86_64-0.12.8-1.el7.x86_64-report-3.txt: 5331 Adjust. 5332 * tests/data/test-diff-pkg/tbb-4.1-9.20130314.fc22.x86_64--tbb-4.3-3.20141204.fc23.x86_64-report-0.txt: 5333 Adjust. 5334 * tests/data/test-diff-pkg/tbb-4.1-9.20130314.fc22.x86_64--tbb-4.3-3.20141204.fc23.x86_64-report-1.txt: 5335 Adjust. 5336 * tests/data/test-diff-suppr/test39-opaque-type-report-0.txt: Adjust. 5337 * tests/data/test-read-dwarf/PR22015-libboost_iostreams.so.abi: Adjust. 5338 * tests/data/test-read-dwarf/PR22122-libftdc.so.abi: Adjust. 5339 * tests/data/test-read-dwarf/libtest23.so.abi: Adjust. 5340 * tests/data/test-read-dwarf/test-libandroid.so.abi: Adjust. 5341 * tests/data/test-read-dwarf/test11-pr18828.so.abi: Adjust. 5342 * tests/data/test-read-dwarf/test12-pr18844.so.abi: Adjust. 5343 * tests/data/test-read-dwarf/test9-pr18818-clang.so.abi: Adjust. 5344 * tests/test-diff-filter.cc (in_out_specs): Add the 5345 test-PR27995.abi to the test harness. 5346 * tools/abidiff.cc (options::do_debug): New data member. 5347 (options::options): Initialize it. 5348 (parse_command_line): Parse --debug. 5349 (main): Activate self comparison debug if the user provided 5350 --debug. 5351 53522021-06-25 Dodji Seketeli <dodji@redhat.com> 5353 5354 ir: Tighten type comparison optimization for Linux kernel binaries 5355 * src/abg-ir.cc (types_defined_same_linux_kernel_corpus_public): 5356 Ensure that anonymous classes with naming typedefs have identical 5357 typedef names. 5358 53592021-06-25 Dodji Seketeli <dodji@redhat.com> 5360 5361 ir: Tighten the test for anonymous data member 5362 * src/abg-ir.cc: (is_anonymous_data_member): Consider 5363 decl_base::get_is_anonymous as well. 5364 53652021-06-24 Dodji Seketeli <dodji@redhat.com> 5366 5367 ir: Improve the debugging facilities 5368 * src/abg-ir.cc (maybe_compare_as_member_decls): Add a missing 5369 ABG_RETURN 5370 (get_debug_representation): Display the name of class and enums, 5371 not their pretty representation. 5372 53732021-07-10 Giuliano Procida <gprocida@google.com> 5374 5375 PR28060 - Invalid offset for bitfields 5376 * src/abg-dwarf-reader.cc (read_and_convert_DW_at_bit_offset): 5377 Update documentation. 5378 (die_member_offset): Treat DW_AT_bit_offset as an optional 5379 adjustment to DW_AT_data_member_location. 5380 * tests/data/test-annotate/test13-pr18894.so.abi: Update. 5381 * tests/data/test-annotate/test15-pr18892.so.abi: Update. 5382 * tests/data/test-annotate/test17-pr19027.so.abi: Update. 5383 * tests/data/test-annotate/test19-pr19023-libtcmalloc_and_profiler.so.abi: 5384 Update. 5385 * tests/data/test-annotate/test21-pr19092.so.abi: Update. 5386 * tests/data/test-diff-dwarf-abixml/PR25409-librte_bus_dpaa.so.20.0.abi: 5387 Regenerate. 5388 * tests/data/test-diff-pkg/libcdio-0.94-1.fc26.x86_64--libcdio-0.94-2.fc26.x86_64-report.1.txt: 5389 Report now empty. 5390 * tests/data/test-read-dwarf/PR25007-sdhci.ko.abi: Update. 5391 * tests/data/test-read-dwarf/PR25042-libgdbm-clang-dwarf5.so.6.0.0.abi: 5392 Update. 5393 * tests/data/test-read-dwarf/test13-pr18894.so.abi: Update. 5394 * tests/data/test-read-dwarf/test15-pr18892.so.abi: Update. 5395 * tests/data/test-read-dwarf/test17-pr19027.so.abi: Update. 5396 * tests/data/test-read-dwarf/test19-pr19023-libtcmalloc_and_profiler.so.abi: 5397 Update. 5398 * tests/data/test-read-dwarf/test21-pr19092.so.abi: Update. 5399 * tests/data/test-read-dwarf/test22-pr19097-libstdc++.so.6.0.17.so.abi: 5400 Update. 5401 54022021-07-07 Giuliano Procida <gprocida@google.com> 5403 5404 abg-ir.h: add declaration of operator<< for elf_symbol::visibility 5405 * include/abg-ir.h (operator<<(elf_symbol::visibility): Add 5406 declaration. 5407 54082021-07-06 Giuliano Procida <gprocida@google.com> 5409 5410 ir: remove "is Linux string constant" property from elf_symbol 5411 * include/abg-ir.h (elf_symbol::elf_symbol): Drop 5412 is_linux_string_cst argument. 5413 (elf_symbol::create): Likewise. 5414 (elf_symbol::get_is_linux_string_cst): Drop method. 5415 * src/abg-dwarf-reader.cc (lookup_symbol_from_sysv_hash_tab): 5416 Remove code that gets the index of the __ksymtab_strings 5417 section. Drop corresponding elf_symbol::create argument. 5418 (lookup_symbol_from_gnu_hash_tab): Likewise. 5419 (lookup_symbol_from_symtab): Likewise. 5420 (create_default_fn_sym): Drop false is_linux_string_cst 5421 argument to elf_symbol::create. 5422 * src/abg-ir.cc (elf_symbol::priv::is_linux_string_cst_): Drop 5423 member variable. 5424 (elf_symbol::priv default ctor): Drop initialisation of 5425 is_linux_string_cst_. 5426 (elf_symbol::priv normal ctor): Drop is_linux_string_cst 5427 argument and corresponding is_linux_string_cst_ 5428 initialisation. 5429 (elf_symbol::elf_symbol ctor): Drop is_linux_string_cst 5430 argument and corresponding forwarding to priv ctor. 5431 (elf_symbol::create): Drop is_linux_string_cst argument and 5432 corresponding forwarding to ctor. 5433 (elf_symbol::get_is_linux_string_cst): Drop method. 5434 * src/abg-reader.cc (build_elf_symbol): Drop false 5435 is_linux_string_cst argument to elf_symbol::create. 5436 * src/abg-symtab-reader.cc (symtab::load): Likewise. 5437 54382021-07-05 Matthias Maennich <maennich@google.com> 5439 5440 Consistently use std::unique_ptr for private implementations (pimpl) 5441 * include/abg-comparison.h (diff_maps): use unique_ptr for priv_ 5442 (diff_context): Likewise. 5443 (diff_traversable_base): Likewise. 5444 (type_diff_base): Likewise. 5445 (decl_diff_base): Likewise. 5446 (distinct_diff): Likewise. 5447 (var_diff): Likewise. 5448 (pointer_diff): Likewise. 5449 (reference_diff): Likewise. 5450 (array_diff): Likewise. 5451 (qualified_type_diff): Likewise. 5452 (enum_diff): Likewise. 5453 (class_or_union_diff): Likewise. 5454 (class_diff): Likewise. 5455 (base_diff): Likewise. 5456 (scope_diff): Likewise. 5457 (fn_parm_diff): Likewise. 5458 (function_type_diff): Likewise. 5459 (function_decl_diff): Likewise. 5460 (typedef_diff): Likewise. 5461 (translation_unit_diff): Likewise. 5462 (diff_stats): Likewise. 5463 (diff_node_visitor): Likewise. 5464 * include/abg-corpus.h (corpus): Likewise. 5465 (exported_decls_builder): Likewise. 5466 (corpus_group): Likewise. 5467 * include/abg-ini.h (property): Likewise. 5468 (property_value): Likewise. 5469 (string_property_value): Likewise. 5470 (list_property_value): Likewise. 5471 (tuple_property_value): Likewise. 5472 (simple_property): Likewise. 5473 (list_property): Likewise. 5474 (tuple_property): Likewise. 5475 (config): Likewise. 5476 (section): Likewise. 5477 (function_call_expr): Likewise. 5478 * include/abg-interned-str.h (interned_string_pool): Likewise. 5479 * include/abg-ir.h (environment): Likewise. 5480 (location_manager): Likewise. 5481 (type_maps): Likewise. 5482 (translation_unit): Likewise. 5483 (elf_symbol::version): Likewise. 5484 (type_or_decl_base): Likewise. 5485 (scope_decl): Likewise. 5486 (qualified_type_def): Likewise. 5487 (pointer_type_def): Likewise. 5488 (array_type_def): Likewise. 5489 (subrange_type): Likewise. 5490 (enum_type_decl): Likewise. 5491 (enum_type_decl::enumerator): Likewise. 5492 (typedef_decl): Likewise. 5493 (dm_context_rel): Likewise. 5494 (var_decl): Likewise. 5495 (function_decl::parameter): Likewise. 5496 (function_type): Likewise. 5497 (method_type): Likewise. 5498 (template_decl): Likewise. 5499 (template_parameter): Likewise. 5500 (type_tparameter): Likewise. 5501 (non_type_tparameter): Likewise. 5502 (template_tparameter): Likewise. 5503 (type_composition): Likewise. 5504 (function_tdecl): Likewise. 5505 (class_tdecl): Likewise. 5506 (class_decl::base_spec): Likewise. 5507 (ir_node_visitor): Likewise. 5508 * include/abg-suppression.h (suppression_base): Likewise. 5509 (type_suppression::insertion_range): Likewise. 5510 (type_suppression::insertion_range::boundary): Likewise. 5511 (type_suppression::insertion_range::integer_boundary): Likewise. 5512 (type_suppression::insertion_range::fn_call_expr_boundary): Likewise. 5513 (function_suppression): Likewise. 5514 (function_suppression::parameter_spec): Likewise. 5515 (file_suppression): Likewise. 5516 * include/abg-tools-utils.h (temp_file): Likewise. 5517 (timer): Likewise. 5518 * include/abg-traverse.h (traversable_base): Likewise. 5519 * include/abg-workers.h (queue): Likewise. 5520 * src/abg-comparison.cc (diff_context): add default destructor. 5521 (diff_maps): Likewise. 5522 (corpus_diff): Likewise. 5523 (diff_node_visitor): Likewise. 5524 (class_or_union_diff::get_priv): adjust return type. 5525 (class_diff::get_priv): adjust return type. 5526 * src/abg-corpus.cc (corpus): add default destructor. 5527 * src/abg-ir.cc (location_manager): Likewise. 5528 (type_maps): Likewise. 5529 (elf_symbol::version): Likewise. 5530 (array_type_def::subrange_type): Likewise. 5531 (enum_type_decl::enumerator): Likewise. 5532 (function_decl::parameter): Likewise. 5533 (class_decl::base_spec): Likewise. 5534 (ir_node_visitor): Likewise. 5535 55362021-06-14 Matthias Maennich <maennich@google.com> 5537 5538 symtab-reader: add support for binaries compiled with CFI 5539 * src/abg-symtab-reader.cc (symtab::load_): use new 5540 add_alternative_address_lookups method. 5541 (add_alternative_address_lookups): New method. 5542 * src/abg-symtab-reader.h (add_alternative_address_lookups): new 5543 function declaration. 5544 * tests/data/test-read-dwarf/test-libaaudio.so: New test data. 5545 * tests/data/test-read-dwarf/test-libaaudio.so.abi: New test data. 5546 * tests/data/Makefile.am: Add the two new tests input to source 5547 distribution. 5548 * tests/test-read-dwarf.cc: New test case. 5549 Reported-by: Dan Albert <danalbert@google.com> 5550 Reviewed-by: Giuliano Procida <gprocida@google.com> 5551 55522021-06-14 Matthias Maennich <maennich@google.com> 5553 5554 elf-helpers: refactor find_symbol_table_section 5555 * src/abg-elf-helpers.cc(find_section): New overload. 5556 (find_symtab_section): New function. 5557 (find_dynsym_section): New function. 5558 (find_symbol_table_section): Use new find_*_section functions. 5559 * src/abg-elf-helpers.h(find_section): New overload declaration. 5560 (find_symtab_section): New function declaration. 5561 (find_dynsym_section): New function declaration. 5562 Reviewed-by: Giuliano Procida <gprocida@google.com> 5563 55642021-06-18 Dodji Seketeli <dodji@redhat.com> 5565 5566 Bug 27980 - Fix updating of type scope upon type canonicalization 5567 * src/abg-ir.cc (canonicalize): Update the 5568 scope_decl::get_canonical_types() of canonical type of the 5569 containing type of the newly canonicalized type. 5570 * src/abg-writer.cc (write_union_decl): Write the canonical types 5571 contained in the current union scope, just like we do for classes. 5572 * tests/data/test-read-dwarf/test16-pr18904.so.abi: Adjust. 5573 * tests/data/test-types-stability/pr27980-libc.so: New binary 5574 input file. 5575 * tests/data/Makefile.am: Add the test input file above to source 5576 distribution. 5577 * tests/test-types-stability.cc (elf_paths): Add the new test 5578 input file to this test harness. 5579 55802021-05-27 Giuliano Procida <gprocida@google.com> 5581 5582 abg-reader: Create a fresh corpus object per corpus 5583 * src/abg-reader.cc (read_corpus_from_input): Always create a 5584 fresh corpus object for each abi-corpus XML element. 5585 55862021-05-27 Giuliano Procida <gprocida@google.com> 5587 5588 abg-reader: Ensure corpus always has a symtab reader 5589 * src/abg-reader.cc (read_symbol_db_from_input): Fix 5590 documentation for this function. Allow "successful parsing" to 5591 include the case where no symbols were present in the input. 5592 (read_corpus_from_input): Unconditionally set a symtab reader 5593 on the corpus object. Unconditionally parse the abi-instr of a 5594 corpus. 5595 55962021-05-27 Giuliano Procida <gprocida@google.com> 5597 5598 dwarf-reader: Create new corpus unconditionally 5599 * src/abg-dwarf-reader.cc (read_debug_info_into_corpus): 5600 Create new corpus object unconditionally. 5601 56022021-06-09 Ben Woodard via Libabigail <libabigail@sourceware.org> 5603 5604 Fix trivial typo when printing version string 5605 * tools/abicompat.cc (main): Add a newline after version string. 5606 56072021-06-10 Dodji Seketeli <dodji@redhat.com> 5608 5609 Revert "Fix trivial typo when printing version string" 5610 * tools/abicompat.cc: 5611 56122021-06-09 Ben Woodard via Libabigail <libabigail@sourceware.org> 5613 5614 Fix trivial typo when printing version string 5615 * tools/abicompat.cc: 5616 56172021-06-10 Dodji Seketeli <dodji@redhat.com> 5618 5619 doc: Fix typo 5620 * doc/manuals/libabigail-concepts.rst: Fix typo. 5621 56222021-06-09 Dodji Seketeli <dodji@redhat.com> 5623 5624 abg-reader: Fix typo 5625 * src/abg-reader.cc 5626 (read_context::maybe_check_abixml_canonical_type_stability): Fix 5627 typo. 5628 56292021-06-09 Dodji Seketeli <dodji@redhat.com> 5630 5631 abidw: Remove temporary .typeid files when using --debug-abidiff 5632 * tools/abidw.cc (load_corpus_and_write_abixml): Remove temporary 5633 typeid file after its use. 5634 56352021-06-08 Dodji Seketeli <dodji@redhat.com> 5636 5637 Fix recursive array type definition 5638 * include/abg-ir.h (array_type_def::update_size): Declare new 5639 private member function. 5640 (array_type_def::array_type_def): Declare ... 5641 * src/abg-ir.cc (array_type_def::array_type_def): ... a new 5642 constructor that takes no element type. 5643 (array_type_def::update_size): Define this helper private member 5644 function. 5645 (array_type_def::get_subrange_representation): Adjust for this to 5646 work when there is no element type setup yet. 5647 (array_type_def::{set_element_type, append_subranges}): Update the 5648 size and name of the array. 5649 * src/abg-reader.cc (build_array_type_def): Create the array type 5650 before the element type so that the later can re-use the former. 5651 56522021-06-07 Dodji Seketeli <dodji@redhat.com> 5653 5654 rhbz1951526 - SELF CHECK FAILED for 'gimp-2.10' 5655 * include/abg-ir.h 5656 (environment::use_enum_binary_only_equality): Declare 5657 accessors. (type_or_decl_base::{s,g}et_is_artificial): 5658 Likewise. (decl_base::{s,g}et_is_artificial): Remove 5659 accessors. * src/abg-ir.cc 5660 (environment::priv::use_enum_binary_only_equality): Define new 5661 data member. 5662 (environment::priv::use_enum_binary_only_equality): Define 5663 accessors. (type_or_decl_base::priv::is_artificial_): Define 5664 new data member. It has actually moved here from 5665 decl_base::priv::is_artificial_. 5666 (type_or_decl_base::priv::priv): Initialize it. 5667 (type_or_decl_base::{g,s}et_is_artificial): Define accessors. 5668 (decl_base::is_artificial_): Move this to 5669 type_or_decl_base::is_artificial_. 5670 (maybe_adjust_canonical_type): In a given class of equivalence 5671 of function types, if there is one non-artificial function 5672 type, then the entire class of equivalence is considered 5673 non-artificial; so flag the canonical function type as being 5674 non-artificial. (is_enumerator_present_in_enum): Define new 5675 static function. (equals): Re-arrange the overload for enums 5676 so the order of the enumerators doesn't count in the 5677 comparison. Also, two enums with different numbers of 5678 enumerators can still be equal, with the right redundancy. In 5679 the overload for var_decl, avoid taking into account the names 5680 of data members in the comparison. 5681 (enum_type_decl::enumerator::operator==): In the binary-level 5682 comparison mode, only compare the value of enumerators, not 5683 their name. * src/abg-comparison.cc (compute_diff): In the 5684 overload for enum_type_decl, if the enums compare different 5685 using binary-level comparison, then use source-level 5686 comparison to build the diff-IR. * src/abg-dwarf-reader.cc 5687 (read_context::compare_before_canonicalisation): Compare enums 5688 using binary-level comparison. (add_or_update_class_type): If 5689 we are looking at the definition of an existing declaration 5690 that has been already defined then use the previous 5691 definition, in case we are going to need to update the 5692 definition. Also, update the size only if it's needed. 5693 (build_function_type): By default, consider the newly built 5694 function type as artificial. (build_ir_node_from_die): When 5695 looking at a DW_TAG_subroutine_type DIE, consider the built 5696 function type as non-artificial. * src/abg-reader.cc 5697 (read_context::maybe_check_abixml_canonical_type_stability): 5698 Don't consider declaration-only classes in an ODR context 5699 because they don't have canonical types. 5700 (build_function_decl): Flag the function type of the function 5701 as artificial. (build_class_decl): Make sure to reuse class 5702 types that were already created. * src/abg-writer.cc 5703 (write_translation_unit): Allow emitting empty classes. Make 5704 sure referenced types are emitting in the translation unit 5705 where they belong. Avoid emitting artificial function types. 5706 * 5707 tests/data/test-alt-dwarf-file/rhbz1951526/rhbz1951526-report-0.txt: 5708 New test reference output. * 5709 tests/data/test-alt-dwarf-file/rhbz1951526/usr/bin/gimp-2.10: 5710 New reference test binary input. * 5711 tests/data/test-alt-dwarf-file/rhbz1951526/usr/lib/debug/.dwz/gimp-2.10.22-2.el9.1.aarch64: 5712 Likewise. * 5713 tests/data/test-alt-dwarf-file/rhbz1951526/usr/lib/debug/usr/bin/gimp-2.10-2.10.22-2.el9.1.aarch64.debug: 5714 Likewise. * tests/data/Makefile.am: Add the new test files to 5715 source directory. * tests/test-alt-dwarf-file.cc: Add the new 5716 test inputs to this test harness. * 5717 tests/data/test-abidiff/test-PR18791-report0.txt: Adjust. * 5718 tests/data/test-abidiff/test-enum0-report.txt: Likewise. * 5719 tests/data/test-annotate/libtest23.so.abi: Likewise. * 5720 tests/data/test-annotate/libtest24-drop-fns-2.so.abi: 5721 Likewise. * 5722 tests/data/test-annotate/libtest24-drop-fns.so.abi: Likewise. 5723 * tests/data/test-annotate/test-anonymous-members-0.o.abi: 5724 Likewise. * tests/data/test-annotate/test13-pr18894.so.abi: 5725 Likewise. * tests/data/test-annotate/test14-pr18893.so.abi: 5726 Likewise. * tests/data/test-annotate/test15-pr18892.so.abi: 5727 Likewise. * tests/data/test-annotate/test17-pr19027.so.abi: 5728 Likewise. * 5729 tests/data/test-annotate/test18-pr19037-libvtkRenderingLIC-6.1.so.abi: 5730 Likewise. * 5731 tests/data/test-annotate/test19-pr19023-libtcmalloc_and_profiler.so.abi: 5732 Likewise. * 5733 tests/data/test-annotate/test20-pr19025-libvtkParallelCore-6.1.so.abi: 5734 Likewise. * tests/data/test-annotate/test21-pr19092.so.abi: 5735 Likewise. * 5736 tests/data/test-diff-dwarf-abixml/test0-pr19026-libvtkIOSQL-6.1.so.1.abi: 5737 Likewise. * 5738 tests/data/test-diff-dwarf/PR25058-liblttng-ctl-report-1.txt: 5739 Likewise. * tests/data/test-diff-dwarf/test6-report.txt: 5740 Likewise. * 5741 tests/data/test-diff-filter/test31-pr18535-libstdc++-report-0.txt: 5742 Likewise. * 5743 tests/data/test-diff-filter/test31-pr18535-libstdc++-report-1.txt: 5744 Likewise. * tests/data/test-diff-filter/test8-report.txt: 5745 Likewise. * 5746 tests/data/test-diff-pkg/spice-server-0.12.4-19.el7.x86_64-0.12.8-1.el7.x86_64-report-2.txt: 5747 Likewise. * 5748 tests/data/test-diff-pkg/spice-server-0.12.4-19.el7.x86_64-0.12.8-1.el7.x86_64-report-3.txt: 5749 Likewise. * 5750 tests/data/test-diff-pkg/tbb-4.1-9.20130314.fc22.x86_64--tbb-4.3-3.20141204.fc23.x86_64-report-0.txt: 5751 Likewise. * 5752 tests/data/test-diff-pkg/tbb-4.1-9.20130314.fc22.x86_64--tbb-4.3-3.20141204.fc23.x86_64-report-1.txt: 5753 Likewise. * 5754 tests/data/test-read-dwarf/PR22015-libboost_iostreams.so.abi: 5755 Likewise. * 5756 tests/data/test-read-dwarf/PR22122-libftdc.so.abi: Likewise. 5757 * tests/data/test-read-dwarf/PR25007-sdhci.ko.abi: Likewise. 5758 * 5759 tests/data/test-read-dwarf/PR25042-libgdbm-clang-dwarf5.so.6.0.0.abi: 5760 Likewise. * 5761 tests/data/test-read-dwarf/PR26261/PR26261-exe.abi: Likewise. 5762 * tests/data/test-read-dwarf/libtest23.so.abi: Likewise. * 5763 tests/data/test-read-dwarf/libtest24-drop-fns-2.so.abi: 5764 Likewise. * 5765 tests/data/test-read-dwarf/libtest24-drop-fns.so.abi: 5766 Likewise. * 5767 tests/data/test-read-dwarf/test-libandroid.so.abi: Likewise. 5768 * tests/data/test-read-dwarf/test10-pr18818-gcc.so.abi: 5769 Likewise. * tests/data/test-read-dwarf/test12-pr18844.so.abi: 5770 Likewise. * tests/data/test-read-dwarf/test13-pr18894.so.abi: 5771 Likewise. * tests/data/test-read-dwarf/test14-pr18893.so.abi: 5772 Likewise. * tests/data/test-read-dwarf/test15-pr18892.so.abi: 5773 Likewise. * tests/data/test-read-dwarf/test16-pr18904.so.abi: 5774 Likewise. * tests/data/test-read-dwarf/test17-pr19027.so.abi: 5775 Likewise. * 5776 tests/data/test-read-dwarf/test18-pr19037-libvtkRenderingLIC-6.1.so.abi: 5777 Likewise. * 5778 tests/data/test-read-dwarf/test19-pr19023-libtcmalloc_and_profiler.so.abi: 5779 Likewise. * 5780 tests/data/test-read-dwarf/test20-pr19025-libvtkParallelCore-6.1.so.abi: 5781 Likewise. * tests/data/test-read-dwarf/test21-pr19092.so.abi: 5782 Likewise. * 5783 tests/data/test-read-dwarf/test22-pr19097-libstdc++.so.6.0.17.so.abi: 5784 Likewise. * 5785 tests/data/test-read-dwarf/test9-pr18818-clang.so.abi: 5786 Likewise. * 5787 tests/data/test-read-write/test28-without-std-fns-ref.xml: 5788 Likewise. * 5789 tests/data/test-read-write/test28-without-std-vars-ref.xml: 5790 Likewise. 5791 57922021-06-07 Dodji Seketeli <dodji@redhat.com> 5793 5794 reader: Canonicalizing a type once is enough 5795 * src/abg-reader.cc (build_type): Don't try to canonicalize the 5796 type here because all the sub-routines of this function (which 5797 actually build the type) already try to canonicalize it. 5798 57992021-06-07 Dodji Seketeli <dodji@redhat.com> 5800 5801 ir: make 'debug(artefact)' support showing enums 5802 * src/abg-ir.cc (get_debug_representation): Add support for 5803 showing details for enums. Also show declaration-only-ness for 5804 class or unions. 5805 58062021-06-07 Dodji Seketeli <dodji@redhat.com> 5807 5808 location:expand() shouldn't crash when no location manager available 5809 * src/abg-ir.cc (location::expand): When no location manager is 5810 present, just expand to an empty location. 5811 58122021-06-07 Dodji Seketeli <dodji@redhat.com> 5813 5814 Add environment::{get_type_id_from_pointer,get_canonical_type_from_type_id} 5815 * include/abg-ir.h (environment::{get_pointer_type_id_map, 5816 get_type_id_from_pointer, get_canonical_type_from_type_id}): 5817 Declare new member functions. 5818 * src/abg-ir.cc (environment::{get_pointer_type_id_map, 5819 get_type_id_from_pointer, get_canonical_type_from_type_id}): 5820 Define member functions. 5821 (environment::priv::pointer_type_id_map_): Move 5822 this data member here from ... 5823 * src/abg-reader.cc (read_context::m_pointer_type_id_map): 5824 ... here. 5825 (read_context::get_pointer_type_id_map): Remove this as it's now 5826 defined in environment::get_pointer_type_id_map. 5827 (read_context::maybe_check_abixml_canonical_type_stability): 5828 Adjust. 5829 (build_type): Likewise. 5830 58312021-06-07 Dodji Seketeli <dodji@redhat.com> 5832 5833 ir: Enable setting breakpoint on first type inequality 5834 * src/abg-ir.cc (notify_equality_failed): Define new static 5835 function if WITH_DEBUG_SELF_COMPARISON is defined. 5836 (ABG_RETURN_EQUAL, ABG_RETURN_FALSE, ABG_RETURN): Define new macros. 5837 (try_canonical_compare): Use ABG_RETURN_EQUAL rather than just 5838 returning the result of a comparison. 5839 (equals): In all the overloads, use the new ABG_RETURN* macros, 5840 rather than just returning boolean values. 5841 58422021-05-22 Dodji Seketeli <dodji@redhat.com> 5843 5844 xml reader: Fix recursive qualified & reference type definition 5845 * include/abg-ir.h (qualified_type_def::qualified_type_def): 5846 Declare a constructor with no underlying type. 5847 (reference_type_def::reference_type_def): Declare a constructor 5848 with no pointed-to type. 5849 (reference_type_def::set_pointed_to_type): Declare new method. 5850 * src/abg-ir.cc (qualified_type_def::priv::priv): Define a 5851 constructor that takes no underlying type. 5852 (qualified_type_def::build_name): Make this work even on 5853 incomplete types with no underlying type. In that case, this 5854 behaves like if the underlying type is "void". 5855 (qualified_type_def::qualified_type_def): Define a constructor 5856 that takes no underlying type. 5857 (qualified_type_def::get_size_in_bits): Make this work on 5858 incomplete types with no underlying type. 5859 (qualified_type_def::set_underlying_type): Adjust to properly 5860 update this type when a new underlying type is set. Particularly, 5861 its name and the lookup maps from the type scope. 5862 (reference_type_def::reference_type_def): Define a constructor 5863 that takes no pointed-to type. 5864 (reference_type_def::set_pointed_to_type): Define new function. 5865 * src/abg-reader.cc (build_qualified_type_decl): Construct the 5866 qualified type early before we try to construct its underlying 5867 type. Associate this incomplete type with the type-id. Then try 5868 to construct the underlying type. During its construction, if 5869 this incomplete qualified type is needed due to recursion then it 5870 can be used, leading to just one qualified type being used as it 5871 should be. 5872 (build_reference_type_def): Likewise for building incomplete 5873 reference type first before its pointed-to type. 5874 58752021-05-21 Dodji Seketeli <dodji@redhat.com> 5876 5877 abixml reader: Fix recursive type definition handling 5878 * include/abg-ir.h (pointer_type_def::pointer_type_def): Declare a 5879 constructor with no pointed-to type. 5880 (pointer_type_def::set_pointed_to_type): Declare new method. 5881 (typedef_decl::typedef_decl): Declare a constructor with no 5882 underlying type. 5883 * src/abg-ir.cc (pointer_type_def::pointer_type_def): Define a 5884 constructor with no pointed-to type. The pointed-to type can thus 5885 later be set when it becomes available. 5886 (pointer_type_def::set_pointed_to_type): Define new method. 5887 (pointer_type_def::get_qualified_name): Make this work on a 5888 pointer type that (momentarily) has no pointed-to type. 5889 (typedef_decl::typedef_decl): Define a constructor with no 5890 underlying type. 5891 (typedef_decl::get_size_in_bits): Make this work on a typedef that 5892 has (momentarily) no underlying type. 5893 (typedef_decl::set_underlying_type): Update the size and alignment 5894 of the typedef from its new underlying type. 5895 * src/abg-reader.cc (build_pointer_type_def): Construct the 5896 pointer type early /BEFORE/ we even try to construct its 5897 pointed-to type. Associate this incomplete type with the type-id. 5898 Then try to construct the pointed-to type. During the 5899 construction of the pointed-to type, if this pointer is needed 5900 (due to recursion) then the incomplete pointer type can be used, 5901 leading to just one pointer type used (recursively) as it should 5902 be. 5903 (build_typedef_decl): Likewise for building typedef type early 5904 without its underlying type so that it can used by the underlying 5905 type if needed. 5906 * tests/data/test-diff-pkg/graphviz-2.44.0-18.el9.aarch64-self-check-report-0.txt: 5907 New test reference output. 5908 * tests/data/test-diff-pkg/graphviz-2.44.0-18.el9.aarch64.rpm: New 5909 binary test input. 5910 * tests/data/test-diff-pkg/graphviz-debuginfo-2.44.0-18.el9.aarch64.rpm: Likewise. 5911 * tests/data/Makefile.am: Add the new test material above to 5912 source distribution. 5913 * tests/test-diff-pkg.cc (in_out_specs): Add the test inputs above 5914 to this test harness. 5915 59162021-05-20 Dodji Seketeli <dodji@redhat.com> 5917 5918 Introduce artificial locations 5919 * include/abg-fwd.h (get_artificial_or_natural_location): Declare 5920 new function. 5921 * include/abg-ir.h (location::location): Initialize & copy ... 5922 (location::is_artificial_): ... a new data member. 5923 (location::{g,s}et_is_artificial): New accessors. 5924 (location::{operator=}): Adjust. 5925 (type_or_decl_base::{set,get,has}_artificial_location): Declare 5926 new member functions. 5927 * src/abg-ir.cc (decl_topo_comp::operator()): In the overload for 5928 decl_base*, use artificial location for topological sort in 5929 priority. Otherwise, use natural location. Otherwise, sort 5930 lexicographically. 5931 (type_topo_comp::operator()): In the overload for type_base*, use 5932 lexicographical sort only for types that don't have location at 5933 all. 5934 (type_or_decl_base::priv::artificial_location_): Define new data 5935 member. 5936 (type_or_decl_base::{set,get,has}_artificial_location): Define new 5937 member functions. 5938 (decl_base::priv): Allow a constructor without location. That one 5939 sets no natural location to the artifact. 5940 (decl_base::decl_base): Use decl_base::set_location in the 5941 constructor now. 5942 (decl_base::set_location): Adjust this to support setting a 5943 natural or an artificial location. 5944 (get_debug_representation): Emit debugging log showing the 5945 location of an artifact, using its artificial location in 5946 priority. 5947 (get_natural_or_artificial_location): Define new function. 5948 * src/abg-reader.cc (read_artificial_location) 5949 (maybe_set_artificial_location): Define new static functions. 5950 (read_location): Read artificial location when no natural location 5951 was found. 5952 (build_namespace_decl, build_function_decl, build_type_decl) 5953 (build_qualified_type_decl, build_pointer_type_def) 5954 (build_reference_type_def, build_subrange_type) 5955 (build_array_type_def, build_enum_type_decl, build_typedef_decl) 5956 (build_class_decl, build_union_decl, build_function_tdecl) 5957 (build_class_tdecl, build_type_tparameter) 5958 (build_non_type_tparameter, build_template_tparameter): Read and 5959 set artificial location. 5960 * src/abg-writer.cc (write_location): Don't serialize artificial 5961 locations. 5962 (write_namespace_decl): Topologically sort member declarations 5963 before serializing them. 5964 * tests/data/test-read-write/test28-without-std-fns-ref.xml: 5965 Adjust. 5966 * tests/data/test-read-write/test28-without-std-vars-ref.xml: 5967 Likewise. 5968 * tests/data/test-annotate/libtest23.so.abi: Likewise. 5969 * tests/data/test-annotate/libtest24-drop-fns-2.so.abi: Likewise. 5970 * tests/data/test-annotate/libtest24-drop-fns.so.abi: Likewise. 5971 * tests/data/test-annotate/test0.abi: Likewise. 5972 * tests/data/test-annotate/test13-pr18894.so.abi: Likewise. 5973 * tests/data/test-annotate/test14-pr18893.so.abi: Likewise. 5974 * tests/data/test-annotate/test15-pr18892.so.abi: Likewise. 5975 * tests/data/test-annotate/test17-pr19027.so.abi: Likewise. 5976 * tests/data/test-annotate/test18-pr19037-libvtkRenderingLIC-6.1.so.abi: 5977 Likewise. 5978 * tests/data/test-annotate/test19-pr19023-libtcmalloc_and_profiler.so.abi: 5979 Likewise. 5980 * tests/data/test-annotate/test20-pr19025-libvtkParallelCore-6.1.so.abi: 5981 Likewise. 5982 * tests/data/test-annotate/test21-pr19092.so.abi: Likewise. 5983 * tests/data/test-read-dwarf/PR22015-libboost_iostreams.so.abi: 5984 Likewise. 5985 * tests/data/test-read-dwarf/PR22122-libftdc.so.abi: Likewise. 5986 * tests/data/test-read-dwarf/PR25007-sdhci.ko.abi: Likewise. 5987 * tests/data/test-read-dwarf/PR25042-libgdbm-clang-dwarf5.so.6.0.0.abi: 5988 Likewise. 5989 * tests/data/test-read-dwarf/PR26261/PR26261-exe.abi: Likewise. 5990 * tests/data/test-read-dwarf/libtest23.so.abi: Likewise. 5991 * tests/data/test-read-dwarf/libtest24-drop-fns-2.so.abi: Likewise. 5992 * tests/data/test-read-dwarf/libtest24-drop-fns.so.abi: Likewise. 5993 * tests/data/test-read-dwarf/test-libandroid.so.abi: Likewise. 5994 * tests/data/test-read-dwarf/test-suppressed-alias.o.abi: Likewise. 5995 * tests/data/test-read-dwarf/test0.abi: Likewise. 5996 * tests/data/test-read-dwarf/test0.hash.abi: Likewise. 5997 * tests/data/test-read-dwarf/test10-pr18818-gcc.so.abi: Likewise. 5998 * tests/data/test-read-dwarf/test11-pr18828.so.abi: Likewise. 5999 * tests/data/test-read-dwarf/test12-pr18844.so.abi: Likewise. 6000 * tests/data/test-read-dwarf/test13-pr18894.so.abi: Likewise. 6001 * tests/data/test-read-dwarf/test14-pr18893.so.abi: Likewise. 6002 * tests/data/test-read-dwarf/test15-pr18892.so.abi: Likewise. 6003 * tests/data/test-read-dwarf/test16-pr18904.so.abi: Likewise. 6004 * tests/data/test-read-dwarf/test17-pr19027.so.abi: Likewise. 6005 * tests/data/test-read-dwarf/test18-pr19037-libvtkRenderingLIC-6.1.so.abi: 6006 Likewise. 6007 * tests/data/test-read-dwarf/test19-pr19023-libtcmalloc_and_profiler.so.abi: 6008 Likewise. 6009 * tests/data/test-read-dwarf/test20-pr19025-libvtkParallelCore-6.1.so.abi: 6010 Likewise. 6011 * tests/data/test-read-dwarf/test21-pr19092.so.abi: Likewise. 6012 * tests/data/test-read-dwarf/test22-pr19097-libstdc++.so.6.0.17.so.abi: 6013 Likewise. 6014 * tests/data/test-read-dwarf/test9-pr18818-clang.so.abi: Likewise. 6015 * tests/data/test-read-write/test28-without-std-fns-ref.xml: 6016 Likewise. 6017 * tests/data/test-read-write/test28-without-std-vars-ref.xml: 6018 Likewise. 6019 60202021-05-19 Dodji Seketeli <dodji@redhat.com> 6021 6022 Detect abixml canonical type instability during abidw --debug-abidiff 6023 * include/abg-ir.h (environment::get_type_id_canonical_type_map): 6024 Declare new data member. 6025 * src/abg-ir.cc (environment::priv::type_id_canonical_type_map_): 6026 Define new data member. 6027 (environment::get_type_id_canonical_type_map): Define new method. 6028 * include/abg-reader.h (load_canonical_type_ids): Declare new 6029 function. 6030 * src/abg-reader.cc (read_context::m_pointer_type_id_map): 6031 Define new data member. 6032 (read_context::{get_pointer_type_id_map, 6033 maybe_check_abixml_canonical_type_stability}): Define new methods. 6034 (read_context::{maybe_canonicalize_type, 6035 perform_late_type_canonicalizing}): Invoke 6036 maybe_perform_self_comparison_canonical_type_check after 6037 canonicalization to perform canonicalization type stability 6038 checking. 6039 (build_type): Associate the pointer value for the newly built type 6040 with the type id string identifying it in the abixml. Once the 6041 abixml representation is dropped from memory and we are about to 6042 perform type canonicalization, we can still know what the type id 6043 of a given type coming from abixml was; it's thus possible to 6044 verify that the canonical type associated to that type id is the 6045 same as the one stored in the typeid file. 6046 (read_type_id_string): Define new static function. 6047 (load_canonical_type_ids): Define new function. 6048 * include/abg-writer.h (write_canonical_type_ids): Likewise. 6049 * src/abg-writer.cc (write_canonical_type_ids): Define new 6050 function overloads. 6051 * tools/abidw.cc (options::type_id_file_path): New data member. 6052 (load_corpus_and_write_abixml): Write and read back the typeid 6053 file. 6054 60552021-05-18 Dodji Seketeli <dodji@redhat.com> 6056 6057 Detect failed self comparison in type canonicalization of abixml 6058 * doc/manuals/abidw.rst: Add documentation for the --debug-abidiff 6059 option. 6060 * include/abg-ir.h (environment::{set_self_comparison_debug_input, 6061 get_self_comparison_debug_inputs, self_comparison_debug_is_on}): 6062 Declare new methods. 6063 * configure.ac: Define a new --enable-debug-self-comparison option 6064 that is disabled by default. That option defines a new 6065 WITH_DEBUG_SELF_COMPARISON preprocessor macro. 6066 * src/abg-ir.cc 6067 (environment::priv::{first_self_comparison_corpus_, 6068 second_self_comparison_corpus_, self_comparison_debug_on_}): New 6069 data members. Also, re-indent the data members. 6070 (environment::{set_self_comparison_debug_input, 6071 get_self_comparison_debug_inputs, self_comparison_debug_is_on}): 6072 Define new method. 6073 (type_base::get_canonical_type_for): In the "debug self comparison 6074 mode", if a type coming from the second corpus compares different 6075 from its counterpart coming from the first corpus then log a debug 6076 message. 6077 * src/abg-dwarf-reader.cc (read_debug_info_into_corpus): When 6078 loading the first corpus, if the debug self comparison mode is on, 6079 then save that corpus on the side in the environment. 6080 * src/abg-reader.cc (read_corpus_from_input): When loading the 6081 second corpus, if the debug self comparison mode is on, then save 6082 that corpus on the side in the environment. 6083 * tools/abidw.cc: Include the config.h file for preprocessor 6084 macros defined at configure 6085 (options::debug_abidiff): New data member. 6086 (parse_command_line): Parse the --debug-abidiff option. 6087 (load_corpus_and_write_abixml): Switch the self debug mode on when 6088 the --debug-abidiff option is provided. Use a read_context for 6089 the abixml loading. That is going to be useful for subsequent 6090 patches. 6091 60922021-05-17 Dodji Seketeli <dodji@redhat.com> 6093 6094 Add primitives callable from the command line of the debugger 6095 * include/abg-fwd.h (get_debug_representation, get_data_member) 6096 (debug, debug_equals): Declare new functions. 6097 * include/abg-ir.h (environment{get_canonical_types, 6098 get_canonical_type}): Declare new member functions. 6099 * src/abg-ir.cc (environment::{get_canonical_types, 6100 get_canonical_type}): Define new member functions. 6101 (get_debug_representation, get_data_member) 6102 (debug, debug_equals): Define new functions. 6103 61042021-05-24 Dodji Seketeli <dodji@redhat.com> 6105 6106 Peel array types when peeling pointers from a type 6107 * src/abg-ir.cc (peel_typedef_pointer_or_reference_type): In the 6108 overloads for type_base_sptr and type_base*, peel array type off 6109 as well. 6110 61112021-05-24 Dodji Seketeli <dodji@redhat.com> 6112 6113 Fix DWARF type DIE canonicalization 6114 * src/abg-dwarf-reader.cc (compare_dies): When comparing array 6115 type DIEs, take into account the type of the elements of the 6116 arrays. 6117 61182021-05-24 Dodji Seketeli <dodji@redhat.com> 6119 6120 Miscellaneous indentation and comments cleanups 6121 * src/abg-ir.cc (environment::priv::{config_, canonical_types_, 6122 sorted_canonical_types_, void_type_, variadic_marker_type_}): 6123 Re-indent these data members. 6124 (peel_typedef_pointer_or_reference_type): Fix comment. 6125 (var_decl::var_decl): Likewise. 6126 (function_decl::function_decl): Add a comment. 6127 * src/abg-reader.cc (handle_reference_type_def): Fix indentation 6128 of parameters. 6129 61302021-05-20 Dodji Seketeli <dodji@redhat.com> 6131 6132 Fix thinko in configure.ac 6133 * configure.ac: Fix a thinko I spotted while looking at something 6134 else. 6135 61362021-04-19 Dodji Seketeli <dodji@redhat.com> 6137 6138 reader: Use xmlFirstElementChild/xmlNextElementSibling to iterate over children elements 6139 * src/abg-reader.cc (walk_xml_node_to_map_type_ids) 6140 (read_translation_unit, read_translation_unit_from_input) 6141 (read_symbol_db_from_input, build_needed) 6142 (read_elf_needed_from_input, read_corpus_group_from_input) 6143 (build_namespace_decl, build_elf_symbol_db, build_function_decl) 6144 (build_function_type, build_array_type_def, build_enum_type_decl) 6145 (build_class_decl, build_union_decl, build_function_tdecl) 6146 (build_class_tdecl, build_type_composition) 6147 (build_template_tparameter): Use 6148 xmlFirstElementChild/xmlNextElementSibling rather than poking at 6149 xmlNode::children and looping over xmlNode::next by hand. 6150 61512021-04-19 Dodji Seketeli <dodji@redhat.com> 6152 6153 reader: Use xmlFirstElementChild and xmlNextElementSibling rather than xml::advance_to_next_sibling_element 6154 * include/abg-libxml-utils.h (advance_to_next_sibling_element): 6155 Remove the declaration of this function. 6156 * src/abg-libxml-utils.cc (go_to_next_sibling_element_or_stay) 6157 (advance_to_next_sibling_element): Remove definitions of these functions. 6158 * src/abg-reader.cc (read_translation_unit_from_input) 6159 (read_elf_needed_from_input, read_corpus_group_from_input): Use xmlNextElementSibling instead 6160 of xml::advance_to_next_sibling_element. 6161 (read_corpus_from_input): Likewise. Also, use 6162 xmlFirstElementChild instead of 6163 xml::advance_to_next_sibling_element on the xmlNode::children data 6164 member. 6165 (read_corpus_group_from_input): use xmlFirstElementChild instead 6166 of xml::advance_to_next_sibling_element on the xmlNode::children 6167 data member. 6168 61692021-04-14 Dodji Seketeli <dodji@redhat.com> 6170 6171 reader: Handle 'abi-corpus' element being possibly empty 6172 * src/abg-reader.cc (read_context::get_corpus_node): Add comment 6173 to this member function. 6174 (read_translation_unit_from_input, read_symbol_db_from_input) 6175 (read_elf_needed_from_input): Start processing the current node of 6176 the corpus that needs to be processed rather than its next 6177 sibling. Once the processing is done, set the new "current node 6178 of the corpus to be processed" properly by skipping to the next 6179 element node to be processed. 6180 (read_corpus_from_input): Don't get out early when the 6181 'abi-corpus' element is empty. If, however, it has children node, 6182 skip to the first child element and flag it -- using 6183 read_context::set_corpus_node -- as being the element node to be 6184 processed by the processing facilities of the reader. If we are 6185 in a mode where we called xmlTextReaderExpand ourselves to get the 6186 node to process, then it means we need to free that node 6187 indirectly by calling xmlTextReaderNext. In that case, that node 6188 should not be flagged by read_context::set_corpus_node. Add more 6189 comments. 6190 * src/abg-corpus.cc (corpus::is_empty): Do not crash when no 6191 symtab is around. 6192 * src/abg-libxml-utils.cc (go_to_next_sibling_element_or_stay): 6193 Fix typo in comment. 6194 (advance_to_next_sibling_element): Don't crash when given a nil 6195 node. 6196 * tests/data/test-abidiff/test-PR27616-squished-v0.abi: Add new 6197 test input. 6198 * tests/data/test-abidiff/test-PR27616-squished-v1.abi: Likewise. 6199 * tests/data/test-abidiff/test-PR27616-v0.xml: Likewise. 6200 * tests/data/test-abidiff/test-PR27616-v1.xml: Likewise. 6201 * tests/data/Makefile.am: Add the new test inputs above to source 6202 distribution. 6203 * tests/test-abidiff.cc (specs): Add the new tests inputs above to 6204 this harness. 6205 * tools/abilint.cc (main): Support writing corpus groups. 6206 62072021-04-13 Dodji Seketeli <dodji@redhat.com> 6208 6209 dwarf-reader: properly set artificial-ness in opaque types 6210 * src/abg-dwarf-reader.cc (get_opaque_version_of_type): Propagate 6211 the artificial-ness of the original type here. 6212 * tests/data/test-read-dwarf/PR27700/test-PR27700.abi: Adjust. 6213 62142021-04-12 Dodji Seketeli <dodji@redhat.com> 6215 6216 dwarf-reader: Canonicalize opaque enums and classes 6217 * src/abg-dwarf-reader.cc (build_ir_node_from_die): Canonicalize 6218 opaque enums and classes. 6219 * tests/data/test-read-dwarf/PR27700/include-dir/priv.h: New test 6220 header file. 6221 * tests/data/test-read-dwarf/PR27700/include-dir/pub.h: Likewise 6222 * tests/data/test-read-dwarf/PR27700/pub-incdir/inc.h: Likewise. 6223 * tests/data/test-read-dwarf/PR27700/test-PR27700.o: New binary 6224 input file. 6225 * tests/data/test-read-dwarf/PR27700/test-PR27700.abi: Reference 6226 abi file of the binary above. 6227 * tests/data/test-read-dwarf/PR27700/test-PR27700.c: Source file 6228 of the binary above. 6229 * tests/data/Makefile.am: Add the test material above to source 6230 distribution. 6231 * tests/test-read-dwarf.cc (InOutSpec::in_public_headers_path): 6232 Add new data member. 6233 (in_out_specs): Adjust to reflect the new data member in the 6234 InOutSpec type. Add a new test input. 6235 (set_suppressions_from_headers): Define new static function. 6236 (test_task::perform): Use the content of the new 6237 InOutSpec::in_public_headers_path to construct and add 6238 "--headers-dir <headers-dir> --drop-private-types" to the options 6239 of the abidw program run. 6240 62412020-07-01 Matthias Maennich <maennich@google.com> 6242 6243 symtab: Add support for MODVERSIONS (CRC checksums) 6244 * include/abg-ir.h (elf_symbol::elf_symbol): Add CRC parameter. 6245 (elf_symbol::create): Likewise. 6246 (elf_symbol::get_crc): New member method. 6247 (elf_symbol::set_crc): New member method. 6248 * src/abg-comp-filter.cc (crc_changed): New function. 6249 (categorize_harmful_diff_node): Also test for CRC changes. 6250 * src/abg-ir.cc (elf_symbol::priv::crc_): New data member. 6251 * src/abg-ir.cc (elf_symbol::priv::priv): Add CRC parameter. 6252 (elf_symbol::elf_symbol): Likewise. 6253 (elf_symbol::create): Likewise. 6254 (elf_symbol::textually_equals): Add CRC support. 6255 (elf_symbol::get_crc): New member method. 6256 (elf_symbol::set_crc): New member method. 6257 * src/abg-reader.cc (build_elf_symbol): Add CRC support. 6258 * src/abg-reporter-priv.cc (maybe_report_diff_for_symbol): Likewise. 6259 * src/abg-symtab-reader.cc (symtab::load): Likewise. 6260 * src/abg-writer.cc (write_elf_symbol): Likewise. 6261 * tests/data/Makefile.am: Add new test data files. 6262 * tests/data/test-abidiff-exit/test-crc-report.txt: New test file. 6263 * tests/data/test-abidiff-exit/test-crc-v0.abi: Likewise. 6264 * tests/data/test-abidiff-exit/test-crc-v1.abi: Likewise. 6265 * tests/data/test-abidiff/empty-report.txt: New file. 6266 * tests/data/test-abidiff/test-PR18166-libtirpc.so.report.txt: Deleted. 6267 * tests/data/test-abidiff/test-PR24552-report0.txt: Deleted. 6268 * tests/data/test-abidiff/test-crc-0.xml: New test file. 6269 * tests/data/test-abidiff/test-crc-1.xml: Likewise. 6270 * tests/data/test-abidiff/test-crc-2.xml: Likewise. 6271 * tests/data/test-abidiff/test-crc-report.txt: Likewise. 6272 * tests/data/test-abidiff/test-empty-corpus-report.txt: Deleted. 6273 * tests/data/test-read-dwarf/PR25007-sdhci.ko.abi: Add CRC values. 6274 * tests/data/test-read-write/test-crc.xml: New test data file. 6275 * tests/data/test-symtab/kernel-modversions/Makefile: New test source. 6276 * tests/data/test-symtab/kernel-modversions/one_of_each.c: Likewise. 6277 * tests/data/test-symtab/kernel-modversions/one_of_each.ko: Likewise. 6278 * tests/test-abidiff-exit.cc: Add new test case. 6279 * tests/test-abidiff.cc: Add new test case. 6280 * tests/test-read-write.cc: Likewise. 6281 * tests/test-symtab.cc (Symtab::KernelSymtabsWithCRC): New test case. 6282 Reviewed-by: Giuliano Procida <gprocida@google.com> 6283 Reviewed-by: Dodji Seketeli <dodji@seketeli.org> 6284 62852020-10-15 Giuliano Procida <gprocida@google.com> 6286 6287 abg-writer.cc: fix write_elf_symbol_reference loop 6288 * src/abg-writer.cc (write_elf_symbol_reference): Check main 6289 symbol and aliases with more care. 6290 Fixes: commmit ("dwarf-reader/writer: consider aliases when dealing with suppressions") 6291 Reviewed-by: Dodji Seketeli <dodji@seketeli.org> 6292 62932020-06-28 Matthias Maennich <maennich@google.com> 6294 6295 dwarf-reader/writer: consider aliases when dealing with suppressions 6296 * src/abg-dwarf-reader.cc(function_is_suppressed): Do not suppress 6297 a function for which there is an alias that is not suppressed. 6298 (variable_is_suppressed): Likewise for variables. 6299 * src/abg-reader.cc (build_elf_symbol): Improve handling of 6300 suppressed aliased symbols when reading from XML. 6301 * src/abg-symtab-reader.cc (load): Likewise. 6302 * src/abg-writer.cc(write_elf_symbol_reference): Fall back to 6303 any aliased symbol if the main symbol is suppressed. 6304 * tests/data/Makefile.am: Add new test files. 6305 * tests/data/test-abidiff-exit/test-missing-alias-report.txt: New test file. 6306 * tests/data/test-abidiff-exit/test-missing-alias.abi: Likewise. 6307 * tests/data/test-abidiff-exit/test-missing-alias.suppr: Likewise. 6308 * tests/test-abidiff-exit.cc: Add support for whitelists and add 6309 new testcase. 6310 * tests/data/test-read-dwarf/test-suppressed-alias.c: New test file. 6311 * tests/data/test-read-dwarf/test-suppressed-alias.o: Likewise. 6312 * tests/data/test-read-dwarf/test-suppressed-alias.o.abi: Likewise. 6313 * tests/data/test-read-dwarf/test-suppressed-alias.suppr: Likewise. 6314 * tests/data/test-read-dwarf/test3-alias-1.so.hash.abi: Likewise. 6315 * tests/data/test-read-dwarf/test3-alias-1.suppr: Likewise. 6316 * tests/data/test-read-dwarf/test3-alias-2.so.hash.abi: Likewise. 6317 * tests/data/test-read-dwarf/test3-alias-2.suppr: Likewise. 6318 * tests/data/test-read-dwarf/test3-alias-3.so.hash.abi: Likewise. 6319 * tests/data/test-read-dwarf/test3-alias-3.suppr: Likewise. 6320 * tests/data/test-read-dwarf/test3-alias-4.so.hash.abi: Likewise. 6321 * tests/data/test-read-dwarf/test3-alias-4.suppr: Likewise. 6322 * tests/test-read-dwarf.cc: Add new test cases. 6323 Reviewed-by: Giuliano Procida <gprocida@google.com> 6324 Reviewed-by: Dodji Seketeli <dodji@seketeli.org> 6325 63262020-06-30 Matthias Maennich <maennich@google.com> 6327 6328 symtab/dwarf-reader: allow hinting of main symbols for aliases 6329 * include/abg-ir.h (elf_symbol::update_main_symbol): New method. 6330 * include/abg-symtab-reader.h (symtab::update_main_symbol): New method. 6331 * src/abg-dwarf-reader.cc 6332 (build_var_decl): Hint symtab about main symbol discovered in DWARF. 6333 (build_function_decl): Likewise. 6334 * src/abg-ir.cc (elf_symbol::get_main_symbol): Lock the weak_ptr 6335 on access in both overloads. 6336 (update_main_symbol): New method to allow updating the main symbol. 6337 * src/abg-symtab-reader.cc (symtab::update_main_symbol): New method. 6338 * data/Makefile.am: Add new test data files. 6339 * tests/data/test-annotate/test15-pr18892.so.abi: Updated test file. 6340 * tests/data/test-annotate/test19-pr19023-libtcmalloc_and_profiler.so.abi: Likewise. 6341 * tests/data/test-annotate/test2.so.abi: Likewise. 6342 * tests/data/test-annotate/test3.so.abi: Likewise. 6343 * tests/data/test-diff-dwarf/test12-report.txt: Likewise. 6344 * tests/data/test-diff-dwarf/test42-PR21296-clanggcc-report0.txt: Likewise. 6345 * tests/data/test-diff-filter/test31-pr18535-libstdc++-report-0.txt: Likewise. 6346 * tests/data/test-diff-filter/test31-pr18535-libstdc++-report-0.txt: Likewise. 6347 * tests/data/test-diff-pkg/tbb-4.1-9.20130314.fc22.x86_64--tbb-4.3-3.20141204.fc23.x86_64-report-0.txt: Likewise. 6348 * tests/data/test-diff-pkg/tbb-4.1-9.20130314.fc22.x86_64--tbb-4.3-3.20141204.fc23.x86_64-report-1.txt: Likewise. 6349 * tests/data/test-diff-suppr/test23-alias-filter-4.suppr: Likewise. 6350 * tests/data/test-diff-suppr/test23-alias-filter-report-0.txt: Likewise. 6351 * tests/data/test-diff-suppr/test23-alias-filter-report-2.txt: Likewise. 6352 * tests/data/test-read-dwarf/PR22015-libboost_iostreams.so.abi: Likewise. 6353 * tests/data/test-read-dwarf/PR22122-libftdc.so.abi: Likewise. 6354 * tests/data/test-read-dwarf/test10-pr18818-gcc.so.abi: Likewise. 6355 * tests/data/test-read-dwarf/test11-pr18828.so.abi: Likewise. 6356 * tests/data/test-read-dwarf/test12-pr18844.so.abi: Likewise. 6357 * tests/data/test-read-dwarf/test15-pr18892.so.abi: Likewise. 6358 * tests/data/test-read-dwarf/test16-pr18904.so.abi: Likewise. 6359 * tests/data/test-read-dwarf/test19-pr19023-libtcmalloc_and_profiler.so.abi: Likewise. 6360 * tests/data/test-read-dwarf/test2.so.abi: Likewise. 6361 * tests/data/test-read-dwarf/test2.so.hash.abi: Likewise. 6362 * tests/data/test-read-dwarf/test22-pr19097-libstdc++.so.6.0.17.so.abi: Likewise. 6363 * tests/data/test-read-dwarf/test3.so.abi: Likewise. 6364 * tests/data/test-read-dwarf/test3.so.hash.abi: Likewise. 6365 * tests/data/test-symtab/basic/aliases.c: New test source file. 6366 * tests/data/test-symtab/basic/aliases.so: Likewise. 6367 * tests/test-symtab.cc (Symtab::AliasedFunctionSymbols): New test case. 6368 (Symtab::AliasedVariableSymbols): Likewise. 6369 Reviewed-by: Giuliano Procida <gprocida@google.com> 6370 Reviewed-by: Dodji Seketeli <dodji@seketeli.org> 6371 63722020-06-29 Matthias Maennich <maennich@google.com> 6373 6374 test-symtab: add tests for whitelisted functions 6375 * tests/data/Makefile.am: add new test files 6376 * tests/data/test-symtab/basic/one_function_one_variable_all.whitelist: New test file, 6377 * tests/data/test-symtab/basic/one_function_one_variable_function.whitelist: Likewise. 6378 * tests/data/test-symtab/basic/one_function_one_variable_irrelevant.whitelist: Likewise. 6379 * tests/data/test-symtab/basic/one_function_one_variable_variable.whitelist: Likewise. 6380 * tests/test-symtab.cc (read_corpus): Add support for whitelists. 6381 (assert_symbol_count): Likewise. 6382 (Symtab::SymtabWithWhitelist): New testcase. 6383 Reviewed-by: Giuliano Procida <gprocida@google.com> 6384 Reviewed-by: Dodji Seketeli <dodji@seketeli.org> 6385 63862020-06-02 Matthias Maennich <maennich@google.com> 6387 6388 dwarf reader: drop (now) unused code related to symbol table reading 6389 * include/abg-dwarf-reader.h (set_ignore_symbol_table): Remove. 6390 (get_ignore_symbol_table): Likewise. 6391 * src/abg-dwarf-reader.cc (add_symbol_to_map): Likewise. 6392 (read_context::options_type::ignore_symbol_table): Likewise. 6393 (read_context::options_type): Adjust. 6394 (read_context::fun_addr_sym_map_): Remove. 6395 (read_context::fun_entry_addr_sym_map_): Likewise. 6396 (read_context::fun_syms_): Likewise. 6397 (read_context::var_addr_sym_map_): Likewise. 6398 (read_context::var_syms_): Likewise. 6399 (read_context::undefined_fun_syms_): Likewise. 6400 (read_context::undefined_var_syms_): Likewise. 6401 (read_context::initialize): Adjust. 6402 (read_context::lookup_elf_symbol_from_index): Remove. 6403 (read_context::fun_entry_addr_sym_map_sptr): Likewise. 6404 (read_context::fun_entry_addr_sym_map): Likewise. 6405 (read_context::fun_syms_sptr): Likewise. 6406 (read_context::fun_syms): Likewise. 6407 (read_context::var_syms_sptr): Likewise. 6408 (read_context::var_syms): Likewise. 6409 (read_context::undefined_fun_syms_sptr): Likewise. 6410 (read_context::undefined_var_syms_sptr): Likewise. 6411 (read_context::load_symbol_maps_from_symtab_section): Likewise. 6412 (read_context::load_symbol_maps): Likewise. 6413 (read_context::maybe_load_symbol_maps): Likewise. 6414 (set_ignore_symbol_table): Likewise. 6415 (get_ignore_symbol_table): Likewise. 6416 (create_default_var_sym): Likewise. 6417 (build_var_decl): Adjust. 6418 (function_is_suppressed): Likewise. 6419 (variable_is_suppressed): Likewise. 6420 (build_function_decl): Likewise. 6421 (add_symbol_to_map): Remove. 6422 (read_corpus_from_elf): Adjust. 6423 (build_corpus_group_from_kernel_dist_under): Likewise. 6424 * tools/abidw.cc (main): Likewise. 6425 Reviewed-by: Giuliano Procida <gprocida@google.com> 6426 Reviewed-by: Dodji Seketeli <dodji@seketeli.org> 6427 64282020-05-21 Matthias Maennich <maennich@google.com> 6429 6430 abg-corpus: remove symbol maps and their setters 6431 * include/abg-corpus.h (corpus::set_fun_symbol_map): Remove 6432 method declaration. 6433 (corpus::set_undefined_fun_symbol_map): Likewise. 6434 (corpus::set_var_symbol_map): Likewise. 6435 (corpus::set_undefined_var_symbol_map): Likewise. 6436 (corpus::get_fun_symbol_map_sptr): Likewise. 6437 (corpus::get_undefined_fun_symbol_map_sptr): Likewise. 6438 (corpus::get_var_symbol_map_sptr): Likewise. 6439 (corpus::get_undefined_var_symbol_map_sptr): Likewise. 6440 * src/abg-corpus-priv.h (corpus::priv::var_symbol_map): make 6441 private and mutable 6442 (corpus::priv::undefined_var_symbol_map): Likewise. 6443 (corpus::priv::fun_symbol_map): Likewise. 6444 (corpus::priv::undefined_fun_symbol_map): Likewise. 6445 (corpus::priv::get_fun_symbol_map): New method declaration. 6446 (corpus::priv::get_undefined_fun_symbol_map): Likewise. 6447 (corpus::priv::get_var_symbol_map): Likewise. 6448 (corpus::priv::get_undefined_var_symbol_map): Likewise. 6449 * src/abg-corpus.cc (corpus::priv::get_fun_symbol_map): New 6450 method implementation. 6451 (corpus::priv::get_undefined_fun_symbol_map): Likewise. 6452 (corpus::priv::get_var_symbol_map): Likewise. 6453 (corpus::priv::get_undefined_var_symbol_map): Likewise. 6454 (corpus::is_empty): depend on symtab only. 6455 (corpus::set_fun_symbol_map): Remove method. 6456 (corpus::set_undefined_fun_symbol_map): Likewise. 6457 (corpus::set_var_symbol_map): Likewise. 6458 (corpus::set_undefined_var_symbol_map): Likewise. 6459 (corpus::get_fun_symbol_map_sptr): Likewise. 6460 (corpus::get_undefined_fun_symbol_map_sptr): Likewise. 6461 (corpus::get_var_symbol_map_sptr): Likewise. 6462 (corpus::get_undefined_var_symbol_map_sptr): Likewise. 6463 (corpus::get_fun_symbol_map): Use corpus::priv proxy method. 6464 (corpus::get_undefined_fun_symbol_map): Likewise. 6465 (corpus::get_var_symbol_map): Likewise. 6466 (corpus::get_undefined_var_symbol_map): Likewise. 6467 * src/abg-dwarf-reader.cc (read_debug_info_into_corpus): Do not 6468 set corpus symbol maps anymore. 6469 * src/abg-reader.cc (read_corpus_from_input): Likewise. 6470 * tests/test-symtab.cc (assert_symbol_count): Do not access the 6471 corpus symbol maps through sptr anymore. 6472 * tests/data/test-read-dwarf/PR25007-sdhci.ko.abi: Adjust 6473 expected test output. 6474 Reviewed-by: Giuliano Procida <gprocida@google.com> 6475 Reviewed-by: Dodji Seketeli <dodji@seketeli.org> 6476 64772020-05-14 Matthias Maennich <maennich@google.com> 6478 6479 symtab_reader: add support for ppc64 ELFv1 binaries 6480 * src/abg-symtab-reader.cc (symtab::lookup_symbol): fall back to 6481 lookup the address in entry_addr_symbol_map_. 6482 (symtab::load): update the function entry address map for 6483 ppc64 targets. 6484 (symtab::update_function_entry_address_symbol_map): New 6485 function implementation. 6486 * src/abg-symtab-reader.h 6487 (symtab::entry_addr_symbol_map_): New data member. 6488 (symtab::update_function_entry_address_symbol_map): New 6489 function declaration. 6490 Reviewed-by: Giuliano Procida <gprocida@google.com> 6491 Reviewed-by: Dodji Seketeli <dodji@seketeli.org> 6492 64932020-05-12 Matthias Maennich <maennich@google.com> 6494 6495 abg-elf-helpers: migrate ppc64 specific helpers 6496 * src/abg-dwarf-reader.cc (read_context::opd_section_): Delete. 6497 (read_context::find_opd_section): Delete. 6498 (read_context::read_uint64_from_array_of_bytes): Delete. 6499 (read_context::read_int_from_array_of_bytes): Delete. 6500 (read_context::lookup_ppc64_elf_fn_entry_point_address): Delete. 6501 (read_context::address_is_in_opd_section): Delete. 6502 (read_context::address_is_in_section): Delete. 6503 (read_context::load_symbol_maps_from_symtab_section): Adjust. 6504 * src/abg-elf-helpers.cc (read_int_from_array_of_bytes): New. 6505 (read_uint64_from_array_of_bytes): New. 6506 (lookup_ppc64_elf_fn_entry_point_address): New. 6507 (address_is_in_section): New. 6508 (address_is_in_opd_section): New. 6509 * src/abg-elf-helpers.h 6510 (lookup_ppc64_elf_fn_entry_point_address): New declaration. 6511 (address_is_in_opd_section): New declaration. 6512 Reviewed-by: Giuliano Procida <gprocida@google.com> 6513 Reviewed-by: Dodji Seketeli <dodji@seketeli.org> 6514 65152020-05-06 Matthias Maennich <maennich@google.com> 6516 6517 Switch kernel stuff over to new symtab and drop unused code 6518 * src/abg-dwarf-reader.cc (read_context::ksymtab_format_): Delete. 6519 (read_context::ksymtab_entry_size_): Likewise. 6520 (read_context::nb_ksymtab_entries_): Likewise. 6521 (read_context::nb_ksymtab_gpl_entries_): Likewise. 6522 (read_context::ksymtab_section_): Likewise. 6523 (read_context::ksymtab_reloc_section_): Likewise. 6524 (read_context::ksymtab_gpl_section_): Likewise. 6525 (read_context::ksymtab_gpl_reloc_section_): Likewise. 6526 (read_context::ksymtab_strings_section_): Likewise. 6527 (read_context::linux_exported_fn_syms): Likewise. 6528 (read_context::linux_exported_var_syms): Likewise. 6529 (read_context::linux_exported_gpl_fn_syms): Likewise. 6530 (read_context::linux_exported_gpl_var_syms): Likewise. 6531 (read_context::initialize): Remove initializations accordingly. 6532 (read_context::find_ksymtab_section): Delete. 6533 (read_context::find_ksymtab_gpl_section): Likewise. 6534 (read_context::find_ksymtab_reloc_section): Likewise. 6535 (read_context::find_ksymtab_gpl_reloc_section): Likewise. 6536 (read_context::find_ksymtab_strings_section): Likewise. 6537 (read_context::find_any_ksymtab_section): Likewise. 6538 (read_context::find_any_ksymtab_reloc_section): Likewise. 6539 (read_context::lookup_elf_symbol_from_index): Adjust. 6540 (read_context::linux_exported_fn_syms): Delete. 6541 (read_context::create_or_get_linux_exported_fn_syms): Likewise. 6542 (read_context::linux_exported_var_syms): Likewise. 6543 (read_context::create_or_get_linux_exported_var_syms): Likewise. 6544 (read_context::linux_exported_gpl_fn_syms): Delete. 6545 (read_context::create_or_get_linux_exported_gpl_fn_syms): Likewise. 6546 (read_context::linux_exported_gpl_var_syms): Likewise. 6547 (read_context::create_or_get_linux_exported_gpl_var_syms): Likewise. 6548 (read_context::try_reading_first_ksymtab_entry): Likewise. 6549 (read_context::try_reading_first_ksymtab_entry_using_pre_v4_19_format): Likewise. 6550 (read_context::try_reading_first_ksymtab_entry_using_v4_19_format): Likewise. 6551 (read_context::get_ksymtab_format_module): Likewise. 6552 (read_context::get_ksymtab_format): Likewise. 6553 (read_context::get_ksymtab_symbol_value_size): Likewise. 6554 (read_context::get_ksymtab_entry_size): Likewise. 6555 (read_context::get_nb_ksymtab_entries): Likewise. 6556 (read_context::get_nb_ksymtab_gpl_entries): Likewise. 6557 (read_context::populate_symbol_map_from_ksymtab): Likewise. 6558 (read_context::populate_symbol_map_from_ksymtab_reloc): Likewise. 6559 (read_context::load_kernel_symbol_table): Likewise. 6560 (read_context::load_ksymtab_symbols): Likewise. 6561 (read_context::load_ksymtab_gpl_symbols): Likewise. 6562 (read_context::load_linux_specific_exported_symbol_maps): Likewise. 6563 (read_context::load_symbol_maps): Do not load kernel symbol maps. 6564 (read_context::maybe_adjust_sym_address_from_v4_19_ksymtab): Delete. 6565 (read_context::add_fn_symbols_to_map): Likewise. 6566 (read_context::add_var_symbols_to_map): Likewise. 6567 (read_context::read_debug_info_into_corpus): Fill export maps 6568 from new symtab. 6569 (read_context::lookup_elf_fn_symbol_from_address): Delete. 6570 (read_context::lookup_elf_var_symbol_from_address): Likewise. 6571 (read_context::lookup_elf_symbol_from_address): Likewise. 6572 (read_context::lookup_public_function_symbol_from_elf): Likewise. 6573 (read_context::fun_entry_addr_sym_map_sptr): Likewise. 6574 (read_context::fun_entry_addr_sym_map): Likewise. 6575 (read_context::var_addr_sym_map): Likewise. 6576 Reviewed-by: Giuliano Procida <gprocida@google.com> 6577 Reviewed-by: Dodji Seketeli <dodji@seketeli.org> 6578 65792020-05-06 Matthias Maennich <maennich@google.com> 6580 6581 dwarf-reader: read_context: use new symtab in *_symbols_is_exported 6582 * src/abg-dwarf-reader.cc (function_symbol_is_exported): Use new 6583 symtab implementation. 6584 (variable_symbol_is_exported): Likewise. 6585 Reviewed-by: Giuliano Procida <gprocida@google.com> 6586 Reviewed-by: Dodji Seketeli <dodji@seketeli.org> 6587 65882020-05-04 Matthias Maennich <maennich@google.com> 6589 6590 abg-reader: avoid using the (var|function)_symbol_map 6591 * src/abg-reader.cc (build_elf_symbol_from_reference): drop 6592 last parameter indicating the lookup type and use corpus 6593 symtab for the lookup 6594 (build_function_decl): Adjust accordingly. 6595 (build_var_decl): Likewise. 6596 Reviewed-by: Giuliano Procida <gprocida@google.com> 6597 Reviewed-by: Dodji Seketeli <dodji@seketeli.org> 6598 65992020-05-04 Matthias Maennich <maennich@google.com> 6600 6601 corpus: make get_unreferenced_(function|variable)_symbols use the new symtab 6602 * src/abg-corpus-priv.h (corpus::priv::unrefed_var_symbols): make 6603 private, mutable and optional. 6604 (corpus::unrefed_fun_symbols): Likewise. 6605 (corpus::priv::get_unreferenced_function_symbols): New method declaration. 6606 (corpus::priv::get_unreferenced_variable_symbols): Likewise. 6607 * src/abg-corpus.cc 6608 (corpus::priv::build_unreferenced_symbols_tables): Delete method. 6609 (corpus::priv::get_unreferenced_function_symbols): New method implementation. 6610 (corpus::priv::get_unreferenced_variable_symbols): Likewise. 6611 (corpus::get_unreferenced_function_symbols): Proxy call to corpus::priv. 6612 (corpus::get_unreferenced_variable_symbols): Likewise. 6613 Reviewed-by: Giuliano Procida <gprocida@google.com> 6614 Reviewed-by: Dodji Seketeli <dodji@seketeli.org> 6615 66162020-04-30 Matthias Maennich <maennich@google.com> 6617 6618 corpus: make get_(undefined_)?_(var|fun)_symbols use the new symtab 6619 * src/abg-corpus-priv.h (corpus::priv::sorted_var_symbols): make 6620 private, mutable and optional. 6621 (corpus::sorted_undefined_var_symbols): Likewise. 6622 (corpus::sorted_fun_symbols): Likewise. 6623 (corpus::sorted_undefined_fun_symbols): Likewise. 6624 (corpus::priv::get_sorted_fun_symbols): New method declaration. 6625 (corpus::priv::get_sorted_undefined_fun_symbols): Likewise. 6626 (corpus::priv::get_sorted_var_symbols): Likewise. 6627 (corpus::priv::get_sorted_undefined_var_symbols): Likewise. 6628 * src/abg-corpus.cc 6629 (corpus::elf_symbol_comp_functor): Delete struct. 6630 (corpus::priv::get_sorted_fun_symbols): New method implementation. 6631 (corpus::priv::get_sorted_undefined_fun_symbols): Likewise. 6632 (corpus::priv::get_sorted_var_symbols): Likewise. 6633 (corpus::priv::get_sorted_undefined_var_symbols): Likewise. 6634 (corpus::get_sorted_fun_symbols): Proxy call to corpus::priv. 6635 (corpus::get_sorted_undefined_fun_symbols): Likewise. 6636 (corpus::get_sorted_var_symbols): Likewise. 6637 (corpus::get_sorted_undefined_var_symbols): Likewise. 6638 * src/abg-writer.cc (write_elf_symbol_aliases): When emitting 6639 aliases for a kernel symbol, ensure to only emit exported, 6640 public aliases. 6641 * tests/data/test-read-dwarf/PR25007-sdhci.ko.abi: update test 6642 data. 6643 Reviewed-by: Giuliano Procida <gprocida@google.com> 6644 Reviewed-by: Dodji Seketeli <dodji@seketeli.org> 6645 66462020-05-19 Matthias Maennich <maennich@google.com> 6647 6648 Integrate new symtab reader into corpus and read_context 6649 * include/abg-corpus.h (corpus::set_symtab): New method declaration. 6650 (corpus::get_symtab): New method declaration. 6651 * include/abg-fwd.h (symtab_reader::symtab_sptr): New forward 6652 declaration. 6653 * src/abg-corpus-priv.h (corpus::priv::symtab_): New data member. 6654 * src/abg-corpus.cc 6655 (corpus::set_symtab): Likewise. 6656 (corpus::get_symtab): Likewise. 6657 * src/abg-dwarf-reader.cc (read_context::symtab_): New data member. 6658 (read_context::initialize): reset symtab_ as well 6659 (read_context::symtab): new method that loads a symtab on 6660 first access and returns it. 6661 (read_debug_info_into_corpus): also set the new symtab object 6662 on the current corpus. 6663 (read_corpus_from_elf): Also determine (i.e. load) the new 6664 symtab object and contribute to the load status. 6665 * src/abg-reader.cc (read_corpus_from_input): also set the new 6666 type symtab when reading from xml. 6667 * tests/test-symtab.cc: Add test assertions. 6668 Reviewed-by: Giuliano Procida <gprocida@google.com> 6669 Reviewed-by: Dodji Seketeli <dodji@seketeli.org> 6670 66712020-04-29 Matthias Maennich <maennich@google.com> 6672 6673 Refactor ELF symbol table reading by adding a new symtab reader 6674 * src/abg-symtab-reader.h (symtab_filter): New class. 6675 (symtab_iterator): Likewise. 6676 (symtab): Likewise. 6677 (filtered_symtab): Likewise. 6678 * src/abg-symtab-reader.cc (symtab_filter::matches): New. 6679 (symtab::make_filter): Likewise. 6680 (symtab::lookup_symbol): Likewise. 6681 (symbol_sort): Likewise. 6682 (symtab::load): Likewise. 6683 (symtab::load_): Likewise. 6684 Reviewed-by: Giuliano Procida <gprocida@google.com> 6685 Reviewed-by: Dodji Seketeli <dodji@seketeli.org> 6686 66872021-03-29 Matthias Maennich <maennich@google.com> 6688 6689 clang-format: Minor correction to not break parameters on the first line 6690 * .clang-format: correct function parameter break/indentation 6691 66922021-03-31 Dodji Seketeli <dodji@redhat.com> 6693 6694 Bug 27598 - abidiff mishandles union member functions 6695 * src/abg-default-reporter.cc (default_reporter::report): Assume 6696 the parent type of the method can be either a class or a union. 6697 * tests/data/test-diff-filter/test-PR27598-report-0.txt: New 6698 reference output for the test. 6699 * tests/data/test-diff-filter/test-PR27598-v{0,1}.cc: New source 6700 code for the input binaries below. 6701 * tests/data/test-diff-filter/test-PR27598-v{0,1}.o: New input 6702 test binaries. 6703 * tests/data/Makefile.am: Add the new test material to source 6704 distribution. 6705 * tests/test-diff-filter.cc (in_out_specs): Add the test inputs 6706 above to this test harness. 6707 67082021-03-25 Dodji Seketeli <dodji@redhat.com> 6709 6710 Bug 27569 - abidiff misses a function parameter addition 6711 * include/abg-comparison.h (enum diff_category): Add a new 6712 FN_PARM_ADD_REMOVE_CHANGE_CATEGORY enumerator and adjust the 6713 following enumerator values. Update the EVERYTHING_CATEGORY 6714 accordingly. 6715 (function_type_diff::{sorted_deleted_parms, sorted_added_parms}): 6716 Add new member functions. 6717 * src/abg-comparison.cc 6718 (function_type_diff::{sorted_deleted_parms, sorted_added_parms}): 6719 Define new accessors. 6720 (get_default_harmful_categories_bitmap): 6721 Consider changes of the category 6722 FN_PARM_ADD_REMOVE_CHANGE_CATEGORY as harmful. 6723 (operator<<(ostream& o, diff_category c)): Support the new 6724 FN_PARM_ADD_REMOVE_CHANGE_CATEGORY while serializing a category 6725 bitmap. 6726 * src/abg-comp-filter.cc 6727 (has_added_or_removed_function_parameters): Define new static 6728 function. 6729 (categorize_harmful_diff_node): Categorize diff nodes representing 6730 function parameter addition or removal as 6731 FN_PARM_ADD_REMOVE_CHANGE_CATEGORY. 6732 * tests/data/test-diff-filter/test-PR27569-report-0.txt: New test 6733 reference output. 6734 * tests/data/test-diff-filter/test-PR27569-v{0,1}.abi: New test inputs. 6735 * tests/data/Makefile.am: Add the new test inputs to the source 6736 distribution. 6737 * tests/test-diff-filter.cc (in_out_specs): Add the new test 6738 inputs to this test harness. 6739 * tests/data/test-diff-filter/test31-pr18535-libstdc++-report-0.txt: 6740 Adjust. 6741 * tests/data/test-diff-filter/test31-pr18535-libstdc++-report-1.txt: 6742 Likewise. 6743 * tests/data/test-diff-pkg/libsigc++-2.0-0c2a_2.4.0-1_amd64--libsigc++-2.0-0v5_2.4.1-1ubuntu2_amd64-report-0.txt: 6744 Likewise. 6745 * tests/data/test-diff-pkg/tbb-4.1-9.20130314.fc22.x86_64--tbb-4.3-3.20141204.fc23.x86_64-report-0.txt: 6746 Likewise. 6747 * tests/data/test-diff-pkg/tbb-4.1-9.20130314.fc22.x86_64--tbb-4.3-3.20141204.fc23.x86_64-report-1.txt: 6748 Likewise. 6749 67502021-03-15 Giuliano Procida <gprocida@google.com> 6751 6752 dwarf-reader: Treat union members as public by default. 6753 * src/abg-dwarf-reader.cc (add_or_update_union_type): Replace 6754 "class" with "union" in comments; give union members public 6755 access by default. 6756 (finish_member_function_reading): Give union members public access 6757 by default. 6758 (maybe_set_member_type_access_specifier): Give union members 6759 public access by default. 6760 * tests/data/test-annotate/libtest24-drop-fns-2.so.abi: Refresh. 6761 * tests/data/test-annotate/libtest24-drop-fns.so.abi: Refresh. 6762 * tests/data/test-annotate/test-anonymous-members-0.o.abi: 6763 Refresh. 6764 * tests/data/test-annotate/test13-pr18894.so.abi: Refresh. 6765 * tests/data/test-annotate/test14-pr18893.so.abi: Refresh. 6766 * tests/data/test-annotate/test15-pr18892.so.abi: Refresh. 6767 * tests/data/test-annotate/test17-pr19027.so.abi: Refresh. 6768 * tests/data/test-annotate/test18-pr19037-libvtkRenderingLIC-6.1.so.abi: 6769 Refresh. 6770 * tests/data/test-annotate/test19-pr19023-libtcmalloc_and_profiler.so.abi: 6771 Refresh. 6772 * tests/data/test-annotate/test20-pr19025-libvtkParallelCore-6.1.so.abi: 6773 Refresh. 6774 * tests/data/test-annotate/test21-pr19092.so.abi: Refresh. 6775 * tests/data/test-diff-dwarf-abixml/PR25409-librte_bus_dpaa.so.20.0.abi: 6776 Refresh. 6777 * tests/data/test-diff-dwarf-abixml/test0-pr19026-libvtkIOSQL-6.1.so.1.abi: 6778 Refresh. 6779 * tests/data/test-read-dwarf/PR22015-libboost_iostreams.so.abi: 6780 Refresh. 6781 * tests/data/test-read-dwarf/PR25007-sdhci.ko.abi: Refresh. 6782 * tests/data/test-read-dwarf/libtest24-drop-fns-2.so.abi: 6783 Refresh. 6784 * tests/data/test-read-dwarf/libtest24-drop-fns.so.abi: 6785 Refresh. 6786 * tests/data/test-read-dwarf/test-PR26568-1.o.abi: Refresh. 6787 * tests/data/test-read-dwarf/test-PR26568-2.o.abi: Refresh. 6788 * tests/data/test-read-dwarf/test-libandroid.so.abi: Refresh. 6789 * tests/data/test-read-dwarf/test10-pr18818-gcc.so.abi: 6790 Refresh. 6791 * tests/data/test-read-dwarf/test11-pr18828.so.abi: Refresh. 6792 * tests/data/test-read-dwarf/test12-pr18844.so.abi: Refresh. 6793 * tests/data/test-read-dwarf/test13-pr18894.so.abi: Refresh. 6794 * tests/data/test-read-dwarf/test14-pr18893.so.abi: Refresh. 6795 * tests/data/test-read-dwarf/test15-pr18892.so.abi: Refresh. 6796 * tests/data/test-read-dwarf/test16-pr18904.so.abi: Refresh. 6797 * tests/data/test-read-dwarf/test17-pr19027.so.abi: Refresh. 6798 * tests/data/test-read-dwarf/test18-pr19037-libvtkRenderingLIC-6.1.so.abi: 6799 Refresh. 6800 * tests/data/test-read-dwarf/test19-pr19023-libtcmalloc_and_profiler.so.abi: 6801 Refresh. 6802 * tests/data/test-read-dwarf/test20-pr19025-libvtkParallelCore-6.1.so.abi: 6803 Refresh. 6804 * tests/data/test-read-dwarf/test21-pr19092.so.abi: Refresh. 6805 * tests/data/test-read-dwarf/test22-pr19097-libstdc++.so.6.0.17.so.abi: 6806 Refresh. 6807 * tests/data/test-read-dwarf/test9-pr18818-clang.so.abi: 6808 Refresh. 6809 68102021-03-12 Ben Woodard via Libabigail <libabigail@sourceware.org> 6811 6812 Bug 27512 - Remove broken zip-archive support 6813 * configure.ac: remove --enable-zip-archive option and logic 6814 associated with it. 6815 * include/abg-libzip-utils.h: Remove. 6816 * src/abg-libzip-utils.cc: Likewise. 6817 * include/Makefile.am: remove reference to include/abg-libzip-utils.h 6818 that no longer exists. 6819 * src/Makefile.am: remove reference to src/abg-libzip-utils.cc that no 6820 longer exists. 6821 * relicensing-scripts/file-licenses.orig.txt: remove references to 6822 files that no longer exist. 6823 * relicensing-scripts/files-with-lgplv3.txt: remove references to 6824 files that no longer exist. 6825 * tests/test-write-read-archive.cc: Remove because it tests code 6826 that no longer exists. 6827 * tests/Makefile.am: remove reference to tests that no longer exist. 6828 * include/abg-reader.h: remove conditionally compiled code for zip 6829 archives. 6830 * include/abg-tools-utils.h: remove conditionally compiled code for 6831 zip archives. 6832 * src/abg-corpus.cc: remove conditionally compiled code for zip 6833 archives. 6834 * src/abg-reader.cc: remove conditionally compiled code for zip 6835 archives. 6836 * src/abg-tools-utils.cc: remove conditionally compiled code for zip 6837 archives. 6838 * src/abg-writer.cc: remove conditionally compiled code for zip 6839 archives. 6840 * tools/abidiff.cc: remove conditionally compiled code for zip 6841 archives. 6842 * tools/abilint.cc: remove conditionally compiled code for zip 6843 archives. 6844 * tools/abiar.c: Remove. 6845 * tools/Makefile.am: remove references to abiar a utility that no 6846 longer has a reason for existing. 6847 68482021-03-18 Dodji Seketeli <dodji@redhat.com> 6849 6850 dwarf-reader: Support more DWARF-5 type DIEs 6851 * src/abg-dwarf-reader.cc (is_type_tag): Support 6852 DW_TAG_coarray_type, DW_TAG_atomic_type and DW_TAG_immutable_type. 6853 * tests/data/test-diff-pkg/elfutils-debuginfo-0.183-1.el9.x86_64.rpm: 6854 Add new binary test input. 6855 * tests/data/test-diff-pkg/elfutils-libs-debuginfo-0.183-1.el9.x86_64.rpm: Likewise. 6856 * tests/data/test-diff-pkg/elfutils-libs-0.183-1.el9.x86_64.rpm: Likewise. 6857 * tests/data/test-diff-pkg/elfutils-libs-debuginfo-0.183-1.el9.x86_64-self-check-report-0.txt: 6858 Add new reference test output. 6859 * tests/test-diff-pkg.cc (in_out_specs): Add the test inputs above 6860 to the harness. 6861 68622021-03-10 Giuliano Procida <gprocida@google.com> 6863 6864 DWARF reader: Comment ARM32 ELF address interpretation 6865 * src/abg-dwarf-reader.cc 6866 (read_context::load_symbol_maps_from_symtab_section): Add 6867 descriptive comment to ARM32 address handling; shorten 6868 the assignment using &=. 6869 68702021-01-27 Matthias Maennich <maennich@google.com> 6871 6872 dwarf-reader split: create abg-symtab-reader.{h,cc} and test case 6873 * src/abg-symtab-reader.h: New header file. 6874 * src/abg-symtab-reader.cc: New source file. 6875 * src/Makefile.am: Add new source files. 6876 * tests/Makefile.am: Add new test case runtestsymtabreader. 6877 * tests/test-symtab-reader.cc: New test source file. 6878 Reviewed-by: Giuliano Procida <gprocida@google.com> 6879 68802021-03-09 Giuliano Procida <gprocida@google.com> 6881 6882 DWARF reader: Interpret ARM32 ELF addresses correctly 6883 * src/abg-dwarf-reader.cc 6884 (read_context::load_symbol_maps_from_symtab_section): Clear 6885 bit zero of ARM32 function addresses. 6886 * src/abg-elf-helpers.cc (architecture_is_arm32): Add new 6887 function. 6888 * src/abg-elf-helpers.h (architecture_is_arm32): Likewise. 6889 * tests/data/test-read-dwarf/test-libandroid.so.abi: Update. 6890 68912021-01-27 Matthias Maennich <maennich@google.com> 6892 6893 abg-ir: elf_symbol: add is_suppressed field 6894 * include/abg-ir.h (elf_symbol::elf_symbol): Add is_suppressed 6895 parameter. 6896 (elf_symbol::create): Likewise. 6897 (elf_symbol::is_suppressed): New getter declaration. 6898 (elf_symbol::set_is_suppressed): New setter declaration. 6899 * src/abg-ir.cc (elf_symbol::priv::priv): Add is_suppressed 6900 parameter. 6901 (elf_symbol::priv::is_suppressed_): New field. 6902 (elf_symbol::elf_symbol): Add is_suppressed parameter. 6903 (elf_symbol::create): Likewise. 6904 (elf_symbol::is_suppressed): New getter implementation. 6905 (elf_symbol::set_is_suppressed): New setter implementation. 6906 Reviewed-by: Giuliano Procida <gprocida@google.com> 6907 69082021-01-27 Matthias Maennich <maennich@google.com> 6909 6910 abg-ir: elf_symbol: add is_in_ksymtab field 6911 * include/abg-ir.h (elf_symbol::elf_symbol): Add is_in_ksymtab 6912 parameter. 6913 (elf_symbol::create): Likewise. 6914 (elf_symbol::is_in_ksymtab): New getter declaration. 6915 (elf_symbol::set_is_in_ksymtab): New setter declaration. 6916 * src/abg-ir.cc (elf_symbol::priv::priv): Add is_in_ksymtab 6917 parameter. 6918 (elf_symbol::priv::is_in_ksymtab_): New field. 6919 (elf_symbol::elf_symbol): Add is_in_ksymtab parameter. 6920 (elf_symbol::create): Likewise. 6921 (elf_symbol::is_in_ksymtab): New getter implementation. 6922 (elf_symbol::set_is_in_ksymtab): New setter implementation. 6923 Reviewed-by: Giuliano Procida <gprocida@google.com> 6924 69252021-01-27 Matthias Maennich <maennich@google.com> 6926 6927 abg-cxx-compat: add simplified version of std::optional 6928 * include/abg-cxx-compat.h (abg_compat::optional): Add new class. 6929 * tests/tests-cxx-compat.cc: Add new test cases. 6930 Reviewed-by: Giuliano Procida <gprocida@google.com> 6931 69322021-03-02 Ben Woodard via Libabigail <libabigail@sourceware.org> 6933 6934 Fix declaratons of conditionally defined functions 6935 * include/abg-reader.h (read_corpus_from_file): Guard the 6936 declaration of these overloads with #ifdef WITH_ZIP_ARCHIVE. 6937 * tools/abilint.cc: Guard the use of 6938 abigail::xml_reader::read_corpus_from_file with #ifdef 6939 WITH_ZIP_ARCHIVE. 6940 69412021-03-08 Dodji Seketeli <dodji@redhat.com> 6942 6943 Revert "Fix declaratons of conditionally defined functions" 6944 * include/abg-reader.h: 6945 * tools/abilint.cc: 6946 69472021-03-02 Ben Woodard via Libabigail <libabigail@sourceware.org> 6948 6949 Fix declaratons of conditionally defined functions 6950 * include/abg-reader.h: 6951 * tools/abilint.cc: 6952 69532021-03-08 Dodji Seketeli <dodji@redhat.com> 6954 6955 tests/catch.hpp: Add SPDX header back 6956 * tests/lib/catch.hpp: Add SPDX header back. 6957 69582021-02-25 Dodji Seketeli <dodji@redhat.com> 6959 6960 dwarf-reader: Keep stable order when de-duplicating class definitions 6961 * src/abg-dwarf-reader.cc 6962 (read_context::resolve_declaration_only_classes): Compare the 6963 classes that have the same name across several TU, always in the 6964 same order. 6965 * tests/data/test-annotate/test15-pr18892.so.abi: Adjust. 6966 * tests/data/test-read-dwarf/test15-pr18892.so.abi: Likewise. 6967 69682021-02-24 Dodji Seketeli <dodji@redhat.com> 6969 6970 Better sorting of (anonymous) types in ABIXML files 6971 * src/abg-writer.cc (type_ptr_cmp::operator()): Use the internal 6972 pretty representation of types, for comparison. 6973 * tests/data/test-read-dwarf/PR22015-libboost_iostreams.so.abi: 6974 Adjust. 6975 * tests/data/test-read-dwarf/PR22122-libftdc.so.abi: Likewise. 6976 * tests/data/test-read-dwarf/PR25007-sdhci.ko.abi: Likewise. 6977 * tests/data/test-read-dwarf/PR25042-libgdbm-clang-dwarf5.so.6.0.0.abi: 6978 Likewise. 6979 * tests/data/test-read-dwarf/test-libandroid.so.abi: Likewise. 6980 * tests/data/test-read-dwarf/test10-pr18818-gcc.so.abi: Likewise. 6981 * tests/data/test-read-dwarf/test12-pr18844.so.abi: Likewise. 6982 * tests/data/test-read-dwarf/test13-pr18894.so.abi: Likewise. 6983 * tests/data/test-read-dwarf/test14-pr18893.so.abi: Likewise. 6984 * tests/data/test-read-dwarf/test15-pr18892.so.abi: Likewise. 6985 * tests/data/test-read-dwarf/test16-pr18904.so.abi: Likewise. 6986 * tests/data/test-read-dwarf/test17-pr19027.so.abi: Likewise. 6987 * tests/data/test-read-dwarf/test18-pr19037-libvtkRenderingLIC-6.1.so.abi: Likewise. 6988 * tests/data/test-read-dwarf/test19-pr19023-libtcmalloc_and_profiler.so.abi: Likewise. 6989 * tests/data/test-read-dwarf/test20-pr19025-libvtkParallelCore-6.1.so.abi: Likewise. 6990 * tests/data/test-read-dwarf/test21-pr19092.so.abi: Likewise. 6991 * tests/data/test-read-dwarf/test22-pr19097-libstdc++.so.6.0.17.so.abi: Likewise. 6992 * tests/data/test-read-dwarf/test9-pr18818-clang.so.abi: Likewise. 6993 * tests/data/test-annotate/test13-pr18894.so.abi: Likewise. 6994 * tests/data/test-annotate/test14-pr18893.so.abi: Likewise. 6995 * tests/data/test-annotate/test15-pr18892.so.abi: Likewise. 6996 * tests/data/test-annotate/test17-pr19027.so.abi: Likewise. 6997 * tests/data/test-annotate/test18-pr19037-libvtkRenderingLIC-6.1.so.abi: 6998 Likewise. 6999 * tests/data/test-annotate/test19-pr19023-libtcmalloc_and_profiler.so.abi: 7000 Likewise. 7001 * tests/data/test-annotate/test20-pr19025-libvtkParallelCore-6.1.so.abi: 7002 Likewise. 7003 * tests/data/test-annotate/test21-pr19092.so.abi: Likewise. 7004 70052021-02-23 Dodji Seketeli <dodji@redhat.com> 7006 7007 tests: Update to catch.hpp v2.13.4 and fix #2178 7008 * tests/lib/catch.hpp: Update to v2.13.4 and initialize 7009 sigStackSize to 32768 for now, as suggested by 7010 https://github.com/catchorg/Catch2/issues/2178. 7011 70122021-02-11 Dodji Seketeli <dodji@redhat.com> 7013 7014 Don't consider type name when comparing typedefs 7015 * include/abg-ir.h (maybe_compare_as_member_decls): Declare new 7016 function. Make it a friend of class decl_base. 7017 * src/abg-dwarf-reader.cc (maybe_canonicalize_type): Don't early 7018 canonicalize typedefs because they can be "part" of a type that is 7019 not yet completed, especially considering that class declaration 7020 resolution is part of type building, stricto sensu. 7021 * src/abg-ir.cc (maybe_compare_as_member_decls): Factorize this 7022 out of ... 7023 (equals): ... the overload for decl_base. Use it in the overload 7024 for typedef_decl. 7025 * tests/data/test-diff-pkg/nmap-7.70-5.el8_testjcc.x86_64-self-check-report-0.txt: 7026 New test reference output. 7027 * tests/data/test-diff-pkg/nmap-7.70-5.el8_testjcc.x86_64.rpm: New 7028 binary input. 7029 * tests/data/test-diff-pkg/nmap-debuginfo-7.70-5.el8_testjcc.x86_64.rpm: Likewise. 7030 * tests/data/Makefile.am: Add these new testing material to source 7031 distribution. 7032 * tests/test-diff-pkg.cc (in_out_specs): Add the new test input to 7033 the harness. 7034 * tests/data/test-diff-pkg/spice-server-0.12.4-19.el7.x86_64-0.12.8-1.el7.x86_64-report-0.txt: 7035 Adjust. 7036 * tests/data/test-diff-suppr/test39-opaque-type-report-0.txt: 7037 Adjust. 7038 70392021-02-10 Dodji Seketeli <dodji@redhat.com> 7040 7041 Use generic internal type name to canonicalize anonymous enums 7042 * src/abg-ir.cc (has_generic_anonymous_internal_type_name) : 7043 Define new static function. 7044 (get_generic_anonymous_internal_type_name): Use it here. 7045 (decl_base::get_pretty_representation): For internal purposes, 7046 build an anonymous name that is stable. 7047 * tests/data/test-annotate/test21-pr19092.so.abi: Adjust. 7048 * tests/data/test-diff-pkg/PR24690/PR24690-report-0.txt: Adjust. 7049 * tests/data/test-diff-pkg/nss-3.23.0-1.0.fc23.x86_64-report-0.txt: Adjust. 7050 * tests/data/test-read-dwarf/PR22122-libftdc.so.abi: Adjust. 7051 * tests/data/test-read-dwarf/test-libandroid.so.abi: Adjust. 7052 * tests/data/test-read-dwarf/test21-pr19092.so.abi: Adjust. 7053 70542021-02-08 Giuliano Procida <gprocida@google.com> 7055 7056 abg-dwarf-reader: Fix typo in compare_dies_string_attribute_value 7057 * src/abg-dwarf-reader.cc 7058 (compare_dies_string_attribute_value): Typo fix. 7059 70602021-01-27 Giuliano Procida <gprocida@google.com> 7061 7062 abidiff: do not qualify member names in diff report 7063 * src/abg-reporter-priv.cc (represent_data_member): Do not 7064 qualify member names. (represent): Do not qualify member names. 7065 * tests/data/test-abicompat/test0-fn-changed-report-0.txt: Refresh. 7066 * tests/data/test-abicompat/test0-fn-changed-report-2.txt: Refresh. 7067 * tests/data/test-abicompat/test5-fn-changed-report-0.txt: Refresh. 7068 * tests/data/test-abicompat/test5-fn-changed-report-1.txt: Refresh. 7069 * tests/data/test-abicompat/test6-var-changed-report-0.txt: Refresh. 7070 * tests/data/test-abicompat/test6-var-changed-report-1.txt: Refresh. 7071 * tests/data/test-abicompat/test7-fn-changed-report-0.txt: Refresh. 7072 * tests/data/test-abicompat/test7-fn-changed-report-1.txt: Refresh. 7073 * tests/data/test-abicompat/test7-fn-changed-report-2.txt: Refresh. 7074 * tests/data/test-abicompat/test8-fn-changed-report-0.txt: Refresh. 7075 * tests/data/test-abicompat/test9-fn-changed-report-0.txt: Refresh. 7076 * tests/data/test-abidiff-exit/qualifier-typedef-array-report-1.txt: 7077 Refresh. 7078 * tests/data/test-abidiff-exit/test-fun-param-report.txt: Refresh. 7079 * tests/data/test-abidiff-exit/test-headers-dirs/test-headers-dir-report-2.txt: 7080 Refresh. 7081 * tests/data/test-abidiff-exit/test-leaf-cxx-members-report.txt: 7082 Refresh. 7083 * tests/data/test-abidiff-exit/test-leaf-peeling-report.txt: Refresh. 7084 * tests/data/test-abidiff-exit/test-leaf-redundant-report.txt: Refresh. 7085 * tests/data/test-abidiff-exit/test-member-size-report0.txt: Refresh. 7086 * tests/data/test-abidiff-exit/test-member-size-report1.txt: Refresh. 7087 * tests/data/test-abidiff-exit/test-net-change-report0.txt: Refresh. 7088 * tests/data/test-abidiff/test-PR18791-report0.txt: Refresh. 7089 * tests/data/test-abidiff/test-qual-type0-report.txt: Refresh. 7090 * tests/data/test-abidiff/test-struct0-report.txt: Refresh. 7091 * tests/data/test-abidiff/test-struct1-report.txt: Refresh. 7092 * tests/data/test-diff-dwarf/PR25058-liblttng-ctl-report-1.txt: 7093 Refresh. 7094 * tests/data/test-diff-dwarf/test0-report.txt: Refresh. 7095 * tests/data/test-diff-dwarf/test1-report.txt: Refresh. 7096 * tests/data/test-diff-dwarf/test10-report.txt: Refresh. 7097 * tests/data/test-diff-dwarf/test11-report.txt: Refresh. 7098 * tests/data/test-diff-dwarf/test13-report.txt: Refresh. 7099 * tests/data/test-diff-dwarf/test21-redundant-fn-report-0.txt: Refresh. 7100 * tests/data/test-diff-dwarf/test27-local-base-diff-report.txt: 7101 Refresh. 7102 * tests/data/test-diff-dwarf/test3-report.txt: Refresh. 7103 * tests/data/test-diff-dwarf/test32-fnptr-changes-report-0.txt: 7104 Refresh. 7105 * tests/data/test-diff-dwarf/test33-fnref-changes-report-0.txt: 7106 Refresh. 7107 * tests/data/test-diff-dwarf/test36-ppc64-aliases-report-0.txt: 7108 Refresh. 7109 * tests/data/test-diff-dwarf/test37-union-report-0.txt: Refresh. 7110 * tests/data/test-diff-dwarf/test38-union-report-0.txt: Refresh. 7111 * tests/data/test-diff-dwarf/test39-union-report-0.txt: Refresh. 7112 * tests/data/test-diff-dwarf/test4-report.txt: Refresh. 7113 * tests/data/test-diff-dwarf/test40-report-0.txt: Refresh. 7114 * tests/data/test-diff-dwarf/test44-anon-struct-union-report-0.txt: 7115 Refresh. 7116 * tests/data/test-diff-dwarf/test45-anon-dm-change-report-0.txt: 7117 Refresh. 7118 * tests/data/test-diff-dwarf/test46-rust-report-0.txt: Refresh. 7119 * tests/data/test-diff-dwarf/test5-report.txt: Refresh. 7120 * tests/data/test-diff-dwarf/test8-report.txt: Refresh. 7121 * tests/data/test-diff-filter/libtest45-basic-type-change-report-0.txt: 7122 Refresh. 7123 * tests/data/test-diff-filter/test-PR26739-2-report-0.txt: Refresh. 7124 * tests/data/test-diff-filter/test0-report.txt: Refresh. 7125 * tests/data/test-diff-filter/test01-report.txt: Refresh. 7126 * tests/data/test-diff-filter/test1-report.txt: Refresh. 7127 * tests/data/test-diff-filter/test10-report.txt: Refresh. 7128 * tests/data/test-diff-filter/test11-report.txt: Refresh. 7129 * tests/data/test-diff-filter/test13-report.txt: Refresh. 7130 * tests/data/test-diff-filter/test14-0-report.txt: Refresh. 7131 * tests/data/test-diff-filter/test14-1-report.txt: Refresh. 7132 * tests/data/test-diff-filter/test15-0-report.txt: Refresh. 7133 * tests/data/test-diff-filter/test15-1-report.txt: Refresh. 7134 * tests/data/test-diff-filter/test16-report-2.txt: Refresh. 7135 * tests/data/test-diff-filter/test16-report.txt: Refresh. 7136 * tests/data/test-diff-filter/test17-0-report.txt: Refresh. 7137 * tests/data/test-diff-filter/test17-1-report.txt: Refresh. 7138 * tests/data/test-diff-filter/test18-report.txt: Refresh. 7139 * tests/data/test-diff-filter/test2-report.txt: Refresh. 7140 * tests/data/test-diff-filter/test25-cyclic-type-report-0.txt: Refresh. 7141 * tests/data/test-diff-filter/test25-cyclic-type-report-1.txt: Refresh. 7142 * tests/data/test-diff-filter/test26-qualified-redundant-node-report-0.txt: 7143 Refresh. 7144 * tests/data/test-diff-filter/test26-qualified-redundant-node-report-1.txt: 7145 Refresh. 7146 * tests/data/test-diff-filter/test27-redundant-and-filtered-children-nodes-report-0.txt: 7147 Refresh. 7148 * tests/data/test-diff-filter/test27-redundant-and-filtered-children-nodes-report-1.txt: 7149 Refresh. 7150 * tests/data/test-diff-filter/test27-redundant-and-filtered-children-nodes-report-2.txt: 7151 Refresh. 7152 * tests/data/test-diff-filter/test28-redundant-and-filtered-children-nodes-report-0.txt: 7153 Refresh. 7154 * tests/data/test-diff-filter/test28-redundant-and-filtered-children-nodes-report-1.txt: 7155 Refresh. 7156 * tests/data/test-diff-filter/test29-finer-redundancy-marking-report-0.txt: 7157 Refresh. 7158 * tests/data/test-diff-filter/test3-report.txt: Refresh. 7159 * tests/data/test-diff-filter/test30-pr18904-rvalueref-report0.txt: 7160 Refresh. 7161 * tests/data/test-diff-filter/test30-pr18904-rvalueref-report1.txt: 7162 Refresh. 7163 * tests/data/test-diff-filter/test30-pr18904-rvalueref-report2.txt: 7164 Refresh. 7165 * tests/data/test-diff-filter/test31-pr18535-libstdc++-report-0.txt: 7166 Refresh. 7167 * tests/data/test-diff-filter/test31-pr18535-libstdc++-report-1.txt: 7168 Refresh. 7169 * tests/data/test-diff-filter/test32-ppc64le-struct-change-report0.txt: 7170 Refresh. 7171 * tests/data/test-diff-filter/test35-pr18754-no-added-syms-report-0.txt: 7172 Refresh. 7173 * tests/data/test-diff-filter/test36-report-0.txt: Refresh. 7174 * tests/data/test-diff-filter/test37-report-0.txt: Refresh. 7175 * tests/data/test-diff-filter/test39/test39-report-0.txt: Refresh. 7176 * tests/data/test-diff-filter/test42-leaf-report-output-0.txt: Refresh. 7177 * tests/data/test-diff-filter/test44-anonymous-data-member-report-0.txt: 7178 Refresh. 7179 * tests/data/test-diff-filter/test44-anonymous-data-member-report-1.txt: 7180 Refresh. 7181 * tests/data/test-diff-filter/test9-report.txt: Refresh. 7182 * tests/data/test-diff-pkg/GtkAda-gl-2.24.2-29.fc29.x86_64--2.24.2-30.fc30.x86_64-report-0.txt: 7183 Refresh. 7184 * tests/data/test-diff-pkg/PR24690/PR24690-report-0.txt: Refresh. 7185 * tests/data/test-diff-pkg/dirpkg-1-report-1.txt: Refresh. 7186 * tests/data/test-diff-pkg/dirpkg-3-report-1.txt: Refresh. 7187 * tests/data/test-diff-pkg/dirpkg-3-report-2.txt: Refresh. 7188 * tests/data/test-diff-pkg/libICE-1.0.6-1.el6.x86_64.rpm--libICE-1.0.9-2.el7.x86_64.rpm-report-0.txt: 7189 Refresh. 7190 * tests/data/test-diff-pkg/libcdio-0.94-1.fc26.x86_64--libcdio-0.94-2.fc26.x86_64-report.1.txt: 7191 Refresh. 7192 * tests/data/test-diff-pkg/libsigc++-2.0-0c2a_2.4.0-1_amd64--libsigc++-2.0-0v5_2.4.1-1ubuntu2_amd64-report-0.txt: 7193 Refresh. 7194 * tests/data/test-diff-pkg/nss-3.23.0-1.0.fc23.x86_64-report-0.txt: 7195 Refresh. 7196 * tests/data/test-diff-pkg/spice-server-0.12.4-19.el7.x86_64-0.12.8-1.el7.x86_64-report-2.txt: 7197 Refresh. 7198 * tests/data/test-diff-pkg/symlink-dir-test1-report0.txt: Refresh. 7199 * tests/data/test-diff-pkg/tarpkg-0-report-0.txt: Refresh. 7200 * tests/data/test-diff-pkg/tarpkg-1-report-0.txt: Refresh. 7201 * tests/data/test-diff-pkg/tbb-4.1-9.20130314.fc22.x86_64--tbb-4.3-3.20141204.fc23.x86_64-report-0.txt: 7202 Refresh. 7203 * tests/data/test-diff-pkg/tbb-4.1-9.20130314.fc22.x86_64--tbb-4.3-3.20141204.fc23.x86_64-report-1.txt: 7204 Refresh. 7205 * tests/data/test-diff-suppr/libtest48-soname-abixml-report-1.txt: 7206 Refresh. 7207 * tests/data/test-diff-suppr/test0-type-suppr-report-0.txt: Refresh. 7208 * tests/data/test-diff-suppr/test0-type-suppr-report-3.txt: Refresh. 7209 * tests/data/test-diff-suppr/test0-type-suppr-report-5.txt: Refresh. 7210 * tests/data/test-diff-suppr/test0-type-suppr-report-7.txt: Refresh. 7211 * tests/data/test-diff-suppr/test1-typedef-suppr-report-0.txt: Refresh. 7212 * tests/data/test-diff-suppr/test1-typedef-suppr-report-2.txt: Refresh. 7213 * tests/data/test-diff-suppr/test11-add-data-member-report-0.txt: 7214 Refresh. 7215 * tests/data/test-diff-suppr/test12-add-data-member-report-0.txt: 7216 Refresh. 7217 * tests/data/test-diff-suppr/test12-add-data-member-report-2.txt: 7218 Refresh. 7219 * tests/data/test-diff-suppr/test13-suppr-through-pointer-report-0.txt: 7220 Refresh. 7221 * tests/data/test-diff-suppr/test13-suppr-through-pointer-report-1.txt: 7222 Refresh. 7223 * tests/data/test-diff-suppr/test14-suppr-non-redundant-report-0.txt: 7224 Refresh. 7225 * tests/data/test-diff-suppr/test14-suppr-non-redundant-report-1.txt: 7226 Refresh. 7227 * tests/data/test-diff-suppr/test15-suppr-added-fn-report-0.txt: 7228 Refresh. 7229 * tests/data/test-diff-suppr/test15-suppr-added-fn-report-1.txt: 7230 Refresh. 7231 * tests/data/test-diff-suppr/test15-suppr-added-fn-report-5.txt: 7232 Refresh. 7233 * tests/data/test-diff-suppr/test16-suppr-removed-fn-report-0.txt: 7234 Refresh. 7235 * tests/data/test-diff-suppr/test16-suppr-removed-fn-report-2.txt: 7236 Refresh. 7237 * tests/data/test-diff-suppr/test16-suppr-removed-fn-report-5.txt: 7238 Refresh. 7239 * tests/data/test-diff-suppr/test17-suppr-added-var-report-0.txt: 7240 Refresh. 7241 * tests/data/test-diff-suppr/test17-suppr-added-var-report-2.txt: 7242 Refresh. 7243 * tests/data/test-diff-suppr/test17-suppr-added-var-report-5.txt: 7244 Refresh. 7245 * tests/data/test-diff-suppr/test18-suppr-removed-var-report-0.txt: 7246 Refresh. 7247 * tests/data/test-diff-suppr/test18-suppr-removed-var-report-2.txt: 7248 Refresh. 7249 * tests/data/test-diff-suppr/test18-suppr-removed-var-report-5.txt: 7250 Refresh. 7251 * tests/data/test-diff-suppr/test2-struct-suppr-report-0.txt: Refresh. 7252 * tests/data/test-diff-suppr/test23-alias-filter-report-0.txt: Refresh. 7253 * tests/data/test-diff-suppr/test23-alias-filter-report-2.txt: Refresh. 7254 * tests/data/test-diff-suppr/test24-soname-report-1.txt: Refresh. 7255 * tests/data/test-diff-suppr/test24-soname-report-10.txt: Refresh. 7256 * tests/data/test-diff-suppr/test24-soname-report-12.txt: Refresh. 7257 * tests/data/test-diff-suppr/test24-soname-report-14.txt: Refresh. 7258 * tests/data/test-diff-suppr/test24-soname-report-16.txt: Refresh. 7259 * tests/data/test-diff-suppr/test24-soname-report-4.txt: Refresh. 7260 * tests/data/test-diff-suppr/test25-typedef-report-0.txt: Refresh. 7261 * tests/data/test-diff-suppr/test26-loc-suppr-report-0.txt: Refresh. 7262 * tests/data/test-diff-suppr/test26-loc-suppr-report-3.txt: Refresh. 7263 * tests/data/test-diff-suppr/test29-soname-report-3.txt: Refresh. 7264 * tests/data/test-diff-suppr/test29-soname-report-6.txt: Refresh. 7265 * tests/data/test-diff-suppr/test29-soname-report-8.txt: Refresh. 7266 * tests/data/test-diff-suppr/test3-struct-suppr-report-0.txt: Refresh. 7267 * tests/data/test-diff-suppr/test3-struct-suppr-report-1.txt: Refresh. 7268 * tests/data/test-diff-suppr/test3-struct-suppr-report-2.txt: Refresh. 7269 * tests/data/test-diff-suppr/test30-report-0.txt: Refresh. 7270 * tests/data/test-diff-suppr/test31-report-1.txt: Refresh. 7271 * tests/data/test-diff-suppr/test33-report-0.txt: Refresh. 7272 * tests/data/test-diff-suppr/test35-leaf-report-0.txt: Refresh. 7273 * tests/data/test-diff-suppr/test36-leaf-report-0.txt: Refresh. 7274 * tests/data/test-diff-suppr/test4-local-suppr-report-0.txt: Refresh. 7275 * tests/data/test-diff-suppr/test4-local-suppr-report-1.txt: Refresh. 7276 * tests/data/test-diff-suppr/test42-negative-suppr-type-report-0.txt: 7277 Refresh. 7278 * tests/data/test-diff-suppr/test42-negative-suppr-type-report-1.txt: 7279 Refresh. 7280 * tests/data/test-diff-suppr/test46-PR25128-report-1.txt: Refresh. 7281 * tests/data/test-diff-suppr/test46-PR25128-report-2.txt: Refresh. 7282 * tests/data/test-diff-suppr/test47-non-reachable-types-report-1.txt: 7283 Refresh. 7284 * tests/data/test-diff-suppr/test47-non-reachable-types-report-2.txt: 7285 Refresh. 7286 * tests/data/test-diff-suppr/test47-non-reachable-types-report-4.txt: 7287 Refresh. 7288 * tests/data/test-diff-suppr/test47-non-reachable-types-report-7.txt: 7289 Refresh. 7290 * tests/data/test-diff-suppr/test5-fn-suppr-report-0.txt: Refresh. 7291 * tests/data/test-diff-suppr/test5-fn-suppr-report-1.txt: Refresh. 7292 * tests/data/test-diff-suppr/test5-fn-suppr-report-2.txt: Refresh. 7293 * tests/data/test-diff-suppr/test5-fn-suppr-report-3.txt: Refresh. 7294 * tests/data/test-diff-suppr/test5-fn-suppr-report-4.txt: Refresh. 7295 * tests/data/test-diff-suppr/test5-fn-suppr-report-5.txt: Refresh. 7296 * tests/data/test-diff-suppr/test6-fn-suppr-report-0-1.txt: Refresh. 7297 * tests/data/test-diff-suppr/test6-fn-suppr-report-0.txt: Refresh. 7298 * tests/data/test-diff-suppr/test6-fn-suppr-report-1.txt: Refresh. 7299 * tests/data/test-diff-suppr/test6-fn-suppr-report-2.txt: Refresh. 7300 * tests/data/test-diff-suppr/test6-fn-suppr-report-3.txt: Refresh. 7301 * tests/data/test-diff-suppr/test6-fn-suppr-report-4.txt: Refresh. 7302 * tests/data/test-diff-suppr/test7-var-suppr-report-0.txt: Refresh. 7303 * tests/data/test-diff-suppr/test7-var-suppr-report-1.txt: Refresh. 7304 * tests/data/test-diff-suppr/test7-var-suppr-report-2.txt: Refresh. 7305 * tests/data/test-diff-suppr/test7-var-suppr-report-3.txt: Refresh. 7306 * tests/data/test-diff-suppr/test7-var-suppr-report-4.txt: Refresh. 7307 * tests/data/test-diff-suppr/test7-var-suppr-report-7.txt: Refresh. 7308 * tests/data/test-diff-suppr/test7-var-suppr-report-8.txt: Refresh. 7309 * tests/data/test-diff-suppr/test8-redundant-fn-report-0.txt: Refresh. 7310 * tests/data/test-diff-suppr/test8-redundant-fn-report-1.txt: Refresh. 7311 73122021-02-08 Dodji Seketeli <dodji@redhat.com> 7313 7314 dwarf-reader: Use DW_FORM_line_strp only if it's present 7315 * configure.ac: Define if HAS_DW_FORM_line_strp if the 7316 DW_FORM_line_strp enumerator is present. 7317 * src/abg-dwarf-reader.cc (form_is_DW_FORM_line_strp): Define new 7318 static function. 7319 (compare_dies_string_attribute_value): Use it. 7320 73212021-02-04 Dodji Seketeli <dodji@redhat.com> 7322 7323 Bug 27267 - Better support for opaque enum types 7324 * src/abg-dwarf-reader.cc (get_opaque_version_of_type): Do not 7325 quit early for enum types, because the code that comes a bit later 7326 can handle enums. Add the newly built enum to its scope for 7327 proper life cycle management. 7328 * tests/data/test-diff-suppr/PR27267/include-dir-v{0,1}/include.h: New 7329 include files for the input test library. 7330 * tests/data/test-diff-suppr/PR27267/libtestpr27267-v{0,1}.so: New 7331 input test library. 7332 * tests/data/test-diff-suppr/PR27267/report-1.txt: New reference 7333 output for the comparison. 7334 * tests/data/test-diff-suppr/PR27267/v{0,1}.c: Source code for the 7335 new input test library. 7336 * tests/data/Makefile.am: Add the new test material above to 7337 source distribution. 7338 * tests/test-diff-suppr.cc (in_out_specs): Add the new test input 7339 above to the test harness. 7340 73412021-02-03 Dodji Seketeli <dodji@redhat.com> 7342 7343 Bug 27331 - Data member offset change not considered local 7344 * src/abg-ir.cc (equals): In the overload of class_or_union, when 7345 a data member changes without having its type change, then 7346 consider the data change as being local. 7347 * tests/data/test-diff-pkg/spice-server-0.12.4-19.el7.x86_64-0.12.8-1.el7.x86_64-report-3.txt: 7348 Adjust. 7349 * tests/data/test-diff-filter/test-PR27331-report-0.txt: New 7350 reference output. 7351 * tests/data/test-diff-filter/test-PR27331-v{0,1}.c: New test 7352 source files. 7353 * tests/data/test-diff-filter/test-PR27331-v{0,1}.o: New test 7354 binary inputs. 7355 * tests/data/Makefile.am: Add these new test material to source 7356 distribution. 7357 * tests/test-diff-filter.cc (in_out_specs): Add the tests above to 7358 the harness. 7359 73602021-02-02 Dodji Seketeli <dodji@redhat.com> 7361 7362 Bug 27165 - Better support multi-language binaries 7363 * src/abg-dwarf-reader.cc (get_scope_for_die): Get the language of 7364 the DIE from the compilation unit of the DIE itself. 7365 * tests/data/test-types-stability/PR27165-libzmq.so.5.2.3: New 7366 test input. 7367 * tests/data/test-types-stability/PR27165-libzmq.so.5.2.3.debug: 7368 Debug information for the new test input. 7369 * tests/data/Makefile.am: Add the test inputs above to the source 7370 distribution. 7371 * tests/test-types-stability.cc (elf_paths): Add the new test 7372 inputs to this test harness. 7373 73742020-10-22 Dodji Seketeli <dodji@redhat.com> 7375 7376 Bump ABIXML format version to 2.0 7377 * include/abg-corpus.h (corpus::init_format_version): Declare new 7378 private method. 7379 (corpus::set_environment): Make this non-const. 7380 (corpus::{get,set}_format_{major,minor}_version_number): Declare 7381 new accessors. 7382 * src/abg-corpus.cc (corpus::init_format_version): Define new 7383 method. 7384 (corpus::set_environment): By default, initialize the format 7385 version number of the corpus to the one supported by Libabigail. 7386 (corpus::{get,set}_format_{major,minor}_version_number): Define 7387 new accessors. 7388 * include/abg-ir.h: Include abg-config.h to use the 7389 abigail::config. 7390 (environment::get_config): Declare new accessor. 7391 * src/abg-ir.cc (environment::priv::config_): Add new data member. 7392 (environment::get_config): Define new accessor. 7393 * src/abg-config.cc (config::config): Bump the format 7394 version number to "2.0". 7395 * src/abg-corpus-priv.h 7396 (corpus::priv::format_{major,minor}_version_number_): Add new data members. 7397 * src/abg-reader.cc (handle_version_attribute): Define new static 7398 function. 7399 (read_corpus_from_input, read_corpus_group_from_input): Use it to 7400 read the value of the "version" attribute and set the format 7401 version number of the corpus and corpus group accordingly. 7402 * src/abg-writer.cc (write_context::m_config): Remove the config 7403 object because we can now get it from the environment. 7404 (write_context::get_config): Get the config object from the 7405 environment. 7406 (write_translation_unit): Do not emit the version attribute on the 7407 translation unit element anymore. 7408 (write_version_info): Define static function. 7409 (write_corpus, write_corpus_group): Use it to emit version 7410 attribute on both the corpus and corpus group elements. 7411 * tools/abidiff.cc 7412 (emit_incomptatible_format_version_error_message): Define new 7413 static function. 7414 (main): Ensure that corpora and corpus groups being compared have 7415 the same major version number. 7416 * tests/update-test-output.py: Adjust syntax for python3. 7417 * tests/data/test-annotate/libtest23.so.abi: Adjust. 7418 * tests/data/test-annotate/libtest24-drop-fns-2.so.abi: Likewise. 7419 * tests/data/test-annotate/libtest24-drop-fns.so.abi: Likewise. 7420 * tests/data/test-annotate/test-anonymous-members-0.o.abi: 7421 Likewise. 7422 * tests/data/test-annotate/test0.abi: Likewise. 7423 * tests/data/test-annotate/test1.abi: Likewise. 7424 * tests/data/test-annotate/test13-pr18894.so.abi: Likewise. 7425 * tests/data/test-annotate/test14-pr18893.so.abi: Likewise. 7426 * tests/data/test-annotate/test15-pr18892.so.abi: Likewise. 7427 * tests/data/test-annotate/test17-pr19027.so.abi: Likewise. 7428 * tests/data/test-annotate/test18-pr19037-libvtkRenderingLIC-6.1.so.abi: 7429 Likewise. 7430 * tests/data/test-annotate/test19-pr19023-libtcmalloc_and_profiler.so.abi: 7431 Likewise. 7432 * tests/data/test-annotate/test2.so.abi: Likewise. 7433 * tests/data/test-annotate/test20-pr19025-libvtkParallelCore-6.1.so.abi: 7434 Likewise. 7435 * tests/data/test-annotate/test21-pr19092.so.abi: Likewise. 7436 * tests/data/test-annotate/test3.so.abi: Likewise. 7437 * tests/data/test-annotate/test4.so.abi: Likewise. 7438 * tests/data/test-annotate/test5.o.abi: Likewise. 7439 * tests/data/test-annotate/test6.so.abi: Likewise. 7440 * tests/data/test-annotate/test7.so.abi: Likewise. 7441 * tests/data/test-annotate/test8-qualified-this-pointer.so.abi: 7442 Likewise. 7443 * tests/data/test-diff-dwarf-abixml/PR25409-librte_bus_dpaa.so.20.0.abi: 7444 Likewise. 7445 * tests/data/test-diff-dwarf-abixml/test0-pr19026-libvtkIOSQL-6.1.so.1-report-0.txt: 7446 Likewise. 7447 * tests/data/test-diff-dwarf-abixml/test0-pr19026-libvtkIOSQL-6.1.so.1.abi: 7448 Likewise. 7449 * tests/data/test-diff-suppr/libtest48-soname-abixml-v0.so.abi: 7450 Likewise. 7451 * tests/data/test-diff-suppr/libtest48-soname-abixml-v1.so.abi: 7452 Likewise. 7453 * tests/data/test-read-dwarf/PR22015-libboost_iostreams.so.abi: 7454 Likewise. 7455 * tests/data/test-read-dwarf/PR22122-libftdc.so.abi: Likewise. 7456 * tests/data/test-read-dwarf/PR24378-fn-is-not-scope.abi: 7457 Likewise. 7458 * tests/data/test-read-dwarf/PR25007-sdhci.ko.abi: Likewise. 7459 * tests/data/test-read-dwarf/PR25042-libgdbm-clang-dwarf5.so.6.0.0.abi: 7460 Likewise. 7461 * tests/data/test-read-dwarf/PR26261/PR26261-exe.abi: Likewise. 7462 * tests/data/test-read-dwarf/libtest23.so.abi: Likewise. 7463 * tests/data/test-read-dwarf/libtest24-drop-fns-2.so.abi: 7464 Likewise. 7465 * tests/data/test-read-dwarf/libtest24-drop-fns.so.abi: Likewise. 7466 * tests/data/test-read-dwarf/test-PR26568-1.o.abi: Likewise. 7467 * tests/data/test-read-dwarf/test-PR26568-2.o.abi: Likewise. 7468 * tests/data/test-read-dwarf/test0.abi: Likewise. 7469 * tests/data/test-read-dwarf/test0.hash.abi: Likewise. 7470 * tests/data/test-read-dwarf/test1.abi: Likewise. 7471 * tests/data/test-read-dwarf/test1.hash.abi: Likewise. 7472 * tests/data/test-read-dwarf/test10-pr18818-gcc.so.abi: Likewise. 7473 * tests/data/test-read-dwarf/test11-pr18828.so.abi: Likewise. 7474 * tests/data/test-read-dwarf/test12-pr18844.so.abi: Likewise. 7475 * tests/data/test-read-dwarf/test13-pr18894.so.abi: Likewise. 7476 * tests/data/test-read-dwarf/test14-pr18893.so.abi: Likewise. 7477 * tests/data/test-read-dwarf/test15-pr18892.so.abi: Likewise. 7478 * tests/data/test-read-dwarf/test16-pr18904.so.abi: Likewise. 7479 * tests/data/test-read-dwarf/test17-pr19027.so.abi: Likewise. 7480 * tests/data/test-read-dwarf/test18-pr19037-libvtkRenderingLIC-6.1.so.abi: 7481 Likewise. 7482 * tests/data/test-read-dwarf/test19-pr19023-libtcmalloc_and_profiler.so.abi: 7483 Likewise. 7484 * tests/data/test-read-dwarf/test2.so.abi: Likewise. 7485 * tests/data/test-read-dwarf/test2.so.hash.abi: Likewise. 7486 * tests/data/test-read-dwarf/test20-pr19025-libvtkParallelCore-6.1.so.abi: 7487 Likewise. 7488 * tests/data/test-read-dwarf/test21-pr19092.so.abi: Likewise. 7489 * tests/data/test-read-dwarf/test22-pr19097-libstdc++.so.6.0.17.so.abi: 7490 Likewise. 7491 * tests/data/test-read-dwarf/test3.so.abi: Likewise. 7492 * tests/data/test-read-dwarf/test3.so.hash.abi: Likewise. 7493 * tests/data/test-read-dwarf/test4.so.abi: Likewise. 7494 * tests/data/test-read-dwarf/test4.so.hash.abi: Likewise. 7495 * tests/data/test-read-dwarf/test5.o.abi: Likewise. 7496 * tests/data/test-read-dwarf/test5.o.hash.abi: Likewise. 7497 * tests/data/test-read-dwarf/test6.so.abi: Likewise. 7498 * tests/data/test-read-dwarf/test6.so.hash.abi: Likewise. 7499 * tests/data/test-read-dwarf/test7.so.abi: Likewise. 7500 * tests/data/test-read-dwarf/test7.so.hash.abi: Likewise. 7501 * tests/data/test-read-dwarf/test8-qualified-this-pointer.so.abi: 7502 Likewise. 7503 * tests/data/test-read-dwarf/test8-qualified-this-pointer.so.hash.abi: 7504 Likewise. 7505 * tests/data/test-read-dwarf/test9-pr18818-clang.so.abi: Likewise. 7506 * tests/data/test-read-write/test0.xml: Likewise. 7507 * tests/data/test-read-write/test1.xml: Likewise. 7508 * tests/data/test-read-write/test10.xml: Likewise. 7509 * tests/data/test-read-write/test11.xml: Likewise. 7510 * tests/data/test-read-write/test12.xml: Likewise. 7511 * tests/data/test-read-write/test13.xml: Likewise. 7512 * tests/data/test-read-write/test14.xml: Likewise. 7513 * tests/data/test-read-write/test15.xml: Likewise. 7514 * tests/data/test-read-write/test16.xml: Likewise. 7515 * tests/data/test-read-write/test17.xml: Likewise. 7516 * tests/data/test-read-write/test18.xml: Likewise. 7517 * tests/data/test-read-write/test19.xml: Likewise. 7518 * tests/data/test-read-write/test2.xml: Likewise. 7519 * tests/data/test-read-write/test20.xml: Likewise. 7520 * tests/data/test-read-write/test21.xml: Likewise. 7521 * tests/data/test-read-write/test22.xml: Likewise. 7522 * tests/data/test-read-write/test23.xml: Likewise. 7523 * tests/data/test-read-write/test24.xml: Likewise. 7524 * tests/data/test-read-write/test25.xml: Likewise. 7525 * tests/data/test-read-write/test26.xml: Likewise. 7526 * tests/data/test-read-write/test27.xml: Likewise. 7527 * tests/data/test-read-write/test28-without-std-fns-ref.xml: 7528 Likewise. 7529 * tests/data/test-read-write/test28-without-std-vars-ref.xml: 7530 Likewise. 7531 * tests/data/test-read-write/test3.xml: Likewise. 7532 * tests/data/test-read-write/test4.xml: Likewise. 7533 * tests/data/test-read-write/test5.xml: Likewise. 7534 * tests/data/test-read-write/test6.xml: Likewise. 7535 * tests/data/test-read-write/test7.xml: Likewise. 7536 * tests/data/test-read-write/test8.xml: Likewise. 7537 * tests/data/test-read-write/test9.xml: Likewise. 7538 75392020-10-20 Dodji Seketeli <dodji@redhat.com> 7540 7541 Bug 26684 - Support DW_AT_data_bit_offset attribute 7542 * src/abg-dwarf-reader.cc (read_and_convert_DW_at_bit_offset): 7543 Define new static function. 7544 (die_member_offset): Primarily use DW_AT_data_bit_offset if its 7545 present. Otherwise, look for DW_AT_bit_offset. Use the new 7546 read_and_convert_DW_at_bit_offset function to properly interpret 7547 DW_AT_bit_offset if its present. Update comment. 7548 * tests/data/test-diff-filter/test-PR26684-dwarf{4,5}.o: New 7549 binary test inputs. 7550 * tests/data/test-diff-filter/test-PR26684.c: Source code of the 7551 new binary test inputs above. 7552 * tests/data/test-diff-filter/test-PR26684-report-0.txt: New 7553 reference test output. 7554 * tests/data/Makefile.am: Add the new test material above to 7555 source distribution. 7556 * tests/test-diff-filter.cc (in_out_specs): Add the test inputs 7557 above to this test harness. 7558 * tests/data/test-annotate/test13-pr18894.so.abi: Adjust. 7559 * tests/data/test-annotate/test15-pr18892.so.abi: Adjust. 7560 * tests/data/test-annotate/test17-pr19027.so.abi: Adjust. 7561 * tests/data/test-annotate/test19-pr19023-libtcmalloc_and_profiler.so.abi: 7562 Adjust. 7563 * tests/data/test-annotate/test21-pr19092.so.abi: Adjust. 7564 * tests/data/test-diff-dwarf-abixml/PR25409-librte_bus_dpaa.so.20.0.abi: 7565 Adjust. 7566 * tests/data/test-diff-pkg/libcdio-0.94-1.fc26.x86_64--libcdio-0.94-2.fc26.x86_64-report.1.txt: 7567 Adjust. 7568 * tests/data/test-read-dwarf/PR25007-sdhci.ko.abi: Adjust. 7569 * tests/data/test-read-dwarf/PR25042-libgdbm-clang-dwarf5.so.6.0.0.abi: 7570 Adjust. 7571 * tests/data/test-read-dwarf/test13-pr18894.so.abi: Adjust. 7572 * tests/data/test-read-dwarf/test15-pr18892.so.abi: Adjust. 7573 * tests/data/test-read-dwarf/test16-pr18904.so.abi: Adjust. 7574 * tests/data/test-read-dwarf/test17-pr19027.so.abi: Adjust. 7575 * tests/data/test-read-dwarf/test19-pr19023-libtcmalloc_and_profiler.so.abi: 7576 Adjust. 7577 * tests/data/test-read-dwarf/test21-pr19092.so.abi: Adjust. 7578 * tests/data/test-read-dwarf/test22-pr19097-libstdc++.so.6.0.17.so.abi: 7579 Adjust. 7580 75812021-01-27 Dodji Seketeli <dodji@redhat.com> 7582 7583 Bug 27255 - fedabipkgdiff fails on nfs-utils on Fedora 33 7584 * tools/fedabipkgdiff (RPMCollection::get_sibling_debuginfo): 7585 Update comment. 7586 (RPMCollection::get_matching_debuginfo): Define new function. 7587 (generate_comparison_halves): Use 7588 RPMCollection::get_matching_debuginfo instead of 7589 RPMCollection::get_sibling_debuginfo. 7590 75912021-01-26 Dodji Seketeli <dodji@redhat.com> 7592 7593 dwarf-reader: Support fast DW_FORM_line_strp string comparison 7594 * src/abg-dwarf-reader.cc (compare_dies_string_attribute_value): 7595 Support DW_FORM_line_strp. 7596 * tests/data/test-diff-pkg/sshpass-1.07-1.fc34.x86_64-self-check-report-0.txt: 7597 New reference test output. 7598 * tests/data/test-diff-pkg/sshpass-1.07-1.fc34.x86_64.rpm: New 7599 test input. 7600 * tests/data/test-diff-pkg/sshpass-debuginfo-1.07-1.fc34.x86_64.rpm: 7601 Likewise. 7602 * tests/data/Makefile.am: Add the new testing material above to 7603 source distribution. 7604 * tests/test-diff-pkg.cc (in_out_specs): Add the test input above 7605 to this harness. 7606 76072021-01-26 Dodji Seketeli <dodji@redhat.com> 7608 7609 Bug 27232 - fedabipkgdiff fails on gawk from Fedora 33 7610 * tools/abipkgdiff.cc (options::pkg{1,2}): Add new data members to 7611 store the packages to compare and have them available for the 7612 various functions that may need them down the road. 7613 (package::create_abi_file_path): Add new function. 7614 (compare_to_self): Use the new package::create_abi_file_path to 7615 create the path to the ABI file in a directory not owned by the 7616 package. That should increase our chances of having the rights to 7617 write that one. Make sure to emit error message when the 7618 comparison against self fails. 7619 ({compare_task, self_compare_task}::perform): During the process 7620 of comparison if an internal error happens, report it. Cleanup 7621 the existing reporting a little bit. 7622 (pkg_extraction_task::perform): Fix comment. 7623 * tests/data/test-diff-pkg/libxfce4ui-devel-4.12.1-8.fc27.ppc64-self-report-0.txt: 7624 Adjust. 7625 76262021-01-26 Matthias Maennich <maennich@google.com> 7627 7628 abipkgdiff: Address operator precedence warning 7629 * tools/abipkgdiff.cc (compare_to_self): address clang warning. 7630 76312021-01-26 Dodji Seketeli <dodji@redhat.com> 7632 7633 Bug 27233 - fedabipkgdiff fails on package gnupg2 from Fedora 33 7634 * src/abg-dwarf-reader.cc 7635 (read_context::canonicalize_types_scheduled): Don't forget to 7636 canonicalize types stored in extra_types_to_canonicalize_. 7637 * src/abg-ir.cc (type_base::get_canonical_type_for): Add better 7638 comment. 7639 (hash_as_canonical_type_or_constant): Remove crutch that is 7640 useless now that we canonicalize almost all types in the system. 7641 76422021-01-25 Dodji Seketeli <dodji@redhat.com> 7643 7644 Bug 27236 - Pointer comparison wrongly fails because of typedef change 7645 * src/abg-ir.cc (equals): In the overloads for pointer_type_def, 7646 reference_type_def and array_type_def, compare the pointed-to-type 7647 modulo typedefs. 7648 * tests/data/test-diff-dwarf/test42-PR21296-clanggcc-report0.txt: Adjust. 7649 * tests/data/test-diff-pkg/libICE-1.0.6-1.el6.x86_64.rpm--libICE-1.0.9-2.el7.x86_64.rpm-report-0.txt: 7650 Adjust. 7651 * tests/data/test-diff-pkg/spice-server-0.12.4-19.el7.x86_64-0.12.8-1.el7.x86_64-report-2.txt: 7652 Adjust. 7653 76542021-01-22 Dodji Seketeli <dodji@redhat.com> 7655 7656 Ignore duplicated functions and those not associated with ELF symbols 7657 * include/abg-ir.h (class_or_union::string_mem_fn_sptr_map_type): 7658 Add a typedef for unordered_map<string, method_decl_sptr>. 7659 (class_or_union::find_member_function_sptr): Declare new function. 7660 * src/abg-ir.cc (class_or_union::priv::mem_fns_map_): Change the 7661 type of this to string_mem_fn_sptr_map_type, so that shared 7662 pointers to functions can be stored in the map, instead of bare 7663 pointers to functions. This is useful to implement 7664 class_or_union::find_member_function_sptr which returns a shared 7665 pointer to function. 7666 (class_or_union::find_member_function_sptr): Define new function. 7667 (class_or_union::find_member_function): Adjust. 7668 (method_decl::set_linkage_name): Use a non-deleting shared pointer 7669 to store the current instance of member function into 7670 class_or_union::priv::mem_fns_map_. 7671 (hash_as_canonical_type_or_constant): As we are seeing more 7672 function types, it appears that some function types are not 7673 canonicalized. I am not sure why exactly, but let's loosen the 7674 assert here for now, I'll chase the root of this later. 7675 * src/abg-dwarf-reader.cc (finish_member_function_reading): 7676 Improve detection of member function 'static-ness' by handling 7677 cases where a this pointer can be const. Also support 7678 DW_AT_object_pointer when it's present. This fixes the occurrence 7679 of spurious change reports about loss of 'static-ness' of member 7680 functions. 7681 (potential_member_fn_should_be_dropped): Define new static 7682 function and ... 7683 (build_ir_node_from_die): ... use it here. When a function DIE 7684 has the same linkage name as an existing function IR, do not 7685 create a new IR for it. Rather, re-use the existing one to 7686 complete it with the properties found on the function DIE. If a 7687 new function doesn't seem to have an associated ELF symbol and is 7688 not meant to be a virtual member function then drop its IR on the 7689 floor as well. 7690 * tests/data/test-annotate/libtest23.so.abi: Adjust. 7691 * tests/data/test-annotate/libtest24-drop-fns-2.so.abi: Likewise. 7692 * tests/data/test-annotate/libtest24-drop-fns.so.abi: Likewise. 7693 * tests/data/test-annotate/test0.abi: Likewise. 7694 * tests/data/test-annotate/test1.abi: Likewise. 7695 * tests/data/test-annotate/test14-pr18893.so.abi: Likewise. 7696 * tests/data/test-annotate/test15-pr18892.so.abi: Likewise. 7697 * tests/data/test-annotate/test17-pr19027.so.abi: Likewise. 7698 * tests/data/test-annotate/test18-pr19037-libvtkRenderingLIC-6.1.so.abi: Likewise. 7699 * tests/data/test-annotate/test19-pr19023-libtcmalloc_and_profiler.so.abi: Likewise. 7700 * tests/data/test-annotate/test20-pr19025-libvtkParallelCore-6.1.so.abi: Likewise. 7701 * tests/data/test-annotate/test21-pr19092.so.abi: Likewise. 7702 * tests/data/test-annotate/test6.so.abi: Likewise. 7703 * tests/data/test-annotate/test8-qualified-this-pointer.so.abi: Likewise. 7704 * tests/data/test-diff-dwarf-abixml/PR25409-librte_bus_dpaa.so.20.0.abi: Likewise. 7705 * tests/data/test-diff-dwarf-abixml/test0-pr19026-libvtkIOSQL-6.1.so.1.abi: Likewise. 7706 * tests/data/test-diff-dwarf/test0-report.txt: Likewise. 7707 * tests/data/test-diff-dwarf/test28-vtable-changes-report-0.txt: Likewise. 7708 * tests/data/test-diff-dwarf/test42-PR21296-clanggcc-report0.txt: Likewise. 7709 * tests/data/test-diff-filter/test0-report.txt: Likewise. 7710 * tests/data/test-diff-filter/test01-report.txt: Likewise. 7711 * tests/data/test-diff-filter/test10-report.txt: Likewise. 7712 * tests/data/test-diff-filter/test30-pr18904-rvalueref-report0.txt: Likewise. 7713 * tests/data/test-diff-filter/test30-pr18904-rvalueref-report1.txt: Likewise. 7714 * tests/data/test-diff-filter/test30-pr18904-rvalueref-report2.txt: Likewise. 7715 * tests/data/test-diff-filter/test31-pr18535-libstdc++-report-0.txt: Likewise. 7716 * tests/data/test-diff-filter/test31-pr18535-libstdc++-report-1.txt: Likewise. 7717 * tests/data/test-diff-filter/test35-pr18754-no-added-syms-report-0.txt: Likewise. 7718 * tests/data/test-diff-filter/test35-pr18754-no-added-syms-report-1.txt: Likewise. 7719 * tests/data/test-diff-filter/test41-report-0.txt: Likewise. 7720 * tests/data/test-diff-filter/test9-report.txt: Likewise. 7721 * tests/data/test-diff-pkg/libsigc++-2.0-0c2a_2.4.0-1_amd64--libsigc++-2.0-0v5_2.4.1-1ubuntu2_amd64-report-0.txt: Likewise. 7722 * tests/data/test-diff-pkg/tbb-4.1-9.20130314.fc22.x86_64--tbb-4.3-3.20141204.fc23.x86_64-report-0.txt: Likewise. 7723 * tests/data/test-diff-pkg/tbb-4.1-9.20130314.fc22.x86_64--tbb-4.3-3.20141204.fc23.x86_64-report-1.txt: Likewise. 7724 * tests/data/test-diff-suppr/test24-soname-report-1.txt: Likewise. 7725 * tests/data/test-diff-suppr/test24-soname-report-10.txt: Likewise. 7726 * tests/data/test-diff-suppr/test24-soname-report-12.txt: Likewise. 7727 * tests/data/test-diff-suppr/test24-soname-report-14.txt: Likewise. 7728 * tests/data/test-diff-suppr/test24-soname-report-16.txt: Likewise. 7729 * tests/data/test-diff-suppr/test24-soname-report-4.txt: Likewise. 7730 * tests/data/test-diff-suppr/test31-report-1.txt: Likewise. 7731 * tests/data/test-read-dwarf/PR22015-libboost_iostreams.so.abi: Likewise. 7732 * tests/data/test-read-dwarf/PR22122-libftdc.so.abi: Likewise. 7733 * tests/data/test-read-dwarf/libtest23.so.abi: Likewise. 7734 * tests/data/test-read-dwarf/libtest24-drop-fns-2.so.abi: Likewise. 7735 * tests/data/test-read-dwarf/libtest24-drop-fns.so.abi: Likewise. 7736 * tests/data/test-read-dwarf/test-libandroid.so.abi: Likewise. 7737 * tests/data/test-read-dwarf/test0.abi: Likewise. 7738 * tests/data/test-read-dwarf/test0.hash.abi: Likewise. 7739 * tests/data/test-read-dwarf/test1.abi: Likewise. 7740 * tests/data/test-read-dwarf/test1.hash.abi: Likewise. 7741 * tests/data/test-read-dwarf/test10-pr18818-gcc.so.abi: Likewise. 7742 * tests/data/test-read-dwarf/test11-pr18828.so.abi: Likewise. 7743 * tests/data/test-read-dwarf/test12-pr18844.so.abi: Likewise. 7744 * tests/data/test-read-dwarf/test14-pr18893.so.abi: Likewise. 7745 * tests/data/test-read-dwarf/test15-pr18892.so.abi: Likewise. 7746 * tests/data/test-read-dwarf/test16-pr18904.so.abi: Likewise. 7747 * tests/data/test-read-dwarf/test17-pr19027.so.abi: Likewise. 7748 * tests/data/test-read-dwarf/test18-pr19037-libvtkRenderingLIC-6.1.so.abi: Likewise. 7749 * tests/data/test-read-dwarf/test19-pr19023-libtcmalloc_and_profiler.so.abi: Likewise. 7750 * tests/data/test-read-dwarf/test20-pr19025-libvtkParallelCore-6.1.so.abi: Likewise. 7751 * tests/data/test-read-dwarf/test21-pr19092.so.abi: Likewise. 7752 * tests/data/test-read-dwarf/test22-pr19097-libstdc++.so.6.0.17.so.abi: Likewise. 7753 * tests/data/test-read-dwarf/test6.so.abi: Likewise. 7754 * tests/data/test-read-dwarf/test6.so.hash.abi: Likewise. 7755 * tests/data/test-read-dwarf/test8-qualified-this-pointer.so.abi: Likewise. 7756 * tests/data/test-read-dwarf/test8-qualified-this-pointer.so.hash.abi: Likewise. 7757 * tests/data/test-read-dwarf/test9-pr18818-clang.so.abi: Likewise. 7758 77592021-01-20 Dodji Seketeli <dodji@redhat.com> 7760 7761 Bug 27204 - potential loss of some aliased ELF function symbols 7762 * src/abg-ir.cc (function_decl::get_id): If the elf symbol has 7763 aliases, make the function name be part of the ID so that this ID 7764 differs from the one of the other functions that share a symbol 7765 alias with this one. 7766 * tests/data/test-abidiff/test-PR18791-report0.txt: Adjust. 7767 * tests/data/test-diff-dwarf/test42-PR21296-clanggcc-report0.txt: Likewise. 7768 * tests/data/test-diff-filter/test31-pr18535-libstdc++-report-0.txt: Likewise. 7769 * tests/data/test-diff-filter/test31-pr18535-libstdc++-report-1.txt: Likewise. 7770 * tests/data/test-diff-filter/test41-report-0.txt: Likewise. 7771 * tests/data/test-read-dwarf/test10-pr18818-gcc.so.abi: Likewise. 7772 * tests/data/test-read-dwarf/test16-pr18904.so.abi: Likewise. 7773 * tests/data/test-diff-pkg/glibc-2.32-3.fc33.aarch64-self-check-report-0.txt: 7774 New test reference output. 7775 * tests/data/test-diff-pkg/glibc-2.32-3.fc33.aarch64.rpm: New test 7776 input RPM. 7777 * tests/data/test-diff-pkg/glibc-debuginfo-2.32-3.fc33.aarch64.rpm: 7778 Likewise. 7779 * tests/data/Makefile.am: Add the new test material to source 7780 distribution. 7781 * tests/test-diff-pkg.cc (in_out_specs): Add the new test input 7782 RPMs to this test harness. 7783 77842020-12-15 Matthias Maennich <maennich@google.com> 7785 7786 abg-ir: Optimize calls to std::string::find() for a single char. 7787 * src/abg-ir.cc (elf_symbol::get_name_and_version_from_id): 7788 use character literal overload for single character string::find. 7789 (parse_integral_type): Likewise. 7790 Suggested-by: Chris Kennelly <ckennelly@google.com> 7791 77922021-01-15 Dodji Seketeli <dodji@redhat.com> 7793 7794 Bug 26992 - Try harder to resolve declaration-only classes 7795 * src/abg-dwarf-reader.cc 7796 (read_context::compare_before_canonicalisation): Define new member 7797 function. 7798 (read_context::resolve_declaration_only_classes): When there are 7799 more than one definition that can resolve a given declaration, if 7800 all those definitions are equal, then resolve the declaration to 7801 those definitions. 7802 (read_context::resolve_declaration_only_enums): Add a comment to 7803 update similarly update this function (or do away with it 7804 completely) later. 7805 * tests/data/test-annotate/test15-pr18892.so.abi: Adjust. 7806 * tests/data/test-read-dwarf/test9-pr18818-clang.so.abi: Likewise. 7807 * tests/data/test-read-dwarf/test15-pr18892.so.abi: Likewise. 7808 * tests/data/test-diff-pkg/cogl-1.22.8-2.fc33.x86_64.rpm: Add new 7809 test input. 7810 * tests/data/test-diff-pkg/cogl-debuginfo-1.22.8-2.fc33.x86_64.rpm: 7811 Likewise. 7812 * tests/data/test-diff-pkg/cogl-1.22.8-2.fc33.x86_64.self-check-report-0.txt: 7813 Likewise. 7814 * tests/test-diff-pkg.cc (in_out_specs): Add the new test inputs 7815 to the test harness. 7816 * tests/data/Makefile.am: Add the new test input files to source 7817 distribution. 7818 78192021-01-11 Dodji Seketeli <dodji@redhat.com> 7820 7821 mainpage: Update web page for 1.8 release 7822 * doc/website/mainpage.txt: Update web page for 1.8 release 7823 78242020-12-14 Matthias Maennich <maennich@google.com> 7825 7826 Update catch2 testing framework: v1.12.2 -> v2.13.3 7827 * tests/lib/catch.hpp: update to v2.13.3 7828 * tests/test-symtab.cc (TEST_CASE("Symtab::SimpleSymtabs")): Use 7829 the corpus variable to avoid unused variable warnings. 7830 78312020-12-14 Matthias Maennich <maennich@google.com> 7832 7833 clang-format: define C++ standard to improve formatting 7834 * .clang-format: Set C++11 standard for formatting. 7835 78362020-12-11 Giuliano Procida <gprocida@google.com> 7837 7838 Refresh ABI cross check test files 7839 * tests/data/test-diff-dwarf-abixml/test0-pr19026-libvtkIOSQL-6.1.so.1.abi: 7840 Refreshed ABI. 7841 * tests/data/test-diff-dwarf-abixml/test0-pr19026-libvtkIOSQL-6.1.so.1-report-0.txt: 7842 File now empty. 7843 78442020-12-14 Matthias Maennich <maennich@google.com> 7845 7846 Drop unneccessary includes of abg-cxx-compat.h 7847 * include/abg-comparison.h: Remove include of abg-cxx-compat.h. 7848 * include/abg-diff-utils.h: Likewise. 7849 * include/abg-fwd.h: Likewise. 7850 * include/abg-ini.h: Likewise. 7851 * include/abg-interned-str.h: Likewise. 7852 * include/abg-ir.h: Likewise. 7853 * include/abg-libxml-utils.h: Likewise. 7854 * include/abg-libzip-utils.h: Likewise. 7855 * include/abg-regex.h: Likewise. 7856 * include/abg-reporter.h: Likewise. 7857 * include/abg-sptr-utils.h: Likewise. 7858 * include/abg-suppression.h: Likewise. 7859 * include/abg-tools-utils.h: Likewise. 7860 * include/abg-workers.h: Likewise. 7861 * src/abg-comp-filter.cc: Likewise. 7862 * src/abg-comparison-priv.h: Likewise. 7863 * src/abg-corpus.cc: Likewise. 7864 * src/abg-dwarf-reader.cc: Likewise. 7865 * src/abg-hash.cc: Likewise. 7866 * src/abg-ir.cc: Likewise. 7867 * src/abg-reader.cc: Likewise. 7868 * src/abg-suppression.cc: Likewise. 7869 * src/abg-tools-utils.cc: Likewise. 7870 * src/abg-writer.cc: Likewise. 7871 * tests/test-diff-suppr.cc: Likewise. 7872 * tests/test-read-write.cc: Likewise. 7873 * tools/abicompat.cc: Likewise. 7874 * tools/abidw.cc: Likewise. 7875 * tools/abilint.cc: Likewise. 7876 * tools/abipkgdiff.cc: Likewise. 7877 78782020-12-14 Matthias Maennich <maennich@google.com> 7879 7880 Remove <unordered_set> usages from abg_compat 7881 * include/abg-cxx-compat.h: Drop compatibility for <unordered_set>. 7882 * include/abg-comparison.h: migrate abg_compat use to std. 7883 * include/abg-interned-str.h: Likewise. 7884 * include/abg-suppression.h: Likewise. 7885 * src/abg-comparison-priv.h: Likewise. 7886 * src/abg-dwarf-reader.cc: Likewise. 7887 * tests/test-diff-suppr.cc: Likewise. 7888 * tools/abipkgdiff.cc: Likewise. 7889 78902020-12-14 Matthias Maennich <maennich@google.com> 7891 7892 Remove <unordered_map> usages from abg_compat 7893 * include/abg-cxx-compat.h: Drop compatibility layer for <unordered_map>. 7894 * include/abg-comparison.h: migrate abg_compat use to std. 7895 * include/abg-cxx-compat.h: Likewise. 7896 * include/abg-fwd.h: Likewise. 7897 * include/abg-ir.h: Likewise. 7898 * src/abg-corpus.cc: Likewise. 7899 * src/abg-dwarf-reader.cc: Likewise. 7900 * src/abg-ir.cc: Likewise. 7901 * src/abg-reader.cc: Likewise. 7902 * src/abg-writer.cc: Likewise. 7903 79042020-12-14 Matthias Maennich <maennich@google.com> 7905 7906 Remove <memory> usages from abg_compat 7907 * include/abg-cxx-compat.h: Drop compatibility layer for <memory>. 7908 * include/abg-diff-utils.h: migrate abg_compat use to std. 7909 * include/abg-fwd.h: Likewise. 7910 * include/abg-ini.h: Likewise. 7911 * include/abg-interned-str.h: Likewise. 7912 * include/abg-libxml-utils.h: Likewise. 7913 * include/abg-libzip-utils.h: Likewise. 7914 * include/abg-regex.h: Likewise. 7915 * include/abg-reporter.h: Likewise. 7916 * include/abg-sptr-utils.h: Likewise. 7917 * include/abg-tools-utils.h: Likewise. 7918 * include/abg-workers.h: Likewise. 7919 * src/abg-comp-filter.cc: Likewise. 7920 * src/abg-comparison-priv.h: Likewise. 7921 * src/abg-dwarf-reader.cc: Likewise. 7922 * src/abg-ir.cc: Likewise. 7923 * src/abg-reader.cc: Likewise. 7924 * src/abg-suppression.cc: Likewise. 7925 * src/abg-tools-utils.cc: Likewise. 7926 * src/abg-writer.cc: Likewise. 7927 * tests/test-diff-filter.cc: Likewise. 7928 * tests/test-diff-pkg.cc: Likewise. 7929 * tests/test-diff-suppr.cc: Likewise. 7930 * tests/test-read-dwarf.cc: Likewise. 7931 * tests/test-read-write.cc: Likewise. 7932 * tests/test-types-stability.cc: Likewise. 7933 * tests/test-write-read-archive.cc: Likewise. 7934 * tools/abicompat.cc: Likewise. 7935 * tools/abidiff.cc: Likewise. 7936 * tools/abidw.cc: Likewise. 7937 * tools/abilint.cc: Likewise. 7938 * tools/abipkgdiff.cc: Likewise. 7939 79402020-12-14 Matthias Maennich <maennich@google.com> 7941 7942 Remove <functional> usages from abg_compat 7943 * include/abg-cxx-compat.h: Drop compatibility layer for <functional>. 7944 * include/abg-interned-str.h: migrate abg_compat use to std. 7945 * include/abg-ir.h: Likewise. 7946 * src/abg-hash.cc: Likewise. 7947 * src/abg-ir.cc: Likewise. 7948 79492020-12-14 Matthias Maennich <maennich@google.com> 7950 7951 Drop C++03 compatibility layer 7952 * include/abg-cxx-compat.h: remove compatibility with pre C++11. 7953 * include/abg-ir.h: Remove mention of std::tr1 from comments. 7954 * include/abg-sptr-utils.h: Likewise. 7955 79562020-12-04 Giuliano Procida <gprocida@google.com> 7957 7958 Add qualifier / typedef / array / pointer test 7959 * tests/data/Makefile.am: Add new test files 7960 * tests/data/test-abidiff-exit/qualifier-typedef-array-v0.c: 7961 New test file. 7962 * tests/data/test-abidiff-exit/qualifier-typedef-array-v0.o: 7963 New test file. 7964 * tests/data/test-abidiff-exit/qualifier-typedef-array-v1.c: 7965 New test file. 7966 * tests/data/test-abidiff-exit/qualifier-typedef-array-v1.o: 7967 New test file. 7968 * tests/data/test-abidiff-exit/qualifier-typedef-array-report-0.txt: 7969 Plain diff report. 7970 * tests/data/test-abidiff-exit/qualifier-typedef-array-report-1.txt: 7971 Harmless diff report. 7972 * tests/data/test-abidiff-exit/qualifier-typedef-array-report-2.txt: 7973 Leaf changes report. 7974 * tests/data/test-abidiff-exit/qualifier-typedef-array-report-3.txt: 7975 Harmless leaf changes report. 7976 * tests/test-abidiff-exit.cc: Run new test. 7977 79782020-12-03 Giuliano Procida <gprocida@google.com> 7979 7980 ir: Arrays are indirect types for type structure similarity purposes 7981 * src/abg-ir.cc (types_have_similar_structure): When examining 7982 array types, always treat element types as being underlying types 7983 of an indirect type. 7984 * tests/data/Makefile.am: Add new test case files. 7985 * tests/data/test-abidiff-exit/test-non-leaf-array-report.txt: 7986 New test case showing correct --leaf-changes-only reporting. 7987 * tests/data/test-abidiff-exit/test-non-leaf-array-v0.c: 7988 Likewise. 7989 * tests/data/test-abidiff-exit/test-non-leaf-array-v0.o: 7990 Likewise. 7991 * tests/data/test-abidiff-exit/test-non-leaf-array-v1.c: 7992 Likewise. 7993 * tests/data/test-abidiff-exit/test-non-leaf-array-v1.o: 7994 Likewise. 7995 * tests/test-abidiff-exit.cc: Run new test case. 7996 79972020-12-04 Dodji Seketeli <dodji@redhat.com> 7998 7999 ir: Add better comments to types_have_similar_structure 8000 * src/abg-ir.cc (types_have_similar_structure): Arrays are also 8001 indirect types, just like pointers and references, for the purpose 8002 of the concept of "type similarity". Add that to the introductory 8003 comment of the function. Add some more misc comments throughout 8004 the code base. 8005 80062020-12-03 Giuliano Procida <gprocida@google.com> 8007 8008 abidiff: support --dump-diff-tree with --leaf-changes-only 8009 * src/abg-leaf-reporter.cc (leaf_reporter::report): In the 8010 corpus_diff override, conclude by calling 8011 maybe_dump_diff_tree. 8012 80132020-12-03 Dodji Seketeli <dodji@redhat.com> 8014 8015 Use C++11 for the code base 8016 * CONTRIBUTING: Enact use of c++11. Also, we favor those who 8017 read/debug/maintain the code as opposed to those who write it ;-) 8018 * configure.ac: Switch to c++11 unconditionally. 8019 * src/Makefile.am: Adjust. 8020 * tests/Makefile.am: Adjust. 8021 80222020-12-03 Dodji Seketeli <dodji@redhat.com> 8023 8024 CONTRIBUTING: Update instructions about regression tests 8025 * CONTRIBUTING: Update instructions about how to launch regression 8026 tests. 8027 80282020-12-02 Dodji Seketeli <dodji@redhat.com> 8029 8030 Teach Automake that COPYING* files are gone from sources 8031 * Makefile.am: Teach Automake that COPYING* files are gone and 8032 that LICENSE.txt and license-change-2020.txt were added. 8033 80342020-06-09 Dodji Seketeli <dodji@redhat.com> 8035 8036 Add a license-change-2020.txt file 8037 * license-change-2020.txt: New file. 8038 80392020-06-09 Dodji Seketeli <dodji@redhat.com> 8040 8041 Delete COPYING* files 8042 * COPYING: Delete. 8043 * COPYING-GPLV3: Likewise. 8044 * COPYING-LGPLV2: Likewise. 8045 * COPYING-LGPLV3: Likewise. 8046 80472020-06-09 Dodji Seketeli <dodji@redhat.com> 8048 8049 Add the LICENSE.txt file 8050 * LICENSE.txt: New file coming from 8051 http://llvm.org/foundation/relicensing/LICENSE.txt. 8052 80532020-05-29 Dodji Seketeli <dodji@redhat.com> 8054 8055 Re-license the project to Apache v2 With LLVM Exception 8056 * abigail.m4: Change the SPDX identifier from "GPL-3.0-or-later 8057 WITH GCC-exception-3.1" to "Apache-2.0 WITH LLVM-exception" 8058 * include/abg-cxx-compat.h: Change the SPDX identifier from 8059 "LGPL-2.0-or-later" to "Apache-2.0 WITH LLVM-exception". 8060 * .clang-format: Change the SPDX identifier from 8061 "LGPL-3.0-or-later" to "Apache-2.0 WITH LLVM-exception". 8062 * Makefile.am: Likewise. 8063 * bash-completion/Makefile.am: Likewise. 8064 * bash-completion/abicompat: Likewise. 8065 * bash-completion/abidiff: Likewise. 8066 * bash-completion/abidw: Likewise. 8067 * bash-completion/abilint: Likewise. 8068 * bash-completion/abinilint: Likewise. 8069 * bash-completion/abipkgdiff: Likewise. 8070 * bash-completion/abisym: Likewise. 8071 * bash-completion/fedabipkgdiff: Likewise. 8072 * configure.ac: Likewise. 8073 * default.abignore: Likewise. 8074 * doc/Makefile.am: Likewise. 8075 * doc/api/libabigail.doxy: Likewise. 8076 * doc/manuals/Makefile.am: Likewise. 8077 * doc/website/libabigail-website.doxy: Likewise. 8078 * include/Makefile.am: Likewise. 8079 * include/abg-comp-filter.h: Likewise. 8080 * include/abg-comparison.h: Likewise. 8081 * include/abg-config.h: Likewise. 8082 * include/abg-corpus.h: Likewise. 8083 * include/abg-diff-utils.h: Likewise. 8084 * include/abg-dwarf-reader.h: Likewise. 8085 * include/abg-fwd.h: Likewise. 8086 * include/abg-hash.h: Likewise. 8087 * include/abg-ini.h: Likewise. 8088 * include/abg-interned-str.h: Likewise. 8089 * include/abg-ir.h: Likewise. 8090 * include/abg-libxml-utils.h: Likewise. 8091 * include/abg-libzip-utils.h: Likewise. 8092 * include/abg-reader.h: Likewise. 8093 * include/abg-regex.h: Likewise. 8094 * include/abg-reporter.h: Likewise. 8095 * include/abg-sptr-utils.h: Likewise. 8096 * include/abg-suppression.h: Likewise. 8097 * include/abg-tools-utils.h: Likewise. 8098 * include/abg-traverse.h: Likewise. 8099 * include/abg-version.h.in: Likewise. 8100 * include/abg-viz-common.h: Likewise. 8101 * include/abg-viz-dot.h: Likewise. 8102 * include/abg-viz-svg.h: Likewise. 8103 * include/abg-workers.h: Likewise. 8104 * include/abg-writer.h: Likewise. 8105 * scripts/dot_to_png.sh: Likewise. 8106 * scripts/dot_to_svg.sh: Likewise. 8107 * scripts/make-verbose.sh: Likewise. 8108 * scripts/svg_to_plain_svg.sh: Likewise. 8109 * scripts/svg_to_png_and_pdf.sh: Likewise. 8110 * src/Makefile.am: Likewise. 8111 * src/abg-comp-filter.cc: Likewise. 8112 * src/abg-comparison-priv.h: Likewise. 8113 * src/abg-comparison.cc: Likewise. 8114 * src/abg-config.cc: Likewise. 8115 * src/abg-corpus-priv.h: Likewise. 8116 * src/abg-corpus.cc: Likewise. 8117 * src/abg-default-reporter.cc: Likewise. 8118 * src/abg-diff-utils.cc: Likewise. 8119 * src/abg-dwarf-reader.cc: Likewise. 8120 * src/abg-elf-helpers.cc: Likewise. 8121 * src/abg-elf-helpers.h: Likewise. 8122 * src/abg-hash.cc: Likewise. 8123 * src/abg-ini.cc: Likewise. 8124 * src/abg-internal.h: Likewise. 8125 * src/abg-ir-priv.h: Likewise. 8126 * src/abg-ir.cc: Likewise. 8127 * src/abg-leaf-reporter.cc: Likewise. 8128 * src/abg-libxml-utils.cc: Likewise. 8129 * src/abg-libzip-utils.cc: Likewise. 8130 * src/abg-reader.cc: Likewise. 8131 * src/abg-regex.cc: Likewise. 8132 * src/abg-reporter-priv.cc: Likewise. 8133 * src/abg-reporter-priv.h: Likewise. 8134 * src/abg-suppression-priv.h: Likewise. 8135 * src/abg-suppression.cc: Likewise. 8136 * src/abg-tools-utils.cc: Likewise. 8137 * src/abg-traverse.cc: Likewise. 8138 * src/abg-viz-common.cc: Likewise. 8139 * src/abg-viz-dot.cc: Likewise. 8140 * src/abg-viz-svg.cc: Likewise. 8141 * src/abg-workers.cc: Likewise. 8142 * src/abg-writer.cc: Likewise. 8143 * tests/Makefile.am: Likewise. 8144 * tests/data/Makefile.am: Likewise. 8145 * tests/lib/catch.cc: Likewise. 8146 * tests/mockfedabipkgdiff.in: Likewise. 8147 * tests/print-diff-tree.cc: Likewise. 8148 * tests/runtestcanonicalizetypes.sh.in: Likewise. 8149 * tests/runtestdefaultsupprs.py.in: Likewise. 8150 * tests/runtestdefaultsupprspy3.sh.in: Likewise. 8151 * tests/runtestfedabipkgdiff.py.in: Likewise. 8152 * tests/runtestfedabipkgdiffpy3.sh.in: Likewise. 8153 * tests/test-abicompat.cc: Likewise. 8154 * tests/test-abidiff-exit.cc: Likewise. 8155 * tests/test-abidiff.cc: Likewise. 8156 * tests/test-alt-dwarf-file.cc: Likewise. 8157 * tests/test-annotate.cc: Likewise. 8158 * tests/test-core-diff.cc: Likewise. 8159 * tests/test-cxx-compat.cc: Likewise. 8160 * tests/test-diff-dwarf-abixml.cc: Likewise. 8161 * tests/test-diff-dwarf.cc: Likewise. 8162 * tests/test-diff-filter.cc: Likewise. 8163 * tests/test-diff-pkg.cc: Likewise. 8164 * tests/test-diff-suppr.cc: Likewise. 8165 * tests/test-diff2.cc: Likewise. 8166 * tests/test-dot.cc: Change the SPDX identifier from 8167 "GPL-3.0-or-later WITH GCC-exception-3.1" to "Apache-2.0 WITH 8168 LLVM-exception" 8169 * tests/test-elf-helpers.cc: Change the SPDX identifier from 8170 "LGPL-3.0-or-later" to "Apache-2.0 WITH LLVM-exception" 8171 * tests/test-ini.cc: Likewise. 8172 * tests/test-ir-walker.cc: Likewise. 8173 * tests/test-kmi-whitelist.cc: Likewise. 8174 * tests/test-lookup-syms.cc: Likewise. 8175 * tests/test-read-dwarf.cc: Likewise. 8176 * tests/test-read-write.cc: Likewise. 8177 * tests/test-svg.cc: Change the SPDX identifier from 8178 "GPL-3.0-or-later WITH GCC-exception-3.1" to "Apache-2.0 WITH 8179 LLVM-exception". 8180 * tests/test-symtab.cc: Change the SPDX identifier from 8181 "LGPL-3.0-or-later" to "Apache-2.0 WITH LLVM-exception" 8182 * tests/test-tools-utils.cc: Likewise. 8183 * tests/test-types-stability.cc: Likewise. 8184 * tests/test-utils.cc: Likewise. 8185 * tests/test-utils.h: Likewise. 8186 * tests/test-write-read-archive.cc: Likewise. 8187 * tests/update-test-output.py: Likewise. 8188 * tools/Makefile.am: Likewise. 8189 * tools/abiar.cc: Likewise. 8190 * tools/abicompat.cc: Likewise. 8191 * tools/abidiff.cc: Likewise. 8192 * tools/abidw.cc: Likewise. 8193 * tools/abilint.cc: Likewise. 8194 * tools/abipkgdiff.cc: Likewise. 8195 * tools/abisym.cc: Likewise. 8196 * tools/binilint.cc: Likewise. 8197 * tools/fedabipkgdiff: Likewise. 8198 * tools/kmidiff.cc: Likewise. 8199 * update-copyright.sh: Likewise. 8200 82012020-05-29 Dodji Seketeli <dodji@redhat.com> 8202 8203 Add helper files to perform the re-licensing 8204 * relicensing-scripts/file-licenses.orig.txt: New file that 8205 contains the raw set of files with SPDX identifiers denoting 8206 LGPLv3+ files. It's the result of a simple command based on 8207 "find" and "grep". 8208 * relicensing-scripts/files-with-lgplv3.txt: New file 8209 containing the same data as the file above, but massaged to be 8210 easily useable by the script below. 8211 * relicensing-scripts/do-relicensing.sh: This is a simple command 8212 which performs the re-licensing on the files listed in the file 8213 above. 8214 82152020-05-29 Dodji Seketeli <dodji@redhat.com> 8216 8217 Add replace-spdx-license.sh script 8218 * relicensing-scripts/replace-spdx-license.sh: New script. 8219 82202020-05-27 Dodji Seketeli <dodji@redhat.com> 8221 8222 Add has-spdx-header.sh script 8223 * relicensing-scripts/has-spdx-header.sh: New script. 8224 82252020-05-29 Dodji Seketeli <dodji@redhat.com> 8226 8227 Add missing SPDX headers to source files not specifying any license 8228 * Makefile.am: Add a LGPL-3.0-or-later SPDX header prefixed 8229 with '##' so that that the header doesn't get emitted in the 8230 resulting Makefile.in file. Note that the license of Makefile.in 8231 files is "FSF All Permissible License", which virtually compatible 8232 with anything. 8233 * bash-completion/Makefile.am: Likewise. 8234 * doc/Makefile.am: Likewise 8235 * doc/manuals/Makefile.am: Likewise 8236 * include/Makefile.am: Likewise 8237 * src/Makefile.am: Likewise 8238 * tests/Makefile.am: Likewise 8239 * tests/data/Makefile.am: Likewise 8240 * tools/Makefile.am: Likewise 8241 * .clang-format: Add a LGPL-3.0-or-later SPDX header. 8242 * bash-completion/abicompat: Likewise. 8243 * bash-completion/abidiff: Likewise. 8244 * bash-completion/abidw: Likewise. 8245 * bash-completion/abilint: Likewise. 8246 * bash-completion/abinilint: Likewise. 8247 * bash-completion/abipkgdiff: Likewise. 8248 * bash-completion/abisym: Likewise. 8249 * bash-completion/fedabipkgdiff: Likewise. 8250 * configure.ac: Likewise. 8251 * default.abignore: Likewise. 8252 * doc/api/libabigail.doxy: Likewise. 8253 * doc/website/libabigail-website.doxy: Likewise. 8254 * include/abg-version.h.in: Likewise. 8255 * scripts/dot_to_png.sh: Likewise. 8256 * scripts/dot_to_svg.sh: Likewise. 8257 * scripts/make-verbose.sh: Likewise. 8258 * scripts/svg_to_plain_svg.sh: Likewise. 8259 * scripts/svg_to_png_and_pdf.sh: Likewise. 8260 * tests/runtestcanonicalizetypes.sh.in: Likewise. 8261 * tests/runtestdefaultsupprs.py.in: Likewise. 8262 * tests/runtestdefaultsupprspy3.sh.in: Likewise. 8263 * tests/runtestfedabipkgdiffpy3.sh.in: Likewise. 8264 * tests/update-test-output.py: Likewise. 8265 * update-copyright.sh: Likewise. 8266 82672020-03-07 Matthias Maennich <maennich@google.com> 8268 8269 Replace individual license references with SPDX Identifiers 8270 * abigail.m4: Replace the license header with the SPDX identifier 8271 GPL-3.0-or-later WITH GCC-exception-3.1 8272 * autoconf-archive/ax_check_python_modules.m4: Correctly set the 8273 SPDX identifier to FSFAP. 8274 * autoconf-archive/ax_compare_version.m4: Replace the license 8275 header with the SPDX identifier FSFAP. 8276 * autoconf-archive/ax_prog_python_version.m4: Likewise. 8277 header with the SPDX identifier FSFAP. 8278 * autoconf-archive/ax_valgrind_check.m4: Likewise. 8279 * gen-changelog.py: Replace the license header with the SPDX 8280 identifier LGPL-2.0-or-later. 8281 * include/abg-comp-filter.h: Replace the license header with the 8282 SPDX identifier LGPL-3.0-or-later. 8283 * include/abg-comparison.h: Likewise. 8284 * include/abg-config.h: Likewise. 8285 * include/abg-corpus.h: Likewise. 8286 * include/abg-cxx-compat.h: Replace the license header with the 8287 SPDX identifier LGPL-2.0-or-later. 8288 * include/abg-diff-utils.h: Replace the license header with the 8289 SPDX identifier LGPL-3.0-or-later 8290 * include/abg-dwarf-reader.h: Likewise. 8291 * include/abg-fwd.h: Likewise. 8292 * include/abg-hash.h: Likewise. 8293 * include/abg-ini.h: Likewise. 8294 * include/abg-interned-str.h: Likewise. 8295 * include/abg-ir.h: Likewise. 8296 * include/abg-libxml-utils.h: Likewise. 8297 * include/abg-libzip-utils.h: Likewise. 8298 * include/abg-reader.h: Likewise. 8299 * include/abg-regex.h: Likewise. 8300 * include/abg-reporter.h: Likewise. 8301 * include/abg-sptr-utils.h: Likewise. 8302 * include/abg-suppression.h: Likewise. 8303 * include/abg-tools-utils.h: Likewise. 8304 * include/abg-traverse.h: Likewise. 8305 * include/abg-viz-common.h: Likewise. 8306 * include/abg-viz-dot.h: Likewise. 8307 * include/abg-viz-svg.h: Likewise. 8308 * include/abg-workers.h: Likewise. 8309 * include/abg-writer.h: Likewise. 8310 * install-sh: Replace the license header with the SPDX identifier MIT. 8311 * ltmain.sh: Replace the license header with the SPDX identifier 8312 GPL-2.0-or-later. Note that this file has the libtool special 8313 exception which allows us to redistribute it under the general 8314 license of the project. 8315 * src/abg-comp-filter.cc: Replace the license header with the SPDX 8316 * src/abg-comparison-priv.h: Likewise. 8317 * src/abg-comparison.cc: Likewise. 8318 * src/abg-config.cc: Likewise. 8319 * src/abg-corpus-priv.h: Likewise. 8320 * src/abg-corpus.cc: Likewise. 8321 * src/abg-default-reporter.cc: Likewise. 8322 * src/abg-diff-utils.cc: Likewise. 8323 * src/abg-dwarf-reader.cc: Likewise. 8324 * src/abg-elf-helpers.cc: Likewise. 8325 * src/abg-elf-helpers.h: Likewise. 8326 * src/abg-regex.cc: Likewise. 8327 * src/abg-hash.cc: Likewise. 8328 * src/abg-ini.cc: Likewise. 8329 * src/abg-internal.h: Likewise. 8330 * src/abg-ir-priv.h: Likewise. 8331 * src/abg-ir.cc: Likewise. 8332 * src/abg-leaf-reporter.cc: Likewise. 8333 * src/abg-libxml-utils.cc: Likewise. 8334 * src/abg-libzip-utils.cc: Likewise. 8335 * src/abg-reader.cc: Likewise. 8336 * src/abg-reporter-priv.cc: Likewise. 8337 * src/abg-reporter-priv.h: Likewise. 8338 * src/abg-sptr-utils.cc: Likewise. 8339 * src/abg-suppression-priv.h: Likewise. 8340 * src/abg-suppression.cc: Likewise. 8341 * src/abg-tools-utils.cc: Likewise. 8342 * src/abg-traverse.cc: Likewise. 8343 * src/abg-viz-common.cc: Likewise. 8344 * src/abg-viz-dot.cc: Likewise. 8345 * src/abg-viz-svg.cc: Likewise. 8346 * src/abg-workers.cc: Likewise. 8347 * src/abg-writer.cc: Likewise. 8348 * tests/lib/catch.cc: Likewise. 8349 * tests/lib/catch.hpp: Add an SPDX identifier BSL-1.0. 8350 * tests/mockfedabipkgdiff.in: Replace the license header with the 8351 SPDX identifier GPL-3.0-or-later. 8352 * tests/print-diff-tree.cc: Likewise. 8353 * tests/runtestfedabipkgdiff.py.in: Replaace the license header 8354 with the SPDW identifier GPL-3.0-or-later. 8355 * tests/test-abicompat.cc: Replace the license header with the 8356 SPDX identifier LGPL-3.0-or-later. 8357 * tests/test-abidiff-exit.cc: Likewise. 8358 * tests/test-abidiff.cc: Likewise. 8359 * tests/test-alt-dwarf-file.cc: Likewise. 8360 * tests/test-annotate.cc: Likewise. 8361 * tests/test-cxx-compat.cc: Likewise. 8362 * tests/test-core-diff.cc: Likewise. 8363 * tests/test-diff-dwarf-abixml.cc: Likewise. 8364 * tests/test-diff-dwarf.cc: Likewise. 8365 * tests/test-diff-filter.cc: Likewise. 8366 * tests/test-diff-pkg.cc: Likewise. 8367 * tests/test-diff-suppr.cc: Likewise. 8368 * tests/test-diff2.cc: Likewise. 8369 * tests/test-dot.cc: Replace the license header with the 8370 SPDX identifier GPL-3.0-with-GCC-exception. 8371 * tests/test-elf-helpers.cc: Replace the license header with the 8372 SPDX identifier LGPL-3.0-or-later. 8373 * tests/test-ini.cc: Likewise. 8374 * tests/test-ir-walker.cc: Likewise. 8375 * tests/test-kmi-whitelist.cc: Likewise. 8376 * tests/test-lookup-syms.cc: Likewise. 8377 * tests/test-read-dwarf.cc: Likewise. 8378 * tests/test-read-write.cc: Likewise. 8379 * tests/test-svg.cc: Replace the license header with the SPDX 8380 identifier GPL-3.0-with-GCC-exception. 8381 * tests/test-symtab.cc: Replace the license header with the SPDX 8382 identifier LGPL-3.0-or-later. 8383 * tests/test-tools-utils.cc: Likewise. 8384 * tests/test-types-stability.cc: Likewise. 8385 * tests/test-utils.cc: Likewise. 8386 * tests/test-utils.h: Likewise. 8387 * tests/test-write-read-archive.cc: Likewise. 8388 * tools/abiar.cc: Likewise. 8389 * tools/abicompat.cc: Likewise. 8390 * tools/abidiff.cc: Likewise. 8391 * tools/abidw.cc: Likewise. 8392 * tools/abilint.cc: Likewise. 8393 * tools/abipkgdiff.cc: Likewise. 8394 * tools/abisym.cc: Likewise. 8395 * tools/binilint.cc: Likewise. 8396 * tools/fedabipkgdiff: Replace the license header with the 8397 SPDX identifier GPL-3.0-or-later. 8398 * tools/kmidiff.cc: Likewise. 8399 84002020-12-01 Dodji Seketeli <dodji@redhat.com> 8401 8402 Bump version number to 2.0 8403 * configure.ac: Bump number version to 2.0 8404 84052020-12-01 Dodji Seketeli <dodji@redhat.com> 8406 8407 Update NEWS file for 1.8 8408 * NEWS: Update for 1.8 8409 84102020-12-01 Dodji Seketeli <dodji@redhat.com> 8411 8412 Update the Changelog for 1.8 8413 * Changelog: Update automatically with "make update-changelog' 8414 84152020-12-01 Dodji Seketeli <dodji@redhat.com> 8416 8417 Add check-self-compare to release regression testing 8418 * Makefile.am: Make 'make tarball-and-all' run the 8419 'check-self-compare' target as part of the release process. 8420 84212020-12-01 Dodji Seketeli <dodji@redhat.com> 8422 8423 configure: add --enable-rpm415 option 8424 * configure: Introduce the --{en, dis}able-rpm415 option. 8425 84262020-11-30 Dodji Seketeli <dodji@redhat.com> 8427 8428 dwarf-reader: Bug 26908 - don't crash on empty DW_TAG_partial_unit 8429 * src/abg-dwarf-reader.cc (die_has_children): Define new static 8430 function. 8431 (read_context::build_die_parent_relations_under): Do not try to 8432 instantiate an imported_unit_point type for an imported unit with 8433 no children node. 8434 (imported_unit_point::imported_unit_point): Assert that the 8435 imported die has a sub-tree. 8436 (imported_unit_point::imported_unit_point): Remove useless spaces. 8437 84382020-11-27 Dodji Seketeli <dodji@redhat.com> 8439 8440 reader: Fix off-by-one error in assert 8441 * src/abg-reader.cc (build_subrange_type): Fix off-by-one error. 8442 84432020-11-27 Dodji Seketeli <dodji@redhat.com> 8444 8445 writer: fix off-by-one error in assertion 8446 * src/abg-writer.cc (write_array_subrange_type): Fix off-by-one 8447 error in assertion. 8448 * src/abg-dwarf-reader.cc (build_subrange_type): Assert the length 8449 of the array complies with its bounds. 8450 84512020-11-27 Dodji Seketeli <dodji@redhat.com> 8452 8453 abipkgdiff: make --self-check to fail on any change against own ABIXML 8454 * tools/abipkgdiff.cc (compare_to_self): Report *any* ABI change. 8455 Not just the "net" changes. 8456 84572020-11-26 Dodji Seketeli <dodji@redhat.com> 8458 8459 abidw: make --abidiff report any change against own ABIXML 8460 * tools/abidw.cc (load_corpus_and_write_abixml): Emit an error 8461 when comparing the binary to its ABIXML representation yields any 8462 change. 8463 84642020-11-27 Dodji Seketeli <dodji@redhat.com> 8465 8466 dwarf-reader: Avoid having several functions with the same symbol 8467 * src/abg-dwarf-reader.cc 8468 (read_context::symbol_already_belongs_to_a_function): Define new 8469 member function. 8470 (read_context::fixup_functions_with_no_symbols): Use the new 8471 symbol_already_belongs_to_a_function function to avoid setting a 8472 symbol that already belongs to a function. 8473 * tests/data/test-read-dwarf/PR22122-libftdc.so.abi: Adjust. 8474 * tests/data/test-read-dwarf/test10-pr18818-gcc.so.abi: Likewise. 8475 * tests/data/test-read-dwarf/test16-pr18904.so.abi: Likewise. 8476 * tests/data/test-read-dwarf/test22-pr19097-libstdc++.so.6.0.17.so.abi: 8477 Likewise. 8478 84792020-11-27 Dodji Seketeli <dodji@redhat.com> 8480 8481 reader: Don't lose anonymous-ness of decl-only classes 8482 * src/abg-reader.cc (build_class_decl): Set the is-anonymous flag 8483 when reading a decl-only class. 8484 84852020-11-27 Dodji Seketeli <dodji@redhat.com> 8486 8487 ir: Introduce internal pretty representation for anonymous classes 8488 * include/abg-fwd.h (get_class_or_union_flat_representation): 8489 Introduce an "internal" parameter. 8490 * src/abg-ir.cc (get_class_or_union_flat_representation): 8491 Introduce an "internal" parameter. In the flat representation of 8492 a class for internal purposes, always use the prefix "class" even 8493 if this is a struct. 8494 (get_type_name): To build an internal name for a 8495 reference or pointer to an anonymous type, consider the namespace 8496 name of said type. 8497 (equals): In the overload for decl_base, take the namespace name 8498 of anonymous decls into account when comparing them. 8499 ({var_decl, union_decl}::get_pretty_representation): Adjust calls 8500 to get_class_or_union_flat_representation to pass a proper 8501 "internal" argument. 8502 * src/abg-default-reporter.cc (default_reporter::report): Adjust 8503 the call to get_class_or_union_flat_representation to pass an 8504 "internal" argument set to 'false'. 8505 * tests/data/test-annotate/libtest23.so.abi: Adjust. 8506 * tests/data/test-read-dwarf/PR22122-libftdc.so.abi: Likewise. 8507 * tests/data/test-read-dwarf/libtest23.so.abi: Likewise. 8508 * tests/data/test-read-dwarf/test10-pr18818-gcc.so.abi: Likewise. 8509 * tests/data/test-read-dwarf/test11-pr18828.so.abi: Likewise. 8510 * tests/data/test-read-dwarf/test12-pr18844.so.abi: Likewise. 8511 * tests/data/test-read-dwarf/test9-pr18818-clang.so.abi: Likewise. 8512 * tests/data/test-read-dwarf/test-libandroid.so.abi: Likewise. 8513 85142020-11-26 Dodji Seketeli <dodji@redhat.com> 8515 8516 writer: Emit definitions of declarations when they are present 8517 * src/abg-writer.cc (write_class_decl, write_union_decl): Get the 8518 definition of the declaration if it exists and emit that. 8519 * tests/data/test-read-dwarf/test13-pr18894.so.abi: Adjust. 8520 * tests/data/test-read-dwarf/test15-pr18892.so.abi: Likewise. 8521 * tests/data/test-read-dwarf/test21-pr19092.so.abi: Likewise. 8522 * tests/data/test-annotate/test13-pr18894.so.abi: Likewise. 8523 * tests/data/test-annotate/test15-pr18892.so.abi: Likewise. 8524 * tests/data/test-annotate/test21-pr19092.so.abi: Likewise. 8525 85262020-11-26 Dodji Seketeli <dodji@redhat.com> 8527 8528 Bug 26780 - Fix array subrange bounds (de)serialization 8529 * src/abg-reader.cc (build_subrange_type): Read lower-bound 8530 attribute if present. Then try to read upper-bound attribute as 8531 well. If this is not an infinite subrange assert that the length 8532 must be equal to the difference between the bounds. 8533 * src/abg-writer.cc (write_array_subrange_type): Write the 8534 lower-bound if it's present and not zero. In that case, write the 8535 upper-bound as well. 8536 * tests/data/test-diff-pkg/hdf5-1.10.6-2.fc33.x86_64.rpm: Add new 8537 binary test input. 8538 * tests/data/test-diff-pkg/hdf5-debuginfo-1.10.6-2.fc33.x86_64.rpm: 8539 Likewise. 8540 * tests/data/test-diff-pkg/hdf5-1.10.6-2.fc33.x86_64.self-check-report-0.txt: 8541 Add new reference output. 8542 * tests/data/Makefile.am: Add the new test material above to 8543 source distribution. 8544 * tests/test-diff-pkg.cc (in_out_specs): Add the binary test input 8545 to the set of --self-check tests. 8546 85472020-11-26 Dodji Seketeli <dodji@redhat.com> 8548 8549 reader: Read array subrange length into an uint64_t 8550 * src/abg-reader.cc (build_subrange_type): Change the type of 8551 length to uint64_t and read it using strtoull. 8552 85532020-11-25 Dodji Seketeli <dodji@redhat.com> 8554 8555 abipkgdiff: Avoid uncertainty when sorting worker tasks 8556 * elf_size_is_greater: Take the name of the binaries into account 8557 when their size is equal. Also, assert that all comparison tasks 8558 have compared binaries. 8559 85602020-11-25 Dodji Seketeli <dodji@redhat.com> 8561 8562 tests/data/test-fedabipkgdiff: Update reference output 8563 * tests/data/test-fedabipkgdiff/test7-self-compare-from-fc23-dbus-glib-report-0.txt: 8564 Adjust. 8565 85662020-11-24 Matthias Maennich <maennich@google.com> 8567 8568 abipkgdiff: minor cleanups 8569 * tools/abipkgdiff.cc: remove unused using statements 8570 (self_compare_task): remove shadowing members and delegate 8571 construction to base class. 8572 85732020-11-23 Dodji Seketeli <dodji@redhat.com> 8574 8575 dwarf-reader: support artificially generated translation units 8576 * configure.ac: Detect if we are running on RPM >= 4.15. If yes, 8577 then define the preprocessor macro RPM_4_15. If that macro is 8578 defined then test-diff-pkg.cc can support RPMs from Fedora >= 31 8579 as those are compressed with zstd. Earlier RPM versions don't 8580 support that compression scheme. 8581 * src/abg-dwarf-reader.cc (build_translation_unit_and_add_to_ir): 8582 Suffix the offset of the translation unit to its name when that 8583 name is "<artificial>". 8584 * tests/data/test-diff-pkg/mesa-libGLU-9.0.1-3.fc33.x86_64.rpm: 8585 New binary test input. 8586 * tests/data/test-diff-pkg/mesa-libGLU-debuginfo-9.0.1-3.fc33.x86_64.rpm: Likewise. 8587 * tests/data/test-diff-pkg/mesa-libGLU-9.0.1-3.fc33.x86_64.self-check-report-0.txt: 8588 New reference output for the binary test input above. 8589 * tests/data/Makefile.am: Add the new test inputs above to source 8590 distribution. 8591 * tests/test-diff-pkg.cc (in_out_specs): Add the binary test 8592 inputs above to source distribution if we are running on an RPM 8593 version >= 4.15. 8594 85952020-11-20 Dodji Seketeli <dodji@redhat.com> 8596 8597 fedabipkgdiff: make --self-compare use abipkgdiff --self-check 8598 * tools/fedabipkgdiff (abipkgdiff): If the user provides the 8599 --self-compare options, generate the abipkgdiff command by using 8600 the --self-check option. 8601 (run_abipkgdiff): Each return value of the abipkgidiff runs can be 8602 negative because they are unsigned values in essence, but as 8603 python doesn't seem to have a unsigned integer type. So we need 8604 to consider the max of the absolute value of the return codes 8605 here. 8606 * tests/data/test-fedabipkgdiff/test7-self-compare-from-fc23-dbus-glib-report-0.txt: 8607 Adjust. 8608 86092020-11-19 Dodji Seketeli <dodji@redhat.com> 8610 8611 abipkgdiff: Add a new --self-check option 8612 * tools/abipkgdiff.cc (options::self_check): Define new data 8613 member. 8614 (options::options): Initialize it. 8615 (display_usage): Add help string for the --self-check option. 8616 (parse_command): Parse the new --self-check option. 8617 (extract_deb): Add missing newline. 8618 (compare): Remove useless white space. 8619 (compare_to_self, self_compare_prepared_userspace_package) 8620 (self_compare_prepared_package, compare_to_self): Add new static 8621 functions. 8622 (class self_compare_task): Add new class. 8623 (prepare_package): Add a new overload that takes just one 8624 parameter. 8625 (elf_size_is_greater): Don't crash if the args are empty. 8626 (main): If the --self-check option is given, make sure we have 8627 just one package in argument. Use the new compare_to_self 8628 function to handle the --self-check option. 8629 * doc/manuals/abipkgdiff.rst: Add documentation for the new 8630 --self-check option. 8631 86322020-11-16 Dodji Seketeli <dodji@redhat.com> 8633 8634 Bug 26769 - Fix missing types in abixml output 8635 * include/abg-corpus.h (corpus::{record_canonical_type, 8636 lookup_canonical_type}): Remove function declarations. 8637 * src/abg-corpus-priv.h (corpus::priv::canonical_types_): Remove 8638 data member. 8639 * src/abg-corpus.cc (corpus::{record_canonical_type, 8640 lookup_canonical_type}): Remove functions. 8641 * src/abg-ir.cc (type_eligible_for_odr_based_comparison): Remove 8642 static function. 8643 (type_base::get_canonical_type_for): Don't perform the ODR-based 8644 optimization for C++ anymore. 8645 * src/abg-reader.cc 8646 (read_context&::maybe_add_var_to_exported_decls): Don't add a 8647 variable that hasn't been added to its scope. Otherwise, it means 8648 we added a variable that wasn't yet properly constructed. Also 8649 add a new overload for var_decl_sptr&. 8650 (build_var_decl): Do not add the var to its the set of exported 8651 declaration before we are sure it has been fully constructed and 8652 added to the scope it belongs. 8653 (build_class_decl): Only add *static* data members to the list of 8654 exported declarations. 8655 (handle_var_decl): A var decl seen here is a global variable 8656 declaration. Add it to the list of exported declarations. 8657 * src/abg-writer.cc (write_context::decl_only_type_is_emitted): 8658 Constify parameter. 8659 (write_translation_unit): Do not forget to emit referenced types 8660 that were maybe not canonicalized. Also, avoid using noop_deleter 8661 when it's not necessary. 8662 (write_namespace_decl): Do not forget to emit canonicalized types 8663 that are present in namespaces other than the global namespace. 8664 * tests/runtestslowselfcompare.sh.in: New test that compares 8665 libabigail.so against its own ABIXML representation. 8666 * tests/Makefile.am: Add the new test runtestslowselfcompare.sh to 8667 source distribution. This test is too slow to be run during the 8668 course of 'make check'. It takes more than 5 minutes on my slow 8669 box here. Rather, it can be run using 'make check-self-compare'. 8670 I plan to run this before releases now. 8671 * tests/data/test-annotate/libtest24-drop-fns-2.so.abi: Adjust. 8672 * tests/data/test-annotate/libtest24-drop-fns.so.abi: Likewise. 8673 * tests/data/test-annotate/test0.abi: Likewise. 8674 * tests/data/test-annotate/test13-pr18894.so.abi: Likewise. 8675 * tests/data/test-annotate/test14-pr18893.so.abi: Likewise. 8676 * tests/data/test-annotate/test15-pr18892.so.abi: Likewise. 8677 * tests/data/test-annotate/test17-pr19027.so.abi: Likewise. 8678 * tests/data/test-annotate/test18-pr19037-libvtkRenderingLIC-6.1.so.abi: 8679 Likewise. 8680 * tests/data/test-annotate/test19-pr19023-libtcmalloc_and_profiler.so.abi: 8681 Likewise. 8682 * tests/data/test-annotate/test20-pr19025-libvtkParallelCore-6.1.so.abi: 8683 Likewise. 8684 * tests/data/test-annotate/test21-pr19092.so.abi: Likewise. 8685 * tests/data/test-read-dwarf/PR22015-libboost_iostreams.so.abi: 8686 Likewise. 8687 * tests/data/test-read-dwarf/PR22122-libftdc.so.abi: Likewise. 8688 * tests/data/test-read-dwarf/PR25042-libgdbm-clang-dwarf5.so.6.0.0.abi: 8689 Likewise. 8690 * tests/data/test-read-dwarf/PR26261/PR26261-exe.abi: Likewise. 8691 * tests/data/test-read-dwarf/libtest24-drop-fns-2.so.abi: 8692 Likewise. 8693 * tests/data/test-read-dwarf/libtest24-drop-fns.so.abi: Likewise. 8694 * tests/data/test-read-dwarf/test-libandroid.so.abi: Likewise. 8695 * tests/data/test-read-dwarf/test0.abi: Likewise. 8696 * tests/data/test-read-dwarf/test0.hash.abi: Likewise. 8697 * tests/data/test-read-dwarf/test10-pr18818-gcc.so.abi: Likewise. 8698 * tests/data/test-read-dwarf/test11-pr18828.so.abi: Likewise. 8699 * tests/data/test-read-dwarf/test12-pr18844.so.abi: Likewise. 8700 * tests/data/test-read-dwarf/test14-pr18893.so.abi: Likewise. 8701 * tests/data/test-read-dwarf/test15-pr18892.so.abi: Likewise. 8702 * tests/data/test-read-dwarf/test16-pr18904.so.abi: Likewise. 8703 * tests/data/test-read-dwarf/test17-pr19027.so.abi: Likewise. 8704 * tests/data/test-read-dwarf/test18-pr19037-libvtkRenderingLIC-6.1.so.abi: 8705 Likewise. 8706 * tests/data/test-read-dwarf/test19-pr19023-libtcmalloc_and_profiler.so.abi: 8707 Likewise. 8708 * tests/data/test-read-dwarf/test20-pr19025-libvtkParallelCore-6.1.so.abi: 8709 Likewise. 8710 * tests/data/test-read-dwarf/test21-pr19092.so.abi: Likewise. 8711 * tests/data/test-read-dwarf/test22-pr19097-libstdc++.so.6.0.17.so.abi: 8712 Likewise. 8713 * tests/data/test-read-dwarf/test9-pr18818-clang.so.abi: Likewise. 8714 * tests/data/test-read-write/test28-without-std-fns-ref.xml: 8715 Likewise. 8716 * tests/data/test-read-write/test28-without-std-vars-ref.xml: 8717 Likewise. 8718 * tests/data/test-read-write/test6.xml: Likewise. 8719 87202020-11-13 Dodji Seketeli <dodji@redhat.com> 8721 8722 Make sure to canonicalize all types but decl-only classes 8723 * include/abg-fwd.h (is_declaration_only_class_or_union_type): 8724 Declare new ... 8725 * src/abg-ir.cc (is_declaration_only_class_or_union_type): 8726 ... function. 8727 (clone_array): Add the cloned array subrange to 8728 its scope so that it can later be canonicalized. 8729 (synthesize_type_from_translation_unit) 8730 (synthesize_function_type_from_translation_unit): Canonicalize the 8731 synthesized types. 8732 (hash_as_canonical_type_or_constant): Ensure that all types are 8733 canonicalized. 8734 * src/abg-dwarf-reader.cc (maybe_canonicalize_type): Remove 8735 useless overload. 8736 (build_ir_node_for_variadic_parameter_type) 8737 (schedule_array_tree_for_late_canonicalization): Define new static 8738 functions. 8739 (maybe_strip_qualification): Schedule type canonicalization for 8740 types cloned prior to editing. 8741 (build_function_type): Use the new 8742 build_ir_node_for_variadic_parameter_type. It takes care of 8743 canonicalizing variadic parameter types. 8744 (build_function_decl): Canonicalize the function type that is 8745 created here. 8746 (build_ir_node_from_die): Use the overload of 8747 maybe_canonicalize_type which canonicalizes class_or_union nodes 8748 directly, rather than the one which handles DIE offsets. The 8749 latter was used as an optimization to reduce the size of the array 8750 of types scheduled for canonicalization, as DIE offsets take less 8751 space than pointers to IR types. Now that we have DIE 8752 de-duplication, my bet is that we can do away with the former. 8753 And that also ensures that we miss no type for canonicalization 8754 purposes. 8755 * src/abg-reader.cc (build_array_type_def): Canonicalize the 8756 subrange types of the array. 8757 (build_type): Canonicalize all types. 8758 * tests/data/test-annotate/libtest23.so.abi: Adjust. 8759 * tests/data/test-annotate/libtest24-drop-fns-2.so.abi: Likewise. 8760 * tests/data/test-annotate/libtest24-drop-fns.so.abi: Likewise. 8761 * tests/data/test-annotate/test0.abi: Likewise. 8762 * tests/data/test-annotate/test13-pr18894.so.abi: Likewise. 8763 * tests/data/test-annotate/test15-pr18892.so.abi: Likewise. 8764 * tests/data/test-annotate/test17-pr19027.so.abi: Likewise. 8765 * tests/data/test-annotate/test18-pr19037-libvtkRenderingLIC-6.1.so.abi: 8766 Likewise. 8767 * tests/data/test-annotate/test19-pr19023-libtcmalloc_and_profiler.so.abi: 8768 Likewise. 8769 * tests/data/test-annotate/test20-pr19025-libvtkParallelCore-6.1.so.abi: 8770 Likewise. 8771 * tests/data/test-annotate/test21-pr19092.so.abi: Likewise. 8772 * tests/data/test-diff-filter/test30-pr18904-rvalueref-report0.txt: 8773 Likewise. 8774 * tests/data/test-diff-filter/test30-pr18904-rvalueref-report1.txt: 8775 Likewise. 8776 * tests/data/test-diff-filter/test30-pr18904-rvalueref-report2.txt: 8777 Likewise. 8778 * tests/data/test-diff-filter/test35-pr18754-no-added-syms-report-0.txt: 8779 Likewise. 8780 * tests/data/test-read-dwarf/PR22015-libboost_iostreams.so.abi: 8781 Likewise. 8782 * tests/data/test-read-dwarf/PR22122-libftdc.so.abi: Likewise. 8783 * tests/data/test-read-dwarf/PR25042-libgdbm-clang-dwarf5.so.6.0.0.abi: 8784 Likewise. 8785 * tests/data/test-read-dwarf/libtest23.so.abi: Likewise. 8786 * tests/data/test-read-dwarf/libtest24-drop-fns-2.so.abi: 8787 Likewise. 8788 * tests/data/test-read-dwarf/libtest24-drop-fns.so.abi: Likewise. 8789 * tests/data/test-read-dwarf/test-libandroid.so.abi: Likewise. 8790 * tests/data/test-read-dwarf/test0.abi: Likewise. 8791 * tests/data/test-read-dwarf/test0.hash.abi: Likewise. 8792 * tests/data/test-read-dwarf/test10-pr18818-gcc.so.abi: Likewise. 8793 * tests/data/test-read-dwarf/test11-pr18828.so.abi: Likewise. 8794 * tests/data/test-read-dwarf/test12-pr18844.so.abi: Likewise. 8795 * tests/data/test-read-dwarf/test13-pr18894.so.abi: Likewise. 8796 * tests/data/test-read-dwarf/test15-pr18892.so.abi: Likewise. 8797 * tests/data/test-read-dwarf/test16-pr18904.so.abi: Likewise. 8798 * tests/data/test-read-dwarf/test17-pr19027.so.abi: Likewise. 8799 * tests/data/test-read-dwarf/test18-pr19037-libvtkRenderingLIC-6.1.so.abi: 8800 Likewise. 8801 * tests/data/test-read-dwarf/test19-pr19023-libtcmalloc_and_profiler.so.abi: 8802 Likewise. 8803 * tests/data/test-read-dwarf/test20-pr19025-libvtkParallelCore-6.1.so.abi: 8804 Likewise. 8805 * tests/data/test-read-dwarf/test21-pr19092.so.abi: Likewise. 8806 * tests/data/test-read-dwarf/test22-pr19097-libstdc++.so.6.0.17.so.abi: 8807 Likewise. 8808 * tests/data/test-read-dwarf/test9-pr18818-clang.so.abi: Likewise. 8809 88102020-11-13 Dodji Seketeli <dodji@redhat.com> 8811 8812 ir: Add equality op to array_type_def::subrange_type::bound_value 8813 * include/abg-ir.h 8814 (array_type_def::subrange_type::bound_value::operator==): Declare 8815 new ... 8816 * src/abg-ir.cc 8817 (array_type_def::subrange_type::bound_value::operator==): 8818 ... equality operator. 8819 88202020-11-12 Dodji Seketeli <dodji@redhat.com> 8821 8822 writer: Sort decls and fix topological sorting for types 8823 * include/abg-ir.h (scope_decl::get_sorted_member_decls): Declare 8824 new member function. 8825 * src/abg-ir.cc (struct decl_topo_comp): New sorting functor. 8826 (type_topo_comp::operator()): Re-use the decl_topo_comp to sort 8827 type declarations. 8828 (scope_decl::priv::sorted_members_): Add new data member. 8829 (scope_decl::get_sorted_member_decls): Define new member function. 8830 * src/abg-writer.cc (write_translation_unit): Use the new 8831 scope_decl::get_sorted_member_decls. 8832 * tests/data/test-annotate/libtest23.so.abi: Adjust. 8833 * tests/data/test-annotate/test15-pr18892.so.abi: Likewise. 8834 * tests/data/test-annotate/test17-pr19027.so.abi: Likewise. 8835 * tests/data/test-annotate/test18-pr19037-libvtkRenderingLIC-6.1.so.abi: 8836 Likewise. 8837 * tests/data/test-annotate/test19-pr19023-libtcmalloc_and_profiler.so.abi: 8838 Likewise. 8839 * tests/data/test-annotate/test20-pr19025-libvtkParallelCore-6.1.so.abi: 8840 Likewise. 8841 * tests/data/test-annotate/test21-pr19092.so.abi: Likewise. 8842 * tests/data/test-read-dwarf/libtest23.so.abi: Likewise. 8843 * tests/data/test-read-dwarf/test-libandroid.so.abi: Likewise. 8844 * tests/data/test-read-dwarf/test15-pr18892.so.abi: Likewise. 8845 * tests/data/test-read-dwarf/test17-pr19027.so.abi: Likewise. 8846 * tests/data/test-read-dwarf/test18-pr19037-libvtkRenderingLIC-6.1.so.abi: 8847 Likewise. 8848 * tests/data/test-read-dwarf/test19-pr19023-libtcmalloc_and_profiler.so.abi: 8849 Likewise. 8850 * tests/data/test-read-dwarf/test20-pr19025-libvtkParallelCore-6.1.so.abi: 8851 Likewise. 8852 * tests/data/test-read-dwarf/test21-pr19092.so.abi: Likewise. 8853 * tests/data/test-read-dwarf/test22-pr19097-libstdc++.so.6.0.17.so.abi: 8854 Likewise. 8855 * tests/data/test-read-write/test2.xml: Likewise. 8856 * tests/data/test-read-write/test28-without-std-fns-ref.xml: 8857 Likewise. 8858 * tests/data/test-read-write/test28-without-std-vars-ref.xml: 8859 Likewise. 8860 88612020-10-27 Dodji Seketeli <dodji@redhat.com> 8862 8863 Bug PR26739 - Handle qualified typedef array types 8864 * include/abg-fwd.h (is_typedef_of_array, clone_array) 8865 (clone_typedef, clone_qualified_type, clone_array_tree): Declare 8866 new functions. 8867 (peel_qualified_or_typedef_type): Declare new overload. 8868 (is_array_of_qualified_element): Constify the parameter. 8869 * include/abg-ir.h ({qualified_type, 8870 typedef}_def::set_underlying_type): Add new member functions. 8871 (array_type_def::subrange_type::subrange_type): Make constify the 8872 reference to the underlying type parameter. 8873 * src/abg-ir.cc (is_array_of_qualified_element): Constify the 8874 parameter. 8875 (peel_qualified_or_typedef_type): Define new 8876 overload for type_base_sptr. 8877 (clone_typedef_array_qualified_type): Define static function. 8878 (clone_array clone_typedef, clone_qualified_type) 8879 (clone_array_tree, is_typedef_of_array): Define new functions. 8880 (qualified_type_def::get_underlying_type): Rename the return type 8881 shared_ptr<type_base> into type_base_sptr. 8882 ({typedef, qualified_type}_def::set_underlying_type): Define new 8883 member function. 8884 (array_type_def::subrange_type::priv::priv): Initialize the 8885 'infinite_' data member. 8886 * src/abg-dwarf-reader.cc (maybe_strip_qualification): Handle 8887 qualified typedef of arrays. Merge this with the handling of 8888 qualified arrays. Note that before editing the elements of the 8889 array to make the array (or typedef) qualifier apply to the 8890 element the sub-tree is cloned to make its type nodes be 8891 'un-shared'. This prevents us from editing type nodes that are 8892 shared by other type expressions. 8893 * tests/data/test-diff-filter/test-PR26739-report-0.txt: New 8894 reference test output. 8895 * tests/data/test-diff-filter/test-PR26739-2-report-0.txt: Likewise. 8896 * tests/data/test-diff-filter/test-PR26739-v{0,1}.c: Source code 8897 of new binary test input. 8898 * tests/data/test-diff-filter/test-PR26739-2-v{0,1}.c: Likewise. 8899 * tests/data/test-diff-filter/test-PR26739-v{0,1}.o: New binary 8900 test inputs. 8901 * tests/data/test-diff-filter/test-PR26739-2-v{0,1}.o: Likewise. 8902 * tests/data/Makefile.am: Add the new test material above to 8903 source distribution. 8904 * tests/test-diff-filter.cc (in_out_specs): Add the test inputs 8905 above to this harness. 8906 * tests/data/test-annotate/test15-pr18892.so.abi: Adjust. 8907 * tests/data/test-annotate/test17-pr19027.so.abi: Likewise. 8908 * tests/data/test-annotate/test19-pr19023-libtcmalloc_and_profiler.so.abi: 8909 Likewise. 8910 * tests/data/test-annotate/test21-pr19092.so.abi: Likewise. 8911 * tests/data/test-read-dwarf/PR22122-libftdc.so.abi: Likewise. 8912 * tests/data/test-read-dwarf/test12-pr18844.so.abi: Likewise. 8913 * tests/data/test-read-dwarf/test15-pr18892.so.abi: Likewise. 8914 * tests/data/test-read-dwarf/test17-pr19027.so.abi: Likewise. 8915 * tests/data/test-read-dwarf/test19-pr19023-libtcmalloc_and_profiler.so.abi: Likewise. 8916 * tests/data/test-read-dwarf/test21-pr19092.so.abi: Likewise. 8917 * tests/data/test-read-dwarf/test22-pr19097-libstdc++.so.6.0.17.so.abi: Likewise. 8918 89192020-11-03 Dodji Seketeli <dodji@redhat.com> 8920 8921 Update test-libandroid.so.abi 8922 * tests/data/test-read-dwarf/test-libandroid.so.abi: Update. 8923 89242020-10-29 Matthias Maennich <maennich@google.com> 8925 8926 dwarf-reader: Ignore zero length location expressions from DW_AT_location 8927 * src/abg-dwarf-reader.cc (die_location_expr): Ignore zero 8928 length location expressions. 8929 * tests/data/Makefile.am: Add new test files. 8930 * tests/data/test-read-dwarf/test-libandroid.so: New test file. 8931 * tests/data/test-read-dwarf/test-libandroid.so.abi: Likewise. 8932 * tests/test-read-dwarf.cc: Add new test case. 8933 Reported-by: Dan Albert <danalbert@google.com> 8934 Reviewed-by: Giuliano Procida <gprocida@google.com> 8935 Cc: Mark Wielaard <mark@klomp.org> 8936 89372020-10-29 Giuliano Procida <gprocida@google.com> 8938 8939 Improve enum synthetic type names 8940 * src/abg-dwarf-reader.cc 8941 (build_internal_underlying_enum_type_name): Add a size 8942 argument (and don't default is_anonymous argument). Append 8943 size of type to synthetic type name. 8944 (build_enum_underlying_type): Pass type size to 8945 build_internal_underlying_enum_type_name. 8946 * tests/data/test-abidiff-exit/test-decl-enum-report-3.txt: 8947 Update. Note that there may be an issue with leaf-mode 8948 reporting of pointer type changes. 8949 * tests/data/test-diff-dwarf-abixml/PR25409-librte_bus_dpaa.so.20.0.abi: 8950 Regenerate this (catching up with various abidw updates). 8951 * tests/data/test-annotate/test-anonymous-members-0.o.abi: 8952 Refresh with new type names. 8953 * tests/data/test-annotate/test0.abi: Likewise. 8954 * tests/data/test-annotate/test13-pr18894.so.abi: Likewise. 8955 * tests/data/test-annotate/test14-pr18893.so.abi: Likewise. 8956 * tests/data/test-annotate/test15-pr18892.so.abi: Likewise. 8957 * tests/data/test-annotate/test17-pr19027.so.abi: Likewise. 8958 * tests/data/test-annotate/test18-pr19037-libvtkRenderingLIC-6.1.so.abi: 8959 Likewise. 8960 * tests/data/test-annotate/test19-pr19023-libtcmalloc_and_profiler.so.abi: 8961 Likewise. 8962 * tests/data/test-annotate/test20-pr19025-libvtkParallelCore-6.1.so.abi: 8963 Likewise. 8964 * tests/data/test-annotate/test21-pr19092.so.abi: Likewise. 8965 * tests/data/test-read-dwarf/PR22015-libboost_iostreams.so.abi: 8966 Likewise. 8967 * tests/data/test-read-dwarf/PR22122-libftdc.so.abi: Likewise. 8968 * tests/data/test-read-dwarf/PR25007-sdhci.ko.abi: Likewise. 8969 * tests/data/test-read-dwarf/PR25042-libgdbm-clang-dwarf5.so.6.0.0.abi: 8970 Likewise. 8971 * tests/data/test-read-dwarf/test0.abi: Likewise. 8972 * tests/data/test-read-dwarf/test0.hash.abi: Likewise. 8973 * tests/data/test-read-dwarf/test10-pr18818-gcc.so.abi: Likewise. 8974 * tests/data/test-read-dwarf/test11-pr18828.so.abi: Likewise. 8975 * tests/data/test-read-dwarf/test12-pr18844.so.abi: Likewise. 8976 * tests/data/test-read-dwarf/test13-pr18894.so.abi: Likewise. 8977 * tests/data/test-read-dwarf/test14-pr18893.so.abi: Likewise. 8978 * tests/data/test-read-dwarf/test15-pr18892.so.abi: Likewise. 8979 * tests/data/test-read-dwarf/test16-pr18904.so.abi: Likewise. 8980 * tests/data/test-read-dwarf/test17-pr19027.so.abi: Likewise. 8981 * tests/data/test-read-dwarf/test18-pr19037-libvtkRenderingLIC-6.1.so.abi: 8982 Likewise. 8983 * tests/data/test-read-dwarf/test19-pr19023-libtcmalloc_and_profiler.so.abi: 8984 Likewise. 8985 * tests/data/test-read-dwarf/test20-pr19025-libvtkParallelCore-6.1.so.abi: 8986 Likewise. 8987 * tests/data/test-read-dwarf/test21-pr19092.so.abi: Likewise. 8988 * tests/data/test-read-dwarf/test22-pr19097-libstdc++.so.6.0.17.so.abi: 8989 Likewise. 8990 * tests/data/test-read-dwarf/test9-pr18818-clang.so.abi: Likewise. 8991 89922020-10-29 Giuliano Procida <gprocida@google.com> 8993 8994 Improve and stabilise sort of member functions 8995 * src/abg-ir.cc 8996 (virtual_member_function_less_than::operator()): Name 8997 temporaries like offsets and symbols to reduce repetition; 8998 test each pair of elements (including symbol presence) and 8999 return immediately if there's a difference; add a comparison 9000 of linkage name just after comparing symbol names. 9001 (sort_virtual_member_functions): Use stable_sort instead of 9002 sort. 9003 * tests/data/test-read-dwarf/PR22015-libboost_iostreams.so.abi: 9004 Update with new ordering of member functions. 9005 * tests/data/test-read-dwarf/test22-pr19097-libstdc++.so.6.0.17.so.abi: 9006 Likewise. 9007 90082020-11-01 Dodji Seketeli <dodji@redhat.com> 9009 9010 update-test-output.py: Update syntax 9011 * tests/update-test-output.py: Update syntax for python3. 9012 90132020-10-31 Dodji Seketeli <dodji@redhat.com> 9014 9015 Bug 26770 - Spurious declaration-only-ness induces spurious type changes 9016 * src/abg-dwarf-reader.cc (add_or_update_class_type): When 9017 creating a class, set declaration-only-ness unconditionally. When 9018 updating the class however, only set the declaration-only-ness 9019 when the current one is not consistent with the size of the class. 9020 * tests/data/test-annotate/test14-pr18893.so.abi: Adjust. 9021 * tests/data/test-annotate/test19-pr19023-libtcmalloc_and_profiler.so.abi: Likewise. 9022 * tests/data/test-annotate/test20-pr19025-libvtkParallelCore-6.1.so.abi: Likewise. 9023 * tests/data/test-read-dwarf/test14-pr18893.so.abi: Likewise. 9024 * tests/data/test-read-dwarf/test19-pr19023-libtcmalloc_and_profiler.so.abi: Likewise. 9025 * tests/data/test-read-dwarf/test20-pr19025-libvtkParallelCore-6.1.so.abi: Likewise. 9026 * tests/data/test-read-dwarf/test22-pr19097-libstdc++.so.6.0.17.so.abi: Likewise. 9027 90282020-10-21 Matthias Maennich <maennich@google.com> 9029 9030 dwarf-reader: fix lookup for repeated translation unit paths 9031 * src/abg-dwarf-reader.cc(build_translation_unit_and_add_to_ir): 9032 Fix lookup for potentially already existing translation units. 9033 Reported-by: Dan Albert <danalbert@google.com> 9034 90352020-10-21 Giuliano Procida <gprocida@google.com> 9036 9037 Stabilise sort of canonical types 9038 * src/abg-ir.cc (scope_decl::get_sorted_canonical_types): Sort 9039 canonical types with std::stable_sort(..., type_topo_comp()). 9040 Reviewed-by: Matthias Maennich <maennich@google.com> 9041 90422020-10-27 Mark Wielaard <mark@klomp.org> 9043 9044 Assume subrange bounds types are unsigned if no underlying type is given. 9045 * src/abg-dwarf-reader.cc (build_subrange_type): Default 9046 is_signed to false. 9047 90482020-10-23 Mark Wielaard <mark@klomp.org> 9049 9050 dwarf-reader: get subrange_type bounds signedness from underlying type 9051 * src/abg-dwarf-reader.cc (die_attribute_has_form) 9052 (die_attribute_is_signed, die_attribute_is_unsigned) 9053 (die_attribute_has_no_signedness): Remove static functions. 9054 (die_constant_attribute): Add the 'is_signed' parameter. 9055 (die_address_attribute): Adjust comment. 9056 (build_subrange_type): Determine signedness of the bounds by 9057 looking at the DW_AT_encoding attribute of the underlying type. 9058 90592020-10-23 Dodji Seketeli <dodji@redhat.com> 9060 9061 abg-tools-utils: Fix comment 9062 * include/abg-tools-utils.h (enum abidiff_status): Fix a comment. 9063 90642020-10-13 Dodji Seketeli <dodji@redhat.com> 9065 9066 configure: Support ABIGAIL_NO_OPTIMIZATION_DEBUG environment variable 9067 * configure.ac: Set the CXXFLAGS and CFLAGS to "-g -O0 -Wall 9068 -Wextra -Werror" if the ABIGAIL_NO_OPTIMIZATION_DEBUG is set. 9069 90702020-10-13 Dodji Seketeli <dodji@redhat.com> 9071 9072 Structurally compare the few non-canonicalized types in general 9073 * include/abg-fwd.h (hash_as_canonical_type_or_constant): Remove 9074 public declaration of this function. 9075 * src/abg-hash.cc (type_base::dynamic_hash::operator()): Add a 9076 comment. 9077 * src/abg-ir.cc (hash_as_canonical_type_or_constant): Make this 9078 function static now. 9079 (hash_type_or_decl): Use hash_type for types. 9080 * src/abg-writer.cc (type_hasher::operator()): Use hash_type. 9081 90822020-10-12 Dodji Seketeli <dodji@redhat.com> 9083 9084 Fix redundancy detection in the diff graph 9085 * src/abg-comparison-priv.h 9086 (diff_context::priv::last_visited_diff_node_): Remove unnecessary 9087 data member. 9088 (class_or_union_diff::priv::sorted_{deleted,inserted}_member_functions_): 9089 Add new data members. 9090 (sort_string_member_function_sptr_map): Declare new function. 9091 * src/abg-comparison.cc (sort_string_member_function_sptr_map): 9092 Define new function. 9093 (redundancy_marking_visitor::visit_begin): If the current diff 9094 node is equivalent to another one that has been already marked 9095 redundant, then consider the current diff node as redundant as 9096 well. Considering the fact an ancestor node has been filtered out 9097 is now useless because if that's the case then the current 9098 descendant node wouldn't even be walked at reporting time. So 9099 remove the call to diff_has_ancestor_filtered_out. 9100 (categorize_redundancy): Remove useless call here as well. 9101 (diff_has_ancestor_filtered_out, diff_has_ancestor_filtered_out) 9102 (diff_context::{mark_last_diff_visited_per_class_of_equivalence, 9103 clear_last_diffs_visited_per_class_of_equivalence, 9104 get_last_visited_diff_of_class_of_equivalence}): Remove 9105 unnecessary functions. 9106 (redundancy_marking_visitor::visit_end): Add comment. 9107 (class_diff::ensure_lookup_tables_populated): Lexicographically 9108 sort inserted/deleted member functions. 9109 (class_or_union_diff::chain_into_hierarchy): Chain changed data 9110 members diff nodes in a sorted manner. 9111 * src/abg-default-reporter.cc (default_reporter::report): Report 9112 deleted/inserted member functions in lexicographic order. 9113 * tests/data/test-diff-filter/test31-pr18535-libstdc++-report-0.txt: 9114 Adjust. 9115 * tests/data/test-diff-filter/test31-pr18535-libstdc++-report-1.txt: 9116 Likewise. 9117 * tests/data/test-diff-pkg/libICE-1.0.6-1.el6.x86_64.rpm--libICE-1.0.9-2.el7.x86_64.rpm-report-0.txt: 9118 Likewise. 9119 * tests/data/test-diff-pkg/tbb-4.1-9.20130314.fc22.x86_64--tbb-4.3-3.20141204.fc23.x86_64-report-0.txt: 9120 Likewise. 9121 * tests/data/test-diff-pkg/tbb-4.1-9.20130314.fc22.x86_64--tbb-4.3-3.20141204.fc23.x86_64-report-1.txt: 9122 Likewise. 9123 91242020-10-08 Dodji Seketeli <dodji@redhat.com> 9125 9126 Consider the implicit 'this' parameter when comparing methods 9127 * include/abg-ir.h (function_type::get_first_parm): Declare new 9128 accessor. 9129 * src/abg-ir.cc (function_type::get_first_parm): Define new 9130 accessor. 9131 (equals): In the overload for function_type, 9132 always take the implicit "this" parameter into account in 9133 parameter comparisons. 9134 (function_type::get_first_non_implicit_parm): Adjust comment. 9135 * src/abg-comp-filter.cc (function_name_changed_but_not_symbol): 9136 Avoid potential NULL pointer dereferencing. 9137 * src/abg-comparison.cc 9138 (function_type_diff::ensure_lookup_tables_populated): Always take 9139 the changes to the implicit 'this' parameter into account in the 9140 function type diff. 9141 (compute_diff): In the overload for function_type, Always compare 9142 the implicit 'this' parameter when comparing function parameters. 9143 * src/abg-default-reporter.cc (default_reporter::report): Refer to 9144 "implicit parameter" when reporting changes on parameters 9145 artificially generated by the compiler. 9146 * src/abg-suppression.cc (type_suppression::suppresses_diff): Make 9147 the 'access_through' predicate work on a qualified version of type 9148 'S', even if it was meant to work on type 'S'. This allows it to 9149 work on 'const S', especially when S is accessed through 'pointer 9150 to const S', which happens when we consider the implicit 'this' 9151 parameter of a const member function. 9152 * tests/data/test-abicompat/test5-fn-changed-report-0.txt: Adjust. 9153 * tests/data/test-abicompat/test5-fn-changed-report-1.txt: Likewise. 9154 * tests/data/test-abidiff-exit/test1-voffset-change-report0.txt: 9155 Likewise. 9156 * tests/data/test-abidiff/test-PR18791-report0.txt: Likewise. 9157 * tests/data/test-abidiff/test-struct1-report.txt: Likewise. 9158 * tests/data/test-diff-dwarf-abixml/test0-pr19026-libvtkIOSQL-6.1.so.1-report-0.txt: 9159 Likewise. 9160 * tests/data/test-diff-dwarf/test0-report.txt: Likewise. 9161 * tests/data/test-diff-dwarf/test28-vtable-changes-report-0.txt: Likewise. 9162 * tests/data/test-diff-dwarf/test29-vtable-changes-report-0.txt: Likewise. 9163 * tests/data/test-diff-dwarf/test30-vtable-changes-report-0.txt: Likewise. 9164 * tests/data/test-diff-dwarf/test31-vtable-changes-report-0.txt: Likewise. 9165 * tests/data/test-diff-dwarf/test36-ppc64-aliases-report-0.txt: Likewise. 9166 * tests/data/test-diff-dwarf/test41-PR20476-hidden-report-0.txt: Likewise. 9167 * tests/data/test-diff-dwarf/test42-PR21296-clanggcc-report0.txt: Likewise. 9168 * tests/data/test-diff-dwarf/test5-report.txt: Likewise. 9169 * tests/data/test-diff-dwarf/test8-report.txt: Likewise. 9170 * tests/data/test-diff-filter/test0-report.txt: Likewise. 9171 * tests/data/test-diff-filter/test01-report.txt: Likewise. 9172 * tests/data/test-diff-filter/test10-report.txt: Likewise. 9173 * tests/data/test-diff-filter/test13-report.txt: Likewise. 9174 * tests/data/test-diff-filter/test2-report.txt: Likewise. 9175 * tests/data/test-diff-filter/test28-redundant-and-filtered-children-nodes-report-0.txt: 9176 Likewise. 9177 * tests/data/test-diff-filter/test28-redundant-and-filtered-children-nodes-report-1.txt: 9178 Likewise. 9179 * tests/data/test-diff-filter/test30-pr18904-rvalueref-report0.txt: 9180 Likewise. 9181 * tests/data/test-diff-filter/test30-pr18904-rvalueref-report1.txt: 9182 Likewise. 9183 * tests/data/test-diff-filter/test30-pr18904-rvalueref-report2.txt: 9184 Likewise. 9185 * tests/data/test-diff-filter/test31-pr18535-libstdc++-report-0.txt: 9186 Likewise. 9187 * tests/data/test-diff-filter/test31-pr18535-libstdc++-report-1.txt: 9188 Likewise. 9189 * tests/data/test-diff-filter/test35-pr18754-no-added-syms-report-0.txt: 9190 Likewise. 9191 * tests/data/test-diff-filter/test35-pr18754-no-added-syms-report-1.txt: 9192 Likewise. 9193 * tests/data/test-diff-filter/test4-report.txt: Likewise. 9194 * tests/data/test-diff-filter/test41-report-0.txt: Likewise. 9195 * tests/data/test-diff-filter/test9-report.txt: Likewise. 9196 * tests/data/test-diff-pkg/libsigc++-2.0-0c2a_2.4.0-1_amd64--libsigc++-2.0-0v5_2.4.1-1ubuntu2_amd64-report-0.txt: 9197 Likewise. 9198 * tests/data/test-diff-pkg/tbb-4.1-9.20130314.fc22.x86_64--tbb-4.3-3.20141204.fc23.x86_64-report-0.txt: 9199 Likewise. 9200 * tests/data/test-diff-pkg/tbb-4.1-9.20130314.fc22.x86_64--tbb-4.3-3.20141204.fc23.x86_64-report-1.txt: 9201 Likewise. 9202 * tests/data/test-diff-suppr/test24-soname-report-0.txt: Likewise. 9203 * tests/data/test-diff-suppr/test24-soname-report-1.txt: Likewise. 9204 * tests/data/test-diff-suppr/test24-soname-report-10.txt: Likewise. 9205 * tests/data/test-diff-suppr/test24-soname-report-11.txt: Likewise. 9206 * tests/data/test-diff-suppr/test24-soname-report-12.txt: Likewise. 9207 * tests/data/test-diff-suppr/test24-soname-report-13.txt: Likewise. 9208 * tests/data/test-diff-suppr/test24-soname-report-14.txt: Likewise. 9209 * tests/data/test-diff-suppr/test24-soname-report-15.txt: Likewise. 9210 * tests/data/test-diff-suppr/test24-soname-report-16.txt: Likewise. 9211 * tests/data/test-diff-suppr/test24-soname-report-2.txt: Likewise. 9212 * tests/data/test-diff-suppr/test24-soname-report-3.txt: Likewise. 9213 * tests/data/test-diff-suppr/test24-soname-report-4.txt: Likewise. 9214 * tests/data/test-diff-suppr/test24-soname-report-5.txt: Likewise. 9215 * tests/data/test-diff-suppr/test24-soname-report-6.txt: Likewise. 9216 * tests/data/test-diff-suppr/test24-soname-report-7.txt: Likewise. 9217 * tests/data/test-diff-suppr/test24-soname-report-8.txt: Likewise. 9218 * tests/data/test-diff-suppr/test24-soname-report-9.txt: Likewise. 9219 * tests/data/test-diff-suppr/test31-report-1.txt: Likewise. 9220 * tests/data/test-diff-suppr/test33-report-0.txt: Likewise. 9221 92222020-08-17 Giuliano Procida <gprocida@google.com> 9223 9224 Fix two wrongs in test suppression regex 9225 * tests/data/test-diff-suppr/test38-char-class-in-ini.abignore: 9226 Don't anchor regex match to beginning of file name. 9227 Change "filename_regexp" to "file_name_regexp". 9228 92292020-08-17 Giuliano Procida <gprocida@google.com> 9230 9231 Add missing newlines to end of test files. 9232 * tests/data/test-diff-suppr/test0-type-suppr-2.suppr: Add 9233 final new line. 9234 * tests/data/test-diff-suppr/test22-suppr-removed-var-sym-4.suppr: 9235 Likewise. 9236 * tests/data/test-diff-suppr/test23-alias-filter-0.suppr: 9237 Likewise. 9238 * tests/data/test-diff-suppr/test23-alias-filter-4.suppr: 9239 Likewise. 9240 * tests/data/test-diff-suppr/test28-add-aliased-function-1.suppr: 9241 Likewise. 9242 * tests/data/test-diff-suppr/test28-add-aliased-function-2.suppr: 9243 Likewise. 9244 * tests/data/test-diff-suppr/test28-add-aliased-function-3.suppr: 9245 Likewise. 9246 * tests/data/test-diff-suppr/test28-add-aliased-function-4.suppr: 9247 Likewise. 9248 * tests/data/test-diff-suppr/test41-enumerator-changes-0.suppr: 9249 Likewise. 9250 * tests/data/test-diff-suppr/test7-var-suppr-7.suppr: 9251 Likewise. 9252 * tests/data/test-ini/test01-equal-in-property-string.abignore: 9253 Likewise. 9254 92552020-09-18 Giuliano Procida <gprocida@google.com> 9256 9257 abg-corpus.cc: report architecture discrepancies 9258 * src/abg-corpus.cc (corpus_group::add_corpus): Report 9259 architecture discrepancies. 9260 92612020-09-16 Dodji Seketeli <dodji@redhat.com> 9262 9263 Bug 26568 - Union should support more than one anonymous member 9264 * src/abg-dwarf-reader.cc (add_or_update_union_type): Don't use 9265 the empty name of anonymous members in the lookup to ensure that 9266 all data members are unique. Rather, use the whole anonymous 9267 member itself for the lookup, just like is done to handle 9268 anonymous data member in classes/structs. 9269 * src/abg-reader.cc (build_union_decl): Likewise. 9270 * src/abg-ir.cc (get_generic_anonymous_internal_type_name): Define 9271 new static function. 9272 (get_type_name): For internal purposes, make the type name of all 9273 anonymous types of a given kind to be the same. This allows the 9274 internal representation of anonymous types which are based on type 9275 names to all be the same, so that they can be compared among 9276 themselves during type canonicalization. 9277 * tests/data/test-read-dwarf/test-PR26568-{1,2}.c: Source code of 9278 binary test input. 9279 * tests/data/test-read-dwarf/test-PR26568-{1,2}.o: New binary test input. 9280 * tests/data/test-read-dwarf/test-PR26568-{1,2}.o.abi: New 9281 reference test ouput. 9282 * tests/data/Makefile.am: Add the new test material above to 9283 source distribution. 9284 * tests/test-read-dwarf.cc (in_out_specs): Add the new binary test 9285 input above to this test harness. 9286 * tests/data/test-diff-dwarf-abixml/PR25409-librte_bus_dpaa.so.20.0.abi: Adjust. 9287 * tests/data/test-read-dwarf/PR22122-libftdc.so.abi: Likewise. 9288 * tests/data/test-read-dwarf/PR25007-sdhci.ko.abi: Likewise. 9289 92902020-09-02 Dodji Seketeli <dodji@redhat.com> 9291 9292 Make abidiff and abidw support several --headers-dir{1,2} options 9293 * doc/manuals/abidiff.rst: Update documentation for the 9294 --headers-dir{1,2} options. 9295 * doc/manuals/abidw.rst: Likewise for the --header-dir option. 9296 * include/abg-tools-utils.h (gen_suppr_spec_from_headers): Add new 9297 overload that takes a vector of headers root dirs. 9298 * src/abg-tools-utils.cc (gen_suppr_spec_from_headers_root_dir): 9299 Define new function. 9300 (gen_suppr_spec_from_headers): Define a new overload that takes a 9301 vector of head_root_dir strings; it uses the new 9302 gen_suppr_spec_from_headers function. Use the new overload in the 9303 previous one that takes just one head_root_dir string. 9304 * tools/abidiff.cc (options::headers_dirs{1,2}): Rename 9305 option::headers_dir{1,2} into this one and make it be a vector of 9306 strings rather than just a string. 9307 (parse_command_line): Support several --headers-dir{1,2} on the 9308 command line. 9309 (set_diff_context_from_opts, set_suppressions): Adjust. 9310 * tools/abidw.cc (options::headers_dirs): Renamed 9311 options::headers_dir into this and make it be a vector of strings 9312 rather than just a string. 9313 (parse_command_line): Support several --headers-dir on the command 9314 line. 9315 (set_suppressions): Adjust. 9316 * tests/data/test-abidiff-exit/test-headers-dirs/headers-a/header-a-v{0,1}.h: 9317 Header files of new binary test input. 9318 * tests/data/test-abidiff-exit/test-headers-dirs/headers-b/header-b-v{0,1}.h: 9319 Likewise. 9320 * tests/data/test-abidiff-exit/test-headers-dirs/test-headers-dir-v{0,1}.c: 9321 Source code of new binary test input. 9322 * tests/data/test-abidiff-exit/test-headers-dirs/test-headers-dir-report-{1,2}.txt: 9323 Reference output of new binary test input. 9324 * tests/data/test-abidiff-exit/test-headers-dirs/test-headers-dir-v{0,1}.o: 9325 New binary test input. 9326 * tests/data/Makefile.am: Add the new files above to source 9327 distribution. 9328 * tests/test-abidiff-exit.cc (InOutSpec::in_elfv{0,1}_path): Add 9329 new data members. 9330 (in_out_specs): Adjust the content of this array as its type 9331 changed. Also, add two new entries to run the test over the new 9332 binary test inputs above. 9333 (do_prefix_strings): Define new static function. 9334 (main): Use it the new do_prefix_strings here. Make abidiff 9335 use the --header-dir{1,2} option whenever header directories are 9336 specified in an entry of the in_out_specs array. 9337 93382020-09-14 Dodji Seketeli <dodji@redhat.com> 9339 9340 Bug 26309 - Wrong leaf reporting of changes to typedef underlying type 9341 * src/abg-ir.cc (equals): In the overload for typedef_decls, 9342 report changes to the underlying type as being local of kind 9343 LOCAL_TYPE_CHANGE_KIND. 9344 * src/abg-comparison.cc 9345 (leaf_diff_node_marker_visitor::visit_begin): Do not mark typedef 9346 diff node as leaf node. 9347 (suppression_categorization_visitor::visit_end): Propagate the 9348 'suppressed' category of the underlying type to the parent typedef 9349 unless the later has a local non-type change. 9350 (redundancy_marking_visitor::visit_end): Likewise for the 9351 'redundant' category. 9352 * include/abg-reporter.h (report_non_type_typedef_changes): Rename ... 9353 * src/abg-default-reporter.cc (report_non_type_typedef_changes): 9354 ... report_local_typedef_changes into this. 9355 * src/abg-leaf-reporter.cc (leaf_reporter::report): Make the leaf 9356 reporter invoke the reporting method of the default reporter for 9357 typedefs as all typedef changes are now local. 9358 * tests/data/test-diff-filter/test-PR26309-report-0.txt: Add new 9359 test reference output. 9360 * tests/data/test-diff-filter/test-PR26309-v{0,1}.o: Add new test 9361 binary input. 9362 * tests/data/test-diff-filter/test-PR26309-v{0,1}.c: Add source 9363 code for new test binary input. 9364 * tests/data/Makefile.am: Add the new text material above to 9365 source distribution. 9366 * tests/test-diff-filter.cc (in_out_specs): Add the new test input 9367 above to this test harness. 9368 * tests/data/test-diff-pkg/spice-server-0.12.4-19.el7.x86_64-0.12.8-1.el7.x86_64-report-3.txt: Adjust. 9369 93702020-09-14 Dodji Seketeli <dodji@redhat.com> 9371 9372 Fix thinko in get_vmlinux_path_from_kernel_dist 9373 * src/abg-tools-utils.cc (get_vmlinux_path_from_kernel_dist): Fix 9374 thinko. 9375 93762020-09-08 Dodji Seketeli <dodji@redhat.com> 9377 9378 writer: Avoid using dynamic hashing in type maps 9379 * include/abg-fwd.h (hash_as_canonical_type_or_constant): Declare ... 9380 * src/abg-ir.cc (hash_as_canonical_type_or_constant): ... new 9381 function. 9382 * src/abg-writer.cc (type_hasher::operator()): Use the new 9383 hash_as_canonical_type_or_constant. 9384 * tests/data/test-read-dwarf/test16-pr18904.so.abi: Adjust. 9385 93862020-09-08 Dodji Seketeli <dodji@redhat.com> 9387 9388 Use flat representation to canonicalize anonymous classes and unions 9389 * src/abg-ir.cc ({class, union}_decl::get_pretty_representation): 9390 Use the flat representation of the class or union even for 9391 internal purposes. 9392 * tests/data/test-annotate/libtest23.so.abi: Adjust. 9393 * tests/data/test-diff-dwarf/PR25058-liblttng-ctl-report-1.txt: Likewise. 9394 * tests/data/test-diff-filter/test30-pr18904-rvalueref-report0.txt: Likewise. 9395 * tests/data/test-diff-filter/test30-pr18904-rvalueref-report1.txt: Likewise. 9396 * tests/data/test-diff-filter/test30-pr18904-rvalueref-report2.txt: Likewise. 9397 * tests/data/test-diff-filter/test35-pr18754-no-added-syms-report-0.txt: Likewise. 9398 * tests/data/test-diff-pkg/spice-server-0.12.4-19.el7.x86_64-0.12.8-1.el7.x86_64-report-2.txt: Likewise. 9399 * tests/data/test-read-dwarf/PR25007-sdhci.ko.abi: Likewise. 9400 * tests/data/test-read-dwarf/libtest23.so.abi: Likewise. 9401 * tests/data/test-read-dwarf/test11-pr18828.so.abi: Likewise. 9402 94032020-07-24 Giuliano Procida <gprocida@google.com> 9404 9405 DWARF: track chained DIE declaration-only status 9406 * src/abg-dwarf-reader.cc (add_or_update_class_type): Add an 9407 is_declaration_only argument. Use this in favour of the 9408 die_is_declaration_only helper function. 9409 (add_or_update_union_type): Ditto. 9410 (function_is_suppressed): Ditto. 9411 (build_or_get_fn_decl_if_not_suppressed): Ditto. 9412 (build_enum_type): Ditto. 9413 (build_ir_node_from_die): To the main overload, add 9414 is_declaration_only argument and default this to true. 9415 Update this to false if the given DIE is not declaration 9416 only and pass this on in recusrive calls and calls to 9417 build_enum_type, add_or_update_union_type, 9418 add_or_update_class_type and 9419 build_or_get_fn_decl_if_not_suppressed. 9420 * tests/data/test-annotate/test17-pr19027.so.abi: Update 9421 test. This is mostly the removal of is-declaration-only 9422 attributes, removal of unreachable parts of the type graph and 9423 type id renumbering. 9424 * tests/data/test-annotate/test18-pr19037-libvtkRenderingLIC-6.1.so.abi: 9425 Likewise. 9426 * tests/data/test-annotate/test19-pr19023-libtcmalloc_and_profiler.so.abi: 9427 Likewise. 9428 * tests/data/test-annotate/test20-pr19025-libvtkParallelCore-6.1.so.abi: 9429 Likewise. 9430 * tests/data/test-diff-dwarf-abixml/test0-pr19026-libvtkIOSQL-6.1.so.1-report-0.txt: 9431 Likewise. 9432 * tests/data/test-read-dwarf/test17-pr19027.so.abi: Likewise. 9433 * tests/data/test-read-dwarf/test18-pr19037-libvtkRenderingLIC-6.1.so.abi: 9434 Likewise. 9435 * tests/data/test-read-dwarf/test19-pr19023-libtcmalloc_and_profiler.so.abi: 9436 Likewise. 9437 * tests/data/test-read-dwarf/test20-pr19025-libvtkParallelCore-6.1.so.abi: 9438 Likewise. 9439 94402020-07-24 Giuliano Procida <gprocida@google.com> 9441 9442 DWARF: look up DW_AT_declaration non-recursively 9443 * src/abg-dwarf-reader.cc (die_die_attribute): Rename 9444 'look_thru_abstract_origin' argument to 'recursively' and 9445 mention DW_AT_specification in its doc comment. Remove stale 9446 comment for non-existent argument. Simplify code with the help 9447 of the ternary operator. (die_flag_attribute): Add 9448 recursively argument, defaulted to true. If this is false, 9449 look for attribute using dwarf_attr rather than 9450 dwarf_attr_integrate. (die_is_declaration_only): Call 9451 die_flag_attribute specifying non-recursive attribute search. 9452 * tests/data/test-annotate/test15-pr18892.so.abi: Update 9453 tests. This is mostly the removal of unreachable parts of the type 9454 graph and type id renumbering. 9455 * tests/data/test-annotate/test18-pr19037-libvtkRenderingLIC-6.1.so.abi: 9456 Likewise. 9457 * tests/data/test-annotate/test19-pr19023-libtcmalloc_and_profiler.so.abi: 9458 Likewise. 9459 * tests/data/test-diff-dwarf-abixml/test0-pr19026-libvtkIOSQL-6.1.so.1-report-0.txt: 9460 Likewise. 9461 * tests/data/test-read-dwarf/test15-pr18892.so.abi: Likewise. 9462 * tests/data/test-read-dwarf/test18-pr19037-libvtkRenderingLIC-6.1.so.abi: 9463 Likewise. 9464 * tests/data/test-read-dwarf/test19-pr19023-libtcmalloc_and_profiler.so.abi: 9465 Likewise. 9466 * tests/data/test-read-dwarf/test22-pr19097-libstdc++.so.6.0.17.so.abi: 9467 Likewise. 9468 94692020-07-24 Giuliano Procida <gprocida@google.com> 9470 9471 Improve documentation of abidiff --type-id-style 9472 * tools/abidw.cc (display_usage): In documentation of 9473 "--type-id-style" option, add a missing closing ')', spell 9474 "type id" without a '-', split overly long string over two 9475 lines, use "<...>" to indicate mandatory argument and improve 9476 description of formats. 9477 * doc/manuals/abidw.rst: In documentation of "--type-id-style" 9478 option, use "<...>" to indicate mandatory argument. 9479 94802020-07-23 Giuliano Procida <gprocida@google.com> 9481 9482 Fix maybe_report_data_members_replaced_by_anon_dm 9483 * src/abg-reporter-priv.cc 9484 (maybe_report_data_members_replaced_by_anon_dm): Move 9485 declarations of anonymous_data_member and 9486 dms_replaced_by_same_anon_dm into inner loop. Use 9487 anonymous_data_member for testing and reporting, allowing 9488 iterators i and j to be replaced by just iterator i. Push 9489 first decl onto dms_replaced_by_same_anon_dm unconditionally 9490 and move control flow logic into loop condition. 9491 * tests/data/Makefile.am: Add new test cases. 9492 * tests/data/test-diff-filter/test-PR25661-7-report-1.txt: New 9493 test case file. 9494 * tests/data/test-diff-filter/test-PR25661-7-report-2.txt: 9495 Likewise. 9496 * tests/data/test-diff-filter/test-PR25661-7-report-3.txt: 9497 Likewise. 9498 * tests/data/test-diff-filter/test-PR25661-7-report-4.txt: 9499 Likewise. 9500 * tests/data/test-diff-filter/test-PR25661-7-v0.c: Likewise. 9501 * tests/data/test-diff-filter/test-PR25661-7-v0.o: Likewise. 9502 * tests/data/test-diff-filter/test-PR25661-7-v1.c: Likewise. 9503 * tests/data/test-diff-filter/test-PR25661-7-v1.o: Likewise. 9504 * tests/test-diff-filter.cc: Call new test cases. 9505 95062020-07-22 Giuliano Procida <gprocida@google.com> 9507 9508 Fix decl_base comparison function 9509 * src/abg-ir.cc (equals): In the decl_base overload, note that 9510 the value returned by decl_names_equal should be negated and 9511 replace decls_are_different with decls_are_same, negating all 9512 occurrences. 9513 * tests/data/test-diff-dwarf/PR25058-liblttng-ctl-report-1.txt: 9514 Update tests, removing some spurious anonymous union name change. 9515 * tests/data/test-diff-filter/test33-report-0.txt: Diff now 9516 completely empty. 9517 * tests/data/test-diff-pkg/elfutils-libs-0.170-4.el7.x86_64-multiple-sym-vers-report-0.txt: 9518 3 functions previously considered to have harmless changes are 9519 now deemed to have no changes. 9520 * tests/data/test-diff-pkg/spice-server-0.12.4-19.el7.x86_64-0.12.8-1.el7.x86_64-report-2.txt: 9521 1 struct RedStore data member previously considered to have 9522 harmless changes is now deemed to have no changes. 9523 * tests/data/test-read-dwarf/test9-pr18818-clang.so.abi: 9524 One instance of an anonymous struct removed and a typedef 9525 repointed at another existing instance; many type ids 9526 renumbered. 9527 95282020-07-22 Giuliano Procida <gprocida@google.com> 9529 9530 Make decl_names_equal more accurate 9531 * src/abg-tools-utils.cc (decl_names_equal): Move {l,r}_pos2 9532 declarations into the loop and make {l,r}_length const. Avoid 9533 chance of arithmetic on string::npos values. Rework 9534 logic so there is a single test for "names compare equal" and 9535 a single test for different numbers of name components. 9536 * tests/test-tools-utils.cc (main): Add nine more tests. 9537 95382020-07-30 Dodji Seketeli <dodji@redhat.com> 9539 9540 Bug 26261 - Fix logic for canonicalizing DW_TAG_subroutine_type DIEs 9541 * src/abg-dwarf-reader.cc (compare_dies): Get out early if we are 9542 are in the middle of a potential recursive comparison of function 9543 types. Likewise if we detect that the two function types have 9544 different textual representations, linkage names, or have a the 9545 same textual representation, linkage names and are defined in the 9546 same translation unit. 9547 * tests/data/test-read-dwarf/PR26261/PR26261-exe: New test binary 9548 input file. 9549 * tests/data/test-read-dwarf/PR26261/PR26261-exe.abi: New 9550 reference test output file. 9551 * tests/data/test-read-dwarf/PR26261/PR26261-main.c: Source code 9552 of the binary above. 9553 * tests/data/test-read-dwarf/PR26261/PR26261-obj{a,b}.{c,h}: 9554 Likewise. 9555 * tests/data/test-read-dwarf/PR26261/Makefile: Makefile to 9556 build the exe out of the source files. 9557 * tests/data/Makefile.am: Add the new test input files to source 9558 distribution. 9559 * tests/test-read-dwarf.cc (in_out_spec): Add the binary test 9560 input above to the test harness. 9561 95622020-07-29 Dodji Seketeli <dodji@redhat.com> 9563 9564 dwarf-reader: re-indent a block of code 9565 * src/abg-dwarf-reader.cc (compare_dies): Properly indent a 9566 sub-block of the big switch case statement in there. 9567 95682020-07-17 Giuliano Procida <gprocida@google.com> 9569 9570 abg-ir.cc: Remove duplicated line of code 9571 * src/abg-ir.cc (decl_base::set_definition_of_declaration): 9572 Remove duplicated assignment statement. 9573 95742020-07-16 Giuliano Procida <gprocida@google.com> 9575 9576 abg-writer.cc: Fix indentation of XML output 9577 * src/abg-writer.cc (write_canonical_types_of_scope): Do not 9578 add additional indentation. (write_translation_unit): Pass 9579 additional indentation to write_canonical_types_of_scope. 9580 (write_class_decl): Ensure optional annotations of base 9581 classes have the same indentation as the base classes 9582 themselves. 9583 * tests/data/test-annotate/libtest23.so.abi: Fix indentation. 9584 * tests/data/test-annotate/libtest24-drop-fns-2.so.abi: Ditto. 9585 * tests/data/test-annotate/libtest24-drop-fns.so.abi: Ditto. 9586 * tests/data/test-annotate/test-anonymous-members-0.o.abi: 9587 Ditto. 9588 * tests/data/test-annotate/test1.abi: Ditto. 9589 * tests/data/test-annotate/test14-pr18893.so.abi: Ditto. 9590 * tests/data/test-annotate/test15-pr18892.so.abi: Ditto. 9591 * tests/data/test-annotate/test17-pr19027.so.abi: Ditto. 9592 * tests/data/test-annotate/test18-pr19037-libvtkRenderingLIC-6.1.so.abi: 9593 Ditto. 9594 * tests/data/test-annotate/test19-pr19023-libtcmalloc_and_profiler.so.abi: 9595 Ditto. 9596 * tests/data/test-annotate/test20-pr19025-libvtkParallelCore-6.1.so.abi: 9597 Ditto. 9598 * tests/data/test-annotate/test21-pr19092.so.abi: Ditto. 9599 * tests/data/test-diff-suppr/test45-abi-wl.xml: Ditto. 9600 * tests/data/test-diff-suppr/test45-abi.xml: Ditto. 9601 * tests/data/test-diff-suppr/test46-PR25128-base.xml: Ditto. 9602 * tests/data/test-diff-suppr/test46-PR25128-new.xml: Ditto. 9603 * tests/data/test-read-dwarf/PR22015-libboost_iostreams.so.abi: 9604 Ditto. 9605 * tests/data/test-read-dwarf/PR22122-libftdc.so.abi: Ditto. 9606 * tests/data/test-read-dwarf/libtest23.so.abi: Ditto. 9607 * tests/data/test-read-dwarf/libtest24-drop-fns-2.so.abi: 9608 Ditto. 9609 * tests/data/test-read-dwarf/libtest24-drop-fns.so.abi: Ditto. 9610 * tests/data/test-read-dwarf/test1.abi: Ditto. 9611 * tests/data/test-read-dwarf/test1.hash.abi: Ditto. 9612 * tests/data/test-read-dwarf/test10-pr18818-gcc.so.abi: Ditto. 9613 * tests/data/test-read-dwarf/test11-pr18828.so.abi: Ditto. 9614 * tests/data/test-read-dwarf/test12-pr18844.so.abi: Ditto. 9615 * tests/data/test-read-dwarf/test14-pr18893.so.abi: Ditto. 9616 * tests/data/test-read-dwarf/test15-pr18892.so.abi: Ditto. 9617 * tests/data/test-read-dwarf/test16-pr18904.so.abi: Ditto. 9618 * tests/data/test-read-dwarf/test17-pr19027.so.abi: Ditto. 9619 * tests/data/test-read-dwarf/test18-pr19037-libvtkRenderingLIC-6.1.so.abi: 9620 Ditto. 9621 * tests/data/test-read-dwarf/test19-pr19023-libtcmalloc_and_profiler.so.abi: 9622 Ditto. 9623 * tests/data/test-read-dwarf/test20-pr19025-libvtkParallelCore-6.1.so.abi: 9624 Ditto. 9625 * tests/data/test-read-dwarf/test21-pr19092.so.abi: Ditto. 9626 * tests/data/test-read-dwarf/test22-pr19097-libstdc++.so.6.0.17.so.abi: 9627 Ditto. 9628 * tests/data/test-read-dwarf/test9-pr18818-clang.so.abi: Ditto. 9629 * tests/data/test-read-write/test10.xml: Ditto. 9630 * tests/data/test-read-write/test15.xml: Ditto. 9631 * tests/data/test-read-write/test21.xml: Ditto. 9632 * tests/data/test-read-write/test28-without-std-fns-ref.xml: 9633 Ditto. 9634 * tests/data/test-read-write/test28-without-std-vars-ref.xml: 9635 Ditto. 9636 96372020-07-16 Giuliano Procida <gprocida@google.com> 9638 9639 Remove ABI XML test data file blank lines 9640 * tests/data/test-abidiff/test-PR18166-libtirpc.so.abi: Remove 9641 blank lines. 9642 * tests/data/test-diff-dwarf-abixml/PR25409-librte_bus_dpaa.so.20.0.abi: 9643 Ditto. 9644 * tests/data/test-diff-dwarf-abixml/test0-pr19026-libvtkIOSQL-6.1.so.1.abi: 9645 Ditto. 9646 * tests/data/test-diff-suppr/test45-abi-wl.xml: Ditto. 9647 * tests/data/test-diff-suppr/test45-abi.xml: Ditto. 9648 * tests/data/test-diff-suppr/test46-PR25128-base.xml: Ditto. 9649 * tests/data/test-diff-suppr/test46-PR25128-new.xml: Ditto. 9650 96512020-07-15 Giuliano Procida <gprocida@google.com> 9652 9653 abg-ir.cc: Fix incorrect pop of compared types. 9654 * src/abg-ir.cc (equals): In the class_or_union overload, 9655 replace one instance of RETURN(false) with return false. 9656 96572020-07-09 Giuliano Procida <gprocida@google.com> 9658 9659 Enable Clang's -Werror-overloaded-virtual. 9660 * configure.ac: Remove the special clause that disabled 9661 -Werror-overloaded-virtual for Clang builds. 9662 96632020-07-09 Giuliano Procida <gprocida@google.com> 9664 9665 Fix inheritance of scope_decl::insert_member_decl 9666 * include/abg-ir.h (scope_decl::insert_member_decl): Change 9667 type of member argument from const decl_base_sptr& to plain 9668 decl_base_sptr. 9669 * src/abg-ir.cc (scope_decl::insert_member_decl): Likewise. 9670 96712020-07-27 Dodji Seketeli <dodji@redhat.com> 9672 9673 Pimpl-ify traversable_base and remove its unused traverse method 9674 * include/abg-traverse.h (traversable_base::priv): Declare new type. 9675 (traverse_base::priv_sptr): Add pointer to private data 9676 member. 9677 (traverse_base::visiting_): Move this data member definition into 9678 traverse_base::priv. 9679 (traverse_base::{visiting, traverse_base, ~traverse_base}): Move 9680 definitions out-of-oline. 9681 (traverse_base::traverse): Comment out. 9682 * src/abg-traverse.cc (struct traversable_base::priv): Define new 9683 type. 9684 (traversable_base::{traversable_base, ~traversable_base, traverse, 9685 visiting}): Move these previous inline definitions here. 9686 96872020-07-09 Giuliano Procida <gprocida@google.com> 9688 9689 Simplify peel_typedef_pointer_or_reference_type 9690 * include/abg-fwd.h (peel_qualified_or_typedef_type): Remove 9691 second argument in declarations of both overloads. 9692 * src/abg-comp-filter.cc (is_mostly_distinct_diff): Remove 9693 second argument to peel_qualified_or_typedef_type. 9694 * src/abg-dwarf-reader.cc (maybe_canonicalize_type): Likewise. 9695 * src/abg-ir.cc (peel_qualified_or_typedef_type): In both 9696 overloads, remove second argument peel_qual_type, simplify 9697 code with the assumption it was always false and remove 9698 incomplete array type peeling logic. In type_base_sptr 9699 overload, remove stray space. 9700 97012020-07-09 Giuliano Procida <gprocida@google.com> 9702 9703 Remove unused is_reference_or_pointer_diff. 9704 * include/abg-comparison.h (is_reference_or_pointer_diff): 9705 Drop function declaration. 9706 * src/abg-comparison.cc (is_reference_or_pointer_diff): Drop 9707 function definition. 9708 97092020-07-09 Giuliano Procida <gprocida@google.com> 9710 9711 abg-comparison.h: Remove stray declaration 9712 * include/abg-comparison 9713 (is_reference_or_pointer_diff_to_non_basic_distinct_types): 9714 Remove stray declaration. 9715 97162020-07-08 Giuliano Procida <gprocida@google.com> 9717 9718 abg-ir.cc: Refactor operator== methods with helper function 9719 * src/abg-ir.cc (try_canonical_compare): New template function. 9720 (type_decl::operator==): Use it here. 9721 (scope_type_decl::operator==): Likewise. 9722 (qualified_type_def::operator==): Likewise. 9723 (pointer_type_def::operator==): Likewise. 9724 (reference_type_def::operator==): Likewise. 9725 (array_type_def::subrange_type::operator==): Likewise. 9726 (array_type_def::operator==): Likewise. 9727 (enum_type_decl::operator==): Likewise. 9728 (typedef_decl::operator==): Likewise. 9729 (function_type::operator==): Likewise. 9730 (class_or_union::operator==): Likewise. 9731 (class_decl::operator==): Likewise. 9732 (union_decl::operator==): Likewise. 9733 97342020-07-01 Giuliano Procida <gprocida@google.com> 9735 9736 abg-comparison.cc: Tidy some corpus_diff code 9737 * src/abg-comparison.cc (corpus_diff::priv::emit_diff_stats): 9738 Adjust code whitespace; rename the second instance of 9739 total_nb_variable_changes to 9740 total_nb_unreachable_type_changes. 9741 (corpus_diff::has_incompatible_changes): Fix comment typo. 9742 97432020-07-06 Giuliano Procida <gprocida@google.com> 9744 9745 Fix --type-id-style hash for empty internal names. 9746 * src/abg-writer.cc (write_context::get_id_for_type): When 9747 hashing internal type names, convert to std::string rather 9748 than using the raw method directly as this will avoid a null 9749 pointer dereference in the case of an empty string; tabify 9750 code indentation. 9751 97522020-07-08 Giuliano Procida <gprocida@google.com> 9753 9754 abg-ir.cc: Tidy some operator== definitions 9755 * src/abg-irc.cc (scope_type_decl::operator==): Compare naked 9756 canonical type pointers instead of the shared pointers. 9757 (qualified_type_def::operator==): Remove excess blank line. 9758 (function_type::operator==): Do dynamic_cast and check of 9759 argument before comparing naked canonical type pointers. 9760 (class_or_union::operator==): Eliminate temporary reference. 9761 (class_decl::operator==): Likewise. 9762 (union_decl::operator==): Likewise. 9763 97642020-07-17 Giuliano Procida <gprocida@google.com> 9765 9766 Fix corpus_diff::has_net_changes for --leaf-changes-only mode 9767 * include/abg-reporter.h ({reporter_base, default_reporter, 9768 leaf_reporter}::diff_has_net_changes): Add new virtual function. 9769 This breaks binary compatibility but should conserve source 9770 compatibility. 9771 * src/abg-default-reporter.cc 9772 (default_reporter::diff_has_net_changes): Define new member 9773 function. 9774 * src/abg-leaf-reporter.cc (leaf_reporter::diff_has_net_changes): 9775 Likewise. 9776 * src/abg-comparison.cc (corpus_diff::has_net_changes): Invoke 9777 reporter_base::diff_has_net_changes on the current reporter, 9778 rather than trying to handle all the different kinds of reporters 9779 here. 9780 (corpus_diff::priv::apply_filters_and_compute_diff_stats): Add a 9781 TODO to possibly delegate the implementation of this function to 9782 the reporters. 9783 * tests/data/Makefile.am: Add new test case files. 9784 * tests/data/test-abidiff-exit/test-net-change-report0.txt: 9785 Normal mode, nothing suppressed. 9786 * tests/data/test-abidiff-exit/test-net-change-report1.txt: 9787 Normal mode, everything suppressed. 9788 * tests/data/test-abidiff-exit/test-net-change-report2.txt: 9789 Leaf mode, nothing suppressed. 9790 * tests/data/test-abidiff-exit/test-net-change-report3.txt: 9791 Leaf mode, everything suppressions. 9792 * tests/data/test-abidiff-exit/test-net-change-v0.c: Test file 9793 * tests/data/test-abidiff-exit/test-net-change-v0.o: Test file 9794 * tests/data/test-abidiff-exit/test-net-change-v1.c: Test file 9795 * tests/data/test-abidiff-exit/test-net-change-v1.o: Test file 9796 * tests/data/test-abidiff-exit/test-net-change.abignore: This 9797 suppresses changes for all variables, functions and types in 9798 the test files, except for the 'victim' function. 9799 * tests/test-abidiff-exit.cc: Run new test cases. 9800 Reviewed-by: Matthias Maennich <maennich@google.com> 9801 98022020-07-01 Giuliano Procida <gprocida@google.com> 9803 9804 reporter: Fix report whitespace typos. 9805 * src/abg-reporter-priv.cc (represent): Add missing space to 9806 string split across two lines in certain anonymous data member 9807 diffs. 9808 * src/abg-default-reporter.cc (report): In the array_diff 9809 overload, eliminate trailing space at end of line. 9810 * tests/data/test-diff-dwarf/test10-report.txt: Delete 9811 trailing whitespace. 9812 * tests/data/test-diff-filter/test24-compatible-vars-report-1.txt: 9813 Ditto. 9814 * tests/data/test-diff-pkg/libICE-1.0.6-1.el6.x86_64.rpm--libICE-1.0.9-2.el7.x86_64.rpm-report-0.txt: 9815 Ditto. 9816 * tests/data/test-diff-pkg/libcdio-0.94-1.fc26.x86_64--libcdio-0.94-2.fc26.x86_64-report.1.txt: 9817 Ditto. 9818 * tests/data/test-diff-pkg/tbb-4.1-9.20130314.fc22.x86_64--tbb-4.3-3.20141204.fc23.x86_64-report-0.txt: 9819 Ditto. 9820 * tests/data/test-diff-pkg/spice-server-0.12.4-19.el7.x86_64-0.12.8-1.el7.x86_64-report-2.txt: 9821 Ditto. 9822 98232020-07-09 Giuliano Procida <gprocida@google.com> 9824 9825 abg-writer.cc: Clean up new line emission. 9826 * src/abg-writer.cc (annotate): In the 9827 function_decl::parameter_sptr overload, fix code whitespace. 9828 (write_decl_in_scope): Remove wrote_context state variable and 9829 associated logic; emit new line unconditionally after end of 9830 XML tags and nowhere else. 9831 (write_canonical_types_of_scope): Emit new line after end of 9832 XML comment and nowhere else. 9833 (write_translation_unit): Emit new line after end of XML tags 9834 and nowhere else. 9835 (write_type_decl): Likewise. 9836 (write_namespace_decl): Likewise. 9837 (write_qualified_type_def): Emit new line after end of XML tag. 9838 (write_pointer_type_def): Likewise. 9839 (write_reference_type_def): Likewise. 9840 (write_array_type_def): Emit new line after end of XML tags 9841 and nowhere else. 9842 (write_enum_type_decl): Emit new line after end of XML tag. 9843 (write_elf_symbol): Likewise. 9844 (write_elf_symbols_table): Emit no new lines. 9845 (write_elf_needed): Emit new line unconditionally after end of 9846 XML tags. 9847 (write_typedef_decl): Emit new line after end of XML tag. 9848 (write_var_decl): Emit new line after end of XML tag. 9849 (write_function_decl): Likewise. 9850 (write_function_type): Fold two output statements into 9851 one; emit new line after end of XML tag. 9852 (write_class_decl_opening_tag): Emit new line unconditionally 9853 after end of XML tags and simplify empty element tag logic. 9854 (write_union_decl_opening_tag): Likewise. 9855 (write_class_decl): Emit new line after end of XML tag and 9856 nowhere else. 9857 (write_union_decl): Likewise. 9858 (write_member_type_opening_tag): Emit new line after end of 9859 XML tag. 9860 (write_member_type): Emit new lines only after XML tags. 9861 (write_type_tparameter): Emit new line after XML tag. 9862 (write_non_type_tparameter): Likewise. 9863 (write_template_tparameter): Emit new line after XML tag and 9864 nowhere else. 9865 (write_type_composition): Likewise. 9866 (write_template_parameters): Emit no new lines. 9867 (write_function_tdecl): Emit new line after XML tag and 9868 nowhere else. 9869 (write_class_tdecl): Likewise. 9870 (write_corpus): Emit new lines only after XML tags. 9871 (dump): In the decl_base_sptr overload, don't emit final new 9872 line as this is now done by write_decl. In the var_decl_sptr 9873 overload, don't emit final new line (mistakenly done to cerr 9874 instead of o) as this is now done by write_var_decl. In the 9875 translation_unit overload, don't emit final new line as this 9876 doubles that emitted by write_translation_unit. 9877 * tests/data/test-annotate/libtest23.so.abi: Delete all blank 9878 lines. 9879 * tests/data/test-annotate/libtest24-drop-fns-2.so.abi: Ditto. 9880 * tests/data/test-annotate/libtest24-drop-fns.so.abi: Ditto. 9881 * tests/data/test-annotate/test-anonymous-members-0.o.abi: 9882 Ditto. 9883 * tests/data/test-annotate/test1.abi: Ditto. 9884 * tests/data/test-annotate/test13-pr18894.so.abi: Ditto. 9885 * tests/data/test-annotate/test14-pr18893.so.abi: Ditto. 9886 * tests/data/test-annotate/test15-pr18892.so.abi: Ditto. 9887 * tests/data/test-annotate/test17-pr19027.so.abi: Ditto. 9888 * tests/data/test-annotate/test18-pr19037-libvtkRenderingLIC-6.1.so.abi: 9889 Ditto. 9890 * tests/data/test-annotate/test19-pr19023-libtcmalloc_and_profiler.so.abi: 9891 Ditto. 9892 * tests/data/test-annotate/test20-pr19025-libvtkParallelCore-6.1.so.abi: 9893 Ditto. 9894 * tests/data/test-annotate/test21-pr19092.so.abi: Ditto. 9895 * tests/data/test-annotate/test7.so.abi: Ditto. 9896 * tests/data/test-read-dwarf/PR22015-libboost_iostreams.so.abi: 9897 Ditto. 9898 * tests/data/test-read-dwarf/PR22122-libftdc.so.abi: Ditto. 9899 * tests/data/test-read-dwarf/PR25007-sdhci.ko.abi: Ditto. 9900 * tests/data/test-read-dwarf/PR25042-libgdbm-clang-dwarf5.so.6.0.0.abi: 9901 Ditto. 9902 * tests/data/test-read-dwarf/libtest23.so.abi: Ditto. 9903 * tests/data/test-read-dwarf/libtest24-drop-fns-2.so.abi: 9904 Ditto. 9905 * tests/data/test-read-dwarf/libtest24-drop-fns.so.abi: Ditto. 9906 * tests/data/test-read-dwarf/test1.abi: Ditto. 9907 * tests/data/test-read-dwarf/test1.hash.abi: Ditto. 9908 * tests/data/test-read-dwarf/test10-pr18818-gcc.so.abi: Ditto. 9909 * tests/data/test-read-dwarf/test11-pr18828.so.abi: Ditto. 9910 * tests/data/test-read-dwarf/test12-pr18844.so.abi: Ditto. 9911 * tests/data/test-read-dwarf/test13-pr18894.so.abi: Ditto. 9912 * tests/data/test-read-dwarf/test14-pr18893.so.abi: Ditto. 9913 * tests/data/test-read-dwarf/test15-pr18892.so.abi: Ditto. 9914 * tests/data/test-read-dwarf/test16-pr18904.so.abi: Ditto. 9915 * tests/data/test-read-dwarf/test17-pr19027.so.abi: Ditto. 9916 * tests/data/test-read-dwarf/test18-pr19037-libvtkRenderingLIC-6.1.so.abi: 9917 Ditto. 9918 * tests/data/test-read-dwarf/test19-pr19023-libtcmalloc_and_profiler.so.abi: 9919 Ditto. 9920 * tests/data/test-read-dwarf/test20-pr19025-libvtkParallelCore-6.1.so.abi: 9921 Ditto. 9922 * tests/data/test-read-dwarf/test21-pr19092.so.abi: Ditto. 9923 * tests/data/test-read-dwarf/test22-pr19097-libstdc++.so.6.0.17.so.abi: 9924 Ditto. 9925 * tests/data/test-read-dwarf/test7.so.abi: Ditto. 9926 * tests/data/test-read-dwarf/test7.so.hash.abi: Ditto. 9927 * tests/data/test-read-dwarf/test9-pr18818-clang.so.abi: 9928 Ditto. 9929 * tests/data/test-read-write/test10.xml: Ditto. 9930 * tests/data/test-read-write/test15.xml: Ditto. 9931 * tests/data/test-read-write/test21.xml: Ditto. 9932 * tests/data/test-read-write/test25.xml: Ditto. 9933 * tests/data/test-read-write/test28-without-std-fns-ref.xml: 9934 Ditto. 9935 * tests/data/test-read-write/test28-without-std-vars-ref.xml: 9936 Ditto. 9937 99382020-07-09 Dodji Seketeli <dodji@redhat.com> 9939 9940 reader: Remove useless support for WIP types 9941 * src/abg-reader.cc (read_context::m_wip_types_map): Remove data 9942 member. 9943 (read_context::{clear_wip_classes_map, mark_type_as_wip, 9944 unmark_type_as_wip, is_wip_type}): Remove member functions. 9945 (read_context::maybe_canonicalize_type): Remove use of 9946 is_wip_type. 9947 99482020-06-19 Giuliano Procida <gprocida@google.com> 9949 9950 Use pointers not strings in type graph comparison. 9951 * tests/data/test-diff-dwarf/PR25058-liblttng-ctl-report-1.txt: 9952 Update. 9953 * tests/data/test-diff-pkg/elfutils-libs-0.170-4.el7.x86_64-multiple-sym-vers-report-0.txt: 9954 Update. 9955 * tests/data/test-diff-pkg/spice-server-0.12.4-19.el7.x86_64-0.12.8-1.el7.x86_64-report-2.txt: 9956 Update. 9957 * tests/data/test-diff-pkg/spice-server-0.12.4-19.el7.x86_64-0.12.8-1.el7.x86_64-report-3.txt: 9958 Update. 9959 99602020-06-10 Giuliano Procida <gprocida@google.com> 9961 9962 Add tests for declaration-only enums. 9963 * tests/data/test-abidiff-exit/test-decl-enum-report-2.txt: Add 9964 new test reference output. 9965 * tests/data/test-abidiff-exit/test-decl-enum-report-3.txt: Likewise. 9966 * tests/data/test-abidiff-exit/test-decl-enum-report.txt: Likewise. 9967 * tests/data/test-abidiff-exit/test-decl-enum-v{0,1}.c: Add source 9968 code for the binaries below. 9969 * tests/data/test-abidiff-exit/test-decl-enum-v{0,1}.o: Add new 9970 binary test inputs. 9971 * tests/data/Makefile.am: Add the new files above to source 9972 distribution. 9973 * tests/test-abidiff-exit.cc: Add the test inputs above to the 9974 test harness. 9975 99762020-06-10 Giuliano Procida <gprocida@google.com> 9977 9978 Add declaration-only enums to XML reader/writer. 9979 * src/abg-reader.cc (build_enum_type_decl): Detect a 9980 declaration-only enum and flag it as such. 9981 (build_type_decl): Support reading the "is-declaration" attribute. 9982 (build_class_decl): Adjust. 9983 * src/abg-writer.cc (write_is_declaration_only): Renamed 9984 write_class_or_union_is_declaration_only into this. 9985 (write_enum_is_declaration_only): Remove. 9986 (write_type_decl, write_enum_type_decl) 9987 (write_class_decl_opening_tag, write_union_decl_opening_tag): Use 9988 write_is_declaration_only. 9989 * tests/data/test-read-dwarf/PR22122-libftdc.so.abi: Adjust. 9990 * tests/data/test-read-dwarf/test12-pr18844.so.abi: Likewise. 9991 * tests/data/test-read-dwarf/test9-pr18818-clang.so.abi: Likewise. 9992 99932020-06-10 Dodji Seketeli <dodji@redhat.com> 9994 9995 Support declaration-only enums in DWARF reader. 9996 * src/abg-dwarf-reader.cc (string_enums_map): Define new 9997 convenience typedef. 9998 (read_context::decl_only_enums_map_): Define new data member. 9999 (read_context::{declaration_only_enums, 10000 is_decl_only_enum_scheduled_for_resolution, 10001 resolve_declaration_only_enums}): Define new member functions. 10002 (build_internal_underlying_enum_type_name) 10003 (build_enum_underlying_type): Factorize these functions out of ... 10004 (build_enum_type): ... here. Detect a decl-only enum and flag it 10005 as such. If the enum type is decl-only, then set its underlying 10006 type as decl-only as well. 10007 (build_enum_underlying_type): Mark the underlying type as 10008 artificial. 10009 (get_opaque_version_of_type): Make this handle enums as well. So 10010 make its return type be type_or_decl_base_sptr, rather than just 10011 class_or_union_sptr as it used to be. 10012 (read_debug_info_into_corpus): Add logging to trace decl-only 10013 enums resolution. 10014 (build_ir_node_from_die): Detect when a suppression specification 10015 makes an enum opaque. In that case, get an opaque version of the 10016 enum type by invoking get_opaque_version_of_type. Note that 10017 get_opaque_version_of_type doesn't support returning opaque 10018 -- i.e, decl-only enum types -- yet, but this is going to be 10019 handled in a subsequent patch. 10020 100212020-06-10 Giuliano Procida <gprocida@google.com> 10022 10023 Support incomplete enums in core and diff code. 10024 * include/abg-comp-filter.h (has_decl_only_def_change) : Declare 10025 New function. 10026 * src/abg-comp-filter.cc (there_is_a_decl_only_enum): Define new 10027 static function and ... 10028 (type_size_changed): ... use it here. 10029 (has_decl_only_def_change): Define new function and ... 10030 (categorize_harm{less, ful}_diff_node): ... use it here. 10031 * include/abg-fwd.h (enums_type, decl_base_wptr): Declare new 10032 typedefs. 10033 (look_through_decl_only_class): Declare new overload for 10034 class_or_union*. 10035 (is_compatible_with_enum_type, is_compatible_with_enum_type) 10036 (look_through_decl_only, lookup_enum_types, lookup_enum_types): 10037 Declare new functions. 10038 * include/abg-ir.h (decl_base::{get_is_declaration_only, 10039 set_is_declaration_only, set_definition_of_declaration, 10040 get_definition_of_declaration, 10041 get_naked_definition_of_declaration}): Declare new member 10042 functions. They were moved here from the class_or_union class. 10043 (class_or_union::{get_earlier_declaration, 10044 set_earlier_declaration, get_definition_of_declaration, 10045 set_definition_of_declaration, 10046 get_naked_definition_of_declaration, get_is_declaration_only, 10047 set_is_declaration_only}): Remove these member functions. 10048 * src/abg-ir.cc (decl_base::priv::{declaration_, 10049 definition_of_declaration_, naked_definition_of_declaration_, 10050 is_declaration_only_}): Define data members. Moved here from 10051 class_or_union. 10052 (decl_base::priv::priv): Adjust to initialize the new data 10053 members. 10054 (decl_base::{get_earlier_declaration, set_earlier_declaration, 10055 get_definition_of_declaration, 10056 get_naked_definition_of_declaration, get_is_declaration_only, 10057 set_is_declaration_only, set_definition_of_declaration}): Define 10058 member functions. 10059 (operator|): In the overload for (change_kind, change_kind), 10060 adjust the return type of the call to 10061 decl_base::get_definition_of_declaration. 10062 (look_through_decl_only): Define new function. 10063 (look_through_decl_only_class): Adjust. 10064 (look_through_decl_only_enum): Likewise. 10065 (maybe_update_types_lookup_map<class_decl>): Adjust return type of 10066 call to decl_base::get_definition_of_declaration. 10067 (types_defined_same_linux_kernel_corpus_public): Use 10068 look_through_decl_only_class rather than open coding it. 10069 (class_or_union::priv::{declaration_, definition_of_declaration_, 10070 naked_definition_of_declaration_, is_declaration_only_}): Remove 10071 these data members. They are now carried by decl_base::priv. 10072 (class_or_union::{g,s}et_alignment_in_bits): Adjust. 10073 (class_or_union::{g,s}et_size_in_bits): Likewise. 10074 (class_or_union::operator==): Likewise. 10075 (equals): Adjust the overload for class_or_union. 10076 (is_compatible_with_enum_type) 10077 * src/abg-comparison.cc (try_to_diff<class_decl>): Adjust the 10078 return type of decl_base::get_definition_of_declaration. 10079 (leaf_diff_node_marker_visitor::visit_begin): Use 10080 filtering::has_decl_only_def_change rather than 10081 filtering::has_class_decl_only_def_change. Decl-only changes to 10082 enums (or any other type really) will thus not be recorded as leaf 10083 changes. 10084 * src/abg-dwarf-reader.cc (get_scope_for_die): Adjust return type 10085 of decl_base::get_definition_of_declaration. 10086 * src/abg-default-reporter.cc (default_reporter::report): Report 10087 enum decl-only <-> definition changes. 10088 * src/abg-hash.cc (class_or_union::hash::operator()): In the 10089 overload for class_or_union& adjust the return type for 10090 decl_base::get_definition_of_declaration. 10091 100922020-06-19 Giuliano Procida <gprocida@google.com> 10093 10094 abg-ir.cc: Remove unused re_canonicalize function. 10095 * include/abg-fwd.h (re_canonicalize): Remove declaration of 10096 obsolete function. 10097 * include/abg-ir.h (class {decl_base, type_base}): Remove 10098 re_canonicalize friend declarations from these classes. 10099 * src/abg-ir.cc (re_canonicalize): Remove obsolete function. 10100 101012020-06-24 Dodji Seketeli <dodji@redhat.com> 10102 10103 Bug 26135 - Wrong linkage name causes anonymous classes miscomparison 10104 * include/abg-ir.h (class_decl::class_decl): Add two overloads 10105 that take the "is_anonymous" flag. 10106 (union_decl::union_decl): Likewise. 10107 * src/abg-ir.cc (class_decl::class_decl): Define two overloads 10108 that take the "is_anonymous" flag and set the linkage name 10109 accordingly. 10110 (union_decl::union_decl): Likewise. 10111 (type_base::get_canonical_type_for): Assert that an anonymous 10112 class or union can't have a linkage name for now. 10113 * src/abg-dwarf-reader.cc (add_or_update_class_type) 10114 (add_or_update_union_type): Use a new overload for the constuctor 10115 of {class, union}_decl and set the "is_anonymous" flag. Don't use 10116 decl_base::set_is_anonymous anymore. 10117 * src/abg-reader.cc (build_class_decl, build_union_decl): 10118 Likewise. 10119 * tests/data/test-read-dwarf/PR22122-libftdc.so.abi: Adjust. 10120 * tests/data/test-read-dwarf/test12-pr18844.so.abi: Likewise. 10121 * tests/data/test-read-dwarf/test9-pr18818-clang.so.abi: Likewise. 10122 101232020-06-29 Giuliano Procida <gprocida@google.com> 10124 10125 Rename declaration-definition change category. 10126 * include/abg-comparison.h (TYPE_DECL_ONLY_DEF_CHANGE_CATEGORY): 10127 Rename CLASS_DECL_ONLY_DEF_CHANGE_CATEGORY into this. 10128 (EVERYTHING_CATEGORY): In the value of this enumerator, rename 10129 CLASS_DECL_ONLY_DEF_CHANGE_CATEGORY into 10130 TYPE_DECL_ONLY_DEF_CHANGE_CATEGORY. 10131 * src/abg-comp-filter.cc (categorize_harmless_diff_node): 10132 Likewise. 10133 * src/abg-comparison.cc (get_default_harmless_categories_bitmap): 10134 Likewise. 10135 (operator<<(ostream& o, diff_category c)): Likewise. 10136 * src/abg-default-reporter.cc (default_reporter::report): Likewise 10137 in the overload for class_or_union_diff. 10138 * src/abg-leaf-reporter.cc (leaf_reporter::report): Likewise in 10139 the overload for class_or_union_diff. 10140 101412020-06-10 Giuliano Procida <gprocida@google.com> 10142 10143 Tidy build_enum_type state variables. 10144 * src/abg-dwarf-reader.cc (build_enum_type): Rename local 10145 variable enum_is_anonymous to is_anonymous. Move initilisation 10146 of local variable is_artificial to location corresponding to 10147 that in add_or_update_class_type and add_or_update_union_type 10148 functions. 10149 101502020-06-10 Giuliano Procida <gprocida@google.com> 10151 10152 Refactor d.context() as ctxt in report(enum_diff). 10153 * src/abg-default-reporter.cc (report): In the enum_diff 10154 overload, introduce the name ctxt to replace four occurrences 10155 of d.context(). 10156 101572020-06-10 Giuliano Procida <gprocida@google.com> 10158 10159 Improve code comments and whitespace. 10160 * include/abg-fwd.h: Correct doc-comment reference to 10161 enum_type_decl. 10162 * src/abg-comp-filter.cc: Fix doc-comment syntax. 10163 * src/abg-comparison.cc (operator<<): In the diff_category 10164 overload, fix code indentation. 10165 * src/abg-default-reporter.cc (report): In the 10166 class_or_union_diff overload, adjust comment to reflect that 10167 the code is reporting changes between declaration-only and 10168 defined types, in either direction. 10169 101702020-06-17 Giuliano Procida <gprocida@google.com> 10171 10172 get_canonical_type_for: restore environment better 10173 * src/abg-ir.cc (get_canonical_type_for): Ensure the 10174 do_on_the_fly_canonicalization and 10175 decl_only_class_equals_definition flags are restored 10176 unconditionally. 10177 101782020-06-18 Dodji Seketeli <dodji@redhat.com> 10179 10180 Bug 26127 - abidw --annotate emits incomplete function types 10181 * include/abg-ir.h (decl_base::clear_qualified_name): Declare new 10182 protected member function. 10183 ({pointer_type_def, reference_type_def, qualified_type_def, 10184 function_type}::on_canonical_type_set): Declare virtual member 10185 functions. 10186 * src/abg-ir.cc (decl_base::clear_qualified_name): Define new 10187 protected member function. 10188 ({pointer_type_def, reference_type_def, qualified_type_def, 10189 function_type}::on_canonical_type_set): Define virtual member 10190 functions. 10191 * tests/data/test-annotate/test17-pr19027.so.abi: Adjust. 10192 * tests/data/test-annotate/test18-pr19037-libvtkRenderingLIC-6.1.so.abi: 10193 Likewise. 10194 * tests/data/test-annotate/test20-pr19025-libvtkParallelCore-6.1.so.abi: 10195 Likewise. 10196 101972020-06-11 Giuliano Procida <gprocida@google.com> 10198 10199 Fix bug that suppressed DWARF read tests. 10200 * tests/test-read-dwarf.cc (in_out_specs): Use NULL instead of 10201 empty ABI paths for test25, test26 and test27. (perform): 10202 Check members of spec, rather than locals with same name, when 10203 deciding to terminate testing early; fix some code whitespace. 10204 * tests/data/test-read-dwarf/test14-pr18893.so.abi: Update 10205 multidimensional array sizes. 10206 * tests/data/test-read-dwarf/test17-pr19027.so.abi: Ditto. 10207 * tests/data/test-read-dwarf/test19-pr19023-libtcmalloc_and_profiler.so.abi: 10208 Ditto. 10209 * tests/data/test-read-dwarf/test7.so.abi: Ditto. 10210 * tests/data/test-read-dwarf/PR25042-libgdbm-clang-dwarf5.so.6.0.0.abi: 10211 Update following translation unit ordering change. 10212 * tests/data/test-read-dwarf/test13-pr18894.so.abi: Ditto. 10213 * tests/data/test-read-dwarf/test14-pr18893.so.abi: Ditto. 10214 * tests/data/test-read-dwarf/test15-pr18892.so.abi: Ditto. 10215 * tests/data/test-read-dwarf/test16-pr18904.so.abi: Ditto. 10216 * tests/data/test-read-dwarf/test17-pr19027.so.abi: Ditto. 10217 * tests/data/test-read-dwarf/test18-pr19037-libvtkRenderingLIC-6.1.so.abi: 10218 Ditto. 10219 * tests/data/test-read-dwarf/test19-pr19023-libtcmalloc_and_profiler.so.abi: 10220 Ditto. 10221 * tests/data/test-read-dwarf/test20-pr19025-libvtkParallelCore-6.1.so.abi: 10222 Ditto. 10223 * tests/data/test-read-dwarf/test21-pr19092.so.abi: Ditto. 10224 * tests/data/test-read-dwarf/test22-pr19097-libstdc++.so.6.0.17.so.abi: 10225 Ditto. 10226 * tests/data/test-read-dwarf/PR25007-sdhci.ko.abi: Update 10227 following code changes affecting ordering of some ABI 10228 elements. 10229 * tests/data/test-read-dwarf/test16-pr18904.so.abi 10230 Reviewed-by: Matthias Maennich <maennich@google.com> 10231 Tested-by: Matthias Maennich <maennich@google.com> 10232 102332020-06-16 Matthias Maennich <maennich@google.com> 10234 10235 cleanup: std::weak_ptr use: replace manual lock by std::weak_ptr::lock 10236 * src/abg-comparison-priv.h (diff::priv::get_context): improve 10237 weak_ptr usage. 10238 (corpus_diff:diff_stats::priv::ctxt): Likewise. 10239 * src/abg-comparison.cc (corpus_diff::priv::get_context): Likewise. 10240 (var_diff::type_diff): Likewise. 10241 * src/abg-ir.cc (elf_symbol::get_next_alias): Likewise. 10242 (elf_symbol::get_next_common_instance): Likewise. 10243 (type_base::get_canonical_type): Likewise. 10244 (qualified_type_def::get_underlying_type): Likewise. 10245 (pointer_type_def::get_pointed_to_type): Likewise. 10246 (reference_type_def::get_pointed_to_type): Likewise. 10247 (array_type_def::subrange_type::get_underlying_type): Likewise. 10248 (array_type_def::get_element_type): Likewise. 10249 (typedef_decl::get_underlying_type): Likewise. 10250 (var_decl::get_type): Likewise. 10251 (function_type::get_return_type): Likewise. 10252 (function_decl::get_type): Likewise. 10253 (function_decl::parameter::get_type): Likewise. 10254 (class_or_union::get_naming_typedef): Likewise. 10255 (class_or_union::get_definition_of_declaration): Likewise. 10256 (class_decl::base_spec::get_base_class): Likewise. 10257 (template_parameter::get_enclosing_template_decl): Likewise. 10258 (non_type_tparameter::get_type): Likewise. 10259 (type_composition::get_composed_type): Likewise. 10260 102612020-06-16 Giuliano Procida <gprocida@google.com> 10262 10263 Fix leaf-mode formatting of decl <-> defn diffs. 10264 * src/abg-leaf-reporter.cc (leaf_reporter::report): In the 10265 class_or_union_diff overload, add a terminating new line after 10266 reporting a declaration-only <-> definition difference. 10267 102682020-06-15 Giuliano Procida <gprocida@google.com> 10269 10270 abg-writer: Add support for stable hash type ids. 10271 * doc/manuals/abidw.rst: Replace stray documentation of 10272 --named-type-ids with documention of new --type-id-style 10273 option. 10274 * include/abg-writer.h (type_id_style_kind): Add new enum. 10275 (set_type_id_style): Add new write_context setter. 10276 (set_common_options): Set type id style in write context. 10277 * include/abg-hash.h (fnv_hash): Declare new 32-bit FNV-1a 10278 hash function in abigail::hashing namespace. 10279 * src/abg-hash.h (fnv_hash): Define new 32-bit FNV-1a hash 10280 function in abigail::hashing namespace. 10281 * src/abg-writer.cc (write_context): Add m_type_id_style 10282 member to record type style to use, defaulting to 10283 SEQUENCE_TYPE_ID_STYLE; add m_used_type_id_hashes to record 10284 already-used hashes. 10285 (write_context::get_type_id_style): Add new getter. 10286 (write_context::set_type_id_style): Add new setter. 10287 (get_id_for_type): Add support for HASH_TYPE_ID_STYLE style. 10288 (set_type_id_style): Add new helper function. 10289 * tools/abidw.cc (options): Add type_id_style member. 10290 (display_usage): Add description of --type-id-style option. 10291 (parse_command_line): Parse --type-id-style option. 10292 * tests/data/Makefile.am: Add new hash type id ABI files. 10293 * tests/test-read-dwarf.cc: (InOutSpec): Add type_id_style 10294 member. 10295 (in_out_specs): Set type_id_style to SEQUENCE_TYPE_ID_STYLE in 10296 existing test specifications. Duplicate first 9 test cases 10297 with type_id_style set to HASH_TYPE_ID_STYLE. 10298 * tests/data/test-read-dwarf/test0.hash.abi: New ABI XML file 10299 with hash type ids. 10300 * tests/data/test-read-dwarf/test1.hash.abi: Ditto. 10301 * tests/data/test-read-dwarf/test2.so.hash.abi: Ditto. 10302 * tests/data/test-read-dwarf/test3.so.hash.abi: Ditto. 10303 * tests/data/test-read-dwarf/test4.so.hash.abi: Ditto. 10304 * tests/data/test-read-dwarf/test5.o.hash.abi: Ditto. 10305 * tests/data/test-read-dwarf/test6.so.hash.abi: Ditto. 10306 * tests/data/test-read-dwarf/test7.so.hash.abi: Ditto. 10307 * tests/data/test-read-dwarf/test8-qualified-this-pointer.so.hash.abi: 10308 Ditto. 10309 103102020-06-12 Giuliano Procida <gprocida@google.com> 10311 10312 Eliminate non-ASCII characters. 10313 * include/abg-diff-utils.h: Replace "’’" with "'". 10314 * src/abg-elf-helpers.cc: Replace "⋅" with ".". 10315 * src/abg-ini.cc: Replace "@êef" with "@ref". 10316 * src/abg-ir.cc: Ditto. 10317 * src/abg-tools-utils.cc: Replace "–" with "-". 10318 103192020-06-11 Matthias Maennich <maennich@google.com> 10320 10321 dwarf-reader: get_die_source: always initialize return value 10322 * src/abg-dwarf-reader.cc 10323 (read_context::get_die_source): Always initialize die_source. 10324 (read_context::ContainerType::get_container): Fix 10325 initialization of die_source. 10326 (read_context::compute_canonical_die): Likewise. 10327 (read_context::get_canonical_die): Likewise. 10328 (read_context::get_or_compute_canonical_die): Likewise. 10329 (read_context::associate_die_to_decl): Likewise. 10330 (read_context::set_canonical_die_offset): Likewise. 10331 (read_context::schedule_type_for_late_canonicalization): Likewise. 10332 (read_context::compare_dies): Likewise. 10333 (read_context::get_parent_die): Likewise. 10334 (read_context::get_scope_for_die): Likewise. 10335 (read_context::add_or_update_union_type): Likewise. 10336 (read_context::maybe_canonicalize_type): Likewise. 10337 (read_context::build_ir_node_from_die): Likewise. 10338 103392020-06-09 Matthias Maennich <maennich@google.com> 10340 10341 abipkgdiff: remove unused includes of elfutils/libdw.h and elf.h 10342 * tools/abipkgdiff.cc: Drop unused includes. 10343 103442020-05-29 Matthias Maennich <maennich@google.com> 10345 10346 abg-reporter: fully qualify std::string and std::ostream 10347 * include/abg-reporter.h (reporter_base::report) fully qualify 10348 std::string and std::ostream for all overloads. 10349 (default_reporter::report_local_typedef_changes): Likewise. 10350 (default_reporter::report_local_qualified_type_changes): Likewise. 10351 (default_reporter::report_local_reference_type_changes): Likewise. 10352 (default_reporter::report_local_function_type_changes): Likewise. 10353 (default_reporter::report): Likewise. 10354 (leaf_reporter::report_changes_from_diff_maps): Likewise. 10355 (leaf_reporter::report): Likewise. 10356 Suggested-by: Mark Barolak <mbar@google.com> 10357 103582020-06-05 Giuliano Procida <gprocida@google.com> 10359 10360 Fix HARMLESS_SYMBOL_ALIAS_CHANGE_CATEGORY spelling 10361 * include/abg-comparison.h (enum diff_category): Rename 10362 HARMLESS_SYMBOL_ALIAS_CHANGE_CATEORY enumerator to 10363 HARMLESS_SYMBOL_ALIAS_CHANGE_CATEGORY. 10364 * src/abg-comp-filter.cc (categorize_harmless_diff_node): Replace 10365 use of HARMLESS_SYMBOL_ALIAS_CHANGE_CATEORY enumerator with 10366 HARMLESS_SYMBOL_ALIAS_CHANGE_CATEGORY. 10367 * src/abg-comparison.cc (get_default_harmless_categories_bitmap): 10368 Replace use of HARMLESS_SYMBOL_ALIAS_CHANGE_CATEORY enumerator 10369 with HARMLESS_SYMBOL_ALIAS_CHANGE_CATEGORY. 10370 (operator<<): In the diff_category overload, replace use of 10371 HARMLESS_SYMBOL_ALIAS_CHANGE_CATEORY enumerator with 10372 HARMLESS_SYMBOL_ALIAS_CHANGE_CATEGORY and output correct 10373 spelling for both this and HARMLESS_UNION_CHANGE_CATEGORY. 10374 * tools/abicompat.cc (create_diff_context): Replace use of 10375 HARMLESS_SYMBOL_ALIAS_CHANGE_CATEORY enumerator with 10376 HARMLESS_SYMBOL_ALIAS_CHANGE_CATEGORY. 10377 103782020-05-18 Matthias Maennich <maennich@google.com> 10379 10380 dwarf-reader: read_context: drop unused symbol versioning code 10381 * src/abg-dwarf-reader.cc 10382 (read_context::versym_section_): Delete. 10383 (read_context::verdef_section_): Delete. 10384 (read_context::verneed_section_): Delete. 10385 (read_context::symbol_versionning_sections_loaded_): Delete. 10386 (read_context::symbol_versionning_sections_found_): Delete. 10387 (read_context::initialize): Remove initializations of deleted members. 10388 (read_context::get_symbol_versionning_sections): Delete. 10389 (read_context::get_version_for_symbol): Delete. 10390 (read_context::lookup_elf_symbol_from_index): Use 10391 get_version_for_symbol provided by elf_helpers. 10392 103932020-05-18 Matthias Maennich <maennich@google.com> 10394 10395 dwarf-reader: Remove unused code 10396 * src/abg-dwarf-reader.cc 10397 (lookup_public_variable_symbol_from_elf): Delete. 10398 (read_context::bss_section_): Delete. 10399 (read_context::text_section_): Delete. 10400 (read_context::rodata_section_): Delete. 10401 (read_context::data_section_): Delete. 10402 (read_context::data1_section_): Delete. 10403 (read_context::initialize): Remove initializations of deleted members. 10404 (read_context::options): Delete. 10405 (read_context::bss_section): Delete. 10406 (read_context::text_section): Delete. 10407 (read_context::rodata_section): Delete. 10408 (read_context::data_section): Delete. 10409 (read_context::data1_section): Delete. 10410 (read_context::get_elf_file_type): Delete. 10411 (read_context::lookup_symbol_from_elf): Delete. 10412 (read_context::lookup_public_variable_symbol_from_elf): Delete. 10413 (read_context::fun_addr_sym_map_sptr): Delete. 10414 (read_context::fun_addr_sym_map): Delete. 10415 (read_context::get_data_section_for_variable_address): Delete. 10416 (read_context::suppression_matches_function_sym_name): Delete. 10417 (read_context::suppression_matches_function_name): Delete. 10418 (read_context::suppression_matches_type_name): Delete. 10419 104202020-05-29 Dodji Seketeli <dodji@redhat.com> 10421 10422 abigail.m4: Fix copyright notice 10423 * abigail.m4: Mention Red Hat in the copyright and myself as author. 10424 104252020-05-18 Matthias Maennich <maennich@google.com> 10426 10427 tests: Add kernel symtab test suite 10428 * tests/data/Makefile.am: add new test data for runtestsymtab 10429 * tests/data/test-symtab/kernel-4.14/Makefile: New test case makefile. 10430 * tests/data/test-symtab/kernel-4.14/empty.c: Likewise. 10431 * tests/data/test-symtab/kernel-4.14/one_of_each.c: Likewise. 10432 * tests/data/test-symtab/kernel-4.14/single_function.c: Likewise. 10433 * tests/data/test-symtab/kernel-4.14/single_function_gpl.c: Likewise. 10434 * tests/data/test-symtab/kernel-4.14/single_variable.c: Likewise. 10435 * tests/data/test-symtab/kernel-4.14/single_variable_gpl.c: Likewise. 10436 * tests/data/test-symtab/kernel-4.14/empty.ko: New test data. 10437 * tests/data/test-symtab/kernel-4.14/one_of_each.ko: Likewise. 10438 * tests/data/test-symtab/kernel-4.14/single_function.ko: Likewise. 10439 * tests/data/test-symtab/kernel-4.14/single_function_gpl.ko: Likewise. 10440 * tests/data/test-symtab/kernel-4.14/single_variable.ko: Likewise. 10441 * tests/data/test-symtab/kernel-4.14/single_variable_gpl.ko: Likewise. 10442 * tests/data/test-symtab/kernel-4.19/Makefile: New test case makefile. 10443 * tests/data/test-symtab/kernel-4.19/empty.c: Likewise. 10444 * tests/data/test-symtab/kernel-4.19/one_of_each.c: Likewise. 10445 * tests/data/test-symtab/kernel-4.19/single_function.c: Likewise. 10446 * tests/data/test-symtab/kernel-4.19/single_function_gpl.c: Likewise. 10447 * tests/data/test-symtab/kernel-4.19/single_variable.c: Likewise. 10448 * tests/data/test-symtab/kernel-4.19/single_variable_gpl.c: Likewise. 10449 * tests/data/test-symtab/kernel-4.19/empty.ko: New test data. 10450 * tests/data/test-symtab/kernel-4.19/one_of_each.ko: Likewise. 10451 * tests/data/test-symtab/kernel-4.19/single_function.ko: Likewise. 10452 * tests/data/test-symtab/kernel-4.19/single_function_gpl.ko: Likewise. 10453 * tests/data/test-symtab/kernel-4.19/single_variable.ko: Likewise. 10454 * tests/data/test-symtab/kernel-4.19/single_variable_gpl.ko: Likewise. 10455 * tests/data/test-symtab/kernel-5.4/Makefile: New test case makefile. 10456 * tests/data/test-symtab/kernel-5.4/empty.c: Likewise. 10457 * tests/data/test-symtab/kernel-5.4/one_of_each.c: Likewise. 10458 * tests/data/test-symtab/kernel-5.4/single_function.c: Likewise. 10459 * tests/data/test-symtab/kernel-5.4/single_function_gpl.c: Likewise. 10460 * tests/data/test-symtab/kernel-5.4/single_variable.c: Likewise. 10461 * tests/data/test-symtab/kernel-5.4/single_variable_gpl.c: Likewise. 10462 * tests/data/test-symtab/kernel-5.4/empty.ko: New test data. 10463 * tests/data/test-symtab/kernel-5.4/one_of_each.ko: Likewise. 10464 * tests/data/test-symtab/kernel-5.4/single_function.ko: Likewise. 10465 * tests/data/test-symtab/kernel-5.4/single_function_gpl.ko: Likewise. 10466 * tests/data/test-symtab/kernel-5.4/single_variable.ko: Likewise. 10467 * tests/data/test-symtab/kernel-5.4/single_variable_gpl.ko: Likewise. 10468 * tests/data/test-symtab/kernel-5.6/Makefile: New test case makefile. 10469 * tests/data/test-symtab/kernel-5.6/empty.c: Likewise. 10470 * tests/data/test-symtab/kernel-5.6/one_of_each.c: Likewise. 10471 * tests/data/test-symtab/kernel-5.6/single_function.c: Likewise. 10472 * tests/data/test-symtab/kernel-5.6/single_function_gpl.c: Likewise. 10473 * tests/data/test-symtab/kernel-5.6/single_variable.c: Likewise. 10474 * tests/data/test-symtab/kernel-5.6/single_variable_gpl.c: Likewise. 10475 * tests/data/test-symtab/kernel-5.6/empty.ko: New test data. 10476 * tests/data/test-symtab/kernel-5.6/one_of_each.ko: Likewise. 10477 * tests/data/test-symtab/kernel-5.6/single_function.ko: Likewise. 10478 * tests/data/test-symtab/kernel-5.6/single_function_gpl.ko: Likewise. 10479 * tests/data/test-symtab/kernel-5.6/single_variable.ko: Likewise. 10480 * tests/data/test-symtab/kernel-5.6/single_variable_gpl.ko: Likewise. 10481 * tests/data/test-symtab/kernel/Makefile: New test case source file. 10482 * tests/data/test-symtab/kernel/empty.c: Likewise. 10483 * tests/data/test-symtab/kernel/one_of_each.c: Likewise. 10484 * tests/data/test-symtab/kernel/single_function.c: Likewise. 10485 * tests/data/test-symtab/kernel/single_function_gpl.c: Likewise. 10486 * tests/data/test-symtab/kernel/single_variable.c: Likewise. 10487 * tests/data/test-symtab/kernel/single_variable_gpl.c: Likewise. 10488 * tests/test-symtab.cc: New test case to test kernel symtabs. 10489 104902020-05-18 Matthias Maennich <maennich@google.com> 10491 10492 tests: Add symtab test suite 10493 * tests/Makefile.am: add new test runtestsymtab 10494 * tests/data/Makefile.am: add new test data for runtestsymtab 10495 * tests/data/test-symtab/Makefile: Add this to build the binaries 10496 below from their source code. 10497 * tests/data/test-symtab/basic/empty.c: New test case source. 10498 * tests/data/test-symtab/basic/link_against_me.c: Likewise. 10499 * tests/data/test-symtab/basic/no_debug_info.c: Likewise. 10500 * tests/data/test-symtab/basic/one_function_one_variable.c: Likewise. 10501 * tests/data/test-symtab/basic/one_function_one_variable_undefined.c: Likewise. 10502 * tests/data/test-symtab/basic/single_function.c: Likewise. 10503 * tests/data/test-symtab/basic/single_undefined_function.c: Likewise. 10504 * tests/data/test-symtab/basic/single_undefined_variable.c: Likewise. 10505 * tests/data/test-symtab/basic/single_variable.c: Likewise. 10506 * tests/data/test-symtab/basic/empty.so: New test data, built from 10507 the Makefile above. 10508 * tests/data/test-symtab/basic/link_against_me.so: Likewise. 10509 * tests/data/test-symtab/basic/no_debug_info.so: Likewise. 10510 * tests/data/test-symtab/basic/one_function_one_variable.so: Likewise. 10511 * tests/data/test-symtab/basic/one_function_one_variable_undefined.so: Likewise. 10512 * tests/data/test-symtab/basic/single_function.so: Likewise. 10513 * tests/data/test-symtab/basic/single_undefined_function.so: Likewise. 10514 * tests/data/test-symtab/basic/single_undefined_variable.so: Likewise. 10515 * tests/data/test-symtab/basic/single_variable.so: Likewise. 10516 * tests/test-symtab.cc: New test driver. 10517 105182020-05-19 Dodji Seketeli <dodji@redhat.com> 10519 10520 Bug 25989 - type_topo_comp doesn't meet irreflexive requirements 10521 * src/abg-ir.cc (type_topo_comp::operator()): In the comparison 10522 operator consider two equivalent empty-qualified types as being 10523 topologically equivalent. 10524 105252020-05-07 Dodji Seketeli <dodji@redhat.com> 10526 10527 Bug 25661 - Support data member replacement by anonymous data member 10528 * include/abg-comp-filter.h (has_data_member_replaced_by_anon_dm): 10529 Declare new function. 10530 * include/abg-comparison.h (changed_var_sptr) 10531 (changed_var_sptrs_type): Declare new typedefs. 10532 (HARMLESS_DATA_MEMBER_CHANGE_CATEGORY): Add a new enumerator to 10533 the diff_category enum. 10534 (EVERYTHING_CATEGORY): In the diff_category, adjust this 10535 enumerator to OR the new HARMLESS_DATA_MEMBER_CHANGE_CATEGORY into 10536 it. 10537 (SUPPRESSED_CATEGORY, PRIVATE_TYPE_CATEGORY) 10538 (SIZE_OR_OFFSET_CHANGE_CATEGORY, VIRTUAL_MEMBER_CHANGE_CATEGORY) 10539 (CLASS_DECL_ONLY_DEF_CHANGE_CATEGORY) 10540 (FN_PARM_TYPE_TOP_CV_CHANGE_CATEGORY) 10541 (FN_RETURN_TYPE_CV_CHANGE_CATEGORY, VAR_TYPE_CV_CHANGE_CATEGORY) 10542 (VOID_PTR_TO_PTR_CHANGE_CATEGORY) 10543 (BENIGN_INFINITE_ARRAY_CHANGE_CATEGORY): Adjust the value of these 10544 enumerators of the diff_category enum. 10545 (class_or_union_diff::{data_members_replaced_by_adms, 10546 ordered_data_members_replaced_by_adms}): Declare new member 10547 functions. 10548 * include/abg-fwd.h (var_decl_wptr): Declare new typedef. 10549 (get_next_data_member, get_first_non_anonymous_data_member) 10550 (find_data_member_from_anonymous_data_member) 10551 (get_absolute_data_member_offset): Declare new functions. 10552 * include/abg-ir.h (struct anonymous_dm_hash): Declare new type. 10553 (anonymous_data_member_sptr_set_type): Declare new typedef. 10554 (class decl_base): Befriend class class_or_union. 10555 (class dm_context_rel): Pimpl-ify this class. 10556 (dm_context_rel::{g,s}et_anonymous_data_member_types): Declare new 10557 member functions. 10558 (var_decl::get_anon_dm_reliable_name): Declare new member 10559 function. 10560 (class var_decl): Make get_absolute_data_member_offset, 10561 get_absolute_data_member_offset be friends of this. 10562 (class_or_union::maybe_fixup_members_of_anon_data_member): Declare 10563 new protected member function. 10564 * src/abg-comp-filter.cc (has_data_member_replaced_by_anon_dm): 10565 Define new function. 10566 (categorize_harmless_diff_node): Use the above. 10567 * src/abg-comparison-priv.h 10568 (class_or_union_diff::priv::{dms_replaced_by_adms_, 10569 changed_var_sptrs_type dms_replaced_by_adms_ordered_}): Add new 10570 data members. 10571 (data_member_comp::compare_data_members): Factorize this out of ... 10572 (data_member_comp::operator()(decl_base_sptr&, decl_base_sptr&)): 10573 ... this. 10574 (data_member_comp::operator()(changed_var_sptr&, 10575 changed_var_sptr&)): Add new member function. 10576 (sort_changed_data_members): Declare ... 10577 * src/abg-comparison.cc (sort_changed_data_members): ... new 10578 function. 10579 (get_default_harmless_categories_bitmap): Adjust to take the new 10580 abigail::comparison::HARMLESS_DATA_MEMBER_CHANGE_CATEGORY into 10581 account. 10582 (operator<<(ostream& o, diff_category c)): Likewise. 10583 (class_or_union_diff::ensure_lookup_tables_populated): Handle 10584 Handle the insertion of anonymous data members to replace existing 10585 data members. 10586 (class_or_union_diff::{data_members_replaced_by_adms, 10587 ordered_data_members_replaced_by_adms}): Define new accessors. 10588 (suppression_categorization_visitor::visit_end): Propagate the 10589 SUPPRESSION_CATEGORIZATION_VISITOR from changes to the type of the 10590 data member if the data member doesn't have real local changes. 10591 * src/abg-default-reporter.cc (default_reporter::report): Report 10592 about anonymous data members that replace data members. 10593 * src/abg-ir.cc (struct dm_context_rel::priv): Define new data 10594 structure. 10595 (dm_context_rel::{dm_context_rel, get_is_laid_out, 10596 set_is_laid_out, get_offset_in_bits, set_offset_in_bits, 10597 operator==, operator!=, get_anonymous_data_member, 10598 set_anonymous_data_member}): Define the member functions here as 10599 they are not inline anymore. 10600 (class_or_union::maybe_fixup_members_of_anon_data_member): Define 10601 new member function. 10602 (class_or_union::add_data_member): Use it. 10603 (get_first_non_anonymous_data_member, get_next_data_member) 10604 (get_absolute_data_member_offset) 10605 (find_data_member_from_anonymous_data_member): Define new 10606 functions. 10607 * src/abg-reporter-priv.h 10608 (maybe_report_data_members_replaced_by_anon_dm): Declare ... 10609 * src/abg-reporter-priv.cc 10610 (maybe_report_data_members_replaced_by_anon_dm): ... new function. 10611 * src/abg-leaf-reporter.cc (leaf_reporter::report): Report data 10612 members replaced by anonymous data members. 10613 * tests/data/test-diff-filter/test-PR25661-[1-6]-report-[1-4].txt: New 10614 test reference outputs. 10615 * tests/data/test-diff-filter/test-PR25661-[1-6]-v{0,1}.c: Test 10616 source code files. 10617 * tests/data/test-diff-filter/test-PR25661-[1-6]-v{0,1}.o: Test 10618 binary input files. 10619 * tests/data/Makefile.am: Add the new test files above to source 10620 distribution. 10621 * tests/test-diff-filter.cc (in_out_specs): Add the binary test 10622 inputs above to this test harness. 10623 * tests/data/test-diff-dwarf/test45-anon-dm-change-report-0.txt: 10624 Adjust. 10625 106262020-05-07 Dodji Seketeli <dodji@redhat.com> 10627 10628 dwarf-reader: support several anonymous data members in a given class 10629 * include/abg-ir.h (class_or_union::find_anonymous_data_member): 10630 Declare a new member function. 10631 (class_or_union::find_data_member): Declare a new overload. 10632 (var_decl::get_anon_dm_reliable_name): Declare new member 10633 function. 10634 * src/abg-ir.cc (var_decl::get_pretty_representation): Make this 10635 work on a var_decl is going to be used to represent an anonymous 10636 data member even before the var_decl has been added to its finale 10637 scope. This is useful to make class_or_union::find_data_member 10638 work on a var_decl that is to be used as an anonymous data member. 10639 (var_decl::get_anon_dm_reliable_name): Define new member function. 10640 (class_or_union::find_data_member): In the existing overload that 10641 takes a string, look for the named data member inside the 10642 anonymous data members. Define a new overload that takes a 10643 var_decl_sptr, to look for anonymous data members. 10644 (class_or_union::find_anonymous_data_member): Define a new member 10645 function. 10646 (lookup_data_member): Use the existing 10647 class_or_union::find_data_member. 10648 * src/abg-reader.cc: (build_class_decl): Use the full anonymous 10649 variable for lookup, rather than its name which is empty and will 10650 thus give false positives. 10651 * src/abg-dwarf-reader.cc (add_or_update_class_type): Likewise. 10652 * src/abg-comparison.cc 10653 (class_or_union_diff::ensure_lookup_tables_populated): Name 10654 anonymous data members properly - as opposed to wrongly using 10655 their empty name. 10656 * src/abg-reporter-priv.cc (represent): In the overload for 10657 var_diff_sptr, make sure that changes to the /type/ of a variable 10658 declaration are always reported. 10659 * tests/data/test-abidiff-exit/test-member-size-report0.txt: 10660 Adjust as we now emit more detailed changes about anonymous data 10661 members. 10662 * tests/data/test-abidiff-exit/test-member-size-report1.txt: 10663 Likewise. 10664 * tests/data/test-annotate/test-anonymous-members-0.o.abi: Adjust 10665 to reflect the fact that a class can now have several anonymous 10666 data members. 10667 * tests/data/test-diff-dwarf-abixml/PR25409-librte_bus_dpaa.so.20.0.abi: 10668 Likewise. 10669 * tests/data/test-diff-filter/test30-pr18904-rvalueref-report0.txt: 10670 Likewise. 10671 * tests/data/test-diff-filter/test30-pr18904-rvalueref-report1.txt: 10672 Likewise. 10673 * tests/data/test-diff-filter/test35-pr18754-no-added-syms-report-0.txt: 10674 Likewise. 10675 106762020-05-07 Dodji Seketeli <dodji@redhat.com> 10677 10678 {default,leaf}-reporter: group data members changes reports together 10679 * include/abg-comparison.h 10680 (class_or_union_diff::{sorted_changed_data_members, 10681 count_filtered_changed_data_members, 10682 sorted_subtype_changed_data_members, 10683 count_filtered_subtype_changed_data_members}): Declare ... 10684 * src/abg-comparison.cc 10685 (class_or_union_diff::{sorted_changed_data_members, 10686 count_filtered_changed_data_members, 10687 sorted_subtype_changed_data_members, 10688 count_filtered_subtype_changed_data_members}): ... accessors for 10689 existing private data members. 10690 * src/abg-default-reporter.cc (default_reporter::report): In the 10691 class_or_union_diff& overload, group the reporting of the changes 10692 to data member sub-types with the replacement of data members. 10693 These are just data member changes after all. Use the newly 10694 declared accessors for better measure. 10695 * src/abg-leaf-reporter.cc (leaf_reporter::report): Likewise. 10696 * tests/data/test-diff-dwarf/test45-anon-dm-change-report-0.txt: Adjust. 10697 * src/abg-leaf-reporter.cc (leaf_reporter::report): Likewise. 10698 * tests/data/test-diff-pkg/spice-server-0.12.4-19.el7.x86_64-0.12.8-1.el7.x86_64-report-2.txt: 10699 Likewise. 10700 107012020-05-18 Dodji Seketeli <dodji@redhat.com> 10702 10703 Add -g back to ABIGAIL_DEVEL 10704 * configure.ac: Don't forget to set -g when ABIGAIL_DEVEL is set. 10705 107062020-05-15 Giuliano Procida <gprocida@google.com> 10707 10708 clang-format: set continuation indentation to 2 10709 * .clang-format: Set ContinuationIndentWidth to 2. 10710 107112020-05-15 Matthias Maennich <maennich@google.com> 10712 10713 configure: add more diagnostic options when ABIGAIL_DEVEL is set 10714 * configure.ac: add -D_FORTIFY_SOURCE=2 and -D_GLIBCXX_DEBUG 10715 compilation defines if ABIGAIL_DEVEL is set. Note that with GCC 4.8.5, 10716 -D_FORTIFY_SOURCE=2 requires options to be set. So I am setting 10717 the optimization level to -Og. 10718 * src/abg-dwarf-reader.cc (read_context::{compute_canonical_die, 10719 get_or_compute_canonical_die, associate_die_to_decl, 10720 set_canonical_die_offset, schedule_type_for_late_canonicalization, 10721 compare_dies}, get_scope_for_die, add_or_update_union_type) 10722 (read_debug_info_into_corpus, build_ir_node_from_die): Initialize 10723 the 'source' variable. 10724 * tests/test-diff-filter.cc (main): Check the return value of the 10725 system function. 10726 * tests/test-diff-pkg.cc (main): Likewise. 10727 * tests/test-read-write.cc (main): Likewise. 10728 107292020-05-15 Matthias Maennich <maennich@google.com> 10730 10731 configure: add ABIGAIL_DEBUG options 10732 * configure.ac: add ABIGAIL_DEBUG environment variable for 10733 improved debugging capabilities 10734 107352020-05-05 Giuliano Procida <gprocida@google.com> 10736 10737 Tidy get_pretty_representation qualified_name. 10738 * include/abg-ir.h (type_decl::get_pretty_representation) 10739 Change default for qualified_name parameter to true. 10740 107412020-05-13 Dodji Seketeli <dodji@redhat.com> 10742 10743 Bug 25986 - Wrong name of function type used in change report 10744 * src/abg-ir.cc (function_type::get_cached_name): Don't cache 10745 names for non-canonicalized types. 10746 * tests/data/test-abidiff-exit/test-fun-param-report.txt: Add 10747 reference output for new test. 10748 * tests/data/test-abidiff-exit/test-fun-param-v{0,1}.abi: Add new test 10749 input files. 10750 * tests/data/test-abidiff-exit/test-fun-param-v{0,1}.c: Add source 10751 files for the above. 10752 * tests/data/test-abidiff-exit/test-fun-param-v{0,1}.o: Add 10753 binaries for the above. 10754 107552020-05-11 Mark Wielaard <mark@klomp.org> 10756 10757 Don't iterate before the start of a RandomAccessOutputIterator. 10758 * include/abg-diff-utils.h (compute_diff): Put brackets around 10759 p[ux].[xy]() + 1 calculation. 10760 107612020-05-12 Giuliano Procida <gprocida@google.com> 10762 10763 doc: Fix sufficient suppression property lists. 10764 * doc/manuals/libabigail-concepts.rst: Add missing 10765 sufficient properties for suppress_file, suppress_function and 10766 suppress_variable. Use consistent language about what will 10767 happen when no property in the list in provided. 10768 107692020-05-11 Matthias Maennich <maennich@google.com> 10770 10771 cxx-compat: add test suite for cxx-compat 10772 * tests/Makefile.am: Add new test case runtestcxxcompat. 10773 * tests/test-cxx-compat.cc: New test source file. 10774 Reviewed-by: Giuliano Procida <gprocida@google.com> 10775 107762020-05-11 Matthias Maennich <maennich@google.com> 10777 10778 dwarf-reader: read_context: drop some unused accessor methods 10779 * src/abg-dwarf-reader.cc (read_context::fun_syms_sptr): Delete method. 10780 (read_context::fun_syms): Likewise. 10781 (read_context::var_syms_sptr): Likewise. 10782 (read_context::var_syms): Likewise. 10783 (read_context::undefined_fun_syms_sptr): Likewise. 10784 (read_context::undefined_fun_syms): Likewise. Both overloads. 10785 (read_context::undefined_var_syms_sptr): Likewise. 10786 (read_context::undefined_var_syms): Likewise. Both overloads. 10787 Reviewed-by: Giuliano Procida <gprocida@google.com> 10788 107892020-05-11 Matthias Maennich <maennich@google.com> 10790 10791 tests/.gitignore: ignore all files starting with runtest* 10792 * tests/.gitignore: gitignore all files named runtest* 10793 Reviewed-by: Giuliano Procida <gprocida@google.com> 10794 107952020-05-11 Matthias Maennich <maennich@google.com> 10796 10797 configure: set -Wno-error-overloaded-virtual for clang builds 10798 * configure.ac: set -Wno-error-overloaded-virtual for clang++ 10799 108002020-05-05 Giuliano Procida <gprocida@google.com> 10801 10802 Let std::unordered_map::operator[] insert keys. 10803 * src/abg-reader.cc (read_context::key_type_decl): Rely on 10804 std::unordered_map::operator[] to create map entries if they 10805 are missing. (build_elf_symbol_db): Ditto. 10806 108072020-05-05 Giuliano Procida <gprocida@google.com> 10808 10809 abg-reader.cc: Remove key_replacement_type_map. 10810 * src/abg-reader.cc (key_replacement_type_map): Drop unused 10811 function. 10812 108132020-05-04 Giuliano Procida <gprocida@google.com> 10814 10815 Refactor read_parameter_spec_from_string logic. 10816 * src/abg-suppression.cc (read_parameter_spec_from_string): 10817 Use separate string and regex variables to simplify the 10818 creation of returned parameter specification. 10819 Reviewed-by: Matthias Maennich <maennich@google.com> 10820 108212020-05-04 Giuliano Procida <gprocida@google.com> 10822 10823 Use regex::match wrapper instead of regexec. 10824 * src/abg-corpus-priv.h: Mechanically substitute use of 10825 regexec with regex::match wrapper. 10826 * src/abg-suppression-priv.h: Ditto. 10827 * src/abg-suppression.cc: Ditto. 10828 Reviewed-by: Matthias Maennich <maennich@google.com> 10829 108302020-05-12 Giuliano Procida <gprocida@google.com> 10831 10832 Tidy checks for sufficient suppression properties. 10833 * src/abg-suppression.cc (check_sufficient_props): New helper 10834 function to check for sufficient properties in a section. 10835 (read_type_suppression): Replace conditional logic with call 10836 to check_sufficient_props. 10837 (read_function_suppression): Ditto. 10838 (read_variable_suppression): Ditto. 10839 (read_file_suppression): Ditto. 10840 * tests/data/test-diff-suppr/test15-suppr-added-fn-4.suppr: 10841 Explain why the suppression will be ignored. 10842 * tests/data/test-diff-suppr/test16-suppr-removed-fn-4.suppr: 10843 Ditto. 10844 * tests/data/test-diff-suppr/test17-suppr-added-var-4.suppr: 10845 Ditto. 10846 * tests/data/test-diff-suppr/test18-suppr-removed-var-4.suppr: 10847 Ditto. 10848 108492020-05-12 Dodji Seketeli <dodji@redhat.com> 10850 10851 Bug 25977 - runtestabidiffexit regression on EL7 10852 * abg-comparison.cc: 10853 (suppression_categorization_visitor::visit_end): Don't suppress 10854 the entire class of equivalence of a function diff node if that 10855 function diff node itself was not suppressed. 10856 108572020-05-04 Giuliano Procida <gprocida@google.com> 10858 10859 Use regex::compile wrapper instead of regcomp. 10860 * src/abg-corpus-priv.h: Mechanically substitute use of 10861 regcomp with regex::compile wrapper. 10862 * src/abg-suppression-priv.h: Ditto. 10863 There are no behavioural changes. 10864 Reviewed-by: Matthias Maennich <maennich@google.com> 10865 108662020-05-04 Giuliano Procida <gprocida@google.com> 10867 10868 Add POSIX regex wrapper functions. 10869 * include/abg-regex.h (compile): Declare new function. 10870 (match): Declare new function. 10871 * src/abg-regex.cc (compile): Add new function wrapping 10872 regcomp. (match): Add new function wrapping regexec. 10873 Reviewed-by: Matthias Maennich <maennich@google.com> 10874 108752020-05-04 Giuliano Procida <gprocida@google.com> 10876 10877 abg-suppression.cc: More uniform variable naming. 10878 * src/abg-suppression.cc (read_type_suppression): Rename "nil" 10879 variable to "result" and reset it instead of introducing 10880 "suppr" later on. (read_function_suppression): Rename "nil" 10881 variable to "result" and reset it instead of introducing 10882 "result" later on. 10883 Reviewed-by: Matthias Maennich <maennich@google.com> 10884 108852020-05-04 Giuliano Procida <gprocida@google.com> 10886 10887 Escape names used in symbol whitelisting regex. 10888 * include/regex.h (escape): New string reference holder 10889 class. (operator<<): Declaration of std::ostream, 10890 regex::escape overload. 10891 * include/regex.cc (operator<<): New std::ostream, 10892 regex::escape overload that outputs regex-escaped strings. 10893 * src/abg-tools-utils.cc 10894 (gen_suppr_spec_from_kernel_abi_whitelists): Make sure any 10895 special regex characters in symbol names are escaped. 10896 Reviewed-by: Matthias Maennich <maennich@google.com> 10897 108982020-05-04 Giuliano Procida <gprocida@google.com> 10899 10900 Document ^_^ regex in generate_from_strings. 10901 * src/abg-regex.cc (generate_from_strings): Document ^_^ 10902 regex. 10903 109042020-05-04 Giuliano Procida <gprocida@google.com> 10905 10906 Tidy #includes in a few files. 10907 * src/abg-corpus-priv.h: Separate and sort #include 10908 directives. 10909 * src/abg-corpus.cc: Ditto. 10910 * src/abg-regex.cc: Ditto. 10911 * src/abg-suppression-priv.h: Ditto. 10912 * src/abg-suppression.cc: Ditto. 10913 109142020-05-01 Giuliano Procida <gprocida@google.com> 10915 10916 Hoist some common expressions evaluating offsets. 10917 * src/abg-suppression.cc (type_suppression::suppresses_diff): 10918 Hoist some constant expressions out of loops. 10919 Reviewed-by: Matthias Maennich <maennich@google.com> 10920 109212020-05-01 Giuliano Procida <gprocida@google.com> 10922 10923 Make set_drops_artifact_from_ir non-const. 10924 * include/abg-suppression.h 10925 (suppression_base::set_drops_artifact_from_ir): 10926 Drop const qualifier. 10927 * src/abg-suppression.cc 10928 (suppression_base::set_drops_artifact_from_ir): 10929 Drop const qualifier. 10930 Reviewed-by: Matthias Maennich <maennich@google.com> 10931 109322020-05-01 Giuliano Procida <gprocida@google.com> 10933 10934 Eliminate redundant conditional operators. 10935 * src/abg-corpus.cc (corpus::priv::build_unreferenced_symbols_tables): 10936 Eliminate redundant conditional operator. 10937 * src/abg-dwarf-reader.cc (build_reference_type): Ditto. 10938 * src/abg-reader.cc (read_static): Ditto. 10939 (read_is_artificial): Ditto. (build_function_parameter): 10940 Ditto. (build_function_decl): Ditto. 10941 (build_qualified_type_decl): Ditto. 10942 (build_reference_type_def): Ditto. 10943 Reviewed-by: Matthias Maennich <maennich@google.com> 10944 109452020-05-01 Giuliano Procida <gprocida@google.com> 10946 10947 Remove stray semicolons. 10948 * include/abg-diff-utils.h (display_edit_script): Remove 10949 redundant semicolon. 10950 * include/abg-fwd.h (lookup_basic_type): Ditto. 10951 * src/abg-comparison.cc (mark_diff_as_visited): 10952 Ditto. (array_diff::has_local_changes): Ditto. 10953 (class_diff::ensure_lookup_tables_populated): Ditto. 10954 * src/abg-corpus.cc 10955 (corpus::priv::build_unreferenced_symbols_tables): Ditto. 10956 * src/abg-default-reporter.cc (default_reporter::report): 10957 Ditto. 10958 * src/abg-dwarf-reader.cc (finish_member_function_reading): 10959 Ditto. 10960 * src/abg-ir.cc (is_compatible_with_class_type): Ditto. 10961 (enum_type_decl::enumerator::set_name): Ditto. 10962 * src/abg-reader.cc (read_corpus_from_input): Ditto. 10963 (build_function_type): Ditto. 10964 * src/abg-suppression.cc (type_suppression::suppresses_type): 10965 Ditto. 10966 Reviewed-by: Matthias Maennich <maennich@google.com> 10967 109682020-05-01 Giuliano Procida <gprocida@google.com> 10969 10970 Remove excess whitespace. 10971 * src/abg-suppression.cc: Eliminate double blank lines. 10972 (read_parameter_spec_from_string): Eliminate space between 10973 ++ operator and its operand. 10974 Reviewed-by: Matthias Maennich <maennich@google.com> 10975 109762020-01-12 Matthias Maennich <maennich@google.com> 10977 10978 corpus/writer: sort emitted translation units by path name 10979 * include/abg-fwd.h: remove translation_units fwd declaration. 10980 * include/abg-ir.h (struct shared_translation_unit_comparator): 10981 Define new class. 10982 (translation_units): Define new typedef. 10983 * src/abg-corpus.cc (corpus::add): do checked insert into the 10984 translation_units set (rather than vector::push_back) 10985 * tests/data/test-annotate/test13-pr18894.so.abi: Adjust test data. 10986 * tests/data/test-annotate/test14-pr18893.so.abi: Likewise. 10987 * tests/data/test-annotate/test15-pr18892.so.abi: Likewise. 10988 * tests/data/test-annotate/test17-pr19027.so.abi: Likewise. 10989 * tests/data/test-annotate/test18-pr19037-libvtkRenderingLIC-6.1.so.abi: Likewise. 10990 * tests/data/test-annotate/test19-pr19023-libtcmalloc_and_profiler.so.abi: Likewise. 10991 * tests/data/test-annotate/test20-pr19025-libvtkParallelCore-6.1.so.abi: Likewise. 10992 * tests/data/test-annotate/test21-pr19092.so.abi: Likewise. 10993 109942020-04-29 Matthias Maennich <maennich@google.com> 10995 10996 tests: reorder test execution to optimize 'make check' runtime 10997 * tests/Makefile.am(TESTS): split up in expensive and non 10998 expensive tests, sort the expensive ones by runime, the cheap 10999 ones alphabetically 11000 110012020-04-29 Matthias Maennich <maennich@google.com> 11002 11003 test-types-stability: parallelize test case alternatives 11004 * tests/test-types-stability.cc (test_task): add field no_default_sizes 11005 (test_task::perform) Switch on the new flag to test a different 11006 behaviour. 11007 (main): Schedule an additional test case to test with the new flag. 11008 Cc: Mark Wielaard <mark@klomp.org> 11009 110102020-05-04 Dodji Seketeli <dodji@redhat.com> 11011 11012 Fix compilation with g++ 4.8.5 on el7 11013 * include/abg-libxml-utils.h (build_sptr<xmlTextReader>): Wrap 11014 this specialization in the namespace sptr_utils and do away with 11015 the sptr_utils qualifier. 11016 * include/abg-regex.h (build_sptr<regex_t>): Likewise. 11017 110182020-04-24 Giuliano Procida <gprocida@google.com> 11019 11020 Simplify generation of symbol whitelist regex. 11021 * include/abg-regex.h (generate_from_strings): Declare new 11022 function to build a regex from some strings, representing a 11023 membership test. 11024 * src/abg-regex.cc (generate_from_strings): Implement new 11025 function to build a regex from some strings, representing a 11026 membership test, in a straightfoward fashion. 11027 * src/abg-tools-utils.cc 11028 (gen_suppr_spec_from_kernel_abi_whitelists): Replace 11029 regex-building code with a call to generate_from_strings. 11030 * tests/test-kmi-whitelist.cc: Update regexes in test. 11031 110322020-04-24 Giuliano Procida <gprocida@google.com> 11033 11034 Move libxml bits out of abg-sptr-utils.h. 11035 * include/abg-sptr-utils.h: Remove reader_sptr and 11036 xml_char_sptr typedefs, from namespace 11037 sptr_utils. (build_sptr): Remove corresponding template 11038 function specialisations for these types. 11039 * include/abg-libxml-utils.h: Add reader_sptr and 11040 xml_char_sptr typedefs, to namespace xml. (build_sptr): Add 11041 corresponding template function specialisations for these 11042 types. 11043 110442020-04-24 Giuliano Procida <gprocida@google.com> 11045 11046 Move regex definitions to own files. 11047 * include/Makefile.am: Add abg-regex.h. 11048 * src/Makefile.am: Remove abg-sptr-utils.h, add abg-regex.cc 11049 * include/abg-sptr-utils.h (regex_t_sptr): Remove this 11050 typedef, from namespace abigail::sptr_utils. 11051 (regex_t_deleter): Remove this struct, from namespace 11052 abigail::sptr_utils. (build_sptr): Remove these template 11053 specialisations, in duplicate, for regex_t_sptr. 11054 * include/abg-regex.h: New file, introduces namespace 11055 abigail::regex. (regex_t_sptr): Add this typedef, to namespace 11056 abigail::regex. (regex_t_deleter): Add this struct, to 11057 namespace abigail::regex. (build_sptr): Add these template 11058 specialisations for regex_t_sptr 11059 * src/abg-sptr-utils.cc: Remove this file. 11060 * src/abg-regex.cc: Add new file with contents effectively 11061 the same as abg-sptr-utils.cc. 11062 * src/abg-corpus-priv.h: Update regex_t_sptr namespace 11063 qualification. 11064 * src/abg-corpus.cc: Ditto. 11065 * src/abg-suppression-priv.h: Ditto. 11066 * src/abg-suppression.cc: Ditto. 11067 110682020-04-27 Mark Wielaard <mark@klomp.org> 11069 11070 Add --no-write-default-sizes option. 11071 * doc/manuals/abidw.rst: Document --no-write-default-sizes. 11072 * include/abg-writer.h (set_write_default_sizes): New function 11073 declaration. 11074 (set_common_options): Call set_write_default_sizes. 11075 * src/abg-reader.cc (build_function_decl): Get default size. 11076 (build_pointer_type_def): Likewise. 11077 (build_reference_type_def): Likewise. 11078 (build_function_type): Likewise. 11079 * src/abg-writer.cc (write_context): Add m_write_default_sizes 11080 bool. 11081 (get_write_default_sizes): New method. 11082 (set_write_default_sizes): Likewise. 11083 (write_size_and_alignment): Add default size and alignment 11084 parameters. 11085 (set_write_default_sizes): New function. 11086 (write_type_decl): Set default size and alignment. 11087 (write_pointer_type_def): Likewise. 11088 (write_reference_type_def): Likewise. 11089 (write_function_decl): Likewise. 11090 (write_function_type): Likewise. 11091 (write_class_decl_opening_tag): Likewise. 11092 (write_union_decl_opening_tag): Likewise. 11093 * tests/test-types-stability.cc (perform): Also test --abidiff 11094 with --no-write-default-sizes. 11095 * tools/abidw.cc (option): Add default_sizes bool. 11096 (parse_command_line): Parse --no-write-default-sizes. 11097 (display_usage): Add doc string for --no-write-default-sizes. 11098 110992020-04-26 Mark Wielaard <mark@klomp.org> 11100 11101 Rename read_elf_symbol_binding to read_elf_symbol_visibility. 11102 * src/abg-reader.cc (read_elf_symbol_binding): Renamed to... 11103 (read_elf_symbol_visibility): ...this. 11104 111052020-04-22 Giuliano Procida <gprocida@google.com> 11106 11107 abidiff: Omit declaration-only type size 0 diffs. 11108 * src/abg-reporter-priv.cc (report_size_and_alignment_changes): 11109 Filter out declaration-only / defined type size changes 11110 unconditionally. 11111 * tests/data/test-abidiff-exit/test-decl-struct-report.txt: 11112 Update test. 11113 111142020-04-22 Giuliano Procida <gprocida@google.com> 11115 11116 abidiff: Blank line after declaration-only diff. 11117 * src/abg-default-reporter.cc (default_reporter::report): In 11118 the class_or_union_diff overload, emit a new line at the end 11119 of the declaration-only reporting path. 11120 * tests/data/test-abidiff-exit/test-decl-struct-report.txt: 11121 Add missing blank lines. 11122 111232020-04-22 Giuliano Procida <gprocida@google.com> 11124 11125 Add tests for declaration-only struct diffs. 11126 * tests/data/Makefile.am: Add new test case files. 11127 * tests/data/test-abidiff-exit/test-decl-struct-report.txt: 11128 New test case generating "declaration-only" output. 11129 * tests/data/test-abidiff-exit/test-decl-struct-v0.c: Ditto. 11130 * tests/data/test-abidiff-exit/test-decl-struct-v0.o: Ditto. 11131 * tests/data/test-abidiff-exit/test-decl-struct-v1.c: Ditto. 11132 * tests/data/test-abidiff-exit/test-decl-struct-v1.o: Ditto. 11133 * tests/test-abidiff-exit.cc: Run new test case. 11134 111352020-04-24 Mark Wielaard <mark@klomp.org> 11136 11137 Add --no-elf-needed option to drop DT_NEEDED list from corpus. 11138 * doc/manuals/abidw.rst: Document --no-elf-needed. 11139 * include/abg-writer.h (set_write_elf_needed): New function. 11140 (set_common_options): Call it. 11141 * src/abg-writer.cc (write_context::m_write_elf_needed): New data 11142 member. 11143 (write_context::{g,s}et_write_elf_needed): Add new accessors. 11144 (set_write_elf_needed): New function. 11145 (write_context::write_corpus): Check write_elf_needed. 11146 * tools/abidw.cc (options): Add write_elf_needed bool. 11147 (display_usage): Describe --no-elf-needed. 11148 (parse_command_line): Parse --no-elf-needed. 11149 111502020-04-21 Mark Wielaard <mark@klomp.org> 11151 11152 Add no-parameter-names to drop function parameter names. 11153 * doc/manuals/abidw.rst: Add documentation for --no-parameter-names. 11154 * include/abg-writer.h (set_write_parameter_names): New function. 11155 (set_write_parameter_names): Call it. 11156 * src/abg-writer.cc (write_context): Add m_write_parameter_names 11157 bool, get_write_parameter_names and set_write_parameter_names 11158 functions. 11159 (write_context::write_function_decl): Check write_parameter_names. 11160 * tools/abidw.cc (options): Add write_parameter_names. 11161 (display_usage): Describe --no-parameter-names. 11162 (parse_command_line): Parse --no-parameter-names. 11163 111642020-04-24 Dodji Seketeli <dodji@redhat.com> 11165 11166 abipkgdiff: Fix race condition while using private types suppr specs 11167 * tools/abipkgdiff.cc (compare_args::private_types_suppr{1,2}): 11168 Make these data member *not* be a reference anymore. 11169 (maybe_create_private_types_suppressions): Rename this into ... 11170 (create_private_types_suppressions): ... this. Also, make this 11171 function return a copy of the vector of suppression specifications 11172 for private types created. 11173 (compare_prepared_userspace_packages): Use the new 11174 create_private_types_suppressions to create a copy of private 11175 types suppression specifications, rather than sharing it from 11176 package::private_types_suppressions_. 11177 (extract_package_and_map_its_content): Adjust to avoid creating 11178 the shared suppression specifications for private types. 11179 (package::private_types_suppressions_): Remove this data member 11180 that was holding the shared suppressions for private types. 11181 (package::private_types_suppressions): Remove these accessors. 11182 111832020-04-22 Giuliano Procida <gprocida@google.com> 11184 11185 test24-soname-suppr*txt: Fix suppression syntax. 11186 * tests/data/test-diff-suppr/test24-soname-suppr-0.txt: Fix 11187 typo, change "reached_through" to "accessed_through". 11188 * tests/data/test-diff-suppr/test24-soname-suppr-1.txt: Ditto. 11189 * tests/data/test-diff-suppr/test24-soname-suppr-2.txt: Ditto. 11190 * tests/data/test-diff-suppr/test24-soname-suppr-3.txt: Ditto. 11191 * tests/data/test-diff-suppr/test24-soname-suppr-4.txt: Ditto. 11192 111932020-04-20 Giuliano Procida <gprocida@google.com> 11194 11195 test35-leaf.suppr: fix regex typo. 11196 * tests/data/test-diff-suppr/test35-leaf.suppr: Fix typo in 11197 regex, "*." -> ".*". 11198 111992020-04-21 Matthias Maennich <maennich@google.com> 11200 11201 abg-elf-helpers: migrate maybe_adjust_et_rel_sym_addr_to_abs_addr 11202 * src/abg-dwarf-reader.cc 11203 (maybe_adjust_et_rel_sym_addr_to_abs_addr) 11204 (drop the wrapped overload completely): Move out functions. 11205 * src/abg-elf-helpers.cc 11206 (maybe_adjust_et_rel_sym_addr_to_abs_addr): New function. 11207 * src/abg-elf-helpers.h 11208 (maybe_adjust_et_rel_sym_addr_to_abs_addr): New function 11209 declaration. 11210 Reviewed-by: Giuliano Procida <gprocida@google.com> 11211 112122020-04-21 Matthias Maennich <maennich@google.com> 11213 11214 abg-elf-helpers: migrate more elf helpers (architecture specific helpers) 11215 * src/abg-dwarf-reader.cc (elf_architecture_is_ppc64): Move 11216 function out and adjust callers to call the migrated 11217 functions. 11218 (elf_architecture_is_big_endian): Likewise. 11219 (architecture_word_size): Likewise. 11220 (current_elf_file_is_executable): Likewise. 11221 (current_elf_file_is_dso): Likewise. 11222 * src/abg-elf-helpers.cc (architecture_is_ppc64): Add new function. 11223 (architecture_is_big_endian): Likewise. 11224 (get_architecture_word_size): Likewise. 11225 (is_executable): Likewise. 11226 (is_dso): Likewise. 11227 * src/abg-elf-helpers.h (architecture_is_ppc64): Add new declaration. 11228 (architecture_is_big_endian): Likewise. 11229 (get_architecture_word_size): Likewise. 11230 (is_executable): Likewise. 11231 (is_dso): Likewise. 11232 Reviewed-by: Giuliano Procida <gprocida@google.com> 11233 112342020-04-21 Matthias Maennich <maennich@google.com> 11235 11236 abg-dwarf-reader: migrate more ELF helpers to elf-helpers 11237 * src/abg-dwarf-reader.cc (read_context::{opd_section_, 11238 ksymtab_section_, ksymtab_reloc_section_, ksymtab_gpl_section_, 11239 ksymtab_gpl_reloc_section_, ksymtab_strings_section_}): Make these 11240 data members mutable as they are set by their getter member 11241 functions, as an implementation detail. 11242 (read_context::find_symbol_table_section): 11243 adjust to new interface of elf_helpers::find_symbol_table_section. 11244 (find_opd_section): use elf_helpers::find_opd_section for lookup. 11245 (find_ksymtab_section): use elf_helpers::find_ksymtab_section. 11246 (find_ksymtab_gpl_section): use elf_helpers::find_ksymtab_gpl_section. 11247 (find_relocation_section): Move out function. 11248 (get_binary_load_address): Move out function. 11249 (find_ksymtab_reloc_section): use elf_helpers::find_relocation_section 11250 (find_ksymtab_gpl_reloc_section): use 11251 elf_helpers::find_relocation_section 11252 * src/elf-helpers.cc (find_symbol_table_section): change 11253 interface to match other find_*_section functions. 11254 (find_symbol_table_section_index): Adjust for the new interface of 11255 find_symbol_table_section. 11256 (find_opd_section): New function. 11257 (find_ksymtab_section): New function. 11258 (find_ksymtab_gpl_section): New function. 11259 (find_relocation_section): New function. 11260 (get_binary_load_address): New function. 11261 * src/elf-helpers.h (find_symbol_table_section): Change declaration. 11262 (find_opd_section): New function declaration. 11263 (find_ksymtab_section): New function declaration. 11264 (find_ksymtab_gpl_section): New function declaration. 11265 (find_relocation_section): New function declaration. 11266 (get_binary_load_address): New function declaration. 11267 112682020-04-21 Matthias Maennich <maennich@google.com> 11269 11270 abg-elf-helpers: consolidate the is_linux_kernel* helpers 11271 * src/abg-dwarf-reader.cc 11272 (read_context::function_symbol_is_exported): use is_linux_kernel 11273 from elf_helpers. 11274 (read_context::variable_is_exported): Likewise. 11275 (read_context::get_symtab_format): Likewise. 11276 (read_context::load_symbol_maps): Likewise. 11277 (read_debug_info_into_corpus): Likewise. 11278 (read_context::is_linux_kernel_binary): Drop function. 11279 (read_context::is_linux_kernel_module): Drop function. 11280 * src/abg-elf-helpers.cc (binary_is_linux_kernel): rename to 11281 is_linux_kernel 11282 (binary_is_linux_kernel_module): rename to is_linux_kernel_module 11283 (find_ksymtab_strings_section): Adjust to function renames. 11284 * src/abg-elf-helpers.h (binary_is_linux_kernel): rename to 11285 is_linux_kernel 11286 (binary_is_linux_kernel_module): rename to is_linux_kernel_module 11287 Reviewed-by: Giuliano Procida <gprocida@google.com> 11288 112892020-04-21 Matthias Maennich <maennich@google.com> 11290 11291 abg-elf-helpers: move some kernel helpers from abg-dwarf-reader 11292 * abg-dwarf-reader.cc (binary_is_linux_kernel): Move function out. 11293 (binary_is_linux_kernel_module): Likewise. 11294 (find_ksymtab_strings_section): Likewise. 11295 * abg-elf-helpers.cc (binary_is_linux_kernel): Move function in. 11296 (binary_is_linux_kernel_module): Likewise. 11297 (find_ksymtab_strings_section): Likewise. 11298 * abg-elf-helpers.h (binary_is_linux_kernel): Add declaration. 11299 (binary_is_linux_kernel_module): Likewise. 11300 (find_ksymtab_strings_section): Likewise. 11301 Reviewed-by: Giuliano Procida <gprocida@google.com> 11302 113032020-04-21 Matthias Maennich <maennich@google.com> 11304 11305 abg-elf-helpers: move some versioning helpers from abg-dwarf-reader 11306 * abg-dwarf-reader.cc (get_symbol_versionning_sections): Move function out. 11307 (get_version_definition_for_versym): Likewise. 11308 (get_version_needed_for_versym): Likewise. 11309 (get_version_for_symbol): Likewise. 11310 * abg-elf-helpers.cc (get_symbol_versionning_sections): Move function in. 11311 (get_version_definition_for_versym): Likewise. 11312 (get_version_needed_for_versym): Likewise. 11313 (get_version_for_symbol): Likewise. 11314 * abg-elf-helpers.h (get_symbol_versionning_sections): Add declaration. 11315 (get_version_definition_for_versym): Likewise. 11316 (get_version_needed_for_versym): Likewise. 11317 (get_version_for_symbol): Likewise. 11318 Reviewed-by: Giuliano Procida <gprocida@google.com> 11319 113202020-04-21 Matthias Maennich <maennich@google.com> 11321 11322 abg-elf-helpers: move some elf helpers from abg-dwarf-reader 11323 * abg-dwarf-reader.cc (stt_to_elf_symbol_type): Move function out. 11324 (stb_to_elf_symbol_binding): Likewise. 11325 (stv_to_elf_symbol_visibility): Likewise. 11326 (e_machine_to_string): Likewise. 11327 (find_section): Likewise. 11328 (find_symbol_table_section): Likewise. 11329 (find_symbol_table_section_index): Likewise. 11330 (enum hash_table_kind): Likewise. 11331 (find_hash_table_section_index): Likewise. 11332 (get_symbol_versionning_sections): Likewise. 11333 (find_text_section): Likewise. 11334 (find_bss_section): Likewise. 11335 (find_rodata_section): Likewise. 11336 (find_data_section): Likewise. 11337 (find_data1_section): Likewise. 11338 * abg-elf-helpers.cc (stt_to_elf_symbol_type): Move function in. 11339 (stb_to_elf_symbol_binding): Likewise. 11340 (stv_to_elf_symbol_visibility): Likewise. 11341 (e_machine_to_string): Likewise. 11342 (find_section): Likewise. 11343 (find_symbol_table_section): Likewise. 11344 (find_symbol_table_section_index): Likewise. 11345 (enum hash_table_kind): Likewise. 11346 (find_hash_table_section_index): Likewise. 11347 (get_symbol_versionning_sections): Likewise. 11348 (find_text_section): Likewise. 11349 (find_bss_section): Likewise. 11350 (find_rodata_section): Likewise. 11351 (find_data_section): Likewise. 11352 (find_data1_section): Likewise. 11353 * abg-elf-helpers.h (stt_to_elf_symbol_type): Add declaration. 11354 (stb_to_elf_symbol_binding): Likewise. 11355 (stv_to_elf_symbol_visibility): Likewise. 11356 (e_machine_to_string): Likewise. 11357 (find_section): Likewise. 11358 (find_symbol_table_section): Likewise. 11359 (find_symbol_table_section_index): Likewise. 11360 (enum hash_table_kind): Likewise. 11361 (find_hash_table_section_index): Likewise. 11362 (get_symbol_versionning_sections): Likewise. 11363 (find_text_section): Likewise. 11364 (find_bss_section): Likewise. 11365 (find_rodata_section): Likewise. 11366 (find_data_section): Likewise. 11367 (find_data1_section): Likewise. 11368 Reviewed-by: Giuliano Procida <gprocida@google.com> 11369 113702020-04-21 Matthias Maennich <maennich@google.com> 11371 11372 abg-dwarf-reader split: create abg-elf-helpers.{h,cc} and test case 11373 * src/Makefile.am: Add new source files abg-elf-helpers.{h,cc}. 11374 * src/abg-elf-helpers.cc: New source file. 11375 * src/abg-elf-helpers.h: New header file. 11376 * tests/.gitignore: Exclude runtestelfhelpers from being committed. 11377 * tests/Makefile.am: Add new test case runtestelfhelpers. 11378 * tests/test-elf-helpers.cc: New test source file. 11379 Reviewed-by: Giuliano Procida <gprocida@google.com> 11380 113812020-04-20 Matthias Maennich <maennich@google.com> 11382 11383 tests: parallelize diff-suppr test 11384 * tests/test-diff-suppr.cc(main): parallelize test execution. 11385 (test_task) new abigail::workers::task implementation to run 11386 test cases in this test as separate worker tasks. 11387 113882020-04-20 Matthias Maennich <maennich@google.com> 11389 11390 abg-dwarf-reader: simplify symbol map update 11391 * src/abg-dwarf-reader.cc 11392 (read_context::load_symbol_maps_from_symtab_section): simplify 11393 symbol map update for fun_syms_, undefined_fun_syms_, var_syms_, 11394 undefined_var_syms_. 11395 113962020-04-20 Matthias Maennich <maennich@google.com> 11397 11398 make: add distcheck-fast target 11399 * Makefile.am: add distcheck-fast make target 11400 114012020-04-14 Giuliano Procida <gprocida@google.com> 11402 11403 Fix variable suppression name_not_regex. 11404 * src/abg-suppression-priv.h: In get_symbol_name_not_regex 11405 method of variable_suppression::priv, fix typo causing 11406 miscompilation of regex. 11407 114082020-04-13 Mark Wielaard <mark@klomp.org> 11409 11410 Add --drop-undefined-syms to abidw. 11411 * include/abg-dwarf-reader.h (set_drop_undefined_syms): 11412 New declaration. 11413 * src/abg-dwarf-reader.cc (class read_context): Add private 11414 bool drop_undefined_syms_. 11415 (drop_undefined_syms): New getter and setter method. 11416 (set_drop_undefined_syms): New function. 11417 (function_is_suppressed): Check drop_undefined_syms on 11418 read_context. 11419 (variable_is_suppressed): Likewise. 11420 * src/abg-reader.cc (read_context): Add private bool 11421 m_drop_undefined_syms. 11422 (drop_undefined_syms): New getter and setter method. 11423 * tools/abidw.cc (struct options): Add drop_undefined_syms. 11424 (display_usage): Print --drop-undefined-syms. 11425 (parse_command_line): Parse --drop-undefined-syms. 11426 (main): Call set_drop_undefined_syms. 11427 114282020-04-12 Mark Wielaard <mark@klomp.org> 11429 11430 Add --drop-private-types to abidw. 11431 * tools/abidw.cc (options): Add drop_private_types bool. 11432 (display_usage): Add --drop-private-types. 11433 (parse_command_line): Parse --drop-private-types, set opts. 11434 (set_suppressions): Call set_drops_artifact_from_ir when 11435 drop_private_types set. 11436 * doc/manuals/abidw.rst: Document --drop-private-types. 11437 114382020-04-12 Mark Wielaard <mark@klomp.org> 11439 11440 Add --header-file option to add individual public header files. 11441 * include/abg-tools-utils.h (gen_suppr_spec_from_headers): Add 11442 hdr_files string vector argument. 11443 * src/abg-tools-utils.cc (handle_file_entry): New function that 11444 adds one specific file to the type_suppression. Implementation 11445 lifted from... 11446 (handle_fts_entry): ...here. Call handle_file_entry for each file. 11447 (gen_suppr_spec_from_headers): Also takes a header_files string 11448 vector as argument. Call handle_file_entry for each file entry. 11449 * tools/abidiff.cc (options): Add header_files1 and header_files2 11450 string vectors. 11451 (display_usage): Print --header-file1 and --header-file2 usage. 11452 (parse_command_line): Handle --header-file1, --hf1 and 11453 --header-file2, --hf2. 11454 (set_diff_context_from_opts): Call gen_suppr_spec_from_headers 11455 with header_files1 and header_files2. 11456 (set_suppressions): Likewise. 11457 * tools/abidw.cc (options): Add header_files string vector. 11458 (display_usage): Print --header-file usage. 11459 (parse_command_line): Handle --header-file1, --hf1. 11460 (maybe_check_header_files): New function. 11461 (set_suppressions): Call gen_suppr_spec_from_headers with 11462 header_files. 11463 (main): Call maybe_check_header_files. 11464 * tools/abilint.cc (options): Add header_files string vector. 11465 (display_usage): Print --header-file usage. 11466 (parse_command_line): Handle --header-file1, --hf1. 11467 (set_suppressions): Call gen_suppr_spec_from_headers with 11468 header_files. 11469 * doc/manuals/abidiff.rst: Document --header-file1, --hf1 and 11470 --header-file2, --hf2. Add new options to documentation of 11471 --drop-private-types. 11472 * doc/manuals/abidw.rst: Document --header-file, --hf. 11473 * doc/manuals/abilint.rst: Likewise. 11474 114752020-04-08 Giuliano Procida <gprocida@google.com> 11476 11477 abidiff: Document and refresh tests. 11478 * tests/data/test-abidiff-exit/test-leaf-cxx-members-v1.cc: 11479 Comment test. Reorder members of ops to get better coverage. 11480 * tests/data/test-abidiff-exit/test-leaf-fun-type-v1.cc: 11481 Comment test. 11482 * tests/data/test-abidiff-exit/test-leaf-more-v1.cc: Ditto. 11483 * tests/data/test-abidiff-exit/test-leaf-peeling-v1.cc: 11484 Comment test. Update comment on ops2. 11485 * tests/data/test-abidiff-exit/test-leaf-redundant-v1.c: 11486 Comment test. 11487 * tests/data/test-abidiff-exit/test-leaf-stats-v1.cc: Ditto. 11488 * tests/data/test-abidiff-exit/test-leaf-cxx-members-report.txt: 11489 Update locations. Update report to reflect deletion, 11490 insertion and changed members (was previously changed only).: 11491 * tests/data/test-abidiff-exit/test-leaf-peeling-report.txt: 11492 Update locations. 11493 * tests/data/test-abidiff-exit/test-leaf-redundant-report.txt: 11494 Ditto.: 11495 * tests/data/test-abidiff-exit/test-leaf-cxx-members-v0.cc: 11496 Added one line comment referring to -v1 source file. 11497 * tests/data/test-abidiff-exit/test-leaf-fun-type-v0.cc: Ditto. 11498 * tests/data/test-abidiff-exit/test-leaf-more-v0.cc: Ditto. 11499 * tests/data/test-abidiff-exit/test-leaf-peeling-v0.cc: Ditto. 11500 * tests/data/test-abidiff-exit/test-leaf-redundant-v0.c: Ditto. 11501 * tests/data/test-abidiff-exit/test-leaf-stats-v0.cc: Ditto. 11502 * tests/data/test-abidiff-exit/test-leaf-cxx-members-v0.o: Recompiled. 11503 * tests/data/test-abidiff-exit/test-leaf-cxx-members-v1.o: Ditto. 11504 * tests/data/test-abidiff-exit/test-leaf-fun-type-v0.o: Ditto. 11505 * tests/data/test-abidiff-exit/test-leaf-fun-type-v1.o: Ditto. 11506 * tests/data/test-abidiff-exit/test-leaf-more-v0.o: Ditto. 11507 * tests/data/test-abidiff-exit/test-leaf-more-v1.o: Ditto. 11508 * tests/data/test-abidiff-exit/test-leaf-peeling-v0.o: Ditto. 11509 * tests/data/test-abidiff-exit/test-leaf-peeling-v1.o: Ditto. 11510 * tests/data/test-abidiff-exit/test-leaf-redundant-v0.o: Ditto. 11511 * tests/data/test-abidiff-exit/test-leaf-redundant-v1.o: Ditto. 11512 * tests/data/test-abidiff-exit/test-leaf-stats-v0.o: Ditto. 11513 * tests/data/test-abidiff-exit/test-leaf-stats-v1.o: Ditto. 11514 115152020-04-14 Giuliano Procida <gprocida@google.com> 11516 11517 abg-reporter-priv.cc: Improve readability of represent helper function. 11518 * src/abg-reporter-priv.cc (represent): In the var_diff_sptr 11519 overload, rename pretty_representation to o_pretty_representation, 11520 introduce n_pretty_representation where needed and replace the 11521 duplicate tr1 and tr2 with these; rename all other variables foo1 11522 and foo2 to o_foo and n_foo respectively, using _type instead of 11523 _t; introduce o_anon and n_anon and use them to make the local 11524 variable is_strict_anonymous_data_member_change const, make 11525 ABG_ASSERT in anonymous data member handling more obvious in the 11526 case where anonymity has changed and allow simplification of 11527 formatting in this case; move declarations of const local 11528 variables above those of the non-const, state-tracking, variables. 11529 115302020-04-07 Giuliano Procida <gprocida@google.com> 11531 11532 abg-reporter-priv.cc: Fix anonymous member size change reports. 11533 * src/abg-reporter-priv.cc (represent): In the var_diff_sptr 11534 overload, factor out some expressions as local variables, rely 11535 on diff_to_be_reported to decide whether to emit a change, 11536 fold together local/non-local change reporting using 11537 local_changes to preserve current name formatting differences, 11538 keep track explicitly of whether size information has been 11539 emitted and ensure it happens if needed, make offset and size 11540 change reporting for anonymous data members more meaningful. 11541 * tests/test-abidiff-exit.cc: Run new test cases. 11542 * tests/data/Makefile.am: Add new test files. 11543 * tests/data/test-abidiff-exit/test-member-size-v0.cc: New 11544 test. 11545 * tests/data/test-abidiff-exit/test-member-size-v0.o: Ditto. 11546 * tests/data/test-abidiff-exit/test-member-size-v1.cc: Ditto. 11547 * tests/data/test-abidiff-exit/test-member-size-v1.o: Ditto. 11548 * tests/data/test-abidiff-exit/test-member-size-report0.txt: 11549 New test, default mode. 11550 * tests/data/test-abidiff-exit/test-member-size-report1.txt: 11551 New test, --leaf-changes-only mode. 11552 * tests/data/test-abidiff-exit/test-leaf-cxx-members-report.txt: 11553 Eliminate duplicate reporting of member sizes. 11554 * tests/data/test-abidiff-exit/test-leaf-more-report.txt: Ditto. 11555 * tests/data/test-abidiff-exit/test-leaf-peeling-report.txt: 11556 Ditto. 11557 * tests/data/test-abidiff-exit/test-no-stray-comma-report.txt: 11558 Ditto. 11559 * tests/data/test-diff-dwarf/test45-anon-dm-change-report-0.txt: 11560 Add size report for anonymous data member. 11561 * tests/data/test-diff-filter/test44-anonymous-data-member-report-0.txt: 11562 Ditto. 11563 * tests/data/test-diff-pkg/libsigc++-2.0-0c2a_2.4.0-1_amd64--libsigc++-2.0-0v5_2.4.1-1ubuntu2_amd64-report-0.txt: 11564 Add missing size change report. 11565 * tests/data/test-diff-suppr/test36-leaf-report-0.txt: Remove 11566 size change report for previously reported type. 11567 * tests/data/test-diff-suppr/test46-PR25128-report-1.txt: 11568 Eliminate duplicate reporting of member size change. 11569 * tests/data/test-diff-suppr/test46-PR25128-report-2.txt: 11570 Ditto. 11571 115722020-04-07 Giuliano Procida <gprocida@google.com> 11573 11574 abidiff: More compact references to prior diffs. 11575 * src/abg-reporter-priv.cc (represent): In the var_diff_sptr 11576 overload, use consistent punctuation and keep to a single line 11577 of output when referring back to an existing type diff report. 11578 Remove unnecessary braces around single line conditional 11579 blocks. 11580 * src/abg-reporter-priv.h: In the macro 11581 RETURN_IF_BEING_REPORTED_OR_WAS_REPORTED_EARLIER, use 11582 consistent punctuation when referring back to an existing type 11583 diff report. 11584 * tests/data/test-abidiff/test-PR18791-report0.txt: Adjust 11585 formatting of back references to existing type diff reports. 11586 * tests/data/test-diff-dwarf/PR25058-liblttng-ctl-report-1.txt: 11587 Ditto. 11588 * tests/data/test-diff-filter/test16-report-2.txt: Ditto. 11589 * tests/data/test-diff-filter/test17-1-report.txt: Ditto. 11590 * tests/data/test-diff-filter/test25-cyclic-type-report-1.txt: 11591 Ditto. 11592 * tests/data/test-diff-pkg/spice-server-0.12.4-19.el7.x86_64-0.12.8-1.el7.x86_64-report-2.txt: 11593 Ditto. 11594 * tests/data/test-diff-suppr/test36-leaf-report-0.txt: Ditto. 11595 115962020-04-06 Giuliano Procida <gprocida@google.com> 11597 11598 test-abidiff-exit.cc: Drop redundant --redundant. 11599 * tests/test-abidiff-exit.cc: Drop obsolete --redundant flag 11600 and comment as --redundant is now implied by 11601 --leaf-changes-only. 11602 116032020-04-06 Giuliano Procida <gprocida@google.com> 11604 11605 Rename test-abidiff-exit/test-leaf[0-3] files. 11606 * tests/data/Makefile.am: Rename test files. 11607 * tests/test-abidiff-exit.cc: Rename test files. 11608 * tests/data/test-abidiff-exit/test-leaf-fun-type-report.txt: 11609 Renamed from test-leaf2-report.txt. 11610 * tests/data/test-abidiff-exit/test-leaf-fun-type-v0.cc: 11611 Renamed from test-leaf2-v0.cc. 11612 * tests/data/test-abidiff-exit/test-leaf-fun-type-v0.o: 11613 Renamed from test-leaf2-v0.o. 11614 * tests/data/test-abidiff-exit/test-leaf-fun-type-v1.cc: 11615 Renamed from test-leaf2-v1.cc. 11616 * tests/data/test-abidiff-exit/test-leaf-fun-type-v1.o: 11617 Renamed from test-leaf2-v1.o. 11618 * tests/data/test-abidiff-exit/test-leaf-more-report.txt: 11619 Renamed from test-leaf1-report.txt. 11620 * tests/data/test-abidiff-exit/test-leaf-more-v0.cc: Renamed 11621 from test-leaf1-v0.cc. 11622 * tests/data/test-abidiff-exit/test-leaf-more-v0.o: Renamed 11623 from test-leaf1-v0.o. 11624 * tests/data/test-abidiff-exit/test-leaf-more-v1.cc: Renamed 11625 from test-leaf1-v1.cc. 11626 * tests/data/test-abidiff-exit/test-leaf-more-v1.o: Renamed 11627 from test-leaf1-v1.o. 11628 * tests/data/test-abidiff-exit/test-leaf-redundant-report.txt: 11629 Renamed from test-leaf3-report.txt. 11630 * tests/data/test-abidiff-exit/test-leaf-redundant-v0.c: 11631 Renamed from test-leaf3-v0.c. 11632 * tests/data/test-abidiff-exit/test-leaf-redundant-v0.o: 11633 Renamed from test-leaf3-v0.o. 11634 * tests/data/test-abidiff-exit/test-leaf-redundant-v1.c: 11635 Renamed from test-leaf3-v1.c. 11636 * tests/data/test-abidiff-exit/test-leaf-redundant-v1.o: 11637 Renamed from test-leaf3-v1.o. 11638 * tests/data/test-abidiff-exit/test-leaf-stats-report.txt: 11639 Renamed from test-leaf0-report.txt. 11640 * tests/data/test-abidiff-exit/test-leaf-stats-v0.cc: Renamed 11641 from test-leaf0-v0.cc. 11642 * tests/data/test-abidiff-exit/test-leaf-stats-v0.o: Renamed 11643 from test-leaf0-v0.o. 11644 * tests/data/test-abidiff-exit/test-leaf-stats-v1.cc: Renamed 11645 from test-leaf0-v1.cc. 11646 * tests/data/test-abidiff-exit/test-leaf-stats-v1.o: Renamed 11647 from test-leaf0-v1.o. 11648 116492020-04-07 Dodji Seketeli <dodji@redhat.com> 11650 11651 Update the mailing list registration form on the web page 11652 * doc/website/mainpage.txt: Use the form at 11653 https://sourceware.org/mailman/listinfo/libabigail to register to 11654 the mailing list. 11655 116562020-03-30 Giuliano Procida <gprocida@google.com> 11657 11658 abg-dwarf-reader.cc: Avoid division by zero. 11659 * src/abg-dwarf-reader.cc (perform_late_type_canonicalizing): 11660 If total is zero, don't try to output percentages using it as 11661 a divisor. 11662 116632020-03-29 Giuliano Procida <gprocida@google.com> 11664 11665 abidiffpkg: Remove stray test report file. 11666 * tests/data/Makefile.am: Removed 11667 tests/data/test-diff-pkg/dirpkg-2-report-1.txt. 11668 * tests/data/test-diff-pkg/dirpkg-2-report-1.txt: Removed. 11669 116702020-03-29 Giuliano Procida <gprocida@google.com> 11671 11672 test-diff-suppr.cc: Add missing tests. 11673 * tests/test-diff-suppr.cc: Add stanzas for 11674 test6-fn-suppr-report-4, test16-suppr-removed-fn-report-5 and 11675 test22-suppr-removed-var-sym-report-5 and 11676 test23-alias-filter-report-4 tests. 11677 * tests/data/test-diff-suppr/test6-fn-suppr-report-4.txt: 11678 Number parameters from 1 and update expected output to current 11679 formatting. 11680 * tests/data/test-diff-suppr/test16-suppr-removed-fn-report-5.txt: 11681 Update expected output to current formatting. 11682 * tests/data/test-diff-suppr/test22-suppr-removed-var-sym-report-5.txt: 11683 Update expected output to current formatting. 11684 116852020-03-29 Giuliano Procida <gprocida@google.com> 11686 11687 abidiff: Remove blank line after typedef changes. 11688 * include/abg-reporter.h 11689 (default_reporter::report_local_typedef_changes): Change 11690 return type to void. 11691 * src/abg-default-reporter.cc: 11692 (default_reporter::report_local_typedef_changes): Change 11693 return type to void, remove emit_nl state variable and logic. 11694 * tests/data/test-abidiff/test-PR18791-report0.txt: Remove 11695 blank lines. 11696 * tests/data/test-diff-dwarf/test42-PR21296-clanggcc-report0.txt: 11697 Ditto. 11698 * tests/data/test-diff-suppr/test39-opaque-type-report-0.txt: 11699 Ditto. 11700 117012020-03-26 Giuliano Procida <gprocida@google.com> 11702 11703 Fix size calculations for multidimensional arrays. 11704 * include/abg-ir.h (array_type_def::append_subrange): Remove 11705 this function. 11706 * src/abg-ir.cc (array_type_def::set_element_type): Add a note 11707 about safe usage. 11708 (array_type_def::append_subrange): Inline this function into 11709 its only caller append_subranges and remove it. 11710 (array_type_def::append_subranges): Do correct multiplicative 11711 calculation of multidimensional array sizes. 11712 * src/abg-reader.cc (build_array_type_def): When checking 11713 calculated against read array sizes, warn once if value 11714 matches old behaviour rather than raising an assertion. 11715 Otherwise, before raising an assertion, emit an informative 11716 error message. 11717 * tests/data/test-annotate/test14-pr18893.so.abi: Correct 11718 array sizes. 11719 * tests/data/test-annotate/test17-pr19027.so.abi: Ditto. 11720 * tests/data/test-annotate/test19-pr19023-libtcmalloc_and_profiler.so.abi: 11721 Ditto. 11722 * tests/data/test-annotate/test7.so.abi: Ditto. 11723 * tests/data/test-diff-dwarf/test10-report.txt: Ditto. 11724 * tests/data/test-diff-dwarf/test11-report.txt: Ditto. 11725 * tests/data/test-read-write/test25.xml: Ditto. 11726 Reviewed-by: Matthias Maennich <maennich@google.com> 11727 117282020-03-27 Giuliano Procida <gprocida@google.com> 11729 11730 abidiff: Remove new lines after parameter diffs. 11731 * src/abg-default-reporter.cc: (report_local_function_type_changes): 11732 Remove unnecessary blank lines after lists of parameter changes. 11733 * tests/data/test-*/test*report*.txt: Remove blank lines after 11734 parameter change lists in 12 files. 11735 Reviewed-by: Matthias Maennich <maennich@google.com> 11736 117372020-03-27 Giuliano Procida <gprocida@google.com> 11738 11739 abidiff: Eliminate leaf mode double blank lines. 11740 * src/abg-leaf-reporter.cc: (report_diffs) Emit 1 instead of 2 11741 new lines between sections. 11742 * tests/data/test-abidiff-exit/test-leaf-peeling-report.txt: 11743 Replace double blank lines with single ones. 11744 * tests/data/test-diff-filter/libtest45-basic-type-change-report-1.txt: 11745 Ditto. 11746 * tests/data/test-diff-suppr/test36-leaf-report-0.txt: Ditto. 11747 * tests/data/test-*/test*report*.txt:: Ditto. 11748 Reviewed-by: Matthias Maennich <maennich@google.com> 11749 117502020-03-27 Giuliano Procida <gprocida@google.com> 11751 11752 abidiff: Fix variable declaration formatting. 11753 * src/abg-reporter-priv.cc: (represent) In the var_diff_sptr 11754 overload, make sure the state variables begin_with_and and 11755 emitted are updated consistently; add a TODO for one case 11756 which may result in the end of the function being reached 11757 without having emitted a report; add missing new lines 11758 following reporting of anonymous member changes; only emit a 11759 final new line if begin_with_and hasn't tracked one already; 11760 document state variables. 11761 * tests/data/test-diff-dwarf/test45-anon-dm-change-report-0.txt: 11762 Add missing blank line after anonymous member change text. 11763 * tests/data/test-diff-filter/test44-anonymous-data-member-report-1.txt: 11764 Add missing "and " continuation. 11765 Reviewed-by: Matthias Maennich <maennich@google.com> 11766 117672020-03-27 Giuliano Procida <gprocida@google.com> 11768 11769 abidiff: Remove member function diff blank lines. 11770 * src/abg-default-reporter.cc (report): In the 11771 class_or_union_diff overload, don't emit a new line after each 11772 list of member function, member type, template member 11773 function and template member class changes. 11774 * src/abg-leaf-reporter.cc (report): : In the 11775 class_or_union_diff overload, don't emit a new line after each 11776 list of member function changes. 11777 * tests/data/Makefile.am: Add new test case files. 11778 * tests/data/test-abidiff-exit/test-leaf-cxx-members-v0.cc: 11779 New test case for --leaf-changes-only member function diffs. 11780 * tests/data/test-abidiff-exit/test-leaf-cxx-members-v0.o: 11781 Ditto. 11782 * tests/data/test-abidiff-exit/test-leaf-cxx-members-v1.cc: 11783 Ditto. Also add a TODO regarding a potentially bad diff. 11784 * tests/data/test-abidiff-exit/test-leaf-cxx-members-v1.o: 11785 Ditto. 11786 * tests/data/test-abidiff/test-struct1-report.txt: Remove 11787 blank lines after member function changes lists. 11788 * tests/data/test-diff-dwarf/test41-PR20476-hidden-report-0.txt: 11789 Ditto. 11790 * tests/data/test-diff-pkg/tbb-4.1-9.20130314.fc22.x86_64--tbb-4.3-3.20141204.fc23.x86_64-report-0.txt: 11791 Ditto. 11792 * tests/test-abidiff-exit.cc: Add new test case. 11793 Reviewed-by: Matthias Maennich <maennich@google.com> 11794 117952020-03-26 Giuliano Procida <gprocida@google.com> 11796 11797 abidiff: Fix enum impacted interfaces blank line. 11798 * src/abg-default-reporter.cc (report): In the enum_diff 11799 overload, don't emit a blank line before a possible "impacted 11800 interfaces" stanza. In the class_or_union overload, change a 11801 stray conditional to use the emitted state variable for 11802 consistency. 11803 * tests/data/test*report*.txt: Remove blank lines after enum 11804 diffs in 17 files. 11805 Reviewed-by: Matthias Maennich <maennich@google.com> 11806 118072020-03-26 Giuliano Procida <gprocida@google.com> 11808 11809 abidiff: Remove blank line after base class diffs. 11810 * src/abg-default-reporter.cc (report): In the class_diff 11811 overload, eliminate the extra blank line after base class 11812 changes and remove unneeded new line logic. 11813 * tests/data/test*report*.txt: Remove blank lines after base 11814 class diffs in 9 files. 11815 Reviewed-by: Matthias Maennich <maennich@google.com> 11816 118172020-03-26 Giuliano Procida <gprocida@google.com> 11818 11819 abidiff: Clean up new lines between sections. 11820 * src/abg-default-reporter.cc (report): In the corpus_diff 11821 override, add back the extra blank line per changed function 11822 but remove the extra one after all changed changed functions 11823 and variables; comment these. 11824 * src/abg-leaf-reporter.cc (report): In the corpus_diff 11825 override, add back the extra blank line per changed function 11826 but remove the extra one after all changed changed functions 11827 and variables; comment these. 11828 * src/abg-reporter-priv.cc 11829 (maybe_report_unreachable_type_changes): Remove extra blank 11830 line emitted after all unreachable type changes; comment 11831 this. 11832 * tests/data/test*report*.txt: Remove/add blank lines. 11833 Reviewed-by: Matthias Maennich <maennich@google.com> 11834 118352020-03-26 Giuliano Procida <gprocida@google.com> 11836 11837 abg-ir.cc: Add types_have_similar_structure tests. 11838 * src/abg-ir.cc (types_have_similar_structure): Update TODO 11839 regarding structure of arrays - multidimensional arrays are 11840 the issue. 11841 * tests/data/test-abidiff-exit/test-leaf-peeling-report.txt: 11842 Updated following changes. 11843 * tests/data/test-abidiff-exit/test-leaf-peeling-v0.cc: Add 11844 more cases (see below). 11845 * tests/data/test-abidiff-exit/test-leaf-peeling-v0.o: 11846 Updated. 11847 * tests/data/test-abidiff-exit/test-leaf-peeling-v1.cc: Add 11848 comment about a potential change to local-change semantics; 11849 add test cases to demonstrate that * and & and * and *** are 11850 structurally different; add a TODO regarding multidimensional 11851 arrays where changes are sometimes missed in leaf mode. 11852 * tests/data/test-abidiff-exit/test-leaf-peeling-v1.o 11853 118542020-03-28 Giuliano Procida <gprocida@google.com> 11855 11856 abg-reader.cc: Fix code indentation and tabify. 11857 * src/abg-reader.cc (build_elf_symbol_db): Fix code 11858 indentation. 11859 (build_array_type_def): Tabify. 11860 118612020-03-26 Dodji Seketeli <dodji@redhat.com> 11862 11863 Update tests/data/test-abidiff-exit/test-leaf-peeling-report.txt 11864 * tests/data/test-abidiff-exit/test-leaf-peeling-report.txt: 11865 Update output. 11866 118672020-03-25 Giuliano Procida <gprocida@google.com> 11868 11869 abidiff: Remove some more unnecessary blank lines. 11870 * src/abg-default-reporter.cc (report) In the 11871 class_or_union_diff overload, don't emit a new line after 11872 calls to represent. In the union_diff overload, emit a new 11873 line after a from/to change; fix indentation. In the 11874 corpus_diff overload, don't emit an extra new line after 11875 reporting a diff. 11876 * src/abg-leaf-reporter.cc (report_diffs) Don't emit a new 11877 line after reporting a canonical diff. In the 11878 class_or_union_diff overload, don't emit a new line after 11879 calls to represent. In the corpus_diff overload, don't emit an 11880 extra new line after reporting a diff. 11881 * src/abg-reporter-priv.cc (represent): Emit a final new line, 11882 but only if needed. 11883 (maybe_report_interfaces_impacted_by_diff): Emit a new line 11884 after the last impacted interface. 11885 * tests/data/test-*/*report*.txt: Remove blank lines (and add 11886 a missing one) to 77 test cases. 11887 118882020-03-25 Giuliano Procida <gprocida@google.com> 11889 11890 abg-ir.cc: Improve types_have_similar_structure. 11891 * include/abg-fwd.h (types_have_similar_structure): In both 11892 overloads, add an indirect_type argument, defaulting to 11893 false. 11894 * src/abg-ir.cc (reference_type_def constructor): Tabify. 11895 (types_have_similar_structure): In both overloads, add an 11896 indirect_type argument and update documentation text. In the 11897 type_base_sptr overload, pass indirect_type in the tail 11898 call. In the type_base* overload, replace was_indirect_type 11899 with indirect_type; peel CV qualifiers and typedefs without 11900 testing as the peel function does this; replace the 11901 indiscriminate peeling of qualifier/pointer/reference/array 11902 type components with code that checks the same 11903 pointer/reference/array type component is used on each side 11904 and makes recursive calls with indirect_type set to true; pass 11905 the indirect_type argument recursively when comparing other 11906 subtypes; move the typeid check earlier, document its purpose 11907 and remove unneccessary checks after later dynamic casts; 11908 remove an always-true conditional; add a TODO for comparing 11909 array types more accurately. 11910 * tests/data/Makefile.am: Add new test case files. 11911 * tests/data/test-abidiff-exit/test-leaf-peeling-v0.cc: New 11912 test case. 11913 * tests/data/test-abidiff-exit/test-leaf-peeling-v1.cc: Ditto. 11914 * tests/data/test-abidiff-exit/test-leaf-peeling-report.txt: 11915 Ditto. 11916 * tests/test-abidiff-exit.cc: Run new test case. 11917 119182020-03-19 Giuliano Procida <gprocida@google.com> 11919 11920 abg-ir.cc: Remove always-true check. 11921 * src/abg-ir.cc (types_have_similar_structure): Remove 11922 identical nested conditional. 11923 (reference_type_def::reference_type_def): Tabify. 11924 Reviewed-by: Matthias Maennich <maennich@google.com> 11925 119262020-03-19 Giuliano Procida <gprocida@google.com> 11927 11928 abg-ir.cc: Fix peel_typedef_type(const type_base*). 11929 * src/abg-ir.cc (peel_typedef_type): In the const type_base* 11930 overload, return the original argument rather than null if the 11931 type isn't actually a typedef. 11932 119332020-03-18 Giuliano Procida <gprocida@google.com> 11934 11935 Eliminate redundancy in representation of local change kinds. 11936 * include/abg-ir.h (change_kind): Remove redundant 11937 LOCAL_CHANGE_KIND member, renumber members and update 11938 comments. 11939 * src/abg-comparison.cc (distinct_diff::has_local_changes): 11940 Remove redundant LOCAL_CHANGE_KIND. 11941 (var_diff::has_local_changes 11942 * src/abg-ir.cc (equals): In the type_base, 11943 qualified_type_def, pointer_type_def, reference_type_def, 11944 array_type_def::subrange_type, array_type_def, enum_type_decl, 11945 typedef_decl, var_decl, function_type, function_decl, 11946 function_decl::parameter, class_or_union, 11947 class_decl::base_spec, class_decl, decl_base and scope_decl 11948 overloads, remove redundant LOCAL_CHANGE_KIND. 11949 (enum_has_non_name_change): Remove redundant 11950 LOCAL_CHANGE_KIND. 11951 119522020-03-20 Dodji Seketeli <dodji@redhat.com> 11953 11954 dwarf-reader: Fix bloom filter access in GNU_HASH section 11955 * src/abg-dwarf-reader.cc (bloom_word_at): Properly read an 11956 element from the bloom bitmasks array of 32-bits values as a 11957 64-bits value in a portable way. Always return a 64 bits value. 11958 (lookup_symbol_from_gnu_hash_tab): Use a 64-bits value to store 11959 the bloom bitmask. 11960 * tests/data/test-lookup-syms/test1-32bits.so: New test input, 11961 compiled as a 32bits binary to test for ELFCLASS32 binaries. 11962 * tests/data/test-lookup-syms/test1.c.compiling.txt: Documentation 11963 about how to compile the test1[-21bits].so files. 11964 * tests/data/Makefile.am: Add the new test material above to 11965 source distribution. 11966 * tests/test-lookup-syms.cc (in_out_specs): Add the 11967 test1-32bits.so test case to this test harness. 11968 119692020-03-18 Giuliano Procida <gprocida@google.com> 11970 11971 Ensure change_kind enum values are used consistently. 11972 * src/abg-comparison.cc (distinct_diff::has_local_changes): 11973 Remove unnecessary parentheses around return expression. 11974 * src/abg-default-reporter.cc (report): In the reference_diff 11975 overload, replace test against LOCAL_CHANGE_KIND with test 11976 against ALL_LOCAL_CHANGES_MASK. 11977 * src/abg-ir.cc (equals): In the array_type_def and class_decl 11978 overloads, add missing LOCAL_TYPE_CHANGE_KIND. In the 11979 class_decl overload, also add missing LOCAL_CHANGE_KIND. In 11980 the enum_type_decl and function_decl::parameter overloads 11981 clarify pairing of LOCAL*CHANGE_KIND bits. 11982 (enum_has_non_name_change): Clarify pairing of 11983 LOCAL*CHANGE_KIND bits. 11984 119852020-03-18 Giuliano Procida <gprocida@google.com> 11986 11987 dwarf-reader: Use all bits of Bloom filter words. 11988 * src/abg-dwarf-reader.cc (lookup_symbol_from_gnu_hash_tab): 11989 Don't narrow calculated Bloom word to 8 bits before using it 11990 to mask the fetched Bloom word. 11991 119922020-03-15 Matthias Maennich <maennich@google.com> 11993 11994 dwarf-reader: remove superfluous ABG_ASSERT 11995 * src/abg-dwarf-reader.cc 11996 (maybe_adjust_et_rel_sym_addr_to_abs_addr): improve NULL check, 11997 remove superfluous ABG_ASSERT 11998 * tests/data/Makefile.am: Add new test case to the distribution. 11999 * tests/test-read-dwarf.cc: Likewise. 12000 * tests/data/test-read-dwarf/test27-bogus-binary.elf: New test case. 12001 120022020-03-15 Matthias Maennich <maennich@google.com> 12003 12004 test-read-dwarf: ensure in_elf_path exists and add missing test files 12005 * tests/data/Makefile.am: add missing test case files 12006 * tests/test-read-dwarf.cc (test_task::perform): assert the 12007 input elf file exists. 12008 120092020-03-18 Matthias Maennich <maennich@google.com> 12010 12011 configure: add support for memory sanitizer (--enable-msan) 12012 * configure.ac: Add configure options for -fsanitize=memory 12013 120142020-03-18 Dodji Seketeli <dodji@redhat.com> 12015 12016 abipkgdiff: fix documentation of --impacted-interface 12017 * tools/abipkgdiff.cc (display_usage): Use the same help string 12018 for the --impacted-interface option as abidiff does. 12019 120202020-03-15 Matthias Maennich <maennich@google.com> 12021 12022 abidiff: fix documentation of --impacted-interfaces 12023 * tools/abidiff.cc(display_usage): Fix doc string for 12024 --impacted-interfaces. 12025 Reported-by: Saravana Kannan <saravanak@google.com> 12026 120272020-03-17 Giuliano Procida <gprocida@google.com> 12028 12029 Tag add/remove/change lines unconditionally with [A], [D], [C]. 12030 * src/abg-default-reporter.cc (report): In the corpus_diff 12031 override, remove calculations of number of changes (total) and 12032 comparisons against arbitrary threshold (large_num); emit [A], 12033 [D], [C] tags unconditionally. 12034 * src/abg-reporter-priv.cc 12035 (maybe_report_unreachable_type_changes): Remove comparisons of 12036 number of changes against arbitrary threshold (large_num); 12037 emit [A], [D], [C] tags unconditionally; fix quoting of 12038 deleted unreachable types; fix indentation of changed 12039 unreachable types. 12040 * tools/abipkgdiff.cc (compare_prepared_userspace_packages): 12041 Emit [D] and [A] tags for removed and added binaries. 12042 * tests/data/test-*/*report*.txt: In 109 report files, add 12043 tags [A], [D], [C] tags and correct some indentation and 12044 quoting. 12045 120462020-03-12 Matthias Maennich <maennich@google.com> 12047 12048 abg-workers: guard bring_workers_down to avoid dead lock 12049 * src/abg-workers.cc(do_bring_workers_down): keep 12050 task_todo_mutex locked while writing bring_workers_down, 12051 (wait_to_execute_a_task): rewrite the loop condition to ensure 12052 safe access to bring_workers_down. 12053 120542020-03-12 Matthias Maennich <maennich@google.com> 12055 12056 configure: add support for thread sanitizer (--enable-tsan) 12057 * configure.ac: Add configure options for -fsanitize=thread 12058 120592020-03-13 Matthias Maennich <maennich@google.com> 12060 12061 dwarf-reader: gnu_hash_tab lookup: fix overflow in bloom hash calculation 12062 * src/abg-dwarf-reader.cc(lookup_symbol_from_gnu_hash_tab): Fix 12063 signed integer overflow. 12064 120652020-03-12 Giuliano Procida <gprocida@google.com> 12066 12067 Treat function type changes as local. 12068 * src/abg-ir.cc (types_have_similar_structure): Always compare 12069 function types (instead of just returning true) regardless of 12070 whether they are components of pointer-to-function or 12071 reference-to-function types. 12072 * tests/data/Makefile.am: Add new test case files. 12073 * tests/data/test-abidiff-exit/test-leaf2-report.txt: New test 12074 case. 12075 * tests/data/test-abidiff-exit/test-leaf2-v0.cc: Ditto. 12076 * tests/data/test-abidiff-exit/test-leaf2-v0.o: Ditto. 12077 * tests/data/test-abidiff-exit/test-leaf2-v1.cc: Ditto. 12078 * tests/data/test-abidiff-exit/test-leaf2-v1.o: Ditto. 12079 * tests/test-abidiff-exit.cc: Run new test case. 12080 120812020-03-13 Giuliano Procida <gprocida@google.com> 12082 12083 Output 2-space indentation consistently. 12084 * src/abg-default-reporter.cc (report): In the 12085 class_or_union_diff override, use 2-space indentation when 12086 listing changed members. In the var_diff override, do the same 12087 for variable type changes. 12088 * src/abg-leaf-reporter.cc: Ditto. 12089 * tests/data/test-*/*report*.txt: Update many test cases. 12090 120912020-03-16 Giuliano Procida <gprocida@google.com> 12092 12093 Eliminate some unnecessary blank lines in diff output. 12094 * src/abg-default-reporter.cc (report): In the type_decl_diff, 12095 enum_diff, array_diff, class_diff, union_diff and var_diff 12096 overrides, simplify new line logic which no longer needs to be 12097 threaded through report_name_size_and_alignment_changes. In 12098 the distinct_diff override, simplify new line logic which no 12099 longer needs to be threaded through 12100 report_size_and_alignment_changes. In the enum_diff override, 12101 emit just one blank line after each enum. In the array_diff 12102 override, remove stray location reporting which doesn't appear 12103 to ever trigger; fix new line logic. In the 12104 class_or_union_diff override, simplify new line logic for 12105 deleted members; pass indentation to represent_data_member. 12106 * src/abg-leaf-reporter.cc (report): In the array_diff, 12107 class_diff, union_diff and var_diff overrides, simplify new 12108 line logic which no longer needs to be threaded through 12109 report_name_size_and_alignment_changes. In the distinct_diff 12110 override, simplify new line logic which no longer needs to be 12111 threaded through report_size_and_alignment_changes. In the 12112 array_diff override, remove stray location reporting which 12113 doesn't appear to ever trigger; fix new line handling. In the 12114 class_or_union_diff override, simplify new line logic for 12115 deleted members; pass indentation to represent_data_member. 12116 In the corpus_diff override, tabify source indentation. 12117 * src/abg-reporter-priv.cc (represent_data_member): Handle 12118 indentation; fix new line logic. 12119 (report_size_and_alignment_changes): Fix new line logic 12120 for "type size hasn't changed" message; simplify new line 12121 logic and replace local bool n with argument bool nl for 12122 clarity. 12123 (report_size_and_alignment_changes): Remove bool nl argument 12124 and associated code as it had become always false; take 12125 responsibility for emitting terminating new lines and change 12126 return type to void. 12127 (report_name_size_and_alignment_changes): Fix new line logic; 12128 remove bool nl argument and associated code as it had become 12129 always false; take responsibility for emitting terminating new 12130 lines and change return type to void. 12131 (maybe_report_interfaces_impacted_by_diff) In both overrides, 12132 remove new line prefix code and new_line_prefix argument. 12133 * src/abg-reporter-priv.h (represent_data_member): Add indent 12134 argument. 12135 (report_size_and_alignment_changes) Remove bool nl argument; 12136 change return type to void. 12137 (report_name_size_and_alignment_changes) Remove bool nl 12138 argument; change return type to void. 12139 (maybe_report_interfaces_impacted_by_diff) In both overrides, 12140 remove new_line_prefix argument. 12141 * tests/data/test-*/*report*.txt: Remove some blank lines. 12142 121432020-03-12 Giuliano Procida <gprocida@google.com> 12144 12145 abg-leaf-reporter.cc: Fix indentation of function parameter diffs. 12146 * src/abg-leaf-reporter.cc (report): In the fn_parm_diff 12147 override, indent the lines of detail by 2 spaces. 12148 * tests/data/test-abidiff-exit/test-leaf3-report.txt: Update 12149 report with correct indentation. 12150 121512020-03-12 Giuliano Procida <gprocida@google.com> 12152 12153 Fix interaction of --redundant and --leaf-changes-only options. 12154 * src/abg-comparison.cc (diff_context::show_leaf_changes_only): 12155 Remove "--leaf-changes-only implies --redundant" logic. 12156 * tools/abidiff.cc (display_usage): Mention that 12157 --leaf-changes-only implies --redundant. 12158 (set_diff_context_from_opts): Make --leaf-changes-only imply 12159 --redundant; document this behaviour in a comment. 12160 * tools/abipkgdiff.cc: Ditto. 12161 * tests/data/Makefile.am: Add new test case files. 12162 * tests/data/test-abidiff-exit/test-leaf3-report.txt: Add new 12163 test case, to show --leaf-changes-only implies --redundant. 12164 * tests/data/test-abidiff-exit/test-leaf3-v0.c: Ditto. 12165 * tests/data/test-abidiff-exit/test-leaf3-v0.o: Ditto. 12166 * tests/data/test-abidiff-exit/test-leaf3-v1.c: Ditto. 12167 * tests/data/test-abidiff-exit/test-leaf3-v1.o: Ditto. 12168 * tests/test-abidiff-exit.cc: Run new test case. 12169 * tests/data/test-diff-pkg/libcdio-0.94-1.fc26.x86_64--libcdio-0.94-2.fc26.x86_64-report.1.txt: 12170 Update abipkgdiff report with --redundant output. 12171 * tests/data/test-diff-pkg/spice-server-0.12.4-19.el7.x86_64-0.12.8-1.el7.x86_64-report-1.txt: 12172 Ditto. 12173 * tests/data/test-diff-pkg/spice-server-0.12.4-19.el7.x86_64-0.12.8-1.el7.x86_64-report-2.txt: 12174 Ditto. 12175 121762020-03-13 Giuliano Procida <gprocida@google.com> 12177 12178 Add more leaf change reporting. 12179 * doc/manuals/abidiff.rst: Update the documentation for 12180 --leaf-changes-only. 12181 * doc/manuals/abipkgdiff.rst: Likewise. 12182 * src/abg-comparison.cc (emit_diff_stats): Exclude non-leaf 12183 changes to variables from the reported total of leaf changes. 12184 * src/abg-default-reporter.cc (report): In the corpus_diff 12185 override, move some code and comments for clarity. 12186 * src/abg-leaf-reporter.cc (report): In the corpus_diff 12187 override, additionally report removed/added/changed variables 12188 and removed/added symbols absent from debug info. 12189 * tests/data/Makefile.am: Add new test case files. 12190 * tests/data/test-abidiff-exit/test-leaf0-report.txt: Update 12191 to include reporting of variable diff (change of type). 12192 * tests/data/test-abidiff-exit/test-leaf1-report.txt: New test 12193 case with added/removed variables/functions and changed 12194 variables (both local and non-local type changes). 12195 * tests/data/test-abidiff-exit/test-leaf1-v0.cc: Ditto. 12196 * tests/data/test-abidiff-exit/test-leaf1-v0.o: Ditto. 12197 * tests/data/test-abidiff-exit/test-leaf1-v1.cc: Ditto. 12198 * tests/data/test-abidiff-exit/test-leaf1-v1.o: Ditto. 12199 * tests/test-abidiff-exit.cc: Run new test case. Supply 12200 --redundant otherwise the test isn't meaningful. 12201 122022020-03-12 Dodji Seketeli <dodji@redhat.com> 12203 12204 Update fedabipkgdiff tests according to commit b602f46c 12205 * tests/data/test-fedabipkgdiff/test0-from-fc20-to-fc23-dbus-glib-report-0.txt: 12206 Adjust for useless whitespace removal. 12207 * tests/data/test-fedabipkgdiff/test1-from-fc20-to-dbus-glib-0.106-1.fc23.x86_64-report-0.txt: Likewise. 12208 * tests/data/test-fedabipkgdiff/test2-dbus-glib-0.100.2-2.fc20--dbus-glib-0.106-1.fc23-report-0.txt: Likewise. 12209 * tests/data/test-fedabipkgdiff/test3-dbus-glib-0.100.2-2.fc20.i686--dbus-glib-0.106-1.fc23.i686-report-0.txt: Likewise. 12210 * tests/data/test-fedabipkgdiff/test4-glib-0.100.2-2.fc20.x86_64.rpm-glib-0.106-1.fc23.x86_64.rpm-report-0.txt: Likewise. 12211 122122020-03-11 Giuliano Procida <gprocida@google.com> 12213 12214 Fix spurious new lines after diff sections. 12215 * src/abg-default-reporter.cc (report): In the corpus_diff 12216 overload, just use a local boolean emitted state variable 12217 within each section to determine whether or not to follow the 12218 section with an extra new line. 12219 * src/abg-leaf-reporter.cc: Ditto. 12220 * tests/data/test-*/*report*.txt: Remove unwanted new lines 12221 from 27 files. 12222 122232020-03-10 Giuliano Procida <gprocida@google.com> 12224 12225 abg-comparison.cc: Remove stray function declaration. 12226 * src/abg-comparison.cc (show_relative_offset_changes): Remove 12227 this stray function declaration. 12228 122292020-03-10 Giuliano Procida <gprocida@google.com> 12230 12231 abisym: Remove leading space in output. 12232 * tools/abisym.cc (main): Remove leading space from output. 12233 * tests/data/test-lookup-syms/test0-report.txt: Remove leading 12234 space from expected output. 12235 * tests/data/test-lookup-syms/test01-report.txt: Ditto. 12236 * tests/data/test-lookup-syms/test02-report.txt: Ditto. 12237 * tests/data/test-lookup-syms/test1-1-report.txt: Ditto. 12238 122392020-03-09 Giuliano Procida <gprocida@google.com> 12240 12241 Fix the reporting of leaf change statistics. 12242 * src/abg-comparison.cc 12243 (apply_filters_and_compute_diff_stats): Increment the correct 12244 counter for leaf variable changes. 12245 * tests/data/Makefile.am: Add new test case files. 12246 * tests/data/test-abidiff-exit/test-leaf0-report.txt: New test 12247 case. 12248 * tests/data/test-abidiff-exit/test-leaf0-v0.cc: Ditto. 12249 * tests/data/test-abidiff-exit/test-leaf0-v0.o: Ditto. 12250 * tests/data/test-abidiff-exit/test-leaf0-v1.cc: Ditto. 12251 * tests/data/test-abidiff-exit/test-leaf0-v1.o: Ditto. 12252 * tests/test-abidiff-exit.cc: Run new test case. 12253 Reviewed-by: Matthias Maennich <maennich@google.com> 12254 122552020-03-05 Giuliano Procida <gprocida@google.com> 12256 12257 Add space missing between "[C]" tag and description of changed item. 12258 * src/abg-default-reporter.cc (report): In the overload for 12259 corpus_diff, output space after "[C]". 12260 * src/abg-leaf-reporter.cc (report): Likewise. 12261 * tests/data/test-*/*report*.txt: Update all the test 12262 reports. 12263 122642020-03-05 Giuliano Procida <gprocida@google.com> 12265 12266 Correct various inconsequential typos. 12267 * src/abg-leaf-reporter.cc (report): In the class_or_union_diff 12268 overoad, swap calls to report_mem_header to match the rest of the 12269 code. 12270 * src/abg-reporter-priv.cc (represent): In the var_diff_sptr 12271 overload, add some missing whitespace; remember we've emitted the 12272 pretty representation in 2 cases where this was omitted (though 1 12273 of these is the last case where it makes no difference). 12274 maybe_report_diff_for_symbol Add some missing whitespace; remember 12275 we've reported a diff (and need a trailing newline) in 1 case 12276 where this was omitted, also affecting the return value of the 12277 function (but no caller cares). 12278 122792020-03-05 Giuliano Procida <gprocida@google.com> 12280 12281 Correct spelling of "alignment". 12282 * src/abg-reporter-priv.cc: s/alignement/alignment/ 12283 * tests/data/test-abidiff/test-struct0-report.txt: Ditto.. 12284 * tests/data/test-abidiff/test-struct1-report.txt: Ditto. 12285 * tests/data/test-abidiff/test-var0-report.txt: Ditto. 12286 122872020-02-27 Dodji Seketeli <dodji@redhat.com> 12288 12289 Bump version number to 1.8 12290 * configure.ac: Update version number to 1.8 12291 122922020-02-26 Dodji Seketeli <dodji@redhat.com> 12293 12294 Update website for 1.7 12295 * doc/website/mainpage.txt: Update for 1.7 12296 122972020-02-25 Dodji Seketeli <dodji@redhat.com> 12298 12299 Update ChangeLog 12300 * ChangeLog: Automatically update by running: 12301 'make update-changelog'. 12302 123032020-02-25 Dodji Seketeli <dodji@redhat.com> 12304 12305 Update NEWS file for 1.7 12306 * NEWS: update for 1.7 12307 123082020-02-25 Dodji Seketeli <dodji@redhat.com> 12309 12310 gen-changelog.py: Update the script for python3 12311 * gen-changelog.py (process_commit): Use the functional notation 12312 for the print function invocation required by python3. 12313 (output_commits, get_rel_tags, ): Specify that the output stream 12314 of the subprocess running the git command is in the text format. 12315 123162020-02-26 Dodji Seketeli <dodji@redhat.com> 12317 12318 tools-utils: Drop redefinition of fopen when BAD_FTS is defined 12319 * src/abg-tools-utils.cc: Do not remap fopen to fopen64 as we 12320 don't use fopen explicitly anymore. 12321 123222020-02-21 Dodji Seketeli <dodji@redhat.com> 12323 12324 Update copyright year to 2020 12325 * include/abg-comp-filter.h: Update copyright year to 2020. 12326 * include/abg-comparison.h: Likewise. 12327 * include/abg-config.h: Likewise. 12328 * include/abg-corpus.h: Likewise. 12329 * include/abg-cxx-compat.h: Likewise. 12330 * include/abg-diff-utils.h: Likewise. 12331 * include/abg-dwarf-reader.h: Likewise. 12332 * include/abg-fwd.h: Likewise. 12333 * include/abg-hash.h: Likewise. 12334 * include/abg-ini.h: Likewise. 12335 * include/abg-interned-str.h: Likewise. 12336 * include/abg-ir.h: Likewise. 12337 * include/abg-libxml-utils.h: Likewise. 12338 * include/abg-libzip-utils.h: Likewise. 12339 * include/abg-reader.h: Likewise. 12340 * include/abg-reporter.h: Likewise. 12341 * include/abg-sptr-utils.h: Likewise. 12342 * include/abg-suppression.h: Likewise. 12343 * include/abg-tools-utils.h: Likewise. 12344 * include/abg-traverse.h: Likewise. 12345 * include/abg-viz-common.h: Likewise. 12346 * include/abg-viz-dot.h: Likewise. 12347 * include/abg-viz-svg.h: Likewise. 12348 * include/abg-workers.h: Likewise. 12349 * include/abg-writer.h: Likewise. 12350 * src/abg-comp-filter.cc: Likewise. 12351 * src/abg-comparison-priv.h: Likewise. 12352 * src/abg-comparison.cc: Likewise. 12353 * src/abg-config.cc: Likewise. 12354 * src/abg-corpus-priv.h: Likewise. 12355 * src/abg-corpus.cc: Likewise. 12356 * src/abg-default-reporter.cc: Likewise. 12357 * src/abg-diff-utils.cc: Likewise. 12358 * src/abg-dwarf-reader.cc: Likewise. 12359 * src/abg-hash.cc: Likewise. 12360 * src/abg-ini.cc: Likewise. 12361 * src/abg-internal.h: Likewise. 12362 * src/abg-ir-priv.h: Likewise. 12363 * src/abg-ir.cc: Likewise. 12364 * src/abg-leaf-reporter.cc: Likewise. 12365 * src/abg-libxml-utils.cc: Likewise. 12366 * src/abg-libzip-utils.cc: Likewise. 12367 * src/abg-reader.cc: Likewise. 12368 * src/abg-reporter-priv.cc: Likewise. 12369 * src/abg-reporter-priv.h: Likewise. 12370 * src/abg-sptr-utils.cc: Likewise. 12371 * src/abg-suppression-priv.h: Likewise. 12372 * src/abg-suppression.cc: Likewise. 12373 * src/abg-tools-utils.cc: Likewise. 12374 * src/abg-traverse.cc: Likewise. 12375 * src/abg-viz-common.cc: Likewise. 12376 * src/abg-viz-dot.cc: Likewise. 12377 * src/abg-viz-svg.cc: Likewise. 12378 * src/abg-workers.cc: Likewise. 12379 * src/abg-writer.cc: Likewise. 12380 * tests/print-diff-tree.cc: Likewise. 12381 * tests/test-abicompat.cc: Likewise. 12382 * tests/test-abidiff-exit.cc: Likewise. 12383 * tests/test-abidiff.cc: Likewise. 12384 * tests/test-alt-dwarf-file.cc: Likewise. 12385 * tests/test-core-diff.cc: Likewise. 12386 * tests/test-diff-dwarf-abixml.cc: Likewise. 12387 * tests/test-diff-dwarf.cc: Likewise. 12388 * tests/test-diff-filter.cc: Likewise. 12389 * tests/test-diff-pkg.cc: Likewise. 12390 * tests/test-diff-suppr.cc: Likewise. 12391 * tests/test-diff2.cc: Likewise. 12392 * tests/test-dot.cc: Likewise. 12393 * tests/test-ini.cc: Likewise. 12394 * tests/test-ir-walker.cc: Likewise. 12395 * tests/test-lookup-syms.cc: Likewise. 12396 * tests/test-read-dwarf.cc: Likewise. 12397 * tests/test-read-write.cc: Likewise. 12398 * tests/test-svg.cc: Likewise. 12399 * tests/test-tools-utils.cc: Likewise. 12400 * tests/test-types-stability.cc: Likewise. 12401 * tests/test-utils.cc: Likewise. 12402 * tests/test-utils.h: Likewise. 12403 * tests/test-write-read-archive.cc: Likewise. 12404 * tools/abiar.cc: Likewise. 12405 * tools/abicompat.cc: Likewise. 12406 * tools/abidiff.cc: Likewise. 12407 * tools/abidw.cc: Likewise. 12408 * tools/abilint.cc: Likewise. 12409 * tools/abipkgdiff.cc: Likewise. 12410 * tools/abisym.cc: Likewise. 12411 * tools/binilint.cc: Likewise. 12412 * tools/kmidiff.cc: Likewise. 12413 * update-copyright.sh: Fix the updating script to handle not just 12414 "Red Hat, Inc." 12415 124162020-02-21 Dodji Seketeli <dodji@redhat.com> 12417 12418 abixml-reader: Support SONAME related properties on file suppression 12419 * doc/manuals/libabigail-concepts.rst: Update the documentation to 12420 mention soname_regexp and soname_not_regexp is supported in the 12421 [suppress_file] section. 12422 * include/abg-suppression.h (suppression_matches_soname) 12423 (suppression_matches_soname_or_filename): Declare new functions. 12424 Make them be friends of class suppression_base. 12425 * src/abg-reader.cc 12426 (read_context::corpus_is_suppressed_by_soname_or_filename): Define 12427 new member function. 12428 (read_corpus_from_input): Apply file suppression. 12429 * src/abg-suppression.cc (read_file_suppression): Support 12430 "soname_regexp" and "soname_not_regexp" in the [suppress_file] 12431 section. 12432 (suppression_matches_soname) 12433 (suppression_matches_soname_or_filename): Define new functions. 12434 * tests/data/test-diff-suppr/libtest48-soname-abixml-report-{1,2}.txt: 12435 New test reference output files. 12436 Likewise. 12437 * tests/data/test-diff-suppr/libtest48-soname-abixml-suppr.txt: 12438 New test suppression file. 12439 * tests/data/test-diff-suppr/libtest48-soname-abixml-suppr-{2,3,4}.txt:: 12440 Likewise. 12441 * tests/data/test-diff-suppr/libtest48-soname-abixml-v{0,1}.so: New 12442 test binary input files. 12443 * tests/data/test-diff-suppr/libtest48-soname-abixml-v{0,1}.so.abi: 12444 New abixml for the binary input files above. 12445 * tests/data/test-diff-suppr/test48-soname-abixml-v{0,1}.c: Source 12446 code of the binary input files above. 12447 * tests/data/Makefile.am: Add the above test material to source 12448 distribution. 12449 * tests/test-diff-suppr.cc (in_out_specs): Add the test input 12450 above to this test harness. 12451 124522020-02-21 Dodji Seketeli <dodji@redhat.com> 12453 12454 suppression: Better handle soname/filename properties evaluation 12455 * include/abg-suppression.h 12456 (suppression_base::has_{soname,file_name}_related_property): Add 12457 new member functions. 12458 * src/abg-dwarf-reader.cc (read_context::suppression_can_match): 12459 Fix the logic to make a difference between the case where the 12460 suppression doesn't have any soname/filename property and the case 12461 where the suppression does have a soname/filename property that 12462 does not match the current binary. 12463 * src/abg-reader.cc (read_context::suppression_can_match): 12464 Likewise. 12465 * src/abg-suppression-priv.h 12466 (suppression_base::priv::matches_soname): If the suppression does 12467 not have any soname related property then it doesn't match the 12468 soname we are looking at. 12469 (suppression_base::priv::matches_binary_name): If the suppression 12470 does not have any filename related property then it doesn't match 12471 the filename we are looking at. 12472 * src/abg-suppression.cc 12473 (suppression_base::has_{soname,file_name}_related_property): 12474 Define new member functions. 12475 (sonames_of_binaries_match): If the suppression does not have any 12476 soname related property then it doesn't match the corpora of the 12477 diff we are looking at. 12478 (names_of_binaries_match): If the suppression does not have any 12479 filename related property then it doesn't match the corpora of the 12480 diff we are looking at. 12481 (type_suppression::suppresses_type): Fix the logic to make a 12482 difference between the case where the suppression doesn't have any 12483 soname/filename property and the case where the suppression does 12484 have a soname/filename property that does not match the current 12485 binary. 12486 (function_suppression::suppresses_{function, function_symbol}): 12487 Likewise. 12488 (variable_suppression::suppresses_{variable, variable_symbol}): 12489 Likewise. 12490 (file_suppression::suppresses_file): Likewise. 12491 124922020-02-05 Giuliano Procida <gprocida@google.com> 12493 12494 Fix stray comma in leaf-changes-only mode. 12495 * src/abg-reporter-priv.cc (represent): Don't try to follow 12496 output of indented pretty representation with a comma, just 12497 emit "and" unconditionally; remove unnecessary intermediate 12498 ostringstream. 12499 * tests/data/Makefile.am: Add new test case files. 12500 * tests/data/test-abidiff-exit/test-no-stray-comma-*: New test 12501 cases. 12502 * tests/data/test-diff-suppr/test46-PR25128-report-?.txt: 12503 Replace unindented comma with indented "and". 12504 * tests/test-abidiff-exit.cc: Add no-stray-comma test case. 12505 Reviewed-by: Matthias Maennich <maennich@google.com> 12506 125072020-02-04 Giuliano Procida <gprocida@google.com> 12508 12509 Sort kernel module object files before processing them. 12510 * src/abg-tools-utils.cc (get_binary_paths_from_kernel_dist): 12511 Sort module_paths. 12512 125132020-02-04 Matthias Maennich <maennich@google.com> 12514 12515 abg-workers: Rework the worker queue to improve concurrent behaviour 12516 * include/abg-workers.h (workers::task): move entire 12517 implementation to header and drop superfluous forward declaration. 12518 * src/abg-workers.cc (workers::task):: Likewise. 12519 (workers::queue::priv): Drop queue_cond_mutex, rename queue_cond 12520 to tasks_todo_cond, add task_done_cond, make default_notify 12521 static. 12522 (workers::queue::priv::priv): Add default arguments to fully 12523 qualified constructor, drop the remaining ones. 12524 (workers::queue:prive::more_tasks_to_execute): Drop method. 12525 (workers::queue:prive::schedule_task): Do not synchronize access 12526 to the queue condition variable, but only on the mutex. 12527 (do_bring_workers_down): Likewise. Also await tasks_done to be 12528 empty. 12529 (workers::queue:prive::worker::wait_to_execute_a_task): Await 12530 tasks on the tasks_todo with tasks_todo_(cond|mutex) and signal 12531 task completion to tasks_done_cond. 12532 125332020-02-03 Matthias Maennich <maennich@google.com> 12534 12535 abg-dwarf-reader: zero initialize local Dwarf_Addr values 12536 * src/abg-dwarf-reader.cc 12537 (read_context::get_first_exported_fn_address_from_DW_AT_ranges): 12538 initialize local Dwarf_Addr variables. 12539 Reviewed-by: Dodji Seketeli <dodji@seketeli.org> 12540 125412020-01-29 Matthias Maennich <maennich@google.com> 12542 12543 abg-comparison: prefer .empty() over implicit bool conversion of .size() 12544 * src/abg-comparison.cc (corpus_diff::has_changes): prefer 12545 !container.empty() over bool(container.size()) 12546 [1] https://clang.llvm.org/extra/clang-tidy/checks/readability-container-size-empty.html 12547 Reviewed-by: Dodji Seketeli <dodji@seketeli.org> 12548 125492020-01-29 Matthias Maennich <maennich@google.com> 12550 12551 Fix some parameter name inconsistencies 12552 * src/abg-comparison-priv.h 12553 (corpus_diff::priv::count_unreachable_types): use consistent 12554 parameter naming. 12555 * tools/abidiff.cc(main): Likewise. 12556 Reviewed-by: Dodji Seketeli <dodji@seketeli.org> 12557 125582020-02-03 Giuliano Procida <gprocida@google.com> 12559 12560 Don't ignore options when diffing translation units (.bi files). 12561 * tests/data/Makefile.am: Add test case files. 12562 * tests/data/test-abidiff-exit/test-loc-*: New test cases. 12563 * tests/test-abidiff-exit.cc (in_out_specs): Add new test cases. 12564 * tools/abidiff.cc (main): Use populated ctxt for translation unit 12565 diff. 12566 125672020-01-29 Giuliano Procida <gprocida@google.com> 12568 12569 Fix typo in COMPILING. 12570 * COMPILING: 12571 125722020-01-29 Giuliano Procida <gprocida@google.com> 12573 12574 Remove redundant mention of libtool in COMPILING documentation. 12575 * COMPILING: Remove redundant mention of libtool. 12576 125772020-01-26 Matthias Maennich <maennich@google.com> 12578 12579 Testing: add Catch Unit test framework 12580 * tests/.gitignore: Add entry for .dirstamp 12581 * tests/Makefile.am: Add libcatch test library and use it for 12582 runtestkmiwhitelist. 12583 * tests/lib/catch.cc: New test driver implementation. 12584 * tests/lib/catch.hpp: Add Catch v1.12.2 header only test library. 12585 * tests/test-kmi-whitelist.cc: Migrate to use Catch test framework. 12586 Reviewed-by: Dodji Seketeli <dodji@seketeli.org> 12587 125882020-01-25 Matthias Maennich <maennich@google.com> 12589 12590 abg-fwd: drop duplicate forward declaration for corpus_sptr 12591 * include/abg-fwd.h: drop superfluous forward declaration. 12592 125932020-01-25 Matthias Maennich <maennich@google.com> 12594 12595 Fix / add include guards 12596 * include/abg-dwarf-reader.h: Move include guard to the beginning. 12597 * include/abg-reporter-priv.h: Likewise. 12598 * include/abg-libxml-utils.h: Add include guard. 12599 * include/abg-libzip-utils.h: Likewise. 12600 126012020-01-25 Matthias Maennich <maennich@google.com> 12602 12603 dwarf-reader: handle binaries with missing symtab 12604 * src/abg-dwarf-reader.cc (load_symbol_maps_from_symtab_section): 12605 Handle elf file with missing symtab. 12606 * tests/test-read-dwarf.cc (InOutSpec): add test case. 12607 * tests/data/test-read-dwarf/test26-bogus-binary.elf: new test data. 12608 126092020-01-24 Matthias Maennich <maennich@google.com> 12610 12611 dwarf-reader: handle symtab.section_header.sh_entsize == 0 12612 * src/abg-dwarf-reader.cc (load_symbol_maps_from_symtab_section): 12613 Handle elf file with invalid sh_entsize. 12614 * tests/test-read-dwarf.cc (test_task::perform): handle empty 12615 in_abi_path and out_abi_path as 'read only' test. 12616 (InOutSpec): add test case. 12617 * tests/data/test-read-dwarf/test25-bogus-binary.elf: new test data. 12618 126192020-01-21 Matthias Maennich <maennich@google.com> 12620 12621 clang-format: Better approximation for binary operators and assignments 12622 * .clang-format: Add BreakBeforeBinaryOperators option. 12623 126242020-01-14 Matthias Maennich <maennich@google.com> 12625 12626 KMI Whitelists: Drop old whitelist extraction methods 12627 * include/abg-tools-utils.h 12628 (gen_suppr_spec_from_kernel_abi_whitelist): Delete declaration. 12629 * src/abg-tools-utils.cc 12630 (gen_suppr_spec_from_kernel_abi_whitelist): Delete definition 12631 and migrate users to gen_suppr_spec_from_kernel_abi_whitelists. 12632 * tools/abidiff.cc (set_suppressions): Migrate from using 12633 gen_suppr_spec_from_kernel_abi_whitelist to 12634 gen_suppr_spec_from_kernel_abi_whitelists. 12635 * tools/abidw.cc (set_suppressions): Likewise. 12636 * tools/abipkgdiff.cc: Drop unused using definition. 12637 * tools/kmidiff.cc: Likewise. 12638 Reviewed-by: Dodji Seketeli <dodji@seketeli.org> 12639 126402020-01-14 Matthias Maennich <maennich@google.com> 12641 12642 KMI Whitelists: Add functionality to make whitelists additive 12643 * include/abg-tools-utils.h 12644 (gen_suppr_spec_from_kernel_abi_whitelists): New function. 12645 * src/abg-tools-utils.cc 12646 (gen_suppr_spec_from_kernel_abi_whitelists): Likewise. 12647 * tests/.gitignore: Ignore new test executable. 12648 * tests/Makefile.am: Add new test executable. 12649 * tests/data/test-kmi-whitelist/whitelist-with-another-single-entry: 12650 New test input file. 12651 * tests/data/test-kmi-whitelist/whitelist-with-duplicate-entry: 12652 Likewise. 12653 * tests/data/test-kmi-whitelist/whitelist-with-single-entry: 12654 Likewise. 12655 * tests/data/test-kmi-whitelist/whitelist-with-two-sections: 12656 Likewise. 12657 * tests/data/Makefile.am: Add above test material. 12658 * tests/test-kmi-whitelist.cc: Add new test executable. 12659 Reviewed-by: Dodji Seketeli <dodji@seketeli.org> 12660 126612020-01-13 Matthias Maennich <maennich@google.com> 12662 12663 writer: completely skip over empty corpora 12664 * src/abg-writer.cc (write_corpus): completely skip empty 12665 corpora rather than creating an empty entry for them. 12666 Reviewed-by: Dodji Seketeli <dodji@seketeli.org> 12667 126682020-01-13 Matthias Maennich <maennich@google.com> 12669 12670 corpus: is_empty: consider actual translation unit contents 12671 * src/abg-corpus.cc (corpus::is_empty): consider a list of 12672 empty members to be empty. 12673 Reviewed-by: Dodji Seketeli <dodji@seketeli.org> 12674 126752020-01-13 Matthias Maennich <maennich@google.com> 12676 12677 abg-reader: handle empty corpus nodes in xml representation 12678 * src/abg-reader.cc (read_corpus_from_input): when assigning a 12679 corpus node, assure the node actually has children. 12680 * tests/test-abidiff.cc (main): Add test for variants of empty 12681 xml nodes to the test harness. 12682 * tests/data/test-abidiff/test-empty-corpus-0.xml: Test input 12683 containing an empty xml node that closes immediately. 12684 * tests/data/test-abidiff/test-empty-corpus-0.xml: Test input 12685 containing an empty xml node that closes immediately with a tag. 12686 * tests/data/test-abidiff/test-empty-corpus-0.xml: Test input 12687 containing an empty xml node that closes with a tag on a new line. 12688 * tests/data/test-abidiff/test-empty-corpus-report.txt: 12689 Expected test output (empty abidiff) for diffing xml with itself. 12690 * tests/data/Makefile.am: Add the new test input material above 12691 to source distribution. 12692 Reviewed-by: Dodji Seketeli <dodji@seketeli.org> 12693 126942020-01-17 Dodji Seketeli <dodji@redhat.com> 12695 12696 Bug 25409 - Fix reading layout-offset-in-bits attribute of data-member 12697 * src/abg-reader.cc (read_offset_in_bits): Fix comment. Use 12698 stroull rather than atoi. 12699 * tests/data/test-diff-dwarf-abixml/PR25409-librte_bus_dpaa.so.20.0: 12700 Add new binary test input. 12701 * tests/data/test-diff-dwarf-abixml/PR25409-librte_bus_dpaa.so.20.0-report-0.txt: 12702 Add new reference output. 12703 * tests/data/test-diff-dwarf-abixml/PR25409-librte_bus_dpaa.so.20.0.abi: 12704 Add new abixml representation for the binary test input above. 12705 * tests/data/Makefile.am: Add the new test material above to 12706 source distribution. 12707 * tests/test-diff-dwarf-abixml.cc (in_out_specs): Add the test 12708 input above to the test harness. 12709 127102020-01-13 Matthias Maennich <maennich@google.com> 12711 12712 abidiff/kmidiff: do not default-suppress added symbols 12713 * tools/abidiff.cc (adjust_diff_context_for_kmidiff): Drop 12714 default suppression of added symbols. 12715 * tools/kmidiff.cc (set_diff_context): Likewise. 12716 * tests/data/test-diff-suppr/test46-PR25128-report-1.txt: Adjust 12717 test expectation. 12718 * tests/data/test-diff-suppr/test46-PR25128-report-2.txt: Add 12719 test case for abidiff with flag --no-added-syms. 12720 * tests/data/Makefile.am: add new testcase. 12721 Reviewed-by: Dodji Seketeli <dodji@seketeli.org> 12722 127232019-12-15 Matthias Maennich <maennich@google.com> 12724 12725 Add (undocumented) support for version suffixes 12726 * configure.ac: add substitution for VERSION_SUFFIX 12727 * include/abg-version.h.in: add define for ABIGAIL_VERSION_SUFFIX 12728 * include/abg-config.h(abigail_get_library_version): add support 12729 for a version suffix 12730 * src/abg-config.cc(abigail_get_library_version): Likewise. 12731 * src/abg-tools-utils.cc(get_library_version_string): Likewise. 12732 Reviewed-by: Dodji Seketeli <dodji@seketeli.org> 12733 127342019-11-13 Matthias Maennich <maennich@google.com> 12735 12736 dwarf-reader: relax restriction about relocation sections in try_reading_first_ksymtab_entry 12737 * src/abg-dwarf-reader.cc (try_reading_first_ksymtab_entry): 12738 remove assertion and update documentation 12739 Fixes: 43679a610316 ("dwarf-reader: refactor try_reading_first_ksymtab_entry_using{pre,}_v4_19_format") 12740 Reviewed-by: Dodji Seketeli <dodji@seketeli.org> 12741 127422019-11-11 Matthias Maennich <maennich@google.com> 12743 12744 abg-dwarf-reader: resolve relocation sections by index 12745 * src/abg-dwarf-reader.cc (find_relocation_section): New function. 12746 (find_ksymtab_reloc_section): Use find_relocation_section to 12747 resolve the ksymtab's relocation section. 12748 (find_ksymtab_gpl_reloc_section): Likewise. 12749 Fixes: e6870326e01a ("Support pre and post v4.19 ksymtabs for Linux kernel modules") 12750 Cc: Jessica Yu <jeyu@kernel.org> 12751 Cc: Android Kernel Team <kernel-team@android.com> 12752 Reviewed-by: Dodji Seketeli <dodji@seketeli.org> 12753 127542019-12-03 Dodji Seketeli <dodji@redhat.com> 12755 12756 Misc typo fixes 12757 * src/abg-comparison.cc 12758 (leaf_diff_node_marker_visitor::visit_begin): Fix typo in 12759 comments. 12760 * src/abg-corpus.cc 12761 (corpus::get_types_not_reachable_from_public_interfaces): 12762 Likewise. 12763 * src/abg-ir.cc (decl_base::set_has_anonymous_parent): Likewise. 12764 * src/abg-reader.cc (add_read_context_suppressions): Likewise. 12765 127662019-11-13 Dodji Seketeli <dodji@redhat.com> 12767 12768 Bug 24690 - Support comparing non-reachable types of a binary 12769 * include/abg-comparison.h (string_type_base_sptr_map): Define new 12770 typedef. 12771 (diff_context::show_unreachable_types): Declare new member 12772 functions. 12773 (corpus_diff::{deleted_unreachable_types, 12774 deleted_unreachable_types_sorted, added_unreachable_types, 12775 added_unreachable_types_sorted, changed_unreachable_types, 12776 changed_unreachable_types_sorted}): Likewise. 12777 (maybe_report_unreachable_type_changes): Declare this function a 12778 friend of class corpus_diff. 12779 (corpus_diff::diff_stats::{num_added_unreachable_types, 12780 num_added_unreachable_types_filtered_out, 12781 net_num_added_unreachable_types, num_removed_unreachable_types, 12782 num_removed_unreachable_types_filtered_out, 12783 net_num_removed_unreachable_types, num_changed_unreachable_types, 12784 num_changed_unreachable_types_filtered_out, 12785 net_num_changed_unreachable_types}): Likewise. 12786 * src/abg-comparison-priv.h 12787 (diff_context::priv::show_unreachable_types_): Define new data 12788 member. 12789 (diff_context::priv::priv): Initialize the new data member. 12790 (diff_comp::operator()): Use pretty representation of diff 12791 subjects to sort them, rather than just their name. Also, add 12792 comment to the other member functions of diff_comp. 12793 (corpus_diff::{unreachable_types_edit_script_, 12794 deleted_unreachable_types_, deleted_unreachable_types_sorted_, 12795 suppressed_deleted_unreachable_types_, added_unreachable_types_, 12796 added_unreachable_types_sorted_, 12797 suppressed_added_unreachable_types_, changed_unreachable_types_, 12798 changed_unreachable_types_sorted_}): Define new data members. 12799 (corpus_diff::priv::apply_supprs_to_added_removed_fns_vars_unreachable_types): 12800 Changed the name of 12801 corpus_diff::priv::apply_suppressions_to_added_removed_fns_vars into 12802 this. 12803 (corpus_diff::priv::{added_unreachable_type_is_suppressed, 12804 deleted_unreachable_type_is_suppressed, 12805 changed_unreachable_types_sorted, count_unreachable_types}): 12806 Declare new member functions. 12807 (corpus_diff::diff_stats::priv::{num_added_unreachable_types, 12808 num_added_unreachable_types_filtered_out, 12809 num_removed_unreachable_types, 12810 num_removed_unreachable_types_filtered_out, 12811 num_changed_unreachable_types, 12812 num_changed_unreachable_types_filtered_out}): Define new data 12813 members. 12814 (sort_string_type_base_sptr_map): Declare new function. 12815 * src/abg-comparison.cc (sort_string_type_base_sptr_map) 12816 (diff_context::show_unreachable_types): Define new functions. 12817 (corpus_diff::diff_stats::{num_added_unreachable_types, 12818 num_added_unreachable_types_filtered_out, 12819 net_num_added_unreachable_types, 12820 net_num_removed_unreachable_types, 12821 num_removed_unreachable_types_filtered_out, 12822 num_removed_unreachable_types}): Define new member functions. 12823 (diff_maps::insert_diff_node): Do not update the map "diff -> 12824 impacted interfaces" if the current impacted interface is nil. 12825 This happens if we are looking at a diff node for a change on a 12826 type that is not reachable from any interfaces. 12827 (corpus_diff::priv::ensure_lookup_tables_populated): Handle the 12828 edit script for unreachable types. 12829 (corpus_diff::priv::apply_supprs_to_added_removed_fns_vars_unreachable_types): 12830 Rename 12831 corpus_diff::priv::apply_suppressions_to_added_removed_fns_vars 12832 into this. Apply suppression specifications to added and removed 12833 unreachable types as well. 12834 (corpus_diff::priv::{added,deleted}_unreachable_type_is_suppressed): 12835 Define new member functions. 12836 (corpus_diff::priv::{count_unreachable_types, 12837 changed_unreachable_types_sorted}): Likewise. 12838 (corpus_diff::priv::apply_filters_and_compute_diff_stats): Update 12839 statistics (including walking changed unreachable types to apply 12840 categorization and redundancy filters to them) related to 12841 unreachable types. 12842 (corpus_diff::priv::emit_diff_stats): Emit diff stats related to 12843 unreachable types. 12844 (corpus_diff::priv::maybe_dump_diff_tree): Dump diff tree nodes 12845 related to unreachable types. 12846 (corpus_diff::{deleted_unreachable_types, 12847 deleted_unreachable_types_sorted, added_unreachable_types, 12848 added_unreachable_types_sorted, changed_unreachable_types, 12849 changed_unreachable_types_sorted): Define new member functions. 12850 (corpus_diff::has_changes): Take deleted/added/changed unreachable 12851 types into account. 12852 (corpus_diff::has_incompatible_changes): Take net removed/changed 12853 unreachable types into account. 12854 (corpus_diff::has_net_subtype_changes): Take net removed and 12855 changed unreachable types into account. 12856 (corpus_diff::has_net_changes): Take net removed/added/changed 12857 unreachable types into account. 12858 (corpus_diff::traverse): When traversing the components of a 12859 corpus_diff node, make sure to traverse the changed unreachable 12860 types of the corpus. 12861 (leaf_diff_node_marker_visitor::visit_begin): Arrange for the fact 12862 that the current topmost interface can be nil if we are looking at 12863 types not reachable from global functions/variables. Also, make 12864 sure that only leaf nodes that are reachable from a global 12865 function/variable are recorded as leaf nodes. 12866 (compute_diff): In the overload for corpus_sptr, compute the 12867 changes between types not reachable from global functions and 12868 variables, if the user wishes that we do so. Also, add more 12869 comments. 12870 (apply_suppressions): Update for the name change of the function 12871 apply_suppressions_to_added_removed_fns_vars to 12872 apply_supprs_to_added_removed_fns_vars_unreachable_types. 12873 * include/abg-corpus.h 12874 (corpus::{record_type_as_reachable_from_public_interfaces, 12875 type_is_reachable_from_public_interfaces, 12876 get_types_not_reachable_from_public_interfaces}): Declare new 12877 member functions. 12878 (corpus::recording_types_reachable_from_public_interface_supported): 12879 Declare new virtual member function. 12880 (corpus_group::get_public_types_pretty_representations): Declare 12881 new member functons. 12882 (corpus_group::recording_types_reachable_from_public_interface_supported): 12883 Declare new virtual member function. 12884 * src/abg-corpus-priv.h 12885 (corpus::priv::{types_not_reachable_from_pub_ifaces_, 12886 pub_type_pretty_reprs_}): Define new data members. 12887 (corpus::priv::priv): Initialize the pub_type_pretty_reprs_ data 12888 member because it's a pointer. 12889 (corpus::priv::get_public_types_pretty_representations): Declare 12890 new member function. 12891 (corpus::priv::~priv): Declare a destructor. 12892 * src/abg-corpus.cc 12893 (corpus::priv::get_public_types_pretty_representations): Define 12894 new member function. 12895 (corpus::priv::~priv): Define new destructor to delete the new 12896 pub_type_pretty_reprs_ member pointer. 12897 (corpus::{record_type_as_reachable_from_public_interfaces, 12898 type_is_reachable_from_public_interfaces, 12899 get_types_not_reachable_from_public_interfaces, 12900 recording_types_reachable_from_public_interface_supported}): 12901 Define new member functions 12902 (corpus_group::get_public_types_pretty_representations): Likewise. 12903 * include/abg-diff-utils.h (struct deep_ptr_eq_functor): Document 12904 the equality operator. Also, add an overload to the equality 12905 operator, for weak_ptr<T>. The existing equality operator 12906 overload was just for shared_ptr<T>. 12907 * include/abg-fwd.h (is_user_defined_type): Declare function. 12908 * include/abg-ir.h (operator!=(const decl_base_sptr&, const 12909 decl_base_sptr&)): Declare new operator. 12910 (type_maps::get_types_sorted_by_name): Declare 12911 new member function. 12912 (decl_base::{g,s}et_is_artificial): Declare new member function. 12913 (function_decl::parameter::{g,s}et_artificial): Remove these 12914 member functions. 12915 * src/abg-ir.cc (operator!=(const decl_base_sptr&, const 12916 decl_base_sptr&)): Define new operator. 12917 (decl_base::priv::is_artificial_): Define new data 12918 member. 12919 (type_maps::priv::sorted_types_): Define new data member. 12920 (struct type_name_comp): Define new comparison functor to sort 12921 types based on their pretty representations. 12922 (decl_base::priv::priv): Initialize it. 12923 (decl_base::{g,s}et_is_artificial): Define new member functions. 12924 (type_maps::get_types_sorted_by_name): Define new member function. 12925 (is_user_defined_type): Define new function overloads. 12926 (strip_typedef, function_type::{function_type, set_parameters}): 12927 Adjust using decl_base::get_is_artificial rather than 12928 function_decl::parameter::get_artificial. 12929 (function_decl::parameter::priv::artificial_): Remove this data 12930 member. 12931 (function_decl::parameter::priv::priv): Adjust to the removal of 12932 function_decl::parameter::priv::artificial_. This constructor 12933 does not take an "is_artificial" flag anymore. 12934 (function_decl::parameter::parameter): Adjust to the removal of 12935 the is_artificial flag from the arguments of the constructor of 12936 function_decl::parameter::parameter::priv. 12937 (function_decl::parameter::get_artificial): Remove this member 12938 function. 12939 * src/abg-reporter-priv.h (maybe_report_unreachable_type_changes): 12940 Declare new function. 12941 * src/abg-reporter-priv.cc 12942 (maybe_report_unreachable_type_changes): Define new function. 12943 * src/abg-default-reporter.cc (default_reporter::report): In the 12944 overload for corpus_diff&, report added/removed/changed types that 12945 are not reachable from global functions and variables using the 12946 new function maybe_report_unreachable_type_changes. 12947 * src/abg-leaf-reporter.cc (leaf_reporter::report): In the 12948 overload for corpus_diff, report changes to types unreachable from 12949 global functions or variables, using the new function 12950 maybe_report_unreachable_type_changes. 12951 * src/abg-dwarf-reader.cc (build_ir_node_from_die): When the user 12952 requests that all types be loaded, record relevant types as 12953 reachable from global functions and variables. 12954 (build_enum_type, add_or_update_class_type) 12955 (add_or_update_union_type): Read the 'is-artificial' DWARF 12956 attribute and set the corresponding decl_base property 12957 accordingly. 12958 (finish_member_function_reading, strip_typedef) 12959 (function_type::function_type): Adjust using 12960 decl_base::get_is_artificial, rather than 12961 function_decl::parameter::get_artificial. 12962 * include/abg-reader.h 12963 (consider_types_not_reachable_from_public_interfaces): Declare new 12964 function. 12965 * src/abg-reader.cc 12966 (read_context::m_tracking_non_reachable_types): Add new data 12967 member. 12968 (read_context::read_context): Initialize it. 12969 (read_context::tracking_non_reachable_types): Define accessors for 12970 the new data member above. 12971 (read_is_declaration_only): Re-indent. 12972 (read_is_artificial): Define new helper function. 12973 (build_function_parameter): Use the new read_is_artificial 12974 function here, rather than open-coding it. 12975 (build_enum_type_decl, build_class_decl, build_union_decl): 12976 Support reading the 'is-artificial' property by using the new 12977 read_is_artificial function. 12978 (read_corpus_from_input): If the user wants us to take 12979 non-reachable types into account, then make sure we do so. 12980 (read_tracking_non_reachable_types, read_is_non_reachable_type): 12981 Define new static functions. 12982 (handle_element_node, build_type): Read the "is-non-reachable" 12983 attribute on type element nodes if the user wants us to track 12984 non-reachable types. 12985 (consider_types_not_reachable_from_public_interfaces): Define new 12986 function. 12987 * src/abg-writer.cc (write_is_artificial): Define new static 12988 helper function. 12989 (annotate): Adjust using decl_base::get_is_artificial rather than 12990 function_decl::parameter::get_artificial. 12991 (write_enum_type_decl, write_class_decl_opening_tag) 12992 (write_union_decl_opening_tag): Support writing the 12993 "is-artificial" property, using the new write_is_artificial 12994 function. 12995 (write_function_type): Adjust this to use the new 12996 write_is_artificial rather than open-coding writing the 12997 'is-artificial' attribute. 12998 (write_is_non_reachable) 12999 (write_tracking_non_reachable_types): Define new static functions. 13000 (write_enum_type_decl, write_class_decl_opening_tag) 13001 (write_union_decl_opening_tag): Write the 'is-no-reachable' 13002 attribute when applicable. 13003 (write_corpus, write_corpus_group): Write the 13004 'tracking-non-reachable-types' attribute when applicable. 13005 * tools/abidiff.cc (options::options): Initialize ... 13006 (options::show_all_types): ... new data member. 13007 (display_usage): Add help string from the new 13008 --non-reachable-types option. 13009 (parse_command_line): Parse the new --non-reachable-types option. 13010 (set_diff_context_from_opts): Set the 13011 dwarf_reader::read_context::show_unreachable_types property. 13012 (set_native_xml_reader_options): Define new 13013 static function. 13014 (main): Load all types when analyzing the DWARF or the ABIXML 13015 files, if the user wants us to do so. 13016 * tools/abipkgdiff.cc (options::show_all_types): Define new data 13017 member. 13018 (options::options): Initialize it. 13019 (parse_command_line): Parse the --non-reachable-types option to 13020 set the options::show_all_types data member. 13021 (display_usage): Add a help string for the new 13022 --non-reachable-types option. 13023 (set_diff_context_from_opts): Set the 13024 dwarf_reader::read_context::show_unreachable_types property based 13025 on the options::show_all_type data member. 13026 (compare): Configure the read context to load all types while 13027 analyzing the DWARF info, depending on the options::show_all_type 13028 data member. 13029 * doc/manuals/abidiff.rst: Document the new --non-reachable-types 13030 option added to abidiff above. 13031 * doc/manuals/abipkgdiff.rst: Add documentation for the 13032 --non-reachable-types option. 13033 * tests/data/test-diff-suppr/test47-non-reachable-types-v{0,1}.c: 13034 Source code files of test binary input. 13035 * tests/data/test-diff-suppr/test47-non-reachable-types-suppr-{1,2,3,4,5}.txt: 13036 New test input files. 13037 * tests/data/test-diff-suppr/test47-non-reachable-types-report-{1,2,3,4,5,6,7,8,9,10}.txt: 13038 New test reference output files. 13039 * tests/data/test-diff-suppr/test47-non-reachable-types-v{0,1}.o.alltypes.abixml: 13040 New test input abixml. 13041 * tests/data/Makefile.am: Add the new test material to source 13042 distribution. 13043 * tests/test-diff-suppr.cc (in_out_specs): Add the new tests above 13044 to this test harness. 13045 * tests/data/test-abidiff/test-struct1-report.txt: Adjust. 13046 * tests/data/test-diff-pkg/PR24690/flatpak-debuginfo-1.2.4-3.fc30.x86_64.rpm: 13047 New input binary RPM. 13048 * tests/data/test-diff-pkg/PR24690/flatpak-debuginfo-1.4.0-1.fc30.x86_64.rpm: 13049 Likewise. 13050 * tests/data/test-diff-pkg/PR24690/flatpak-devel-1.2.4-3.fc30.x86_64.rpm: 13051 Likewise. 13052 * tests/data/test-diff-pkg/PR24690/flatpak-devel-1.4.0-1.fc30.x86_64.rpm: 13053 Likewise. 13054 * tests/data/test-diff-pkg/PR24690/flatpak-libs-1.2.4-3.fc30.x86_64.rpm: 13055 Likewise. 13056 * tests/data/test-diff-pkg/PR24690/flatpak-libs-1.4.0-1.fc30.x86_64.rpm: 13057 Likewise. 13058 * tests/data/test-diff-pkg/PR24690/flatpak-libs-debuginfo-1.2.4-3.fc30.x86_64.rpm: 13059 Likewise. 13060 * tests/data/test-diff-pkg/PR24690/flatpak-libs-debuginfo-1.4.0-1.fc30.x86_64.rpm: 13061 Likewise. 13062 * tests/data/test-diff-pkg/PR24690/PR24690-report-0.txt: New test 13063 reference output. 13064 * tests/data/Makefile.am: Add the new test material above to 13065 source distribution. 13066 * tests/test-diff-pkg.cc (in_out_specs): Add the new test material 13067 above to this test harness. 13068 130692019-11-26 Dodji Seketeli <dodji@redhat.com> 13070 13071 Small style fix in abg-default-reporter.cc 13072 * src/abg-default-reporter.cc (default_reporter::report): In the 13073 overload for corpus_diff, break a line longer than 80 characters. 13074 130752019-10-21 Matthias Maennich <maennich@google.com> 13076 13077 dwarf-reader: add support for symbol namespaces in ksymtab entries 13078 * src/abg-dwarf-reader.cc 13079 (read_context::try_reading_first_ksymtab_entry): Add 13080 symbol_offset parameter. 13081 (read_context::get_ksymtab_entry_size): Add support for variable 13082 size ksymtab entries due to symbol namespaces. 13083 (load_kernel_symbol_table): only load nb_entries when needed 13084 [1] https://lore.kernel.org/lkml/20190906103235.197072-1-maennich@google.com/ 13085 130862019-10-21 Matthias Maennich <maennich@google.com> 13087 13088 dwarf-reader: refactor try_reading_first_ksymtab_entry_using{pre,}_v4_19_format 13089 * src/abg-dwarf-reader.cc(try_reading_first_ksymtab_entry): 13090 New function to consolidate functionality for 13091 try_reading_first_ksymtab_entry_using_{pre,}v4_19_format functions. 13092 (try_reading_first_ksymtab_entry_using_v4_19_format, 13093 try_reading_first_ksymtab_entry_using_pre_v4_19_format): 13094 refactor to use try_reading_first_ksymtab_entry 13095 130962019-10-28 Dodji Seketeli <dodji@redhat.com> 13097 13098 Bug 25128 - Handle decl-only classes that differ only in size 13099 * include/abg-comp-filter.h (is_decl_only_class_with_size_change): 13100 Declare an overload. 13101 * include/abg-fwd.h (look_through_decl_only_class): Declare an 13102 overload. 13103 * src/abg-comp-filter.cc (is_decl_only_class_with_size_change): 13104 Define an overload that takes class_or_union& type. Re-write the 13105 previous overload in terms of this new one. 13106 * src/abg-ir.cc (look_through_decl_only_class): Define a new 13107 overload that takes a class_or_union&. Rewrite the previous 13108 overload in terms of this one. 13109 (equals): In the overload for class_or_union&, use 13110 is_decl_only_class_with_size_change to detect cases of decl-only 13111 classes that differ only by their size attribute and avoid 13112 comparing them. 13113 * tests/data/test-annotate/test21-pr19092.so.abi: Adjust. 13114 * tests/data/test-read-dwarf/test21-pr19092.so.abi: Likewise. 13115 * tests/data/test-diff-filter/test41-report-0.txt: Likewise. 13116 131172019-10-24 Dodji Seketeli <dodji@redhat.com> 13118 13119 Bug 25128 - Leaf diff reporter shouldn't compare decl-only classes 13120 * include/abg-comp-filter.h (is_decl_only_class_with_size_change): 13121 Declare new function. 13122 * src/abg-comp-filter.cc (is_decl_only_class_with_size_change): 13123 Define new function. 13124 * src/abg-comparison.cc 13125 (leaf_diff_node_marker_visitor::visit_begin): Use the newly 13126 defined is_decl_only_class_with_size_change above to ignore bogus 13127 decl-only classes with a size change. 13128 * tests/data/test-diff-suppr/test45-abi-report-1.txt: New test input. 13129 * tests/data/test-diff-suppr/test45-abi-wl.xml: Likewise. 13130 * tests/data/test-diff-suppr/test45-abi.xml: Likewise. 13131 * tests/data/test-diff-suppr/test45-abi.suppr.txt: New reference 13132 output for the test input above. 13133 * tests/data/test-diff-suppr/test46-PR25128-base.xml: New test input. 13134 * tests/data/test-diff-suppr/test46-PR25128-new.xml: Likewise. 13135 * tests/data/test-diff-suppr/test46-PR25128-report-1.txt: New 13136 reference input for the test input above. 13137 * tests/data/Makefile.am: Add the new test material to source distribution. 13138 * tests/test-diff-suppr.cc (in_out_spec): Add the new test input 13139 above to this test harness. 13140 131412019-10-18 Dodji Seketeli <dodji@redhat.com> 13142 13143 Bug 25095 - Apply symbol white lists to ELF symbols 13144 * src/abg-tools-utils.cc (gen_suppr_spec_from_kernel_abi_whitelist): 13145 Generate a suppression specification which considers the name of 13146 the symbol associated to a function/variable, rather than just the 13147 name of said function/variable. 13148 131492019-10-18 Dodji Seketeli <dodji@redhat.com> 13150 13151 Support symbol_name_not_regexp in [suppress_{function, variable}] 13152 * doc/manuals/libabigail-concepts.rst: Document the new 13153 symbol_name_not_regexp properties for the 13154 suppress_{function,variable} directives. 13155 * include/abg-suppression.h 13156 ({function,variable}_suppression::{g,s}et_symbol_name_not_regex_str): 13157 Declare new member functions. 13158 * src/abg-dwarf-reader.cc 13159 (read_context::is_elf_symbol_suppressed): Define new member functions. 13160 (read_context::{load_symbol_maps_from_symtab_section, 13161 populate_symbol_map_from_ksymtab, 13162 populate_symbol_map_from_ksymtab_reloc}): Drop suppressed symbols 13163 when reading symbol tables. 13164 ({function,variable}_is_suppressed): Consider that in C, the 13165 linkage name is _by default_ the same as the function/variable 13166 name. Remove local variable. 13167 * include/abg-ir.h (elf_symbol_is_{function,variable}): Add ... 13168 * src/abg-ir.cc (elf_symbol_is_{function,variable}): ... new 13169 functions. 13170 * src/abg-reader.cc (build_elf_symbol): Take an additional boolean 13171 to detect and drop suppressed symbols. 13172 (build_elf_symbol_db): Adjust the call to build_elf_symbol to make 13173 it detect and drop suppressed symbols. 13174 (read_corpus_from_input): Be mindful that the set of symbols for a 13175 given corpus can be empty because of suppression specifications. 13176 * src/abg-suppression-priv.h 13177 ({function,variable}_suppression::priv::symbol_name_not_regex[_str_]): 13178 Add new data members. 13179 (function,variable}_suppression::priv::get_symbol_name_not_regex): 13180 Add new member functions. 13181 ({function,variable}_is_suppressed): Guard against empty name. 13182 (is_elf_symbol_suppressed): Define new function template. 13183 * src/abg-suppression.cc 13184 ({function,variable}_suppression::{g,s}et_symbol_name_not_regex_str): 13185 Define new member functions. 13186 ({function,variable}_suppression::suppresses_function) 13187 (suppression_matches_{function,variable}_sym_name) 13188 (read_{function,variable}_suppression): Support the new 13189 "symbol_name_not_regex" property. 13190 * tests/data/test-diff-suppr/test44-suppr-sym-name-not-regexp-report-1.txt: 13191 New test reference report. 13192 * tests/data/test-diff-suppr/test44-suppr-sym-name-not-regexp-report-2.txt: 13193 Likewise. 13194 * tests/data/test-diff-suppr/test44-suppr-sym-name-not-regexp-v{0,1}.c: 13195 Sources of the new test input. 13196 * tests/data/test-diff-suppr/test44-suppr-sym-name-not-regexp-v{0,1}.o: 13197 New test input binaries. 13198 * tests/data/test-diff-suppr/test44-suppr-sym-name-not-regexp-v{0,1}.o.abi: 13199 New test input abixml files. 13200 * tests/data/test-diff-suppr/test44-suppr-sym-name-not-regexp.suppr.txt: 13201 Next test suppression specification. 13202 * tests/data/Makefile.am: Add the new test material above to 13203 source distribution. 13204 * tests/test-diff-suppr.cc (in_out_specs): Add the input tests 13205 above to the test harness. 13206 132072019-10-24 Dodji Seketeli <dodji@redhat.com> 13208 13209 [abg-comparison.cc] Fix comments typo 13210 * src/abg-comparison.cc 13211 (leaf_diff_node_marker_visitor::visit_begin): Fix typo in comment. 13212 132132019-10-04 Matthias Maennich <maennich@google.com> 13214 13215 kmidiff: fix help message 13216 * tools/kmidiff.c (display_usage): add missing line breaks to 13217 help text 13218 132192019-10-04 Matthias Maennich <maennich@google.com> 13220 13221 dwarf-reader: read_corpus_from_elf: unconditionally load elf properties 13222 * src/abg-dwarf-reader.cc (read_corpus_from_elf): 13223 unconditionally load elf properties into context 13224 132252019-10-04 Dodji Seketeli <dodji@redhat.com> 13226 13227 PR25058 - Better support fn DIEs referring to symbols using DW_AT_ranges 13228 * src/abg-dwarf-reader.cc 13229 (read_context::get_first_exported_fn_address_from_DW_AT_ranges): 13230 Rename read_context::get_first_address_from_DW_AT_ranges into 13231 this. Walk through the addresses referred to by the DW_AT_ranges 13232 attribute until we find one that is for an exported function 13233 symbol, rather than just picking the first address of the set. 13234 (read_context::get_function_address): Adjust. 13235 132362019-10-03 Dodji Seketeli <dodji@redhat.com> 13237 13238 PR25058 - Support decl DIEs referring to symbols using DW_AT_ranges 13239 * src/abg-dwarf-reader.cc 13240 (read_context::get_first_address_from_DW_AT_ranges): Define new 13241 member function. 13242 (read_context::get_function_address): Use the new 13243 read_context::get_first_address_from_DW_AT_ranges here. 13244 * tests/data/test-diff-dwarf/PR25058-liblttng-ctl-report-1.txt: 13245 New reference test output. 13246 * tests/data/test-diff-dwarf/PR25058-liblttng-ctl.so: New test 13247 input binary. 13248 * tests/data/test-diff-dwarf/PR25058-liblttng-ctl2.10.so: New test 13249 input binary. 13250 * tests/data/Makefile.am: Add the new test materials above to 13251 source distribution. 13252 * tests/test-diff-dwarf.cc (in_out_specs): Add the new input test 13253 input binary files to this test harness. 13254 132552019-10-01 Dodji Seketeli <dodji@redhat.com> 13256 13257 Fix thinkos in DW_FORM_strx detection in configure.ac 13258 * configure.ac: Fix thinko when setting the HAVE_DW_FORM_strx 13259 macro. 13260 132612019-10-01 Dodji Seketeli <dodji@redhat.com> 13262 13263 Fix a typo in a comment of abg-dwar-reader.cc 13264 * src/abg-dwarf-reader.cc (compare_dies_string_attribute_value): 13265 Fix a typo in the comment of this function. 13266 132672019-09-30 Dodji Seketeli <dodji@redhat.com> 13268 13269 PR25042 - Support string form DW_FORM_strx{1,4} from DWARF 5 13270 * configure.ac: Detect the presence of the DW_FORM_strx{1,4} 13271 enumerators. 13272 * src/abg-dwarf-reader.cc (form_is_DW_FORM_strx): Define new 13273 function. 13274 (compare_dies_string_attribute_value): Use the new 13275 form_is_DW_FORM_strx here. 13276 * tests/data/Makefile.am: Add the new test input files below to 13277 source distribution. 13278 * tests/data/test-read-dwarf/PR25042-libgdbm-clang-dwarf5.so.6.0.0: 13279 New binary test input file. 13280 * tests/data/test-read-dwarf/PR25042-libgdbm-clang-dwarf5.so.6.0.0.abi: 13281 Reference output of the new binary test input file. 13282 * tests/test-read-dwarf.cc (in_out_specs): Add the input test 13283 files above to the test harness, for platforms that support the 13284 DW_FORM_strx form. 13285 132862019-09-04 Dodji Seketeli <dodji@redhat.com> 13287 13288 Support the "name_not_regexp" property in the [suppress_type] section 13289 * doc/manuals/libabigail-concepts.rst: Update this to document the 13290 new name_not_regexp property of the suppress_type directive. 13291 * include/abg-suppression.h 13292 (type_suppression::{g,s}et_type_name_not_regex_str): Declare new accessors. 13293 * src/abg-suppression-priv.h 13294 (type_suppression::priv::{type_name_not_regex_str_, 13295 type_name_not_regex_}): Define new data members. 13296 (type_suppression::priv::{get_type_name_not_regex, 13297 set_type_name_not_regex, get_type_name_not_regex_str, 13298 set_type_name_not_regex_str}): Define new member functions. 13299 * src/abg-suppression.cc 13300 (type_suppression::get_type_name_regex_str): Fix comments. 13301 (type_suppression::{set_type_name_not_regex_str, 13302 get_type_name_not_regex_str}): Define new data members. 13303 (suppression_matches_type_name): Adapt to support the new 13304 type_name_not_regex property. 13305 (read_type_suppression): Support parsing the type_name_not_regexp 13306 property. 13307 * tests/data/test-diff-suppr/test42-negative-suppr-type-report-0.txt: 13308 New test reference output. 13309 * tests/data/test-diff-suppr/test42-negative-suppr-type-report-1.txt: Likewise. 13310 * tests/data/test-diff-suppr/test42-negative-suppr-type-suppr-1.txt: 13311 New test input. 13312 * tests/data/test-diff-suppr/test42-negative-suppr-type-suppr-2.txt: Likewise. 13313 * tests/data/test-diff-suppr/test42-negative-suppr-type-v0.{cc, o}: Likewise. 13314 * tests/data/test-diff-suppr/test42-negative-suppr-type-v1.{cc, 13315 o}: Likewise. 13316 * tests/data/Makefile.am: Add the test files above to source 13317 distribution. 13318 * tests/test-diff-suppr.cc (int_out_specs): Add the new tests to 13319 the harness. 13320 133212019-09-04 Dodji Seketeli <dodji@redhat.com> 13322 13323 Better propagation of suppressed-ness to function types 13324 * src/abg-comparison.cc 13325 (suppression_categorization_visitor::visit_end): Propagate 13326 suppression-ness from suppressed function type diff node to its 13327 parent function node if the latter doesn't have any local non-type 13328 change. 13329 * tests/data/test-diff-suppr/test43-suppr-direct-fn-subtype-report-1.txt: 13330 New test reference output. 13331 * tests/data/test-diff-suppr/test43-suppr-direct-fn-subtype-suppr-1.txt: 13332 New test input suppression file. 13333 * tests/data/test-diff-suppr/test43-suppr-direct-fn-subtype-v{0,1}.cc: 13334 Source code of input binary file. 13335 * tests/data/test-diff-suppr/test43-suppr-direct-fn-subtype-v{0,1}.o: 13336 Input binary files. 13337 * tests/data/Makefile.am: Add the new test input files above to 13338 source distribution. 13339 * tests/test-diff-suppr.cc (in_out_specs): Add the test input to 13340 test harness. 13341 133422019-09-04 Dodji Seketeli <dodji@redhat.com> 13343 13344 [has_type_change] Better detect type size changes 13345 * src/abg-comp-filter.cc (has_type_change): Support function 13346 parameters. 13347 133482019-09-23 Dodji Seketeli <dodji@redhat.com> 13349 13350 Fix reading of relocation sections when endianness mismatches 13351 * src/abg-dwarf-reader.cc 13352 (read_context::{get_ksymtab_format_module, 13353 populate_symbol_map_from_ksymtab_reloc}): Use elf_getdata rather 13354 than elf_rawdata. 13355 133562019-09-20 Dodji Seketeli <dodji@redhat.com> 13357 13358 Guard testing v4.19+ AARCH64 kernel module loading for EL6 support 13359 * tests/test-read-dwarf.cc: Do not run the test on 13360 PR25007-sdhci.ko if the macros R_AARCH64_PREL32 and 13361 R_AARCH64_ABS64 are not defined. 13362 133632019-09-19 Dodji Seketeli <dodji@redhat.com> 13364 13365 Remove the elf_symbol::get_value property 13366 * include/abg-ir.h (elf_symbol::{elf_symbol, create}): Remove the 13367 'val' parameter. 13368 * src/abg-dwarf-reader.cc (elf_symbol::get_value): Remove this 13369 member function declaration. 13370 (lookup_symbol_from_sysv_hash_tab) 13371 (lookup_symbol_from_gnu_hash_tab, lookup_symbol_from_symtab) 13372 (create_default_var_sym, create_default_fn_sym) 13373 (read_context::lookup_elf_symbol_from_index): Adjust calls to 13374 creating elf_symbol instances. 13375 * src/abg-ir.cc (elf_symbol::priv::value_): Remove this data 13376 member. 13377 (elf_symbol::{priv::priv, elf_symbol, create): Adjust. 13378 * src/abg-reader.cc (build_elf_symbol): Likewise. 13379 133802019-09-19 Dodji Seketeli <dodji@redhat.com> 13381 13382 Bug 25007 - Don't use section-relative symbol values on ET_REL binaries 13383 * src/abg-dwarf-reader.cc 13384 (read_context::{lookup_native_elf_symbol_from_index, 13385 maybe_adjust_et_rel_sym_addr_to_abs_addr}): Define new member 13386 functions. 13387 (read_context::lookup_elf_symbol_from_index): Add a new overload. 13388 Write the old overloads in terms of the new one. 13389 (read_context::{load_symbol_maps_from_symtab_section, 13390 populate_symbol_map_from_ksymtab_reloc}): Use the new 13391 maybe_adjust_et_rel_sym_addr_to_abs_addr function to translate the 13392 symbol value/address into a binary-relative address before adding 13393 it to the addr->sym maps. 13394 (read_context::maybe_adjust_{fn, var}_sym_address): Do not adjust 13395 DWARF-referred-to addresses of ET_REL symbols anymore. 13396 * tests/data/test-read-dwarf/PR25007-sdhci.ko: New binary test input. 13397 * tests/data/test-read-dwarf/PR25007-sdhci.ko.abi: ABI 13398 representation of the above. 13399 * tests/test-read-dwarf.cc: Add the new test input to the harness. 13400 * tests/data/test-diff-dwarf/test28-vtable-changes-report-0.txt: Adjust. 13401 * tests/data/test-diff-filter/test20-inline-report-0.txt: Likewise. 13402 * tests/data/test-diff-filter/test20-inline-report-1.txt: Likewise. 13403 * tests/data/test-diff-filter/test41-report-0.txt: Likewise. 13404 * tests/data/test-diff-filter/test9-report.txt: Likewise. 13405 134062019-09-18 Dodji Seketeli <dodji@redhat.com> 13407 13408 Detect the presence of R_AARCH64_{ABS64, PREL32} macros 13409 * configure.ac: Define macros HAVE_R_AARCH64_{ABS64, PREL32}_MACRO 13410 if the macros R_AARCH64_{ABS64, PREL32} are present. 13411 * src/abg-dwarf-reader.cc 13412 (read_context::get_ksymtab_format_module): Conditionalize the use 13413 of R_AARCH64_{ABS64, PREL32} using HAVE_R_AARCH64_{ABS64, PREL32}_MACRO. 13414 134152019-09-03 Jessica Yu <jeyu@kernel.org> 13416 13417 Support pre and post v4.19 ksymtabs for Linux kernel modules 13418 * include/abg-ir.h (elf_symbol::{elf_symbol, create}): Take new 13419 symbol value and shndx parameters. 13420 (elf_symbol::{get_value, get_shndx}): Declare new accessors. 13421 * src/abg-ir.cc (elf_symbol::priv::{value_, shndx_}): New data 13422 members. 13423 (elf_symbol::priv::priv): Adjust. 13424 (elf_symbol::elf_symbol): Take new value and is_linux_string_cst 13425 parameters. 13426 (elf_symbol::create): Likewise. 13427 (elf_symbol::{get_value, get_is_linux_string_cst}): Define new 13428 accessors. 13429 * src/abg-reader.cc (build_elf_symbol): Adjust. 13430 * src/abg-dwarf-reader.cc (binary_is_linux_kernel) 13431 (binary_is_linux_kernel): New static functions. 13432 (lookup_symbol_from_sysv_hash_tab) 13433 (lookup_symbol_from_gnu_hash_tab) 13434 (lookup_symbol_from_symtab): Adjust. 13435 (read_context::{ksymtab_reloc_section_, 13436 ksymtab_gpl_reloc_section_, ksymtab_strings_section_}): New data 13437 members. 13438 (read_context::read_context): Initialize ksymtab_reloc_section_, 13439 ksymtab_gpl_reloc_section_, ksymtab_strings_section_. 13440 (read_context::{find_ksymtab_reloc_section, 13441 find_ksymtab_gpl_reloc_section, find_ksymtab_strings_section, 13442 find_any_ksymtab_reloc_section, get_ksymtab_format_module, 13443 populate_symbol_map_from_ksymtab, 13444 populate_symbol_map_from_ksymtab_reloc, is_linux_kernel_module}): 13445 New member functions. 13446 (read_context::load_kernel_symbol_table): Adjust to call either 13447 populate_symbol_map_from_ksymtab{_reloc,} depending on ksymtab 13448 format. 13449 (read_context::get_ksymtab_format): Adjust to call 13450 get_ksymtab_format_module for linux kernel modules. 13451 (read_context::lookup_elf_symbol_from_index): Adjust. 13452 (create_default_var_sym, create_default_fn_sym): Adjust. 13453 134542019-08-02 Dodji Seketeli <dodji@redhat.com> 13455 13456 Serialize canonical types to avoid testing if types have been emitted 13457 * include/abg-fwd.h (is_decl_slow) 13458 (peel_pointer_or_reference_type): Declare new functions. 13459 * include/abg-ir.h (struct canonical_type_hash): Define new type. 13460 (type_base_ptr_set_type, type_base_ptrs_type) 13461 (type_base_sptrs_type, canonical_type_sptr_set_type): Define new 13462 typedefs. 13463 (environment::get_canonical_types_map): Declare new member 13464 function. 13465 (scope_decl::{get_canonical_types, get_sorted_canonical_types}): 13466 Declare new member functions. 13467 * src/abg-ir.cc (is_ptr_ref_or_qual_type) 13468 (peel_pointer_or_reference_type, is_decl_slow): Define new 13469 functions. 13470 (environment::{get_canonical_types_map}): Define new member 13471 functions. 13472 (canonical_type_hash::operator()): Likewise. 13473 (scope_decl::{get_canonical_types, get_sorted_canonical_types}): 13474 Likewise. 13475 (struct type_topo_comp): Define new comparison functor type. 13476 (environment::{sorted_canonical_types_}): Define new data member. 13477 (scope_decl::priv::{canonical_types_, sorted_canonical_types_}): 13478 Likewise. 13479 (scope_decl::is_empty): Take the presence of canonical types into 13480 account when determining if a scope is empty or not. 13481 (is_decl): Make this work for cases where the artifact at hand is 13482 a type which has a declaration, as opposed to being a pure 13483 declaration like a variable or a function. 13484 (canonicalize): Add the canonical type the list of canonical types 13485 of its scope. 13486 * src/abg-dwarf-reader.cc (read_context::die_is_in_cplus_plus): 13487 Define new member function. 13488 * src/abg-writer.cc (write_type, write_canonical_types_of_scope): 13489 Define new static functions. 13490 (fn_type_ptr_set_type): Define new typedef. 13491 (write_context::{m_referenced_fn_types_set, 13492 m_referenced_non_canonical_types_set}): Add new data members. 13493 (write_context::m_referenced_types_set): Renamed 13494 m_referenced_types_map into this. 13495 (write_context::get_referenced_types): Adjust. 13496 (write_context::get_referenced_{function_types, 13497 non_canonical_types}): 13498 (write_context::record_type_as_referenced): Adjust to add the 13499 referenced type in the proper set which would be one of the three 13500 following: write_context::{get_referenced_types, 13501 get_referenced_function_types, 13502 get_referenced_non_canonical_types}. 13503 (write_context::{type_is_referenced, clear_referenced}): Adjust. 13504 (write_translation_unit): Use the new 13505 write_canonical_types_of_scope. Also emit declaration-only 13506 classes that have member types. Do not test if a given type of a 13507 given scope has been emitted, in general, as this was super slow 13508 given the number of types. Emit referenced function types (as 13509 these don't belong to any scope). Rather than using the expensive 13510 "is_function_type" on *all* the referenced types, just walk the 13511 set write_context::get_referenced_function_types. Likewise, 13512 rather than using type_base::get_naked_canonical_type on 13513 *all* the referenced types, just walk the set 13514 write_context::get_referenced_non_canonical_types 13515 (write_class): Use write_canonical_types_of_scope here. 13516 * tools/abilint.cc (main): Support linting corpus group abixml 13517 files. 13518 * tests/data/test-annotate/libtest23.so.abi: Adjust. 13519 * tests/data/test-annotate/libtest24-drop-fns-2.so.abi: Likewise. 13520 * tests/data/test-annotate/libtest24-drop-fns.so.abi: Likewise. 13521 * tests/data/test-annotate/test-anonymous-members-0.o.abi: Likewise. 13522 * tests/data/test-annotate/test0.abi: Likewise. 13523 * tests/data/test-annotate/test1.abi: Likewise. 13524 * tests/data/test-annotate/test13-pr18894.so.abi: Likewise. 13525 * tests/data/test-annotate/test14-pr18893.so.abi: Likewise. 13526 * tests/data/test-annotate/test15-pr18892.so.abi: Likewise. 13527 * tests/data/test-annotate/test17-pr19027.so.abi: Likewise. 13528 * tests/data/test-annotate/test18-pr19037-libvtkRenderingLIC-6.1.so.abi: Likewise. 13529 * tests/data/test-annotate/test19-pr19023-libtcmalloc_and_profiler.so.abi: Likewise. 13530 * tests/data/test-annotate/test2.so.abi: Likewise. 13531 * tests/data/test-annotate/test20-pr19025-libvtkParallelCore-6.1.so.abi: Likewise. 13532 * tests/data/test-annotate/test21-pr19092.so.abi: Likewise. 13533 * tests/data/test-annotate/test4.so.abi: Likewise. 13534 * tests/data/test-annotate/test6.so.abi: Likewise. 13535 * tests/data/test-annotate/test7.so.abi: Likewise. 13536 * tests/data/test-annotate/test8-qualified-this-pointer.so.abi: Likewise. 13537 * tests/data/test-read-dwarf/PR22015-libboost_iostreams.so.abi: Likewise. 13538 * tests/data/test-read-dwarf/PR22122-libftdc.so.abi: Likewise. 13539 * tests/data/test-read-dwarf/PR24378-fn-is-not-scope.abi: Likewise. 13540 * tests/data/test-read-dwarf/libtest23.so.abi: Likewise. 13541 * tests/data/test-read-dwarf/libtest24-drop-fns-2.so.abi: Likewise. 13542 * tests/data/test-read-dwarf/libtest24-drop-fns.so.abi: Likewise. 13543 * tests/data/test-read-dwarf/test0.abi: Likewise. 13544 * tests/data/test-read-dwarf/test1.abi: Likewise. 13545 * tests/data/test-read-dwarf/test10-pr18818-gcc.so.abi: Likewise. 13546 * tests/data/test-read-dwarf/test11-pr18828.so.abi: Likewise. 13547 * tests/data/test-read-dwarf/test12-pr18844.so.abi: Likewise. 13548 * tests/data/test-read-dwarf/test13-pr18894.so.abi: Likewise. 13549 * tests/data/test-read-dwarf/test14-pr18893.so.abi: Likewise. 13550 * tests/data/test-read-dwarf/test15-pr18892.so.abi: Likewise. 13551 * tests/data/test-read-dwarf/test16-pr18904.so.abi: Likewise. 13552 * tests/data/test-read-dwarf/test17-pr19027.so.abi: Likewise. 13553 * tests/data/test-read-dwarf/test18-pr19037-libvtkRenderingLIC-6.1.so.abi: Likewise. 13554 * tests/data/test-read-dwarf/test19-pr19023-libtcmalloc_and_profiler.so.abi: Likewise. 13555 * tests/data/test-read-dwarf/test2.so.abi: Likewise. 13556 * tests/data/test-read-dwarf/test20-pr19025-libvtkParallelCore-6.1.so.abi: Likewise. 13557 * tests/data/test-read-dwarf/test21-pr19092.so.abi: Likewise. 13558 * tests/data/test-read-dwarf/test22-pr19097-libstdc++.so.6.0.17.so.abi: Likewise. 13559 * tests/data/test-read-dwarf/test4.so.abi: Likewise. 13560 * tests/data/test-read-dwarf/test6.so.abi: Likewise. 13561 * tests/data/test-read-dwarf/test7.so.abi: Likewise. 13562 * tests/data/test-read-dwarf/test8-qualified-this-pointer.so.abi: Likewise. 13563 * tests/data/test-read-dwarf/test9-pr18818-clang.so.abi: Likewise. 13564 * tests/data/test-read-write/test10.xml: Likewise. 13565 * tests/data/test-read-write/test14.xml: Likewise. 13566 * tests/data/test-read-write/test15.xml: Likewise. 13567 * tests/data/test-read-write/test17.xml: Likewise. 13568 * tests/data/test-read-write/test18.xml: Likewise. 13569 * tests/data/test-read-write/test19.xml: Likewise. 13570 * tests/data/test-read-write/test2.xml: Likewise. 13571 * tests/data/test-read-write/test20.xml: Likewise. 13572 * tests/data/test-read-write/test21.xml: Likewise. 13573 * tests/data/test-read-write/test22.xml: Likewise. 13574 * tests/data/test-read-write/test23.xml: Likewise. 13575 * tests/data/test-read-write/test24.xml: Likewise. 13576 * tests/data/test-read-write/test25.xml: Likewise. 13577 * tests/data/test-read-write/test26.xml: Likewise. 13578 * tests/data/test-read-write/test27.xml: Likewise. 13579 * tests/data/test-read-write/test28-without-std-fns-ref.xml: Likewise. 13580 * tests/data/test-read-write/test28-without-std-vars-ref.xml: Likewise. 13581 * tests/data/test-read-write/test3.xml: Likewise. 13582 * tests/data/test-read-write/test6.xml: Likewise. 13583 135842019-07-24 Matthias Maennich <maennich@google.com> 13585 13586 abg-dwarf-reader: detect kernel modules without exports as such 13587 * src/abg-dwarf-reader.cc(is_linux_kernel_binary): consider 13588 binaries only having a .modinfo section to be kernel binaries 13589 Co-developed-by: Alessio Balsini <balsini@android.com> 13590 135912019-07-22 Matthias Maennich <maennich@google.com> 13592 13593 Ensure a consistent C++ standard use 13594 * configure.ac: add -std=c++11 flag to CXXFLAGS when compiling 13595 for C++11 13596 * src/Makefile.am: drop now obsolete setting of the -std flag 13597 * tests/Makefile.am: likewise 13598 Reported-by: Chun-Hung Wu <Chun-hung.Wu@mediatek.com> 13599 136002019-07-19 Dodji Seketeli <dodji@redhat.com> 13601 13602 Bug 24787 - Filter out enum changes into compatible integer types 13603 * include/abg-comparison.h (peel_typedef_or_qualified_type_diff): 13604 Declare new function. 13605 (peel_pointer_or_qualified_type_diff): Rename 13606 peel_pointer_or_qualified_type into this. 13607 * include/abg-fwd.h (is_enum_type): Declare a new overload for 13608 type_or_decl_base*. 13609 * src/abg-comp-filter.cc (has_harmless_enum_to_int_change): Define 13610 new static function. 13611 * src/abg-comparison.cc (categorize_harmless_diff_node): Use the 13612 new has_harmless_enum_to_int_change here. 13613 (peel_pointer_or_qualified_type_diff): Renamed 13614 peel_pointer_or_qualified_type into this. 13615 (is_diff_of_basic_type): Adjust. 13616 (peel_typedef_or_qualified_type_diff): Define new function. 13617 * test-diff-filter/PR24787-lib{one, two}.so: New test input 13618 binaries. 13619 * test-diff-filter/PR24787-{one, two}.c: Source files of the test 13620 input binaries above. 13621 * test-diff-filter/PR24787-report-0.txt: Test output reference. 13622 * tests/data/Makefile.am: Add the new testing material to source 13623 distribution. 13624 * tests/test-diff-filter.cc (in_out_specs): Add the new test to 13625 the test harness. 13626 136272019-07-19 Dodji Seketeli <dodji@redhat.com> 13628 13629 Add timing to the verbose logs of abidw 13630 * include/abg-tools-utils.h (class timer): Declare new type. 13631 (operator<<(ostream&, const timer&)): Declare new streaming 13632 operator for the new timer type. 13633 * src/abg-tools-utils.cc (struct timer::priv): Define new type. 13634 (timer::{timer, start, stop, value_in_seconds, value, 13635 value_as_string, ~timer}): Define member functions. 13636 (operator<<(ostream& o, const timer& t)): Define streaming 13637 operator. 13638 (build_corpus_group_from_kernel_dist_under): Add timing logs to 13639 the linux kernel reading process. 13640 * src/abg-dwarf-reader.cc 13641 (read_context::canonicalize_types_scheduled): Add timing logs to 13642 type canonicalization. 13643 (read_debug_info_into_corpus): Add timing logs for the whole debug 13644 info loading and internal representation building process. 13645 * tools/abidw.cc (load_corpus_and_write_abixml): Add timing logs 13646 for the binary loading and serizalization process. 13647 (load_kernel_corpus_group_and_write_abixml): Add timing logs the 13648 Linux Kernel binary loading and writing process. 13649 136502019-07-18 Dodji Seketeli <dodji@redhat.com> 13651 13652 [ir] Fix indentation and add comments 13653 * src/abg-ir.cc (types_defined_same_linux_kernel_corpus_public): 13654 Fix indentation and add comments. 13655 136562019-07-15 Dodji Seketeli <dodji@redhat.com> 13657 13658 Implement fast comparison of Linux Kernel types when applicable 13659 * include/abg-corpus.h (corpus::origin): Add a new 13660 LINUX_KERNEL_BINARY_ORIGIN enumerator. 13661 (corpus::{s,g}et_group): Declare new member 13662 functions. 13663 (class corpus): Make the corpus_group class friend of this one. 13664 (corpus_group::get_main_corpus): Declare new member function. 13665 * src/abg-corpus-priv.h (corpus::priv::group): Define new data 13666 member. 13667 (corpus::priv::priv): Initialize the new corpus::priv::group data 13668 member. 13669 * src/abg-corpus.cc (corpus::{g,s}et_group): Define new member 13670 functions. 13671 (corpus_group::get_main_corpus): Likewise. 13672 (corpus_group::add_corpus): Use the new corpus::set_group() here 13673 to to make the corpus be aware of the group it belongs to. 13674 * src/abg-dwarf-reader.cc (read_debug_info_into_corpus): Set the 13675 current corpus origin to the corpus::LINUX_KERNEL_BINARY_ORIGIN if 13676 we are looking at a Linux Kernel binary. 13677 (read_context::main_corpus_from_current_group): Use the 13678 corpus_group::get_main_corpus method. 13679 (should_reuse_type_from_corpus_group): Return the corpus group, 13680 rather than the main corpus. 13681 (read_debug_info_into_corpus): Add the current corpus to the 13682 current corpus group before the debug info reading is done. That 13683 way, the corpus group will be accessible from the current corpus 13684 during the construction of the internal representation. 13685 (read_and_add_corpus_to_group_from_elf): Add the corpus to the 13686 group only if it wasn't added to it before. 13687 * include/abg-ir.h (operator{==,!=}): Declare new deep equality 13688 and inequality operators for class_or_union_sptr and 13689 union_decl_sptr. 13690 * src/abg-ir.cc (types_defined_same_linux_kernel_corpus_public): 13691 Define a new static function. 13692 (type_base::get_canonical_type_for): Use the new 13693 types_defined_same_linux_kernel_corpus_public here to speed up 13694 type comparison. 13695 (equals): In the overload of class_or_union, use the new 13696 types_defined_same_linux_kernel_corpus_public as well, to speed up 13697 type comparison. 13698 (operator{==,!=}): Define new deep equality and inequality 13699 operators for class_or_union_sptr and union_decl_sptr. 13700 (maybe_update_types_lookup_map): In the overload function for 13701 type_decl_sptr, class_decl_sptr, union_decl_sptr, 13702 enum_type_decl_sptr, typedef_decl_sptr, qualified_type_def_sptr, 13703 reference_type_def_sptr, array_type_def_sptr, 13704 array_type_def::subrange_sptr, and function_type_sptr, update the 13705 type lookup maps of the containing corpus group as well, not just 13706 the ones of the current corpus. 13707 * src/abg-reader.cc (build_enum_type_decl): Forgot to set the 13708 "is-anonymous" flag. Oops, fix this. 13709 * tests/data/test-read-dwarf/PR22122-libftdc.so.abi: Adjust. 13710 * tests/data/test-read-dwarf/test10-pr18818-gcc.so.abi: Adjust. 13711 * tests/data/test-read-dwarf/test12-pr18844.so.abi: Adjust. 13712 * tests/data/test-read-dwarf/test22-pr19097-libstdc++.so.6.0.17.so.abi: Adjust. 13713 * tests/data/test-read-dwarf/test9-pr18818-clang.so.abi: Adjust. 13714 137152019-07-09 Matthias Maennich <maennich@google.com> 13716 13717 abg-tools-utils: add missing header include guards 13718 * include/abg-tools-utils.h: add header include guards 13719 137202019-07-05 Matthias Maennich <maennich@google.com> 13721 13722 Add compatibility layer for C++11 mode 13723 * include/abg-cxx-compat.h: new file introducing the abg_compat 13724 namespace to provide C++11 functionality from either std::tr1 13725 or std:: 13726 * include/Makefile.am: Add the new abg-cxx-compat.h to source 13727 distribution. 13728 * include/abg-comparison.h: replace std::tr1 usage by abg_compat 13729 and adjust includes accordingly: likewise 13730 * include/abg-diff-utils.h: likewise 13731 * include/abg-fwd.h: likewise 13732 * include/abg-ini.h: likewise 13733 * include/abg-interned-str.h: likewise 13734 * include/abg-ir.h: likewise 13735 * include/abg-libxml-utils.h: likewise 13736 * include/abg-libzip-utils.h: likewise 13737 * include/abg-reporter.h: likewise 13738 * include/abg-sptr-utils.h: likewise 13739 * include/abg-suppression.h: likewise 13740 * include/abg-tools-utils.h: likewise 13741 * include/abg-workers.h: likewise 13742 * src/abg-comp-filter.cc: likewise 13743 * src/abg-comparison-priv.h: likewise 13744 * src/abg-corpus.cc: likewise 13745 * src/abg-dwarf-reader.cc: likewise 13746 * src/abg-hash.cc: likewise 13747 * src/abg-ir.cc: likewise 13748 * src/abg-reader.cc: likewise 13749 * src/abg-suppression.cc: likewise 13750 * src/abg-tools-utils.cc: likewise 13751 * src/abg-writer.cc: likewise 13752 * tests/test-diff-filter.cc: likewise 13753 * tests/test-diff-pkg.cc: likewise 13754 * tests/test-read-dwarf.cc: likewise 13755 * tests/test-read-write.cc: likewise 13756 * tests/test-types-stability.cc: likewise 13757 * tests/test-write-read-archive.cc: likewise 13758 * tools/abicompat.cc: likewise 13759 * tools/abidiff.cc: likewise 13760 * tools/abidw.cc: likewise 13761 * tools/abilint.cc: likewise 13762 * tools/abipkgdiff.cc: likewise 13763 137642019-07-05 Matthias Maennich <maennich@google.com> 13765 13766 Update tests/.gitignore to ignore runtesttoolsutils 13767 * tests/.gitignore: ignore runtesttoolsutils 13768 137692019-07-05 Matthias Maennich <maennich@google.com> 13770 13771 Drop requirement to compile with GNU extensions 13772 * include/abg-tools-utils.h (get_stream): Change return type to 13773 std::fstream 13774 * src/abg-corpus.cc: remove unused #include of ext/stdio_filebuf.h 13775 * src/abg-tools-utils (temp_file::priv): remove filebuf_ member, 13776 and replace iostream_ by fstream_ with changing the shared_ptr 13777 type accordingly 13778 (temp_file::priv::priv): initialize fstream_ based on 13779 temporary file name 13780 (temp_file::priv::~priv): adjust destruction accordingly 13781 (temp_file::is_good): test the fstream rather than the fd 13782 (temp_file::get_stream): adjust return type to std::fstream 13783 and adjust implementation based on the changes in temp_file::priv 13784 * src/Makefile.am: remove gnu extension from c++ standard flag 13785 * tests/Makefile.am: likewise 13786 137872019-07-09 Dodji Seketeli <dodji@redhat.com> 13788 13789 Misc indent cleanup 13790 * src/abg-dwarf-reader.cc (addr_elf_symbol_sptr_map_sptr): Fix a 13791 typo in the comment of this typedef. 13792 * src/abg-ir.cc (hash_type_or_decl): Fix typo in a comment. 13793 * src/abg-writer.cc (write_translation_unit): Remove useless 13794 vertical space. 13795 137962019-07-08 Dodji Seketeli <dodji@redhat.com> 13797 13798 [xml-writer] Remove a useless kludge 13799 * src/abg-writer.cc (write_context::type_is_emitted): Remove 13800 useless kludge from here. 13801 138022019-07-08 Dodji Seketeli <dodji@redhat.com> 13803 13804 [xml-writter] Speedup function_type::get_cached_name 13805 * src/abg-ir.cc (function_type::get_cached_name): Really cache the 13806 computed name of function_type instances. 13807 138082019-07-08 Dodji Seketeli <dodji@redhat.com> 13809 13810 [xml-writter] Avoid using RTTI when dynamically hashing types 13811 * include/abg-fwd.h (hash_type): Declare new function. 13812 * src/abg-ir.cc (hash_type): Define new function. 13813 * src/abg-writer.cc (type_hasher::operator()): Use the new 13814 hash_type rather than the old hash_type_or_decl. 13815 138162019-07-08 Dodji Seketeli <dodji@redhat.com> 13817 13818 Implement a poor-man's RTTI for performance 13819 * include/abg-fwd.h (is_type_decl): Replace the overloads 13820 that takes a type_base* and/or a decl_base* by one that takes a 13821 type_or_decl_base*. 13822 * include/abg-ir.h (type_or_decl_base::type_or_decl_kind): Define 13823 new enum. 13824 (type_or_decl_base::{kind, runtime_type_instance, 13825 type_or_decl_base_pointer}): Declare new accessors. 13826 (operator{|,|=,&,&=): Declare new operators for the new 13827 type_or_decl_base::type_or_decl_kind enum. 13828 (global_scope::global_scope): Move the definition of this 13829 constructor to ... 13830 * src/abg-ir.cc (global_scope::global_scope): ... here. 13831 (type_or_decl_base::priv::{kind_, rtti_, type_or_decl_ptr_}): 13832 Add new data members. 13833 (type_or_decl_base::priv::priv): Take a 13834 type_or_decl_base::type_or_decl_kind enum. 13835 (type_or_decl_base::priv::kind): Define new accessors. 13836 (operator{|,|=,&,&=): Define new operators for the new 13837 type_or_decl_base::type_or_decl_kind enum. 13838 (type_or_decl_base::type_or_decl_base): Take a 13839 type_or_decl_base::type_or_decl_kind enum. 13840 (type_or_decl_base::{kind, runtime_type_instance, 13841 type_or_decl_base_pointer}): Define new accessors. 13842 (decl_base::decl_base, scope_decl::scope_decl) 13843 (type_base::type_base, scope_type_decl::scope_type_decl) 13844 (class_or_union::class_or_union) : Adjust to set the runtime type 13845 identifier of the instances of these types. 13846 (global_scope::global_scope, type_decl::type_decl) 13847 (qualified_type_def::qualified_type_def) 13848 (pointer_type_def::pointer_type_def) 13849 (reference_type_def::reference_type_def 13850 array_type_def::subrange_type::subrange_type) 13851 (array_type_def::array_type_def, enum_type_decl::enum_type_decl) 13852 (typedef_decl::typedef_decl, var_decl::var_decl) 13853 (function_type::function_type, method_type::method_type) 13854 (function_decl::function_decl) 13855 (function_decl::parameter::parameter, method_decl::method_decl) 13856 (class_decl::class_decl, class_decl::base_spec::base_spec) 13857 (union_decl::union_decl, template_decl::template_decl) 13858 (type_tparameter::type_tparameter) 13859 (non_type_tparameter::non_type_tparameter) 13860 (template_tparameter::template_tparameter) 13861 (type_composition::type_composition) 13862 (function_tdecl::function_tdecl, function_tdecl::function_tdecl) 13863 (class_tdecl::class_tdecl): 13864 Likewise and call runtime_type_instance() here to set the runtime 13865 type instance pointers of the current instance. 13866 (is_decl, is_type, is_class_type, is_pointer_type): Adjust to use 13867 the new poor-man's rtti machinery. 13868 (is_type_decl): Replace the overloads that takes a type_base* 13869 and/or a decl_base* by one that takes a type_or_decl_base*. 13870 (pointer_type_def::operator==, class_decl::operator==): Use the 13871 poor-man's rtti machinery to replace dynamic_cast. 13872 hash_type_or_decl: Replace dynamic_cast<const type_base> by 13873 is_type() and dynamic_cast<const decl_base*> by is_decl(). 13874 138752019-07-05 Dodji Seketeli <dodji@redhat.com> 13876 13877 [dwarf-reader] Make sure to canonicalize anonymous types 13878 * src/abg-dwarf-reader.cc (maybe_canonicalize_type): Add two new 13879 overloads. One that takes type_base_sptr, one that takes a 13880 Dwarf_Die* and type_base_sptr. These force canonicalization for 13881 anonymous types. 13882 (build_function_type): Schedule function types for 13883 canonicalization. 13884 (build_ir_node_from_die): For struct/classes and unions, use the 13885 new overload of maybe_canonicalize_type to schedule 13886 canonicalization. 13887 * tests/data/test-read-dwarf/PR22122-libftdc.so.abi: Adjust. 13888 * tests/data/test-read-dwarf/test10-pr18818-gcc.so.abi: Adjust. 13889 * tests/data/test-read-dwarf/test12-pr18844.so.abi: Adjust. 13890 * tests/data/test-read-dwarf/test22-pr19097-libstdc++.so.6.0.17.so.abi: Adjust. 13891 * tests/data/test-read-dwarf/test9-pr18818-clang.so.abi: Adjust. 13892 138932019-07-04 Dodji Seketeli <dodji@redhat.com> 13894 13895 [dwarf-reader] Constify the first parameter of maybe_canonicalize_type 13896 * src/abg-dwarf-reader.cc (maybe_canonicalize_type): Make the 13897 first parameter const. 13898 (read_context::{get_canonical_die, lookup_artifact_from_die, 13899 lookup_type_from_die, schedule_type_for_late_canonicalization}): 13900 Adjust. 13901 139022019-06-26 Dodji Seketeli <dodji@redhat.com> 13903 13904 Make abidiff --harmless show harmless changes in unions 13905 * include/abg-fwd.h (get_class_or_union_flat_representation): Add 13906 a "qualified_name" boolean parameter. 13907 * include/abg-ir.h ({type_or_decl_base, decl_base, type_decl, 13908 namespace_decl, array_type_def::subrange_type, array_type_def, 13909 enum_type_decl, typedef_decl, var_decl, function_decl, 13910 function_decl::parameter, function_type, method_type, class_decl, 13911 union_decl}::get_pretty_representation): Likewise. 13912 * src/abg-ir.cc ({type_or_decl_base, decl_base, type_decl, 13913 namespace_decl, array_type_def::subrange_type, array_type_def, enum_type_decl, 13914 typedef_decl, var_decl, function_decl, function_decl::parameter, 13915 function_type, method_type, class_decl, union_decl, 13916 }::get_pretty_representation): Adjust the code to emit qualified 13917 or non-qualified names depending on the new "qualified_name" 13918 boolean parameter. 13919 (get_class_or_union_flat_representation): Likewise. 13920 * src/abg-default-reporter.cc (default_reporter::report): Use 13921 get_class_or_union_flat_representation with the new 13922 "qualified_name" boolean set to false. 13923 * tests/data/test-diff-dwarf/test38-union-report-0.txt: Adjust. 13924 * tests/test-diff-filter.cc (in_out_specs): Run the test harness 13925 on test-PR24731-v{0,1}.o make abidiff use the --harmless option. 13926 139272019-06-26 Dodji Seketeli <dodji@redhat.com> 13928 13929 Bug 24731 - Wrongly reporting union members order change 13930 * include/abg-comp-filter.h (union_diff_has_harmless_changes): 13931 Declare new function and ... 13932 * src/abg-comp-filter.cc (union_diff_has_harmless_changes): 13933 ... define it here. 13934 (categorize_harmless_diff_node): Use the new 13935 union_diff_has_harmless_changes here. 13936 * include/abg-comparison.h (HARMLESS_UNION_CHANGE_CATEGORY): Add a 13937 new enumerator to diff_category enum. Adjust the value of the 13938 other enumerators. 13939 * src/abg-comparison.cc (get_default_harmless_categories_bitmap): 13940 Add the new HARMLESS_UNION_CHANGE_CATEGORY in here. 13941 (operator<<(ostream& o, diff_category c)): Support the new 13942 HARMLESS_UNION_CHANGE_CATEGORY. 13943 * tests/data/test-diff-filter/test-PR24731-report-0.txt: Likewise. 13944 * tests/data/test-diff-filter/test-PR24731-report-1.txt: Likewise. 13945 * tests/data/test-diff-filter/test-PR24731-v0.c: Likewise. 13946 * tests/data/test-diff-filter/test-PR24731-v0.o: Likewise. 13947 * tests/data/test-diff-filter/test-PR24731-v1.c: Likewise. 13948 * tests/data/test-diff-filter/test-PR24731-v1.o: Likewise. 13949 * tests/data/Makefile.am: Add the new test material above to 13950 source distribution. 13951 * tests/test-diff-filter.cc (in_out_spec): Add the new test input 13952 to this test harness. 13953 139542019-06-20 Dodji Seketeli <dodji@redhat.com> 13955 13956 Fully account for anonymous-ness of scopes when comparing decl names 13957 * include/abg-ir.h (decl_base::{get_has_anonymous_parent, 13958 set_has_anonymous_parent, 13959 get_is_anonymous_or_has_anonymous_parent}): Declare new member 13960 functions. 13961 * src/abg-ir.cc (decl_base::priv::has_anonymous_parent_): Define 13962 new data member. 13963 (decl_base::priv): Initialize the new data member. 13964 (decl_base::{get_has_anonymous_parent, set_has_anonymous_parent, 13965 get_is_anonymous_or_has_anonymous_parent}): Define new member 13966 functions. 13967 (equals): In the overload for decl_base, use the new 13968 decl_names_equal for decls that have anonymous scopes. 13969 (scope_decl::add_member_decl): Propagate the 13970 decl_base::has_anonymous_parent_ property. 13971 * include/abg-tools-utils.h 13972 (get_anonymous_struct_internal_name_prefix) 13973 (get_anonymous_union_internal_name_prefix) 13974 (get_anonymous_enum_internal_name_prefix, decl_names_equal): 13975 Declare new functions. 13976 * src/abg-comp-filter.cc (has_harmless_name_change): Handle the 13977 case where the name change is actually from an anonymous name to 13978 another one, using the new decl_names_equal function. 13979 * src/abg-dwarf-reader.cc 13980 (get_internal_anonymous_die_prefix_name): Renamed 13981 get_internal_anonynous_die_base_name into this. Use the new 13982 get_anonymous_{struct, union, enum}_internal_name_prefix functions 13983 here. 13984 (get_internal_anonymous_die_name, die_qualified_type_name) 13985 (build_enum_type, add_or_update_class_type) 13986 (add_or_update_union_type): Adjust. 13987 * src/abg-tools-utils.cc (get_anonymous_struct_internal_name_prefix) 13988 (get_anonymous_union_internal_name_prefix) 13989 (get_anonymous_enum_internal_name_prefix, decl_names_equal): 13990 Define new functions. 13991 * tests/test-tools-utils.cc: New test file. 13992 * tests/Makefile.am: Add new runtesttoolsutils test, built from 13993 test-tools-utils.cc. 13994 * tests/data/test-diff-dwarf/test46-rust-report-0.txt: Adjust. 13995 * tests/data/test-diff-pkg/spice-server-0.12.4-19.el7.x86_64-0.12.8-1.el7.x86_64-report-3.txt: 13996 Likewise. 13997 * tests/data/test-read-dwarf/PR22122-libftdc.so.abi: Likewise. 13998 139992019-06-12 Matthias Maennich <maennich@google.com> 14000 14001 abg-reporter.h: add missing includes / using declarations 14002 * include/abg-reporter.h: fix includes and using declarations 14003 140042019-06-17 Dodji Seketeli <dodji@redhat.com> 14005 14006 [dwarf-reader] Fix indentation in compare_dies_string_attribute_value 14007 * src/abg-dwarf-reader.cc (compare_dies_string_attribute_value): 14008 Fix indentation. 14009 140102019-06-17 Dodji Seketeli <dodji@redhat.com> 14011 14012 [dwarf-reader] Optimize speed of compare_as_decl_dies 14013 * src/abg-dwarf-reader.cc (die_is_class_type): Take a const 14014 pointer to Dwarf_Die. 14015 (compare_as_decl_dies): For classes/structs, call 14016 compare_dies_string_attribute_value just once to compare the 14017 DW_AT_name attribute values. 14018 140192019-06-13 Dodji Seketeli <dodji@redhat.com> 14020 14021 [dwarf-reader] Better use of linkage name for fn decl de-duplication 14022 * src/abg-dwarf-reader.cc (read_context::{die_is_in_c, 14023 die_is_in_c_or_cplusplus}): Define new member functions. 14024 (fn_die_equal_by_linkage_name): Define new static function. 14025 (compare_dies): In the case for for DW_TAG_subprogram, use the new 14026 fn_die_equal_by_linkage_name. 14027 * tests/data/test-annotate/test15-pr18892.so.abi: Adjust. 14028 * tests/data/test-annotate/test21-pr19092.so.abi: Adjust. 14029 * tests/data/test-read-dwarf/test15-pr18892.so.abi: Adjust. 14030 * tests/data/test-read-dwarf/test21-pr19092.so.abi: Adjust. 14031 140322019-06-13 Dodji Seketeli <dodji@redhat.com> 14033 14034 [dwarf-reader] Re-use function types inside a given TU 14035 * src/abg-dwarf-reader.cc (istring_fn_type_map_type): Declare new 14036 typedef. 14037 (die_is_function_type): Define new static function. 14038 (read_context::per_tu_repr_to_fn_type_maps_): Define new data 14039 member ... 14040 (read_context::per_tu_repr_to_fn_type_maps): ... and its accessor. 14041 (read_context::{associate_die_repr_to_fn_type_per_tu, 14042 lookup_fn_type_from_die_repr_per_tu}): Define new member 14043 functions. 14044 (build_function_type): Use the new 14045 read_context::lookup_fn_type_from_die_repr_per_tu and 14046 read_context::associate_die_repr_to_fn_type_per_tu functions, 14047 instead of read_context::lookup_type_from_die. 14048 * tests/data/test-annotate/test13-pr18894.so.abi: Adjust. 14049 * tests/data/test-annotate/test14-pr18893.so.abi: Adjust. 14050 * tests/data/test-annotate/test21-pr19092.so.abi: Adjust. 14051 * tests/data/test-read-dwarf/test13-pr18894.so.abi: Adjust. 14052 * tests/data/test-read-dwarf/test14-pr18893.so.abi: Adjust. 14053 * tests/data/test-read-dwarf/test16-pr18904.so.abi: Adjust. 14054 * tests/data/test-read-dwarf/test21-pr19092.so.abi: Adjust. 14055 140562019-06-03 Dodji Seketeli <dodji@redhat.com> 14057 14058 [dwarf-reader] const-ify Dwarf_Die* use in many places 14059 * src/abg-dwarf-reader.cc (get_parent_die, get_scope_die) 14060 (die_is_anonymous, die_is_type, die_is_decl, die_is_namespace) 14061 (die_is_pointer_type, pointer_or_qual_die_of_anonymous_class_type) 14062 (die_is_reference_type, die_is_pointer_or_reference_type) 14063 (die_is_qualified_type, die_has_object_pointer) 14064 (die_is_at_class_scope, die_unsigned_constant_attribute) 14065 (die_signed_constant_attribute, die_attribute_is_signed) 14066 (die_attribute_is_unsigned, die_attribute_has_no_signedness) 14067 (die_name, die_location, die_qualified_type_name) 14068 (die_qualified_decl_name, die_qualified_name) 14069 (die_qualified_type_name_empty) 14070 (die_return_and_parm_names_from_fn_type_die) 14071 (die_function_signature, die_function_type_is_method_type) 14072 (die_pretty_print_type, die_pretty_print_decl, die_pretty_print) 14073 (maybe_canonicalize_type, build_subrange_type) 14074 (build_subranges_from_array_type_die, compare_dies) 14075 (read_context::get_container) 14076 (read_context::compute_canonical_die_offset) 14077 (read_context::get_or_compute_canonical_die) 14078 (read_context::get_die_source) 14079 (read_context::get_die_qualified_type_name) 14080 (read_context::get_die_pretty_representation) 14081 (read_context::get_die_language, read_context::odr_is_relevant) 14082 (read_context::set_canonical_die_offset) 14083 (read_context::associate_die_to_type, die_is_anonymous) 14084 (die_string_attribute, die_constant_attribute) 14085 (die_attribute_has_form, die_linkage_name) 14086 (die_decl_file_attribute, die_die_attribute, die_size_in_bits) 14087 (die_is_decl, die_is_namespace) 14088 (pointer_or_qual_die_of_anonymous_class_type, die_is_array_type) 14089 (die_is_pointer_reference_or_typedef_type) 14090 (die_peel_pointer_and_typedef, die_function_type_is_method_type) 14091 (die_virtuality, die_is_virtual) 14092 (compare_dies_string_attribute_value, compare_dies_cu_decl_file) 14093 (die_location_expr, die_member_offset) 14094 (get_internal_anonynous_die_base_name, compare_as_decl_dies) 14095 (compare_as_type_dies): Const-ify the Dwarf_Die* parameter(s) of 14096 these functions. 14097 140982019-06-05 Dodji Seketeli <dodji@redhat.com> 14099 14100 Take anonymous scopes into account when comparing decls 14101 * include/abg-interned-str.h (interned_string::clear): Add new 14102 member function. 14103 * src/abg-ir.cc (equals): In the overload for decl_base, consider 14104 the scope of the current (anonymous) decl. If that scope is 14105 anonymous then take that into account as well. 14106 * tests/data/test-diff-pkg/spice-server-0.12.4-19.el7.x86_64-0.12.8-1.el7.x86_64-report-3.txt: 14107 Adjust. 14108 * tests/data/test-read-dwarf/PR22122-libftdc.so.abi: Likewise. 14109 141102019-05-21 Matthias Maennich <maennich@google.com> 14111 14112 .clang-format: Add more options for match existing coding style 14113 * .clang-format: Add options for ConstructorInitializers 14114 Set SortUsingDeclarations=false 14115 Set AlignConsecutiveDeclarations=true 14116 141172019-05-21 Matthias Maennich <maennich@google.com> 14118 14119 .gitignore: Add libabigail-?.* *.orig files 14120 * .gitignore: add entries for distribution artifacts 14121 * .gitignore: add *.orig files 14122 141232019-05-21 Matthias Maennich <maennich@google.com> 14124 14125 abg-writer: drop deprecated API 14126 * include/abg-fwd.h (ABG_DEPRECATED): Remove this macro. 14127 * include/abg-writer.h (write_translation_unit, write_corpus) 14128 (write_corpus_group): Drop the deprecated overloads of these 14129 declarations. 14130 * src/abg-writer.cc (write_translation_unit, write_corpus) 14131 (write_corpus_group): Drop the deprecated overloads of these 14132 definitions. 14133 141342019-05-21 Matthias Maennich <maennich@google.com> 14135 14136 abidw: add option to only emit file names (--short-locs) 14137 * include/abg-writer.h (set_short_locs): Declare new function. 14138 (set_common_options): Use it. 14139 set_opts 14140 * src/abg-writer.cc (write_context::m_short_locs): New data 14141 member. 14142 (write_context::write_context): Initialize it. 14143 (write_context::{g,s}et_short_locs): Define new accessors. 14144 (write_location, write_translation_unit, write_corpus): Honour the 14145 new write_context::get_short_locs property. 14146 (set_short_locs): Define new function. 14147 * tools/abidw.cc (options::short_locs): New data member. 14148 (display_usage): Help string for the new --no-show-locs option. 14149 (parse_command_line): Parse the new --no-show-locs option. 14150 141512019-05-21 Matthias Maennich <maennich@google.com> 14152 14153 abidw: add option to omit the compilation directory 14154 * include/abg-writer.h (set_write_comp_dir): Declare new function. 14155 (set_common_options): Use it. 14156 * src/abg-writer.cc (write_context::m_write_comp_dir): Define new 14157 data member. 14158 (write_context::write_context): Initialize it. 14159 (write_context::{g,s}et_write_comp_dir): Define new member 14160 accessors. 14161 (set_write_comp_dir): Define new free-form getter. 14162 (write_translation_unit): Teach to respect write_comp_dir flag of 14163 write_context. 14164 * tools/abidw.cc (options::write_corpus_path): Define new data 14165 member. 14166 (options::options): Initialize it. 14167 (display_usage): Add doc string for a new command line option: --no-comp-dir-path. 14168 (parse_command_line): Parse the new command line option --no-comp-dir-path. 14169 141702019-05-21 Matthias Maennich <maennich@google.com> 14171 14172 Make write_architecture and write_corpus_path flags in the write_context 14173 * include/abg-writer.h (set_write_architecture) 14174 (set_write_corpus_path): Declare new getter functions. 14175 (write_corpus): Take a new "member_of_group" argument. 14176 (set_common_options): Use set_write_{architecture, corpus_path} 14177 here. 14178 * src/abg-writer.cc (write_context::m_write_{architecture, 14179 corpus_path}}): Add new data members. 14180 (write_context::write_context): Initialize the new data members. 14181 (write_context::{s,g}et_write_{architecture, corpus}): Define new 14182 accessors. 14183 (set_write_{architecture, corpus}): Define new free-form getter 14184 functions. 14185 (write_corpus): Add flag to make aware if written as part of a 14186 group. 14187 * tools/abidw.cc (load_corpus_and_write_abixml) 14188 (load_kernel_corpus_group_and_write_abixml): Drop obsolete option 14189 handling as xml_writer::set_common_options now takes care of it. 14190 ldiff --git a/include/abg-writer.h b/include/abg-writer.h 14191 index 200b5f7..729b455 100644 14192 --- a/include/abg-writer.h 14193 +++ b/include/abg-writer.h 14194 @@ -53,6 +53,11 @@ set_show_locs(write_context& ctxt, bool flag); 14195 void 14196 set_annotate(write_context& ctxt, bool flag); 14197 +void 14198 +set_write_architecture(write_context& ctxt, bool flag); 14199 + 14200 +void 14201 +set_write_corpus_path(write_context& ctxt, bool flag); 14202 /// A convenience generic function to set common options (usually used 14203 /// by Libabigail tools) from a generic options carrying-object, into 14204 @@ -69,6 +74,8 @@ set_common_options(write_context& ctxt, const OPTS& opts) 14205 { 14206 set_annotate(ctxt, opts.annotate); 14207 set_show_locs(ctxt, opts.show_locs); 14208 + set_write_architecture(ctxt, opts.write_architecture); 14209 + set_write_corpus_path(ctxt, opts.write_corpus_path); 14210 } 14211 void 14212 @@ -105,7 +112,10 @@ write_corpus_to_archive(const corpus_sptr corp, 14213 const bool annotate = false); 14214 bool 14215 -write_corpus(write_context& ctxt, const corpus_sptr& corpus, unsigned indent); 14216 +write_corpus(write_context& ctxt, 14217 + const corpus_sptr& corpus, 14218 + unsigned indent, 14219 + bool member_of_group = false); 14220 bool ABG_DEPRECATED 14221 write_corpus(const corpus_sptr& corpus, unsigned indent, write_context& ctxt); 14222 142232019-05-21 Matthias Maennich <maennich@google.com> 14224 14225 abidw: Consolidate setting options 14226 * include/abg-writer.h (set_common_option): Declare new function. 14227 * tools/abidw.cc (load_corpus_and_write_abixml) 14228 (load_kernel_corpus_group_and_write_abixml): Use the newly 14229 introduced set_common_option. 14230 142312019-05-21 Matthias Maennich <maennich@google.com> 14232 14233 write_context: allow mutating the ostream used 14234 * include/abg-writer.h (set_ostream): Declare new function. 14235 * src/abg-writer.cc (write_context::m_ostream): Make this data 14236 member be a pointer rather than a reference. 14237 (write_context::{write_context, get_ostream): Adjust. member. 14238 (write_context::set_ostream): Define new member function. 14239 (set_ostream): Define new free-form function. 14240 * tools/abidw.cc (load_corpus_and_write_abixml) 14241 (load_kernel_corpus_group_and_write_abixml): Use the feature of 14242 mutating the ostream and reuse the write_context in most cases. 14243 142442019-05-21 Matthias Maennich <maennich@google.com> 14245 14246 abg-writer: Refactor write_corpus_group API 14247 * include/abg-writer.h (write_corpus_group): Introduce new 14248 overload write_corpus_group(ctxt, corpus_group, indent) and 14249 deprecate all others. 14250 * src/abg-writer.cc (write_corpus_group): Likewise for the 14251 definitions and adjust. 14252 * tools/abidw.cc (load_kernel_corpus_group_and_write_abixml): 14253 Migrate to new API of write_corpus_group() 14254 142552019-05-21 Matthias Maennich <maennich@google.com> 14256 14257 abg-writer: Refactor write_corpus API 14258 * include/abg-writer.h (write_corpus): Introduce new overload 14259 write_corpus(ctxt, corpus, indent) and deprecate all others. 14260 * src/abg-writer.cc (write_corpus): Likewise for the definitions 14261 and adjust. 14262 * tests/test-read-dwarf.cc (test_task::perform): Use the new 14263 write_corpus which requires a write_context. 14264 * tools/abidw.cc (load_corpus_and_write_abixml, ): Likewise. 14265 * tools/abilint.cc (main): Likewise. Also simplify logic around the 14266 locations as they now can be expressed with less code. 14267 142682019-05-21 Matthias Maennich <maennich@google.com> 14269 14270 abg-writer: Refactor write_translation_unit API 14271 * include/abg-writer.h (write_translation_unit): Declare a new 14272 overload write_translation_unit(ctxt, tu, indent) and deprecate 14273 all others. 14274 * src/abg-writer.cc (write_translation_unit): Likewise in the 14275 definitions. 14276 (write_corpus, dump, write_translation_unit): Adjust. 14277 * tools/abilint.cc (main): use new write_translation_unit() API 14278 142792019-05-21 Matthias Maennich <maennich@google.com> 14280 14281 Add deprecation facilities 14282 * include/abg-fwd.h: Introduce deprecation macro ABG_DEPRECATED 14283 142842019-05-21 Matthias Maennich <maennich@google.com> 14285 14286 abg-writer: Simplify 'annotate' propagation 14287 * src/abg-writer.cc (write_context::write_context): remove 14288 'annotate' parameter. 14289 (write_translation_unit, write_corpus, write_corpus_group, dump): Adjust. 14290 142912019-05-15 Matthias Maennich <maennich@google.com> 14292 14293 Add .clang-format approximation 14294 * .clang-format: New File. 14295 142962019-05-16 Dodji Seketeli <dodji@redhat.com> 14297 14298 Bug 24552 - abidiff fails comparing a corpus against a corpus group 14299 * include/abg-corpus.h (corpus{_group}::get_{fun, 14300 var}_symbol_map): Make these member functions virtual. 14301 * src/abg-corpus.cc (corpus::lookup_{function, variable}_symbol): 14302 Use the virtual corpus::get_{fun, var}_symbol_map() member 14303 function to get the symbols of the current corpus or corpus_group. 14304 * tests/data/Makefile.am: Add the new test input material below to 14305 source distribution. 14306 * tests/data/test-abidiff/test-PR24552-report0.txt: New test input. 14307 * tests/data/test-abidiff/test-PR24552-v0.abi: Likewise. 14308 * tests/data/test-abidiff/test-PR24552-v1.abi: Likewise. 14309 * tests/test-abidiff.cc (main): Support comparing corpus groups. 14310 (specs): Add the new test inputs to the harness. 14311 143122019-05-15 Dodji Seketeli <dodji@redhat.com> 14313 14314 Bug 24560 - Assertion failure on an abixml with an anonymous type 14315 * src/abg-reader.cc (read_context::maybe_canonicalize_type): Delay 14316 canonicalization of union types too. 14317 (build_class_decl, build_union_decl): Do not try to re-use 14318 anonymous types. 14319 143202019-05-13 Dodji Seketeli <dodji@redhat.com> 14321 14322 Handle Linux kernel binaries with no __ksymtab section 14323 * src/abg-dwarf-reader.cc (find_section): Use elf_getshdrstrndx 14324 rather than poking at the elf header on our own. 14325 (read_context::find_any_ksymtab_section): Define new member 14326 function. 14327 (read_context::{get_symtab_format, 14328 try_reading_first_ksymtab_entry_using_pre_v4_19_format}): Use the 14329 new find_any_ksymtab_section rather than find_ksymtab_section. 14330 (read_context::get_nb_ksymtab_entries): Handle the absence of 14331 __ksymtab. 14332 (read_context::get_nb_ksymtab_gpl_entries): Handle the absence of 14333 __ksymtab_gpl. 14334 (read_context::load_kernel_symbol_table): Handle the case of zero 14335 ksymtab entries. 14336 (read_context::{maybe_adjust_address_for_exec_or_dyn, 14337 maybe_adjust_fn_sym_address, load_kernel_symbol_table}): Handle an 14338 address that is zero. 14339 143402019-05-10 Dodji Seketeli <dodji@redhat.com> 14341 14342 Fix logic of get_binary_load_address 14343 * src/abg-dwarf-reader.cc (get_binary_load_address): Consider the 14344 load address pointed to by the program header pointer returned by 14345 gelf_getphdr rather than the program header itself. 14346 143472019-05-10 maennich@google.com <maennich@google.com> 14348 14349 Bug 24431 Treat __ksymtab as int32_t for v4.19+ kernels 14350 * src/abg-dwarf-reader.cc (maybe_adjust_sym_address_from_v4_19_ksymtab): 14351 treat passed addr as 32bit signed offset in case of v4.19+ __ksymtabs 14352 143532019-05-10 maennich@google.com <maennich@google.com> 14354 14355 Bug 24431 Read 32bit values when testing for the v4.19 symbol table format 14356 * src/abg-dwarf-reader.cc 14357 (try_reading_first_ksymtab_entry_using_v4_19_format): attempt to 14358 read first __ksymtab entry into int32_t to preserve sign 14359 143602019-05-10 maennich@google.com <maennich@google.com> 14361 14362 dwarf-reader: templatize read_int_from_array_of_bytes 14363 * src/abg-dwarf-reader.cc (read_int_from_array_of_bytes): 14364 templatize return type to allow passing of signed integer references 14365 143662019-05-10 maennich@google.com <maennich@google.com> 14367 14368 dwarf-reader: Fix comments for try_reading_first_ksymtab_entry_using_{pre_,}v4_19_format 14369 * src/abg-dwarf-reader.cc: swap the comments of 14370 try_reading_first_ksymtab_entry_using_{pre_,}v4_19_format 14371 143722019-05-09 Dodji Seketeli <dodji@redhat.com> 14373 14374 Better handle several anonymous types of the same kind 14375 *unqualified* name of its scope. Unlike for qualified names, the 14376 scoped name won't have a "__anonymous_*__" string in its name if its 14377 directly containing scope is not anonymous; a qualified name might 14378 still have that string in its name because the decl has a parent scope 14379 (not necessarily its directly containing scope though) that is 14380 anonymous. 14381 The patch goes on to update the logic for comparison of decls that are 14382 anonymous. For a decl which direct scope is *NOT* anonymous, the 14383 scoped name is what's used in the comparison. Otherwise, only the 14384 name of the decl is used. 14385 The patch also updates how we detect changes in data members and 14386 member types, in the comparison engine. It now uses the names of the 14387 data members, rather than their qualified name. This is in the scope 14388 of the current class/union anyway. The improvement is that the fact 14389 that the class/union itself is anonymous (even if its anonymous name 14390 changes to another anonymous name) won't have any spurious impact on 14391 the detection of name change of the members. 14392 The patch considers the change of an anonymous decl name which 14393 anonymous name changes to another anonymous name as being harmless. 14394 The patch updates the logic of category propagation in the comparison 14395 engine. Although a public typedef to private underlying type needs to 14396 stay public and thus not propagate the PRIVATE_TYPE_CATEGORY from its 14397 child diff node to himself, it still needs to suppress the changes to 14398 the private underlying diff node that were suppressed (because of the 14399 private-ness), unless that typedef has local changes. 14400 * include/abg-ir.h (decl_base::get_scoped_name): Declare new 14401 member function. 14402 (scope_decl::get_num_anonymous_member_{classes, unions, enums}): 14403 Declare new virtual member functions. 14404 (class_decl::get_num_anonymous_member_{classes, unions, enums}): 14405 Adjust to make these virtual. It's not necessary but I feel 14406 redundancy is a kind of self-documentation here. 14407 * src/abg-comp-filter.cc (has_harmless_name_change): Consider 14408 anonymous name changes as harmless. 14409 * src/abg-comparison.cc 14410 (class_or_union_diff::ensure_lookup_tables_populated): Consider 14411 the names of the members rather than their qualified names. 14412 (suppression_categorization_visitor::visit_end): Suppress the 14413 changes to the private underlying diff node that were suppressed 14414 because of the private-ness, unless that typedef has local 14415 changes. 14416 * src/abg-dwarf-reader.cc (build_enum_type) 14417 (add_or_update_class_type, add_or_update_union_type): Handle 14418 anonymous types in namespaces as well, not just in class/unions. 14419 * src/abg-ir.cc (decl_base::priv::scoped_name_): Define new data 14420 member. 14421 (decl_base::get_scoped_name): Define new member function. 14422 (equals): For the decl_base overload, use scoped name in the 14423 comparison, unless the decl belongs to an anonymous type. For the 14424 class_or_union_diff, only consider scoped_name during comparison. 14425 Avoid name comparison between anonymous types. 14426 (scope_decl::get_num_anonymous_member_{classes, unions, enums}): 14427 Define new member functions. 14428 (types_have_similar_structure): Do not compare names between 14429 anonymous types. 14430 (qualified_name_setter::do_update): Update scoped names too. 14431 * tests/data/test-abidiff/test-PR18791-report0.txt: Adjust. 14432 * tests/data/test-annotate/libtest23.so.abi: Likewise. 14433 * tests/data/test-annotate/test13-pr18894.so.abi: Likewise. 14434 * tests/data/test-annotate/test14-pr18893.so.abi: Likewise. 14435 * tests/data/test-annotate/test15-pr18892.so.abi: Likewise. 14436 * tests/data/test-annotate/test21-pr19092.so.abi: Likewise. 14437 * tests/data/test-diff-dwarf/test43-PR22913-report-0.txt: 14438 Likewise. 14439 * tests/data/test-diff-dwarf/test46-rust-report-0.txt: Likewise. 14440 * tests/data/test-diff-filter/test30-pr18904-rvalueref-report0.txt: 14441 Likewise. 14442 * tests/data/test-diff-filter/test30-pr18904-rvalueref-report1.txt: 14443 Likewise. 14444 * tests/data/test-diff-filter/test30-pr18904-rvalueref-report2.txt: 14445 Likewise. 14446 * tests/data/test-diff-filter/test31-pr18535-libstdc++-report-0.txt: 14447 Likewise. 14448 * tests/data/test-diff-filter/test31-pr18535-libstdc++-report-1.txt: 14449 Likewise. 14450 * tests/data/test-diff-filter/test33-report-0.txt: Likewise. 14451 * tests/data/test-diff-filter/test35-pr18754-no-added-syms-report-0.txt: 14452 Likewise. 14453 * tests/data/test-diff-filter/test44-anonymous-data-member-report-0.txt: 14454 Likewise. 14455 * tests/data/test-diff-pkg/libsigc++-2.0-0c2a_2.4.0-1_amd64--libsigc++-2.0-0v5_2.4.1-1ubuntu2_amd64-report-0.txt: 14456 Likewise. 14457 * tests/data/test-diff-pkg/nss-3.23.0-1.0.fc23.x86_64-report-0.txt: 14458 Likewise. 14459 * tests/data/test-diff-pkg/spice-server-0.12.4-19.el7.x86_64-0.12.8-1.el7.x86_64-report-0.txt: 14460 Likewise. 14461 * tests/data/test-diff-pkg/spice-server-0.12.4-19.el7.x86_64-0.12.8-1.el7.x86_64-report-1.txt: 14462 Likewise. 14463 * tests/data/test-diff-pkg/spice-server-0.12.4-19.el7.x86_64-0.12.8-1.el7.x86_64-report-2.txt: 14464 Likewise. 14465 * tests/data/test-diff-pkg/spice-server-0.12.4-19.el7.x86_64-0.12.8-1.el7.x86_64-report-3.txt: 14466 Likewise. 14467 * tests/data/test-read-dwarf/PR22015-libboost_iostreams.so.abi: 14468 Likewise. 14469 * tests/data/test-read-dwarf/PR22122-libftdc.so.abi: Likewise. 14470 * tests/data/test-read-dwarf/libtest23.so.abi: Likewise. 14471 * tests/data/test-read-dwarf/test10-pr18818-gcc.so.abi: Likewise. 14472 * tests/data/test-read-dwarf/test11-pr18828.so.abi: Likewise. 14473 * tests/data/test-read-dwarf/test12-pr18844.so.abi: Likewise. 14474 * tests/data/test-read-dwarf/test13-pr18894.so.abi: Likewise. 14475 * tests/data/test-read-dwarf/test14-pr18893.so.abi: Likewise. 14476 * tests/data/test-read-dwarf/test15-pr18892.so.abi: Likewise. 14477 * tests/data/test-read-dwarf/test16-pr18904.so.abi: Likewise. 14478 * tests/data/test-read-dwarf/test21-pr19092.so.abi: Likewise. 14479 * tests/data/test-read-dwarf/test22-pr19097-libstdc++.so.6.0.17.so.abi: 14480 Likewise. 14481 * tests/data/test-read-dwarf/test9-pr18818-clang.so.abi: Likewise. 14482 144832019-05-07 Dodji Seketeli <dodji@redhat.com> 14484 14485 Handle several member anonymous types of the same kind 14486 * include/abg-ir.h 14487 (class_or_union::get_num_anonymous_member_{classes, unions, 14488 enums}): Declare new member functions. 14489 * src/abg-dwarf-reader.cc (get_internal_anonynous_die_base_name) 14490 (build_internal_anonymous_die_name) 14491 (get_internal_anonymous_die_name, is_anonymous_type_die): Define 14492 new static functions. 14493 (die_qualified_type_name): Use the new 14494 get_internal_anonymous_die_name. 14495 (get_scope_for_die): Fix this to put anonymous types that were 14496 wrongly emitted into the scope of DW_TAG_subroutine_type or 14497 DW_TAG_array_type by buggy DWARF emitters into the enclosing 14498 namespace, rather than into the enclosing class/union. 14499 (build_enum_type): Take the scope of the enum to have a chance to 14500 properly name potential anonymous enums. 14501 (lookup_class_typedef_or_enum_type_from_corpus): Take an anonymous 14502 member type index for when the DIE we are lookup up represents an 14503 anonymous type. Support proper building of the internal anonymous 14504 name of the anonymous type we are lookup up. 14505 (add_or_update_class_type): Use the new 14506 get_internal_anonynous_die_base_name and 14507 build_internal_anonymous_die_name functions. Support making sure 14508 that the anonymous member type we are adding to the class wasn't 14509 already there, especially for cases where we are updating a class 14510 type. 14511 (add_or_update_union_type): Use the new 14512 get_internal_anonynous_die_base_name and 14513 build_internal_anonymous_die_name functions. 14514 (build_ir_node_from_die): Adjust the use of build_enum_type to 14515 pass it the scope of the enum type we are building. 14516 * src/abg-ir.cc (lookup_union_type): Add a new overload. 14517 (lookup_class_or_typedef_type): Use the new overload of 14518 lookup_union_type above to support looking up union types too. 14519 (class_or_union::get_num_anonymous_member_{classes, unions, 14520 enums}): Define new member functions. 14521 * src/abg-reporter-priv.cc (represent): Detect when anonymous 14522 types of anonymous data members have their internal names change, 14523 probably because anonymous member types were inserted in the scope. 14524 * tests/data/Makefile.am: Add the new test-anonymous-members-0.* 14525 test input files to the source distribution. 14526 * tests/data/test-annotate/test-anonymous-members-0.cc: New test 14527 input file. 14528 * tests/data/test-annotate/test-anonymous-members-0.o: Likewise. 14529 * tests/data/test-annotate/test-anonymous-members-0.o.abi: Likewise. 14530 * tests/data/test-annotate/test17-pr19027.so.abi: Adjust. 14531 * tests/data/test-annotate/test18-pr19037-libvtkRenderingLIC-6.1.so.abi: 14532 Likewise. 14533 * tests/data/test-annotate/test19-pr19023-libtcmalloc_and_profiler.so.abi: 14534 Likewise. 14535 * tests/data/test-annotate/test21-pr19092.so.abi: Likewise. 14536 * tests/data/test-diff-filter/test30-pr18904-rvalueref-report0.txt: 14537 Likewise. 14538 * tests/data/test-diff-filter/test30-pr18904-rvalueref-report1.txt 14539 * tests/data/test-diff-filter/test30-pr18904-rvalueref-report2.txt: 14540 Likewise. 14541 * tests/data/test-diff-filter/test35-pr18754-no-added-syms-report-0.txt: 14542 Likewise. 14543 * tests/data/test-read-dwarf/PR22122-libftdc.so.abi: Likewise. 14544 * tests/data/test-read-dwarf/test12-pr18844.so.abi: Likewise. 14545 * tests/data/test-read-dwarf/test16-pr18904.so.abi: Likewise. 14546 * tests/data/test-read-dwarf/test17-pr19027.so.abi: Likewise. 14547 * tests/data/test-read-dwarf/test18-pr19037-libvtkRenderingLIC-6.1.so.abi: 14548 Likewise. 14549 * tests/data/test-read-dwarf/test19-pr19023-libtcmalloc_and_profiler.so.abi: 14550 Likewise. 14551 * tests/data/test-read-dwarf/test21-pr19092.so.abi: Likewise. 14552 * tests/data/test-read-dwarf/test22-pr19097-libstdc++.so.6.0.17.so.abi: 14553 Likewise. 14554 * tests/test-annotate.cc (int_out_specs): Add the new test inputs 14555 to this test harness. 14556 145572019-04-24 Dodji Seketeli <dodji@redhat.com> 14558 14559 Use canonical types hash maps for type IDs in abixml writer 14560 * src/abg-writer.cc (write_context::{type_has_existing_id, 14561 get_id_for_type}): Save the canonical type of the type in the map, 14562 not the type itself. 14563 (write_context::{type_is_emitted}): Use the canonical type rather 14564 than the type itself. 14565 * tests/data/test-read-dwarf/test9-pr18818-clang.so.abi: Adjust. 14566 145672019-04-24 Dodji Seketeli <dodji@redhat.com> 14568 14569 Don't try to de-duplicate all anonymous struct DIEs 14570 * include/abg-fwd.h (is_typedef): Remove the overloads for 14571 type_base_sptr and decl_base_sptr. Replace those with an overload 14572 for type_or_decl_base_sptr. 14573 * src/abg-ir.cc (is_typedef): Do the same for the definitions. 14574 * src/abg-dwarf-reader.cc (add_or_update_class_type) 14575 (add_or_update_union_type): Do not de-duplicate anonymous 14576 struct/union DIEs. 14577 (build_typedef_type): Try to de-duplicate typedefs DIEs. 14578 * tests/data/test-annotate/test17-pr19027.so.abi: Adjust. 14579 * tests/data/test-annotate/test19-pr19023-libtcmalloc_and_profiler.so.abi: 14580 Likewise 14581 * tests/data/test-annotate/test21-pr19092.so.abi: Likewise. 14582 * tests/data/test-read-dwarf/PR22015-libboost_iostreams.so.abi: Likewise. 14583 * tests/data/test-read-dwarf/PR22122-libftdc.so.abi: Likewise. 14584 * tests/data/test-read-dwarf/test16-pr18904.so.abi: Likewise. 14585 * tests/data/test-read-dwarf/test17-pr19027.so.abi: Likewise. 14586 * tests/data/test-read-dwarf/test19-pr19023-libtcmalloc_and_profiler.so.abi: 14587 Likewise. 14588 * tests/data/test-read-dwarf/test21-pr19092.so.abi: Likewise. 14589 * tests/data/test-read-dwarf/test9-pr18818-clang.so.abi: Likewise. 14590 145912019-04-24 Dodji Seketeli <dodji@redhat.com> 14592 14593 Canonicalize types non tied to any DWARF DIE 14594 * src/abg-dwarf-reader.cc 14595 (read_context::extra_types_to_canonicalize_): Add new data member. 14596 (read_context::{initialize, clear_types_to_canonicalize}): Adjust. 14597 (read_context::extra_types_to_canonicalize): Create new accessor. 14598 (read_context::schedule_type_for_late_canonicalization): Add new 14599 overload for type_base_sptr. 14600 (read_context::perform_late_type_canonicalizing): Perform the 14601 canonicalization of the types created by the DWARF analyzer, but 14602 that are not tied to any DIE. 14603 (maybe_strip_qualification): Take a read_context&. Schedule newly 14604 created types (during type edition) for late canonicalization. 14605 (build_ir_node_from_die): Adjust the call to 14606 maybe_strip_qualification to pass a read_context. 14607 * tests/data/test-annotate/test15-pr18892.so.abi: Adjust. 14608 * tests/data/test-annotate/test17-pr19027.so.abi: Likewise. 14609 * tests/data/test-annotate/test21-pr19092.so.abi: Likewise. 14610 * tests/data/test-read-dwarf/PR22122-libftdc.so.abi: Likewise. 14611 * tests/data/test-read-dwarf/test12-pr18844.so.abi: Likewise. 14612 * tests/data/test-read-dwarf/test15-pr18892.so.abi: Likewise. 14613 * tests/data/test-read-dwarf/test17-pr19027.so.abi: Likewise. 14614 * tests/data/test-read-dwarf/test21-pr19092.so.abi: Likewise. 14615 * tests/data/test-read-dwarf/test22-pr19097-libstdc++.so.6.0.17.so.abi: 14616 Likewise. 14617 146182019-04-18 Mark Wielaard <mark@klomp.org> 14619 14620 Don't try to read a build_id as string in find_alt_debug_info_link. 14621 * src/abg-dwarf-reader.cc (find_alt_debug_info_link): Remove 14622 build_id argument. Don't try to read the buildid chars as a 14623 string. 14624 (find_alt_debug_info): Don't call find_alt_debug_info_link 14625 with a build_id string argument. 14626 146272019-04-18 Mark Wielaard <mark@klomp.org> 14628 14629 Fix an undefined behaviour in has_var_type_cv_qual_change 14630 * src/abg-comp-filter.cc: (has_var_type_cv_qual_change): 14631 Initialize the ch_kind variable before using it. 14632 146332019-04-18 Dodji Seketeli <dodji@redhat.com> 14634 14635 Add --enable-{asan,ubsan} configure options 14636 * configure.ac: Add configure options for -fsanitize=address and 14637 -fsanitize=undefined. 14638 146392019-04-18 Dodji Seketeli <dodji@redhat.com> 14640 14641 abg-tools-utils.cc: Plug a leak in find_file_under_dir 14642 * src/abg-tools-utils.cc (find_file_under_dir): Call fts_close 14643 before return. 14644 146452019-04-18 Matthias Maennich <maennich@google.com> 14646 14647 dwarf-reader: fix undefined behaviour in get_binary_load_address 14648 * src/abg-dwarf-reader.cc (get_binary_load_address): Move the 14649 ph_mem and program_header variables out of the inner for-loop. 14650 146512019-04-18 Dodji Seketeli <dodji@redhat.com> 14652 14653 Delay canonicalization for array and qualified types 14654 * src/abg-dwarf-reader.cc (maybe_canonicalize_type): Delay the 14655 canonicalization of array and qualified types, just like what we 14656 do for classes and function types already. 14657 (maybe_strip_qualification): Do not 14658 re-canonicalize array and qualified types here because it should 14659 not be necessary anymore. 14660 146612019-04-18 Dodji Seketeli <dodji@redhat.com> 14662 14663 Fix a memory leak in real_path 14664 * src/abg-tools-utils.cc (real_path): Fee the returned pointer of 14665 realpath. 14666 146672019-04-18 Dodji Seketeli <dodji@redhat.com> 14668 14669 Enable building with AddressSanitizer activated 14670 * configure.ac: If ABIGAIL_DEVEL_ASAN=on (in addition to 14671 ABIGAIL_DEVEL=on), then turn on AddressSanitizer in the build. 14672 146732019-04-17 Dodji Seketeli <dodji@redhat.com> 14674 14675 Bug 24431 - ELF reader fails to determine __ksymtab format 14676 * src/abg-dwarf-reader.cc 14677 (read_context::{try_reading_first_ksymtab_entry_using_pre_v4_19_format, 14678 try_reading_first_ksymtab_entry_using_v4_19_format}): Define new 14679 member functions. 14680 (read_context::maybe_adjust_sym_address_from_v4_19_ksymtab): Make 14681 member function this const. 14682 (read_context::get_ksymtab_format): Implement the new heuristic 14683 here, using try_reading_first_ksymtab_entry_using_pre_v4_19_format 14684 and try_reading_first_ksymtab_entry_using_v4_19_format, rather 14685 than assuming that if we have no relocations, then we are in the 14686 v4.19 format. 14687 (maybe_adjust_sym_address_from_v4_19_ksymtab): When on a 64 bits 14688 architecture, ensure the 32 bits address read from the v4.19 14689 format __ksymtab section is converted into a 64 bits address. 14690 146912019-04-15 Matthias Maennich via libabigail <libabigail@sourceware.org> 14692 14693 Update .gitignore files to ignore typical dev side products 14694 * tests/.gitignore: exclude tests binaries and test results 14695 * tools/.gitignore: update to ignore produced binaries 14696 146972019-04-15 Matthias Maennich via libabigail <libabigail@sourceware.org> 14698 14699 dwarf-reader: fix recursion in expr_result::operator& 14700 * src/abg-dwarf-reader.cc: fix expr_result::operator& 14701 147022019-04-15 Matthias Maennich via libabigail <libabigail@sourceware.org> 14703 14704 distinct_diff: avoid expression with side effects within typeid 14705 * src/abg-comparison.cc: fix clang warning "potentially-evaluated-expression" 14706 147072019-04-15 Matthias Maennich via libabigail <libabigail@sourceware.org> 14708 14709 ir: drop unused data members from {environment,qualified_name}_setter 14710 * src/abg-ir.cc: drop unused data members 14711 147122019-04-15 Matthias Maennich via libabigail <libabigail@sourceware.org> 14713 14714 suppressions: drop unused parameter from type_is_suppressed 14715 * include/abg-suppression-priv.h: drop unused argument from type_is_suppressed 14716 147172019-04-15 Matthias Maennich via libabigail <libabigail@sourceware.org> 14718 14719 viz-dot: remove unused members from dot 14720 * include/abg-viz-dot.h: remove unused data members from 'dot' 14721 147222019-04-15 Matthias Maennich via libabigail <libabigail@sourceware.org> 14723 14724 add missing virtual destructors 14725 * include/abg-comparison.h: add virtual destructor for corpus_diff and diff_node_visitor 14726 * include/abg-corpus.h: add virtual destructor for corpus 14727 * include/abg-reporter.h: add virtual destructor for reporter_base 14728 * include/abg-traverse.h: add virtual destructor for traversable_base 14729 147302019-04-15 Matthias Maennich via libabigail <libabigail@sourceware.org> 14731 14732 diff-utils: point: fix postfix decrement/increment operator 14733 * include/abg-diff-utils.h: fix postfix dec/inc operator 14734 147352019-04-15 Matthias Maennich via libabigail <libabigail@sourceware.org> 14736 14737 abg-reader: clarify boolean use of assignment 14738 * src/abg-reader.cc: clarify boolean use of assignment 14739 147402019-04-15 Matthias Maennich via libabigail <libabigail@sourceware.org> 14741 14742 abilint: fix return types bool -> int 14743 * tools/abilint.cc: return int in main rather than bool. 14744 * tests/print-diff-tree.cc: Likewise. 14745 147462019-04-15 Matthias Maennich via libabigail <libabigail@sourceware.org> 14747 14748 abg-fwd.h: fix mismatched tags for ir_node_visitor 14749 * include/abg-fwd.h: forward-declare ir_node_visitor as class 14750 147512019-04-16 Dodji Seketeli <dodji@redhat.com> 14752 14753 Bug 24431 - ELF reader can't interpret ksymtab with Kernel 4.19+ 14754 * src/abg-dwarf-reader.cc (enum kernel_symbol_table_kind): Move this 14755 enum at the top. 14756 (enum ksymtab_format): Define new enum. 14757 (read_context::{ksymtab_format_, ksymtab_entry_size_, 14758 nb_ksymtab_entries_, nb_ksymtab_gpl_entries_}): Define new data 14759 members. 14760 (read_context::initiliaze): Initialize the new data members above. 14761 (read_context::{get_ksymtab_format, get_ksymtab_symbol_value_size, 14762 get_ksymtab_entry_size, get_nb_ksymtab_entries, 14763 get_nb_ksymtab_gpl_entries, 14764 maybe_adjust_sym_address_from_v4_19_ksymtab}): Define new member 14765 functions. 14766 (read_context::load_kernel_symbol_table): Support loading from 14767 both pre and post v4.19 linux kernels with their different ksymtab 14768 formats. Add more comments. 14769 147702019-04-10 Dodji Seketeli <dodji@redhat.com> 14771 14772 Bug 24430 - Fold away const for array types 14773 * include/abg-fwd.h (is_array_of_qualified_element): Declare 2 14774 overloads of this function. 14775 (re_canonicalize): Declare a new function. 14776 * include/abg-ir.h (class {decl_base, type_base}): Declare 14777 re_canonicalize as a friend of these classes. 14778 * src/abg-dwarf-reader.cc (maybe_strip_qualification): Detect 14779 qualified array types and appropriately qualifies the array 14780 element type, instead of qualifying the array type itself. 14781 Re-canonicalize the resulting type if necessary. 14782 * src/abg-ir.cc (is_array_of_qualified_element): Define 2 14783 overloads of this function. 14784 (re_canonicalize): Define new function. 14785 * tests/data/Makefile.am: The two new test binary input files 14786 PR24430-fold-qualified-array-clang and 14787 PR24430-fold-qualified-array-gcc to source distribution, as well 14788 as the expected reference output. 14789 * tests/data/test-annotate/test15-pr18892.so.abi: Adjust. 14790 * tests/data/test-annotate/test17-pr19027.so.abi: Likewise. 14791 * tests/data/test-annotate/test19-pr19023-libtcmalloc_and_profiler.so.abi: 14792 Likewise. 14793 * tests/data/test-annotate/test21-pr19092.so.abi: Likewise. 14794 * tests/data/test-diff-filter/PR24430-fold-qualified-array-clang: 14795 New binary test input coming from the bug report. 14796 * tests/data/test-diff-filter/PR24430-fold-qualified-array-gcc: 14797 Likewise. 14798 * tests/data/test-diff-filter/PR24430-fold-qualified-array-report-0.txt: 14799 Expected reference abi difference. 14800 * tests/data/test-diff-filter/test33-report-0.txt: Adjust. 14801 * tests/data/test-diff-pkg/nss-3.23.0-1.0.fc23.x86_64-report-0.txt: 14802 Likewise. 14803 * tests/data/test-read-dwarf/PR22122-libftdc.so.abi: Likewise. 14804 * tests/data/test-read-dwarf/test12-pr18844.so.abi: Likewise. 14805 * tests/data/test-read-dwarf/test15-pr18892.so.abi: Likewise. 14806 * tests/data/test-read-dwarf/test17-pr19027.so.abi: Likewise. 14807 * tests/data/test-read-dwarf/test19-pr19023-libtcmalloc_and_profiler.so.abi: 14808 Likewise. 14809 * tests/data/test-read-dwarf/test21-pr19092.so.abi: Likewise. 14810 * tests/data/test-read-dwarf/test22-pr19097-libstdc++.so.6.0.17.so.abi: 14811 Likewise. 14812 * tests/test-diff-filter.cc: Add the new binary test input to this 14813 test harness. 14814 148152019-04-09 Dodji Seketeli <dodji@redhat.com> 14816 14817 Fix "Add test for the fix for PR24410" 14818 * tests/data/test-diff-pkg/PR24410-new/poppler-debuginfo-0.73.0-8.fc30.x86_64.rpm: 14819 Really add this. 14820 * tests/data/test-diff-pkg/PR24410-new/poppler-qt5-0.73.0-8.fc30.x86_64.rpm: 14821 Likewise. 14822 * tests/data/test-diff-pkg/PR24410-new/poppler-qt5-debuginfo-0.73.0-8.fc30.x86_64.rpm: 14823 Likewise. 14824 * tests/data/test-diff-pkg/PR24410-new/poppler-qt5-devel-0.73.0-8.fc30.x86_64.rpm: 14825 Likewise. 14826 * tests/data/test-diff-pkg/PR24410-old/poppler-debuginfo-0.73.0-4.fc30.x86_64.rpm: 14827 Likewise. 14828 * tests/data/test-diff-pkg/PR24410-old/poppler-qt5-0.73.0-4.fc30.x86_64.rpm: 14829 Likewise. 14830 * tests/data/test-diff-pkg/PR24410-old/poppler-qt5-debuginfo-0.73.0-4.fc30.x86_64.rpm: 14831 Likewise. 14832 * tests/data/test-diff-pkg/PR24410-old/poppler-qt5-devel-0.73.0-4.fc30.x86_64.rpm: 14833 Likewise. 14834 * tests/data/test-diff-pkg/PR24410-report-0.txt: Likewise. 14835 148362019-04-09 Dodji Seketeli <dodji@redhat.com> 14837 14838 Add test for the fix for PR24410 14839 * tests/data/test-diff-pkg/PR24410-new/poppler-debuginfo-0.73.0-8.fc30.x86_64.rpm: 14840 Add new test input. 14841 * tests/data/test-diff-pkg/PR24410-new/poppler-qt5-0.73.0-8.fc30.x86_64.rpm: 14842 Add new test input. 14843 * tests/data/test-diff-pkg/PR24410-new/poppler-qt5-debuginfo-0.73.0-8.fc30.x86_64.rpm: 14844 Add new test input. 14845 * tests/data/test-diff-pkg/PR24410-new/poppler-qt5-devel-0.73.0-8.fc30.x86_64.rpm: 14846 Add new test input. 14847 * tests/data/test-diff-pkg/PR24410-old/poppler-debuginfo-0.73.0-4.fc30.x86_64.rpm: 14848 Add new test input. 14849 * tests/data/test-diff-pkg/PR24410-old/poppler-qt5-0.73.0-4.fc30.x86_64.rpm: 14850 Add new test input. 14851 * tests/data/test-diff-pkg/PR24410-old/poppler-qt5-debuginfo-0.73.0-4.fc30.x86_64.rpm: 14852 Add new test input. 14853 * tests/data/test-diff-pkg/PR24410-old/poppler-qt5-devel-0.73.0-4.fc30.x86_64.rpm: 14854 Add new test input. 14855 * tests/data/test-diff-pkg/PR24410-report-0.txt: Add new test 14856 input. 14857 * tests/data/Makefile.am: Add the test input above to source 14858 distribution. 14859 * tests/test-diff-pkg.cc: Make this test harness use the new input 14860 rpms above. 14861 148622019-04-05 Dodji Seketeli <dodji@redhat.com> 14863 14864 Propagate private type diff category through refs/qualified type diffs 14865 * src/abg-comparison.cc 14866 (suppression_categorization_visitor::visit_end): Propagate 14867 suppressed and private type diff categories for reference and 14868 qualified types. For qualified types, make sure they don't have 14869 local changes. Even when there are no local changes, do not 14870 propagate private diff categories to typedefs. 14871 * tests/data/test-annotate/test17-pr19027.so.abi: Adjust. 14872 * tests/data/test-annotate/test21-pr19092.so.abi: Likewise. 14873 * tests/data/test-read-dwarf/PR22122-libftdc.so.abi: Likewise. 14874 * tests/data/test-read-dwarf/test10-pr18818-gcc.so.abi: Likewise. 14875 * tests/data/test-read-dwarf/test11-pr18828.so.abi: Likewise. 14876 * tests/data/test-read-dwarf/test12-pr18844.so.abi: Likewise. 14877 * tests/data/test-read-dwarf/test16-pr18904.so.abi: Likewise. 14878 * tests/data/test-read-dwarf/test17-pr19027.so.abi: Likewise. 14879 * tests/data/test-read-dwarf/test21-pr19092.so.abi: Likewise. 14880 * tests/data/test-read-dwarf/test22-pr19097-libstdc++.so.6.0.17.so.abi: Likewise. 14881 * tests/data/test-read-dwarf/test9-pr18818-clang.so.abi: Likewise. 14882 148832019-04-05 Dodji Seketeli <dodji@redhat.com> 14884 14885 Fix anonymous union constructed under the wrong context 14886 * src/abg-dwarf-reader.cc (add_or_update_class_type) 14887 (add_or_update_union_type): Only reuse anonymous class/union types 14888 which have the same scope as the current one. 14889 148902019-04-08 Dodji Seketeli <dodji@redhat.com> 14891 14892 Internal pretty repr of union cannot be flat representation 14893 * src/abg-ir.cc (union_decl::get_pretty_representation): 14894 Anonymous internal pretty representation of unin is its fully 14895 qualified name. 14896 148972019-04-08 Dodji Seketeli <dodji@redhat.com> 14898 14899 Misc comment fixes 14900 * src/abg-comp-filter.cc (has_harmless_name_change): Fix comment. 14901 * src/abg-ir.cc (var_decl::get_qualified_name): Likewise. 14902 149032019-03-29 Dodji Seketeli <dodji@redhat.com> 14904 14905 Bump version number to 1.7 14906 * configure.ac: Bump version number to 1.7 14907 149082019-03-28 Dodji Seketeli <dodji@redhat.com> 14909 14910 Update website mainpage for 1.6 release 14911 * doc/website/mainpage.txt: Update for 1.6 release. 14912 149132019-03-27 Dodji Seketeli <dodji@redhat.com> 14914 14915 Update ChangeLog 14916 * ChangeLog: Update automatically by using "make 14917 update-changelog". 14918 149192019-03-27 Dodji Seketeli <dodji@redhat.com> 14920 14921 Update NEWS file for 1.6 14922 * NEWS: Update for 1.6 14923 149242019-03-27 Dodji Seketeli <dodji@redhat.com> 14925 14926 Add missing assignment operators 14927 * include/abg-interned-str.h (interned_string::operator=): Define 14928 assignment operator. 14929 * include/abg-ir.h 14930 ({location, enum_type_decl::enumerator}::operator=): Declare 14931 assignment operator. 14932 * src/abg-ir.cc (enum_type_decl::enumerator::operator=): Define 14933 assignment operator. 14934 149352019-03-25 Dodji Seketeli <dodji@redhat.com> 14936 14937 Bug 24378 - DW_TAG_subroutine_type as a DIE scope causes infinite loop 14938 * src/abg-dwarf-reader.cc (get_scope_die): Look through 14939 DW_TAG_subroutine_type to get the scope of a given DIE. 14940 * tests/data/Makefile.am: Add the two new files below to source 14941 distribution. 14942 * tests/data/test-read-dwarf/PR24378-fn-is-not-scope.abi: New 14943 reference test output. 14944 * tests/data/test-read-dwarf/PR24378-fn-is-not-scope.o: New binary 14945 test input. 14946 * tests/test-read-dwarf.cc (in_out_specs): Add the new test input 14947 to the test harness. 14948 149492019-03-22 Dodji Seketeli <dodji@redhat.com> 14950 14951 Misc cleanups 14952 * src/abg-dwarf-reader.cc (build_function_type): Cleanup 14953 indentation and comments. 14954 149552019-03-21 Dodji Seketeli <dodji@redhat.com> 14956 14957 Better pointer name equality optimization in DIE de-duplication code 14958 * src/abg-dwarf-reader.cc 14959 (die_is_pointer_reference_or_typedef_type) 14960 (die_peel_pointer_and_typedef): Define new static functions. 14961 (compare_dies_string_attribute_value): Turn this function into a 14962 static one. 14963 (compare_dies_cu_decl_file): Make this function compare the cu 14964 decl file name of the leaf type of the pointer, not just the one 14965 of the pointer itself. 14966 (compare_as_decl_dies): Compare the DWARF tags too. 14967 (compare_dies): Simplify logic. 14968 149692019-03-21 Dodji Seketeli <dodji@redhat.com> 14970 14971 Add ir::{lookup_data_member, get_function_parameter} 14972 * include/abg-ir.h (lookup_data_member, get_function_parameter): 14973 Declare new functions. 14974 * src/abg-ir.cc (lookup_data_member, get_function_parameter): 14975 Define them. 14976 149772019-03-21 Dodji Seketeli <dodji@redhat.com> 14978 14979 Better detection of void* to something* change 14980 * include/abg-ir.h (is_void_type): Add a new overload that takes 14981 type_base*. 14982 * src/abg-ir.cc (is_void_type): Define the new overload that takes 14983 type_base*. 14984 (is_void_pointer_type): Look through typedefs in 14985 the pointed-to type. 14986 149872019-03-21 Dodji Seketeli <dodji@redhat.com> 14988 14989 PR24257 - Handle DW_TAG_typedef with no underlying type 14990 * src/abg-dwarf-reader.cc (build_typedef_type): DW_TAG_typedef 14991 with no underlying type means typedef void foo. 14992 * tests/data/test-annotate/test15-pr18892.so.abi: Adjust. 14993 * tests/data/test-annotate/test18-pr19037-libvtkRenderingLIC-6.1.so.abi: 14994 Likewise. 14995 * tests/data/test-annotate/test19-pr19023-libtcmalloc_and_profiler.so.abi: 14996 Likewise. 14997 * tests/data/test-annotate/test20-pr19025-libvtkParallelCore-6.1.so.abi: 14998 Likewise. 14999 * tests/data/test-annotate/test21-pr19092.so.abi: Likewise. 15000 * tests/data/test-read-dwarf/PR22015-libboost_iostreams.so.abi: 15001 Likewise. 15002 * tests/data/test-read-dwarf/PR22122-libftdc.so.abi: Likewise. 15003 * tests/data/test-read-dwarf/test10-pr18818-gcc.so.abi: Likewise. 15004 * tests/data/test-read-dwarf/test11-pr18828.so.abi: Likewise. 15005 * tests/data/test-read-dwarf/test12-pr18844.so.abi: Likewise. 15006 * tests/data/test-read-dwarf/test15-pr18892.so.abi: Likewise. 15007 * tests/data/test-read-dwarf/test16-pr18904.so.abi: Likewise. 15008 * tests/data/test-read-dwarf/test18-pr19037-libvtkRenderingLIC-6.1.so.abi: 15009 Likewise. 15010 * tests/data/test-read-dwarf/test19-pr19023-libtcmalloc_and_profiler.so.abi: 15011 Likewise. 15012 * tests/data/test-read-dwarf/test20-pr19025-libvtkParallelCore-6.1.so.abi: 15013 Likewise. 15014 * tests/data/test-read-dwarf/test21-pr19092.so.abi: Likewise. 15015 * tests/data/test-read-dwarf/test22-pr19097-libstdc++.so.6.0.17.so.abi: 15016 Likewise. 15017 * tests/data/test-read-dwarf/test9-pr18818-clang.so.abi: Likewise. 15018 150192019-02-20 Dodji Seketeli <dodji@redhat.com> 15020 15021 Do not build DIE -> parent map just because we see an asm TU 15022 * src/abg-dwarf-reader.cc: 15023 150242019-02-19 Dodji Seketeli <dodji@redhat.com> 15025 15026 Avoid over-suppressing fns & vars when analysing the Kernel 15027 * include/abg-dwarf-reader.h (get_ignore_symbol_table): Take a 15028 const read_context&. 15029 * src/abg-dwarf-reader.cc (get_ignore_symbol_table): Likewise. 15030 (function_is_suppressed): When the symbol table optimization is in 15031 flight -- that is, when no symbol table has been loaded -- do not 15032 try to see if a given function symbol was exported at the ELF 15033 level or not. Just look at if the function was suppressed or not. 15034 (variable_is_suppressed): Likewise for variables. 15035 150362019-02-08 Dodji Seketeli <dodji@redhat.com> 15037 15038 Bug 24188 - Assertion failed while analysing a Fortran binary 15039 * src/abg-dwarf-reader.cc (compare_as_type_dies): Handle 15040 DW_TAG_string_type DIEs here. 15041 (compare_dies): Handle DW_TAG_string_type DIEs by using 15042 compare_as_type_dies. 15043 * tests/data/test-diff-pkg/netcdf-fortran-debuginfo-4.4.4-10.fc29.x86_64.rpm: 15044 New test RPM. 15045 * tests/data/test-diff-pkg/netcdf-fortran-debuginfo-4.4.4-11.fc30.x86_64.rpm: 15046 Likewise. 15047 * tests/data/test-diff-pkg/netcdf-fortran-mpich-4.4.4-10.fc29.x86_64-4.4.4-11.fc30.x86_64-report-0.txt: 15048 New expected test reference output. 15049 * tests/data/test-diff-pkg/netcdf-fortran-mpich-4.4.4-10.fc29.x86_64.rpm: 15050 New test RPM. 15051 * tests/data/test-diff-pkg/netcdf-fortran-mpich-4.4.4-11.fc30.x86_64.rpm: 15052 Likewise. 15053 * tests/data/test-diff-pkg/netcdf-fortran-mpich-debuginfo-4.4.4-10.fc29.x86_64.rpm: 15054 Likewise. 15055 * tests/data/test-diff-pkg/netcdf-fortran-mpich-debuginfo-4.4.4-11.fc30.x86_64.rpm: 15056 Likewise. 15057 * tests/data/test-diff-pkg/netcdf-fortran-mpich-devel-4.4.4-10.fc29.x86_64.rpm: 15058 Likewise. 15059 * tests/data/test-diff-pkg/netcdf-fortran-mpich-devel-4.4.4-11.fc30.x86_64.rpm: 15060 Likewise. 15061 * tests/data/Makefile.am: Add the new test input material above to 15062 source distribution. 15063 * tests/test-diff-pkg.cc (in_out_spec): Add the new test RPMs 15064 above to the set of RPMs to use as test input. 15065 150662019-02-06 Dodji Seketeli <dodji@redhat.com> 15067 15068 Bug 24157 - Wrong support of Ada ranges 15069 * include/abg-ir.h (array_type_def::subrange_type::bound_value): 15070 Define new class. 15071 (array_type_def::subrange_type::subrange_type): Adjust to use the 15072 new bound_value type for bound values. 15073 (array_type_def::subrange_type::{get_upper_bound, get_lower_bound, 15074 set_upper_bound, set_lower_bound}): Return or take int64_t rather 15075 than size_t. 15076 (array_type_def::subrange_type::get_length): Return uint64_t 15077 rather than size_t. 15078 * src/abg-dwarf-reader.cc (die_signed_constant_attribute) 15079 (die_constant_attribute, die_attribute_has_form) 15080 (die_attribute_is_signed, die_attribute_is_unsigned) 15081 (die_attribute_has_no_signedness): Define new static functions. 15082 (get_default_array_lower_bound): Return uint64_t rather than int. 15083 (build_subrange_type): Use the new 15084 array_type_def::subrange_type::bound_value type for bound values. 15085 Use the new die_constant_attribute function, rather than 15086 die_unsigned_constant_attribute to fecth the bound values. 15087 * src/abg-ir.cc 15088 (array_type_def::subrange_type::bound_value::{bound_value, 15089 get_signedness, set_signedness, get_signed_value, 15090 get_unsigned_value, set_unsigned, set_signed}): Define new member 15091 functions. 15092 (array_type_def::subrange_type::priv::{lower_bound_, 15093 upper_bound}): Use the new class bound_value. 15094 (array_type_def::subrange_type::priv::priv): Adjust to use the new 15095 bound_value class to hold bound values. 15096 (array_type_def::subrange_type::subrange_type): Likewise. 15097 (array_type_def::subrange_type::{get_upper_bound, get_lower_bound, 15098 set_upper_bound, set_lower_bound}): Return or take int64_t rather 15099 than size_t. 15100 (array_type_def::subrange_type::get_length): Return uint64_t 15101 rather than size_t. 15102 (types_have_similar_structure): Handle array_type_def::subrange_type 15103 * src/abg-reader.cc (build_subrange_type): Use the new 15104 array_type_def::subrange_type::bound_value to hold bound values. 15105 * tests/data/test-diff-pkg/GtkAda-debuginfo-2.24.2-29.fc29.x86_64.rpm: 15106 New binary RPM as test input. 15107 * tests/data/test-diff-pkg/GtkAda-debuginfo-2.24.2-30.fc30.x86_64.rpm: 15108 Likewise. 15109 * tests/data/test-diff-pkg/GtkAda-devel-2.24.2-29.fc29.x86_64.rpm: 15110 Likewise. 15111 * tests/data/test-diff-pkg/GtkAda-devel-2.24.2-30.fc30.x86_64.rpm: 15112 Likewise. 15113 * tests/data/test-diff-pkg/GtkAda-gl-2.24.2-29.fc29.x86_64--2.24.2-30.fc30.x86_64-report-0.txt: 15114 New expected test output. 15115 * tests/data/test-diff-pkg/GtkAda-gl-2.24.2-29.fc29.x86_64.rpm: 15116 New binary RPM as test input. 15117 * tests/data/test-diff-pkg/GtkAda-gl-2.24.2-30.fc30.x86_64.rpm: 15118 Likewise. 15119 * tests/data/test-diff-pkg/GtkAda-gl-debuginfo-2.24.2-29.fc29.x86_64.rpm: 15120 Likewise. 15121 * tests/data/test-diff-pkg/GtkAda-gl-debuginfo-2.24.2-30.fc30.x86_64.rpm: 15122 Likewise. 15123 * tests/data/Makefile.am: Add the new test material above to source 15124 distribution. 15125 * tests/test-diff-pkg.cc (in_out_specs): Add the new input testing 15126 RPMs in here. 15127 151282019-01-30 Dodji Seketeli <dodji@redhat.com> 15129 15130 Small apidoc fix 15131 * src/abg-comparison.cc (enum_diff::changed_enumerators): Fix apidoc. 15132 151332019-01-30 Dodji Seketeli <dodji@redhat.com> 15134 15135 Bug 24139 - Support suppressing some enumerator changes 15136 * doc/manuals/libabigail-concepts.rst: Document the new 15137 'changed_enumerators' property. 15138 * include/abg-suppression.h 15139 (type_suppression::{g, s}et_changed_enumerator_names): Declare two 15140 new member functions. 15141 * src/abg-suppression-priv.h 15142 (type_suppression::priv::changed_enumerator_names_): Add a new 15143 data member. 15144 * src/abg-suppression.cc 15145 (type_suppression::{g,s}et_changed_enumerator_names): Define two 15146 new member functions. 15147 (type_suppression::suppresses_diff): Support evaluating the new 15148 'changed_enumerators = <vector of changed enumerators>'. 15149 (read_type_suppression): Read the new list 15150 property'changed_enumerators" and store it into the 15151 type_suppression using the new 15152 type_suppression::set_changed_enumerator_names (). 15153 * tests/data/test-diff-suppr/libtest4{0,1}-enumerator-changes-v{0,1}.so: 15154 Add new test inpujts. 15155 * tests/data/test-diff-suppr/test4{0,1}-enumerator-changes-0.suppr: 15156 Add a new suppr spec for this new test. 15157 * tests/data/test-diff-suppr/test4{0,1}-enumerator-changes-report-0.txt: 15158 The default report. 15159 * tests/data/test-diff-suppr/test4{0,1}-enumerator-changes-v{0,1}.cc: 15160 Add Source code of libtest4{0,1}-enumerator-changes-v{0,1}.so. 15161 * tests/data/Makefile.am: Add the test files above to source 15162 distribution. 15163 * tests/test-diff-suppr.cc: Add the test input files above to the 15164 harness. 15165 151662019-01-25 Dodji Seketeli <dodji@redhat.com> 15167 15168 Better comments in the comparison engine 15169 * include/abg-comparison.h (enum diff_category): Add comments to 15170 describe what to update when a new enumerator is added to this enum. 15171 * src/abg-comp-filter.cc (has_fn_return_type_cv_qual_change): Fix 15172 comment thinko here. 15173 151742019-01-25 Dodji Seketeli <dodji@redhat.com> 15175 15176 Bug 20175 - Classify CV qual changes in variable type as harmless 15177 * include/abg-comparison.h (VAR_TYPE_CV_CHANGE_CATEGORY): Add new 15178 enumerator to diff_category enum. 15179 (EVERYTHING_CATEGORY): Update this enumerator. 15180 * src/abg-comp-filter.cc (type_diff_has_cv_qual_change_only): 15181 Support array diff nodes carrying a cv qual change on the element 15182 type. 15183 (has_var_type_cv_qual_change): Define new static function. 15184 (categorize_harmless_diff_node): Use the new 15185 has_var_type_cv_qual_change to categorize variable diff node with 15186 cv qual change on its type as harmless. 15187 * src/abg-comparison.cc 15188 (get_default_harmless_categories_bitmap): Update this. 15189 (operator<<(ostream& o, diff_category c)): Likewise. 15190 * include/abg-ir.h (equals_modulo_cv_qualifier): Declare new ... 15191 * src/abg-ir.cc (equals_modulo_cv_qualifier): ... function. 15192 * tests/data/test-diff-pkg/libICE-1.0.6-1.el6.x86_64.rpm--libICE-1.0.9-2.el7.x86_64.rpm-report-0.txt: 15193 Update expected test output. 15194 * tests/data/test-diff-pkg/spice-server-0.12.4-19.el7.x86_64-0.12.8-1.el7.x86_64-report-2.txt: Likewise. 15195 * tests/data/Makefile.am: Add the new test material below to 15196 source distribution. 15197 * tests/data/test-diff-pkg/nss-3.23.0-1.0.fc23.x86_64-report-0.txt: 15198 New expecte test output. 15199 * tests/data/test-diff-pkg/nss-3.23.0-1.0.fc23.x86_64.rpm: New 15200 test input. 15201 * tests/data/test-diff-pkg/nss-3.24.0-1.0.fc23.x86_64.rpm: Likewise. 15202 * tests/data/test-diff-pkg/nss-debuginfo-3.23.0-1.0.fc23.x86_64.rpm: Likewise. 15203 * tests/data/test-diff-pkg/nss-debuginfo-3.24.0-1.0.fc23.x86_64.rpm: Likewise. 15204 * tests/data/test-diff-pkg/nss-devel-3.23.0-1.0.fc23.x86_64.rpm: Likewise. 15205 * tests/data/test-diff-pkg/nss-devel-3.24.0-1.0.fc23.x86_64.rpm: Likewise. 15206 * tests/test-diff-pkg.cc (in_out_specs): Add the test input above 15207 to the test harness. 15208 152092019-01-24 Dodji Seketeli <dodji@redhat.com> 15210 15211 Properly add the new rust tests to EXTRA_DIST 15212 * tests/data/Makefile.am: Add the new rust tests to 15213 EXTRA_DIST. 15214 152152019-01-24 Dodji Seketeli <dodji@redhat.com> 15216 15217 Conditionalize the Rust support regression test 15218 * tests/test-diff-dwarf.cc: Run the rust support regression test 15219 only if we support Rust on the platform. 15220 * tests/test-utils.h: Include config.h. 15221 152222019-01-24 Dodji Seketeli <dodji@redhat.com> 15223 15224 Fix a typo in the recent Rust support and update regression tests 15225 * configure.ac: Fix the typo HAS_LANG_Rust into HAS_DW_LANG_Rust. 15226 * tests/data/test-diff-dwarf/test46-readme.txt: Add new file to 15227 the test suite. 15228 * tests/data/test-diff-dwarf/test46-rust-libone.so: Likewise. 15229 * tests/data/test-diff-dwarf/test46-rust-libtwo.so: Likewise. 15230 * tests/data/test-diff-dwarf/test46-rust-report-0.txt: Likewise. 15231 * tests/test-diff-dwarf.cc (in_out_specs): Update the tests array 15232 to compare the two new binaries included above. 15233 152342019-01-18 Dodji Seketeli <dodji@redhat.com> 15235 15236 Overhaul detection the DW_LANG_* enumerators from dwarf.h 15237 * configure.ac: Detect the presence of DW_LANG_{UPC, D, Python, 15238 Go, C11, C_plus_plus_03, C_plus_plus_11, C_plus_plus_14, 15239 Mips_Assembler, Rust} and define the corresponding 15240 HAVE_DW_LANG_*_enumerator macro accordingly. 15241 * include/abg-ir.h (LANG_C_plus_plus_03): Define this new 15242 enumerator in the translation_unit::language enum. 15243 * src/abg-dwarf-reader.cc (dwarf_language_to_tu_language): Use the 15244 new HAVE_DW_LANG_*_enumerator macros. 15245 (get_default_array_lower_bound): Support the 15246 translation_unit::LANG_C_plus_plus_03 enumerator. 15247 * src/abg-ir.cc (is_cplus_plus_language): Support the 15248 translation_unit::LANG_C_plus_plus_03 enumerator. 15249 152502019-01-18 Dodji Seketeli <dodji@redhat.com> 15251 15252 Fix a thinko 15253 * src/abg-dwarf-reader.cc (dwarf_language_to_tu_language): Fix a 15254 thinko in the detection of the support of the DW_LANG_Rust enumerator. 15255 152562019-01-17 Mark Wielaard <mark@klomp.org> 15257 15258 Conditionalize the use of DW_LANG_C_plus_plus_03 and DW_LANG_Rust 15259 * include/abg-ir.h (LANG_C_plus_plus_03): Add this new language 15260 enum to "enum translation_unit::language". 15261 * src/abg-dwarf-reader.cc (dwarf_language_to_tu_language): Do not 15262 use DW_LANG_Rust or DW_LANG_C_plus_plus_03 if these are not 15263 defined. 15264 (get_default_array_lower_bound): Handle the new 15265 translation_unit::LANG_C_plus_plus_03 enumerator. 15266 152672019-01-17 Dodji Seketeli <dodji@redhat.com> 15268 15269 Support some new DWARF language encoding for C and C++ 15270 * src/abg-dwarf-reader.cc (dwarf_language_to_tu_language): Support 15271 new DW_LANG_{C11, C_plus_plus_03, C_plus_plus_11, C_plus_plus_14} 15272 enumerators. 15273 152742019-01-17 Dodji Seketeli <dodji@redhat.com> 15275 15276 Add (very) basic support for Rust 15277 * include/abg-ir.h (LANG_Rust): Add this new enumerator to the 15278 "enum language" enum. 15279 * src/abg-dwarf-reader.cc (dwarf_language_to_tu_language): Handle 15280 the Rust language. 15281 (get_default_array_lower_bound): Likewise. 15282 152832019-01-15 Dodji Seketeli <dodji@redhat.com> 15284 15285 Separate public types of first binary from those of the second 15286 * include/abg-dwarf-reader.h (read_context_get_path): Declare new 15287 function. 15288 * include/abg-reader.h (read_context_get_path): Likewise. 15289 * src/abg-dwarf-reader.cc (read_context_get_path): Define new function. 15290 * src/abg-reader.cc (read_context_get_path): Likewise. 15291 * tools/abidiff.cc (set_suppressions): Set the suppression 15292 specification derived from the --headers-dir1 option only for the first 15293 binary, and similarly, from the --headers-dir2 option only for the 15294 second binary. 15295 152962019-01-09 Dodji Seketeli <dodji@redhat.com> 15297 15298 Bug 23044 - Assertions with side effects 15299 * configure.ac: 15300 * include/abg-diff-utils.h: 15301 * include/abg-fwd.h: 15302 * src/abg-comp-filter.cc: 15303 * src/abg-comparison-priv.h: 15304 * src/abg-comparison.cc: 15305 * src/abg-corpus-priv.h: 15306 * src/abg-corpus.cc: 15307 * src/abg-default-reporter.cc: 15308 * src/abg-diff-utils.cc: 15309 * src/abg-dwarf-reader.cc: 15310 * src/abg-hash.cc: 15311 * src/abg-ini.cc: 15312 * src/abg-ir.cc: 15313 * src/abg-leaf-reporter.cc: 15314 * src/abg-reader.cc: 15315 * src/abg-reporter-priv.cc: 15316 * src/abg-suppression.cc: 15317 * src/abg-tools-utils.cc: 15318 * src/abg-workers.cc: 15319 * src/abg-writer.cc: 15320 * tests/test-diff-filter.cc: 15321 * tests/test-diff-pkg.cc: 15322 * tests/test-read-dwarf.cc: 15323 * tests/test-read-write.cc: 15324 * tests/test-types-stability.cc: 15325 * tools/abicompat.cc: 15326 * tools/abidw.cc: 15327 * tools/abipkgdiff.cc: 15328 153292019-01-07 Dodji Seketeli <dodji@redhat.com> 15330 15331 Update copyright for 2019 15332 * include/abg-comp-filter.h: Update copyright for 2019 15333 * include/abg-comparison.h: Update copyright for 2019 15334 * include/abg-config.h: Update copyright for 2019 15335 * include/abg-corpus.h: Update copyright for 2019 15336 * include/abg-diff-utils.h: Update copyright for 2019 15337 * include/abg-dwarf-reader.h: Update copyright for 2019 15338 * include/abg-fwd.h: Update copyright for 2019 15339 * include/abg-hash.h: Update copyright for 2019 15340 * include/abg-ini.h: Update copyright for 2019 15341 * include/abg-interned-str.h: Update copyright for 2019 15342 * include/abg-ir.h: Update copyright for 2019 15343 * include/abg-libxml-utils.h: Update copyright for 2019 15344 * include/abg-libzip-utils.h: Update copyright for 2019 15345 * include/abg-reader.h: Update copyright for 2019 15346 * include/abg-reporter.h: Update copyright for 2019 15347 * include/abg-sptr-utils.h: Update copyright for 2019 15348 * include/abg-suppression.h: Update copyright for 2019 15349 * include/abg-tools-utils.h: Update copyright for 2019 15350 * include/abg-traverse.h: Update copyright for 2019 15351 * include/abg-viz-common.h: Update copyright for 2019 15352 * include/abg-viz-dot.h: Update copyright for 2019 15353 * include/abg-viz-svg.h: Update copyright for 2019 15354 * include/abg-workers.h: Update copyright for 2019 15355 * include/abg-writer.h: Update copyright for 2019 15356 * src/abg-comp-filter.cc: Update copyright for 2019 15357 * src/abg-comparison-priv.h: Update copyright for 2019 15358 * src/abg-comparison.cc: Update copyright for 2019 15359 * src/abg-config.cc: Update copyright for 2019 15360 * src/abg-corpus-priv.h: Update copyright for 2019 15361 * src/abg-corpus.cc: Update copyright for 2019 15362 * src/abg-default-reporter.cc: Update copyright for 2019 15363 * src/abg-diff-utils.cc: Update copyright for 2019 15364 * src/abg-dwarf-reader.cc: Update copyright for 2019 15365 * src/abg-hash.cc: Update copyright for 2019 15366 * src/abg-ini.cc: Update copyright for 2019 15367 * src/abg-internal.h: Update copyright for 2019 15368 * src/abg-ir-priv.h: Update copyright for 2019 15369 * src/abg-ir.cc: Update copyright for 2019 15370 * src/abg-leaf-reporter.cc: Update copyright for 2019 15371 * src/abg-libxml-utils.cc: Update copyright for 2019 15372 * src/abg-libzip-utils.cc: Update copyright for 2019 15373 * src/abg-reader.cc: Update copyright for 2019 15374 * src/abg-reporter-priv.cc: Update copyright for 2019 15375 * src/abg-reporter-priv.h: Update copyright for 2019 15376 * src/abg-sptr-utils.cc: Update copyright for 2019 15377 * src/abg-suppression-priv.h: Update copyright for 2019 15378 * src/abg-suppression.cc: Update copyright for 2019 15379 * src/abg-tools-utils.cc: Update copyright for 2019 15380 * src/abg-traverse.cc: Update copyright for 2019 15381 * src/abg-viz-common.cc: Update copyright for 2019 15382 * src/abg-viz-dot.cc: Update copyright for 2019 15383 * src/abg-viz-svg.cc: Update copyright for 2019 15384 * src/abg-workers.cc: Update copyright for 2019 15385 * src/abg-writer.cc: Update copyright for 2019 15386 * tests/print-diff-tree.cc: Update copyright for 2019 15387 * tests/test-abicompat.cc: Update copyright for 2019 15388 * tests/test-abidiff-exit.cc: Update copyright for 2019 15389 * tests/test-abidiff.cc: Update copyright for 2019 15390 * tests/test-alt-dwarf-file.cc: Update copyright for 2019 15391 * tests/test-core-diff.cc: Update copyright for 2019 15392 * tests/test-diff-dwarf-abixml.cc: Update copyright for 2019 15393 * tests/test-diff-dwarf.cc: Update copyright for 2019 15394 * tests/test-diff-filter.cc: Update copyright for 2019 15395 * tests/test-diff-pkg.cc: Update copyright for 2019 15396 * tests/test-diff-suppr.cc: Update copyright for 2019 15397 * tests/test-diff2.cc: Update copyright for 2019 15398 * tests/test-ini.cc: Update copyright for 2019 15399 * tests/test-ir-walker.cc: Update copyright for 2019 15400 * tests/test-lookup-syms.cc: Update copyright for 2019 15401 * tests/test-read-dwarf.cc: Update copyright for 2019 15402 * tests/test-read-write.cc: Update copyright for 2019 15403 * tests/test-types-stability.cc: Update copyright for 2019 15404 * tests/test-utils.cc: Update copyright for 2019 15405 * tests/test-utils.h: Update copyright for 2019 15406 * tests/test-write-read-archive.cc: Update copyright for 2019 15407 * tools/abiar.cc: Update copyright for 2019 15408 * tools/abicompat.cc: Update copyright for 2019 15409 * tools/abidiff.cc: Update copyright for 2019 15410 * tools/abidw.cc: Update copyright for 2019 15411 * tools/abilint.cc: Update copyright for 2019 15412 * tools/abipkgdiff.cc: Update copyright for 2019 15413 * tools/abisym.cc: Update copyright for 2019 15414 * tools/binilint.cc: Update copyright for 2019 15415 * tools/kmidiff.cc: Update copyright for 2019 15416 * update-copyright.sh: Update new year to 2019 15417 154182018-12-06 Xiao Jia via libabigail <libabigail@sourceware.org> 15419 15420 Some documentation fixes 15421 * COMPILING: Add the pkg-config dependency. 15422 * doc/manuals/kmidiff.rst: Replace the redundant --full-impact 15423 documentation with the proper --impacted-interfaces one. 15424 154252018-11-29 Dodji Seketeli <dodji@redhat.com> 15426 15427 Add basic support for Fortran binaries 15428 * src/abg-dwarf-reader.cc (die_pretty_print_type): Support 15429 DW_TAG_string_type DIEs. They all have the same representation 15430 for now. 15431 154322018-11-08 Dodji Seketeli <dodji@redhat.com> 15433 15434 Some light style change in abidiff.cc 15435 * tools/abidiff.cc (adjust_diff_context_for_kmidiff): Take a 15436 reference to diff_context rather than a pointer. 15437 (main): Adjust. 15438 154392018-11-08 Dodji Seketeli <dodji@redhat.com> 15440 15441 Add a --fail-no-debug-info to abidiff 15442 * doc/manuals/abidiff.rst: Document the new --fail-no-debug-info 15443 option. 15444 * tools/abidiff.cc (options::fail_no_debug_info): Define new data 15445 member. 15446 (display_usage): Provide a help string for the new 15447 --fail-no-debug-info option. 15448 (parse_command_line): Parse the new option. 15449 (main): If --fail-no-debug-info and no debug info was found, or 15450 not alternate debuginfo file was found, bail out. 15451 154522018-11-08 Dodji Seketeli <dodji@redhat.com> 15453 15454 Support having several debuginfo search dirs for a binary 15455 * doc/manuals/abidiff.rst: Adjust doc for the 15456 --debug-info-dir{1,2} that can now be provided several times. 15457 * include/abg-dwarf-reader.h ({create, reset}_read_context) 15458 (read_corpus_from_elf): Take a vector of debug info root dirs. 15459 * include/abg-tools-utils.h (trim_leading_string) 15460 (find_file_under_dir, make_path_absolute_to_be_freed) 15461 (convert_char_stars_to_char_star_stars): Declare new functions. 15462 * src/abg-dwarf-reader.cc (find_alt_debug_info_link): Renamed 15463 find_alt_debug_info_location into this. 15464 (find_alt_debug_info_path): Define new static function. 15465 (find_alt_debug_info): Take a vector of debug info root dirs. Use 15466 the new find_alt_debug_info_path to look into the debug info root 15467 dirs for the alt debug info. 15468 (read_context::debug_info_root_paths_): Define new data member. 15469 (read_context::read_context): Take a vector of debug info root 15470 dirs and initialize the new read_context::debug_info_root_paths_. 15471 (read_context::{initialize, create_default_dwfl}): Take a vector 15472 of debug info root dirs and adjust. 15473 (read_context::{add_debug_info_root_paths, 15474 add_debug_info_root_path, find_alt_debug_info}): Define new member 15475 functions. 15476 (read_context::load_debug_info): Look into the debug info roots 15477 for split debug info files. 15478 (create_read_context, read_corpus_from_elf): Take a vector of 15479 debug info root dirs and adjust. 15480 (has_alt_debug_info): Adjust. 15481 * src/abg-tools-utils.cc (trim_leading_string) 15482 (make_path_absolute_to_be_freed, find_file_under_dir) 15483 (convert_char_stars_to_char_star_stars): Define new functions. 15484 (entry_of_file_with_name): Define new static function. 15485 (build_corpus_group_from_kernel_dist_under): Adjust. 15486 * tests/print-diff-tree.cc (main): Adjust. 15487 * tests/test-diff-dwarf.cc (main): Adjust. 15488 * tests/test-ir-walker.cc (main): Adjust. 15489 * tests/test-read-dwarf.cc (main): Adjust. 15490 * tools/abicompat.cc (main): Adjust. 15491 * tools/abidiff.cc (options::di_root_paths{1,2}): Changed 15492 di_root_path{1,2} into this, change their types into vectors of 15493 allocated char*. 15494 (options::prepared_di_root_paths{1,2}): Define new data members. 15495 (options::~options): Define new destructor. 15496 (parse_command_line): Adjust. 15497 (prepare_di_root_paths): Define new static function. 15498 (handle_error): Remove arguments input_file_name, 15499 debug_info_dir{1,2}. Now just take an instance of options 15500 instead. Adjust. 15501 (main): Adjust. 15502 * tools/abidw.cc (options::dir_root_paths): Renamed dir_root_path 15503 into this and make it be a vector of allocated char*. 15504 (options::prepared_di_root_paths): Define new data member. 15505 (options::~options): Free the allocated char* in 15506 options::dir_root_paths. 15507 (parse_command_line): Support several --debug-info-dir. 15508 (load_corpus_and_write_abixml): Adjust. 15509 (prepare_di_root_paths): Define static function. 15510 (main): Adjust. 15511 * tools/abilint.cc (main): Adjust. 15512 * tools/abipkgdiff.cc (compare): Adjust. 15513 155142018-10-26 Dodji Seketeli <dodji@redhat.com> 15515 15516 Update website for 1.5 15517 * doc/website/mainpage.txt: Update website for 1.5 15518 155192018-10-26 Dodji Seketeli <dodji@redhat.com> 15520 15521 Bump version number to 1.6 15522 * configure.ac: Bump version number to 1.6 15523 155242018-10-25 Dodji Seketeli <dodji@redhat.com> 15525 15526 Update ChangeLog for 1.5 15527 * ChangeLog: Update automatically by calling make 15528 update-changelog. 15529 155302018-10-25 Dodji Seketeli <dodji@redhat.com> 15531 15532 Update NEWS file for 1.5 15533 * NEWS: Update for 1.5 15534 155352018-10-18 Dodji Seketeli <dodji@redhat.com> 15536 15537 Bug rhbz1638554 - assertion failed in is_mostly_distinct_diff 15538 * src/abg-comp-filter.cc (is_mostly_distinct_diff): Handle the 15539 case of the type diff of the function parameter diff being a 15540 distinct diff. 15541 155422018-10-17 Dodji Seketeli <dodji@redhat.com> 15543 15544 Define UINT64_MAX when it's not defined 15545 * src/abg-dwarf-reader.cc: Define UINT64_MAX when it's not defined. 15546 155472018-10-16 Dodji Seketeli <dodji@redhat.com> 15548 15549 Better support array with unknown upper bound 15550 * include/abg-comparison.h 15551 (BENIGN_INFINITE_ARRAY_CHANGE_CATEGORY): A new enumerator in the 15552 diff_category enum. 15553 (EVERYTHING_CATEGORY): Adjust. 15554 * src/abg-comparison.cc (get_default_harmless_categories_bitmap): 15555 Adjust. 15556 (operator<<(ostream& o, diff_category)): Likewise. 15557 * include/abg-ir.h (array_type_def::subrange_type::is_infinite): 15558 Declare new member function. 15559 * src/abg-ir.cc (array_type_def::subrange_type::priv::infinite_): 15560 New data member. 15561 (array_type_def::subrange_type::priv::priv): Initialize it. 15562 (array_type_def::subrange_type::get_length): Better support 15563 unknown sized subrange. 15564 (array_type_def::subrange_type::is_infinite): Define new member 15565 function. 15566 * src/abg-comp-filter.cc (has_benign_infinite_array_change): 15567 Define new static function. 15568 (categorize_harmless_diff_node): Use the new 15569 has_benign_infinite_array_change above. 15570 * src/abg-dwarf-reader.cc (build_subrange_type): Better recognize a 15571 subrange type with unknown upper bound. Represent that with the 15572 new array_type_def::subrange_type::is_infinite member property. 15573 * src/abg-reader.cc (build_subrange_type): Likewise. 15574 * tests/data/test-abidiff/test-PR18166-libtirpc.so.abi: Adjust. 15575 * tests/data/test-annotate/libtest23.so.abi: Likewise. 15576 * tests/data/test-annotate/libtest24-drop-fns-2.so.abi: Likewise. 15577 * tests/data/test-annotate/libtest24-drop-fns.so.abi: Likewise. 15578 * tests/data/test-annotate/test14-pr18893.so.abi: Likewise. 15579 * tests/data/test-annotate/test19-pr19023-libtcmalloc_and_profiler.so.abi: 15580 Likewise. 15581 * tests/data/test-annotate/test7.so.abi: Likewise. 15582 * tests/data/test-read-dwarf/libtest23.so.abi: Likewise. 15583 * tests/data/test-read-dwarf/libtest24-drop-fns-2.so.abi: Likewise. 15584 * tests/data/test-read-dwarf/libtest24-drop-fns.so.abi: Likewise. 15585 * tests/data/test-read-dwarf/test10-pr18818-gcc.so.abi: Likewise. 15586 * tests/data/test-read-dwarf/test11-pr18828.so.abi: Likewise. 15587 * tests/data/test-read-dwarf/test14-pr18893.so.abi: Likewise. 15588 * tests/data/test-read-dwarf/test19-pr19023-libtcmalloc_and_profiler.so.abi: Likewise. 15589 * tests/data/test-read-dwarf/test22-pr19097-libstdc++.so.6.0.17.so.abi: Likewise. 15590 * tests/data/test-read-dwarf/test9-pr18818-clang.so.abi: Likewise. 15591 155922018-10-11 Dodji Seketeli <dodji@redhat.com> 15593 15594 Add default suppression specification for the libvirt project 15595 * default.abignore: Suppress changes on functions with symbol 15596 version LIBVIRT_PRIVATE in libvirt.so.* shared objects. 15597 155982018-10-11 Dodji Seketeli <dodji@redhat.com> 15599 15600 Add default suppression specification for the krb5 project 15601 * default.abignore: Ignore changes about functions starting with 15602 krb5int_.*. 15603 156042018-10-03 Dodji Seketeli <dodji@redhat.com> 15605 15606 Misc comment fix 15607 * src/abg-suppression.cc (type_suppression::suppresses_diff): Fix 15608 comment. 15609 156102018-10-03 Dodji Seketeli <dodji@redhat.com> 15611 15612 Bug 23708 - categorize void* to pointer change as harmless 15613 * include/abg-comparison.h (VOID_PTR_TO_PTR_CHANGE_CATEGORY): New 15614 enumerator in the diff_category enum. Also, adjust the 15615 EVERYTHING_CATEGORY enumerator. 15616 * include/abg-fwd.h (is_void_pointer_type): Declare new function. 15617 * src/abg-comp-filter.cc (has_void_ptr_to_ptr_change): Define new 15618 static function and ... 15619 (categorize_harmless_diff_node): ... use it here. 15620 * src/abg-comparison.cc (get_default_harmless_categories_bitmap): 15621 Add the new abigail::comparison::VOID_PTR_TO_PTR_CHANGE_CATEGORY 15622 category in here. 15623 (operator<<(ostream& o, diff_category c)): Add support for the new 15624 VOID_PTR_TO_PTR_CHANGE_CATEGORY. 15625 * src/abg-ir.cc (is_void_pointer_type): Define new function. 15626 * tests/data/Makefile.am: Add the new test material below to source distribution. 15627 * tests/data/test-diff-filter/test47-filter-void-ptr-change-report-0.txt: 15628 New test reference output. 15629 * tests/data/test-diff-filter/test47-filter-void-ptr-change-v{0,1}.c: 15630 Source code of the new binary test input below. 15631 * tests/data/test-diff-filter/test47-filter-void-ptr-change-v{0,1}.o: 15632 New binary test input. 15633 * tests/test-diff-filter.cc: Add the test input/output above to 15634 test harness. 15635 156362018-10-02 Dodji Seketeli <dodji@redhat.com> 15637 15638 Categorize CV qualifier changes on fn return types as harmless 15639 * include/abg-comparison.h (FN_RETURN_TYPE_CV_CHANGE_CATEGORY): 15640 New enumerator for diff_category. 15641 (EVERYTHING_CATEGORY): Update. 15642 * src/abg-comp-filter.cc (type_diff_has_cv_qual_change_only): 15643 Factorize this function out of ... 15644 (has_fn_parm_type_cv_qual_change): ... this one. 15645 (has_fn_return_type_cv_qual_change): Define new static function. 15646 (categorize_harmless_diff_node): Use the new 15647 has_fn_return_type_cv_qual_change. 15648 * src/abg-comparison.cc (get_default_harmless_categories_bitmap): 15649 Adjust to add the new FN_RETURN_TYPE_CV_CHANGE_CATEGORY category. 15650 (operator<<(ostream& o, diff_category c)): Support the new 15651 FN_RETURN_TYPE_CV_CHANGE_CATEGORY. 15652 * tests/data/Makefile.am: Add the new test material below to 15653 source distribution. 15654 * tests/data/test-diff-filter/test46-fn-return-qual-change-report-0.txt: 15655 New reference output for the new input test. 15656 * tests/data/test-diff-filter/test46-fn-return-qual-change-v{0,1}.c: 15657 New source code for the new binary test input. 15658 * tests/data/test-diff-filter/test46-fn-return-qual-change-v{0,1}.o: 15659 New binary test input files. 15660 * tests/test-diff-filter.cc: Add the new test input above to test 15661 harness. 15662 156632018-10-01 Dodji Seketeli <dodji@redhat.com> 15664 15665 Fix propagation of private type suppression category 15666 * include/abg-comp-filter.h (has_harmful_name_change): Declare new 15667 function overloads. 15668 * include/abg-comparison.h (PRIVATE_TYPE_CATEGORY): New enumerator 15669 for diff_category; 15670 (EVERYTHING_CATEGORY): Adjust this enumerator in diff_category; 15671 (is_suppressed): Take an output parameter to say if the 15672 suppression is a private type suppression. 15673 * include/abg-suppression.h (is_private_type_suppr_spec): Take a 15674 const reference parameter and add an overload for a shared 15675 pointer. 15676 * src/abg-comp-filter.cc (has_harmful_name_change): Define new 15677 function. 15678 * src/abg-comparison-priv.h (diff::priv::is_filtered_out): Diffs 15679 of category PRIVATE_TYPE_CATEGORY are also considered filtered 15680 out. 15681 * src/abg-comparison.cc (diff::is_filtered_out): Adjust to account 15682 for canonical diffs of category PRIVATE_TYPE_CATEGORY. 15683 (diff::is_suppressed): Add an overload that takes a 15684 is_private_type output parameter. Re-write the old overload in 15685 terms of the new one. 15686 (operator<<(ostream& o, diff_category c)): Handle 15687 PRIVATE_TYPE_CATEGORY. 15688 (category_propagation_visitor::visit_end): Do not propagate 15689 PRIVATE_TYPE_CATEGORY here. Do not propagate 15690 HARMLESS_DECL_NAME_CHANGE_CATEGORY either, when the class does 15691 have a harmful decl name change. 15692 (suppression_categorization_visitor::visit_begin): Set the new 15693 PRIVATE_TYPE_CATEGORY category but do not propagate it. 15694 (suppression_categorization_visitor::visit_end): Add some 15695 comments. 15696 * src/abg-default-reporter.cc (default_reporter::report): Avoid 15697 reporting typedef underlying types that are in the 15698 PRIVATE_TYPE_CATEGORY category. 15699 * src/abg-suppression.cc (type_suppression::suppresses_diff): Do 15700 not peel typedefs if we are a private type suppression. 15701 (is_private_type_suppr_spec): Take a const reference. 15702 * tests/data/Makefile.am: Add the new test material below to 15703 source distribution. 15704 * tests/test-diff-suppr.cc: Use new test binary input. 15705 * tests/data/test-diff-filter/test7-report.txt: Adjust. 15706 * tests/data/test-diff-suppr/test39-opaque-type-report-0.txt: New 15707 test reference output. 15708 * tests/data/test-diff-suppr/test39-opaque-type-v{0,1}.c: Source 15709 code of new test binary input. 15710 * tests/data/test-diff-suppr/test39-opaque-type-v{0,1}.o: New test 15711 binary input. 15712 * tests/data/test-diff-suppr/test39-public-headers-dir/test39-header-v{0,1}.h: 15713 Source code of new test binary input. 15714 157152018-09-25 Dodji Seketeli <dodji@redhat.com> 15716 15717 PR23641 - confusion when a type definition DIE is matched by a supprspec and its decl DIEs aren't 15718 * src/abg-dwarf-reader.cc (get_opaque_version_of_type): If no 15719 pre-existing opaque version was found, a new one is created and 15720 returned. Take a needed "where_offset" parameter. 15721 (build_ir_node_from_die): Adjust the call to 15722 get_opaque_version_of_type. 15723 157242018-09-21 Dodji Seketeli <dodji@redhat.com> 15725 15726 PR23641 - Type definition DIE matched by a supprspec but not its decl 15727 *definition* of T, they will be dropped too. 15728 We'll end up with those two libraries that are identical (modulo the 15729 order in which libabigail sees type declarations and their 15730 definitions) and are considered different when a suppression 15731 specification makes us drop T: the second library appears to 15732 libabigail as if T was removed from it. 15733 This is the problem addressed by this patch. 15734 When the definition of a type T is suppressed because it's considered 15735 private then we look if there was a forward declaration for it 15736 elsewhere, that is not matched by the private type suppression 15737 specification. If we encountered such a type declaration then it 15738 means that declaration is in effect an "opaque" version of T. So 15739 rather than just dropping T altogether, we keep (and build an IR) for 15740 its opaque version only. And we drop the definition of T. 15741 This seems to fix the issue. 15742 I can't seem to reproduce the slight re-ordering of DIEs descriptions that 15743 uncover the issue so I'll rely on integration tests to catch future 15744 regressions on this issue, rather than on unit tests. Sigh. 15745 * include/abg-tools-utils.h (PRIVATE_TYPES_SUPPR_SPEC_NAME): 15746 Remove this extern constant definition. 15747 * src/abg-dwarf-reader.cc (type_is_suppressed): Add an overload 15748 that takes an additional type_is_private output parameter. 15749 (get_opaque_version_of_type): New static function. 15750 (build_ir_node_from_die): For class types, get the opaque version 15751 for suppressed private types rather than dropping them altogether. 15752 * src/abg-reader.cc (type_is_suppressed): Adjust. 15753 * src/abg-suppression-priv.h (type_is_suppressed): Add an overload 15754 that takes a type_is_private output parameter. 15755 * include/abg-suppression.h (get_private_types_suppr_spec_label) 15756 (is_private_type_suppr_spec): Declare new functions. 15757 * src/abg-suppression.cc 15758 (get_private_types_suppr_spec_label, is_private_type_suppr_spec): 15759 Define new functions. 15760 (suppression_matches_type_name_or_location): Use the new 15761 get_private_types_suppr_spec_label rather than a global extern 15762 variable. 15763 * src/abg-tools-utils.cc (handle_fts_entry): Adjust to use the new 15764 get_private_types_suppr_spec_label. 15765 (gen_suppr_spec_from_headers): Handle the case or an empty headers 15766 root dir. 15767 157682018-09-03 Dodji Seketeli <dodji@redhat.com> 15769 15770 Add option to avoid walking abigail::ir nodes twice 15771 * include/abg-ir.h (struct ir_node_visitor): Make this be a class. 15772 Add a private data member to it, following the 'pimpl' idiom. 15773 (ir_node_visitor::{allow_visiting_already_visited_type_node, 15774 mark_type_node_as_visited, forget_visited_type_nodes, 15775 type_node_has_been_visited}): Declare new member functions. 15776 * src/abg-ir.cc ({type_base, type_decl, scope_type_decl, 15777 qualified_type_decl, pointer_type_def, reference_type_def, 15778 array_type_def, enum_type_decl, typedef_decl, class_or_union, 15779 class_decl, union_decl}::traverse): Avoid re-visiting the type 15780 node if the visitor was configured as such. 15781 (struct ir_node_visitor::priv): Define new struct. 15782 (ir_node_visitor::{allow_visiting_already_visited_type_node, 15783 mark_type_node_as_visited, forget_visited_type_nodes, 15784 type_node_has_been_visited}): Define new member functions. 15785 * tests/test-ir-walker.cc 15786 (name_printing_visitor::name_printing_visitor): Avoid visiting a 15787 type node twice. 15788 157892018-08-31 Dodji Seketeli <dodji@redhat.com> 15790 15791 Fix apidoc of dwarf_reader::get_soname_of_elf_file 15792 * src/abg-dwarf-reader.cc (get_soname_of_elf_file): Document the 15793 first parameter. Remove bogus documentation of the previous 'elf' 15794 parameter. 15795 157962018-08-30 Dodji Seketeli <dodji@redhat.com> 15797 15798 Bug 23533 - Accept '=' in ini property values 15799 * src/abg-ini.cc (char_is_delimiter): Take a new include_equal 15800 flag to control is the equal character should be considered as a 15801 delimiter or not. 15802 (char_is_property_value_char): Accept the equal character as a 15803 valid property value character. 15804 * tests/Makefile.am: Build a new runtestini test from the new 15805 tests/test-ini.cc source file. 15806 * tests/data/Makefile.am: Add the two new test inputs below to 15807 source distribution. 15808 * tests/data/test-ini/test01-equal-in-property-string.{abignore, 15809 abignore.expected}: New test inputs. 15810 * tests/test-ini.cc: New test harness. 15811 158122018-08-06 Dodji Seketeli <dodji@redhat.com> 15813 15814 Make test-ir-walker work on ELF binaries directly 15815 * test-ir-walker.cc (main): Load an ABI corpus from an elf file 15816 and walk its translation units. 15817 158182018-07-17 Dodji Seketeli <dodji@redhat.com> 15819 15820 Allow use of python even when fedabipkgdiff is disabled 15821 * configure.ac: Detect the presence and version of python even 15822 when fedabipkgdiff is disabled. 15823 158242018-07-16 Dodji Seketeli <dodji@redhat.com> 15825 15826 Bump version number to 1.5 15827 * configure.ac: Bump version number to 1.5 15828 158292018-07-13 Dodji Seketeli <dodji@redhat.com> 15830 15831 Update ChangeLog for 1.4 release 15832 * ChangeLog: Update this using make update-changelog 15833 158342018-07-13 Dodji Seketeli <dodji@redhat.com> 15835 15836 Update NEWS file for 1.4 release 15837 * NEWS: Added 1.4 entries 15838 158392018-07-13 Dodji Seketeli <dodji@redhat.com> 15840 15841 Properly add test materials for test-diff-suppr/test38-char-class-in-ini* 15842 * tests/data/Makefile.am: Add proper path for 15843 test-diff-suppr/test38-char-class-in-ini*. 15844 158452018-07-12 Dodji Seketeli <dodji@redhat.com> 15846 15847 Allow square brackets in ini property values 15848 * src/abg-ini.cc (char_is_delimiter): Possibly disallow square 15849 bracket characters into the set of delimiters. 15850 * tests/data/test-diff-suppr/test38-char-class-in-ini-report-0.txt: 15851 New reference output. 15852 * tests/data/test-diff-suppr/test38-char-class-in-ini-v{0,1}.c: 15853 Source code new test binaries. 15854 * tests/data/test-diff-suppr/test38-char-class-in-ini-v{0,1}.o: 15855 New test binaries. 15856 * tests/data/test-diff-suppr/test38-char-class-in-ini.abignore: 15857 New test abi suppression file. 15858 * tests/data/Makefile.am: Add the new test materials above to 15859 source distribution. 15860 * tests/test-diff-suppr.cc: Add the test materials above to the 15861 set of tests to run. 15862 158632018-07-10 Dodji Seketeli <dodji@redhat.com> 15864 15865 Fix race between runtestdefaultsupprs{py3.sh,.py} 15866 * tests/Makefile.am: Run runtestdefaultsupprspy3.sh if we are in 15867 python3 mode otherwise run runtestdefaultsupprs.py. 15868 158692018-06-29 Dodji Seketeli <dodji@redhat.com> 15870 15871 Ensure die_function_type_is_method_type returns a class type die 15872 * src/abg-dwarf-reader.cc (die_peel_typedef): Define new static 15873 function. 15874 (die_function_type_is_method_type): Use the function above to peel 15875 the class die from potential typedefs wrapping it. 15876 158772018-06-28 Dodji Seketeli <dodji@redhat.com> 15878 15879 Misc style adjustements 15880 * include/abg-suppression.h 15881 (function_suppression::ADDED_FUNCTION_CHANGE_KIND): Fix the 15882 comment of this enumerator. 15883 (suppresses_variable): Cleanup parameter name. 15884 * src/abg-comparison.cc: Remove useless horizontal space. 15885 * src/abg-suppression.cc 15886 (variable_suppression::suppresses_variable): Fix typo. 15887 158882018-06-28 Dodji Seketeli <dodji@redhat.com> 15889 15890 Initial basic support of union type in suppression specifications 15891 * src/abg-suppression.cc (suppression_matches_type_no_name): 15892 Support union types. 15893 158942018-06-28 Dodji Seketeli <dodji@redhat.com> 15895 15896 Filter out changes like type to const type 15897 * include/abg-comparison.h (FN_PARM_TYPE_CV_CHANGE_CATEGORY): Add 15898 this new enumerator to the diff_category enum. Also, OR this to 15899 the value of the EVERYTHING_CATEGORY enumerator. 15900 * src/abg-comp-filter.cc (has_fn_parm_type_top_cv_qual_change): 15901 Rename has_fn_parm_type_cv_qual_change into this. 15902 (has_fn_parm_type_cv_qual_change): New function. 15903 (categorize_harmless_diff_node): Categorize cv qual changes as 15904 being of category FN_PARM_TYPE_CV_CHANGE_CATEGORY. 15905 * src/abg-comparison.cc (get_default_harmless_categories_bitmap): 15906 Add FN_PARM_TYPE_CV_CHANGE_CATEGORY to the default harmless 15907 categories. 15908 * tests/data/test-diff-pkg/libICE-1.0.6-1.el6.x86_64.rpm--libICE-1.0.9-2.el7.x86_64.rpm-report-0.txt: Adjust. 15909 159102018-06-28 Dodji Seketeli <dodji@redhat.com> 15911 15912 Fix redundancy detection through fn ptr and typedef paths 15913 * include/abg-comparison.h 15914 (is_function_type_diff_with_local_changes) 15915 (is_reference_or_pointer_diff_to_non_basic_distinct_types) 15916 (peel_typedef_diff): Declare new functions. 15917 * src/abg-comparison.cc 15918 (is_function_type_diff_with_local_changes) 15919 (is_reference_or_ptr_diff_to_non_basic_nor_distinct_types) 15920 (peel_typedef_diff): Define new functions. 15921 (is_reference_or_pointer_diff): Peel typedefs before operating. 15922 (redundancy_marking_visitor::visit_begin): Only sibbling parameter 15923 diff node that carry basic type changes (or distinct type changes) 15924 are *not* marked as redundant. All other kinds of sibbling 15925 parameter diff nodes are markes redundant. Also, rather than 15926 never marking function type diffs as redundant by fear of missing 15927 local changes on these, just avoid marking function type diff 15928 nodes with local changes. It's possible to be that precise now 15929 that we can detect that a diff node carries local changes. 15930 * tests/data/test-diff-suppr/test37-opaque-type-v{0,1}.o: New 15931 binary tests input. 15932 * tests/data/test-diff-suppr/test37-opaque-type-v{0,1}.c: Source 15933 code of the binary tests input above. 15934 * tests/data/test-diff-suppr/test37-opaque-type-header-dir/test37-opaque-type-header-v{0,1}.h: 15935 Headers of the binary tests input above. 15936 * tests/data/test-diff-suppr/test37-opaque-type-report-0.txt: 15937 Reference output for this new test. 15938 * tests/data/Makefile.am: Add the new test material above to 15939 source distribution. 15940 * tests/test-diff-suppr.cc (in_out_specs): Add the new test input 15941 above to the test harness. 15942 159432018-06-08 Dodji Seketeli <dodji@redhat.com> 15944 15945 Fix indentation of help string in abipkgdiff 15946 * tools/abipkgdiff.cc (display_usage): Fix indentation of help 15947 string. 15948 159492018-06-08 Dodji Seketeli <dodji@redhat.com> 15950 15951 Identify a function using its symbol name and version 15952 * src/abg-default-reporter.cc (default_reporter::report): In C, 15953 tell the user about the underlying function symbol name only if 15954 said symbol name is different from the name of the function. 15955 * src/abg-ir.cc (function_decl::get_id): If the function has an 15956 underlying symbol, use the symbol name and version as the function 15957 ID. But if the function symbol has an alias then use the linkage 15958 name as the ID. 15959 * tests/data/test-diff-pkg/elfutils-debuginfo-0.170-4.el7.x86_64.rpm: 15960 New binary test input. 15961 * tests/data/test-diff-pkg/elfutils-debuginfo-0.171-1.el7.x86_64.rpm: Likewise. 15962 * tests/data/test-diff-pkg/elfutils-devel-0.170-4.el7.x86_64.rpm: Likewise. 15963 * tests/data/test-diff-pkg/elfutils-devel-0.171-1.el7.x86_64.rpm: Likewise. 15964 * tests/data/test-diff-pkg/elfutils-libs-0.170-4.el7.x86_64.rpm: Likewise. 15965 * tests/data/test-diff-pkg/elfutils-libs-0.171-1.el7.x86_64.rpm: Likewise. 15966 * tests/data/test-diff-pkg/elfutils-libs-0.170-4.el7.x86_64-multiple-sym-vers-report-0.txt: 15967 New reference test output. 15968 * tests/data/Makefile.am: Add the new test material above to 15969 source distribution. 15970 * tests/test-diff-pkg.cc (in_out_specs): Integrate the new test 15971 inputs above into the harness. 15972 159732018-06-06 Dodji Seketeli <dodji@redhat.com> 15974 15975 Bump version to 1.4 15976 * configure.ac: Bump version to 1.4 15977 159782018-06-06 Dodji Seketeli <dodji@redhat.com> 15979 15980 Explicitely detect anonymous data member changes 15981 * include/abg-comp-filter.h (has_anonymous_data_member_change): 15982 Add new function declaration. 15983 * include/abg-fwd.h (is_data_member, is_anonymous_data_member): 15984 declare new overloads. 15985 * src/abg-comp-filter.cc (has_anonymous_data_member_change): 15986 Define new overloads. 15987 * src/abg-ir.cc (is_data_member, is_anonymous_data_member): Define 15988 new overloads. 15989 * src/abg-reporter-priv.cc (represent): In the var_diff overload, 15990 detect when we have anonymous data member changes and emit 15991 explicit error messages then. 15992 * tests/data/test-diff-dwarf/test45-anon-dm-change-report-0.txt: 15993 New test material. 15994 * tests/data/test-diff-dwarf/test45-anon-dm-change-v0.cc: Likewise. 15995 * tests/data/test-diff-dwarf/test45-anon-dm-change-v0.o: Likewise. 15996 * tests/data/test-diff-dwarf/test45-anon-dm-change-v1.cc: Likewise. 15997 * tests/data/test-diff-dwarf/test45-anon-dm-change-v1.o: Likewise. 15998 * tests/data/Makefile.am: Add the new test material above to source 15999 distribution. 16000 * tests/test-diff-dwarf.cc (in_out_specs): Add the new test 16001 material above to the test harness. 16002 * tests/data/test-diff-filter/test30-pr18904-rvalueref-report0.txt: Adjust. 16003 * tests/data/test-diff-filter/test30-pr18904-rvalueref-report1.txt: Likewise. 16004 * tests/data/test-diff-filter/test30-pr18904-rvalueref-report2.txt: Likewise. 16005 * tests/data/test-diff-filter/test35-pr18754-no-added-syms-report-0.txt: Likewise. 16006 160072018-06-05 Dodji Seketeli <dodji@redhat.com> 16008 16009 Add test44-anon-struct-union-v{0,1}.o to source distribution 16010 * tests/data/Makefile.am: Add 16011 test-diff-dwarf/test44-anon-struct-union-v{0,1}.o files to source 16012 distribution. 16013 160142018-06-04 Dodji Seketeli <dodji@redhat.com> 16015 16016 Use the flat representation for anonymous struct/unions 16017 * src/abg-ir.cc (get_class_or_union_flat_representation): Take a 16018 const class_or_union* (like what the declaration in the header 16019 file says), rather than just a class_or_union*. 16020 ({class,union}_decl::get_pretty_representation): For anonymous 16021 classes and unions, use the flat representation. 16022 * tests/data/test-annotate/libtest23.so.abi: Adjust. 16023 * tests/data/test-annotate/libtest24-drop-fns-2.so.abi: Likewise. 16024 * tests/data/test-annotate/libtest24-drop-fns.so.abi: Likewise. 16025 * tests/data/test-annotate/test13-pr18894.so.abi: Likewise. 16026 * tests/data/test-annotate/test14-pr18893.so.abi: Likewise. 16027 * tests/data/test-annotate/test15-pr18892.so.abi: Likewise. 16028 * tests/data/test-annotate/test17-pr19027.so.abi: Likewise. 16029 * tests/data/test-annotate/test18-pr19037-libvtkRenderingLIC-6.1.so.abi: Likewise. 16030 * tests/data/test-annotate/test19-pr19023-libtcmalloc_and_profiler.so.abi: Likewise. 16031 * tests/data/test-annotate/test20-pr19025-libvtkParallelCore-6.1.so.abi: Likewise. 16032 * tests/data/test-annotate/test21-pr19092.so.abi: Likewise. 16033 * tests/data/test-diff-dwarf/test43-PR22913-report-0.txt: Likewise. 16034 * tests/data/test-diff-dwarf/test44-anon-struct-union-report-0.txt: 16035 New test reference output. 16036 * tests/data/test-diff-dwarf/test44-anon-struct-union-v{0,1}.cc: 16037 Source code of new test binary outputs. 16038 * tests/data/test-diff-dwarf/test44-anon-struct-union-v{0,1}.o: 16039 New test binary outputs. 16040 * tests/data/Makefile.am: Add the new test materials above to 16041 source districution. 16042 * tests/test-diff-dwarf.cc (in_out_specs): Add the new test 16043 material above to the test harness here. 16044 * tests/data/test-diff-filter/test30-pr18904-rvalueref-report0.txt: Adjust. 16045 * tests/data/test-diff-filter/test30-pr18904-rvalueref-report1.txt: Likewise. 16046 * tests/data/test-diff-filter/test30-pr18904-rvalueref-report2.txt: Likewise. 16047 * tests/data/test-diff-filter/test35-pr18754-no-added-syms-report-0.txt: Likewise. 16048 * tests/data/test-diff-pkg/libcdio-0.94-1.fc26.x86_64--libcdio-0.94-2.fc26.x86_64-report.1.txt: Likewise. 16049 * tests/data/test-diff-pkg/spice-server-0.12.4-19.el7.x86_64-0.12.8-1.el7.x86_64-report-2.txt: Likewise. 16050 * tests/data/test-read-dwarf/test22-pr19097-libstdc++.so.6.0.17.so.abi: Likewise. 16051 160522018-06-01 Dodji Seketeli <dodji@redhat.com> 16053 16054 Better detect when pointer and qualified types carry local changes 16055 * src/abg-comparison.cc 16056 (leaf_diff_node_marker_visitor::visit_begin): Do not mark 16057 qualified types as leaf diff nodes. 16058 (redundancy_marking_visitor::visit_end): Changes to qualified type 16059 are never considered local. This is just as for pointer and 16060 reference types. 16061 * src/abg-default-reporter.cc 16062 (default_reporter::report_local_reference_type_changes): Display 16063 structural changes of the pointed-to type. 16064 (default_reporter::report): In the overload for reference_diff, 16065 better detect and handle when we have local changes, or not. 16066 * src/abg-ir.cc (equals): In the overload for qualified_type_def 16067 and reference_type_de, report local type changes of the underlying 16068 type as local changes. Add comments in the overload for pointer 16069 type, and make it look like the the overload for reference_type. 16070 * src/abg-leaf-reporter.cc (leaf_reporter::report): In the 16071 overload for pointer_diff, remove end of line. 16072 * tests/data/test-diff-filter/libtest45-basic-type-change-report-1.txt: Adjust. 16073 * tests/data/test-diff-filter/test30-pr18904-rvalueref-report0.txt: Likewise. 16074 * tests/data/test-diff-filter/test30-pr18904-rvalueref-report1.txt: Likewise. 16075 * tests/data/test-diff-filter/test30-pr18904-rvalueref-report2.txt: Likewise. 16076 * tests/data/test-diff-filter/test35-pr18754-no-added-syms-report-0.txt: Likewise. 16077 160782018-05-23 Dodji Seketeli <dodji@redhat.com> 16079 16080 Better detect when diff nodes only carry local type changes 16081 * include/abg-comparison.h ({diff, type_diff_base, decl_diff_base, 16082 distinct_diff, var_diff, pointer_diff, reference_diff, array_diff, 16083 qualified_type, enum_diff, class_or_union_diff, class_diff, 16084 base_diff, scope_diff, fn_parm_diff, function_type_diff, 16085 function_decl_diff, typedef_diff, 16086 translation_unit_diff}::has_local_changes): Return an enum 16087 change_kind, rather than just a bool. 16088 (is_diff_of_basic_type): Declare an overload that takes a boolean 16089 flag. 16090 (is_qualified_type_diff, peel_pointer_diff, peel_reference_diff) 16091 (peel_qualified_type, peel_pointer_or_qualified_type): Declare new 16092 functions 16093 * include/abg-fwd.h (peel_qualified_type): 16094 * include/abg-ir.h (enum change_kind::{LOCAL_TYPE_CHANGE_KIND, 16095 LOCAL_NON_TYPE_CHANGE_KIND, ALL_LOCAL_CHANGES_MASK}): Add these 16096 three new enumerators. 16097 * src/abg-comparison.cc ({distinct_diff, var_diff, pointer_diff, 16098 array_diff, reference_diff, qualified_type_diff, enum_diff, 16099 class_or_union_diff, class_diff, base_diff, scope_diff, 16100 fn_parm_diff, function_type_diff, function_decl_diff, 16101 type_decl_diff, typedef_diff, 16102 translation_unit_diff}::has_local_changes): Adjust to return an 16103 enum change_kind, rather than just a bool. 16104 (has_local_type_change_only): Define new functions. 16105 (has_basic_type_change_only): Use the new 16106 has_local_type_change_only function and the new overload for 16107 is_diff_of_basic_type. 16108 (is_diff_of_basic_type): Define an overload that takes a boolean 16109 flag. 16110 (is_qualified_type_diff, peel_pointer_diff, peel_reference_diff) 16111 (peel_qualified_type, peel_pointer_or_qualified_type): Define new 16112 functions. 16113 * src/abg-ir.cc (equals): In the overloads for decl_base, 16114 scope_decl, type_base, qualified_type_diff, pointer_type_def, 16115 reference_type_def, array_type_def, enum_type_decl, typedef_decl, 16116 var_decl, function_type, function_decl, function_decl::parameter, 16117 class_or_union, class_decl::base_spec and class_decl, properly set 16118 the new abigail::ir::{LOCAL_CHANGE_KIND, 16119 LOCAL_NON_TYPE_CHANGE_KIND, LOCAL_TYPE_CHANGE_KIND} bits. 16120 (types_have_similar_structure): Peel qualified types and typedefs 16121 off, first thing. 16122 (peel_qualified_or_typedef_type): Define new function. 16123 * tests/data/test-diff-pkg/spice-server-0.12.4-19.el7.x86_64-0.12.8-1.el7.x86_64-report-3.txt: 16124 Adjust. 16125 * tests/data/test-diff-filter/libtest45-basic-type-change-report-{0,1}.txt: 16126 New reference test reports. 16127 * tests/data/test-diff-filter/libtest45-basic-type-change-v{0,1}.so: 16128 New input test binaries. 16129 * tests/data/test-diff-filter/test45-basic-type-change-v{0,1}.cc: 16130 Source code of the input test binaries above. 16131 * tests/data/Makefile.am: Add the new test file above to source 16132 distribution. 16133 * tests/test-diff-filter.cc: Add the test input above to the test 16134 harness. 16135 161362018-05-18 Dodji Seketeli <dodji@redhat.com> 16137 16138 Improve detection of local *type* changes 16139 * include/abg-fwd.h (is_type_decl): Declare new overload for 16140 type_base*. 16141 (types_have_similar_structure): Declare new function. 16142 * src/abg-comparison.cc 16143 (class_or_union_diff::priv::count_filtered_changed_dm): Even when 16144 looking at local changes only, do not forget to count nodes that 16145 were filtered out. 16146 * src/abg-ir.cc (types_have_similar_structure): Define new 16147 function. 16148 (is_type_decl): Define new overload for 16149 type_base*. 16150 (is_enum_type): 16151 (equals): In the overload for var_decl, use the new 16152 types_have_similar_structure function to detect local (type) 16153 changes. 16154 * src/abg-reporter-priv.cc (represent): In the overload for 16155 var_decl, use the diff::has_local_changes function to detect local 16156 changes, now that we can better detect local changes. 16157 * tests/data/test-diff-filter/test44-anonymous-data-member-report-1.txt: 16158 Adjust. 16159 * tests/data/test-diff-suppr/test36-leaf-report-0.txt: Likewise. 16160 161612018-05-16 Dodji Seketeli <dodji@redhat.com> 16162 16163 Remove references, arrays and fn parms from leaf diff nodes 16164 * src/abg-comparison.cc 16165 (leaf_diff_node_marker_visitor::visit_begin): Do not mark 16166 references, array and fn parms diff nodes as leaf nodes. 16167 * tests/data/test-diff-pkg/spice-server-0.12.4-19.el7.x86_64-0.12.8-1.el7.x86_64-report-3.txt: 16168 Adjust. 16169 161702018-05-23 Dodji Seketeli <dodji@redhat.com> 16171 16172 Fix typo in tests/runtestdefaultsupprs.py 16173 * tests/runtestdefaultsupprs.py.in: Fix typo. 16174 161752018-05-17 Dodji Seketeli <dodji@redhat.com> 16176 16177 Update ChangeLog 16178 * ChangeLog: Update this file automatically by running the "make 16179 update-changelog" command. 16180 161812018-05-17 Dodji Seketeli <dodji@redhat.com> 16182 16183 Update NEWS file for 1.3 release 16184 * NEWS: Update for 1.3. 16185 161862018-05-16 Dodji Seketeli <dodji@redhat.com> 16187 16188 Don't bail because "rpm" issued an error 16189 * src/abg-tools-utils.cc (get_dsos_provided_by_rpm): Do not fail 16190 when the rpm command issues an error. Rather rely on the presence 16191 of a valid output or not. Also, make sure to filter out error 16192 outputs so that they don't appear in the general output of tools 16193 using this function. 16194 161952018-05-16 Dodji Seketeli <dodji@redhat.com> 16196 16197 Handle cases where no python2 interpreter is found 16198 * configure.ac: When no python2 is found and only python3 is 16199 found, then use python3. 16200 162012018-05-16 Dodji Seketeli <dodji@redhat.com> 16202 16203 Use the correct python interpreter in runtestdefaultsupprs.py 16204 * configure.ac: Make the PYTHON environemnt variable usable in 16205 auto-generated files. 16206 * tests/runtestdefaultsupprs.py.in: Use the python interpreter 16207 detected by configure. 16208 162092018-05-16 Dodji Seketeli <dodji@redhat.com> 16210 16211 Use the dynamically selected python for Koji configure tests 16212 * configure.ac: Use the python interpreter that was selected by 16213 the configure script for the Koji version test. 16214 162152018-05-14 Dodji Seketeli <dodji@redhat.com> 16216 16217 Sort the output of the leaf reporter 16218 * include/abg-comparison.h (diff_ptrs_type): Define new typedef. 16219 * src/abg-comparison-priv.h (sort_string_diff_ptr_map): Declare 16220 new function. 16221 * src/abg-comparison.cc (sort_string_diff_sptr_map): Update 16222 comment. 16223 (sort_string_diff_ptr_map): Define new function. 16224 * src/abg-leaf-reporter.cc (report_diffs): Sort the diff nodes 16225 before reporting about them. 16226 * tests/data/test-diff-suppr/test36-leaf-report-0.txt: Adjust. 16227 162282018-05-14 Dodji Seketeli <dodji@redhat.com> 16229 16230 Show data member offsets in bytes too 16231 * src/abg-reporter-priv.cc (represent): In the overload for 16232 var_diff_sptr, use the function show_offset_or_size, rather than 16233 emit_num_value. 16234 * tests/data/test-diff-filter/test31-pr18535-libstdc++-report-0.txt: Adjust. 16235 * tests/data/test-diff-filter/test31-pr18535-libstdc++-report-1.txt: Adjust. 16236 * tests/data/test-diff-filter/test44-anonymous-data-member-report-0.txt: Adjust. 16237 * tests/data/test-diff-filter/test44-anonymous-data-member-report-1.txt: Adjust. 16238 162392018-05-09 Dodji Seketeli <dodji@redhat.com> 16240 16241 Initial support of anonymous data members 16242 * include/abg-comparison.h (is_class_or_union_diff) 16243 (is_anonymous_class_or_union_diff): Declare new functions. 16244 * include/abg-fwd.h (is_class_type): Declare new overload for 16245 type_or_decl_base&. 16246 (is_data_member): Declare new overload for decl_base*. 16247 (is_anonymous_data_member) 16248 (anonymous_data_member_to_class_or_union) 16249 (get_class_or_union_flat_representation) 16250 (data_member_has_anonymous_type): Declare new functions. 16251 (is_at_class_scope): Return the class or union scope. 16252 * include/abg-ir.h (var_decl::get_qualified_name): New virtual 16253 data member which overloads decl_base::get_qualified_name. 16254 * src/abg-comparison.cc (is_class_or_union_diff) 16255 (is_anonymous_class_or_union_diff): Define new functions 16256 (leaf_diff_node_marker_visitor::visit_begin): Don't mark anonymous 16257 class or union diff nodes as diff nodes. 16258 * src/abg-ir.cc (is_data_member): Define new overload for 16259 decl_base*. 16260 (is_class_type, is_union_type): Define new overload for type_or_decl_base&. 16261 (is_anonymous_data_member) 16262 (anonymous_data_member_to_class_or_union) 16263 (get_class_or_union_flat_representation) 16264 (data_member_has_anonymous_type): Define new function overloads. 16265 (var_decl::get_qualified_name): Define new virtual member 16266 function. 16267 (is_at_class_scope): Return the class or union scope. 16268 (var_decl::get_pretty_representation): Support anonymous data 16269 members. 16270 (equals): In the overload for class_or_union_diff, mark data 16271 member textual representation changes as local changes. 16272 * src/abg-reporter-priv.cc (represent): In the overload for 16273 var_diff, support changes to anonymous data members. 16274 * src/abg-leaf-reporter.cc (leaf_reporter::report): Report sorted 16275 -- by offset -- data member changes before the ones that are 16276 sorted by other things. 16277 * tests/data/test-diff-filter/libtest44-anonymous-data-member-v{0,1}.so: 16278 New binary test input 16279 * tests/data/test-diff-filter/test44-anonymous-data-member-report-{0,1}.txt: 16280 New reference test outputs. 16281 * tests/data/test-diff-filter/test44-anonymous-data-member-v{0,1}.c: 16282 Source code of the new binary test output above. 16283 * tests/data/Makefile.am: Add the new test files above to the 16284 source distribution. 16285 * tests/data/test-annotate/libtest23.so.abi: Adjust test reference 16286 output. 16287 * tests/data/test-annotate/libtest24-drop-fns-2.so.abi: Likewise. 16288 * tests/data/test-annotate/libtest24-drop-fns.so.abi: Likewise. 16289 * tests/data/test-annotate/test13-pr18894.so.abi: Likewise. 16290 * tests/data/test-annotate/test14-pr18893.so.abi: Likewise. 16291 * tests/data/test-annotate/test15-pr18892.so.abi: Likewise. 16292 * tests/data/test-annotate/test17-pr19027.so.abi: Likewise. 16293 * tests/data/test-annotate/test18-pr19037-libvtkRenderingLIC-6.1.so.abi: Likewise. 16294 * tests/data/test-annotate/test19-pr19023-libtcmalloc_and_profiler.so.abi: Likewise. 16295 * tests/data/test-annotate/test20-pr19025-libvtkParallelCore-6.1.so.abi: Likewise. 16296 * tests/data/test-annotate/test21-pr19092.so.abi: Likewise. 16297 * tests/data/test-diff-dwarf/test43-PR22913-report-0.txt: Likewise. 16298 * tests/data/test-diff-filter/test30-pr18904-rvalueref-report0.txt: Likewise. 16299 * tests/data/test-diff-filter/test30-pr18904-rvalueref-report1.txt: Likewise. 16300 * tests/data/test-diff-filter/test30-pr18904-rvalueref-report2.txt: Likewise. 16301 * tests/data/test-diff-filter/test31-pr18535-libstdc++-report-0.txt: Likewise. 16302 * tests/data/test-diff-filter/test31-pr18535-libstdc++-report-1.txt: Likewise. 16303 * tests/data/test-diff-filter/test35-pr18754-no-added-syms-report-0.txt: Likewise. 16304 * tests/data/test-diff-pkg/libcdio-0.94-1.fc26.x86_64--libcdio-0.94-2.fc26.x86_64-report.1.txt: Likewise. 16305 * tests/data/test-diff-pkg/spice-server-0.12.4-19.el7.x86_64-0.12.8-1.el7.x86_64-report-2.txt: Likewise. 16306 163072018-04-20 Dodji Seketeli <dodji@redhat.com> 16308 16309 Represent sizes and offsets in bytes and hexadecimal values 16310 * doc/manuals/abidiff.rst: Add documentation for the new 16311 --show-bits, --show-bytes, --show-hex and --show-dec options. 16312 * doc/manuals/abipkgdiff.rst: Likewise. 16313 * doc/manuals/kmidiff.rst: Likewise. 16314 * include/abg-comparison.h (diff_context::{show_hex_values, 16315 show_offsets_sizes_in_bits}): Declare new member functions. 16316 * src/abg-comparison-priv.h (diff_context::priv::{hex_values_, 16317 show_offsets_sizes_in_bits_}): Declare new data members. 16318 (diff_context::priv::priv): Initialize them. 16319 * src/abg-comparison.cc (diff_context::{show_hex_values, 16320 show_offsets_sizes_in_bits}): Define new member functions. 16321 * src/abg-default-reporter.cc (default_reporter::report): Adjust 16322 the call to maybe_report_diff_for_symbol. 16323 * src/abg-leaf-reporter.cc (leaf_reporter::report): Likewise. 16324 * src/abg-reporter-priv.h (convert_bits_to_bytes) 16325 (maybe_convert_bits_to_bytes, emit_num_value, show_offset_or_size) 16326 (show_numerical_change): Declare new functions. 16327 (maybe_report_diff_for_symbol): Take a diff_context in parameter. 16328 * src/abg-reporter-priv.cc (convert_bits_to_bytes, emit_num_value) 16329 (maybe_convert_bits_to_bytes, show_numerical_change) 16330 (show_offset_or_size): Define new functions. 16331 (represent): In the overload for method_decl, var_decl, use the 16332 new emit_num_value function. 16333 (represent_data_member): Use the new show_offset_or_size function. 16334 (maybe_show_relative_offset_change): Use the new 16335 convert_bits_to_bytes, diff_context::show_offsets_sizes_in_bits, 16336 emit_num_value functions. 16337 (maybe_show_relative_offset_change): Likewise. 16338 (report_size_and_alignment_changes): Use the new emit_num_value 16339 and show_numerical_change functions. 16340 (maybe_report_diff_for_symbol): Tak a diff_context in argument. 16341 Use the new show_numerical_change function. 16342 * tests/test-diff-filter.cc (in_out_spec): Add a new entry to test 16343 hexa and bytes output. 16344 * tools/abidiff.cc (options::{show_hexadecimal_values, 16345 show_offsets_sizes_in_bits}): New data members. 16346 (options::options): Initialize them. 16347 (display_usage): New help strings for the new 16348 --show{bytes,bits,hex,dec} options. 16349 (parse_command_line): Parse the new --show{bytes,bits,hex,dec} options. 16350 (set_diff_context_from_opts) Set the diff context wrt hex and 16351 bytes values. 16352 * tools/abipkgdiff.cc (options::{show_hexadecimal_values, 16353 show_offsets_sizes_in_bits}): New data members. 16354 (options::options): Initialize them. 16355 (display_usage): New help strings for the new 16356 --show{bytes,bits,hex,dec} options. 16357 (set_diff_context_from_opts): Set the diff context wrt hex and 16358 bytes values. 16359 (parse_command_line): Parse the new --show{bytes,bits,hex,dec} 16360 options. 16361 * tools/kmidiff.cc (options::{show_hexadecimal_values, 16362 show_offsets_sizes_in_bits}): New data members. 16363 (options::options): Initialize them. 16364 (display_usage):New help strings for the new 16365 --show{bytes,bits,hex,dec} options. 16366 (parse_command_line): Parse the new --show{bytes,bits,hex,dec} 16367 options. 16368 (set_diff_context): Set the diff context wrt hex and bytes values. 16369 * tests/data/test-diff-filter/test30-pr18904-rvalueref-report2.txt: 16370 New reference test output. 16371 * tests/data/Makefile.am: Add the new reference test output above 16372 to source distribution. 16373 * tests/data/test-abicompat/test0-fn-changed-report-0.txt: Adjust. 16374 * tests/data/test-abicompat/test0-fn-changed-report-2.txt: Likewise. 16375 * tests/data/test-abicompat/test5-fn-changed-report-0.txt: Likewise. 16376 * tests/data/test-abicompat/test5-fn-changed-report-1.txt: Likewise. 16377 * tests/data/test-abicompat/test6-var-changed-report-0.txt: Likewise. 16378 * tests/data/test-abicompat/test6-var-changed-report-1.txt: Likewise. 16379 * tests/data/test-abicompat/test7-fn-changed-report-0.txt: Likewise. 16380 * tests/data/test-abicompat/test7-fn-changed-report-1.txt: Likewise. 16381 * tests/data/test-abicompat/test7-fn-changed-report-2.txt: Likewise. 16382 * tests/data/test-abicompat/test8-fn-changed-report-0.txt: Likewise. 16383 * tests/data/test-abicompat/test9-fn-changed-report-0.txt: Likewise. 16384 * tests/data/test-abidiff/test-PR18791-report0.txt: Likewise. 16385 * tests/data/test-abidiff/test-qual-type0-report.txt: Likewise. 16386 * tests/data/test-abidiff/test-struct0-report.txt: Likewise. 16387 * tests/data/test-abidiff/test-struct1-report.txt: Likewise. 16388 * tests/data/test-abidiff/test-var0-report.txt: Likewise. 16389 * tests/data/test-diff-dwarf/test0-report.txt: Likewise. 16390 * tests/data/test-diff-dwarf/test1-report.txt: Likewise. 16391 * tests/data/test-diff-dwarf/test10-report.txt: Likewise. 16392 * tests/data/test-diff-dwarf/test11-report.txt: Likewise. 16393 * tests/data/test-diff-dwarf/test13-report.txt: Likewise. 16394 * tests/data/test-diff-dwarf/test21-redundant-fn-report-0.txt: Likewise. 16395 * tests/data/test-diff-dwarf/test22-changed-parm-c-report-0.txt: Likewise. 16396 * tests/data/test-diff-dwarf/test26-added-parms-before-variadic-report.txt: Likewise. 16397 * tests/data/test-diff-dwarf/test27-local-base-diff-report.txt: Likewise. 16398 * tests/data/test-diff-dwarf/test3-report.txt: Likewise. 16399 * tests/data/test-diff-dwarf/test32-fnptr-changes-report-0.txt: Likewise. 16400 * tests/data/test-diff-dwarf/test33-fnref-changes-report-0.txt: Likewise. 16401 * tests/data/test-diff-dwarf/test34-pr19173-libfoo-report-0.txt: Likewise. 16402 * tests/data/test-diff-dwarf/test35-pr19173-libfoo-long-clang-report-0.txt: Likewise. 16403 * tests/data/test-diff-dwarf/test35-pr19173-libfoo-long-gcc-report-0.txt: Likewise. 16404 * tests/data/test-diff-dwarf/test36-ppc64-aliases-report-0.txt: Likewise. 16405 * tests/data/test-diff-dwarf/test37-union-report-0.txt: Likewise. 16406 * tests/data/test-diff-dwarf/test39-union-report-0.txt: Likewise. 16407 * tests/data/test-diff-dwarf/test40-report-0.txt: Likewise. 16408 * tests/data/test-diff-dwarf/test43-PR22913-report-0.txt: Likewise. 16409 * tests/data/test-diff-dwarf/test8-report.txt: Likewise. 16410 * tests/data/test-diff-dwarf/test9-report.txt: Likewise. 16411 * tests/data/test-diff-filter/test0-report.txt: Likewise. 16412 * tests/data/test-diff-filter/test01-report.txt: Likewise. 16413 * tests/data/test-diff-filter/test1-report.txt: Likewise. 16414 * tests/data/test-diff-filter/test10-report.txt: Likewise. 16415 * tests/data/test-diff-filter/test11-report.txt: Likewise. 16416 * tests/data/test-diff-filter/test13-report.txt: Likewise. 16417 * tests/data/test-diff-filter/test14-0-report.txt: Likewise. 16418 * tests/data/test-diff-filter/test14-1-report.txt: Likewise. 16419 * tests/data/test-diff-filter/test15-0-report.txt: Likewise. 16420 * tests/data/test-diff-filter/test15-1-report.txt: Likewise. 16421 * tests/data/test-diff-filter/test16-report-2.txt: Likewise. 16422 * tests/data/test-diff-filter/test16-report.txt: Likewise. 16423 * tests/data/test-diff-filter/test17-0-report.txt: Likewise. 16424 * tests/data/test-diff-filter/test17-1-report.txt: Likewise. 16425 * tests/data/test-diff-filter/test2-report.txt: Likewise. 16426 * tests/data/test-diff-filter/test27-redundant-and-filtered-children-nodes-report-0.txt: Likewise. 16427 * tests/data/test-diff-filter/test27-redundant-and-filtered-children-nodes-report-1.txt: Likewise. 16428 * tests/data/test-diff-filter/test27-redundant-and-filtered-children-nodes-report-2.txt: Likewise. 16429 * tests/data/test-diff-filter/test28-redundant-and-filtered-children-nodes-report-0.txt: Likewise. 16430 * tests/data/test-diff-filter/test28-redundant-and-filtered-children-nodes-report-1.txt: Likewise. 16431 * tests/data/test-diff-filter/test29-finer-redundancy-marking-report-0.txt: Likewise. 16432 * tests/data/test-diff-filter/test3-report.txt: Likewise. 16433 * tests/data/test-diff-filter/test30-pr18904-rvalueref-report0.txt: Likewise. 16434 * tests/data/test-diff-filter/test30-pr18904-rvalueref-report1.txt: Likewise. 16435 * tests/data/test-diff-filter/test31-pr18535-libstdc++-report-0.txt: Likewise. 16436 * tests/data/test-diff-filter/test31-pr18535-libstdc++-report-1.txt: Likewise. 16437 * tests/data/test-diff-filter/test32-ppc64le-struct-change-report0.txt: Likewise. 16438 * tests/data/test-diff-filter/test35-pr18754-no-added-syms-report-0.txt: Likewise. 16439 * tests/data/test-diff-filter/test35-pr18754-no-added-syms-report-1.txt: Likewise. 16440 * tests/data/test-diff-filter/test37-report-0.txt: Likewise. 16441 * tests/data/test-diff-filter/test39/test39-report-0.txt: Likewise. 16442 * tests/data/test-diff-filter/test42-leaf-report-output-0.txt: Likewise. 16443 * tests/data/test-diff-filter/test6-report.txt: Likewise. 16444 * tests/data/test-diff-filter/test9-report.txt: Likewise. 16445 * tests/data/test-diff-pkg/dirpkg-1-report-1.txt: Likewise. 16446 * tests/data/test-diff-pkg/dirpkg-3-report-1.txt: Likewise. 16447 * tests/data/test-diff-pkg/dirpkg-3-report-2.txt: Likewise. 16448 * tests/data/test-diff-pkg/libICE-1.0.6-1.el6.x86_64.rpm--libICE-1.0.9-2.el7.x86_64.rpm-report-0.txt: Likewise. 16449 * tests/data/test-diff-pkg/libsigc++-2.0-0c2a_2.4.0-1_amd64--libsigc++-2.0-0v5_2.4.1-1ubuntu2_amd64-report-0.txt: Likewise. 16450 * tests/data/test-diff-pkg/spice-server-0.12.4-19.el7.x86_64-0.12.8-1.el7.x86_64-report-2.txt: Likewise. 16451 * tests/data/test-diff-pkg/symlink-dir-test1-report0.txt: Likewise. 16452 * tests/data/test-diff-pkg/tarpkg-0-report-0.txt: Likewise. 16453 * tests/data/test-diff-pkg/tarpkg-1-report-0.txt: Likewise. 16454 * tests/data/test-diff-pkg/tbb-4.1-9.20130314.fc22.x86_64--tbb-4.3-3.20141204.fc23.x86_64-report-0.txt: Likewise. 16455 * tests/data/test-diff-pkg/tbb-4.1-9.20130314.fc22.x86_64--tbb-4.3-3.20141204.fc23.x86_64-report-1.txt: Likewise. 16456 * tests/data/test-diff-suppr/test0-type-suppr-report-0.txt: Likewise. 16457 * tests/data/test-diff-suppr/test0-type-suppr-report-3.txt: Likewise. 16458 * tests/data/test-diff-suppr/test0-type-suppr-report-5.txt: Likewise. 16459 * tests/data/test-diff-suppr/test0-type-suppr-report-7.txt: Likewise. 16460 * tests/data/test-diff-suppr/test1-typedef-suppr-report-0.txt: Likewise. 16461 * tests/data/test-diff-suppr/test1-typedef-suppr-report-2.txt: Likewise. 16462 * tests/data/test-diff-suppr/test11-add-data-member-report-0.txt: Likewise. 16463 * tests/data/test-diff-suppr/test12-add-data-member-report-0.txt: Likewise. 16464 * tests/data/test-diff-suppr/test12-add-data-member-report-2.txt: Likewise. 16465 * tests/data/test-diff-suppr/test13-suppr-through-pointer-report-0.txt: Likewise. 16466 * tests/data/test-diff-suppr/test13-suppr-through-pointer-report-1.txt: Likewise. 16467 * tests/data/test-diff-suppr/test14-suppr-non-redundant-report-0.txt: Likewise. 16468 * tests/data/test-diff-suppr/test14-suppr-non-redundant-report-1.txt: Likewise. 16469 * tests/data/test-diff-suppr/test15-suppr-added-fn-report-0.txt: Likewise. 16470 * tests/data/test-diff-suppr/test15-suppr-added-fn-report-1.txt: Likewise. 16471 * tests/data/test-diff-suppr/test15-suppr-added-fn-report-5.txt: Likewise. 16472 * tests/data/test-diff-suppr/test16-suppr-removed-fn-report-0.txt: Likewise. 16473 * tests/data/test-diff-suppr/test16-suppr-removed-fn-report-2.txt: Likewise. 16474 * tests/data/test-diff-suppr/test17-suppr-added-var-report-0.txt: Likewise. 16475 * tests/data/test-diff-suppr/test17-suppr-added-var-report-2.txt: Likewise. 16476 * tests/data/test-diff-suppr/test17-suppr-added-var-report-5.txt: Likewise. 16477 * tests/data/test-diff-suppr/test18-suppr-removed-var-report-0.txt: Likewise. 16478 * tests/data/test-diff-suppr/test18-suppr-removed-var-report-2.txt: Likewise. 16479 * tests/data/test-diff-suppr/test18-suppr-removed-var-report-5.txt: Likewise. 16480 * tests/data/test-diff-suppr/test2-struct-suppr-report-0.txt: Likewise. 16481 * tests/data/test-diff-suppr/test23-alias-filter-report-0.txt: Likewise. 16482 * tests/data/test-diff-suppr/test23-alias-filter-report-2.txt: Likewise. 16483 * tests/data/test-diff-suppr/test24-soname-report-1.txt: Likewise. 16484 * tests/data/test-diff-suppr/test24-soname-report-10.txt: Likewise. 16485 * tests/data/test-diff-suppr/test24-soname-report-12.txt: Likewise. 16486 * tests/data/test-diff-suppr/test24-soname-report-14.txt: Likewise. 16487 * tests/data/test-diff-suppr/test24-soname-report-16.txt: Likewise. 16488 * tests/data/test-diff-suppr/test24-soname-report-4.txt: Likewise. 16489 * tests/data/test-diff-suppr/test25-typedef-report-0.txt: Likewise. 16490 * tests/data/test-diff-suppr/test26-loc-suppr-report-0.txt: Likewise. 16491 * tests/data/test-diff-suppr/test26-loc-suppr-report-3.txt: Likewise. 16492 * tests/data/test-diff-suppr/test29-soname-report-3.txt: Likewise. 16493 * tests/data/test-diff-suppr/test29-soname-report-6.txt: Likewise. 16494 * tests/data/test-diff-suppr/test29-soname-report-8.txt: Likewise. 16495 * tests/data/test-diff-suppr/test3-struct-suppr-report-0.txt: Likewise. 16496 * tests/data/test-diff-suppr/test3-struct-suppr-report-1.txt: Likewise. 16497 * tests/data/test-diff-suppr/test3-struct-suppr-report-2.txt: Likewise. 16498 * tests/data/test-diff-suppr/test30-report-0.txt: Likewise. 16499 * tests/data/test-diff-suppr/test31-report-1.txt: Likewise. 16500 * tests/data/test-diff-suppr/test32-report-0.txt: Likewise. 16501 * tests/data/test-diff-suppr/test32-report-1.txt: Likewise. 16502 * tests/data/test-diff-suppr/test33-report-0.txt: Likewise. 16503 * tests/data/test-diff-suppr/test35-leaf-report-0.txt: Likewise. 16504 * tests/data/test-diff-suppr/test36-leaf-report-0.txt: Likewise. 16505 * tests/data/test-diff-suppr/test4-local-suppr-report-0.txt: Likewise. 16506 * tests/data/test-diff-suppr/test4-local-suppr-report-1.txt: Likewise. 16507 * tests/data/test-diff-suppr/test5-fn-suppr-report-0.txt: Likewise. 16508 * tests/data/test-diff-suppr/test5-fn-suppr-report-1.txt: Likewise. 16509 * tests/data/test-diff-suppr/test5-fn-suppr-report-2.txt: Likewise. 16510 * tests/data/test-diff-suppr/test5-fn-suppr-report-3.txt: Likewise. 16511 * tests/data/test-diff-suppr/test5-fn-suppr-report-4.txt: Likewise. 16512 * tests/data/test-diff-suppr/test5-fn-suppr-report-5.txt: Likewise. 16513 * tests/data/test-diff-suppr/test6-fn-suppr-report-0-1.txt: Likewise. 16514 * tests/data/test-diff-suppr/test6-fn-suppr-report-0.txt: Likewise. 16515 * tests/data/test-diff-suppr/test6-fn-suppr-report-1.txt: Likewise. 16516 * tests/data/test-diff-suppr/test6-fn-suppr-report-2.txt: Likewise. 16517 * tests/data/test-diff-suppr/test6-fn-suppr-report-3.txt: Likewise. 16518 * tests/data/test-diff-suppr/test7-var-suppr-report-0.txt: Likewise. 16519 * tests/data/test-diff-suppr/test7-var-suppr-report-1.txt: Likewise. 16520 * tests/data/test-diff-suppr/test7-var-suppr-report-2.txt: Likewise. 16521 * tests/data/test-diff-suppr/test7-var-suppr-report-3.txt: Likewise. 16522 * tests/data/test-diff-suppr/test7-var-suppr-report-4.txt: Likewise. 16523 * tests/data/test-diff-suppr/test7-var-suppr-report-7.txt: Likewise. 16524 * tests/data/test-diff-suppr/test7-var-suppr-report-8.txt: Likewise. 16525 * tests/data/test-diff-suppr/test8-redundant-fn-report-0.txt: Likewise. 16526 * tests/data/test-diff-suppr/test8-redundant-fn-report-1.txt: Likewise. 16527 * tests/data/test-diff-suppr/test9-changed-parm-c-report-0.txt: Likewise. 16528 * tests/data/test-diff-suppr/test9-changed-parm-c-report-1.txt: Likewise. 16529 165302018-04-18 Dodji Seketeli <dodji@redhat.com> 16531 16532 Use absolute builddir paths in automake test files 16533 * tests/runtestdefaultsupprs.py.in: Use abs_top_builddir rather 16534 than top_builddir. 16535 165362018-04-10 Jonathan Wakely <jwakely@redhat.com> 16537 16538 Use std::string::substr instead of appending single chars 16539 * src/abg-ini.cc (trim_white_space): Use std::string::substr 16540 instead of appending single chars. 16541 165422018-04-10 Jonathan Wakely <jwakely@redhat.com> 16543 16544 Rename misleading remove_trailing_white_spaces functions 16545 * include/abg-tools-utils.h (trim_white_space): Renamed 16546 remove_trailing_white_spaces into this. 16547 * src/abg-ini.cc (trim_white_space): Likewise. 16548 * src/abg-tools-utils.cc (get_dsos_provided_by_rpm): Adjust. 16549 165502018-04-10 Jonathan Wakely <jwakely@redhat.com> 16551 16552 Remove unused local set<string> variables 16553 * src/abg-tools-utils.cc (get_dsos_provided_by_rpm): Remove unsed 16554 set<string> variable. 16555 * tools/abipkgdiff.cc (maybe_create_public_dso_sonames_set): 16556 Likewise. 16557 165582018-04-10 Jonathan Wakely <jwakely@redhat.com> 16559 16560 Remove assertion with side-effects 16561 * src/abg-tools-utils.cc (get_dsos_provided_by_rpm): Fix 16562 std::string::sbustr and remove assert with side effect. 16563 165642018-04-13 Dodji Seketeli <dodji@redhat.com> 16565 16566 Misc style changes 16567 * src/abg-comparison.cc (category_propagation_visitor): Adjust comment. 16568 * src/abg-default-reporter.cc 16569 (default_reporter::report_local_function_type_changes): Remove 16570 useless new line. 16571 165722018-04-13 Dodji Seketeli <dodji@redhat.com> 16573 16574 Update tests for the "better leaf mode redundancy management" patchset 16575 * tests/data/test-abidiff-exit/test1-voffset-change-report1.txt: Adjust. 16576 * tests/data/test-abidiff/test-PR18791-report0.txt: Likewise. 16577 * tests/data/test-abidiff/test-enum0-report.txt: Likewise. 16578 * tests/data/test-abidiff/test-enum1-report.txt: Likewise. 16579 * tests/data/test-diff-filter/test1-report.txt: Likewise. 16580 * tests/data/test-diff-filter/test14-0-report.txt: Likewise. 16581 * tests/data/test-diff-filter/test15-0-report.txt: Likewise. 16582 * tests/data/test-diff-filter/test17-0-report.txt: Likewise. 16583 * tests/data/test-diff-filter/test27-redundant-and-filtered-children-nodes-report-0.txt: Likewise. 16584 * tests/data/test-diff-filter/test28-redundant-and-filtered-children-nodes-report-0.txt: Likewise. 16585 * tests/data/test-diff-filter/test3-report.txt: Likewise. 16586 * tests/data/test-diff-filter/test30-pr18904-rvalueref-report0.txt: Likewise. 16587 * tests/data/test-diff-filter/test30-pr18904-rvalueref-report1.txt: Likewise. 16588 * tests/data/test-diff-filter/test32-ppc64le-struct-change-report0.txt: Likewise. 16589 * tests/data/test-diff-filter/test35-pr18754-no-added-syms-report-0.txt: Likewise. 16590 * tests/data/test-diff-filter/test35-pr18754-no-added-syms-report-1.txt: Likewise. 16591 * tests/data/test-diff-filter/test4-report.txt: Likewise. 16592 * tests/data/test-diff-filter/test41-report-0.txt: Likewise. 16593 * tests/data/test-diff-filter/test42-leaf-report-output-0.txt: Likewise. 16594 * tests/data/test-diff-pkg/dirpkg-3-report-1.txt: Likewise. 16595 * tests/data/test-diff-pkg/dirpkg-3-report-2.txt: Likewise. 16596 * tests/data/test-diff-pkg/libICE-1.0.6-1.el6.x86_64.rpm--libICE-1.0.9-2.el7.x86_64.rpm-report-0.txt: Likewise. 16597 * tests/data/test-diff-pkg/libcdio-0.94-1.fc26.x86_64--libcdio-0.94-2.fc26.x86_64-report.1.txt: Likewise. 16598 * tests/data/test-diff-pkg/spice-server-0.12.4-19.el7.x86_64-0.12.8-1.el7.x86_64-report-0.txt: Likewise. 16599 * tests/data/test-diff-pkg/spice-server-0.12.4-19.el7.x86_64-0.12.8-1.el7.x86_64-report-1.txt: Likewise. 16600 * tests/data/test-diff-pkg/spice-server-0.12.4-19.el7.x86_64-0.12.8-1.el7.x86_64-report-2.txt: Likewise. 16601 * tests/data/test-diff-pkg/spice-server-0.12.4-19.el7.x86_64-0.12.8-1.el7.x86_64-report-3.txt: Likewise. 16602 * tests/data/test-diff-pkg/tbb-4.1-9.20130314.fc22.x86_64--tbb-4.3-3.20141204.fc23.x86_64-report-0.txt: Likewise. 16603 * tests/data/test-diff-suppr/test1-typedef-suppr-report-1.txt: Likewise. 16604 * tests/data/test-diff-suppr/test1-typedef-suppr-report-2.txt: Likewise. 16605 * tests/data/test-diff-suppr/test13-suppr-through-pointer-report-1.txt: Likewise. 16606 * tests/data/test-diff-suppr/test14-suppr-non-redundant-report-0.txt: Likewise. 16607 * tests/data/test-diff-suppr/test14-suppr-non-redundant-report-1.txt: Likewise. 16608 * tests/data/test-diff-suppr/test15-suppr-added-fn-report-1.txt: Likewise. 16609 * tests/data/test-diff-suppr/test15-suppr-added-fn-report-2.txt: Likewise. 16610 * tests/data/test-diff-suppr/test15-suppr-added-fn-report-3.txt: Likewise. 16611 * tests/data/test-diff-suppr/test15-suppr-added-fn-report-4.txt: Likewise. 16612 * tests/data/test-diff-suppr/test16-suppr-removed-fn-report-1.txt: Likewise. 16613 * tests/data/test-diff-suppr/test16-suppr-removed-fn-report-2.txt: Likewise. 16614 * tests/data/test-diff-suppr/test16-suppr-removed-fn-report-3.txt: Likewise. 16615 * tests/data/test-diff-suppr/test16-suppr-removed-fn-report-4.txt: Likewise. 16616 * tests/data/test-diff-suppr/test17-suppr-added-var-report-1.txt: Likewise. 16617 * tests/data/test-diff-suppr/test17-suppr-added-var-report-2.txt: Likewise. 16618 * tests/data/test-diff-suppr/test17-suppr-added-var-report-3.txt: Likewise. 16619 * tests/data/test-diff-suppr/test17-suppr-added-var-report-4.txt: Likewise. 16620 * tests/data/test-diff-suppr/test18-suppr-removed-var-report-1.txt: Likewise. 16621 * tests/data/test-diff-suppr/test18-suppr-removed-var-report-3.txt: Likewise. 16622 * tests/data/test-diff-suppr/test18-suppr-removed-var-report-4.txt: Likewise. 16623 * tests/data/test-diff-suppr/test2-struct-suppr-report-0.txt: Likewise. 16624 * tests/data/test-diff-suppr/test2-struct-suppr-report-1.txt: Likewise. 16625 * tests/data/test-diff-suppr/test25-typedef-report-1.txt: Likewise. 16626 * tests/data/test-diff-suppr/test27-add-aliased-function-report-1.txt: Likewise. 16627 * tests/data/test-diff-suppr/test27-add-aliased-function-report-2.txt: Likewise. 16628 * tests/data/test-diff-suppr/test27-add-aliased-function-report-5.txt: Likewise. 16629 * tests/data/test-diff-suppr/test28-add-aliased-function-report-3.txt: Likewise. 16630 * tests/data/test-diff-suppr/test28-add-aliased-function-report-6.txt: Likewise. 16631 * tests/data/test-diff-suppr/test30-report-1.txt: Likewise. 16632 * tests/data/test-diff-suppr/test34-report-0.txt: Likewise. 16633 * tests/data/test-diff-suppr/test35-leaf-report-0.txt: Likewise. 16634 * tests/data/test-diff-suppr/test36-leaf-report-0.txt: Likewise. 16635 * tests/data/test-diff-suppr/test5-fn-suppr-report-1.txt: Likewise. 16636 * tests/data/test-diff-suppr/test5-fn-suppr-report-2.txt: Likewise. 16637 * tests/data/test-diff-suppr/test5-fn-suppr-report-3.txt: Likewise. 16638 * tests/data/test-diff-suppr/test5-fn-suppr-report-4.txt: Likewise. 16639 * tests/data/test-diff-suppr/test5-fn-suppr-report-5.txt: Likewise. 16640 * tests/data/test-diff-suppr/test7-var-suppr-report-1.txt: Likewise. 16641 * tests/data/test-diff-suppr/test7-var-suppr-report-2.txt: Likewise. 16642 * tests/data/test-diff-suppr/test7-var-suppr-report-3.txt: Likewise. 16643 * tests/data/test-diff-suppr/test7-var-suppr-report-4.txt: Likewise. 16644 * tests/data/test-diff-suppr/test7-var-suppr-report-5.txt: Likewise. 16645 * tests/data/test-diff-suppr/test7-var-suppr-report-6.txt: Likewise. 16646 * tests/data/test-diff-suppr/test7-var-suppr-report-7.txt: Likewise. 16647 * tests/data/test-diff-suppr/test7-var-suppr-report-9.txt: Likewise. 16648 * tests/data/test-diff-suppr/test8-redundant-fn-report-0.txt: Likewise. 16649 166502018-04-13 Dodji Seketeli <dodji@redhat.com> 16651 16652 [abipkgdiff]: in leaf mode we always show redundant changes 16653 * tools/abipkgdiff.cc (set_diff_context_from_opts): 16654 diff_context::show_leaf_changes_only automatically makes us show 16655 redundant changes. So do not try to show redundant changes in 16656 that case. 16657 166582018-04-13 Dodji Seketeli <dodji@redhat.com> 16659 16660 When we say an a change was reported earlier give its source location 16661 * src/abg-reporter-priv.h 16662 (RETURN_IF_BEING_REPORTED_OR_WAS_REPORTED_EARLIER2) 16663 (RETURN_IF_BEING_REPORTED_OR_WAS_REPORTED_EARLIER3): Report the 16664 location of the artifact. 16665 166662018-04-13 Dodji Seketeli <dodji@redhat.com> 16667 16668 Avoid reporting an enum change if it has already been reported 16669 * src/abg-default-reporter.cc (default_reporter::report): In the 16670 enum_diff overload, do not report a node if it's always been 16671 reported; rather, say that it has been reported earlier. 16672 166732018-04-13 Dodji Seketeli <dodji@redhat.com> 16674 16675 Always show redundant changes in leaf mode 16676 * src/abg-comparison.cc (diff_context::show_leaf_changes_only): 16677 Show redundant changes when in leaf mode. 16678 166792018-04-12 Dodji Seketeli <dodji@redhat.com> 16680 16681 Fix leaf report of class data member changes 16682 * src/abg-leaf-reporter.cc (leaf_reporter::report): In the 16683 class_or_uion_diff overload, do not emit the data member changes 16684 header twice. 16685 * src/abg-reporter-priv.cc (represent): In the var_diff_sptr 16686 overload, show data member changes when its textual representation 16687 changed. 16688 166892018-04-12 Dodji Seketeli <dodji@redhat.com> 16690 16691 Only show leaf type changes in the leaf type changes section 16692 * src/abg-leaf-reporter.cc (report_type_changes_from_diff_maps): 16693 Split this out from leaf_reporter::report_changes_from_diff_maps 16694 and make it report only about leaf *type* changes. 16695 (leaf_reporter::report_changes_from_diff_maps): Use the new 16696 report_type_changes_from_diff_maps function. 16697 (leaf_reporter::report): In the overload for corpus_diff, use the 16698 new report_type_changes_from_diff_maps function, instead of the 16699 report_changes_from_diff_maps function. 16700 167012018-04-12 Dodji Seketeli <dodji@redhat.com> 16702 16703 Don't filter out typedef changes with redundant underlying type changes 16704 * src/abg-default-reporter.cc (default_reporter::report): In the 16705 overload for typedef, report underlying type changes een when they 16706 are redundant, if the whole typedef change needs to be repoted. 16707 167082018-04-12 Dodji Seketeli <dodji@redhat.com> 16709 16710 Improve function changes reporting in leaf and default mode 16711 * src/abg-default-reporter.cc (default_reporter::report): In the 16712 overload for fn_parm_diff, consider that parameter type changes are 16713 never redundant. 16714 * src/abg-ir.cc (equals): In the overload for function_type, 16715 consider that if the textual representation of the function return 16716 type or a function parameter changed, then that's a local change 16717 for the current instance of function_type. Likewise, in the 16718 overload for function_decl, consider that a change in the textual 16719 representation of the function_decl is a local change. Likewise, 16720 in the overload of function_decl::parameter, consider that a 16721 change in the textual representation of the parameter type is a 16722 local change. 16723 * src/abg-leaf-reporter.cc (leaf_reporter::report): Report leaf 16724 changes to functions. 16725 167262018-04-12 Dodji Seketeli <dodji@redhat.com> 16727 16728 Better handle category propagation of pointer changes 16729 * src/abg-comparison.cc 16730 (leaf_diff_node_marker_visitor::visit_begin): Do not consider 16731 local pointer changes as being leaf changes. 16732 (suppression_categorization_visitor::visit_end): 16733 Allow propagation of the SUPPRESSED_CATEGORY category to pointer 16734 diff nodes. 16735 (redundancy_marking_visitor::visit_end): Allow propagation of the 16736 REDUNDANT_CATEGORY category to pointer diff nodes. 16737 * src/abg-ir.cc (equals): In the pointer_type_def overload, 16738 consider changes where the textual representation of the 16739 pointed-to changed as being local to the pointer type. 16740 * src/abg-leaf-reporter.cc (leaf_reporter::report): In the 16741 pointer_diff overload, report the change in the textual 16742 representation of the pointer. 16743 167442018-04-11 Dodji Seketeli <dodji@redhat.com> 16745 16746 Fix meaning of "harmless name change" to avoid overfiltering 16747 * include/abg-ir.h (enum_has_non_name_change): Declare new 16748 * function. Make it a friend of class enum_type_decl. 16749 * src/abg-comp-filter.cc (has_harmless_name_change): A typedef 16750 name change cannot be harmless if the textual representation of 16751 the underlying type changes too. Also, use the new 16752 enum_has_non_name_change to tighten the harmless name change 16753 definition for an enum. 16754 * src/abg-default-reporter.cc 16755 (default_reporter::report_local_typedef_changes): If the name of 16756 the typedef changed, report it no matter what. 16757 * src/abg-ir.cc (enum_has_non_name_change): Define new function. 16758 167592018-04-11 Dodji Seketeli <dodji@redhat.com> 16760 16761 Do not mark "distinct" diff nodes as being redundant 16762 * include/abg-comp-filter.h (is_mostly_distinct_diff): Declare new 16763 function. 16764 * include/abg-fwd.h (peel_typedef_pointer_or_reference_type): Take 16765 a boolean to decide to peel qualified types or not. 16766 * src/abg-comp-filter.cc (is_mostly_distinct_diff): Define this function. 16767 * src/abg-comparison.cc (redundancy_marking_visitor::visit_begin): 16768 Do not mark distinct_diff nodes as being redundant. 16769 * src/abg-ir.cc (peel_typedef_pointer_or_reference_type): 16770 Implement taking a boolean to decide to peel qualified types or 16771 not. 16772 167732018-04-11 Dodji Seketeli <dodji@redhat.com> 16774 16775 Overhaul of the report diff stats summary 16776 * include/abg-comparison.h 16777 (corpus_diff::diff_stats::{num_leaf_type_changes, 16778 num_leaf_type_changes_filtered_out, net_num_leaf_type_changes, 16779 num_leaf_func_changes, num_leaf_func_changes_filtered_out, 16780 net_num_leaf_func_changes, num_leaf_var_changes, 16781 num_leaf_var_changes_filtered_out, net_num_leaf_var_changes}): 16782 Declare new member functions. 16783 * src/abg-comparison-priv.h 16784 (corpus_diff::priv::count_leaf_type_changes): Declare new member 16785 function. 16786 * src/abg-comparison.cc 16787 (corpus_diff::diff_stats::net_num_leaf_changes): Fix comment. 16788 (corpus_diff::diff_stats::{num_leaf_type_changes, 16789 num_leaf_type_changes_filtered_out, net_num_leaf_type_changes, 16790 num_leaf_func_changes, num_leaf_func_changes_filtered_out, 16791 net_num_leaf_func_changes, num_leaf_var_changes, 16792 num_leaf_var_changes_filtered_out, net_num_leaf_var_changes}): 16793 Define these member functions. 16794 (do_count_diff_map_changes): Move this macro out of ... 16795 (corpus_diff::priv::count_leaf_changes): ... this. Also, use 16796 the new function corpus_diff::priv::count_leaf_type_changes. 16797 (corpus_diff::priv::count_leaf_type_changes): Splitted this out of 16798 the previous corpus_diff::priv::count_leaf_changes function. 16799 (corpus_diff::priv::apply_filters_and_compute_diff_stats): Account 16800 for (filtered) types, functions and variables, in a leaf change 16801 manner. 16802 (corpus_diff::priv::emit_diff_stats): Emit a better stat summary 16803 that takes into account leaf-changed types, functions and 16804 variables. 16805 168062018-04-10 Dodji Seketeli <dodji@redhat.com> 16807 16808 Do not show decl-only-to-def changes in the leaf reporter 16809 * include/abg-comp-filter.h (has_class_decl_only_def_change): 16810 Declare this function. 16811 * src/abg-comp-filter.cc (has_class_decl_only_def_change): Make 16812 this function be non-static. 16813 * src/abg-comparison.cc 16814 (leaf_diff_node_marker_visitor::visit_begin): Use it to avoid 16815 marking class-decl-only-def changes as being leaf changes. 16816 * libtest43-decl-only-def-change-leaf-report-v0.so: New test input file. 16817 * libtest43-decl-only-def-change-leaf-report-v1.so: Likewise. 16818 * test43-decl-only-def-change-leaf-report-0.txt: Likewise. 16819 * test43-decl-only-def-change-leaf-report-v0.cc: Likewise. 16820 * test43-decl-only-def-change-leaf-report-v1.cc: Likewise. 16821 * tests/test-diff-filter.cc (in_out_specs): Run the test over the 16822 new test input. 16823 * tests/data/Makefile.am: Add the new test materials to source 16824 distribution. 16825 168262018-03-30 Dodji Seketeli <dodji@redhat.com> 16827 16828 Don't possibly forget type definition when reading a CorpusGroup 16829 * src/abg-dwarf-reader.cc (add_or_update_class_type): Look for 16830 declaration-only-ness to determine if we've already seen the same 16831 type from the main corpus of the group. 16832 168332018-03-30 Dodji Seketeli <dodji@redhat.com> 16834 16835 Don't crash when invoking kmidiff with no debug info root dir 16836 * tools/kmidiff.cc (main): Do not crash on empty debug info root 16837 dir. 16838 168392018-03-30 Dodji Seketeli <dodji@redhat.com> 16840 16841 Do not enable fedabipkgdiff tests if fedabipkgdiff itself is disabled 16842 * tests/Makefile.am: Run runtestfedabipkgdiff{py3?}.py only if 16843 fedabipkgdiff itself is enabled. 16844 168452018-03-25 Chenxiong Qi <cqi@redhat.com> 16846 16847 Bug 22722 - Make fedabipkgdiff and its tests support both python 3 and 2 16848 * configure.ac: Add new option --enable-python3. Add new 16849 test runner file tests/runtestdefaultsupprs-py3 and 16850 tests/runtestfedabipkgdiffpy3.sh. Add required six Python module. 16851 * tests/Makefile.am: Add new test files 16852 tests/runtestdefaultsupprspy3.sh and 16853 tests/runtestfedabipkgdiffpy3.sh accordingly. 16854 * tests/mockfedabipkgdiff.in: Convert print statement to 16855 six.print_. Replace call to function filter with list 16856 comprehension. Replace basestring with six.string_types. 16857 * tests/runtestdefaultsupprspy3.sh.in: New shell script to run 16858 test runtestdefaultsupprs with Python 3. 16859 * tests/runtestdefaultsupprs.py.in: Repalce a few tabs with 16860 proper number of spaces which is detected by Python 3 16861 interpreter. 16862 * tests/runtestfedabipkgdiffpy3.sh.in: New shell script to run 16863 test runtestfedabipkgdiff with Python 3. 16864 * tests/runtestfedabipkgdiff.py.in: Use python from env in 16865 shebang instead of a fixed path to a Python interpreter. 16866 * tools/fedabipkgdiff: Globally replace print statement with a 16867 function call to print which is available by importing 16868 print_function from __future__ module. Use six.print_ to output 16869 string to stderr instead. Convert function call to map to 16870 for-loop. (cmp_nvr): Change argument to handle a Koji build 16871 mapping instead of only the nvr. (Brew.listBuilds): use the new 16872 cmp_nvr to sort builds. 16873 168742018-03-29 Dodji Seketeli <dodji@redhat.com> 16875 16876 Detect the presence of 'rpm' as it's now needed by abipkgdiff 16877 * configure.ac: Detect that the 'rpm' is present. Otherwise, 16878 disable rpm support. 16879 168802018-03-28 Dodji Seketeli <dodji@redhat.com> 16881 16882 Make abipkgdiff avoid comparing private DSOs from RPMs 16883 * doc/manuals/abipkgdiff.rst: Add documentation for the new 16884 --private-dso option. 16885 * include/abg-tools-utils.h (execute_command_and_get_output) 16886 (execute_command_and_get_output, remove_trailing_white_spaces): 16887 Declare new functions. 16888 * src/abg-tools-utils.cc (execute_command_and_get_output) 16889 (get_dsos_provided_by_rpm, remove_trailing_white_spaces): Define 16890 new functions. 16891 * tests/test-diff-pkg.cc (in_out_specs): Add the new --private-dso 16892 option where it makes sense. 16893 * tools/abipkgdiff.cc (options::compare_private_dsos): Add new 16894 data member. 16895 (options::options): Initialize it. 16896 (package::public_dso_sonames_): Add new data member. 16897 (package::public_dso_sonames): Add new accessors pair. 16898 (display_usage): Add a help string for the new --private-dso 16899 option. 16900 (maybe_create_public_dso_sonames_set) 16901 (must_compare_public_dso_only): Define new static functions. 16902 (create_maps_of_package_content): Call the new 16903 maybe_create_public_dso_sonames_set. Skip packages which SONAME 16904 is not in the set of public SONAMES. 16905 (parse_command_line): Parse the new --private-dso option. 16906 169072018-03-16 Dodji Seketeli <dodji@redhat.com> 16908 16909 Skip changes to function *types* in the leaf reporter 16910 * src/abg-leaf-reporter.cc 16911 (leaf_reporter::report_changes_from_diff_maps): Don't report 16912 function type changes. 16913 169142018-03-16 Dodji Seketeli <dodji@redhat.com> 16915 16916 Report change locations in leaf reports 16917 * src/abg-leaf-reporter.cc (report_diffs): Report the source 16918 location of the diff. 16919 * tests/data/test-diff-filter/test42-leaf-report-output-0.txt: 16920 Update test reference output. 16921 * tests/data/test-diff-pkg/spice-server-0.12.4-19.el7.x86_64-0.12.8-1.el7.x86_64-report-3.txt: 16922 Likewise. 16923 * tests/data/test-diff-suppr/test35-leaf-report-0.txt: Likewise. 16924 * tests/data/test-diff-suppr/test36-leaf-report-0.txt: Likewise. 16925 169262018-03-06 Dodji Seketeli <dodji@redhat.com> 16927 16928 Make the "upload-release" target be usable in parallel 16929 * Makefile.am: Re-arrange the upload-release target to make it 16930 usable with 'make upload-release -jN'. 16931 169322018-03-06 Dodji Seketeli <dodji@redhat.com> 16933 16934 Bump version number to 1.3 16935 * configure.ac: Now that 1.2 is out of the door, bump version 16936 number to 1.3 16937 169382018-03-06 Dodji Seketeli <dodji@redhat.com> 16939 16940 Update website for 1.2 16941 * doc/website/mainpage.txt: Update link to download the tarball, 16942 for 1.2. 16943 169442018-03-06 Dodji Seketeli <dodji@redhat.com> 16945 16946 Update ChangeLog for 1.2 16947 * ChangeLog: Updated automatically by running make update-changelog. 16948 169492018-03-06 Dodji Seketeli <dodji@redhat.com> 16950 16951 Update NEWS file for 1.2 16952 * NEWS: Update for 1.2 16953 169542018-01-31 Dodji Seketeli <dodji@redhat.com> 16955 16956 Fix typo in abipkgdiff documenation 16957 * doc/manuals/abipkgdiff.rst: Fix a typo 16958 169592018-01-31 Dodji Seketeli <dodji@redhat.com> 16960 16961 Update abipkgdiff documentation wrt suppression specifications 16962 * doc/manuals/abipkgdiff.rst: Mention the .abignore file that is 16963 read by the tool and considered as a suppression specification 16964 file. 16965 169662018-03-06 Dodji Seketeli <dodji@redhat.com> 16967 16968 Fix indentation in the DWARF reader 16969 * src/abg-dwarf-reader.cc (build_subrange_type): Fix indentation. 16970 169712018-03-02 Dodji Seketeli <dodji@redhat.com> 16972 16973 Fix the output indentation of abidiff --help 16974 * tools/abidiff.cc (display_usage): Fix indentation of the help 16975 string for the --drop-private-types option. 16976 169772018-03-02 Dodji Seketeli <dodji@redhat.com> 16978 16979 Bug 22913 - Correctly de-duplicate pointers to anonymous structs inside a given 16980 * src/abg-dwarf-reader.cc 16981 (pointer_or_qual_die_of_anonymous_class_type) 16982 (die_is_qualified_type): Define new functions. 16983 (compare_dies): If pointers, reference or qualified type have an 16984 anonymous struct as their underlying type, then we need to 16985 structurally compare the underlying anonymous struct. 16986 * tests/data/test-diff-dwarf/libtest43-PR22913-v{0,1}.so: New 16987 binary test input files. 16988 * tests/data/test-diff-dwarf/test43-PR22913-report-0.txt: New 16989 reference output of the comparison of the two binaries above. 16990 * tests/data/test-diff-dwarf/test43-PR22913-v{0,1}.c: Source code 16991 of the binaries above. 16992 * tests/test-diff-dwarf.cc (in_out_specs): Make the test harness 16993 compare the two binaries above. 16994 * tests/data/Makefile.am: Add the new test files above to the 16995 source distribution. 16996 169972018-02-27 Dodji Seketeli <dodji@redhat.com> 16998 16999 Initial support for Ada ranges 17000 * include/abg-ir.h (type_maps::subrange_types): Declare new 17001 accessors. 17002 (is_ada_language, is_subrange_type): Declare new functions. 17003 (class array_type_def::subrange_type): Make this extend type_base 17004 and decl_base. 17005 (array_type_def::subrange_type::{get_language, operator==, 17006 get_pretty_representation, traverse}): Declare new member 17007 functions. 17008 (ir_node_visitor::visit_begin): Add new overloads for 17009 array_type::def::subrange_type. 17010 * src/abg-dwarf-reader.cc (build_subrange_type): Define new static 17011 function. 17012 (build_subranges_from_array_type_die): Cleanup the parameters of 17013 this function. 17014 (build_array_type): Adjust. 17015 (build_ir_node_from_die): Support free-form DW_TAG_subrange_type. 17016 (read_context::odr_is_relevant): Handle Ada. 17017 (die_qualified_type_name): Support DW_TAG_subrange_type. 17018 (die_pretty_print_type): Likewise. Make the handling of 17019 DW_TAG_subrange_type use die_qualified_type_name. Adjust the use 17020 of build_subranges_from_array_type_die. 17021 (get_scope_die): a DW_TAG_array_type cannot be a scope. Rather, 17022 it's its scope that can be a scope. 17023 * src/abg-ir.cc (type_maps::priv::subrange_types_): New data 17024 member. 17025 (type_maps::empty): Adjust. 17026 (type_maps::subrange_types): Define new accessors. 17027 (is_ada_language, is_subrange_type): Define new functions. 17028 (odr_is_relevant): Support Ada. 17029 (maybe_update_types_lookup_map): Add an overload for 17030 array_type_def::subrange_type. In the decl_base_sptr overload, 17031 add support for the array_type_def::subrange_type type. 17032 (struct array_type_def::subrange_type::priv::location_): Remove 17033 this as it's now carried by the parent decl_base type. 17034 (array_type_def::subrange_type::subrange_type): Adjust. Take an 17035 environement pointer, a name, an underlying type and a language. 17036 (array_type_def::subrange_type::{g,s}et_underlying_type): Define 17037 new accessors. 17038 (array_type_def::subrange_type::{get_language, 17039 get_pretty_representation, traverse}): Define new member 17040 functions. 17041 (array_type_def::subrange_type::as_string): Add a representation 17042 for Ada. 17043 (equals): Define new overload for array_type_def::subrange_type. 17044 (array_type_def::subrange_type::operator==): Define three new 17045 overloads for decl_base, type_base and subrange_type. 17046 (array_type_def::subrange_type::operator!=): Define new operator. 17047 (get_type_representation): In the overload for array_type_def, 17048 support Ada. 17049 (array_type_def::get_language): Define new member function. 17050 (ir_node_visitor::visit_{begin,end}): Define new overloads for 17051 array_type_def::subrange_type. 17052 * src/abg-reader.cc (build_subrange_type): Adjust documentation. 17053 Support the new 'id', 'name', and 'type-id' properties. 17054 * src/abg-writer.cc (write_array_subrange_type): Define new static 17055 function. 17056 (write_array_type_def): Use the new write_array_subrange_type 17057 function. 17058 * tests/data/test-abidiff/test-PR18166-libtirpc.so.abi: Adjust. 17059 * tests/data/test-annotate/libtest23.so.abi: Likewise. 17060 * tests/data/test-annotate/libtest24-drop-fns-2.so.abi: Likewise. 17061 * tests/data/test-annotate/libtest24-drop-fns.so.abi: Likewise. 17062 * tests/data/test-annotate/test13-pr18894.so.abi: Likewise. 17063 * tests/data/test-annotate/test14-pr18893.so.abi: Likewise. 17064 * tests/data/test-annotate/test15-pr18892.so.abi: Likewise. 17065 * tests/data/test-annotate/test17-pr19027.so.abi: Likewise. 17066 * tests/data/test-annotate/test18-pr19037-libvtkRenderingLIC-6.1.so.abi: Likewise. 17067 * tests/data/test-annotate/test19-pr19023-libtcmalloc_and_profiler.so.abi: Likewise. 17068 * tests/data/test-annotate/test20-pr19025-libvtkParallelCore-6.1.so.abi: Likewise. 17069 * tests/data/test-annotate/test21-pr19092.so.abi: Likewise. 17070 * tests/data/test-annotate/test7.so.abi: Likewise. 17071 * tests/data/test-read-dwarf/PR22015-libboost_iostreams.so.abi: Likewise. 17072 * tests/data/test-read-dwarf/PR22122-libftdc.so.abi: Likewise. 17073 * tests/data/test-read-dwarf/libtest23.so.abi: Likewise. 17074 * tests/data/test-read-dwarf/libtest24-drop-fns-2.so.abi: Likewise. 17075 * tests/data/test-read-dwarf/libtest24-drop-fns.so.abi: Likewise. 17076 * tests/data/test-read-dwarf/test10-pr18818-gcc.so.abi: Likewise. 17077 * tests/data/test-read-dwarf/test11-pr18828.so.abi: Likewise. 17078 * tests/data/test-read-dwarf/test12-pr18844.so.abi: Likewise. 17079 * tests/data/test-read-dwarf/test13-pr18894.so.abi: Likewise. 17080 * tests/data/test-read-dwarf/test14-pr18893.so.abi: Likewise. 17081 * tests/data/test-read-dwarf/test15-pr18892.so.abi: Likewise. 17082 * tests/data/test-read-dwarf/test16-pr18904.so.abi: Likewise. 17083 * tests/data/test-read-dwarf/test17-pr19027.so.abi: Likewise. 17084 * tests/data/test-read-dwarf/test18-pr19037-libvtkRenderingLIC-6.1.so.abi: Likewise. 17085 * tests/data/test-read-dwarf/test19-pr19023-libtcmalloc_and_profiler.so.abi: Likewise. 17086 * tests/data/test-read-dwarf/test20-pr19025-libvtkParallelCore-6.1.so.abi: Likewise. 17087 * tests/data/test-read-dwarf/test21-pr19092.so.abi: Likewise. 17088 * tests/data/test-read-dwarf/test22-pr19097-libstdc++.so.6.0.17.so.abi: Likewise. 17089 * tests/data/test-read-dwarf/test7.so.abi: Likewise. 17090 * tests/data/test-read-dwarf/test9-pr18818-clang.so.abi: Likewise. 17091 * tests/data/test-read-write/test25.xml: Likewise. 17092 170932018-02-06 Dodji Seketeli <dodji@redhat.com> 17094 17095 Add newline at end of version string display 17096 * tools/abidiff.cc (main): Add a newline at the end of the version 17097 string line. 17098 * tools/abidw.cc (main): Likewise. 17099 * tools/abipkgdiff.cc (main): Likewise. 17100 * tools/kmidiff.cc (main): Likewise. 17101 171022018-01-31 Dodji Seketeli <dodji@redhat.com> 17103 17104 Bump version number to 1.2 17105 * configure.ac: Bump version number to 1.2 17106 171072018-01-25 Dodji Seketeli <dodji@redhat.com> 17108 17109 Update website for 1.1 17110 * doc/website/mainpage.txt: Update for 1.1. 17111 171122018-01-25 Dodji Seketeli <dodji@redhat.com> 17113 17114 Update ChangeLog for 1.1 17115 * ChangeLog: Automatically update using 'make update-changelog'. 17116 171172018-01-25 Dodji Seketeli <dodji@redhat.com> 17118 17119 Update NEWS file for 1.1 17120 * NEWS: Update for 1.1 17121 171222018-01-29 Dodji Seketeli <dodji@redhat.com> 17123 17124 Correctly link with pthread 17125 * src/Makefile.am: use -lpthread, not -pthread. 17126 171272018-01-18 Dodji Seketeli <dodji@redhat.com> 17128 17129 Skip class types with changed names in leaf reports 17130 * include/abg-comp-filter.h (has_class_or_union_type_name_change) 17131 (has_basic_or_class_type_name_change): Declare new functions. 17132 * include/abg-comparison.h (is_diff_of_class_or_union_type): 17133 Likewise. 17134 * src/abg-comp-filter.cc (has_class_or_union_type_name_change) 17135 (has_basic_or_class_type_name_change): 17136 * src/abg-comparison.cc 17137 (leaf_diff_node_marker_visitor::visit_begin): Use the new 17138 filtering::has_basic_or_class_type_name_change to test if a basic 17139 or class/union diff type carries a name change. Update comment. 17140 * tests/data/test-diff-pkg/spice-server-0.12.4-19.el7.x86_64-0.12.8-1.el7.x86_64-report-3.txt: 17141 Adjust. 17142 171432018-01-16 Dodji Seketeli <dodji@redhat.com> 17144 17145 Only consider local changes when filtering subtype changes 17146 * src/abg-comparison-priv.h 17147 (class_or_union_diff::priv::{count_filtered_subtype_changed_dm, 17148 count_filtered_changed_dm}): Take an additional flag. 17149 * src/abg-comparison.cc 17150 (class_or_union_diff::priv::{count_filtered_subtype_changed_dm, 17151 count_filtered_changed_dm}): Likewise. When asked, only consider 17152 local changes. 17153 * src/abg-leaf-reporter.cc (leaf_reporter::report): Consider 17154 reporting only the *net local* data member changes. 17155 171562018-01-16 Dodji Seketeli <dodji@redhat.com> 17157 17158 Make kmidiff show the wrong option when it complains about it 17159 * tools/kmidiff.cc (parse_command_line): Don't forget to record 17160 the wrong option in options::wrong_option. 17161 171622018-01-12 Dodji Seketeli <dodji@redhat.com> 17163 17164 Fix typo in abipkgdiff.cc 17165 * tools/abipkgdiff.cc (compare_task::perform): Fix a typo in a 17166 comment. 17167 171682018-01-12 Dodji Seketeli <dodji@redhat.com> 17169 17170 Suppress duplicates when listing package content 17171 * tools/abipkgdiff.cc (maybe_update_package_content): Rename 17172 maybe_update_vector_of_package_content into this. Take a set of 17173 strings, rather than a vector of strings. 17174 (get_interesting_files_under_dir): Adjust. 17175 171762018-01-12 Dodji Seketeli <dodji@redhat.com> 17177 17178 Fix symlinks paths handling in abipkgdiff 17179 * include/abg-tools-utils.h (real_path): Declare new function. 17180 * src/abg-tools-utils.cc (real_path): Define it. 17181 * tools/abipkgdiff.cc (package::convert_path_to_relative): Use the 17182 new real_path function to consider real path (where symlinks are 17183 resolved) of the extraction directory of the package. 17184 (get_interesting_files_under_dir): Similarly, use the new 17185 real_path function to consider the real path of the directory we 17186 are exploring. 17187 171882018-01-12 Dodji Seketeli <dodji@redhat.com> 17189 17190 Fix logic in common_prefix 17191 * src/abg-tools-utils.cc (common_prefix): Fix logic error. 17192 171932018-01-12 Dodji Seketeli <dodji@redhat.com> 17194 17195 abipkgdiff --verbose shouldn't trigger --fail-no-dbg 17196 * tools/abipkgdiff.cc (compare): In the overload for elf_files, 17197 separate the effect of --verbose from the one of --fail-no-dbg. 17198 171992018-01-10 Dodji Seketeli <dodji@redhat.com> 17200 17201 Bug 22692 - Consider Java as a language that supports the ODR 17202 * include/abg-ir.h (is_java_language): Declare new function. 17203 * src/abg-dwarf-reader.cc (odr_is_relevant): Adjust to consider 17204 that Java also respects the ODR. 17205 * src/abg-ir.cc (is_java_language): Define new function. 17206 (odr_is_relevant): Adjust to consider that Java also respects the 17207 ODR. 17208 172092018-01-09 Dodji Seketeli <dodji@redhat.com> 17210 17211 Fix version revision number printing in tools --help option 17212 * configure.ac: Properly set the VERSION_REVISION macro. 17213 * include/abg-tools-utils.h (get_library_version_string): Declare 17214 new function. 17215 * src/abg-tools-utils.cc (get_library_version_string): Define the 17216 new function. 17217 (gen_suppr_spec_from_kernel_abi_whitelist): Dis-ambiguate the use 17218 of the 'config' type. 17219 * tools/abicompat.cc (main): Use the new 17220 abigail::tools_utils::get_library_version_string function. 17221 * tools/abidiff.cc (main): Likewise. 17222 * tools/abidw.cc (main): Likewise. 17223 * tools/abilint.cc (main): Likewise. 17224 * tools/abipkgdiff.cc (main): Likewise. 17225 * tools/abisym.cc (main): Likewise. 17226 * tools/kmidiff.cc (main): Likewise. 17227 172282018-01-09 Dodji Seketeli <dodji@redhat.com> 17229 17230 Bug 22684 - Add --d{1,2} options to kmidiff 17231 * doc/manuals/kmidiff.rst: Add documentation for the new options. 17232 * tools/kmidiff.cc (options::{di_root_path{1,2}): New data 17233 members. 17234 (display_usage): Add help strings for the new options. 17235 (parse_command_line): Parse the new options. 17236 (main): Pass the debug info root directory to 17237 build_corpus_group_from_kernel_dist_under. 17238 172392018-01-08 Dodji Seketeli <dodji@redhat.com> 17240 17241 Update copyright notice for all source files 17242 * update-copyright.sh: New sed-based script to update the year 17243 in the copyright notice. 17244 * include/abg-comp-filter.h: Updated the year in the copyright 17245 notice. 17246 * include/abg-comparison.h: Likewise. 17247 * include/abg-config.h: Likewise. 17248 * include/abg-corpus.h: Likewise. 17249 * include/abg-diff-utils.h: Likewise. 17250 * include/abg-dwarf-reader.h: Likewise. 17251 * include/abg-fwd.h: Likewise. 17252 * include/abg-hash.h: Likewise. 17253 * include/abg-ini.h: Likewise. 17254 * include/abg-interned-str.h: Likewise. 17255 * include/abg-ir.h: Likewise. 17256 * include/abg-libxml-utils.h: Likewise. 17257 * include/abg-libzip-utils.h: Likewise. 17258 * include/abg-reader.h: Likewise. 17259 * include/abg-reporter.h: Likewise. 17260 * include/abg-sptr-utils.h: Likewise. 17261 * include/abg-suppression.h: Likewise. 17262 * include/abg-tools-utils.h: Likewise. 17263 * include/abg-traverse.h: Likewise. 17264 * include/abg-viz-common.h: Likewise. 17265 * include/abg-viz-dot.h: Likewise. 17266 * include/abg-viz-svg.h: Likewise. 17267 * include/abg-workers.h: Likewise. 17268 * include/abg-writer.h: Likewise. 17269 * src/abg-comp-filter.cc: Likewise. 17270 * src/abg-comparison-priv.h: Likewise. 17271 * src/abg-comparison.cc: Likewise. 17272 * src/abg-config.cc: Likewise. 17273 * src/abg-corpus-priv.h: Likewise. 17274 * src/abg-corpus.cc: Likewise. 17275 * src/abg-default-reporter.cc: Likewise. 17276 * src/abg-diff-utils.cc: Likewise. 17277 * src/abg-dwarf-reader.cc: Likewise. 17278 * src/abg-hash.cc: Likewise. 17279 * src/abg-ini.cc: Likewise. 17280 * src/abg-internal.h: Likewise. 17281 * src/abg-ir-priv.h: Likewise. 17282 * src/abg-ir.cc: Likewise. 17283 * src/abg-leaf-reporter.cc: Likewise. 17284 * src/abg-libxml-utils.cc: Likewise. 17285 * src/abg-libzip-utils.cc: Likewise. 17286 * src/abg-reader.cc: Likewise. 17287 * src/abg-reporter-priv.cc: Likewise. 17288 * src/abg-reporter-priv.h: Likewise. 17289 * src/abg-sptr-utils.cc: Likewise. 17290 * src/abg-suppression-priv.h: Likewise. 17291 * src/abg-suppression.cc: Likewise. 17292 * src/abg-tools-utils.cc: Likewise. 17293 * src/abg-traverse.cc: Likewise. 17294 * src/abg-viz-common.cc: Likewise. 17295 * src/abg-viz-dot.cc: Likewise. 17296 * src/abg-viz-svg.cc: Likewise. 17297 * src/abg-workers.cc: Likewise. 17298 * src/abg-writer.cc: Likewise. 17299 * tests/print-diff-tree.cc: Likewise. 17300 * tests/test-abicompat.cc: Likewise. 17301 * tests/test-abidiff-exit.cc: Likewise. 17302 * tests/test-abidiff.cc: Likewise. 17303 * tests/test-alt-dwarf-file.cc: Likewise. 17304 * tests/test-core-diff.cc: Likewise. 17305 * tests/test-diff-dwarf-abixml.cc: Likewise. 17306 * tests/test-diff-dwarf.cc: Likewise. 17307 * tests/test-diff-filter.cc: Likewise. 17308 * tests/test-diff-pkg.cc: Likewise. 17309 * tests/test-diff-suppr.cc: Likewise. 17310 * tests/test-diff2.cc: Likewise. 17311 * tests/test-ir-walker.cc: Likewise. 17312 * tests/test-lookup-syms.cc: Likewise. 17313 * tests/test-read-dwarf.cc: Likewise. 17314 * tests/test-read-write.cc: Likewise. 17315 * tests/test-types-stability.cc: Likewise. 17316 * tests/test-utils.cc: Likewise. 17317 * tests/test-utils.h: Likewise. 17318 * tests/test-write-read-archive.cc: Likewise. 17319 * tools/abiar.cc: Likewise. 17320 * tools/abicompat.cc: Likewise. 17321 * tools/abidiff.cc: Likewise. 17322 * tools/abidw.cc: Likewise. 17323 * tools/abilint.cc: Likewise. 17324 * tools/abipkgdiff.cc: Likewise. 17325 * tools/abisym.cc: Likewise. 17326 * tools/binilint.cc: Likewise. 17327 * tools/kmidiff.cc: Likewise. 17328 173292017-12-15 Dodji Seketeli <dodji@redhat.com> 17330 17331 Bug 22437 - Make fedabipkgdiff use all debug info RPMs of a sub-RPM 17332 * tools/fedabipkgdiff (RPM::get_all_debuginfo_rpms): Define new 17333 member function. 17334 (RPM::generate_comparison_halves): The ancillary debuginfo RPM of 17335 a given RPM now has a list type; there can be more than one 17336 debuginfo RPM associated to a given RPM, especially if the RPM is 17337 a devel one. 17338 (format_debug_info_pkg_options): Define new function. 17339 (abipkgdiff): Use the new function above. 17340 173412017-12-15 Dodji Seketeli <dodji@redhat.com> 17342 17343 Improve comments wording in fedabipkgdiff 17344 * tools/fedabipkgdiff (class RPM): Fix wording. 17345 (RPM::__init__): Likewise. 17346 173472017-12-11 Dodji Seketeli <dodji@redhat.com> 17348 17349 Update & cleanup the tools manuals summary 17350 * doc/manuals/abidw.rst: Use the same header structure as or the 17351 other tools manual. 17352 * doc/manuals/kmidiff.rst: Likewise. 17353 * doc/manuals/libabigail-tools.rst: Add the new kmidiff tool to 17354 the summary. 17355 173562017-12-01 Dodji Seketeli <dodji@redhat.com> 17357 17358 Bug 22488 - Make abipkgdiff handle different binaries with same basename 17359 * include/abg-tools-utils.h (string_suffix) 17360 (sorted_strings_common_prefix): Declare new functions. 17361 (dir_name): Take a new keep_separator_at_end parameter at the end. 17362 * src/abg-tools-utils.cc (dir_name): Take a new 17363 keep_separator_at_end parameter at the end. Add a comment for it 17364 and update. 17365 (string_suffix, sorted_strings_common_prefix): Define new 17366 functions. 17367 (common_prefix): Define new static function. 17368 * tools/abipkgdiff.cc (get_interesting_files_under_dir): Forward 17369 declare this pre-existing static function. 17370 (package::{common_paths_prefix_, elf_file_paths_}): New data 17371 members. 17372 (package::{common_paths_prefix, elf_file_paths, 17373 convert_path_to_relative, convert_path_to_unique_suffix, 17374 load_elf_file_paths}): New member functions. 17375 (create_maps_of_package_content): Use the new 17376 package::{load_elf_file_paths, convert_path_to_unique_suffix} 17377 functions. 17378 (compare_prepared_userspace_packages): Show relative paths of 17379 package elements in reported. 17380 * tests/data/test-diff-pkg/dbus-glib-0.104-3.fc23.x86_64--dbus-glib-0.104-3.fc23.armv7hl-report-0.txt: 17381 Update test ouptut. 17382 * tests/data/test-diff-pkg/libxfce4ui-devel-4.12.1-8.fc27.ppc64-self-report-0.txt: 17383 Likewise. 17384 173852017-12-01 Dodji Seketeli <dodji@redhat.com> 17386 17387 Fully report diagnostic about alternate debug info file not found 17388 * src/abg-dwarf-reader.cc (status_to_diagnostic_string): Report 17389 textual diagnostic for the STATUS_ALT_DEBUG_INFO_NOT_FOUND case 17390 too. 17391 173922017-11-27 Dodji Seketeli <dodji@redhat.com> 17393 17394 Bug 22436 - make abipkgdiff accept several debuginfo packages 17395 * doc/manuals/abipkgdiff.rst: Document the fact that --d{1,2} can 17396 be provided several times on the command line. 17397 * tools/abipkgdiff.cc (options::debug_packages{1,2}): Rename the 17398 debug_package{1,2} data members into this, and make them be vector 17399 of strings, rather than just strings. 17400 (package::debug_info_packages_): Renamed 17401 package::debug_info_package_ into this and make it be a vector of 17402 package_sptr, rather than just a package_sptr. 17403 (package::debug_info_packages): Renamed the method 17404 package::debug_info_package into this and -- for the getter 17405 overload -- make it return a vector of package_sptr, rather than 17406 just a package_sptr. Likewise for the setter overload. Add a 17407 non-const getter overload. 17408 (package::erase_extraction_directories) 17409 (extract_package_and_map_its_content): Adjust. 17410 (extract_rpm, extract_deb): Do not erase the content of the 17411 extraction directory (if it was pre-existing) prior to extracting 17412 the RPM/deb into it. 17413 (pkg_extraction::pkgs): Renamed pkg_extraction::pkg into this and 17414 make it be a vector of packages, rather than just a package. 17415 (pkg_extraction::pkg_extraction): Adjust to take a package_sptr 17416 rather than just a package. Add an overload to take a vector of 17417 packages_sptr. 17418 (pkg_extraction::perform): Extract the vector of package that the 17419 task is not responsible for, not just one random package. 17420 (extract_package_and_map_its_content): Adjust. 17421 (prepare_packages): Take smart pointers to package rather than 17422 just packages. Adjust accordingly. 17423 (compare_prepared_package): Make the overload that takes two 17424 packages to take two smart pointers of packages. 17425 (compare): Make the overload that takes two package take two 17426 package_sptr. 17427 (parse_command_line): Parse having --d{1,2} several times for a 17428 given input package. 17429 (main): Take several debug info packages for one input file. 17430 * include/abg-tools-utils.h (split_string): Declare ... 17431 * src/abg-tools-utils.cc (split_string): ... new function. 17432 * tests/data/test-diff-pkg/libxfce4ui-debuginfo-4.12.1-8.fc27.ppc64.rpm: 17433 Add a new RPM test input file. 17434 * tests/data/test-diff-pkg/libxfce4ui-devel-4.12.1-8.fc27.ppc64-self-report-ok-0.txt: 17435 new reference output file. 17436 * tests/data/Makefile.am: Add the new test input files above to source 17437 distribution. 17438 * tests/test-diff-pkg.cc (in_out_spec): Add new test entry to 17439 specify two debug info packages for one input package. 17440 (test_task::perform): Support having several debug info package 17441 paths in the IntOutSpec::{first,second}_in_debug_package_path data 17442 member. The debug info packages paths are separated by either a 17443 white space or commas. 17444 174452017-11-22 Dodji Seketeli <dodji@redhat.com> 17446 17447 Update version number to 1.1 17448 * configure.ac: Update version number to 1.1 17449 174502017-11-22 Dodji Seketeli <dodji@redhat.com> 17451 17452 Bug 22076 - Disable fedabipkgdiff for old koji clients 17453 * configure.ac: Try to invoke the koji.read_config method. If it 17454 fails then disable the fedabipkgdiff feature. 17455 174562017-11-22 Dodji Seketeli <dodji@redhat.com> 17457 17458 Update the release text template after 1.0 17459 * release-text-template.txt: Update some wording. 17460 174612017-11-22 Dodji Seketeli <dodji@redhat.com> 17462 17463 Update website for 1.0 17464 * doc/website/mainpage.txt: Update after 1.0 release. 17465 174662017-11-21 Dodji Seketeli <dodji@redhat.com> 17467 17468 Update NEWS file for 1.0 17469 * NEWS: Update for 1.0 17470 174712017-11-21 Dodji Seketeli <dodji@redhat.com> 17472 17473 Automatically Update ChangeLog for 1.0 17474 * ChangeLog: Automatically update for 1.0 17475 174762017-11-21 Dodji Seketeli <dodji@redhat.com> 17477 17478 Bug 22438 - Emit a clear message when debug info is not found 17479 * include/abg-dwarf-reader.h (enum abigail::dwarf_reader::status): 17480 Add a new STATUS_ALT_DEBUG_INFO_NOT_FOUND enumerator there. 17481 (refers_to_alt_debug_info): Declare new function. 17482 * src/abg-dwarf-reader.cc (read_corpus_from_elf): Detect when the 17483 referred-to alternate debug info file is not found and flip the 17484 STATUS_ALT_DEBUG_INFO_NOT_FOUND bit of the status accordingly. If 17485 the debug info was found but not the alternate debug info, then do 17486 not try to read the debug info at all. 17487 (refers_to_alt_debug_info): Define new function. 17488 * tools/abidiff.cc (handle_error): Define new static function. 17489 (main): Use it, rather than handling errors preventing libabigail 17490 from reading the corpus on a case by case basis. 17491 tools/abipkgdiff.cc (compare): Handle the case where no alternate 17492 debug info was found. 17493 * tests/data/test-diff-pkg/libxfce4ui-devel-4.12.1-8.fc27.ppc64-self-report-0.txt: 17494 New test output reference. 17495 * tests/data/test-diff-pkg/libxfce4ui-devel-4.12.1-8.fc27.ppc64.rpm: 17496 New test input RPM. 17497 * tests/data/test-diff-pkg/libxfce4ui-devel-debuginfo-4.12.1-8.fc27.ppc64.rpm: 17498 Likewise. 17499 * tests/data/Makefile.am: Add the new test files above to source 17500 distribution. 17501 * tests/test-diff-pkg.cc (in_out_specs): Add a new test case from 17502 the new input files above. 17503 175042017-11-13 Dodji Seketeli <dodji@redhat.com> 17505 17506 Support systems where fts.h can't be used with _FILE_OFFSET_BITS set 17507 * configure.ac: Detect if we are on a system where fts.h cannot be 17508 included with _FILE_OFFSET_BITS defined. If that is the case, 17509 then define the BAD_FTS macro. 17510 * src/abg-tools-utils.cc: If BAD_FTS is defined then include fts.h 17511 with _FILE_OFFSET_BITS not defined (that is, before config.h) but 17512 then make sure that open and fopen are 64 bits aware. 17513 * tools/abipkgdiff.cc: Likewise. 17514 175152017-11-08 Dodji Seketeli <dodji@redhat.com> 17516 17517 Edit the NEWS file a tiny little bit for 1.0 17518 * NEWS: Cleanup. 17519 175202017-11-06 Dodji Seketeli <dodji@redhat.com> 17521 17522 Automatically Update ChangeLog for 1.0 17523 * ChangeLog: Update this file by running "make update-changelog". 17524 175252017-11-06 Dodji Seketeli <dodji@redhat.com> 17526 17527 Update NEWS file for 1.0 changes 17528 * NEWS: Update for 1.0 changes 17529 175302017-11-06 Dodji Seketeli <dodji@redhat.com> 17531 17532 Bump version number to 1.0 17533 * configure.ac: Bump version number to 1.0 17534 175352017-11-08 Dodji Seketeli <dodji@redhat.com> 17536 17537 Don't make system headers depend on config.h 17538 * tools/abipkgdiff.cc: Include config.h after system headers and 17539 before libabigail's headers. 17540 175412017-11-02 Dodji Seketeli <dodji@redhat.com> 17542 17543 Wire the --no-show-locs option to abidw 17544 * doc/manuals/abidw.rst: Update the documentation. 17545 * tests/test-annotate.cc: Now that --no-show-locs has an effect on 17546 the ABIXML output, let's not use it here, because it changes the 17547 output and we don't want that. 17548 * tools/abidw.cc (display_usage): Fix a typo in the help string. 17549 (load_corpus_and_write_abixml): Set the "show-locs" option to the 17550 write_context object that we use. 17551 175522017-11-02 Dodji Seketeli <dodji@redhat.com> 17553 17554 Allow setting options to instances of xml_writer::write_context 17555 * include/abg-writer.h (create_write_context, set_show_locs) 17556 (set_annotate): Declare new functions. 17557 (write_corpus, write_corpus_group): Remove the output stream and 17558 the annotate parameters as these can be retrieved from the 17559 context. 17560 * src/abg-writer.cc (write_context::m_show_locs): New data member. 17561 (write_context::write_context): Initialize it. 17562 (write_context::{get_show_locs, set_show_locs}): Add new member 17563 functions. 17564 (write_location): Take a write_context, rather than an output 17565 stream. From the context, we detect if the user did set the "show 17566 loc" option and act accordingly. Write the second overload in 17567 terms of the first one. 17568 (create_write_context, set_show_locs, set_annotate): Define new 17569 functions. 17570 (write_type_decl, write_qualified_type_def) 17571 (write_pointer_type_def, write_reference_type_def) 17572 (write_array_type_def, write_enum_type_decl, write_typedef_decl) 17573 (write_var_decl, write_function_decl) 17574 (write_class_decl_opening_tag, write_union_decl_opening_tag) 17575 (write_type_tparameter, write_non_type_tparameter) 17576 (write_function_tdecl, write_class_tdecl): Adjust the invocation 17577 of write_location. 17578 (write_corpus, write_corpus_group): Remove the output stream and 17579 the annotate parameters as these can be retrieved from the 17580 context. Adjust. 17581 * tools/abidw.c: (load_corpus_and_write_abixml): Create a 17582 write_context object, set the 'annotate' option to it and use that 17583 object to actually write out the corpus. 17584 175852017-11-02 Dodji Seketeli <dodji@redhat.com> 17586 17587 Remove useless vertical space from src/abg-writer.cc 17588 * src/abg-writer.cc (class write_context): Remove useless vertical 17589 space near the end of the class definition. 17590 175912017-10-16 Dodji Seketeli <dodji@redhat.com> 17592 17593 Add a --suppressions option to fedabipkgdiff 17594 * tools/fedabipkgdiff (abipkgdiff): If a suppression file was 17595 provided, pass it to the underlying abipkgdiff tool. 17596 (build_commandline_args_parser): Parse the new --suppressions 17597 option. 17598 * docs/manuals/fedabipkgdiff.rst: Add documentation for the new 17599 --suppressions option. 17600 176012017-10-16 Dodji Seketeli <dodji@redhat.com> 17602 17603 Handle exceptions when global_config is not yet set in fedabipkgdiff 17604 * tools/fedabipkgdiff: When handling an exception, if the 17605 global_config object is not yet set then just let the exception 17606 through. 17607 176082017-10-11 Dodji Seketeli <dodji@redhat.com> 17609 17610 Fix a indentation warning from GCC 7.2.1 17611 * tools/abipkgdiff.cc (compare): In the overload of elf_file, fix 17612 a mis-indentation pointed out by a GCC 7.2.1 warning. 17613 176142017-10-11 Dodji Seketeli <dodji@redhat.com> 17615 17616 Cleanup a switch-case logic to avoid a GCC 7.2.1 warning 17617 * src/abg-dwarf-reader.cc (die_qualified_type_name): Cleanup a 17618 switch case to make the form support more what we meant, and shut 17619 down a GCC 7.2.1 warning. 17620 176212017-10-09 Mark Wielaard <mark@klomp.org> 17622 17623 Fix -Wmisleading-indentation warning in abg-leaf-reporter.cc. 17624 * src/abg-leaf-reporter.cc (leaf_reporter::report): Fix misleading 17625 indentation. 17626 176272017-10-06 Dodji Seketeli <dodji@redhat.com> 17628 17629 Add --impacted-changes option to kmidiff 17630 * doc/manuals/kmidiff.rst: Document the new --impacted-changes 17631 option. 17632 * tools/kmidif.cc (options::show_impacted_interfaces): Add new 17633 data member. 17634 (options::options): Initialize the new data member to false. 17635 (display_usage): Add a description string for the new 17636 --impacted-changes option. 17637 (parse_command_line): Parse the new --impacted-changes option. 17638 (set_diff_context): Update the 'show-impacted-interface' property 17639 accordingly. 17640 176412017-10-04 Dodji Seketeli <dodji@redhat.com> 17642 17643 Add --full-impact option to kmidiff 17644 * doc/manuals/kmidiff.rst: Add documentation for the new 17645 --full-impact|-f option. 17646 * tools/kmidiff.cc (options::leaf_changes_only): Add new data 17647 member. 17648 (option::option): Initialize the new data member. 17649 (display_usage): Add a documentation string for the new 17650 --full-impact|-f option. 17651 (parse_command_line): Parse the new --full-impact|-f option. 17652 (set_diff_context): Set the diff context appropriately. 17653 176542017-09-18 Dodji Seketeli <dodji@redhat.com> 17655 17656 Add a --leaf-changes-only option to abipkgdiff 17657 * doc/manuals/abipkgdiff.rst: Add documentation for the new 17658 --leaf-change-only, --impacted-interfaces and --full-impact 17659 options. 17660 * tools/abipkgdiff.cc (options::{leaf_changes_only, 17661 show_impacted_interfaces, show_full_impact_report): Add new data 17662 members. 17663 (options::options): Initialize them. 17664 (display_usage): Add help strings for the new --leaf-change-only, 17665 --impacted-interfaces and --full-impact|-f options. 17666 (set_diff_context_from_opts): Set the diff context for the 17667 'leaf-changes-only' and 'show-impacted-interfaces' flags. 17668 (parse_command_line): Parse the --leaf-change-only, 17669 --impacted-interfaces and --full-impact options. Handle the case 17670 where the --linux-kernel-abi-whitelist|-w option is given a 17671 whitelist *package*. 17672 * tests/data/test-diff-pkg/spice-server-0.12.4-19.el7.x86_64-0.12.8-1.el7.x86_64-report-3.txt: 17673 New test output reference. 17674 * tests/test-diff-pkg.cc (in_out_spec): Compare 17675 data/test-diff-pkg/spice-server-0.12.4-19.el7.x86_64.rpm and 17676 data/test-diff-pkg/spice-server-0.12.8-1.el7.x86_64.rpm with the 17677 new --leaf-changes-only and --impacted-interfaces options, using 17678 the new output reference above. 17679 * tests/data/Makefile.am: Add the new test material to source 17680 distribution. 17681 176822017-08-02 Dodji Seketeli <dodji@redhat.com> 17683 17684 Initial implementation of a --leaf-changes-only option to abidiff 17685 * doc/manuals/abidiff.rst: Add documentation the new 17686 --leaf-changes-only and --impacted-interfaces options. 17687 * src/abg-leaf-reporter.cc: New file. 17688 * src/Makefile.am: Add the new src/abg-leaf-reporter.cc file to 17689 source distribution. 17690 * include/abg-fwd.h (get_var_size_in_bits) 17691 (function_decl_is_less_than): Declare new functions. 17692 (get_name): Add new overload for type_or_decl_base*. 17693 * include/abg-ir.h (struct type_or_decl_hash, type_or_decl_equal) 17694 (type_or_decl_base_comp): Define new types. 17695 (artifact_sptr_set_type, artifact_ptr_set_type): Define new 17696 typedefs. 17697 * include/abg-comp-filter.h: Update copyright year. 17698 (has_basic_type_name_change): Add new function declaration. 17699 * src/abg-comp-filter.cc (decl_name_changed): Take a 17700 type_or_decl_base rather than just a decl. Add an overload for 17701 diff*. 17702 (has_basic_type_name_change): Define new function. 17703 * include/abg-comparison.h: Update copyright year. 17704 (string_diff_ptr_map): Define this new typedef. 17705 (class diff_maps): Define this new class. 17706 (diff_context::{set_corpora}): Remove this member function. 17707 (diff_context::{set_corpus_diff, get_corpus_diff, 17708 show_leaf_changes_only, show_impacted_interfaces, 17709 forbid_visiting_a_node_twice_per_interface}): Declare these new 17710 member functions. 17711 (diff_node_visitor::priv_): Add a new pimpl data member. 17712 (diff_node_visitor::{diff_node_visitor, get_visiting_kind, 17713 set_visiting_kind}): Turn these into out-of-line member functions. 17714 (diff_node_visitor::{set,get}_current_topmost_iface_diff): Add new 17715 member functions. 17716 (class {scope_diff, function_type_diff, corpus_diff}): Add class 17717 leaf_reporter as a friend. 17718 (corpus_diff::mark_leaf_diff_nodes, get_leaf_diffs): Declare new 17719 member functions. 17720 (diff::{visiting_a_node_twice_is_forbidden_per_interface, 17721 parent_interface_node}): Define new member functions. 17722 (is_diff_of_basic_type): Return a type_decl_diff* rather than just 17723 a bool. 17724 (is_enum_diff, is_array_diff, is_function_type, is_typedef_diff) 17725 (is_corpus_diff): Declare new functions. 17726 (corpus_diff::diff_stats::{num_leaf_changes, 17727 num_leaf_changes_filtered_out, net_num_leaf_changes}): Add new 17728 member functions. 17729 (is_distinct_diff): Declare new function. 17730 * include/abg-reporter.h: Forward-declare "class diff_maps". 17731 (reporter_base::diff_to_be_reported): Declare a new virtual member 17732 function. 17733 (reporter_base::{report_local_typedef_changes, 17734 report_local_reference_type_changes, 17735 report_local_function_type_changes}): Declare new member 17736 functions. 17737 (class leaf_reporter): Define new type. 17738 * src/abg-comparison-priv.h (struct diff_hash, diff_equal): Define 17739 new types. 17740 (diff_artifact_set_map_type): Define new typedef. 17741 (diff_context::priv::{first_corpus_, second_corpus_}): Remove 17742 these data members. 17743 (diff_context::priv::{corpus_diff_, leaf_changes_only_, 17744 reset_visited_diffs_for_each_interface_, 17745 show_impacted_interfaces_}): Add new data members. 17746 (diff_context::priv::priv): Adjust. 17747 (corpus_diff::priv::{leaf_diffs_, parent_interface_}): Add new 17748 data member. 17749 (corpus_diff::diff_stats::priv::{num_leaf_changes, 17750 num_leaf_changes_filtered_out}): Add new data members. 17751 (corpus_diff::priv::count_leaf_changes): Define new member 17752 function. 17753 (sort_artifacts_set, get_fn_decl_or_var_decl_diff_ancestor) 17754 (is_diff_of_global_decls): Declare new functions. 17755 (function_comp::operator()): Factorize this out into the new 17756 function abigail::ir::function_decl_is_less_than. 17757 * src/abg-ir.cc (get_var_size_in_bits) 17758 (function_decl_is_less_than): Define new functions. 17759 (get_name): Define new overload for type_or_decl_base*. 17760 * src/abg-comparison.cc (is_enum_diff, is_typedef_diff) 17761 (is_array_diff, is_function_type_diff, is_corpus_diff) 17762 (is_distinct_diff, sort_artifacts_set, is_diff_of_global_decls): 17763 Define new functions. 17764 (is_union_diff): Fix comment. 17765 (diff_context::forbid_visiting_a_node_twice_per_interface): Define 17766 new member functions. 17767 (diff_context::set_corpus_diff, get_corpus_diff) 17768 (diff_context::show_leaf_changes_only) 17769 (diff_context::visiting_a_node_twice_is_forbidden_per_interface) 17770 (diff_context::show_impacted_interfaces): Define new member 17771 functions. 17772 (diff_context::get_reporter): Create the reporter that matches 17773 what diff_context::show_leaf_changes_only says. 17774 (diff_node_visitor::priv): Define a new type. 17775 (diff_node_visitor::{diff_node_visitor, get_visiting_kind, 17776 set_visiting_kind, or_visiting_kind, 17777 set_current_topmost_iface_diff, get_current_topmost_iface_diff}): 17778 Define new out-of-line member functions. 17779 (struct diff_maps::priv): Define new type. 17780 (diff_maps::{diff_maps, get_type_decl_diff_map, 17781 get_type_decl_diff_map, get_enum_diff_map, get_class_diff_map, 17782 get_union_diff_map, get_typedef_diff_map, get_array_diff_map, 17783 get_function_type_diff_map, get_function_decl_diff_map, 17784 get_var_decl_diff_map, get_reference_diff_map, 17785 get_fn_parm_diff_map, get_distinct_diff_map, insert_diff_node, 17786 lookup_impacted_interfaces}): Define member functions. 17787 (corpus_diff::{mark_leaf_diff_nodes, get_leaf_diffs}): Define new 17788 member functions. 17789 (struct leaf_diff_node_marker_visitor): Define new type. 17790 (corpus_diff::apply_filters_and_suppressions_before_reporting): 17791 Mark diff nodes in here. 17792 (corpus_diff::traverse): Appropriately set the current topmost 17793 interface into the visitor before visiting a diff node. 17794 (compute_diff): In the overload for corpus_sptr, adjust to reflect 17795 that we are now storing the corpus_diff in the diff context. 17796 (is_diff_of_basic_type): Return a type_decl_diff*, not just a 17797 bool. 17798 (corpus_diff::priv::count_leaf_changes): Define a new member 17799 function. 17800 (corpus_diff::diff_stats::{num_leaf_changes, 17801 num_leaf_changes_filtered_out, net_num_leaf_changes}): Define new 17802 member functions. 17803 (corpus_diff::priv::apply_filters_and_compute_diff_stats): Use the 17804 new corpus_diff::priv::count_leaf_changes to compute the number of 17805 leaf changes. 17806 (corpus_diff::priv::emit_diff_stats): Emit the report about leaf 17807 type changes when necessary. 17808 * src/abg-reporter-priv.h (report_mem_header): Declare new 17809 overload. 17810 (maybe_show_relative_offset_change,): Pass the var_diff_sptr 17811 parameter by const reference. 17812 (represent): Pass the var_diff_sptr parameter by const reference 17813 and take a new "local-only" flag. 17814 (maybe_show_relative_size_change) 17815 (maybe_report_interfaces_impacted_by_diff): Declare new functions. 17816 * src/abg-default-reporter.cc: Adjust copyright year. 17817 (default_reporter::{report_local_typedef_changes, 17818 report_local_qualified_type_changes, 17819 report_local_reference_type_changes, 17820 report_local_function_type_changes}): Define new member functions. 17821 (default_reporter::report): Adjust. Add an overload for 17822 function_type_diff&. In the overload for qualified_type_diff, if 17823 the name of the underlying type changed, do not detail the changes 17824 any further. In the overload for function_decl_diff, Adjust to 17825 use the new diff_context::get_{first, second}_corpus member 17826 function. In the overload for enum_diff, call the new 17827 maybe_report_interfaces_impacted_by_diff that is advertised below. 17828 * src/abg-reporter-priv.cc (represent): Adjust the overload for 17829 var_diff_sptr. 17830 (report_mem_header): Define new overload. 17831 (maybe_show_relative_size_change) 17832 (maybe_report_interfaces_impacted_by_diff): Define new functions. 17833 (reporter_base::diff_to_be_reported): Define new member function. 17834 (maybe_show_relative_offset_change): Pass the var_diff_sptr 17835 parameter by const reference. 17836 (represent): In the overload for var_diff_sptr, pass the 17837 var_diff_sptr parameter by reference. Take a 'local_only' flag. 17838 Iisplay type changes only if we are not displaying "local changes 17839 only". Display size changes of data members too, when in 17840 "local-only" mode. 17841 * src/abg-suppression.cc (sonames_of_binaries_match) 17842 (names_of_binaries_match): Adjust. 17843 * tools/abidiff.cc (options::{leaf_changes_only, 17844 show_impacted_interfaces}): Add new data members. 17845 (display_usage): Emit usage string for the new --leaf-changes-only 17846 and --impacted-interfaces options. 17847 (parse_command_line): Parse the new --leaf-changes-only and the 17848 --impacted-interfaces options. 17849 (set_diff_context_from_opts): Set the 'show-leaf-changes' and the 17850 'show-impacted-interfaces' flags. 17851 * tests/data/test-diff-filter/libtest42-leaf-report-v{0,1}.so: New 17852 test input. 17853 * tests/data/test-diff-filter/test42-leaf-report-output-0.txt: New 17854 test reference output. 17855 * tests/data/test-diff-filter/test42-leaf-report-v{0,1}.cc: Source 17856 code of the new test inputs. 17857 * tests/test-diff-filter.cc (in_out_specs): Use the new test 17858 inputs above in this harness. 17859 * tests/data/test-diff-suppr/libtest35-leaf-v0.so: New test input. 17860 * tests/data/test-diff-suppr/test35-leaf-report-0.txt: New test 17861 reference output. 17862 * tests/data/test-diff-suppr/test35-leaf-v{0,1}.cc: Source code of 17863 the new test inputs. 17864 * tests/data/test-diff-suppr/test35-leaf.suppr: Suppression 17865 specification to use for the test35 test. 17866 * tests/data/test-diff-suppr/libtest36-leaf-v0.so: New test input. 17867 * tests/data/test-diff-suppr/libtest36-leaf-v1.so: Likewise. 17868 * tests/data/test-diff-suppr/test36-leaf-report-0.txt: New 17869 reference test output. 17870 * tests/data/test-diff-suppr/test36-leaf-v0.cc: Source code of 17871 test input above. 17872 * tests/data/test-diff-suppr/test36-leaf-v1.cc: Likewise. 17873 * tests/test-diff-suppr.cc (in_out_specs): Use the new test inputs 17874 above in this harness. 17875 * tests/data/Makefile.am: Add the new test inputs above to source 17876 distribution. 17877 178782017-07-17 Dodji Seketeli <dodji@redhat.com> 17879 17880 Allow several kinds of reports to be emitted 17881 * include/Makefile.am: Add the new abg-reporter.h header file to 17882 source distribution. 17883 * include/abg-comparison.h: Include the new abg-reporter.h header 17884 file. 17885 (diff_context::{g,s}et_reporter): Declare new accessors. 17886 ({type_diff_base, decl_diff_base, corpus_diff}::priv): Make this 17887 be a struct rather than a class. 17888 ({decl_diff_base, class_diff, scope_diff, function_type_diff, 17889 corpus_diff}): Declare default_reporter a friend class of these. 17890 * include/abg-reporter.h: New file. 17891 * src/Makefile.am: Add abg-comparison-priv.h, 17892 abg-reporter-priv.{h,cc} and abg-default-reporter.cc files to 17893 source distribution. 17894 * src/abg-comparison-priv.h: New file. 17895 * src/abg-comparison.cc (sort_enumerators) 17896 (sort_changed_enumerators, sort_data_members) 17897 (sort_string_function_ptr_map) 17898 (sort_string_function_decl_diff_sptr_map) 17899 (sort_string_var_diff_sptr_map, sort_string_elf_symbol_map) 17900 (sort_string_var_ptr_map, sort_string_data_member_diff_sptr_map) 17901 (sort_unsigned_data_member_diff_sptr_map) 17902 (sort_string_diff_sptr_map, sort_string_base_diff_sptr_map) 17903 (sort_string_base_sptr_map, sort_string_fn_parm_diff_sptr_map) 17904 (sort_string_parm_map, get_leaf_type, sort_enumerators) 17905 (sort_changed_enumerators): Make these functions non-static and 17906 move them at the beginning of the file. These functions are now 17907 declared in abg-compared-priv.h so they can be shared privately 17908 with other files in src/. 17909 (diff_context::{g,s}et_reporter): Define new accessors. 17910 ({diff_context, diff, type_diff_base, decl_diff_base, 17911 distinct_diff, pointer_diff, array_diff, reference_diff, 17912 qualified_type_diff, enum_diff, class_or_union_diff, class_diff, 17913 base_diff, scope_diff, fn_parm_diff, function_type_diff, 17914 function_decl_diff, type_decl_diff, typedef_diff, 17915 translation_unit_diff, corpus_diff::diff_stats, 17916 corpus_diff}::priv) 17917 (diff_less_than_functor, enumerator_value_comp) 17918 (changed_enumerator_comp, base_spec_comp, base_diff_comp) 17919 (data_member_diff_comp, diff_comp, fn_parm_diff_comp, parm_comp) 17920 (elf_symbol_comp, function_comp, function_decl_diff_comp) 17921 (var_diff_sptr_comp): Move these type definitions to 17922 abg-comparison-priv.h 17923 (report_size_and_alignment_changes, report_loc_info) 17924 (maybe_report_diff_for_member, maybe_report_diff_for_symbol) 17925 (represent, represent_data_member) 17926 (maybe_show_relative_offset_change, represent) 17927 (report_size_and_alignment_changes, report_loc_info) 17928 (report_name_size_and_alignment_changes, report_mem_header) 17929 (maybe_report_diff_for_member, maybe_report_diff_for_symbol) 17930 (show_linkage_name_and_aliases): Move these definitions to 17931 abg-reporter-priv.cc. 17932 ({distinct_diff, var_diff, pointer_diff, array_diff, 17933 reference_diff, qualified_type_diff, enum_diff, 17934 class_or_union_diff, class_diff, base_diff, union_diff, 17935 scope_diff, fn_parm_diff, function_type_diff, type_decl_diff, 17936 typedef_diff, corpus_diff}::report): Use the reporter object to 17937 report about the changes carried by the the current diff node. 17938 * src/abg-default-reporter.cc: New file. 17939 * src/abg-reporter-priv.h: Likewise. 17940 179412017-10-04 Dodji Seketeli <dodji@redhat.com> 17942 17943 Update copyright year to tools/abidiff.cc 17944 * tools/abidiff.cc: Update copyright year. 17945 179462017-10-04 Dodji Seketeli <dodji@redhat.com> 17947 17948 Add missing comment to type declaration 17949 * include/abg-comparison.h (struct diff_sptr_hasher): Add missing 17950 comment. 17951 179522017-10-04 Dodji Seketeli <dodji@redhat.com> 17953 17954 Misc style fixes in abg-writer.cc 17955 * src/abg-writer.cc (type_hasher): Add comment. 17956 (write_context::record_decl_as_emitted): Remove useless newline. 17957 179582017-10-04 Dodji Seketeli <dodji@redhat.com> 17959 17960 Initialize naked canonical type 17961 * src/abg-ir.cc (type_base::priv::priv): Initialize the naked 17962 canonical type data member. 17963 179642017-10-04 Dodji Seketeli <dodji@redhat.com> 17965 17966 [abixml writer] Use an unordered set when appropriate 17967 * src/abg-writer.cc (write_context::m_emitted_decl_only_set): 17968 Renamed m_emitted_decl_only_map into this and make the type be a 17969 set, rather than a map. 17970 (write_context::{record_decl_only_type_as_emitted, 17971 decl_only_type_is_emitted}): Adjust. 17972 179732017-09-29 Dodji Seketeli <dodji@redhat.com> 17974 17975 [abixml writer] Store pointers to emitted types rather than type-ids 17976 * src/abg-writer.cc (type_ptr_set_type): Declare new typedef. 17977 (writer_context::m_emitted_type_id_map): Remove this data member. 17978 (writer_context::m_emitted_type_set): Add a new data member. 17979 (writer_context::{record_type_id_as_emitted, type_id_is_emitted, 17980 clear_emitted_types_map}): Remove these member functions. 17981 (writer_context::{record_type_as_emitted, type_is_emitted}): Use 17982 the new m_emitted_type_set data member above. 17983 179842017-09-27 Dodji Seketeli <dodji@redhat.com> 17985 17986 Use an unordered map for canonical DIE offsets 17987 * src/abg-dwarf-reader.cc 17988 (read_context::canonical_type_die_offsets_): Renamed the 17989 canonical_type_die_vecs_ data member into this. 17990 (read_context::canonical_decl_die_offsets_): Renamed the 17991 canonical_decl_die_vecs_ data member into this. 17992 (read_context::{initialize, compute_canonical_die_offset, 17993 compute_canonical_die, get_canonical_die, 17994 get_or_compute_canonical_die, set_canonical_die_offset, 17995 get_canonical_die_offset}): Adjust. 17996 179972017-09-27 Dodji Seketeli <dodji@redhat.com> 17998 17999 Bug 22190 - crash in read_context::get_or_compute_canonical_die 18000 * src/abg-dwarf-reader.cc: 18001 180022017-09-27 Dodji Seketeli <dodji@redhat.com> 18003 18004 Remove redundant (useless) typedef declaration 18005 * src/abg-dwarf-reader.cc (dwarf_offsets_type): There are two 18006 instances of this typedef declaration, remove one. 18007 180082017-09-27 Dodji Seketeli <dodji@redhat.com> 18009 18010 Renamed offset_offset_map type name into offset_offset_map_type 18011 * src/abg-dwarf-reader.cc (offset_offset_map_type): Renamed 18012 offset_offset_map into this. 18013 (read_context::{primary_die_parent_map_, 18014 alternate_die_parent_map_, type_section_die_parent_map_}): Adjust 18015 the type of these data members. 18016 (read_context::{die_parent_map, type_section_die_parent_map}): 18017 Adjust the type of these member functions. 18018 (read_context::{build_die_parent_relations_under, 18019 get_parent_die}): Adjust for the type name in these functions. 18020 180212017-09-27 Dodji Seketeli <dodji@redhat.com> 18022 18023 Add missing newlines to kmidiff's usage strings 18024 * tools/kmidiff.cc (display_usage): Add newlines after the lines 18025 for --vmlinux1 and --vmlinux2. 18026 180272017-09-21 Dodji Seketeli <dodji@redhat.com> 18028 18029 22160 - Annotate state flag unitialized in abidw 18030 * tools/abidw.cc (options::options): Initialize the annotate data 18031 member. 18032 180332017-09-18 Dodji Seketeli <dodji@redhat.com> 18034 18035 Don't crash on classes that differ in their virtual member fn count 18036 * src/abg-ir.cc (equals): In the overload for class_decl, when we 18037 detect that the virtual member function counts are different, get 18038 out, even when we are being asked about the kind of the change. 18039 180402017-09-18 Dodji Seketeli <dodji@redhat.com> 18041 18042 Avoid adding the same data member twice in the DWARF reader 18043 * src/abg-dwarf-reader.cc (add_or_update_class_type): After a we 18044 try to create a data member type, look *again* if the data member 18045 wasn't added recursively by the creation of the data member type. 18046 180472017-09-11 Mark Wielaard <mark@klomp.org> 18048 18049 Bug 22075 - data_member_diff_comp forgets data members names 18050 * src/abg-comparison.cc (data_member_diff_comp): Make the 18051 comparison take the qualified name of the data member into 18052 account. Also, if the initial offset and qualified names of the 18053 data members of the diff nodes are equal, consider the offset and 18054 qualified names of the new data members. 18055 180562017-09-11 Dodji Seketeli <dodji@redhat.com> 18057 18058 Bug 22122 - Fail to represent 'const array' 18059 * src/abg-dwarf-reader.cc (die_is_array_type): Define new static 18060 function. 18061 (die_is_pointer_or_reference_type): Also test that the DIE can be 18062 an array. 18063 * tests/data/test-read-dwarf/PR22122-libftdc.so: New binary test input. 18064 * tests/data/test-read-dwarf/PR22122-libftdc.so.abi: New reference output. 18065 * tests/data/Makefile.am: Add the two new test files above to 18066 source distribution. 18067 * tests/test-read-dwarf.cc (in_out_specs): Run this test harness 18068 over the new test input. 18069 180702017-09-08 Dodji Seketeli <dodji@redhat.com> 18071 18072 Finer detection of local changes of var_decl type 18073 * src/abg-ir.cc (equals): In the var_decl overload detect size 18074 changes of type as being a local change. 18075 180762017-09-08 Dodji Seketeli <dodji@redhat.com> 18077 18078 Misc style fixes 18079 * include/abg-fwd.h (get_pretty_representation): Add missing white 18080 space. 18081 * src/abg-ir.cc (get_name): Fix typo in comment. 18082 180832017-09-02 Mark Wielaard <mark@klomp.org> 18084 18085 readdir_r() is deprecated, use readdir(). 18086 * src/abg-tools-utils.cc (dir_is_empty): Use readdir() instead 18087 of readdir_r(). 18088 180892017-09-02 Mark Wielaard <mark@klomp.org> 18090 18091 Declare eval_last_constant_dwarf_sub_expr with [u]int64_t not [s]size_t. 18092 * src/abg-dwarf-reader.cc (eval_last_constant_dwarf_sub_expr): 18093 Declare expr_len as uint64_t and value as int64_t. 18094 180952017-08-28 Dodji Seketeli <dodji@redhat.com> 18096 18097 Bug 22015 - Failing to return global scope of a DIE in certain cases 18098 * src/abg-dwarf-reader.cc (get_scope_for_die): If the translation 18099 unit of the parent die hasn't yet been constructed, then return 18100 the global scope of the current translation unit. 18101 * tests/data/test-read-dwarf/PR22015-libboost_iostreams.so: New 18102 binary test input. 18103 * tests/data/test-read-dwarf/PR22015-libboost_iostreams.so.abi: 18104 New reference test output. 18105 * tests/data/Makefile.am: Add the new test materials above to 18106 source distribution. 18107 * tests/test-read-dwarf.cc (in_out_specs): Add the new test input 18108 to the test suite. 18109 181102017-07-17 Dodji Seketeli <dodji@redhat.com> 18111 18112 Fix some make distcheck failures 18113 * tests/data/Makefile.am: Add 18114 test-diff-dwarf/test42-PR21296-libgcc.so, 18115 test-diff-dwarf/test42-PR21296-libclang.so, 18116 test-diff-dwarf/test42-PR21296-clanggcc-report0.txt to the source 18117 distribution. Also look for test-diff-filter/test39* tests inputs 18118 in the test-diff-filter/test39/ directory. 18119 181202017-07-17 Dodji Seketeli <dodji@redhat.com> 18121 18122 Avoid crashing when the elf file could not be read 18123 * src/abg-dwarf-reader.cc 18124 (read_context::elf_architecture_is_ppc64): Do not crash if the elf 18125 handle is nil. 18126 181272017-07-10 Dodji Seketeli <dodji@redhat.com> 18128 18129 Bug 21730 - Make abipkgdiff compare Linux Kernel packages as expected 18130 * include/abg-tools-utils.h (get_vmlinux_path_from_kernel_dist): 18131 Declare new function. 18132 (get_binary_paths_from_kernel_dist): Re-organize order of 18133 parameters. 18134 (file_is_kernel_package, file_is_kernel_debuginfo_package): Make 18135 the file_path parameter be const. 18136 (build_corpus_group_from_kernel_dist_under): Take an additional 18137 debug_info_root parameter. 18138 * src/abg-tools-utils.cc (file_is_kernel_package) 18139 (file_is_kernel_debuginfo_package): Const-ify the file_name 18140 parameter. 18141 (find_vmlinux_path): Define new static function. 18142 (get_binary_paths_from_kernel_dist): Re-organize the order of 18143 parameters. The debug_info_root_path parameter is now an input 18144 parameter. 18145 (get_vmlinux_path_from_kernel_dist): Define new function. 18146 (get_binary_paths_from_kernel_dist): Adjust invocation of 18147 get_binary_paths_from_kernel_dist. 18148 (build_corpus_group_from_kernel_dist_under): Take an additional 18149 debug_info_root parameter. 18150 * tools/abidw.cc (load_kernel_corpus_group_and_write_abixml): 18151 Adjust invocation to build_corpus_group_from_kernel_dist_under. 18152 * tools/abipkgdiff.cc (create_maps_of_package_content): Don't map 18153 the content of a Linux Kernel package. 18154 (compare_prepared_userspace_packages) 18155 (compare_prepared_linux_kernel_packages, compare_prepared): Define 18156 new functions. 18157 (compare): Use the new functions above here. 18158 * tools/kmidiff.cc (print_kernel_dist_binary_paths_under): Adjust 18159 the invocation of get_binary_paths_from_kernel_dist. 18160 (main): Adjust the invocation of 18161 build_corpus_group_from_kernel_dist_under. Make sure that a 18162 kernel package is accompanied by a debug info package. 18163 181642017-07-11 Dodji Seketeli <dodji@redhat.com> 18165 18166 Support up to two --wp options for abipkgdiff 18167 * doc/manuals/abipkgdiff.rst: Update the documentation to say that 18168 --wp can be provided twice, but not more than that. 18169 * tools/abipkgdiff.cc (options::kabi_whitelist_packages): Rename 18170 kabi_whitelist_package to this, and make be of vector<string> 18171 type. 18172 (package::erase_extraction_directories): Erase the white list 18173 package extracted data. 18174 (maybe_handle_kabi_whitelist_pkg, parse_command_line): Adjust. 18175 (main): Make sure there is no more than 2 --wp on the command 18176 line. Associate a white list package to each kernel package on 18177 the command line. 18178 181792017-07-11 Dodji Seketeli <dodji@redhat.com> 18180 18181 Fix support of the --wp option of abipkgdiff 18182 * tools/abipkgdiff.cc (parse_command_line): Consider the absolute 18183 path of the package given in argument to --wp. 18184 181852017-07-11 Dodji Seketeli <dodji@redhat.com> 18186 18187 Use shorter lines in abipkgdiff.cc 18188 * tools/abipkgdiff.cc (parse_command_line): Use shorter lines 18189 here. 18190 181912017-07-11 Dodji Seketeli <dodji@redhat.com> 18192 18193 Add missing space in abipkgdiff error message 18194 * tools/abipkgdiff.cc (extract_package): Add missing space here. 18195 181962017-07-11 Dodji Seketeli <dodji@redhat.com> 18197 18198 Replace --lkaw with -w and --lkaw-pkg with --wp 18199 * doc/manuals/abipkgdiff.rst: Adjust the documentation. 18200 * tools/abipkgdiff.cc (display_usage): Adjust the usage string. 18201 (parse_command_line): Parse -w instead of --lkaw and --wp 18202 insteadof --lkaw-pkg. 18203 182042017-07-11 Dodji Seketeli <dodji@redhat.com> 18205 18206 speed up class type lookup in a corpus 18207 * src/abg-ir.cc (lookup_class_type): In the overload that looks 18208 for a class name denoted by an interned_string in the corpus, do 18209 not look for the class in the translation units when the type 18210 wasn't found in the type map of the corpus. 18211 (maybe_update_types_lookup_map): Remove the 18212 erase_if_exists_already parameter and the code that uses it. 18213 (lookup_class_type_through_translation_units): Remove this 18214 function that is now useless. 18215 182162017-07-06 Dodji Seketeli <dodji@redhat.com> 18217 18218 Bug 21644 - abipkgdiff does not emit diagnostics about comparison errors 18219 * include/abg-dwarf-reader.h (status_to_diagnostic_string): 18220 Declare new function. 18221 * src/abg-dwarf-reader.cc (status_to_diagnostic_string): Define 18222 new function. 18223 * tools/abipkgdiff.cc (compare): Take a new detailed_error_status 18224 parameter. 18225 (compare_task::perform): Get the details of the error, in case the 18226 status of the comparison is ABIDIFF_ERROR. 18227 182282017-07-05 Dodji Seketeli <dodji@redhat.com> 18229 18230 Bug 21153 - abipkgdiff reports undetermined interface subtype changes 18231 * src/abg-ir.cc (get_name_of_qualified_type): A noop-qualified 18232 type has an empty string as reprsentation for its qualifier. 18233 * src/abg-dwarf-reader.cc (die_qualified_type_name): Adjust to 18234 comply with what is done in get_name_of_qualified_type. Adjust 18235 comment too. 18236 * tests/data/test-read-dwarf/test22-pr19097-libstdc++.so.6.0.17.so.abi: 18237 Adjust. 18238 * tests/data/test-diff-pkg/libcdio-0.94-1.fc26.x86_64--libcdio-0.94-2.fc26.x86_64-report.1.txt: 18239 New reference test output. 18240 * tests/data/test-diff-pkg/libcdio-0.94-1.fc26.x86_64.rpm: New 18241 test binary input. 18242 * tests/data/test-diff-pkg/libcdio-0.94-2.fc26.x86_64.rpm: Likewise. 18243 * tests/data/test-diff-pkg/libcdio-debuginfo-0.94-1.fc26.x86_64.rpm: Likewise. 18244 * tests/data/test-diff-pkg/libcdio-debuginfo-0.94-2.fc26.x86_64.rpm Likewise. 18245 * tests/data/Makefile.am: Add the new test inputs to source distribution. 18246 * tests/test-diff-pkg.cc (in_out_specs): Make this test harness run on 18247 the new test inputs above. 18248 182492017-07-03 Dodji Seketeli <dodji@redhat.com> 18250 18251 Fix typo in comments 18252 * src/abg-ir.cc (type_base::get_canonical_type_for): Fix a typo in 18253 a command. 18254 182552017-07-03 Dodji Seketeli <dodji@redhat.com> 18256 18257 Fix a typo when reporting size change wrt a decl-only class 18258 * src/abg-comparison.cc (report_size_and_alignment_changes): Fix 18259 typo. 18260 182612017-07-03 Dodji Seketeli <dodji@redhat.com> 18262 18263 Better handle decl-only classes being different from their definition 18264 * src/abg-comparison.cc (function_decl_diff::report): Don't report 18265 possible vtable changes between a decl-only class and its 18266 definition. 18267 * src/abg-ir.cc (type_base::get_canonical_type_for): Consider that 18268 a decl-only class is different from its definition when comparing 18269 types for the purpose of type canonicalization. 18270 (equals): In the class_or_union overload, only consider the global 18271 decl_only_class_equals_definition() property to know when to 18272 consider that a decl-only class is different from its definition 18273 when comparing two classes. 18274 * src/abg-reader.cc (build_class_decl): Read the size property of 18275 a class, even if it's a decl-only class. 18276 * src/abg-writer.cc (write_class_decl_opening_tag): Write size 18277 property of types even if the types are decl-only classes. 18278 * tests/data/test-annotate/test13-pr18894.so.abi: Adjust. 18279 * tests/data/test-annotate/test14-pr18893.so.abi: Likewise. 18280 * tests/data/test-annotate/test15-pr18892.so.abi: Likewise. 18281 * tests/data/test-annotate/test17-pr19027.so.abi: Likewise. 18282 * tests/data/test-annotate/test18-pr19037-libvtkRenderingLIC-6.1.so.abi: 18283 Likewise. 18284 * tests/data/test-annotate/test19-pr19023-libtcmalloc_and_profiler.so.abi: 18285 Likewise. 18286 * tests/data/test-annotate/test20-pr19025-libvtkParallelCore-6.1.so.abi: 18287 Likewise. 18288 * tests/data/test-annotate/test21-pr19092.so.abi: Likewise. 18289 * tests/data/test-diff-dwarf-abixml/test0-pr19026-libvtkIOSQL-6.1.so.1.abi: 18290 Likewise. 18291 * tests/data/test-diff-filter/test31-pr18535-libstdc++-report-0.txt: 18292 Likewise. 18293 * tests/data/test-diff-filter/test31-pr18535-libstdc++-report-1.txt: 18294 Likewise. 18295 * tests/data/test-read-dwarf/test12-pr18844.so.abi: Likewise. 18296 * tests/data/test-read-dwarf/test13-pr18894.so.abi: Likewise. 18297 * tests/data/test-read-dwarf/test14-pr18893.so.abi: Likewise. 18298 * tests/data/test-read-dwarf/test15-pr18892.so.abi: Likewise. 18299 * tests/data/test-read-dwarf/test17-pr19027.so.abi: Likewise. 18300 * tests/data/test-read-dwarf/test18-pr19037-libvtkRenderingLIC-6.1.so.abi: 18301 Likewise. 18302 * tests/data/test-read-dwarf/test19-pr19023-libtcmalloc_and_profiler.so.abi: 18303 Likewise. 18304 * tests/data/test-read-dwarf/test20-pr19025-libvtkParallelCore-6.1.so.abi: 18305 Likewise. 18306 * tests/data/test-read-dwarf/test21-pr19092.so.abi: Likewise. 18307 * tests/data/test-read-dwarf/test22-pr19097-libstdc++.so.6.0.17.so.abi: 18308 Likewise. 18309 * tests/data/test-read-dwarf/test9-pr18818-clang.so.abi: Likewise. 18310 183112017-06-28 Dodji Seketeli <dodji@redhat.com> 18312 18313 Don't add empty translation unit to corpus 18314 * src/abg-dwarf-reader.cc (build_translation_unit_and_add_to_ir): 18315 A translation unit DIE that has no child DIE shall not be added to 18316 the current ABI corpus. 18317 183182017-06-27 Dodji Seketeli <dodji@redhat.com> 18319 18320 Bug 21631 - Forgot a "break" statement in stv_to_elf_symbol_visibility 18321 * src/abg-dwarf-reader.cc (stv_to_elf_symbol_visibility): Add a 18322 missing break statement. 18323 183242017-06-26 Dodji Seketeli <dodji@redhat.com> 18325 18326 Bug 21630 - A this pointer DIE can be const 18327 * src/abg-dwarf-reader.cc (die_this_pointer_is_const): If the DIE 18328 is not a DW_TAG_pointer_type then don't crash. 18329 183302017-06-23 Dodji Seketeli <dodji@redhat.com> 18331 18332 Bug 21629 - equivalent DIEs must be of the same DIE source 18333 * src/abg-dwarf-reader.cc (compare_dies): Don't propagate 18334 a canonical DIE to a DIE that comes from a different source. 18335 183362017-06-22 Dodji Seketeli <dodji@redhat.com> 18337 18338 Bug 21627 - Libabigail doesn't consider translation unit compile dir 18339 *if* that translation unit has already been seen in the current 18340 binary, instead of creating a new one altogether. 18341 This patch doesn't carry a regression test as the problem was found 18342 while running the 18343 https://pagure.io/libabigail-selfcheck/blob/master/f/selfcheck.py 18344 script over the Fedora 25 critpath packages. 18345 The patch does however update existing reference outputs of existings 18346 tests where appropriate. 18347 * include/abg-ir.h (translation_unit::{get_compilation_dir_path, 18348 set_compilation_dir_path, get_absolute_path}): 18349 * src/abg-corpus.cc (corpus::add): Use the new 18350 translation_unit::get_absolute_path() as the key for the tu path 18351 -> tu map. 18352 * src/abg-dwarf-reader.cc 18353 (read_context::resolve_declaration_only_classes): Use the new 18354 translation_unit::get_absolute_path(). 18355 (build_translation_unit_and_add_to_ir): Set the compilation 18356 directory of the translation unit. 18357 * src/abg-ir-priv.h (translation_unit::priv::{comp_dir_path_, 18358 abs_path_}): 18359 * src/abg-ir.cc (translation_unit::set_path): Update comment. 18360 (translation_unit::{get_compilation_dir_path, 18361 set_compilation_dir_path, get_absolute_path}): Define new member 18362 functions. 18363 * src/abg-reader.cc (read_translation_unit): Take the new 18364 'comp-dir-path' attribute into account. 18365 * src/abg-writer.cc (write_translation_unit): Emit the new 18366 'comp-dir-path' attribute. 18367 * tests/data/test-annotate/libtest23.so.abi: Adjust. 18368 * tests/data/test-annotate/libtest24-drop-fns-2.so.abi: Adjust. 18369 * tests/data/test-annotate/libtest24-drop-fns.so.abi: Adjust. 18370 * tests/data/test-annotate/test0.abi: Adjust. 18371 * tests/data/test-annotate/test1.abi: Adjust. 18372 * tests/data/test-annotate/test13-pr18894.so.abi: Adjust. 18373 * tests/data/test-annotate/test14-pr18893.so.abi: Adjust. 18374 * tests/data/test-annotate/test15-pr18892.so.abi: Adjust. 18375 * tests/data/test-annotate/test17-pr19027.so.abi: Adjust. 18376 * tests/data/test-annotate/test18-pr19037-libvtkRenderingLIC-6.1.so.abi: Adjust. 18377 * tests/data/test-annotate/test19-pr19023-libtcmalloc_and_profiler.so.abi: Adjust. 18378 * tests/data/test-annotate/test2.so.abi: Adjust. 18379 * tests/data/test-annotate/test20-pr19025-libvtkParallelCore-6.1.so.abi: Adjust. 18380 * tests/data/test-annotate/test21-pr19092.so.abi: Adjust. 18381 * tests/data/test-annotate/test3.so.abi: Adjust. 18382 * tests/data/test-annotate/test4.so.abi: Adjust. 18383 * tests/data/test-annotate/test5.o.abi: Adjust. 18384 * tests/data/test-annotate/test6.so.abi: Adjust. 18385 * tests/data/test-annotate/test7.so.abi: Adjust. 18386 * tests/data/test-annotate/test8-qualified-this-pointer.so.abi: Adjust. 18387 * tests/data/test-read-dwarf/libtest23.so.abi: Adjust. 18388 * tests/data/test-read-dwarf/libtest24-drop-fns-2.so.abi: Adjust. 18389 * tests/data/test-read-dwarf/libtest24-drop-fns.so.abi: Adjust. 18390 * tests/data/test-read-dwarf/test0.abi: Adjust. 18391 * tests/data/test-read-dwarf/test1.abi: Adjust. 18392 * tests/data/test-read-dwarf/test10-pr18818-gcc.so.abi: Adjust. 18393 * tests/data/test-read-dwarf/test11-pr18828.so.abi: Adjust. 18394 * tests/data/test-read-dwarf/test12-pr18844.so.abi: Adjust. 18395 * tests/data/test-read-dwarf/test13-pr18894.so.abi: Adjust. 18396 * tests/data/test-read-dwarf/test14-pr18893.so.abi: Adjust. 18397 * tests/data/test-read-dwarf/test15-pr18892.so.abi: Adjust. 18398 * tests/data/test-read-dwarf/test16-pr18904.so.abi: Adjust. 18399 * tests/data/test-read-dwarf/test17-pr19027.so.abi: Adjust. 18400 * tests/data/test-read-dwarf/test18-pr19037-libvtkRenderingLIC-6.1.so.abi: Adjust. 18401 * tests/data/test-read-dwarf/test19-pr19023-libtcmalloc_and_profiler.so.abi: Adjust. 18402 * tests/data/test-read-dwarf/test2.so.abi: Adjust. 18403 * tests/data/test-read-dwarf/test20-pr19025-libvtkParallelCore-6.1.so.abi: Adjust. 18404 * tests/data/test-read-dwarf/test21-pr19092.so.abi: Adjust. 18405 * tests/data/test-read-dwarf/test22-pr19097-libstdc++.so.6.0.17.so.abi: Adjust. 18406 * tests/data/test-read-dwarf/test3.so.abi: Adjust. 18407 * tests/data/test-read-dwarf/test4.so.abi: Adjust. 18408 * tests/data/test-read-dwarf/test5.o.abi: Adjust. 18409 * tests/data/test-read-dwarf/test6.so.abi: Adjust. 18410 * tests/data/test-read-dwarf/test7.so.abi: Adjust. 18411 * tests/data/test-read-dwarf/test8-qualified-this-pointer.so.abi: Adjust. 18412 * tests/data/test-read-dwarf/test9-pr18818-clang.so.abi: Adjust. 18413 184142017-05-04 Dodji Seketeli <dodji@redhat.com> 18415 18416 Misc style fixes 18417 * src/abg-dwarf-reader.cc (read_context::{die_wip_classes_map, 18418 die_wip_function_types_map, types_to_canonicalize, 18419 tu_die_imported_unit_points_map, die_parent_map, 18420 load_kernel_symbol_table}): Add missing space to statement. 18421 (get_parent_die): Likewise. 18422 (build_enum_type): Fix typo in comment. 18423 (e_machine_to_string, get_version_definition_for_versym) 18424 (lookup_public_function_symbol_from_elf) 18425 (lookup_public_variable_symbol_from_elf) 18426 (lookup_data_tag_from_dynamic_segment, die_is_declaration_only) 18427 (die_is_reference_type, die_function_type_is_method_type): Fix 18428 indentation. 18429 (read_context::{resolve_declaration_only_classes, 18430 fixup_functions_with_no_symbols, 18431 load_symbol_maps_from_symtab_section, load_dt_soname_and_needed, 18432 load_elf_architecture, load_elf_properties, 18433 maybe_adjust_address_for_exec_or_dyn, maybe_adjust_fn_sym_address, 18434 address_is_in_opd_section, load_elf_architecture, 18435 build_die_parent_maps}): Likewise. 18436 (op_pushes_constant_value, op_manipulates_stack): Use the 18437 dwarf_expr_eval_context::push method. 18438 (op_is_control_flow, die_return_and_parm_names_from_fn_type_die) 18439 (die_function_signature, die_pretty_print_type) 18440 (get_default_array_lower_bound) 18441 (build_translation_unit_and_add_to_ir, build_enum_type) 18442 (add_or_update_class_type, build_function_type) 18443 (build_function_decl, build_ir_node_from_die) 18444 (lookup_public_function_symbol_from_elf): Fix indentation. 18445 * src/abg-ir.cc (maybe_update_types_lookup_map): Remove useless space. 18446 184472017-05-31 Dodji Seketeli <dodji@redhat.com> 18448 18449 Fix doc glitch in abidiff.rst 18450 * doc/manuals/abidiff.rst: Fix glitch. 18451 184522017-06-12 Dodji Seketeli <dodji@redhat.com> 18453 18454 Symbols with the same zero value are not aliases 18455 * src/abg-dwarf-reader.cc (load_symbol_maps_from_symtab_section): 18456 Do not consider symbols with zero value as being aliases. 18457 * tests/data/test-diff-filter/test20-inline-report-0.txt: Adjust. 18458 * tests/data/test-diff-filter/test20-inline-report-1.txt: 18459 Likewise. 18460 * test-diff-filter/test41-PR21486-abg-writer.gcc.o: New test 18461 binary input. 18462 * tests/data/test-diff-filter/test41-PR21486-abg-writer.llvm.o: 18463 Likewise. 18464 * tests/data/Makefile.am: Add the new test material to source 18465 distribution. 18466 * tests/test-diff-filter.cc (in_out_specs): Run the test harness 18467 on the new test input above. 18468 * tests/data/test-diff-dwarf/test5-report.txt: Adjust. 18469 * tests/data/test-diff-filter/test9-report.txt: Adjust. 18470 * tests/data/test-diff-filter/test20-inline-report-0.txt: Adjust. 18471 * tests/data/test-diff-filter/test20-inline-report-1.txt: Adjust. 18472 184732017-06-12 Dodji Seketeli <dodji@redhat.com> 18474 18475 Support ELF symbol visibility property 18476 * include/abg-ir.h (enum elf_symbol::visibility): Define new enum. 18477 (elf_symbol::{elf_symbol, create}): Take a visibility parameter. 18478 (elf_symbol::{set, get}_visibility): Declare new accessors. 18479 (string_to_elf_symbol_binding): Declare new function. 18480 * src/abg-ir.cc (elf_symbol::priv::visibility_): New data member. 18481 (elf_symbol::priv::priv): Adjust. 18482 (elf_symbol::elf_symbol): Take a visibility parameter. 18483 (elf_symbol::create): Likewise 18484 (elf_symbol::{s,g}et_visibility): Define new accessors. 18485 (elf_symbol::is_public): Adjust. 18486 (operator<<(std::ostream&, elf_symbol::visibility)): Define new 18487 operator. 18488 (string_to_elf_symbol_visibility): Define new function. 18489 * src/abg-dwarf-reader.cc (stv_to_elf_symbol_visibility): Define 18490 new static function. 18491 (lookup_symbol_from_sysv_hash_tab) 18492 (lookup_symbol_from_gnu_hash_tab, lookup_symbol_from_symtab) 18493 (create_default_var_sym, create_default_fn_sym): Adjust. 18494 * src/abg-reader.cc (read_elf_symbol_binding): Define new 18495 function. 18496 (build_elf_symbol): Adjust. 18497 * src/abg-writer.cc (write_elf_symbol_visibility): Define new 18498 function. 18499 * tests/data/test-annotate/libtest23.so.abi: Adjust. 18500 * tests/data/test-annotate/libtest24-drop-fns-2.so.abi: Adjust. 18501 * tests/data/test-annotate/libtest24-drop-fns.so.abi: Adjust. 18502 * tests/data/test-annotate/test0.abi: Adjust. 18503 * tests/data/test-annotate/test1.abi: Adjust. 18504 * tests/data/test-annotate/test13-pr18894.so.abi: Adjust. 18505 * tests/data/test-annotate/test14-pr18893.so.abi: Adjust. 18506 * tests/data/test-annotate/test15-pr18892.so.abi: Adjust. 18507 * tests/data/test-annotate/test17-pr19027.so.abi: Adjust. 18508 * tests/data/test-annotate/test18-pr19037-libvtkRenderingLIC-6.1.so.abi: 18509 Adjust. 18510 * tests/data/test-annotate/test19-pr19023-libtcmalloc_and_profiler.so.abi: 18511 Adjust. 18512 * tests/data/test-annotate/test2.so.abi: Adjust. 18513 * tests/data/test-annotate/test20-pr19025-libvtkParallelCore-6.1.so.abi: 18514 Adjust. 18515 * tests/data/test-annotate/test21-pr19092.so.abi: Adjust. 18516 * tests/data/test-annotate/test3.so.abi: Adjust. 18517 * tests/data/test-annotate/test4.so.abi: Adjust. 18518 * tests/data/test-annotate/test5.o.abi: Adjust. 18519 * tests/data/test-annotate/test6.so.abi: Adjust. 18520 * tests/data/test-annotate/test7.so.abi: Adjust. 18521 * tests/data/test-annotate/test8-qualified-this-pointer.so.abi: 18522 Adjust. 18523 * tests/data/test-read-dwarf/libtest23.so.abi: Adjust. 18524 * tests/data/test-read-dwarf/libtest24-drop-fns-2.so.abi: Adjust. 18525 * tests/data/test-read-dwarf/libtest24-drop-fns.so.abi: Adjust. 18526 * tests/data/test-read-dwarf/test0.abi: Adjust. 18527 * tests/data/test-read-dwarf/test1.abi: Adjust. 18528 * tests/data/test-read-dwarf/test10-pr18818-gcc.so.abi: Adjust. 18529 * tests/data/test-read-dwarf/test11-pr18828.so.abi: Adjust. 18530 * tests/data/test-read-dwarf/test12-pr18844.so.abi: Adjust. 18531 * tests/data/test-read-dwarf/test13-pr18894.so.abi: Adjust. 18532 * tests/data/test-read-dwarf/test14-pr18893.so.abi: Adjust. 18533 * tests/data/test-read-dwarf/test15-pr18892.so.abi: Adjust. 18534 * tests/data/test-read-dwarf/test16-pr18904.so.abi: Adjust. 18535 * tests/data/test-read-dwarf/test17-pr19027.so.abi: Adjust. 18536 * tests/data/test-read-dwarf/test18-pr19037-libvtkRenderingLIC-6.1.so.abi: 18537 Adjust. 18538 * tests/data/test-read-dwarf/test19-pr19023-libtcmalloc_and_profiler.so.abi: 18539 Adjust. 18540 * tests/data/test-read-dwarf/test2.so.abi: Adjust. 18541 * tests/data/test-read-dwarf/test20-pr19025-libvtkParallelCore-6.1.so.abi: 18542 Adjust. 18543 * tests/data/test-read-dwarf/test21-pr19092.so.abi: Adjust. 18544 * tests/data/test-read-dwarf/test22-pr19097-libstdc++.so.6.0.17.so.abi: 18545 Adjust. 18546 * tests/data/test-read-dwarf/test3.so.abi: Adjust. 18547 * tests/data/test-read-dwarf/test4.so.abi: Adjust. 18548 * tests/data/test-read-dwarf/test5.o.abi: Adjust. 18549 * tests/data/test-read-dwarf/test6.so.abi: Adjust. 18550 * tests/data/test-read-dwarf/test7.so.abi: Adjust. 18551 * tests/data/test-read-dwarf/test8-qualified-this-pointer.so.abi: 18552 Adjust. 18553 * tests/data/test-read-dwarf/test9-pr18818-clang.so.abi: Adjust. 18554 * tests/data/test-read-write/test26.xml: Adjust. 18555 * tests/data/test-read-write/test27.xml: Adjust. 18556 * tests/data/test-read-write/test28-without-std-fns-ref.xml: 18557 Adjust. 18558 * tests/data/test-read-write/test28-without-std-vars-ref.xml: 18559 Adjust. 18560 185612017-06-09 Dodji Seketeli <dodji@redhat.com> 18562 18563 Filter top cv qualifier changes on function parameter types 18564 * include/abg-comparison.h (enum diff_category): Add a new 18565 FN_PARM_TYPE_TOP_CV_CHANGE_CATEGORY enumerator. "Or" the 18566 enumerator to the EVERYTHING_CATEGORY enumerator. 18567 * src/abg-comp-filter.cc (has_fn_parm_type_cv_qual_change): Define 18568 new static function. 18569 (categorize_harmless_diff_node): Categorize changes to top cv 18570 qualifiers on function parameter types into the new 18571 FN_PARM_TYPE_TOP_CV_CHANGE_CATEGORY. 18572 * src/abg-comparison.cc (get_default_harmless_categories_bitmap): 18573 Add the new FN_PARM_TYPE_TOP_CV_CHANGE_CATEGORY category to the 18574 set of harmless categories. 18575 (operator<<(ostream&, diff_category)): Adjust to serialize 18576 the new FN_PARM_TYPE_TOP_CV_CHANGE_CATEGORY. 18577 * tests/data/test-diff-filter/libtest40-v0.so: New test input binary. 18578 * tests/data/test-diff-filter/libtest40-v1.so: Likewise. 18579 * tests/data/test-diff-filter/test40-report-0.txt: New test 18580 reference output. 18581 * tests/data/test-diff-filter/test40-v0.cc: Source code of the 18582 test binary above. 18583 * tests/data/test-diff-filter/test40-v1.cc: Likewise. 18584 * tests/data/Makefile.am: Add the new test material above to 18585 source distribution. 18586 * tests/test-diff-filter.cc (in_out_specs): Add new binaries to 18587 compare. 18588 * tests/data/test-diff-filter/test30-pr18904-rvalueref-report0.txt: 18589 Adjust. 18590 * tests/data/test-diff-filter/test30-pr18904-rvalueref-report1.txt: 18591 Likewise. 18592 * tests/data/test-diff-filter/test35-pr18754-no-added-syms-report-0.txt: 18593 Likewise. 18594 * tests/data/test-diff-filter/test35-pr18754-no-added-syms-report-1.txt: 18595 Likewise. 18596 185972017-05-28 Dodji Seketeli <dodji@redhat.com> 18598 18599 Do not report about voffset when it's not set in debug info 18600 * include/abg-ir.h (mem_fn_context_rel::mem_fn_context_rel): 18601 Initialize the virtual offset to -1. 18602 * src/abg-comparison.cc (represent): In the overload to represent 18603 a method_decl, do not represent the vofffset if it's not set. 18604 * src/abg-writer.cc (write_voffset): The virtual offset is signed 18605 because if it's -1, it means no offset is set. 18606 * tests/data/test-annotate/test14-pr18893.so.abi: Adjust. 18607 * tests/data/test-annotate/test18-pr19037-libvtkRenderingLIC-6.1.so.abi: 18608 Adjust. 18609 * tests/data/test-annotate/test19-pr19023-libtcmalloc_and_profiler.so.abi: 18610 Adjust. 18611 * tests/data/test-annotate/test20-pr19025-libvtkParallelCore-6.1.so.abi: 18612 Adjust. 18613 * tests/data/test-diff-dwarf-abixml/test0-pr19026-libvtkIOSQL-6.1.so.1.abi: 18614 Adjust. 18615 * tests/data/test-diff-dwarf/test28-vtable-changes-report-0.txt: Adjust. 18616 * tests/data/test-read-dwarf/test10-pr18818-gcc.so.abi: Adjust. 18617 * tests/data/test-read-dwarf/test11-pr18828.so.abi: Adjust. 18618 * tests/data/test-read-dwarf/test14-pr18893.so.abi: Adjust. 18619 * tests/data/test-read-dwarf/test18-pr19037-libvtkRenderingLIC-6.1.so.abi: 18620 Adjust. 18621 * tests/data/test-read-dwarf/test19-pr19023-libtcmalloc_and_profiler.so.abi: 18622 Adjust. 18623 * tests/data/test-read-dwarf/test20-pr19025-libvtkParallelCore-6.1.so.abi: 18624 Adjust. 18625 * tests/data/test-read-dwarf/test22-pr19097-libstdc++.so.6.0.17.so.abi: 18626 Adjust. 18627 186282017-05-17 Dodji Seketeli <dodji@redhat.com> 18629 18630 Allow selective resolution of class declaration 18631 * include/abg-fwd.h (type_base_wptrs_type) 18632 (istring_type_base_wptrs_map_type): Define new typedefs. 18633 (lookup_class_types): Declare new functions. 18634 * include/abg-ir.h 18635 (environment::decl_only_class_equals_definition): Declare new 18636 accessor. 18637 (type_maps::{*_types}): Make these accessors return 18638 istring_type_base_wptrs_map_type& instead of 18639 istring_type_base_wptr_map_type&. 18640 * src/abg-dwarf-reader.cc 18641 (read_context::resolve_declaration_only_classes): Implement the 18642 new selective declaration resolution scheme. 18643 * src/abg-ir.cc (type_maps::priv::{*_types_}): Change the type of 18644 these data members from istring_type_base_wptr_map_type to 18645 istring_type_base_wptrs_map_type. 18646 (type_maps::{*_types}): Make these accessors definitions return 18647 istring_type_base_wptrs_map_type& instead of 18648 istring_type_base_wptr_map_type&. 18649 (translation_unit::bind_function_type_life_time): Adjust. 18650 (environment::priv::decl_only_class_equals_definition_): New data 18651 member. 18652 (environment::priv::priv): Initialize it. By default, a decl-only 18653 class is now considered different from its definition. 18654 (environment::decl_only_class_equals_definition): Define new 18655 accessor. 18656 (lookup_types_in_map, lookup_class_types): Define new functions. 18657 (lookup_type_in_map, lookup_union_type_per_location) 18658 (lookup_basic_type, lookup_basic_type_per_location) 18659 (lookup_class_type, lookup_class_type_per_location) 18660 (lookup_union_type, lookup_enum_type) 18661 (lookup_enum_type_per_location, lookup_typedef_type) 18662 (lookup_typedef_type_per_location, lookup_qualified_type) 18663 (lookup_pointer_type, lookup_reference_type, lookup_array_type) 18664 (lookup_function_type, maybe_update_types_lookup_map) 18665 (maybe_update_types_lookup_map<class_decl>) 18666 (maybe_update_types_lookup_map<function_type>): Adjust. 18667 (type_base::get_canonical_type_for): When doing type comparison 18668 here, we can now consider that an unresolved class declaration 18669 compares different to an incompatible class definition of the same 18670 name. So no need to look through decl-only classes in that case. 18671 (equals): In the overload for class_or_union, if 18672 environment::decl_only_class_equals_definition() is false, then an 18673 unresolved class declaration of name "N" compares different to a 18674 class definition named "N". 18675 * tests/data/test-annotate/test15-pr18892.so.abi: Adjust. 18676 * tests/data/test-read-dwarf/test9-pr18818-clang.so.abi: Adjust 18677 * tests/data/test-read-dwarf/test12-pr18844.so.abi: Adjust. 18678 * tests/data/test-read-dwarf/test15-pr18892.so.abi: Adjust. 18679 * tests/data/test-diff-dwarf/test28-vtable-changes-report-0.txt: 18680 Adjust. 18681 * tests/data/test-diff-pkg/spice-server-0.12.4-19.el7.x86_64-0.12.8-1.el7.x86_64-report-2.txt: 18682 Adjust. 18683 * tests/data/test-diff-filter/test38/Makefile: New test material. 18684 * tests/data/test-diff-filter/test38/test38-a.c: Likewise. 18685 * tests/data/test-diff-filter/test38/test38-b.c: Likewise. 18686 * tests/data/test-diff-filter/test38/test38-c.c: Likewise. 18687 * tests/data/test-diff-filter/test38/test38-report-0.txt: Likewise. 18688 * tests/data/test-diff-filter/test38/test38-v0: Likewise. 18689 * tests/data/test-diff-filter/test38/test38-v1: Likewise. 18690 * tests/data/test-diff-filter/test38/test38.h: Likewise. 18691 * tests/data/test-diff-filter/test39/Makefile: Likewise. 18692 * tests/data/test-diff-filter/test39/test39-a-v0.c: Likewise. 18693 * tests/data/test-diff-filter/test39/test39-a-v1.c: Likewise. 18694 * tests/data/test-diff-filter/test39/test39-b-v0.c: Likewise. 18695 * tests/data/test-diff-filter/test39/test39-b-v1.c: Likewise. 18696 * tests/data/test-diff-filter/test39/test39-c-v0.c: Likewise. 18697 * tests/data/test-diff-filter/test39/test39-c-v1.c: Likewise. 18698 * tests/data/test-diff-filter/test39/test39-main.c: Likewise. 18699 * tests/data/test-diff-filter/test39/test39-report-0.txt: Likewise. 18700 * tests/data/test-diff-filter/test39/test39-v0: Likewise. 18701 * tests/data/test-diff-filter/test39/test39-v1: Likewise. 18702 * tests/data/test-diff-filter/test39/test39.h: Likewise. 18703 * tests/data/Makefile.am: Add the new test material above to the 18704 source distribution. 18705 * tests/test-diff-filter.cc (in_out_specs): Add the new test 18706 inputs above to the test harness. 18707 187082017-05-31 Dodji Seketeli <dodji@redhat.com> 18709 18710 Add documentation for the kmidiff tool 18711 * doc/manuals/kmidiff.rst: New doc file. 18712 * doc/manuals/Makefile.am: Add the above file to source 18713 distribution. 18714 187152017-05-31 Dodji Seketeli <dodji@redhat.com> 18716 18717 Allow re-using the ELF/DWARF read_context when loading a corpus group 18718 * include/abg-dwarf-reader.h (reset_read_context): Declare new 18719 function. 18720 * src/abg-dwarf-reader.cc (read_context::elf_paths_): Make this to 18721 be non const. 18722 (read_context::initialize): New function to initialize all data 18723 members. 18724 (read_context::read_context): Use the new read_context::initialize 18725 function, rather than initializing data members 'inline' here. 18726 (reset_read_context): Define a new function to reset a 18727 read_context so that it can be re-used to load a new corpus. 18728 187292017-05-31 Dodji Seketeli <dodji@redhat.com> 18730 18731 Add --vmlinux{1,2} option to abidw and kmidiff 18732 * include/abg-tools-utils.h 18733 (build_corpus_group_from_kernel_dist_under): Add a new 18734 vmlinux_path parameter. 18735 * src/abg-tools-utils.cc (find_vmlinux_and_module_paths): Do not 18736 try to find a vmlinux binary if we already have the path to one. 18737 (build_corpus_group_from_kernel_dist_under): Add a new 18738 vmlinux_path parameter. 18739 * tools/abidw.cc (options::vmlinux): New data member. 18740 (display_usage): Add a usage string for --vmlinux 18741 (parse_command_line): Parse the new --vmlinux option. 18742 (load_kernel_corpus_group_and_write_abixml): Fix some return code 18743 when the function fails. Verify the presence of the vmlinux 18744 binary that was given. Adjust. 18745 * tools/kmidiff.cc (options::{vmlinux1, vmlinux2}): New data 18746 members. 18747 (display_usage): Add a usage string for --vmlinux1 and --vmlinux2. 18748 (parse_command_line): Parse the --vmlinux1 and --vmlinux2 18749 options. 18750 (main): Adjust. 18751 187522017-05-18 Dodji Seketeli <dodji@redhat.com> 18753 18754 Cache function type name computation results 18755 * src/abg-ir.cc (get_type_name): Cache function type names. 18756 187572017-05-29 Dodji Seketeli <dodji@redhat.com> 18758 18759 Fix innacurate test condition when reading an enum type from abixml 18760 * src/abg-reader.cc (build_enum_type_decl): Do not check for 18761 errno which might have been set earlier by something else. 18762 Rather, check the returned value for overflow or underflow. 18763 187642017-05-28 Dodji Seketeli <dodji@redhat.com> 18765 18766 Do not report about voffset when it's not set in debug info 18767 * include/abg-ir.h (mem_fn_context_rel::mem_fn_context_rel): 18768 Initialize the virtual offset to -1. 18769 * src/abg-comparison.cc (represent): In the overload to represent 18770 a method_decl, do not represent the vofffset if it's not set. 18771 * src/abg-writer.cc (write_voffset): The virtual offset is signed 18772 because if it's -1, it means no offset is set. 18773 * tests/data/test-annotate/test14-pr18893.so.abi: Adjust. 18774 * tests/data/test-annotate/test18-pr19037-libvtkRenderingLIC-6.1.so.abi: 18775 Adjust. 18776 * tests/data/test-annotate/test19-pr19023-libtcmalloc_and_profiler.so.abi: 18777 Adjust. 18778 * tests/data/test-annotate/test20-pr19025-libvtkParallelCore-6.1.so.abi: 18779 Adjust. 18780 * tests/data/test-diff-dwarf-abixml/test0-pr19026-libvtkIOSQL-6.1.so.1.abi: 18781 Adjust. 18782 * tests/data/test-diff-dwarf/test28-vtable-changes-report-0.txt: Adjust. 18783 * tests/data/test-read-dwarf/test10-pr18818-gcc.so.abi: Adjust. 18784 * tests/data/test-read-dwarf/test11-pr18828.so.abi: Adjust. 18785 * tests/data/test-read-dwarf/test14-pr18893.so.abi: Adjust. 18786 * tests/data/test-read-dwarf/test18-pr19037-libvtkRenderingLIC-6.1.so.abi: 18787 Adjust. 18788 * tests/data/test-read-dwarf/test19-pr19023-libtcmalloc_and_profiler.so.abi: 18789 Adjust. 18790 * tests/data/test-read-dwarf/test20-pr19025-libvtkParallelCore-6.1.so.abi: 18791 Adjust. 18792 * tests/data/test-read-dwarf/test22-pr19097-libstdc++.so.6.0.17.so.abi: 18793 Adjust. 18794 187952017-05-18 Dodji Seketeli <dodji@redhat.com> 18796 18797 Speedup DIE representation computing esp function signature in C 18798 * src/abg-dwarf-reader.cc (die_function_signature): For C DIEs, 18799 just return the (linkage) name of the function. 18800 * tests/data/test-annotate/test15-pr18892.so.abi: Adjust. 18801 * tests/data/test-annotate/test21-pr19092.so.abi: Adjust. 18802 * tests/data/test-read-dwarf/test15-pr18892.so.abi: Adjust. 18803 * tests/data/test-read-dwarf/test21-pr19092.so.abi: Adjust. 18804 188052017-05-17 Dodji Seketeli <dodji@redhat.com> 18806 18807 Allow selective resolution of class declaration 18808 * include/abg-fwd.h (type_base_wptrs_type) 18809 (istring_type_base_wptrs_map_type): Define new typedefs. 18810 (lookup_class_types): Declare new functions. 18811 * include/abg-ir.h 18812 (environment::decl_only_class_equals_definition): Declare new 18813 accessor. 18814 (type_maps::{*_types}): Make these accessors return 18815 istring_type_base_wptrs_map_type& instead of 18816 istring_type_base_wptr_map_type&. 18817 * src/abg-dwarf-reader.cc 18818 (read_context::resolve_declaration_only_classes): Implement the 18819 new selective declaration resolution scheme. 18820 * src/abg-ir.cc (type_maps::priv::{*_types_}): Change the type of 18821 these data members from istring_type_base_wptr_map_type to 18822 istring_type_base_wptrs_map_type. 18823 (type_maps::{*_types}): Make these accessors definitions return 18824 istring_type_base_wptrs_map_type& instead of 18825 istring_type_base_wptr_map_type&. 18826 (translation_unit::bind_function_type_life_time): Adjust. 18827 (environment::priv::decl_only_class_equals_definition_): New data 18828 member. 18829 (environment::priv::priv): Initialize it. By default, a decl-only 18830 class is now considered different from its definition. 18831 (environment::decl_only_class_equals_definition): Define new 18832 accessor. 18833 (lookup_types_in_map, lookup_class_types): Define new functions. 18834 (lookup_type_in_map, lookup_union_type_per_location) 18835 (lookup_basic_type, lookup_basic_type_per_location) 18836 (lookup_class_type, lookup_class_type_per_location) 18837 (lookup_union_type, lookup_enum_type) 18838 (lookup_enum_type_per_location, lookup_typedef_type) 18839 (lookup_typedef_type_per_location, lookup_qualified_type) 18840 (lookup_pointer_type, lookup_reference_type, lookup_array_type) 18841 (lookup_function_type, maybe_update_types_lookup_map) 18842 (maybe_update_types_lookup_map<class_decl>) 18843 (maybe_update_types_lookup_map<function_type>): Adjust. 18844 (type_base::get_canonical_type_for): When doing type comparison 18845 here, we can now consider that an unresolved class declaration 18846 compares different to an incompatible class definition of the same 18847 name. So no need to look through decl-only classes in that case. 18848 (equals): In the overload for class_or_union, if 18849 environment::decl_only_class_equals_definition() is false, then an 18850 unresolved class declaration of name "N" compares different to a 18851 class definition named "N". 18852 * tests/data/test-annotate/test15-pr18892.so.abi: Adjust. 18853 * tests/data/test-read-dwarf/test9-pr18818-clang.so.abi: Adjust 18854 * tests/data/test-read-dwarf/test12-pr18844.so.abi: Adjust. 18855 * tests/data/test-read-dwarf/test15-pr18892.so.abi: Adjust. 18856 * tests/data/test-diff-dwarf/test28-vtable-changes-report-0.txt: 18857 Adjust. 18858 * tests/data/test-diff-pkg/spice-server-0.12.4-19.el7.x86_64-0.12.8-1.el7.x86_64-report-2.txt: 18859 Adjust. 18860 * tests/data/test-diff-filter/test38/Makefile: New test material. 18861 * tests/data/test-diff-filter/test38/test38-a.c: Likewise. 18862 * tests/data/test-diff-filter/test38/test38-b.c: Likewise. 18863 * tests/data/test-diff-filter/test38/test38-c.c: Likewise. 18864 * tests/data/test-diff-filter/test38/test38-report-0.txt: Likewise. 18865 * tests/data/test-diff-filter/test38/test38-v0: Likewise. 18866 * tests/data/test-diff-filter/test38/test38-v1: Likewise. 18867 * tests/data/test-diff-filter/test38/test38.h: Likewise. 18868 * tests/data/test-diff-filter/test39/Makefile: Likewise. 18869 * tests/data/test-diff-filter/test39/test39-a-v0.c: Likewise. 18870 * tests/data/test-diff-filter/test39/test39-a-v1.c: Likewise. 18871 * tests/data/test-diff-filter/test39/test39-b-v0.c: Likewise. 18872 * tests/data/test-diff-filter/test39/test39-b-v1.c: Likewise. 18873 * tests/data/test-diff-filter/test39/test39-c-v0.c: Likewise. 18874 * tests/data/test-diff-filter/test39/test39-c-v1.c: Likewise. 18875 * tests/data/test-diff-filter/test39/test39-main.c: Likewise. 18876 * tests/data/test-diff-filter/test39/test39-report-0.txt: Likewise. 18877 * tests/data/test-diff-filter/test39/test39-v0: Likewise. 18878 * tests/data/test-diff-filter/test39/test39-v1: Likewise. 18879 * tests/data/test-diff-filter/test39/test39.h: Likewise. 18880 * tests/data/Makefile.am: Add the new test material above to the 18881 source distribution. 18882 * tests/test-diff-filter.cc (in_out_specs): Add the new test 18883 inputs above to the test harness. 18884 188852017-05-04 Dodji Seketeli <dodji@redhat.com> 18886 18887 Avoid de-duplicating different C types that have identical name 18888 * src/abg-dwarf-reader.cc (die_decl_map_type, die_type_map_type): 18889 Remove these typedefs. 18890 (die_artefact_map_type, istring_dwarf_offsets_map_type): New 18891 typedefs. 18892 (die_is_at_class_scope, die_qualified_type_name) 18893 (die_qualified_decl_name, die_qualified_type_name_empty) 18894 (die_return_and_parm_names_from_fn_type_die) 18895 (die_function_type_is_method_type): 18896 Const-ify the read_context& parameter. 18897 (read_context::die_source_dependant_container_set::get_container): 18898 Likewise. 18899 (read_context::{name_artefacts_map_, per_tu_name_artefacts_map_, 18900 die_decl_map_, alternate_die_decl_map_, type_unit_die_decl_map_, 18901 die_type_map_, alternate_die_type_map_, type_unit_die_type_map_}): 18902 Remove data members. 18903 (read_context::{die_decl_map, alternate_die_decl_map, 18904 associate_die_to_decl_primary, associate_die_to_decl_alternate, 18905 associate_die_to_decl_from_type_unit, 18906 lookup_decl_from_die_offset_primary, 18907 lookup_decl_from_die_offset_alternate, 18908 lookup_decl_from_type_unit_die_offset, 18909 lookup_type_artifact_from_die_per_tu, 18910 lookup_artifact_from_per_tu_die_representation, 18911 associate_die_to_artifact_by_repr, 18912 associate_die_to_artifact_by_repr_internal, clear_die_type_maps}): 18913 Remove member functions. 18914 (read_context::{decl_die_repr_die_offsets_maps_, 18915 type_die_repr_die_offsets_maps_, decl_die_artefact_maps_, 18916 type_die_artefact_maps_, dwarf_expr_eval_context_}): Add new data 18917 members. 18918 (read_context::clear_per_translation_unit_data): Don't clear 18919 read_context::per_tu_name_artefacts_map_ data member as it's 18920 removed. 18921 (read_context::clear_per_corpus_data): Don't clear 18922 read_context::name_artefacts_map_ and all the other relevant data 18923 members that got removed. 18924 (read_context::{dwarf_per_die_source, 18925 decl_die_repr_die_offsets_maps, type_die_repr_die_offsets_maps, 18926 get_canonical_die, get_die_from_offset, decl_die_artefact_maps, 18927 type_die_artefact_maps, dwarf_expr_eval_ctxt}): Add new member 18928 functions. 18929 (compare_dies, compare_as_decl_dies) 18930 (compare_as_type_dies, maybe_finish_function_decl_reading) 18931 (die_is_anonymous): Define new functions. 18932 (read_context::associate_die_to_decl): Remove the 18933 do_associate_by_repr_per_tu parameter. Use the new 18934 read_context::{decl_die_artefact_maps_, get_canonical_die} member 18935 functions. 18936 (read_context::lookup_decl_from_die_offset): Use Dwarf_Off rather 18937 than size_t for the type of the die_offset parameter. Use the 18938 lookup_artifact_from_die_offset member function. 18939 (read_context::lookup_type_artifact_from_die): Const-ify. In one 18940 overload, take a new 'die_as_type' parameter. Use the new 18941 get_canonical_die, type_die_artefact_maps and 18942 decl_die_artefact_maps member functions. In the second overload, 18943 use the first overload. 18944 (read_context::odr_is_relevant): Add an overload that takes a DIE. 18945 (read_context::associate_die_to_type): Remove the 18946 do_associate_by_repr and do_associate_per_tu parameters. Use the 18947 new get_canonical_die and type_die_artefact_maps member functions. 18948 (read_context::lookup_type_from_die): Use the new 18949 lookup_artifact_from_die member function. 18950 (read_context::lookup_type_from_die_offset): Use the new 18951 type_die_artefact_maps member function. When the found artifact 18952 is a function_decl, return its type. 18953 (read_context::schedule_type_for_late_canonicalization): Use the 18954 new get_canonical_die and type_die_artefact_maps member functions. 18955 (die_function_signature): Const-ify. Get the scope name right 18956 even for scopes that are not types. 18957 (die_member_offset): Make eval_last_constant_dwarf_sub_expr use 18958 the new cached DWARF expression evalution context. 18959 (get_parent_die): Support where_offset equals to zero. This means 18960 we are looking at a C binary, basically. 18961 (build_enum_type) : Use the new overload of 18962 read_context::odr_is_relevant that takes a DIE. Adjust. 18963 (add_or_update_union_type, add_or_update_class_type): Don't lookup 18964 classes/unions per location anymore. Now that we can compare DIEs 18965 in a fined grain manner, the approximation of the location is not 18966 useful anymore. 18967 (build_pointer_type) 18968 (build_function_type): Associate DIE to type if we reuse an 18969 existing type. 18970 (build_or_get_fn_decl_if_not_suppressed): When re-using a 18971 function decl internal representation from an equivalent DIE that 18972 we've seen before, it can happen that we want to augment that 18973 function decl internal representation with new properties coming 18974 from the DIE we are currently looking at; do that here. 18975 (is_function_for_die_a_member_of_class): Remove the "where_offset" 18976 parameter. 18977 (add_or_update_member_function): Adjust. 18978 * tests/data/test-annotate/libtest23.so.abi: Adjust. 18979 * tests/data/test-annotate/test13-pr18894.so.abi: Adjust. 18980 * tests/data/test-annotate/test14-pr18893.so.abi: Adjust. 18981 * tests/data/test-annotate/test15-pr18892.so.abi: Adjust. 18982 * tests/data/test-annotate/test17-pr19027.so.abi: Adjust. 18983 * tests/data/test-annotate/test18-pr19037-libvtkRenderingLIC-6.1.so.abi: Adjust. 18984 * tests/data/test-annotate/test19-pr19023-libtcmalloc_and_profiler.so.abi: Adjust. 18985 * tests/data/test-annotate/test20-pr19025-libvtkParallelCore-6.1.so.abi: Adjust. 18986 * tests/data/test-annotate/test21-pr19092.so.abi: Adjust. 18987 * tests/data/test-diff-pkg/libICE-1.0.6-1.el6.x86_64.rpm--libICE-1.0.9-2.el7.x86_64.rpm-report-0.txt: Adjust. 18988 * tests/data/test-diff-pkg/spice-server-0.12.4-19.el7.x86_64-0.12.8-1.el7.x86_64-report-0.txt: Adjust. 18989 * tests/data/test-diff-pkg/spice-server-0.12.4-19.el7.x86_64-0.12.8-1.el7.x86_64-report-1.txt: Adjust. 18990 * tests/data/test-diff-pkg/spice-server-0.12.4-19.el7.x86_64-0.12.8-1.el7.x86_64-report-2.txt: Adjust. 18991 * tests/data/test-read-dwarf/libtest23.so.abi: Adjust. 18992 * tests/data/test-read-dwarf/test10-pr18818-gcc.so.abi: Adjust. 18993 * tests/data/test-read-dwarf/test11-pr18828.so.abi: Adjust. 18994 * tests/data/test-read-dwarf/test12-pr18844.so.abi: Adjust. 18995 * tests/data/test-read-dwarf/test13-pr18894.so.abi: Adjust. 18996 * tests/data/test-read-dwarf/test14-pr18893.so.abi: Adjust. 18997 * tests/data/test-read-dwarf/test15-pr18892.so.abi: Adjust. 18998 * tests/data/test-read-dwarf/test16-pr18904.so.abi: Adjust. 18999 * tests/data/test-read-dwarf/test17-pr19027.so.abi: Adjust. 19000 * tests/data/test-read-dwarf/test18-pr19037-libvtkRenderingLIC-6.1.so.abi: Adjust. 19001 * tests/data/test-read-dwarf/test19-pr19023-libtcmalloc_and_profiler.so.abi: Adjust. 19002 * tests/data/test-read-dwarf/test20-pr19025-libvtkParallelCore-6.1.so.abi: Adjust. 19003 * tests/data/test-read-dwarf/test21-pr19092.so.abi: Adjust. 19004 * tests/data/test-read-dwarf/test22-pr19097-libstdc++.so.6.0.17.so.abi: Adjust. 19005 * tests/data/test-read-dwarf/test9-pr18818-clang.so.abi: Adjust. 19006 190072017-04-14 Dodji Seketeli <dodji@redhat.com> 19008 19009 Speedup access to unreferenced symbols when loading corpus_group 19010 * src/abg-corpus.cc (corpus_group::unrefed_{fun, var}_symbol_map): 19011 New data members. 19012 (corpus_group::priv::priv): Adjust. 19013 (corpus_group::priv::add_unref_{fun,var}_symbols): Define new 19014 member functions. 19015 (corpus_group::add_corpus): Update the map of unreferenced 19016 symbols. 19017 (corpus_group::get_unreferenced_{function,variable}_symbols) 19018 Adjust logic. 19019 190202017-04-07 Dodji Seketeli <dodji@redhat.com> 19021 19022 Initial support of de-serializing the KMI of a Linux Kernel Tree 19023 * include/abg-libxml-utils.h (advance_to_next_sibling_element): 19024 Declare new function. 19025 * src/abg-libxml-utils.cc (go_to_next_sibling_element_or_stay) 19026 (advance_to_next_sibling_element): Define new functions. 19027 * include/abg-reader.h (read_corpus_group_from_input) 19028 (read_corpus_group_from_native_xml) 19029 (read_corpus_group_from_native_xml_file): Declare new functions. 19030 * src/abg-reader.cc (read_context::m_corpus_group): New data 19031 member. 19032 (read_context::{get_corpus_group, set_corpus_group}): Define new 19033 member functions. 19034 (read_translation_unit_from_input): Cleanup logic. 19035 (read_corpus_from_input): Don't assume that the document is 19036 starting with an 'abi-corpus' element. Support the mode where a 19037 caller called the xmlTextReaderExpand function (and so we are 19038 given an expanded xmlNodePtr) and the mode where we need to use 19039 the xmlTextReader API to walk through the 'abi-corpus' element. 19040 Also, if we are building a corpus group, do not clear what used to 19041 be 'per-corpus' data. That data must be shared by all the corpora 19042 of a given abi-corpus-group. 19043 (read_corpus_group_from_input, read_corpus_group_from_native_xml) 19044 (read_corpus_group_from_native_xml_file): Define new functions. 19045 * include/abg-tools-utils.h (FILE_TYPE_XML_CORPUS_GROUP): New 19046 enumerator of the file_type enum. 19047 * src/abg-tools-utils.cc (operator<<): In the overload for 19048 file_type, add a case for the new FILE_TYPE_XML_CORPUS_GROUP. 19049 (guess_file_type): Dectect abi-corpus-group xml element. 19050 * tools/abidiff.cc (adjust_diff_context_for_kmidiff): Define new 19051 static function. 19052 (main): Adjust to handle the new FILE_TYPE_XML_CORPUS_GROUP. That 19053 is, compare two FILE_TYPE_XML_CORPUS_GROUP if they are present. 19054 * tools/abilint.cc (main): Likewise. 19055 * tools/kmidiff.cc (main): Detect that one of two .kmi files are 19056 passed. In that case, load the .kmi file(s), build a corpus_group 19057 of it and use it in the comparison. 19058 190592017-04-06 Dodji Seketeli <dodji@redhat.com> 19060 19061 Initial support of the serialization of the KMI of a Linux Kernel Tree 19062 * include/abg-tools-utils.h (check_dir) 19063 (get_binary_paths_from_kernel_dist) 19064 (build_corpus_group_from_kernel_dist_under): Declare new 19065 functions. The last two functions are being moved from 19066 tools/kmidiff.cc so that they can be re-used. 19067 * include/abg-writer.h (write_corpus): Declare one overload that 19068 takes a write_context parameter. 19069 (write_corpus_group): Declare three overloads of this new function. 19070 * src/abg-tools-utils.cc (check_dir): Define new function. 19071 (load_generate_apply_suppressions, is_vmlinux, is_kernel_module) 19072 (find_vmlinux_and_module_paths) 19073 (get_binary_paths_from_kernel_dist) 19074 (build_corpus_group_from_kernel_dist_under): Define new functions. 19075 * src/abg-writer.cc (write_context::set_annotate): Define new 19076 member function. 19077 (write_corpus): Add an overload that takes a write_context. Adapt 19078 the existing overload to make it use this new one. 19079 (write_corpus_group): Define this new function and two additional 19080 overloads for it. 19081 * tools/kmidiff.cc (set_suppressions, is_vmlinux) 19082 (is_kernel_module, find_vmlinux_and_module_paths) 19083 (get_binary_paths_from_kernel_dist) 19084 (build_corpus_group_from_kernel_dist_under): Remove. 19085 (main): Adjust the call to 19086 build_corpus_group_from_kernel_dist_under as its arguments are now 19087 adapted since it's been factorized out into abg-tools-utils.h. 19088 * tools/abidw.cc (options::corpus_group_for_linux): Define new 19089 data member. 19090 (options::options): Adjust. 19091 (display_usage): Add help strings for the new --linux-tree option. 19092 (load_corpus_and_write_abixml): Factorize this function out of the 19093 main function. 19094 (load_kernel_corpus_group_and_write_abixml): Define new function. 19095 (main): Use the factorized load_corpus_and_write_abixml and the 19096 new load_corpus_and_write_abixml functions. 19097 * tests/test-read-write.cc: Adjust. 19098 * doc/manuals/abidw.rst: Add documentation for the new 19099 --linux-tree option. 19100 191012017-04-06 Dodji Seketeli <dodji@redhat.com> 19102 19103 Adjust test reference outputs after changes in abg-writer.cc 19104 * tests/data/test-annotate/test13-pr18894.so.abi: Adjust. 19105 * tests/data/test-annotate/test14-pr18893.so.abi: Adjust. 19106 * tests/data/test-annotate/test15-pr18892.so.abi: Adjust. 19107 * tests/data/test-annotate/test17-pr19027.so.abi: Adjust. 19108 * tests/data/test-annotate/test19-pr19023-libtcmalloc_and_profiler.so.abi: Adjust. 19109 * tests/data/test-read-dwarf/test13-pr18894.so.abi: Adjust. 19110 * tests/data/test-read-dwarf/test14-pr18893.so.abi: Adjust. 19111 * tests/data/test-read-dwarf/test15-pr18892.so.abi: Adjust. 19112 * tests/data/test-read-dwarf/test16-pr18904.so.abi: Adjust. 19113 * tests/data/test-read-dwarf/test17-pr19027.so.abi: Adjust. 19114 * tests/data/test-read-dwarf/test19-pr19023-libtcmalloc_and_profiler.so.abi: 19115 Adjust. 19116 191172017-04-06 Dodji Seketeli <dodji@redhat.com> 19118 19119 Fix indentation glitch before the </abi-corpus> tag in abixml 19120 * src/abg-writer.cc (write_corpus): Indent before emitting the 19121 closing </abi-corpus> tag. 19122 191232017-04-06 Dodji Seketeli <dodji@redhat.com> 19124 19125 Avoid emitting some empty translation units to abixml 19126 * src/abg-writer.cc (write_corpus): Do not emit a translation 19127 unit that appears empty beforehand. 19128 191292017-04-06 Dodji Seketeli <dodji@redhat.com> 19130 19131 Avoid emitting duplicated decls in abixml 19132 * src/abg-writer.cc (write_context::m_emitted_decls_map): New data 19133 member. 19134 (write_context::{decl_name_is_emitted, record_decl_as_emitted}): 19135 Define new memeber functions. 19136 (write_translation_unit): Do not emit a decl that has already been 19137 emitted. 19138 (write_var_decl, write_function): Record the decl as emitted. 19139 191402017-04-04 Dodji Seketeli <dodji@redhat.com> 19141 19142 Rename write_corpus_to_native_xml into write_corpus 19143 * include/abg-writer.h (write_corpus): Rename 19144 write_corpus_to_native_xml to this. 19145 * src/abg-writer.cc (write_corpus): Rename 19146 write_corpus_to_native_xml to this. 19147 * tests/test-read-dwarf.cc (test_task::perform): Adjust. 19148 * tests/test-read-write.cc: Remove a useless "using 19149 abigail::xml_writer::write_corpus_to_native_xml". 19150 * tools/abidw.cc (main): Adjust. 19151 * tools/abilint.cc (main): Adjust. 19152 191532017-04-04 Dodji Seketeli <dodji@redhat.com> 19154 19155 Update the reference output of regression tests after kabidiff work 19156 * tests/data/test-annotate/test0.abi: Adjust. 19157 * tests/data/test-annotate/test13-pr18894.so.abi: Adjust. 19158 * tests/data/test-annotate/test14-pr18893.so.abi: Adjust. 19159 * tests/data/test-annotate/test15-pr18892.so.abi: Adjust. 19160 * tests/data/test-annotate/test17-pr19027.so.abi: Adjust. 19161 * tests/data/test-annotate/test18-pr19037-libvtkRenderingLIC-6.1.so.abi: Adjust. 19162 * tests/data/test-annotate/test19-pr19023-libtcmalloc_and_profiler.so.abi: Adjust. 19163 * tests/data/test-annotate/test20-pr19025-libvtkParallelCore-6.1.so.abi: Adjust. 19164 * tests/data/test-annotate/test21-pr19092.so.abi: Adjust. 19165 * tests/data/test-diff-filter/test30-pr18904-rvalueref-report1.txt: Adjust. 19166 * tests/data/test-diff-pkg/spice-server-0.12.4-19.el7.x86_64-0.12.8-1.el7.x86_64-report-0.txt: Adjust. 19167 * tests/data/test-diff-pkg/spice-server-0.12.4-19.el7.x86_64-0.12.8-1.el7.x86_64-report-1.txt: Adjust. 19168 * tests/data/test-diff-pkg/spice-server-0.12.4-19.el7.x86_64-0.12.8-1.el7.x86_64-report-2.txt: Adjust. 19169 * tests/data/test-diff-pkg/tbb-4.1-9.20130314.fc22.x86_64--tbb-4.3-3.20141204.fc23.x86_64-report-0.txt: Adjust. 19170 * tests/data/test-diff-pkg/tbb-4.1-9.20130314.fc22.x86_64--tbb-4.3-3.20141204.fc23.x86_64-report-1.txt: Adjust. 19171 * tests/data/test-read-dwarf/test0.abi: Adjust. 19172 * tests/data/test-read-dwarf/test10-pr18818-gcc.so.abi: Adjust. 19173 * tests/data/test-read-dwarf/test11-pr18828.so.abi: Adjust. 19174 * tests/data/test-read-dwarf/test12-pr18844.so.abi: Adjust. 19175 * tests/data/test-read-dwarf/test13-pr18894.so.abi: Adjust. 19176 * tests/data/test-read-dwarf/test14-pr18893.so.abi: Adjust. 19177 * tests/data/test-read-dwarf/test15-pr18892.so.abi: Adjust. 19178 * tests/data/test-read-dwarf/test16-pr18904.so.abi: Adjust. 19179 * tests/data/test-read-dwarf/test17-pr19027.so.abi: Adjust. 19180 * tests/data/test-read-dwarf/test18-pr19037-libvtkRenderingLIC-6.1.so.abi: Adjust. 19181 * tests/data/test-read-dwarf/test19-pr19023-libtcmalloc_and_profiler.so.abi: Adjust. 19182 * tests/data/test-read-dwarf/test20-pr19025-libvtkParallelCore-6.1.so.abi: Adjust. 19183 * tests/data/test-read-dwarf/test21-pr19092.so.abi: Adjust. 19184 * tests/data/test-read-dwarf/test22-pr19097-libstdc++.so.6.0.17.so.abi: Adjust. 19185 * tests/data/test-read-dwarf/test9-pr18818-clang.so.abi: Adjust. 19186 191872017-06-12 Dodji Seketeli <dodji@redhat.com> 19188 19189 Introduce the --kmi-whitelist option to abidiff 19190 * doc/manuals/abidiff.rst: Add documentation for the 19191 --kmi-whitelist option. 19192 * tools/abidiff.cc (display_usage): Emit help string for the 19193 --kmi-whitelist option 19194 (parse_command_line): Parse the new --kmi-whitelist option, of the 19195 -w shortcut. 19196 191972017-04-04 Dodji Seketeli <dodji@redhat.com> 19198 19199 Make abidw support the --kmi-whitelist option 19200 * tools/abidw.cc (options::{kabi_whitelist_paths, 19201 kabi_whitelist_supprs}): New data members. 19202 (display_usage): Add a help string for the new --kmi-whitelist 19203 option. 19204 (parse_command_line): Parse the new --kmi-whitelist option. 19205 (maybe_check_suppression_files): Check the presence of the linux 19206 kernel abi white list passed by the option --kmi-whitelist. 19207 (main): Ignore loading the symbol table if the kernel abi white 19208 list is provided. 19209 * doc/manuals/abidw.rst: Add documentation for the new option. 19210 192112017-04-03 Dodji Seketeli <dodji@redhat.com> 19212 19213 Make abipkgdiff compare two kernel packages 19214 * include/abg-suppression.h 19215 (variable_suppression::variable_suppression): Add default arguments 19216 to the parameters. 19217 * include/abg-tools-utils.h (dir_exists, dir_is_empty) 19218 (string_begins_with, get_rpm_name, get_rpm_arch, get_deb_name) 19219 (file_is_kernel_package, file_is_kernel_debuginfo_package): 19220 Declare new functions. 19221 * src/abg-tools-utils.cc (dir_exists, dir_is_empty) 19222 (string_begins_with, get_deb_name, get_rpm_name, get_rpm_arch) 19223 (file_is_kernel_package, file_is_kernel_debuginfo_package): Define 19224 new functions. 19225 (gen_suppr_spec_from_kernel_abi_whitelist): The kernel ABI 19226 whitelist is made of ELF symbols names that ought to match 19227 functions *and* variables that have ELF symbols with those names. 19228 So generate variable suppression specifications as well. Not just 19229 function suppression specifications. 19230 * tools/abipkgdiff.cc (options::{kabi_whitelist_package, 19231 show_symbols_not_referenced_by_debug_info, kabi_whitelist_paths, 19232 kabi_suppressions}): New data members. 19233 (options::options): Adjust. 19234 (package::KIND_KABI_WHITELISTS): New enumerator in the 19235 package::kind enum. 19236 (package::kabi_whitelist_package_): New data member. 19237 (package::{base_name, kabi_whitelist_package, }): New member 19238 functions. 19239 (display_usage): Add a help string to the new 19240 --linux-kernel-abi-whitelist and --no-unreferenced-symbols 19241 options. 19242 (parse_command_line): Parse the new --no-unreferenced-symbols, 19243 --linux-kernel-abi-whitelist and --lkaw-pkg options. 19244 (maybe_check_suppression_files): Check the presence of kabi 19245 whitelist files. 19246 (set_diff_context_from_opts): Consider (not) showing symbols not 19247 referenced by debug info. 19248 (compare): If we are looking at linux kernel packages, take the 19249 kernel abi whitelist into account, apply the suppressions 19250 resulting from the kabi whitelists to the ELF read context. 19251 (maybe_collect_kabi_whitelists) 19252 (get_kabi_whitelists_from_arch_under_dir) 19253 (maybe_handle_kabi_whitelist_pkg, maybe_collect_kabi_whitelists) 19254 (get_interesting_files_under_dir): Define new functions. 19255 (maybe_update_vector_of_package_content): Take a new 19256 file_name_to_look_for parameter. 19257 (create_maps_of_package_content) 19258 (extract_package_and_map_its_content): Consider the case of the 19259 package being a linux kernel package. 19260 (main): Take the potential --lkaw-pkg into account. 19261 * doc/manuals/abipkgdiff.rst: Add documentation for options 19262 --linux-kernel-abi-whitelist, --lkaw-pkg and 19263 --no-unreferenced-symbols. 19264 192652017-04-03 Dodji Seketeli <dodji@redhat.com> 19266 19267 Avoid loading a translation unit twice from abixml 19268 * src/abg-reader.cc (read_translation_unit): Take (in parameter) a 19269 reference as the resulting translation unit. 19270 (get_or_read_and_add_translation_unit): Define new static 19271 function. 19272 (read_context::get_scope_for_node) 19273 (read_translation_unit_from_input): Use the new 19274 get_or_read_and_add_translation_unit. 19275 192762017-04-03 Dodji Seketeli <dodji@redhat.com> 19277 19278 Support loading and comparing two kernel trees 19279 * include/abg-dwarf-reader.h (set_read_context_corpus_group) 19280 (read_and_add_corpus_to_group_from_elf, set_ignore_symbol_table) 19281 (get_ignore_symbol_table): Declare new functions. 19282 * abg-dwarf-reader.cc (read_context::options_type): Define new 19283 type. 19284 (die_dependant_container_set::clear): Define new member function. 19285 (read_context::{bss, tesxt, rodata, data, data1}_section_): Add 19286 new data members. 19287 (read_context::{symbol_versionning_sections_loaded_, 19288 symbol_versionning_sections_found_}): Likewise. 19289 (read_context::corpus_group_): Likewise. 19290 (read_context::{load_in_linux_kernel_mode, load_all_types, 19291 show_stats, do_log_}): Replace these options by .. 19292 (read_context::options_): ... this instance of the new 19293 read_context:options_type. 19294 (read_context::read_context): Adjust. 19295 (read_context::{clear_alt_debug_info_data, clear_per_corpus_data, 19296 env, get_data_section_for_variable_address, load_all_types, 19297 load_in_linux_kernel_mode, show_stats, do_log}): Adjust. 19298 (create_read_context): Adjust. 19299 (read_context::~read_context): Define destructor. 19300 (read_context::{options, bss_section, text_section, 19301 rodata_section, data_section, data1_section, current_corpus_group, 19302 has_corpus_group, main_corpus_from_current_group, 19303 main_corpus_from_current_group, 19304 current_corpus_is_main_corpus_from_current_group, 19305 should_reuse_type_from_corpus_group}): Define new member 19306 functions. 19307 (read_context::get_die_qualified_type_name): Handle the name of 19308 the current translation unit. 19309 (read_context::load_symbol_maps): Really don't load (linux kernel 19310 specific) symbol maps if we were told to ignore the ELF symbol 19311 table. 19312 (set_ignore_symbol_table, get_ignore_symbol_table) 19313 (create_default_var_sym, create_default_fn_sym, add_symbol_to_map) 19314 (set_read_context_corpus_group) 19315 (read_and_add_corpus_to_group_from_elf): Define new functions. 19316 (build_type_decl, build_typedef_type, build_enum_type) 19317 (add_or_update_class_type) 19318 (add_or_update_union_type): Reuse the type being built, from the 19319 main corpus of the corpus group. 19320 (build_qualified_type): Cleanup logic. 19321 (build_var_decl, build_function_decl): Create a default symbol for 19322 the variable or function if we are supposed to ignore the symbol 19323 table of the current binary. Add that symbol to the symbol table 19324 that is created in the read context. 19325 (read_debug_info_into_corpus): Don't load the ELF symbol table 19326 information if we are asked to ignore the symbol table. But set 19327 the symbol table that we built artificially while loading 19328 functions and variables, into the ABI corpus being built. 19329 (read_context::maybe_adjust_var_sym_address): Adjust. 19330 (build_ir_node_from_die): Add ir node to its logical scope. For 19331 the C language, the scope of a type is the global scope. 19332 (read_corpus_from_elf): Don't load ELF properties if we were asked 19333 to avoid the ELF symbol table. 19334 * include/abg-comparison.h (compute_diff): Declare ... 19335 * src/abg-comparison.cc (compute_diff): ... an overload to compare 19336 corpus_group. 19337 * tools/kmidiff.cc: New tool. 19338 193392017-03-31 Dodji Seketeli <dodji@redhat.com> 19340 19341 Initial support to lookup types per location 19342 * include/abg-fwd.h (get_name_of_qualified_type) 19343 (get_name_of_reference_to_type, lookup_basic_type_per_location) 19344 (lookup_class_type_per_location, lookup_union_type_per_location) 19345 (lookup_enum_type_per_location, lookup_typedef_type) 19346 (lookup_typedef_type_per_location, lookup_pointer_type) 19347 (lookup_reference_type, lookup_type_per_location) 19348 (lookup_type_through_translation_units) 19349 (lookup_type_from_translation_unit, odr_is_relevant): Declare new 19350 functions or new function overloads. 19351 * include/abg-ir.h (location::expand): Declare new member 19352 function. 19353 (type_maps::empty): Likewise. 19354 (operator|=): Declare an overload for qualified_type_def::CV. 19355 (get_string_representation_of_cv_quals) 19356 (get_name_of_qualified_type, lookup_qualified_type): Declare new functions. 19357 * src/abg-ir.cc (location::expand): Define new member function. 19358 (type_maps::empty): Likewise. 19359 (odr_is_relevant): Likewise. 19360 (get_string_representation_of_cv_quals) 19361 (get_name_of_reference_to_type, get_name_of_qualified_type) 19362 (lookup_union_type_per_location): Define new functions or overloads. 19363 (lookup_basic_type, lookup_enum_type, lookup_typedef_type) 19364 (lookup_qualified_type, lookup_pointer_type) 19365 (lookup_reference_type, lookup_type_from_translation_unit) 19366 (lookup_basic_type_per_location, lookup_basic_type_per_location) 19367 (lookup_class_type_per_location, lookup_class_type_per_location) 19368 (lookup_enum_type_per_location, lookup_enum_type_per_location) 19369 (lookup_typedef_type_per_location) 19370 (lookup_typedef_type_per_location, lookup_type_per_location): 19371 Define new overloads. 19372 (maybe_update_types_lookup_map) 19373 (maybe_update_types_lookup_map<class_decl>) 19374 (maybe_update_types_lookup_map<function_type>): Add a new 19375 use_type_name_as_key parameter. If it's false, then associates 19376 the type to its location rather than to its name. 19377 (maybe_update_types_lookup_map): In the overloads for type_decl, 19378 class_decl, union_decl, enum_type, typedef_decl, array_type_def, 19379 record the type in the lookup map per location, in addition to the 19380 per-name recording. 19381 (qualified_type_def::build_name): Use the new 19382 get_name_of_qualified_type. 19383 (qualified_type_def::get_cv_quals_string_prefix): Use the new 19384 get_string_representation_of_cv_quals. 19385 (operator|=): Define a new overload for qualified_type_def::CV. 19386 (pointer_type_def::get_qualified_name): Use the new 19387 get_name_of_pointer_to_type. 19388 (reference_type_def::get_qualified_name): Use the new 19389 get_name_of_reference_to_type. 19390 193912017-03-30 Dodji Seketeli <dodji@redhat.com> 19392 19393 Create a Corpus Group API extension 19394 * include/abg-corpus.h (corpus::{find_translation_unit, 19395 get_type_per_loc_map}): Declare new member functions. 19396 (corpus::{get_architecture_name, is_empty}): Make these member functions 19397 const. 19398 (corpus::{get_sorted_fun_symbols, get_functions, get_variables, 19399 get_unreferenced_function_symbols, 19400 get_unreferenced_variable_symbols}): Make these member functions 19401 virtual. 19402 (class corpus_group): Declare a new type. 19403 * include/abg-fwd.h (corpus_sptr, corpus_group_sptr) 19404 (string_tu_map_type, istring_var_decl_ptr_map_type) 19405 (istring_function_decl_ptr_map_type): Define new typedefs. 19406 * src/abg-corpus-priv.h (corpus_priv::{path_tu_map, 19407 type_per_loc_map_}): Add new data members. 19408 * src/abg-corpus.cc (corpus_add): Complete the function comment. 19409 Assert that at most one translation unit of a given path can be 19410 added to the corpus. 19411 (corpus::{find_translation_unit, get_type_per_loc_map}): Define 19412 new member functions. 19413 (corpus::{get_architecture_name}): Make this member function 19414 const. 19415 (struct corpus_group::priv): Define new type. 19416 (corpus_group::{corpus_group, ~corpus_group, add_corpus, 19417 get_corpora, is_empty, get_functions, get_variables, 19418 get_var_symbol_map, get_fun_symbol_map, get_sorted_fun_symbols, 19419 get_sorted_var_symbols, get_unreferenced_function_symbols, 19420 get_unreferenced_variable_symbols}): Define member functions of 19421 the new corpus_group type. 19422 194232017-07-03 Dodji Seketeli <dodji@redhat.com> 19424 19425 Fix some typos in abidiff.cc 19426 * tools/abidiff.cc (main): Fix typos. 19427 194282017-07-03 Dodji Seketeli <dodji@redhat.com> 19429 19430 Avoid comparing kernel.img file from the grub2 package 19431 * default.abignore: Do not compare kernel.img files. 19432 194332017-06-14 Dodji Seketeli <dodji@redhat.com> 19434 19435 Bug 21567 - Fedabipkgdiff matches build distro names too tightly 19436 * tools/fedabipkgdiff (get_distro_from_string): Define new function. 19437 (Brew.get_package_latest_build): Also consider builds which distro 19438 property is less than the expected distro string that we were 19439 given. 19440 194412017-06-14 Sinny Kumari <sinny@redhat.com> 19442 19443 Check if return_codes list is empty in fedabipkgdiff 19444 * tools/fedabipkgdiff (run_abipkgdiff()): Check if 19445 return_codes list is empty 19446 194472017-06-13 Dodji Seketeli <dodji@redhat.com> 19448 19449 Do not forget to erase temporary directories in abipkgdiff 19450 * tools/abipkgdiff.cc (maybe_erase_temp_dirs): Define new static 19451 function. 19452 (compare): Call the new maybe_erase_temp_dirs on all return 19453 points. 19454 194552017-05-11 Ben Woodard <woodard@redhat.com> 19456 19457 Fix more clang build warnings 19458 * include/abg-ini.h (config::section::priv): Make this be a class, 19459 not a struct. 19460 * src/abg-dwarf-reader.cc (build_translation_unit_and_add_to_ir) 19461 (build_ir_node_from_die): Add parenthesis around assignment 19462 expressions inside conditional expression. 19463 * src/abg-suppression.cc (read_function_suppression): Likewise. 19464 194652017-05-11 Ben Woodard <woodard@redhat.com> 19466 19467 Fix some clang compile problems 19468 * include/abg-comp-filter.h (class filter_base): Declare this as a 19469 struct. 19470 * include/abg-comparison.h (class filtering::filter_base): 19471 Likewise. 19472 (struct diff_traversable_base): Declare this as a class. 19473 * include/abg-ir.h (function_decl::parameter): Declare this before 19474 using it. 19475 * src/abg-corpus.cc 19476 (corpus::priv::build_unreferenced_symbols_tables): Add missing 19477 parenthesis around assignment expressions inside conditional 19478 expressions. 19479 194802017-05-21 Sinny Kumari <sinny@redhat.com> 19481 19482 Add --self-compare option in fedabipkgdiff 19483 * bash-completion/fedabipkgdiff: Add new option --self-compare 19484 * tests/data/Makefile.am: Add new test file 19485 * tests/data/test-fedabipkgdiff/test7-self-compare-from-fc23-dbus-glib-report-0.txt: 19486 New reference output for testing ABI comparison on same package 19487 * tests/runtestfedabipkgdiff.py.in (FEDABIPKGDIFF_TEST_SPECS): 19488 Add test case for --self-compare 19489 * tools/fedabipkgdiff (build_commandline_args_parser()): Add 19490 new option --self-compare 19491 (generate_comparison_halves()): Find second comparision half in same 19492 package list while doing self-compare 19493 (self_compare_rpms_from_distro()): New function to perform ABI 19494 comparision on same pacakge 19495 (main()): Add if condition when --self-compare option is enabled 19496 194972017-03-31 Dodji Seketeli <dodji@redhat.com> 19498 19499 Avoid building DIE -> parent DIE map when analyzing a C binary 19500 * include/abg-ir.h (global_scope_sptr): Make this be a share_ptr 19501 of scope_decl, not of global_scope. 19502 (translation_unit::get_global_scope): Return a reference to 19503 scope_decl_sptr. 19504 * src/abg-ir.cc (translation_unit::get_global_scope): Return a 19505 scope_decl not a global_scope. 19506 * src/abg-dwarf-reader.cc (read_context::nil_scope_): Add new data 19507 member. 19508 (read_context::{global_scope, nil_scope}): Define new member functions. 19509 (read_context::build_die_parent_maps): Do not build the map if we 19510 are looking at a C (or asm) translation unit. 19511 (get_scope_die, get_scope_for_die): If we are looking at a C 19512 translation unit then do return the global scope. 19513 195142017-04-06 Dodji Seketeli <dodji@redhat.com> 19515 19516 Speed up access to the definition of a class declaration-only type 19517 * include/abg-ir.h 19518 (class_or_union::get_naked_definition_of_declaration): Declare a 19519 new member function. 19520 (class_decl::get_naked_definition_of_declaration): Likewise. 19521 * src/abg-ir.cc ({type_decl, qualified_type_def, 19522 array_type_def, enum_type_decl}::operator==): Use the 19523 get_naked_canonical_type and get_naked. 19524 (class_or_union::priv::naked_definition_of_declaration_): Define 19525 new data member. 19526 (class_or_union::priv::priv): Adjust to initialize the new data 19527 member. 19528 (class_or_union::get_naked_definition_of_declaration): Define new 19529 member function. 19530 ({class_or_union, class_decl}::operator==): Use the new 19531 get_naked_definition_of_declaration instead of 19532 get_definition_of_declaration. 19533 (equals): In the overload for class_or_union, do the same. 19534 (class_decl::get_naked_definition_of_declaration): Define new 19535 member function. 19536 (hash_type_or_decl): Likewise. 19537 195382017-04-06 Dodji Seketeli <dodji@redhat.com> 19539 19540 Speedup comparison of decl-only classes 19541 * src/abg-ir.cc (equals): In the overload for class_decl, if we 19542 are looking at a decl-only class, then directly call the equals 19543 function for class_or_union. That one knows how to perform the 19544 comparison without calling the 19545 class_or_union::priv_->comparison_started function, in that case. 19546 195472017-04-04 Dodji Seketeli <dodji@redhat.com> 19548 19549 Update the description of what abipkgdiff does 19550 * tools/abipkgdiff.cc: Update the description of the sequence of 19551 actions performed. 19552 195532017-04-06 Dodji Seketeli <dodji@redhat.com> 19554 19555 Misc cleanups in abg-writer.cc 19556 * src/abg-writer.cc (class write_context): Fix indentation. 19557 (write_location, write_visibility, write_binding) 19558 (write_array_size_and_alignment, write_size_and_alignment): Fix 19559 these declarations to use the *_sptr typedefs rather than the 19560 explicit shared_ptr<*> types. 19561 (write_translation_unit): Fix comment. 19562 195632017-05-10 Dodji Seketeli <dodji@redhat.com> 19564 19565 Don't consider changes to basic types as being redundant 19566 * include/abg-comparison.h (is_diff_of_basic_type) 19567 (has_basic_type_change_only): Declare these functions ... 19568 * src/abg-comparison.cc (is_diff_of_basic_type) 19569 (has_basic_type_change_only): ... and define them. 19570 (redundancy_marking_visitor::visit_begin): Use the new 19571 has_basic_type_change_only. 19572 * tests/data/test-diff-filter/libtest37-v0.so: New binary test input. 19573 * tests/data/test-diff-filter/libtest37-v1.so: Likewise. 19574 * tests/data/test-diff-filter/test37-report-0.txt: New test 19575 reference output. 19576 * tests/data/test-diff-filter/test37-v0.cc: Source code of the new 19577 binary test input. 19578 * tests/data/test-diff-filter/test37-v1.cc: Likewise. 19579 * tests/data/Makefile.am: Update to add the new test material to 19580 the source distribution. 19581 * tests/test-diff-filter.cc (in_out_spec): Add the new test input 19582 to this test harness. 19583 195842017-05-10 Dodji Seketeli <dodji@redhat.com> 19585 19586 Rename fn_parm_diff::get_type_diff into fn_parm_diff::type_diff 19587 * include/abg-comparison.h (fn_parm_diff::type_diff): Renamed 19588 fn_parm_diff::get_type_diff intot his. 19589 * src/abg-comparison.cc (fn_parm_diff::type_diff): Likewise. 19590 (fn_parm_diff::report): Adjust. 19591 (redundancy_marking_visitor::visit_begin): Likewise. 19592 (is_diff_of_variadic_parameter): Likewise. 19593 195942017-05-03 Dodji Seketeli <dodji@redhat.com> 19595 19596 Invalidate function and variable ID cache when invoking ::set_symbol 19597 * src/abg-ir.cc ({function, var}_decl::set_symbol): Invalidate the 19598 ID cache. 19599 196002017-05-03 Dodji Seketeli <dodji@redhat.com> 19601 19602 Remove useless overloads of is_type 19603 * include/abg-fwd.h (is_type): Remove the overloads that take 19604 decl_base and type_base types. 19605 * src/abg-ir.cc (is_type): Likewise. 19606 196072017-05-04 Dodji Seketeli <dodji@redhat.com> 19608 19609 Ensure build_qualified_type can return non-qualified types 19610 * src/abg-dwarf-reader.cc (build_qualified_type): Return a 19611 type_base_sptr. 19612 (build_ir_node_from_die): Adjust the call to build_qualified_type. 19613 196142017-05-04 Dodji Seketeli <dodji@redhat.com> 19615 19616 Fix array subranges (wrongly) having the same lower bound 19617 * src/abg-dwarf-reader.cc (build_subranges_from_array_type_die): 19618 Consider the 'lower_bound' parameter as the default lower bound 19619 for each sub-ranges. 19620 196212017-03-31 Dodji Seketeli <dodji@redhat.com> 19622 19623 Fix buffer overrun in 'equals' function for arrays 19624 * src/abg-ir.cc (equals): In the overload for arrays, check for 19625 the end of the subranges of the two arrays, not just for the first 19626 one. 19627 196282017-04-18 Dodji Seketeli <dodji@redhat.com> 19629 19630 Fix a race condition in queue::priv::do_bring_workers_down 19631 * src/abg-workers.cc (queue::priv::tasks_todo_mutex): Make this 19632 data member mutable. 19633 (more_tasks_to_execute): 19634 (queue::priv::do_bring_workers_down): Update the 19635 queue::priv::bring_workers_down only in the critical section 19636 defined by queue::priv::queue_cond_mutex. 19637 (worker::wait_to_execute_a_task): Testing for 19638 queue::priv::bring_workers_down is done in the critical section 19639 defined by queue::priv::queue_cond_mutex. The loop over waiting 19640 ont the condition is also in the critical section, as it ought to 19641 be. 19642 * tests/test-read-write.cc (struct test_task): New type. 19643 (main): Express in terms of the new test_task type. 19644 196452017-04-12 Ondrej Oprala <ondrej.oprala@gmail.com> 19646 19647 cppcheck: mitigate performance warnings 19648 * include/abg-diff-utils.h (print_snake): pass argument of type 19649 snake by const reference. 19650 * include/abg-ir.h (location::operator{==,<}): Likewise. 19651 * include/abg-viz-dot.h (node_base::{node_base,parent_node,child_node}): 19652 Likewise. 19653 * include/abg-viz-svg.h (svg::svg) Likewise. 19654 * src/abg-config.cc (config::config): Member initialization in ctor body. 19655 * src/abg-dwarf-reader.cc (class_decl_sptr::add_or_update_class_type): 19656 Initial value never used. 19657 * src/abg-ir.cc: (decl_base::priv::priv) Member initialization in ctor body, 19658 pass argument of type location by const reference. 19659 (equals): Variable initial value never used. 19660 * src/abg-reader.cc (read_corpus_from_input): Initial variable 19661 value never used. 19662 (build_elf_symbol_db): Use pre-increment. 19663 * src/abg-suppression-priv.h 19664 (suppression_matches_type_location): Pass argument of type 19665 location by const reference. 19666 * src/abg-suppression.cc: Likewise. 19667 196682017-04-11 Ondrej Oprala <ondrej.oprala@gmail.com> 19669 19670 Fix cppcheck error: "Same iterator is used with different containers" 19671 * src/abg-dwarf-reader.cc 19672 (type_or_decl_base_sptr::lookup_artifact_from_per_tu_die_representation): 19673 Fix an error found by cppcheck. 19674 196752017-04-11 Ondrej Oprala <ondrej.oprala@gmail.com> 19676 19677 Clean up scripts/* 19678 * scripts/dot_to_png.sh: Clean up the script according to 19679 shellcheck warnings and remarks. 19680 * scripts/dot_to_svg.sh: Likewise. 19681 * scripts/svg_to_plain_svg.sh: Likewise. 19682 * scripts/svg_to_png_and_pdf.sh: Likewise. 19683 196842017-04-12 Ondrej Oprala <ondrej.oprala@gmail.com> 19685 19686 Fix comparison used instead of an assignment 19687 * src/abg-ir.cc (parse_integral_type): An attempt at clang 19688 compilation has discovered there to be a comparison with 19689 unused result, that apparently should be an assignment. 19690 196912017-04-12 Dodji Seketeli <dodji@redhat.com> 19692 19693 Fix some random deadlock while running fedabipkgidiff in tests 19694 * tools/fedabipkgdiff (abipkgidff): Do not use Popen.communicate() 19695 as it might hang if the data is large. Rather, busy wait for the 19696 abipkgdiff process to finish and then get its output. 19697 196982017-03-22 Slava Barinov <v.barinov@samsung.com> 19699 19700 Fix types in header to meet sources 19701 * include/abg-fwd.h: Include stdint.h for uint64_t. 19702 (ir::set_data_member_offset): Take uint64_t rather than size_t. 19703 (ir::get_data_member_offset): Return uint64_t rather than size_t. 19704 197052017-03-24 Dodji Seketeli <dodji@redhat.com> 19706 19707 Launch fedabipkgdiff tests first 19708 * tests/Makefile.am: Run the fedabipkgdiff test first. 19709 197102017-03-24 Dodji Seketeli <dodji@redhat.com> 19711 19712 Bug 21296 - Reporting diff of const ref against non-const ref aborts 19713 * include/abg-fwd.h (look_through_no_op_qualified_type): Declare 19714 new function. 19715 * src/abg-ir.cc (look_through_no_op_qualified_type): Define it. 19716 (compute_diff_for_types): Use the new 19717 look_through_no_op_qualified_type here rather than open-coding it. 19718 (equals): In the overload for function_decl::parameter, use the 19719 new look_through_no_op_qualified_type function. 19720 * tests/data/test-diff-dwarf/test40-PR21296-clanggcc.cc: Source 19721 code of the new test inputs. 19722 * tests/data/test-diff-dwarf/test40-PR21296-clanggcc-report0.txt: 19723 New test input. 19724 * tests/data/test-diff-dwarf/test40-PR21296-libgcc.so: New binary 19725 test input. 19726 * tests/data/test-diff-dwarf/test40-PR21296-libclang.so: Likewise. 19727 * tests/test-diff-dwarf.cc (in_out_specs): Add the new test inputs to 19728 the test harness. 19729 197302017-03-05 Chenxiong Qi <cqi@redhat.com> 19731 19732 Bug 20087 - Clean cache before or after ABI comparison 19733 * configure.ac: Require shutil module. 19734 * doc/manuals/fedabipkgdiff.rst: Add document for new option 19735 clean-cache, clean-cache-before, and clean-cache-after. 19736 * tools/fedabipkgdiff (build_commandline_args_parser): Add new 19737 option --clean-cache, --clean-cache-before and 19738 --clean-cache-after. 19739 (diff_local_rpm_with_latest_rpm_from_koji): Delete download 19740 cache directory before or after downloading RPMs. 19741 (diff_latest_rpms_based_on_distros): Likewise. 19742 (diff_two_nvras_from_koji): Likewise. 19743 (diff_from_two_rpm_files): Likewise. 19744 * bash-completion/fedabipkgdiff: Add new options. 19745 * tests/mockfedabipkgdiff.in (get_download_dir): Rewrite to 19746 behave just like the original get_download_dir. 19747 (mock_get_download_dir): Removed. 19748 (DOWNLOAD_CACHE_DIR): New global variable pointing directory 19749 holding packages during tests. 19750 (run_fedabipkgdiff): Mock original get_download_dir with the 19751 rewrite get_download_dir. 19752 * tests/runtestfedabipkgdiff.py.in (run_fedabipkgdiff_tests): 19753 Add --clean-cache to run tests to ensure no regression. 19754 197552017-03-17 Dodji Seketeli <dodji@redhat.com> 19756 19757 Shut down a helgrind false positive in the "system" libc call 19758 * tests/test-valgrind-suppressions.supp: Add a suppression that 19759 occurs during an internal libc signal handling occasion. 19760 197612017-03-15 Dodji Seketeli <dodji@redhat.com> 19762 19763 Fix data race on worker::queue::priv::bring_workers_down 19764 * src/abg-workers.cc (worker::wait_to_execute_a_task): Protect the 19765 read of the queue::priv::bring_workers_down down variable with the 19766 queue::priv::tasks_todo_mutex. 19767 197682017-03-07 Dodji Seketeli <dodji@redhat.com> 19769 19770 Bug 21228 - Handle cloning union member functions 19771 * include/abg-ir.h (class_or_union::add_member_function): Move the 19772 class_decl::add_member_function overload declaration into the 19773 class class_or_union class. 19774 (class class_decl): Make the class class_or_union be a friend of 19775 class_decl. 19776 * src/abg-ir.cc (class_decl::add_member_function): Transform the 19777 definition of this overload into ... 19778 (class_or_union::add_member_function): ... this one. Make sure 19779 that when setting the virtual-ness attributes of the member 19780 function, we are effectively looking at the a function that is a 19781 member of a class. 19782 (function_decl::clone): Do not assert that a member function is 19783 necessarily a member of a class_decl. It can also a member of a 19784 union_decl!. So, rather, assert that the scope of the member 19785 function is of type class_or_union. 19786 * tests/data/test-diff-pkg/tbb-2017-8.20161128.fc26.x86_64.rpm: 19787 New test input RPM. 19788 * tests/data/test-diff-pkg/tbb-2017-9.20170118.fc27.x86_64.rpm: 19789 * tests/data/test-diff-pkg/tbb-debuginfo-2017-8.20161128.fc26.x86_64.rpm: 19790 Likewise. 19791 * tests/data/test-diff-pkg/tbb-debuginfo-2017-9.20170118.fc27.x86_64.rpm: 19792 Likewise. 19793 * tests/data/test-diff-pkg/tbb-2017-8.20161128.fc26.x86_64--tbb-2017-9.20170118.fc27.x86_64.txt: 19794 New reference test output. 19795 * tests/data/Makefile.am: Add the new test input RPMs to the 19796 source distribution. 19797 * tests/test-diff-pkg.cc (in_out_specs): Take the new input tests 19798 above into account. 19799 198002017-03-03 Dodji Seketeli <dodji@redhat.com> 19801 19802 Consider file path when sorting virtual member functions 19803 * src/abg-ir.cc (virtual_member_function_less_than::operator()): 19804 Take the file path into account in the sorting. 19805 * tests/data/test-read-dwarf/test22-pr19097-libstdc++.so.6.0.17.so.abi: 19806 Adjust. 19807 198082017-03-03 Dodji Seketeli <dodji@redhat.com> 19809 19810 Fix virtual members sorting to unbreak the build on EL6 19811 * src/abg-ir.cc (virtual_member_function_less_than::operator()): 19812 Update comment. When two virtual functions have the same virtual 19813 index and one of them has no ELF symbol, then that function is 19814 less than the one with an ELF symbol. 19815 * tests/data/Makefile.am: Remove 19816 test-annotate/{test9-pr18818-clang.so.abi, test11-pr18828.so.abi, 19817 test12-pr18844.so.abi, test16-pr18904.so.abi, 19818 test22-pr19097-libstdc++.so.6.0.17.so.abi}. 19819 * tests/data/test-annotate/test10-pr18818-gcc.so.abi: Remove. 19820 * tests/data/test-annotate/test11-pr18828.so.abi: Likewise. 19821 * tests/data/test-annotate/test12-pr18844.so.abi: Likewise. 19822 * tests/data/test-annotate/test16-pr18904.so.abi: Likewise. 19823 * tests/data/test-annotate/test22-pr19097-libstdc++.so.6.0.17.so.abi: 19824 Likewise. 19825 * tests/test-annotate.cc (in_out_specs): Remove those tests above 19826 which input files have been removed. 19827 198282017-03-02 Dodji Seketeli <dodji@redhat.com> 19829 19830 Make Helgrind suppressions less specific to libgcc_s version 19831 * tests/test-valgrind-suppressions.supp: Make Helgrind 19832 suppressions less specific to libgcc_s version. 19833 198342017-03-02 Dodji Seketeli <dodji@redhat.com> 19835 19836 More Helgrind suppressions 19837 * tests/test-valgrind-suppressions.supp: More specific suppressions. 19838 198392017-03-02 Dodji Seketeli <dodji@redhat.com> 19840 19841 Silence Helgrind reports about exception stack unwinding 19842 * tests/test-valgrind-suppressions.supp: Silence Helgrind reports 19843 about exception stack unwinding. 19844 198452017-03-01 Dodji Seketeli <dodji@redhat.com> 19846 19847 Make the helgrind suppressions less specific 19848 * tests/test-valgrind-suppressions.supp: Make the ostream writting 19849 suppressions be less specific so that they can apply to all the 19850 related false positives. 19851 198522017-03-01 Dodji Seketeli <dodji@redhat.com> 19853 19854 Move test-read-dwarf.cc to abigail::workers 19855 * tests/test-read-dwarf.cc (iospec, spec_lock, write_lock) 19856 (out_abi_base, in_elf_base, in_abi_base): Remove these global 19857 variables. 19858 (handle_in_out_spec): Remove this. 19859 (struct test_task): Write this task that does what 19860 handle_in_out_spec was doing. 19861 (test_task_sptr): Define new typedef. 19862 (main): Remove the pthreads artifacts. Use the new test_task type 19863 along with the abigail::workers interface. 19864 * tests/test-valgrind-suppressions.supp: Add more helgrind 19865 suppressions for ostream writting false positives. 19866 198672017-02-28 Dodji Seketeli <dodji@redhat.com> 19868 19869 Display the command that failed the runtestfedabipkgdiff.py test 19870 * tests/runtestfedabipkgdiff.py.in (run_fedabipkgdiff_tests): When 19871 A test fails, display the fedabipkgdiff command that triggered the failure. 19872 198732017-02-24 Dodji Seketeli <dodji@redhat.com> 19874 19875 Make abipkgdiff.cc use the abigail::workers interface 19876 * tools/abipkgdiff.cc: Remove ftw.h, pthread.h, unistd.h, add 19877 fts.h and abg-workers.h. 19878 (verbose, elf_file_paths_tls_key, reports_map, env_map, map_lock) 19879 (arg_lock, prog_options): Remove all these global variables. 19880 (struct package_descriptor): Remove this type. 19881 (pthread_routine_extract_package) 19882 (first_package_tree_walker_callback_fn) 19883 (second_package_tree_walker_callback_fn, pthread_routine_compare) 19884 (pthread_join, pthread_routine_extract_pkg_and_map_its_content): 19885 Remove these functions. 19886 (options::{num_workers, verbose}): Define new data members. 19887 (options::options): Initialize the new verbose and num_workers data members. 19888 (package::erase_extraction_directory) 19889 (erase_created_temporary_directories_parent): Take the program 19890 options in parameter. Don't use the global verbose variable 19891 anymore. 19892 (package::erase_extraction_directories) 19893 (erase_created_temporary_directories, extract_package): Take the 19894 program options in parameter. 19895 (extract_rpm, extract_deb, extract_tar): Likewise. And don't use 19896 the global verbose variable anymore. 19897 (compare): Don't use the global verbose variable anymore. Use the 19898 new compare_task type along with the abigail::workers::queue type. 19899 (pkg_extraction_task, pkg_prepare_task, compare_task) 19900 (comparison_done_notify): Define new classes. 19901 (maybe_update_vector_of_package_content): Define new static 19902 function. 19903 (create_maps_of_package_content): Don't take the ftw_cp_type 19904 anymore. Don't use the global verbose variable anymore. Use the 19905 fts_{open,read,close} functions, rather than the ftw one. 19906 (extract_package_and_map_its_content): Don't use pthreads anymore. 19907 Use the new pkg_extraction_task type created along with the 19908 abigail::workers::queue type. 19909 (prepare_packages): Don't use pthreads anymore. Use the new 19910 pkg_prepare_task type along with the abigail::workers::queue type. 19911 (elf_size_is_greater): Adjust to use 19912 abigail::workers::queue::tasks, rather than the previous 19913 compaer_args_sptr type. 19914 (parse_command_line): Adjust to stop using the global verbose 19915 variable. 19916 (main): Remove use of global variables prog_options and also the 19917 packages variable. 19918 * tests/data/test-diff-pkg/dbus-glib-0.104-3.fc23.x86_64--dbus-glib-0.104-3.fc23.armv7hl-report-0.txt: 19919 Adjust. 19920 * tests/data/test-diff-pkg/dirpkg-0-report-0.txt: Likewise. 19921 * tests/data/test-diff-pkg/test-dbus-glib-0.80-3.fc12.x86_64-report-0.txt: 19922 Likewise. 19923 * tests/data/test-diff-pkg/test-rpm-report-0.txt: Likewise. 19924 * tests/data/test-diff-pkg/test-rpm-report-1.txt: Likewise. 19925 * tests/data/test-diff-pkg/test-rpm-report-2.txt: Likewise. 19926 * tests/data/test-diff-pkg/test-rpm-report-3.txt: Likewise. 19927 * tests/data/test-fedabipkgdiff/test0-from-fc20-to-fc23-dbus-glib-report-0.txt: 19928 Likewise. 19929 * tests/data/test-fedabipkgdiff/test1-from-fc20-to-dbus-glib-0.106-1.fc23.x86_64-report-0.txt: 19930 Likewise. 19931 * tests/data/test-fedabipkgdiff/test2-dbus-glib-0.100.2-2.fc20--dbus-glib-0.106-1.fc23-report-0.txt: 19932 Likewise. 19933 * tests/data/test-fedabipkgdiff/test3-dbus-glib-0.100.2-2.fc20.i686--dbus-glib-0.106-1.fc23.i686-report-0.txt: 19934 Likewise. 19935 * tests/data/test-fedabipkgdiff/test4-glib-0.100.2-2.fc20.x86_64.rpm-glib-0.106-1.fc23.x86_64.rpm-report-0.txt: 19936 Likewise. 19937 199382017-02-24 Dodji Seketeli <dodji@redhat.com> 19939 19940 Do not ignore valgrind checks returning an error 19941 * autoconf-archive/ax_valgrind_check.m4 (check-valgrind): Don't 19942 ignore errors. 19943 199442017-02-24 Dodji Seketeli <dodji@redhat.com> 19945 19946 Add a "make check-valgrind-helgrind-recursive" target 19947 * tests/Makefile.am (check-valgrind-helgrind-recursive): New 19948 target to run the tests recursively under the control of 19949 Valgrind's Helgrind tool. 19950 * tests/test-valgrind-suppressions.supp: Update this suppression 19951 file with suppressions for Helgrind. 19952 199532017-02-24 Dodji Seketeli <dodji@redhat.com> 19954 19955 Several fixes and enhancements to abigail::workers 19956 * Don't try to schedule a task if the pointer to the task is nil 19957 * Fix a data race when bringing workers (of a queue) down 19958 * Always try to wake up all waiting threads when bringing down queue 19959 workers. 19960 * Fix a data race when accessing the queue condition variable 19961 * Fix a data race when notifying listeners about the end of the job 19962 performed by the task. 19963 Enhancements 19964 ============ 19965 * Pass the "task done" notifier by reference, to the worker queue. 19966 Without this, the worker queue needs to copy the "task done" notifier 19967 by value. This implies that user code needs to provide task done 19968 notifier instances that come with potentially complicated copy 19969 constructors. By passing it by reference and by just re-using the 19970 notifier from the user code, we do away with the need for copying 19971 altogether. This also fixes some latent copying bugs. 19972 * Add a workers::queue::schedule_tasks() method 19973 This allows user code to schedule a vector of tasks at once. 19974 * make workers::queue::get_completed_tasks() return a non-const vector 19975 This enables user code to sort the completed tasks as they wish. 19976 * include/abg-workers.h (queue::tasks_type): New typedef. 19977 (queue::queue): Pass task_done_notify by reference. 19978 (queue::schedule_tasks): Declare new member function. 19979 (queue::get_completed_tasks): Return non-const vector. 19980 * src/abg-workers.cc (queue::priv::default_notify): New data 19981 member. 19982 (queue::priv::notify): Make this data member be a reference. 19983 (queue::priv::priv): Initialize the notify data member to either 19984 the new default_notify (if no notifier is provided by the 19985 constructor) or to the notifier provided by the constructor. 19986 (queue::priv::schedule_task): Do not schedule a nil task. Update 19987 comment. 19988 (queue::priv::schedule_tasks): Add a new member function. 19989 (queue::priv::do_bring_workers_down): Update comment. Protect 19990 access to "bring_workers_down" with tasks_todo_mutex to prevent a 19991 data race. Call pthread_cond_broadcast on the queue_cond 19992 unconditionaly to prevent some worker threads to keep waiting for 19993 ever. Also, protect the access to the queue_cond by the 19994 queue_cond_mutex to precent a data race. 19995 (queue::queue): Pass the notifier by reference. Update comment. 19996 (queue::schedule_task): Update comment. 19997 (queue::schedule_tasks): Define new member function. 19998 (queue::wait_for_workers_to_complete): Update comment. 19999 (queue::get_completed_tasks): Return a non-const vector. Update 20000 comment. 20001 (worker::wait_to_execute_a_task): Update several comments. Make 20002 the execution of the notification code to be synchronized (on the 20003 tasks_done_mutex). 20004 200052017-02-14 Dodji Seketeli <dodji@redhat.com> 20006 20007 Fix typo in help string of abipkgdiff 20008 * tools/abipkgdiff.cc (display_usage): Remove erroneous end line. 20009 200102017-01-23 Dodji Seketeli <dodji@redhat.com> 20011 20012 fedabipkgdiff refuses to compare packages with the same release number 20013 * tools/fedabipkgdiff (RPM.is_peer): Update comment. Fix logic. 20014 * tests/data/test-fedabipkgdiff/packages/vte291/0.39.1/1.fc22/x86_64/vte291-0.39.1-1.fc22.x86_64.rpm: 20015 New test input file. 20016 * tests/data/test-fedabipkgdiff/packages/vte291/0.39.1/1.fc22/x86_64/vte291-debuginfo-0.39.1-1.fc22.x86_64.rpm: Likewise. 20017 * tests/data/test-fedabipkgdiff/packages/vte291/0.39.1/1.fc22/x86_64/vte291-devel-0.39.1-1.fc22.x86_64.rpm: Likewise. 20018 * tests/data/test-fedabipkgdiff/packages/vte291/0.39.90/1.fc22/x86_64/vte291-0.39.90-1.fc22.x86_64.rpm: Likewise. 20019 * tests/data/test-fedabipkgdiff/packages/vte291/0.39.90/1.fc22/x86_64/vte291-debuginfo-0.39.90-1.fc22.x86_64.rpm: Likewise. 20020 * tests/data/test-fedabipkgdiff/packages/vte291/0.39.90/1.fc22/x86_64/vte291-devel-0.39.90-1.fc22.x86_64.rpm: 20021 Likewise. 20022 * tests/data/test-fedabipkgdiff/vte291-0.39.1-1.fc22.x86_64--vte291-0.39.90-1.fc22.x86_64-report-0.txt: Likewise. 20023 * tests/data/Makefile.am: Add the new test input data to source 20024 distribution. 20025 * tests/mockfedabipkgdiff.in: Update the package and build 20026 information to add the new vte291-0.39.1-1.fc22.x86_64.rpm and 20027 vte291-0.39.90-1.fc22.x86_64.rpm packages (as well as their devel 20028 and debuginfo packages) into the "mock" Koji build database. 20029 * tests/runtestfedabipkgdiff.py.in: Make this test harness run 20030 over the two aforementioned packages. 20031 200322017-01-24 Dodji Seketeli <dodji@redhat.com> 20033 20034 Add missing tests input files to distribution files 20035 * tests/data/Makefile.am: Add three missing test input files to 20036 the source distribution tarball. Renamed 20037 test-fedabipkgdiff/test6-missing-devel-debuginfo-nss-util-3.12.6-1.fc14.x86_64--nss-util-3.24.0-2.0.fc25.x86_64-report-0.txt 20038 into 20039 test-fedabipkgdiff/test6-nss-util-3.12.6-1.fc14.x86_64--nss-util-3.24.0-2.0.fc25.x86_64-report-0.txt. 20040 * tests/runtestfedabipkgdiff.py.in (FEDABIPKGDIFF_TEST_SPECS): 20041 Renamed 20042 test6-missing-devel-debuginfo-nss-util-3.12.6-1.fc14.x86_64--nss-util-3.24.0-2.0.fc25.x86_64-report-0.txt 20043 into 20044 test6-nss-util-3.12.6-1.fc14.x86_64--nss-util-3.24.0-2.0.fc25.x86_64-report-0.txt. 20045 200462017-01-24 Dodji Seketeli <dodji@redhat.com> 20047 20048 Add missing new line to an error message of runtestfedabipkgdiff.py 20049 * tests/runtestfedabipkgdiff.py.in (run_fedabipkgdiff_tests): Add 20050 missing new line to an error message. 20051 200522017-01-24 Dodji Seketeli <dodji@redhat.com> 20053 20054 Fix silent failure of tests/runtestfedabipkgdiff.py 20055 * tests/mockfedabipkgdiff.in (run_fedabipkgdiff): Patch 20056 fedabipkgdiff.DEFAULT_KOJI_TOPURL instead of 20057 fedabipkgdiff.DEFAULT_KOJI_TOPDIR. 20058 * tests/runtestfedabipkgdiff.py.in (main): Properly return 0 upon 20059 success, 1 otherwise. 20060 200612017-01-14 Dodji Seketeli <dodji@redhat.com> 20062 20063 Misc style fixes 20064 * include/abg-ir.h (class_or_union): Fix indentation. 20065 * src/abg-dwarf-reader.cc (get_die_pretty_representation): Add new 20066 line. 20067 * src/abg-ir.cc (struct class_decl::priv): Fix indentation. 20068 (virtual_member_function_less_than::operator()): Fix a typo in a 20069 comment. 20070 200712017-01-13 Dodji Seketeli <dodji@redhat.com> 20072 20073 Bug 20476 - Compare virtual member functions when comparing classes 20074 * include/abg-ir.h (class_decl::get_biggest_vtable_offset): 20075 Declare new member function. 20076 * src/abg-ir.cc (virtual_member_function_less_than::operator()): 20077 Either compare the symbol id strings if the functions have 20078 symbols or just compare their pretty representations. 20079 (class_decl::get_biggest_vtable_offset): Define new member 20080 function. 20081 (methods_equal_modulo_elf_symbol) 20082 (method_matches_at_least_one_in_vector): New static methods. 20083 (equals): In the overload for classes, compare the virtual member 20084 functions while comparing classes. 20085 * src/abg-comparison.cc (represent): In the overload for 20086 method_decl_sptr, fix the way we compute the highest vtable offset 20087 number for a give class_decl. 20088 (class_decl::ensure_lookup_tables_populated): Don't forget added 20089 and removed virtual member functions in the report for changed 20090 classes. 20091 * tests/data/test-diff-dwarf/libtest41-PR20476-hidden-old.so: New 20092 test binary input file. 20093 * tests/data/test-diff-dwarf/libtest41-PR20476-hidden-new.so: Likewise. 20094 * tests/data/test-diff-dwarf/test41-PR20476-hidden-report-0.txt: 20095 New reference output. 20096 * tests/data/Makefile.am: Add the new test material above to the 20097 source distribution. 20098 * tests/test-diff-dwarf.cc (in_out_spec): Add the new tests 20099 here. 20100 * tests/data/test-annotate/test10-pr18818-gcc.so.abi: Adjust. 20101 * tests/data/test-annotate/test11-pr18828.so.abi: Adjust. 20102 * tests/data/test-annotate/test18-pr19037-libvtkRenderingLIC-6.1.so.abi: Adjust. 20103 * tests/data/test-annotate/test20-pr19025-libvtkParallelCore-6.1.so.abi: Adjust. 20104 * tests/data/test-annotate/test22-pr19097-libstdc++.so.6.0.17.so.abi: Adjust. 20105 * tests/data/test-read-dwarf/test10-pr18818-gcc.so.abi: Adjust. 20106 * tests/data/test-read-dwarf/test11-pr18828.so.abi: Adjust. 20107 * tests/data/test-read-dwarf/test13-pr18894.so.abi: Adjust. 20108 * tests/data/test-read-dwarf/test14-pr18893.so.abi: Adjust. 20109 * tests/data/test-read-dwarf/test15-pr18892.so.abi: Adjust. 20110 * tests/data/test-read-dwarf/test18-pr19037-libvtkRenderingLIC-6.1.so.abi: 20111 Adjust. 20112 * tests/data/test-read-dwarf/test20-pr19025-libvtkParallelCore-6.1.so.abi: 20113 Adjust. 20114 * tests/data/test-read-dwarf/test21-pr19092.so.abi: Adjust. 20115 * tests/data/test-read-dwarf/test22-pr19097-libstdc++.so.6.0.17.so.abi: 20116 Adjust. 20117 201182017-02-14 Dodji Seketeli <dodji@redhat.com> 20119 20120 Fix indentation in src/abg-writer.cc 20121 * src/abg-writer.cc (annotate): Fix indentation. 20122 201232017-02-13 Dodji Seketeli <dodji@redhat.com> 20124 20125 Adjust reference output of test-annotate 20126 * tests/data/test-annotate/test15-pr18892.so.abi: Adjust this 20127 reference output. 20128 201292017-02-13 Dodji Seketeli <dodji@redhat.com> 20130 20131 Fix help string for --header-dirs 20132 * tools/abidw.cc (display_usage): Fix patch -> path typo. 20133 201342017-02-13 Dodji Seketeli <dodji@redhat.com> 20135 20136 Make abidw --headers-dir work with the --out-file option 20137 * tools/abidw.cc (parse_command_line): Don't require an empty 20138 output file when parsing the --headers-dir option. This was a 20139 thinko. 20140 201412017-01-17 Ondrej Oprala <ondrej.oprala@gmail.com> 20142 20143 Bug 20970 - Add a --annotate option to abidw 20144 * doc/manuals/abidiff.rst: Document the '--no-corpus-path' 20145 option. 20146 * doc/manuals/abidw.rst: Document the '--no-corpus-path' 20147 and '--annotate' options. 20148 * include/abg-libxml-utils.h ({un,}escape_xml_comment): Add 20149 new function declarations. 20150 * include/abg-writer.h: Add new annotate functions 20151 (write_{translation_unit,corpus_to_{archive,native_xml_file}}): 20152 Add an optional "annotate" parameter defaulting to "false". 20153 * src/abg-libxml-utils.cc ({un,}escape_xml_comment): Add 20154 new function definitions. 20155 * src/abg-writer.cc (annotate): Define new templatized function 20156 and specialize it for necessary cases. 20157 * tests/Makefile.am: Add runtestannotate as a new test. 20158 * tests/data/Makefile.am: Add paths to below reference test 20159 outputs. 20160 * tests/data/test-annotate/libtest23.so.abi: New reference test 20161 output. 20162 * tests/data/test-annotate/libtest24-drop-fns-2.so.abi: Likewise. 20163 * tests/data/test-annotate/libtest24-drop-fns.so.abi: Likewise. 20164 * tests/data/test-annotate/test0.abi: Likewise. 20165 * tests/data/test-annotate/test1.abi: Likewise. 20166 * tests/data/test-annotate/test10-pr18818-gcc.so.abi: Likewise. 20167 * tests/data/test-annotate/test11-pr18828.so.abi: Likewise. 20168 * tests/data/test-annotate/test12-pr18844.so.abi: Likewise. 20169 * tests/data/test-annotate/test13-pr18894.so.abi: Likewise. 20170 * tests/data/test-annotate/test14-pr18893.so.abi: Likewise. 20171 * tests/data/test-annotate/test15-pr18892.so.abi: Likewise. 20172 * tests/data/test-annotate/test16-pr18904.so.abi: Likewise. 20173 * tests/data/test-annotate/test17-pr19027.so.abi: Likewise. 20174 * tests/data/test-annotate/test18-pr19037-libvtkRenderingLIC-6.1.so.abi: Likewise. 20175 * tests/data/test-annotate/test19-pr19023-libtcmalloc_and_profiler.so.abi: Likewise. 20176 * tests/data/test-annotate/test2.so.abi: Likewise. 20177 * tests/data/test-annotate/test20-pr19025-libvtkParallelCore-6.1.so.abi: Likewise. 20178 * tests/data/test-annotate/test21-pr19092.so.abi: Likewise. 20179 * tests/data/test-annotate/test22-pr19097-libstdc++.so.6.0.17.so.abi: Likewise. 20180 * tests/data/test-annotate/test3.so.abi: Likewise. 20181 * tests/data/test-annotate/test4.so.abi: Likewise. 20182 * tests/data/test-annotate/test5.o.abi: Likewise. 20183 * tests/data/test-annotate/test6.so.abi: Likewise. 20184 * tests/data/test-annotate/test7.so.abi: Likewise. 20185 * tests/data/test-annotate/test8-qualified-this-pointer.so.abi: Likewise. 20186 * tests/data/test-annotate/test9-pr18818-clang.so.abi: Likewise. 20187 * tests/test-annotate.cc: New test for ABIXML annotations. 20188 * tools/abidiff.cc: Add the new option '--no-corpus-path'. 20189 * tools/abidw.cc: Likewise. Also add the '--annotate' option. 20190 reviews round 1 20191 201922017-01-20 Dodji Seketeli <dodji@redhat.com> 20193 20194 Fix test-diff-pkg after commit 2dcc606 20195 * tests/test-diff-pkg.cc (in_out_specs): Fix paths to spice-server 20196 packages. 20197 201982017-01-20 Dodji Seketeli <dodji@redhat.com> 20199 20200 Add --harmless option to abipkgdiff 20201 * doc/manuals/abidiff.rst: Fix a typo. 20202 * doc/manuals/abipkgdiff.rst: Document the --harmless option. 20203 * tools/abipkgdiff.cc: Update copyright year. 20204 (options::show_harmless_changes): Add new data member. 20205 (options::options): Initialize the new data member. 20206 (display_usage): Add a help string for the new --harmless option. 20207 (parse_command_line): Parse the new --harmless option. 20208 (set_diff_context_from_opts): Configure the diff context 20209 accordingly, if the user provided the --harmless option. 20210 202112017-01-20 Dodji Seketeli <dodji@redhat.com> 20212 20213 Fix suppression category propagation in diff node graph 20214 * include/abg-comparison.h (diff::get_class_of_equiv_category): 20215 Declare new member function. 20216 * src/abg-comparison.cc: Update copyright year. 20217 (diff::get_class_of_equiv_category): Define new member function. 20218 (suppression_categorization_visitor::visit_end): When considering 20219 children nodes category for propagation, consider the category of 20220 the class of equivalence of children nodes. 20221 * spice-debuginfo-0.12.4-19.el7.x86_64.rpm: New input test package. 20222 * spice-debuginfo-0.12.8-1.el7.x86_64.rpm: Likewise. 20223 * spice-server-0.12.4-19.el7.x86_64.rpm: Likewise. 20224 * spice-server-0.12.8-1.el7.x86_64.rpm: Likewise. 20225 * spice-server-devel-0.12.4-19.el7.x86_64.rpm: Likewise. 20226 * spice-server-devel-0.12.8-1.el7.x86_64.rpm: Likewise. 20227 * spice-server-0.12.4-19.el7.x86_64-0.12.8-1.el7.x86_64-report-0.txt: 20228 New reference test output. 20229 * spice-server-0.12.4-19.el7.x86_64-0.12.8-1.el7.x86_64-report-1.txt: Likewise. 20230 * spice-server-0.12.4-19.el7.x86_64-0.12.8-1.el7.x86_64-report-2.txt: Likewise. 20231 * tests/data/Makefile.am: Add the new test material above to 20232 source distribution. 20233 * tests/test-diff-pkg.cc (in_out_specs): Add the new test inputs 20234 to the list of packages to test. 20235 202362017-01-18 Dodji Seketeli <dodji@redhat.com> 20237 20238 Bug 21058 - abipkgdiff wrongly drops non-public types 20239 * doc/manuals/abidiff.rst (--dont-drop-private-types): Remove documentation. 20240 (--drop-private-types): Document this new option. 20241 * src/abg-tools-utils.cc: Update copyright notice 20242 (handle_fts_entry): On the generated suppression specification, do 20243 not set the flag to drop matched types. Also, don't match types 20244 defined in files which patch start with "/usr/include/". 20245 * tools/abidiff.cc (options::options): Initialize the 20246 drop_private_types data member to false. 20247 (display_usage): Remove usage string for 20248 --dont-drop-private-types. Add a new one for 20249 --drop-private-types. 20250 (parse_command_line): Don't part --dont-drop-private-types, 20251 rather, parse --drop-private-types. 20252 (set_suppressions): When the suppression for private types is 20253 generated, if --drop-private-types was provided, then instruct the 20254 suppression to drop matched types. 20255 * tools/abipkgdiff.cc (options::drop_private_types): New option. 20256 (options::options): Initialize the new drop_private_types data 20257 member to false. 20258 (display_usage): Add a usage string for --drop-private-types. 20259 (parse_command_line): Parse the new --drop-private-types option. 20260 (maybe_create_private_types_suppressions): Don't take just a 20261 package, but a package_descriptor because the latter carries the 20262 options. So when the user used the --drop-private-types option, 20263 make the generated private types suppression to drop matched 20264 types. 20265 * tests/data/test-diff-pkg/tbb-4.1-9.20130314.fc22.x86_64--tbb-4.3-3.20141204.fc23.x86_64-report-1.txt: 20266 Adjust. 20267 * tests/test-diff-suppr.cc (in_out_specs): Likewise. 20268 202692017-01-18 Dodji Seketeli <dodji@redhat.com> 20270 20271 Fix some include logic in abg-suppression.cc 20272 * src/abg-suppression.cc: Update copyright notice. Fix include 20273 files logic. 20274 202752017-01-16 Dodji Seketeli <dodji@redhat.com> 20276 20277 Support virtual member functions with vtable offset not yet set 20278 * include/abg-fwd.h (member_function_has_vtable_offset): Declare 20279 new function. 20280 (get_member_function_vtable_offset): Return a ssize_t, not a 20281 size_t. 20282 (set_member_function_vtable_offset): Take a ssize_t, not a size_t. 20283 * include/abg-ir.h (class_decl::virtual_mem_fn_map_type): Adjust 20284 the map typedef to make it take ssize_t as the type of the key. 20285 (mem_fn_context_rel::vtable_offset_in_bits_): Make this data 20286 member be of ssize_t type, not size_t. 20287 (mem_fn_context_rel::mem_fn_context_rel): Initialize the 20288 vtable_offset_in_bits_ data member to -1. 20289 * src/abg-ir.cc (member_function_has_vtable_offset): Define new 20290 function. 20291 (get_member_function_vtable_offset): Return a ssize_t, not a 20292 size_t. 20293 (set_member_function_vtable_offset): Take a ssize_t, not a size_t. 20294 * src/abg-dwarf-reader.cc (die_virtual_function_index): Take an 20295 int64_t& rather than a uint64_t&. 20296 (finish_member_function_reading): Don't set the vtable offset if 20297 it's -1. 20298 * src/abg-reader.cc (build_class_decl): Likewise. 20299 203002017-01-14 Dodji Seketeli <dodji@redhat.com> 20301 20302 [comparison engine] Don't crash when the context is null 20303 * src/abg-comparison.cc 20304 (RETURN_IF_BEING_REPORTED_OR_WAS_REPORTED_EARLIER): Guard against 20305 null context. 20306 (diff::is_filtered_out): Likewise. 20307 203082017-01-14 Dodji Seketeli <dodji@redhat.com> 20309 20310 [dwarf reader] Don't abort when trying to canonicalize a non-type 20311 * src/abg-dwarf-reader.cc (maybe_canonicalize_type): Don't abort 20312 when trying to canonicalize a decl. 20313 203142017-01-14 Dodji Seketeli <dodji@redhat.com> 20315 20316 [dwarf reader] properly separate function decls and types in lookup 20317 * src/abg-dwarf-reader.cc 20318 (read_context::associate_die_to_artifact_by_repr_internal): 20319 Choose the right type of representation depending on if we are 20320 associating a type or a decl. 20321 * tests/data/test-diff-filter/test31-pr18535-libstdc++-report-0.txt: Adjust. 20322 * tests/data/test-diff-filter/test31-pr18535-libstdc++-report-1.txt: Adjust. 20323 * tests/data/test-read-dwarf/test10-pr18818-gcc.so.abi: Adjust. 20324 * tests/data/test-read-dwarf/test11-pr18828.so.abi: Adjust. 20325 * tests/data/test-read-dwarf/test12-pr18844.so.abi: Adjust. 20326 * tests/data/test-read-dwarf/test13-pr18894.so.abi: Adjust. 20327 * tests/data/test-read-dwarf/test14-pr18893.so.abi: Adjust. 20328 * tests/data/test-read-dwarf/test15-pr18892.so.abi: Adjust. 20329 * tests/data/test-read-dwarf/test16-pr18904.so.abi: Adjust. 20330 * tests/data/test-read-dwarf/test17-pr19027.so.abi: Adjust. 20331 * tests/data/test-read-dwarf/test18-pr19037-libvtkRenderingLIC-6.1.so.abi: 20332 Adjust. 20333 * tests/data/test-read-dwarf/test19-pr19023-libtcmalloc_and_profiler.so.abi: 20334 Adjust. 20335 * tests/data/test-read-dwarf/test20-pr19025-libvtkParallelCore-6.1.so.abi: 20336 Adjust. 20337 * tests/data/test-read-dwarf/test21-pr19092.so.abi: Adjust. 20338 * tests/data/test-read-dwarf/test22-pr19097-libstdc++.so.6.0.17.so.abi: 20339 Adjust. 20340 * tests/data/test-read-dwarf/test9-pr18818-clang.so.abi: Adjust. 20341 203422017-01-14 Dodji Seketeli <dodji@redhat.com> 20343 20344 [dwarf reader] Allow updating and de-duplicating member functions 20345 * src/abg-dwarf-reader.cc (add_or_update_class_type): Register 20346 member functions for lookup by member function DIE representation. 20347 203482017-01-14 Dodji Seketeli <dodji@redhat.com> 20349 20350 [dwarf reader] Do not over de-duplicate function *definitions* 20351 * src/abg-dwarf-reader.cc 20352 (build_or_get_fn_decl_if_not_suppressed): Do try to de-duplicate a 20353 function if it's to be completed. 20354 203552017-01-13 Dodji Seketeli <dodji@redhat.com> 20356 20357 [dwarf reader] Fix pretty printing static methods from DWARF 20358 * src/abg-dwarf-reader.cc 20359 (die_return_and_parm_names_from_fn_type_die): Take a new 20360 'is_static' parameter. 20361 (die_qualified_type_name, die_pretty_print_type): Adjust calling 20362 die_return_and_parm_names_from_fn_type_die. 20363 (die_function_signature): Likewise. Also, do not forget to print 20364 the first parameter for a static method. 20365 203662017-01-13 Dodji Seketeli <dodji@redhat.com> 20367 20368 Handle several virtual member functions having the same vtable offset 20369 * include/abg-ir.h (class_or_union::virtual_mem_fn_map_type): 20370 Define new typedef. 20371 (class_decl::get_virtual_mem_fns_map): Declare new accessor. 20372 * src/abg-ir.cc (class_decl::priv::virtual_mem_fns_map_): New data 20373 member. 20374 (class_decl::get_virtual_mem_fns_map): Define new accessor. 20375 (fixup_virtual_member_function): Populate the new virtual member 20376 functions map. 20377 (class_decl::on_canonical_type_set): Sort the virtual member 20378 function vectors stored in the new virtual member functions map. 20379 (class_decl::add_member_function): Call 20380 set_member_function_is_virtual *after* calling 20381 set_member_function_vtable_offset because the former updates the 20382 virtual function map, so it needs the vtable offset. 20383 * src/abg-dwarf-reader.cc (finish_member_function_reading): 20384 Likewise. 20385 * src/abg-reader.cc (build_class_decl): Likewise. 20386 203872017-01-13 Dodji Seketeli <dodji@redhat.com> 20388 20389 Speed up pretty representing (function) types 20390 * include/abg-ir.h (type_base::get_cached_pretty_representation): 20391 Declare new function. 20392 (function_type::get_cached_name): Likewise. 20393 * src/abg-ir.cc (get_method_type_name): Use the new 20394 type_base::get_cached_pretty_representation function. 20395 (type_base::priv::{internal_cached_repr_, cached_repr_}): Add new 20396 data members. 20397 (function_type::priv::{internal_cached_name_, cached_name_}): 20398 Likewise. 20399 (type_base::get_cached_pretty_representation): Define new 20400 function. 20401 (function_type::get_cached_name): Likewise. 20402 (type_base::get_canonical_type_for): Call 20403 type_base::get_cached_pretty_representation here, so the internal 20404 representation is cached right before canonicalization. 20405 (function_type::{mark_as_being_compared, unmark_as_being_compared, 20406 comparison_started}): Uset he new type_base::get_cached_name to 20407 speed up function type name retrieval. 20408 204092017-01-13 Dodji Seketeli <dodji@redhat.com> 20410 20411 Add missing deep comparison operators for {function, method}_decl_sptr 20412 * include/abg-ir.h (operator==): Declare two new overloads for 20413 function_decl_sptr an method_decl_sptr. 20414 * src/abg-ir.cc (operator==): Define two new overloads for 20415 function_decl_sptr an method_decl_sptr. 20416 204172017-01-16 Dodji Seketeli <dodji@redhat.com> 20418 20419 Fix performance regression while analyzing libjvm.so 20420 * include/abg-ir.h ({type_base, 20421 class_decl}::on_canonical_type_set): Declare new virtual member 20422 function. 20423 * src/abg-ir.cc (type_base::on_canonical_type_set): Define new 20424 virtual member function that does nothing. 20425 (class_decl::on_canonical_type_set): Define new virtual member 20426 function that sorts the virtual member functions of class_decl. 20427 (canonicalize): Invoke type_base::on_canonical_type_set when the 20428 canonical type is set. 20429 (fixup_virtual_member_function): Don't sort virtual member 20430 functions here. 20431 * src/abg-dwarf-reader.cc (finish_member_function_reading): Do not 20432 sort virtual member functions here. 20433 * tests/data/test-read-dwarf/test13-pr18894.so.abi: Adjust. 20434 * tests/data/test-read-dwarf/test14-pr18893.so.abi: Adjust. 20435 * tests/data/test-read-dwarf/test15-pr18892.so.abi: Adjust. 20436 * tests/data/test-read-dwarf/test21-pr19092.so.abi: Adjust. 20437 * tests/data/test-read-dwarf/test22-pr19097-libstdc++.so.6.0.17.so.abi: Adjust. 20438 204392017-01-14 Dodji Seketeli <dodji@redhat.com> 20440 20441 Update copyright notice for abg-fwd.h, abg-ir.h and test-abidiff.cc 20442 * include/abg-fwd.h: Adjust copyright. 20443 * include/abg-ir.h: Likewise. 20444 * tests/test-abidiff.cc: Likewise. 20445 204462017-01-16 Dodji Seketeli <dodji@redhat.com> 20447 20448 Remove unused functions from abg-ir.cc 20449 * src/abg-ir.cc (convert_node_to_decl): Remove specializations for 20450 class_decl_sptr, type_base_sptr and var_decl_sptr. 20451 204522016-11-10 Dodji Seketeli <dodji@redhat.com> 20453 20454 Support Linux Kernel ABI whitelist files 20455 * include/abg-suppression.h 20456 (function_suppression::function_suppression): Make the declaration 20457 of the default constructor public. 20458 * src/abg-suppression-priv.h (function_suppression::priv::priv): 20459 Declare a default constructor. 20460 * src/abg-suppression.cc 20461 (function_suppression::function_suppression): Define default 20462 constructor. 20463 * include/abg-tools-utils.h 20464 (gen_suppr_spec_from_kernel_abi_whitelist): Declare new function. 20465 * src/abg-tools-utils.cc 20466 (gen_suppr_spec_from_kernel_abi_whitelist): Define new function. 20467 * tools/abidiff.cc (options::kernel_abi_whitelist_paths): 20468 (display_usage): Display a help string for the new 20469 --linux-kernel-abi-whitelist option. 20470 (parse_command_line): Parse the --linux-kernel-abi-whitelist from 20471 the command line. 20472 (maybe_check_suppression_files): Check the presence of the kernel 20473 abi whitelist files. 20474 (set_suppressions): Generate suppression specifications from the 20475 whitelist files. 20476 204772016-10-10 Dodji Seketeli <dodji@redhat.com> 20478 20479 Support Linux Kernel binaries 20480 * include/abg-dwarf-reader.h (create_read_context): Take a new 20481 flag to say if the context is to read an ELF binary in linux 20482 kernel mode. 20483 * src/abg-dwarf-reader.cc (typedef address_set_type) 20484 (address_set_sptr): New typedefs. 20485 (get_binary_load_address): The load address of the binary is 20486 the load address specified by the program header that is at the 20487 smallest offset; not by the program header that is at offset zero. 20488 (read_context::{ksymtab_section_, ksymtab_gpl_section_, 20489 linux_exported_fn_syms_, linux_exported_var_syms_, 20490 linux_exported_gpl_fn_syms_, linux_exported_gpl_var_syms_, 20491 load_in_linux_kernel_mode_}): New data members. 20492 (read_context::read_context): Initialize ksymtab_section_, 20493 ksymtab_gpl_section_ and load_in_linux_kernel_mode_. 20494 (read_context::{find_symbol_table_section, find_opd_section, 20495 lookup_elf_fn_symbol_from_address, 20496 lookup_elf_var_symbol_from_address, get_function_address, 20497 get_variable_address}): Make these const. 20498 (read_context::{find_ksymtab_section, find_ksymtab_gpl_section, 20499 lookup_elf_symbol_from_address, function_symbol_is_exported, 20500 variable_symbol_is_exported, linux_exported_fn_syms, 20501 create_or_get_linux_exported_fn_syms, linux_exported_var_syms, 20502 create_or_get_linux_exported_var_syms, linux_exported_gpl_fn_syms, 20503 linux_exported_gpl_var_syms, 20504 create_or_get_linux_exported_gpl_fn_syms, 20505 linux_exported_gpl_var_syms, 20506 create_or_get_linux_exported_gpl_var_syms, architecture_word_size, 20507 load_kernel_symbol_table, load_ksymtab_symbols, 20508 load_ksymtab_gpl_symbols, 20509 load_linux_specific_exported_symbol_maps, 20510 load_in_linux_kernel_mode}): New member functions. 20511 (read_context::read_int_from_array_of_bytes): Factorize this 20512 new member function out of ... 20513 (read_context::{lookup_ppc64_elf_fn_entry_point_address}): 20514 ... this. Make this function const too. 20515 (read_context::read_uint64_from_array_of_bytes): New function. 20516 Uses read_int_from_array_of_bytes above. 20517 (read_context::{fun_entry_addr_sym_map_sptr}): Try to load symbol 20518 maps only when it's necessary. 20519 (read_context::elf_architecture_is_big_endian): Fix logic. 20520 (read_context::{var_addr_sym_map}): Express the const variant in 20521 terms of the non-const one. In the non-const one, load the map 20522 only when necessary. 20523 (read_context::load_symbol_maps_from_symtab_section): Renamed 20524 load_symbol_maps into this. 20525 (read_context::is_linux_kernel_binary): Define new member 20526 function. 20527 (read_context::{function, variable}_symbol_is_exported): If we are 20528 not prevented from considering loading in linux kernel mode, then 20529 just looking at a linux kernel binary makes us consider the 20530 special kernel sections. 20531 (read_debug_info_into_corpus): Likewise. 20532 (build_ir_node_from_die): Take a new flag that says if the ir node 20533 is a declaration required by another concrete IR node. 20534 (enum read_context::kernel_symbol_table_kind): New enum. 20535 (read_context::load_symbol_maps): Support loading linux kernel 20536 specific sections too. 20537 (build_var_decl): Use the new 20538 read_context::variable_symbol_is_exported. 20539 (function_is_suppressed): Suppress non-member functions or 20540 variables that are not declarations and that have no symbol. 20541 (variable_is_suppressed, build_var_decl_if_not_suppressed): Take a 20542 new flag that says if the variable is a declaration required by a 20543 concrete variable. If non member variable that is a declaration 20544 is not the specification of another concrete variable, then it's 20545 suppressed. 20546 (add_fn_symbols_to_map, add_var_symbols_to_map): New function 20547 definitions. 20548 (read_debug_info_into_corpus): If we are reading linux kernel or 20549 linux kernel modules, only set explicitely exported symbols (in 20550 the linux kernel binary sense) as exported function or variable 20551 symbols. 20552 (create_read_context): Take a new flag to say if the context is to 20553 read an ELF binary in linux kernel mode. 20554 * tools/abidiff.cc (options::options): Initialize 20555 options::linux_kernel_mode to true. 20556 (display_usage): Display usage of the --no-linux-kernel-mode option. 20557 (parse_command_line): Parse the --no-linux-kernel-mode option. 20558 * tools/abidw.cc (options::options): Initialize 20559 options::linux_kernel_mode to true. 20560 (display_usage): Display usage of --no-linux-kernel-mode option. 20561 (parse_command_line): Parse the --no-linux-kernel-mode option. 20562 * doc/manuals/abidiff.rst: Document the new --no-linux-kernel-mode 20563 options. 20564 * doc/manuals/abidw.rst: Likewise. 20565 * tests/data/test-diff-dwarf-abixml/test0-pr19026-libvtkIOSQL-6.1.so.1.abi: 20566 Adjust. 20567 * tests/data/test-read-dwarf/test9-pr18818-clang.so.abi: Adjust. 20568 * tests/data/test-read-dwarf/test10-pr18818-gcc.so.abi: Adjust. 20569 * tests/data/test-read-dwarf/test11-pr18828.so.abi: Adjust. 20570 * tests/data/test-read-dwarf/test12-pr18844.so.abi: Likewise. 20571 * tests/data/test-read-dwarf/test13-pr18894.so.abi: Likewise. 20572 * tests/data/test-read-dwarf/test14-pr18893.so.abi: Likewise. 20573 * tests/data/test-read-dwarf/test15-pr18892.so.abi: Likewise. 20574 * tests/data/test-read-dwarf/test16-pr18904.so.abi: Likewise. 20575 * tests/data/test-read-dwarf/test17-pr19027.so.abi: Likewise. 20576 * tests/data/test-read-dwarf/test18-pr19037-libvtkRenderingLIC-6.1.so.abi: 20577 Likewise. 20578 * tests/data/test-read-dwarf/test19-pr19023-libtcmalloc_and_profiler.so.abi: 20579 Likewise. 20580 * tests/data/test-read-dwarf/test20-pr19025-libvtkParallelCore-6.1.so.abi: 20581 Likewise. 20582 * tests/data/test-read-dwarf/test21-pr19092.so.abi: Likewise. 20583 * tests/data/test-read-dwarf/test22-pr19097-libstdc++.so.6.0.17.so.abi: Likewise. 20584 * tests/data/test-read-dwarf/libtest23.so.abi: Adjust. 20585 * tests/data/test-read-dwarf/libtest24-drop-fns-2.so.abi: Adjust. 20586 * tests/data/test-read-dwarf/libtest24-drop-fns.so.abi: Adjust. 20587 205882017-01-06 Dodji Seketeli <dodji@redhat.com> 20589 20590 Add debug routines to dump locations to a stream 20591 * src/abg-writer.cc (dump_location): Define new function and one 20592 overload. 20593 (dump_decl_location): Re-write in terms of the new dump_location. 20594 205952017-01-06 Dodji Seketeli <dodji@redhat.com> 20596 20597 Better de-duplicate classes, unions, enums in non-odr contexts 20598 * src/abg-dwarf-reader.cc (build_enum_type) 20599 (add_or_update_class_type, add_or_update_union_type): When the ODR 20600 is not relevant, use the location of the type to detect if two 20601 enum, class or union types of the same name actually represent the 20602 same type. 20603 206042017-01-06 Dodji Seketeli <dodji@redhat.com> 20605 20606 Adjust some reference outputs of the test-read-dwarf test harness 20607 * tests/data/test-read-dwarf/test12-pr18844.so.abi: Adjust. 20608 * tests/data/test-read-dwarf/test9-pr18818-clang.so.abi: Adjust. 20609 206102017-01-04 Ondrej Oprala <ondrej.oprala@gmail.com> 20611 20612 Bug 18754 - Add the "--no-added-syms" option to abidiff 20613 * doc/manuals/abidiff.rst: Document the new --no-added-syms 20614 option. 20615 * tools/abidiff.cc (struct options): Add show_added_syms and 20616 set it to true by default. 20617 (display_usage): Document the new options --no-added-syms. If 20618 this is the only suppression option specified, it is equivalent 20619 to specifying --show_{changed,deleted}_{fns,vars} as arguments 20620 to abidiff. If any of those options are specified before 20621 --no-added-syms, then it has no effect. 20622 (parse_command_line): Parse the new option and set 20623 show_added_{fns,vars,syms} and show_all_{fns,vars} to false if 20624 --no-added-syms is specified. 20625 * tests/test-diff-filter.cc: Add a test for the new option. 20626 * tests/data/test-diff-filter/test35-pr18754-no-added-syms-report-0.txt: 20627 Reference results for the new test. 20628 * tests/data/test-diff-filter/test35-pr18754-no-added-syms-report-1.txt: 20629 Likewise. 20630 * tests/data/Makefile.am: Add the above test files to the list of 20631 test data. 20632 206332017-01-05 Dodji Seketeli <dodji@redhat.com> 20634 20635 Update copyright year on a bunch of files 20636 * include/abg-corpus.h: Update copyright year to 2017. 20637 * src/abg-dwarf-reader.cc: Likewise. 20638 * src/abg-ir.cc: Likewise. 20639 * src/abg-reader.cc: Likewise. 20640 * src/abg-writer.cc: Likewise. 20641 * tools/abicompat.cc: Likewise. 20642 * tools/abidw.cc: Likewise. 20643 206442017-01-05 Dodji Seketeli <dodji@redhat.com> 20645 20646 [apidoc] Allow brief description at the top of class description pages 20647 * doc/api/libabigail.doxy: Don't disable "brief member desc". 20648 206492017-01-05 Dodji Seketeli <dodji@redhat.com> 20650 20651 Misc style fixes 20652 * include/abg-corpus.h: Remove corpus_sptr typedef. It's in 20653 abg-fwd.h now. 20654 * src/abg-ir.cc: Remove some unnecessary vertical space. 20655 * src/abg-reader.cc (build_function_decl): Cleanup some asserts. 20656 * src/abg-writer.cc (write_function_type): Each the inspection of 20657 the type id from within the debugger. 20658 206592017-01-05 Dodji Seketeli <dodji@redhat.com> 20660 20661 Misc comments and apidoc fixes 20662 * src/abg-dwarf-reader.cc (lookup_symbol_from_gnu_hash_tab): Fix 20663 typo in comment. 20664 * tools/abicompat.cc (perform_compat_check_in_weak_mode): Better 20665 comments. 20666 * tools/abidw.cc (dislay_usage): Fix white spaces. 20667 Conflicts: 20668 tools/abidw.cc 20669 206702017-01-05 Dodji Seketeli <dodji@redhat.com> 20671 20672 Speedup set_member_is_static 20673 * src/abg-ir.cc (set_member_is_static): When comparing data 20674 members, consider only their names. 20675 206762017-01-05 Dodji Seketeli <dodji@redhat.com> 20677 20678 Avoid unnecessary updates to type lookup maps 20679 * src/abg-ir.cc (class_or_union::get_is_declaration_only): Try 20680 to update the type maps only when a declaration-only class 20681 type is now defined. 20682 206832017-01-05 Dodji Seketeli <dodji@redhat.com> 20684 20685 Update tests/data/test-read-dwarf/*.abi files 20686 * tests/data/test-read-dwarf/test10-pr18818-gcc.so.abi: Adjust. 20687 * tests/data/test-read-dwarf/test11-pr18828.so.abi: Likewise. 20688 * tests/data/test-read-dwarf/test12-pr18844.so.abi: Likewise. 20689 * tests/data/test-read-dwarf/test13-pr18894.so.abi: Likewise. 20690 * tests/data/test-read-dwarf/test14-pr18893.so.abi: Likewise. 20691 * tests/data/test-read-dwarf/test15-pr18892.so.abi: Likewise. 20692 * tests/data/test-read-dwarf/test16-pr18904.so.abi: Likewise. 20693 * tests/data/test-read-dwarf/test17-pr19027.so.abi: Likewise. 20694 * tests/data/test-read-dwarf/test18-pr19037-libvtkRenderingLIC-6.1.so.abi: Likewise. 20695 * tests/data/test-read-dwarf/test19-pr19023-libtcmalloc_and_profiler.so.abi: Likewise. 20696 * tests/data/test-read-dwarf/test20-pr19025-libvtkParallelCore-6.1.so.abi: Likewise. 20697 * tests/data/test-read-dwarf/test21-pr19092.so.abi: Likewise. 20698 * tests/data/test-read-dwarf/test22-pr19097-libstdc++.so.6.0.17.so.abi: Likewise. 20699 * tests/data/test-read-dwarf/test9-pr18818-clang.so.abi: Likewise. 20700 207012017-01-05 Dodji Seketeli <dodji@redhat.com> 20702 20703 Update tests/data/test-diff-dwarf-abixml/test0-pr19026-libvtkIOSQL-6.1.so.1.abi 20704 * tests/data/test-diff-dwarf-abixml/test0-pr19026-libvtkIOSQL-6.1.so.1.abi: 20705 Update. 20706 207072017-01-05 Dodji Seketeli <dodji@redhat.com> 20708 20709 [abixml writer] Make sure all function types are emitted 20710 * src/abg-writer.cc (write_translation_unit): Fix logic to avoid 20711 forgetting referenced function types. 20712 207132017-01-05 Dodji Seketeli <dodji@redhat.com> 20714 20715 [abixml writer] Fix comparison of pointer to types 20716 * src/abg-writer.cc (type_ptr_comp::operator()): Do not add an 20717 empty type id string to the type -> type id map when the entry for 20718 a given type is empty. 20719 207202017-01-05 Dodji Seketeli <dodji@redhat.com> 20721 20722 [dwarf-reader] Don't early canonicalize function types 20723 * src/abg-dwarf-reader.cc (maybe_canonicalize_type): 20724 Late-canonicalize function types. 20725 signed-off-by: Dodji Seketeli <dodji@redhat.com> 20726 207272017-01-05 Dodji Seketeli <dodji@redhat.com> 20728 20729 Fix qualified name caching for some types 20730 * src/abg-ir.cc ({qualified, pointer, 20731 array}_type_def::get_qualified_name): Don't cache internal and 20732 non-internal qualified name when the type is not canonicalized. 20733 207342017-01-04 Dodji Seketeli <dodji@redhat.com> 20735 20736 Cleanup ODR-based type canonicalization optimization gating logic 20737 * src/abg-ir.cc (type_base::get_canonical_type_for): Make it clear 20738 that the ODR-based optimization is allowed only on C++ ABI 20739 corpora. 20740 207412017-01-04 Dodji Seketeli <dodji@redhat.com> 20742 20743 Fix a typo in method name computation 20744 * src/abg-ir.cc (get_method_type_name): Really return the method 20745 name. 20746 207472017-01-05 Dodji Seketeli <dodji@redhat.com> 20748 20749 Update tests/data/test-diff-pkg/libICE-1.0.6-1.el6.x86_64.rpm--libICE-1.0.9-2.el7.x86_64.rpm-report-0.txt 20750 * tests/data/test-diff-pkg/libICE-1.0.6-1.el6.x86_64.rpm--libICE-1.0.9-2.el7.x86_64.rpm-report-0.txt: Adjust. 20751 207522017-01-05 Dodji Seketeli <dodji@redhat.com> 20753 20754 Update tests/data/test-read-write/test27.xml 20755 * tests/data/test-read-write/test27.xml: Adjust. 20756 207572017-01-04 Dodji Seketeli <dodji@redhat.com> 20758 20759 [dwarf-reader] Handle per translation-unit type de-duplication 20760 * src/abg-dwarf-reader.cc 20761 (read_context::per_tu_name_artefacts_map_): New data member. 20762 (read_context::clear_per_translation_unit_data): Clear the new 20763 read_context::per_tu_name_artefacts_map_. 20764 (read_context::associate_die_to_decl): Take a flag to say if we 20765 should associate a DIE to its representation and another one to 20766 say if the association should be done per-tu or per-corpus. 20767 (read_context::lookup_{type_artifact, artifact}_from_die): Update 20768 apidoc. 20769 (read_context::lookup_artifact_from_die_representation): Likewise. 20770 (read_context::{associate_die_to_artifact_by_repr, 20771 associate_die_to_artifact_by_repr_internal, 20772 associate_die_to_type}): Take a flag to say if the associating 20773 should be done on a per-tu basis. 20774 (read_context::lookup_{type_artifact, artifact}_from_die_per_tu): 20775 New member functions. 20776 (read_context::{lookup_artifact_from_per_tu_die_representation, 20777 odr_is_relevant}): Likewise. 20778 (build_enum_type, add_or_update_class_type) 20779 (add_or_update_union_type): If ODR is not relevant, do not perform 20780 per-corpus de-duplication. 20781 (build_pointer_type_def, build_typedef_type): Do not associate the 20782 type to its representation as these kinds of typs are not 20783 de-duplicated. 20784 (build_function_type): If ODR is not relevant, perform per-tu 20785 de-duplication. When ODR is relevant, per-corpus de-duplication 20786 is performed. 20787 (build_or_get_fn_decl_if_not_suppressed): Function decls are 20788 always de-duplicated per-corpus. 20789 (build_ir_node_from_die): For data members, do not update the die 20790 representation map as data members are not de-duplicated. Do not 20791 do it for function decls either. 20792 [1]: https://en.wikipedia.org/wiki/One_Definition_Rule 20793 207942017-01-02 Dodji Seketeli <dodji@redhat.com> 20795 20796 Handle per translation unit and per corpus types maps 20797 * include/abg-fwd.h (lookup_type_in_corpus): Remove. This is to 20798 be replaced by the new lookup_type below. 20799 (lookup_{basic, class, union, enum, typedef, qualified, pointer, 20800 reference, array, function, class_or_typedef, 20801 class_typedef_or_enum}_type): 20802 (lookup_class_type_through_scopes, lookup_type) 20803 (lookup_type_through_scopes, lookup_or_synthesize_fn_type) 20804 * src/abg-ir-priv.h (struct translation_unit::priv): Move this 20805 private type here, from abg-ir.h. 20806 (synthesize_type_from_translation_unit): Declare new functions. 20807 * include/abg-ir.h (class type_maps): Define new type. 20808 (translation_unit::get_function_types): Remove. 20809 (translation_unit::get_types): Now return a type_maps. 20810 (translation_unit::get_live_fn_types): Declare new type. 20811 (class decl_base): Make canonicalize be a friend of this class. 20812 * src/abg-ir.cc (struct translation_unit::priv): Move this to 20813 abg-ir-priv.h 20814 (struct type_maps::priv): Define new type. 20815 (type_maps::{basic, class, union, enum, typedef, qualified, 20816 pointer, reference, array, function}_types): Define new accessors. 20817 (translation_unit::bind_function_type_life_time): Adjust. 20818 (translation_unit::get_function_types): Remove accessor. 20819 (translation_unit::get_types, get_live_fn_types): Define new 20820 accessors. 20821 (lookup_type_in_translation_unit) 20822 (lookup_class_type_in_translation_unit) 20823 (lookup_function_type_in_translation_unit) 20824 (synthesize_type_from_translation_unit) 20825 (synthesize_function_type_from_translation_unit) 20826 (lookup_class_type_in_translation_unit) Remove function 20827 definitions. 20828 (lookup_type_in_map): Define function template. 20829 (lookup_{basic, class, union, typedef, class_or_typedef, 20830 class_typedef_or_enum, qualified, pointer, reference, array, 20831 function}_type): Define functions. 20832 (lookup_function_type, lookup_type_through_scopes) 20833 (lookup_class_type_through_scopes) 20834 (lookup_basic_type_through_translation_units) 20835 (lookup_union_type_through_translation_units) 20836 (lookup_enum_type_through_translation_units) 20837 (lookup_class_type_through_translation_units) 20838 (lookup_typedef_type_through_translation_units) 20839 (lookup_qualified_type_through_translation_units) 20840 (lookup_pointer_type_through_translation_units) 20841 (lookup_reference_type_through_translation_units) 20842 (lookup_array_type_through_translation_units) 20843 (lookup_function_type_through_translation_units) 20844 (lookup_type_through_translation_units) 20845 (lookup_or_synthesize_fn_type, lookup_type): Likewise. 20846 (maybe_update_types_lookup_map) 20847 (maybe_update_types_lookup_map<class_decl>) 20848 (maybe_update_types_lookup_map<function_type>): Define function 20849 template, specilizations and functions. 20850 (synthesize_type_from_translation_unit) 20851 (synthesize_function_type_from_translation_unit): Define 20852 functions. 20853 * include/abg-corpus.h (corpus::get_types): Declare new accessor. 20854 * src/abg-corpus.cc (corpus::priv::get_types): Define new 20855 accessor. 20856 (corpus::get_types): Likewise. 20857 (lookup_type_in_corpus, lookup_class_type_in_corpus) 20858 (lookup_type_in_corpus, lookup_function_type_in_corpus) 20859 (maybe_update_types_lookup_map) 20860 (maybe_update_types_lookup_map<class_decl>) 20861 (maybe_update_types_lookup_map<function_type>): Remove. 20862 (lookup_{basic, class, union, enum, typedef, qualified, pointer, 20863 reference, array, function, class_or_typedef, 20864 class_typedef_or_enum}_type): Likewise. 20865 * src/abg-corpus-priv.h (corpus::priv::{basic, class, union, 20866 typedef, qualified, pointer, reference, array, function}_types): 20867 Remove these data members. 20868 (corpus::priv::get_scopes): Remove member function. 20869 (corpus::priv::get_{basic, class, union, enum, typedef, qualified, 20870 pointer, reference, array, function}_types): Remove member 20871 function declarations. 20872 (corpus::priv::types_): New data member. 20873 (corpus::priv::get_types): Declare new member function. 20874 (lookup_{basic, class, enum, typedef, class_or_typedef, qualified, 20875 pointer, reference, array, function}_type): Declare new functions. 20876 * src/abg-dwarf-reader.cc 20877 (read_context::resolve_declaration_only_classes) 20878 (build_translation_unit_and_add_to_ir): Adjust use of 20879 lookup_class_type. 20880 * src/abg-reader.cc (read_context::type_is_from_translation_unit): 20881 Adjust to the use of lookup_function_type_in_translation_unit that 20882 got renamed into lookup_function_type. 20883 * src/abg-writer.cc (type_ptr_cmp::operator()): New operator 20884 implementation. 20885 (read_context::sort_type): Add new overloads. 20886 (write_translation_unit): Adjust to get the function types from 20887 the new translation_unit::get_live_fn_types and sort them. 20888 * tools/abicompat.cc (perform_compat_check_in_weak_mode): Adjust 20889 to use the new lookup_or_synthesize_fn_type, in lieu of 20890 lookup_function_type_in_corpus. Adjust to use lookup_type in lieu 20891 of lookup_type_in_corpus. 20892 208932016-12-21 Dodji Seketeli <dodji@redhat.com> 20894 20895 Make abg-fwd.h use *_sptr typedefs 20896 * include/abg-ir.h: Move convience typedef declarations and some 20897 necessary forward declarations to ... 20898 * include/abg-fwd.h: ... here. 20899 (is_enum_type, is_var_decl): Take a pointer to type_or_decl_base. 20900 (lookup_type_in_scope): Return a type_base_sptr. 20901 (lookup_type_through_scopes): Introduce this to later replace the 20902 overload of lookup_type_in_translation_unit that takes a list of 20903 strings. 20904 (lookup_type_in_scope): Return a type_base_sptr, not a 20905 decl_base_sptr. 20906 * src/abg-ir.cc (lookup_type_in_scope, lookup_node_in_scope) 20907 (lookup_var_decl_in_scope): Adjust. 20908 (is_enum_type, is_var_decl): Take a pointer to type_or_decl_base. 20909 (lookup_node_in_scope): Return a type_or_decl_base_sptr. 20910 (lookup_type_in_scope): Return a type_base_sptr. 20911 (lookup_node_in_translation_unit): Return a 20912 type_or_decl_base_sptr. 20913 (lookup_type_through_scopes): Replace 20914 lookup_type_in_translation_unit. 20915 209162016-12-18 Chenxiong Qi <cqi@redhat.com> 20917 20918 Fix wrong variable name 20919 * tools/fedabipkgdiff: (diff_latest_rpms_based_on_distros): Fix 20920 wrong variable name distro. 20921 209222016-12-18 Chenxiong Qi <cqi@redhat.com> 20923 20924 Warn properly when cannot find peer RPM 20925 * tools/fedabipkgdiff: (RPMCollection.get_peer_rpm): Return None 20926 when cannot find peer RPM due to nonexistent arch. 20927 209282016-12-19 Chenxiong Qi <cqi@redhat.com> 20929 20930 Read Koji config via Koji API 20931 * tools/fedabipkgdiff: Read DEFAULT_KOJI_TOPURL and 20932 DEFAULT_KOJI_SERVER from Koji config via Koji API read_config. 20933 (build_commandline_args_parser): --topdir is renamed to 20934 --topurl. 20935 * doc/manuals/fedabipkgdiff.rst: Rename --topdir to --topurl. 20936 209372016-12-19 Chenxiong Qi <cqi@redhat.com> 20938 20939 Follow moved packages when download 20940 * tools/fedabipkgdiff: (download_rpm) Add --location to curl 20941 CLI. 20942 209432016-12-13 Chenxiong Qi <cqi@redhat.com> 20944 20945 More document for local RPMs comparison 20946 * doc/manuals/fedabipkgdiff.rst: Add more document for local RPMs 20947 comparison. Also fixed a typo. 20948 209492016-12-15 Ondrej Oprala <ondrej.oprala@gmail.com> 20950 20951 Properly report missing files for abipkgdiff 20952 * tools/abipkgdiff.cc: (class options): Add the "nonexistent_file" flag 20953 (parse_command_line): Check if the files given exist. 20954 (main): Check the nonexistent_file flag. If any of the input 20955 files don't exist, report it and exit. Also, for present and future test 20956 uniformity, only show the base names of the packages when using their 20957 names in error output. 20958 * tests/test-diff-pkg.cc: Add a new regression test. 20959 * tests/data/test-diff-pkg/test-nonexistent-report-0.txt: The 20960 expected output of the above regression test. 20961 * tests/data/Makefile.am: Add the above file to the list. 20962 209632016-12-15 Dodji Seketeli <dodji@redhat.com> 20964 20965 Misc style cleanup 20966 * src/abg-dwarf-reader.cc (build_function_type): Remove 20967 unnecessary new line. 20968 209692016-12-15 Dodji Seketeli <dodji@redhat.com> 20970 20971 make is_anonymous_type work for unions and classes 20972 * src/abg-ir.cc (is_anonymous_type): Make this work for class or 20973 union types, no only classes. 20974 209752016-12-15 Dodji Seketeli <dodji@redhat.com> 20976 20977 Naming typedefs of classes are not read properly from abixml 20978 * src/abg-reader.cc (build_class_decl): Use 20979 read_context::build_or_get_type_decl rather than 20980 read_context::get_type_decl to build the naming typedef referred 20981 to by the class being built. Move the handling of naming typedefs 20982 after the class is marked as WIP and keyed. 20983 209842016-12-15 Dodji Seketeli <dodji@redhat.com> 20985 20986 Don't early-canonicalize function types when reading abixml 20987 * src/abg-reader.cc (read_context::maybe_canonicalize_type): 20988 late-canonicalize function types too. 20989 209902016-12-12 Ondrej Oprala <ondrej.oprala@gmail.com> 20991 20992 Check --enable-rpm dependencies more rigorously 20993 * configure.ac: Check if both rpm2cpio and cpio 20994 exist on the system. If not, disable the option and fail the 20995 configuration if --enable-rpm was specified explicitly. 20996 209972016-12-12 Ondrej Oprala <ondrej.oprala@gmail.com> 20998 20999 abipkgdiff doesn't mention --no-default-suppression in help 21000 * tools/abipkgdiff.cc (display_usage): Mention 21001 --no-default-suppression as one of the options. 21002 210032016-12-12 Ondrej Oprala <ondrej.oprala@gmail.com> 21004 21005 Fix a few remarks made by cppcheck 21006 * src/abg-comparison.cc (types_or_decls_equal::operator()): Pass 21007 arguments by reference. 21008 (class_diff::ensure_lookup_tables_populated): Expression 21009 !A || (A && B) can be reduced to !A || B. 21010 * src/abg-suppression.cc (suppression_matches_type_no_name): 21011 Likewise. 21012 210132016-12-09 Ondrej Oprala <ondrej.oprala@gmail.com> 21014 21015 Bug 19272 - abipkgdiff doesn't report arch change 21016 * src/abg-comparison.cc (corpus_diff::has_incompatible_changes): 21017 The architecture change into account. 21018 (corpus_diff::has_net_changes): Take architecture and soname 21019 changes into account. 21020 * tools/abicompat.cc (perform_compat_check_in_normal_mode): Use 21021 corpus_diff::{has_net_changes, has_incompatible_changes}. 21022 * tests/data/test-diff-pkg/dbus-glib-0.104-3.fc23.armv7hl.rpm: New 21023 test input. 21024 * tests/data/test-diff-pkg/dbus-glib-0.104-3.fc23.x86_64--dbus-glib-0.104-3.fc23.armv7hl-report-0.txt: 21025 New test reference output. 21026 * tests/data/Makefile.am: Add the new test material above to 21027 source distribution. 21028 * tests/test-diff-pkg.cc (in_out_spec): Compare the new package 21029 above against an x86_64 one. 21030 210312016-08-11 Chenxiong Qi <cqi@redhat.com> 21032 21033 Bug 20380 - Compare two local RPMs 21034 * configure.ac: add dependent mimetype module. 21035 * doc/manuals/fedabipkgdiff.rst: Update to add document for the 21036 new use case of comparing two local RPMs. 21037 * tests/data/Makefile.am: Include new RPMs for tests. 21038 * tests/data/test-fedabipkgdiff/dbus-glib/dbus-glib-0.100.2-2.fc20.x86_64.rpm: 21039 New RPM for running test. 21040 * tests/data/test-fedabipkgdiff/dbus-glib/dbus-glib-0.106-1.fc23.x86_64.rpm: 21041 Likewise. 21042 * tests/data/test-fedabipkgdiff/nss-util/nss-util-3.12.6-1.fc14.x86_64.rpm: 21043 Likewise. 21044 * tests/data/test-fedabipkgdiff/nss-util/nss-util-3.24.0-2.0.fc25.x86_64.rpm: 21045 Likewise. 21046 * tests/data/test-fedabipkgdiff/nss-util/nss-util-devel-3.24.0-2.0.fc25.x86_64.rpm: 21047 Likewise. 21048 * tests/data/test-fedabipkgdiff/test4-glib-0.100.2-2.fc20.x86_64.rpm-glib-0.106-1.fc23.x86_64.rpm-report-0.txt: 21049 Rename filename by adding .rpm extension. 21050 * tests/data/test-fedabipkgdiff/test5-same-dir-dbus-glib-0.100.2-2.fc20.x86_64--dbus-glib-0.106-1.fc23.x86_64-report-0.txt: 21051 New reference output for testing comparing local RPMs. 21052 * tests/data/test-fedabipkgdiff/test6-missing-devel-debuginfo-nss-util-3.12.6-1.fc14.x86_64--nss-util-3.24.0-2.0.fc25.x86_64-report-0.txt: 21053 New reference output for testing comparison without non-existent 21054 debuginfo or development package. 21055 * tests/runtestfedabipkgdiff.py.in (FEDABIPKGDIFF_TEST_SPECS): 21056 Rename filename for test4. Add two new test cases. 21057 (run_fedabipkgdiff_tests): Remove semicolon and trailing 21058 whitespaces. 21059 (main): Likewise. 21060 (ensure_output_dir_created): Likewise. 21061 * tools/fedabipkgdiff: Require some new modules. 21062 Fix of return code. 21063 (PkgInfo): Renamed to ComparisonHalf. 21064 (match_nvr): New method to determine if a string matches format 21065 of N-V-R. 21066 (match_nvra): New method to determine if a string matches format 21067 of N-V-R.A. 21068 (is_rpm_file): New method to guess if a file is a RPM file. 21069 (RPM.is_peer): New method to determine if current RPM is a peer 21070 of another. 21071 (RPM.filename): Use Koji module API to construct the filename. 21072 (RPM.nvra): Get nvra from filename instead of constructing 21073 manually that is duplicated with Koji module API. 21074 (RPMCollection): New class to represent a set of RPMs. 21075 (generate_pkg_info_pair_for_abipkgdiff): New method working as a 21076 generator to yeild comparison halves for running abipkgdiff. 21077 (Brew.getRPM): Fix string format with incorrect argument. 21078 (Brew.select_rpms_from_a_build): Return instance of 21079 RPMCollection. 21080 (abipkgdiff): If there is no debuginfo or development package, 21081 just ignore it and leave a warning. If --error-on-warning is 21082 specified, raise an exception instead. Arguments are modified 21083 to represent the new name ComparisonHalf, and relative docstring 21084 is also updated. 21085 (magic_construct): Removed. 21086 (run_abipkgdiff): Rewrite. 21087 (make_rpms_usable_for_abipkgdiff): Removed. 21088 (diff_local_rpm_with_latest_rpm_from_koji): Rewrite by using 21089 RPMCollection. 21090 (diff_latest_rpms_based_on_distros): Likewise. 21091 (diff_two_nvras_from_koji): Likewise. 21092 (diff_from_two_rpm_files): New method to compare two local RPMs. 21093 (build_commandline_args_parser): Add new option 21094 --error-on-warning. 21095 (main): Add support to compare local RPMs. 21096 210972016-12-12 Dodji Seketeli <dodji@redhat.com> 21098 21099 Fix template_decl::hash::operator() 21100 * src/abg-hash.cc (template_decl::hash::operator()): Combine the 21101 contribution of the qualified name to the contribution of the type 21102 name to the hash. 21103 211042016-12-09 Dodji Seketeli <dodji@redhat.com> 21105 21106 Fix aborting when reading .foo symbols from a ppc64 binary 21107 * abg-dwarf-reader.cc (read_context::find_opd_section): Fix 21108 comment. 21109 (read_context::load_symbol_maps): If for a given function entry 21110 point (that we got by looking at the ".opd" section for a given 21111 function pointer value) we already had an entry in the 21112 function_entry_address -> symbol, maybe it means that the previous 21113 entry that we had was from an entry in the symbol table which 21114 value was directly the entry point address of a function. In that 21115 case, if the name of the symbol is "foo", the name of the symbol 21116 which value is directly the entry point address is ".foo". What 21117 we do in this case is that we just keep the reference to the "foo" 21118 symbol in the function_entry_address -> symbol map. 21119 (read_context::address_is_in_opd_section): Define new member 21120 function. 21121 * tests/data/test-diff-pkg/gmp-4.3.1-10.el6.ppc64.rpm: New test input. 21122 * tests/data/test-diff-pkg/gmp-4.3.1-7.el6_2.2.ppc64.rpm: Likewise. 21123 * tests/data/test-diff-pkg/gmp-debuginfo-4.3.1-10.el6.ppc64.rpm: Likewise. 21124 * tests/data/test-diff-pkg/gmp-debuginfo-4.3.1-7.el6_2.2.ppc64.rpm: Likewise. 21125 * tests/data/test-diff-pkg/gmp-4.3.1-7.el6_2.2.ppc64--gmp-4.3.1-10.el6.ppc64-report-0.txt: 21126 New test reference output. 21127 * tests/data/Makefile.am: Add the new test input and reference 21128 output to source distribution. 21129 * tests/test-diff-pkg.cc (in_out_specs): Add the new test inputs 21130 and reference output to the set of inputs that are compared. 21131 211322016-12-05 Dodji Seketeli <dodji@redhat.com> 21133 21134 Bug 20927 - Segfault when $HOME is not set 21135 * src/abg-tools-utils.cc 21136 (get_default_user_suppression_file_path): Handle the case where 21137 the HOME environment variable is not set. 21138 * tools/abipkgdiff.cc (package::extracted_packages_parent_dir): 21139 Likewise. When $HOME is empty set then use $TMPDIR. If it's 21140 empty too then use "/tmp". 21141 211422016-12-02 Dodji Seketeli <dodji@redhat.com> 21143 21144 Bug 20887 - Show relative change of offsets 21145 * doc/manuals/abidiff.rst: Document the new 21146 --no-show-relative-offset-changes. 21147 * doc/manuals/abipkgdiff.rst: Likewise. 21148 * include/abg-comparison.h 21149 (diff_context::show_relative_offset_changes): New accessors. 21150 * include/abg-ir.h ({set,get}_data_member_offset): Return uint64_t 21151 instead of the less portable size_t. 21152 * src/abg-comparison.cc 21153 (diff_context::priv::show_relative_offset_changes_): New data 21154 member. 21155 (dif_context::show_relative_offset_changes): Define accessor. 21156 (maybe_show_relative_offset_change): Define new function. 21157 (represent): In the overload for var_diff, call the new 21158 maybe_show_relative_offset_change. 21159 (report_size_and_alignment_changes): If the size of the type 21160 didn't change then say it now. 21161 * src/abg-ir.cc (set_data_member_offset, get_data_member_offset): 21162 Take or return a uint64_t instead of a size_t. 21163 * tools/abidiff.cc (options::show_relative_offset_changes): New 21164 data member. 21165 (options::options): Initialize it. 21166 (display_usage): Display help string for the new 21167 --no-show-relative-offset-changes. 21168 (parse_command_line): Parse the new 21169 --no-show-relative-offset-changes options. 21170 (set_diff_context_from_opts): Set the 21171 "show-relative-offset-changes" flag according to the new option.n 21172 * tools/abipkgdiff.cc (options::show_relative_offset_changes): New 21173 data member. 21174 (options::options): Initialize it. 21175 (display_usage): Add help string for the new 21176 --no-show-relative-offset-changes option. 21177 (set_diff_context_from_opts): Set the 21178 "show-relative-offset-changes" flag according to the new option. 21179 (parse_command_line): Parse the new command line option. 21180 * tests/data/test-diff-dwarf/test40-report-0.txt: Add new 21181 reference output. 21182 * tests/data/test-diff-dwarf/test40-v0.c: Source code of the first 21183 test binary. 21184 * tests/data/test-diff-dwarf/test40-v1.c: Source code of the 21185 second test binay. 21186 * tests/data/test-diff-dwarf/libtest40-v0.so: New first test binary. 21187 * tests/data/test-diff-dwarf/libtest40-v1.so: New second test binary. 21188 * tests/test-diff-dwarf.cc (in_out_spec): Add the new test 21189 binaries above to the set of binaries that are compared. 21190 * tests/data/Makefile.am: Add the new test material to source 21191 distribution. 21192 * tests/data/test-abicompat/test7-fn-changed-report-0.txt: Adjust. 21193 * tests/data/test-abidiff/test-PR18791-report0.txt: Likewise. 21194 * tests/data/test-abidiff/test-enum0-report.txt: Likewise. 21195 * tests/data/test-abidiff/test-enum1-report.txt: Likewise. 21196 * tests/data/test-abidiff/test-struct1-report.txt: Likewise. 21197 * tests/data/test-diff-dwarf/test0-report.txt: Likewise. 21198 * tests/data/test-diff-dwarf/test1-report.txt: Likewise. 21199 * tests/data/test-diff-dwarf/test10-report.txt: Likewise. 21200 * tests/data/test-diff-dwarf/test11-report.txt: Likewise. 21201 * tests/data/test-diff-dwarf/test13-report.txt: Likewise. 21202 * tests/data/test-diff-dwarf/test15-enum-report.txt: Likewise. 21203 * tests/data/test-diff-dwarf/test27-local-base-diff-report.txt: Likewise. 21204 * tests/data/test-diff-dwarf/test32-fnptr-changes-report-0.txt: Likewise. 21205 * tests/data/test-diff-dwarf/test33-fnref-changes-report-0.txt: Likewise. 21206 * tests/data/test-diff-dwarf/test38-union-report-0.txt: Likewise. 21207 * tests/data/test-diff-dwarf/test4-report.txt: Likewise. 21208 * tests/data/test-diff-dwarf/test5-report.txt: Likewise. 21209 * tests/data/test-diff-dwarf/test6-report.txt: Likewise. 21210 * tests/data/test-diff-dwarf/test8-report.txt: Likewise. 21211 * tests/data/test-diff-filter/test0-report.txt: Likewise. 21212 * tests/data/test-diff-filter/test01-report.txt: Likewise. 21213 * tests/data/test-diff-filter/test1-report.txt: Likewise. 21214 * tests/data/test-diff-filter/test13-report.txt: Likewise. 21215 * tests/data/test-diff-filter/test16-report-2.txt: Likewise. 21216 * tests/data/test-diff-filter/test16-report.txt: Likewise. 21217 * tests/data/test-diff-filter/test17-0-report.txt: Likewise. 21218 * tests/data/test-diff-filter/test17-1-report.txt: Likewise. 21219 * tests/data/test-diff-filter/test18-report.txt: Likewise. 21220 * tests/data/test-diff-filter/test19-enum-report-1.txt: Likewise. 21221 * tests/data/test-diff-filter/test2-report.txt: Likewise. 21222 * tests/data/test-diff-filter/test23-redundant-fn-parm-change-report-0.txt: 21223 Likewise. 21224 * tests/data/test-diff-filter/test24-compatible-vars-report-1.txt: 21225 Likewise. 21226 * tests/data/test-diff-filter/test25-cyclic-type-report-0.txt: 21227 Likewise. 21228 * tests/data/test-diff-filter/test25-cyclic-type-report-1.txt: 21229 Likewise. 21230 * tests/data/test-diff-filter/test26-qualified-redundant-node-report-0.t: 21231 Likewise.xt 21232 * tests/data/test-diff-filter/test26-qualified-redundant-node-report-1.txt: 21233 Likewise. 21234 * tests/data/test-diff-filter/test27-redundant-and-filtered-children-nodes-report-1.txt: 21235 Likewise. 21236 * tests/data/test-diff-filter/test27-redundant-and-filtered-children-nodes-report-2.txt: 21237 Likewise. 21238 * tests/data/test-diff-filter/test29-finer-redundancy-marking-report-0.txt: 21239 Likewise. 21240 * tests/data/test-diff-filter/test3-report.txt: Likewise. 21241 * tests/data/test-diff-filter/test30-pr18904-rvalueref-report0.txt: 21242 Likewise. 21243 * tests/data/test-diff-filter/test30-pr18904-rvalueref-report1.txt: 21244 Likewise. 21245 * tests/data/test-diff-filter/test31-pr18535-libstdc++-report-0.txt: 21246 Likewise. 21247 * tests/data/test-diff-filter/test31-pr18535-libstdc++-report-1.txt: 21248 Likewise. 21249 * tests/data/test-diff-pkg/libICE-1.0.6-1.el6.x86_64.rpm--libICE-1.0.9-2.el7.x86_64.rpm-report-0.txt: Likewise. 21250 * tests/data/test-diff-pkg/libsigc++-2.0-0c2a_2.4.0-1_amd64--libsigc++-2.0-0v5_2.4.1-1ubuntu2_amd64-report-0.txt: Likewise. 21251 * tests/data/test-diff-pkg/tbb-4.1-9.20130314.fc22.x86_64--tbb-4.3-3.20141204.fc23.x86_64-report-0.txt: Likewise. 21252 * tests/data/test-diff-pkg/tbb-4.1-9.20130314.fc22.x86_64--tbb-4.3-3.20141204.fc23.x86_64-report-1.txt: Likewise. 21253 * tests/data/test-diff-suppr/test0-type-suppr-report-0.txt: Likewise. 21254 * tests/data/test-diff-suppr/test0-type-suppr-report-3.txt: Likewise. 21255 * tests/data/test-diff-suppr/test0-type-suppr-report-5.txt: Likewise. 21256 * tests/data/test-diff-suppr/test0-type-suppr-report-7.txt: Likewise. 21257 * tests/data/test-diff-suppr/test1-typedef-suppr-report-0.txt: Likewise. 21258 * tests/data/test-diff-suppr/test1-typedef-suppr-report-2.txt: Likewise. 21259 * tests/data/test-diff-suppr/test10-changed-parm-c-report-0.txt: Likewise. 21260 * tests/data/test-diff-suppr/test2-struct-suppr-report-0.txt: Likewise. 21261 * tests/data/test-diff-suppr/test23-alias-filter-report-0.txt: Likewise. 21262 * tests/data/test-diff-suppr/test23-alias-filter-report-2.txt: Likewise. 21263 * tests/data/test-diff-suppr/test3-struct-suppr-report-0.txt: Likewise. 21264 * tests/data/test-diff-suppr/test3-struct-suppr-report-1.txt: Likewise. 21265 * tests/data/test-diff-suppr/test3-struct-suppr-report-2.txt: Likewise. 21266 * tests/data/test-diff-suppr/test30-report-0.txt: Likewise. 21267 * tests/data/test-diff-suppr/test4-local-suppr-report-0.txt: Likewise. 21268 * tests/data/test-diff-suppr/test4-local-suppr-report-1.txt: Likewise. 21269 * tests/data/test-diff-suppr/test5-fn-suppr-report-0.txt: Likewise. 21270 * tests/data/test-diff-suppr/test5-fn-suppr-report-1.txt: Likewise. 21271 * tests/data/test-diff-suppr/test5-fn-suppr-report-2.txt: Likewise. 21272 * tests/data/test-diff-suppr/test5-fn-suppr-report-3.txt: Likewise. 21273 * tests/data/test-diff-suppr/test5-fn-suppr-report-4.txt: Likewise. 21274 * tests/data/test-diff-suppr/test5-fn-suppr-report-5.txt: Likewise. 21275 * tests/data/test-diff-suppr/test6-fn-suppr-report-0-1.txt: Likewise. 21276 * tests/data/test-diff-suppr/test6-fn-suppr-report-0.txt: Likewise. 21277 * tests/data/test-diff-suppr/test6-fn-suppr-report-1.txt: Likewise. 21278 * tests/data/test-diff-suppr/test6-fn-suppr-report-2.txt: Likewise. 21279 * tests/data/test-diff-suppr/test6-fn-suppr-report-3.txt: Likewise. 21280 * tests/data/test-diff-suppr/test7-var-suppr-report-0.txt: Likewise. 21281 * tests/data/test-diff-suppr/test7-var-suppr-report-1.txt: Likewise. 21282 * tests/data/test-diff-suppr/test7-var-suppr-report-2.txt: Likewise. 21283 * tests/data/test-diff-suppr/test7-var-suppr-report-3.txt: Likewise. 21284 * tests/data/test-diff-suppr/test7-var-suppr-report-4.txt: Likewise. 21285 * tests/data/test-diff-suppr/test7-var-suppr-report-7.txt: Likewise. 21286 * tests/data/test-diff-suppr/test7-var-suppr-report-8.txt: Likewise. 21287 212882016-12-02 Dodji Seketeli <dodji@redhat.com> 21289 21290 Rename tests/update-test-read-dwarf-output.py 21291 * tests/update-test-output.py: renamed 21292 tests/update-test-read-dwarf-output.py into this. Update its 21293 comments. Make this script executable. 21294 212952016-11-30 Dodji Seketeli <dodji@redhat.com> 21296 21297 Add tests/data/test-diff-suppr/test33-report-0.txt to tarball 21298 * tests/data/Makefile.am: Add test-diff-suppr/test33-report-0.txt. 21299 213002016-11-30 Dodji Seketeli <dodji@redhat.com> 21301 21302 Bug 20670 - abipkgdiff aborts if $XDG_CACHE_HOME does not exist 21303 * tools/abipkgdiff.cc (package::extracted_packages_parent_dir): 21304 Ensure that the cache directory is created, even when 21305 XDG_CACHE_HOME is set. Also, remove the now useless "using 21306 abigail::tools_utils::get_random_number_as_string" statement. 21307 213082016-11-09 Dodji Seketeli <dodji@redhat.com> 21309 21310 Very light speed improvements 21311 * include/abg-comp-filter.h (has_harmless_name_change): Pass smart 21312 pointers by reference. 21313 * src/abg-comp-filter.cc (access_changed) 21314 (function_name_changed_but_not_symbol) 21315 (non_static_data_member_type_size_changed) 21316 (static_data_member_type_size_changed, is_compatible_change) 21317 (decl_name_changed, has_harmless_name_change): Pass smart 21318 pointers by reference. 21319 * include/abg-ir.h (decl_base::set_context_rel): Take a bare 21320 pointer, not a smart pointer. 21321 * src/abg-ir.cc (decl_base::priv::context_): Make this data member 21322 be a naked pointer, not a smart pointer. 21323 (decl_base::priv::priv): Initialize it. 21324 (decl_base::priv::~priv): New constructor. 21325 (decl_base::{get_context_rel, set_scope}): Adjust. 21326 (class_decl::method_decl::{method_decl, set_scope}): Likewise. 21327 (equals): In the overload for var_decl, compare the type of the 21328 var first as that might be faster (to detect var_decls with 21329 different types) in the general case where types are 21330 canonicalized. 21331 213322016-11-08 Dodji Seketeli <dodji@redhat.com> 21333 21334 Introduce on-the-fly type canonicalization 21335 * include/abg-ir.h (environment::do_on_the_fly_canonicalization): 21336 Declare new member functions. 21337 ({type_base, function_type}::priv_): Make this public so that 21338 static non-member functions defined in abg-ir.cc can access it. 21339 * src/abg-ir.cc 21340 (environment::priv::do_on_the_fly_canonicalization_): New data 21341 member. 21342 (environment::priv::priv): Initialize it. 21343 (environment::do_on_the_fly_canonicalization): Define new member 21344 functions. 21345 (type_base::get_canonical_type_for): Trigger on-the-fly 21346 canonicalization during comparison of the type being canonicalized 21347 and an already canonicalized type. 21348 (types_are_being_compared, maybe_propagate_canonical_type): Define 21349 new static functions. 21350 (equals): In overloads for class_decl and function_type, call 21351 maybe_propagate_canonical_type when the two types compare equal. 21352 * tests/data/test-diff-pkg/tbb-4.1-9.20130314.fc22.x86_64--tbb-4.3-3.20141204.fc23.x86_64-report-0.txt: 21353 Adjust. 21354 * tests/data/test-read-dwarf/test9-pr18818-clang.so.abi: Likewise. 21355 213562016-11-06 Dodji Seketeli <dodji@redhat.com> 21357 21358 Fix pretty representation of array types 21359 * include/abg-ir.h (array_type_def::is_infinite): Fix indentation. 21360 * src/abg-ir.cc (qualified_type_def::build_name): An empty set of 21361 sub-ranges for a vector is represented by "[]". 21362 (array_type_def::is_infinite): If a vector has no sub-range, that 21363 means it has an infinite size. Adjust comment. 21364 * tests/data/test-diff-filter/test33-report-0.txt: Adjust. 21365 * tests/data/test-read-dwarf/libtest23.so.abi: Adjust. 21366 * tests/data/test-read-dwarf/libtest24-drop-fns-2.so.abi: Adjust. 21367 * tests/data/test-read-dwarf/libtest24-drop-fns.so.abi: Adjust. 21368 * tests/data/test-read-dwarf/test10-pr18818-gcc.so.abi: Adjust. 21369 * tests/data/test-read-dwarf/test11-pr18828.so.abi: Adjust. 21370 * tests/data/test-read-dwarf/test14-pr18893.so.abi: Adjust. 21371 * tests/data/test-read-dwarf/test19-pr19023-libtcmalloc_and_profiler.so.abi: 21372 Adjust. 21373 * tests/data/test-read-dwarf/test22-pr19097-libstdc++.so.6.0.17.so.abi: 21374 Adjust. 21375 * tests/data/test-read-dwarf/test9-pr18818-clang.so.abi: Adjust. 21376 213772016-10-11 Dodji Seketeli <dodji@redhat.com> 21378 21379 Support naming typedef and use them to speed up type canonicalization 21380 * include/abg-ir.h (typedef_decl_wptr): New typedef. 21381 (class_decl::{g,s}et_naming_typedef): Declare new member 21382 functions. 21383 * src/abg-dwarf-reader.cc (build_typedef_type): When the 21384 underlying type of a typedef is an anonymous class, the class type 21385 is said to have a naming typedef. 21386 * src/abg-ir.cc (is_anonymous_type): An anonymous class that has 21387 a naming typedef is said to not be anonymous anymore. 21388 (class_decl::priv::naming_typedef): New data member. 21389 (class_decl::{g,s}et_naming_typedef): Define new member functions. 21390 (class_decl::get_pretty_representation): When called for internal 21391 purposes (e.g, for type canonicalization) compute the pretty 21392 representation of the class by using its typedef name, when class 21393 is anonymous and has a naming typedef. 21394 * src/abg-reader.cc (build_class_decl): Read the new 21395 "naming-typedef-id" attribute. 21396 * src/abg-writer.cc (write_naming_typedef): New function. 21397 (write_class_decl_opening_tag): Use the new write_naming_typedef 21398 function. 21399 * tests/data/test-read-dwarf/libtest23.so.abi: Adjust. 21400 * tests/data/test-read-dwarf/libtest24-drop-fns-2.so.abi: 21401 Likewise. 21402 * tests/data/test-read-dwarf/libtest24-drop-fns.so.abi: Likewise. 21403 * tests/data/test-read-dwarf/test10-pr18818-gcc.so.abi: Likewise. 21404 * tests/data/test-read-dwarf/test11-pr18828.so.abi: Likewise. 21405 * tests/data/test-read-dwarf/test12-pr18844.so.abi: Likewise. 21406 * tests/data/test-read-dwarf/test13-pr18894.so.abi: Likewise. 21407 * tests/data/test-read-dwarf/test14-pr18893.so.abi: Likewise. 21408 * tests/data/test-read-dwarf/test15-pr18892.so.abi: Likewise. 21409 * tests/data/test-read-dwarf/test16-pr18904.so.abi: Likewise. 21410 * tests/data/test-read-dwarf/test21-pr19092.so.abi: Likewise. 21411 * tests/data/test-read-dwarf/test22-pr19097-libstdc++.so.6.0.17.so.abi: 21412 Likewise. 21413 * tests/data/test-read-dwarf/test9-pr18818-clang.so.abi: Likewise. 21414 214152016-11-02 Dodji Seketeli <dodji@redhat.com> 21416 21417 Implement de-duplication for types and decls at DWARF loading time 21418 * include/abg-ir.h (method_type::priv_): Introduce new pimpl 21419 pointer here. 21420 (method_type::class_type_): Move this into the pimpl idiom. 21421 (method_type::method_type): Take a new is_const flag. 21422 (method_type::get_class_type): Make this method out-of-line. 21423 (method_type::{s,g}et_is_const): Declare new member functions. 21424 (get_method_type_name): Declare this function as a friend of 21425 the method_type type. 21426 * src/abg-dwarf-reader.cc: Include the new abg-ir-priv.h and 21427 abg-corpus-priv.h. 21428 (typedef die_tu_map_type): Fix comment. 21429 (typedef die_istring_map_type): New typedef. 21430 (class read_context::die_source_dependant_container_set): New 21431 class template. 21432 (read_context::{die_qualified_name_maps_, die_pretty_repr_maps_, 21433 die_pretty_type_repr_maps_}): Define new data members. 21434 (read_context::{get_die_qualified_name, get_die_qualified_name, 21435 get_die_qualified_type_name, get_die_pretty_type_representation, 21436 get_die_pretty_representation, lookup_type_artifact_from_die, 21437 lookup_artifact_from_die, lookup_artifact_from_die_representation, 21438 associate_die_to_artifact_by_repr, 21439 associate_die_to_artifact_by_repr_internal, 21440 lookup_type_from_die}): Define new member functions. 21441 (read_context::lookup_type_from_die_offset): Fix comment. 21442 (get_parent_die, get_scope_die, die_is_decl) 21443 (die_is_namespace, die_is_unspecified, die_is_void_type) 21444 (die_is_pointer_type, die_is_reference_type) 21445 (die_is_pointer_or_reference_type, die_is_class_type) 21446 (die_has_object_pointer, die_this_pointer_from_object_pointer) 21447 (die_this_pointer_is_const, is_decl_tag) 21448 (die_object_pointer_is_for_const_method, die_is_at_class_scope) 21449 (die_name, die_qualified_type_name, die_qualified_decl_name) 21450 (die_qualified_name, die_qualified_type_name_empty) 21451 (die_return_and_parm_names_from_fn_type_die) 21452 (die_function_signature, die_peel_qual_ptr) 21453 (die_function_type_is_method_type, die_pretty_print_type) 21454 (die_pretty_print_decl, die_pretty_print) 21455 (build_subranges_from_array_type_die) 21456 (build_or_get_fn_decl_if_not_suppressed) 21457 (lookup_class_or_typedef_type) 21458 (lookup_class_typedef_or_enum_type_from_corpus) 21459 (is_function_for_die_a_member_of_class) 21460 (add_or_update_member_function): Define new static functions. 21461 (read_context::associate_die_to_decl): Call 21462 associate_die_to_artifact_by_repr. 21463 (read_context::{associate_die_to_type, 21464 schedule_type_for_late_canonicalization}): Take just one "die" 21465 parameter rather than taking a die offset and a die source; adjust 21466 accordingly. 21467 (maybe_canonicalize_type): Likewise. 21468 (finish_member_function_reading): Take a const reference to 21469 function_decl_sptr. 21470 (die_loc_and_name): Use the new die_name function. 21471 (die_is_type): Rename is_type_die into this. 21472 (build_type_decl): Take a new "where_offset" parameter. Adjust. 21473 If a type of the same name as the one for the current DIE is is 21474 already present, do not create a new type; just return the 21475 already-existing one. 21476 (build_enum_type): Take a new "where_offset" parameter. Adjust. 21477 (finish_member_function_reading): Pass two smart pointers by const 21478 reference. Assert that the type of the member function is a 21479 method_type. Some light cleanups. 21480 (add_or_update_class_type): Rename build_class_type_and_add_to_ir. 21481 If a DIE defining the same class has already been seen, then 21482 return that class; don't construct any other internal 21483 representation for the same class. Better handle the updating of 21484 member data and functions. Do not duplicate member types. 21485 (build_qualified_type, build_pointer_type_def) 21486 (build_reference_type): Support de-duplication here. 21487 (build_function_type): Likewise. Support detection and building 21488 of method type. This also supports *const* method type building. 21489 (build_array_type): Use the new 21490 build_subranges_from_array_type_die. 21491 (build_type_decl): Cleanup logic. 21492 (build_or_get_var_decl_if_not_suppressed): Renamed 21493 build_var_decl_if_not_suppressed into this. Perform 21494 de-duplication for data members. 21495 (build_function_decl): Don't set an empty source location. If the 21496 function type cannot be constructed, do not construct the function 21497 decl either. Adjust. 21498 (build_ir_node_from_die): Adjust. When building a function for a 21499 DW_TAG_subroutine_type DIE, use the new 21500 build_or_get_fn_decl_if_not_suppressed. 21501 * src/abg-ir.cc (translation_unit::bind_function_type_life_time): 21502 Fix comment. 21503 (strip_typedef): Adjust. 21504 (qualified_type_def::build_name): Set the prefix name of a the 21505 name of a noop qualifier to "noop-qual", just like what is done in 21506 the new die_qualified_name function. 21507 (struct method_type::priv): New priv type for the method_type 21508 class. 21509 (method_type::method_type): Take a new 'is_const' parameter. 21510 Adjust as the method_type is now pimpl'ed. 21511 (method_type::{get_class_type, set_is_const, get_is_const}): 21512 Define new member functions. 21513 (function_decl::get_pretty_representation_of_declarator): Better 21514 detecter of const-ness. 21515 (class_decl::insert_member_decl): Better setting of the 21516 const-ness. 21517 (class_decl::method_decl::method_decl): Adjust. Deduce the 21518 const-ness of the method_decl from the const-ness of its 21519 method_type. 21520 (copy_member_function): Adjust. 21521 (set_member_is_static): Do not assume a non-nil scope anymore 21522 because member_decl can now be scope-less, at least for a little 21523 while. 21524 * src/abg-reader.cc (push_decl_to_current_scope): Adjust. 21525 (build_function_decl): Style adjustment. Adjust for method_type 21526 const-ness changes. 21527 (build_function_type): Likewise. Also, support the new 21528 "method-class-id" property that flags a function type as being a 21529 method type. 21530 * src/abg-writer.cc (write_function_decl): Style fixes. 21531 (write_function_type): Likewise. Emit a new "method-class-id" 21532 property for function type that is actually a method type. That 21533 property's value is the id of the class of the method type. 21534 * tests/data/test-diff-dwarf-abixml/test0-pr19026-libvtkIOSQL-6.1.so.1.abi: Adjust. 21535 * tests/data/test-diff-dwarf/test0-report.txt: Adjust. 21536 * tests/data/test-diff-filter/test0-report.txt: Adjust. 21537 * tests/data/test-diff-filter/test01-report.txt: Adjust. 21538 * tests/data/test-diff-filter/test30-pr18904-rvalueref-report0.txt: Adjust. 21539 * tests/data/test-diff-filter/test30-pr18904-rvalueref-report1.txt: Adjust. 21540 * tests/data/test-diff-filter/test31-pr18535-libstdc++-report-0.txt: Adjust. 21541 * tests/data/test-diff-filter/test31-pr18535-libstdc++-report-1.txt: Adjust. 21542 * tests/data/test-diff-pkg/libICE-1.0.6-1.el6.x86_64.rpm--libICE-1.0.9-2.el7.x86_64.rpm-report-0.txt: Adjust. 21543 * tests/data/test-diff-pkg/libsigc++-2.0-0c2a_2.4.0-1_amd64--libsigc++-2.0-0v5_2.4.1-1ubuntu2_amd64-report-0.txt: Adjust. 21544 * tests/data/test-diff-pkg/tbb-4.1-9.20130314.fc22.x86_64--tbb-4.3-3.20141204.fc23.x86_64-report-0.txt: Adjust. 21545 * tests/data/test-diff-pkg/tbb-4.1-9.20130314.fc22.x86_64--tbb-4.3-3.20141204.fc23.x86_64-report-1.txt: Adjust. 21546 * tests/data/test-read-dwarf/libtest23.so.abi: Adjust. 21547 * tests/data/test-read-dwarf/libtest24-drop-fns-2.so.abi: Adjust. 21548 * tests/data/test-read-dwarf/libtest24-drop-fns.so.abi: Adjust. 21549 * tests/data/test-read-dwarf/test10-pr18818-gcc.so.abi: Adjust. 21550 * tests/data/test-read-dwarf/test11-pr18828.so.abi: Adjust. 21551 * tests/data/test-read-dwarf/test12-pr18844.so.abi: Adjust. 21552 * tests/data/test-read-dwarf/test13-pr18894.so.abi: Adjust. 21553 * tests/data/test-read-dwarf/test14-pr18893.so.abi: Adjust. 21554 * tests/data/test-read-dwarf/test15-pr18892.so.abi: Adjust. 21555 * tests/data/test-read-dwarf/test16-pr18904.so.abi: Adjust. 21556 * tests/data/test-read-dwarf/test17-pr19027.so.abi: Adjust. 21557 * tests/data/test-read-dwarf/test18-pr19037-libvtkRenderingLIC-6.1.so.abi: Adjust. 21558 * tests/data/test-read-dwarf/test19-pr19023-libtcmalloc_and_profiler.so.abi: Adjust. 21559 * tests/data/test-read-dwarf/test20-pr19025-libvtkParallelCore-6.1.so.abi: Adjust. 21560 * tests/data/test-read-dwarf/test21-pr19092.so.abi: Adjust. 21561 * tests/data/test-read-dwarf/test22-pr19097-libstdc++.so.6.0.17.so.abi: Adjust. 21562 * tests/data/test-read-dwarf/test8-qualified-this-pointer.so.abi: Adjust. 21563 * tests/data/test-read-dwarf/test9-pr18818-clang.so.abi: Adjust. 21564 215652016-11-01 Dodji Seketeli <dodji@redhat.com> 21566 21567 Setup per-corpus type maps indexed by type names 21568 * include/abg-corpus.h (corpus::priv_): Make this public so that 21569 functions from outside of the class can access it. These 21570 functions are meant to be used only by code that is *inside* 21571 libabigail.so, though. 21572 * src/abg-corpus-priv.h: New file. 21573 * src/abg-corpus.cc: Include the new abg-corpus-priv.h file. 21574 (struct regex_t_deleter): Move this to abg-sptr-utils.h. 21575 (build_sptr<regex_t>): Move the declaration of this function 21576 template specialization to abg-sptr-utils.h and its definition to 21577 abg-sptr-utils.cc. 21578 (typedef regex_t_sptrs_type, typedef str_var_ptr_map_type) 21579 (struct corpus::exported_decls_builder::priv, struct 21580 corpus::priv): Move these declarations to the new 21581 abg-corpus-priv.h. 21582 (maybe_update_types_lookup_map): Define overloads of this (one per 21583 kind of type). 21584 (lookup_{basic, class, enum, typedef, class_or_typedef, 21585 class_typedef_or_enum, qualified, pointer, reference, array, 21586 function}_type): Define new functions. 21587 * include/abg-ir.h (typedef istring_type_base_wptr_map_type) 21588 (typedef istring_type_or_decl_base_sptr_map_type): Declare new 21589 typedefs. 21590 (class_decl::find_member_function_from_signature): Declare new 21591 member function. 21592 * src/abg-ir.cc: Include the new abg-corpus-priv.h file. 21593 (maybe_update_types_lookup_map): Remove this initial function. 21594 There are now new overloads in abg-corpus.cc for it. 21595 (scope_decl::{add_member_decl, insert_member_decl}): Adjust. 21596 (class_decl::{set_is_declaration_only, find_member_function, 21597 add_member_function}): Adjust. 21598 (class_decl::find_member_function_from_signature): Define new 21599 member function. 21600 * include/abg-sptr-utils.h (struct regex_t_deleter): Declare new 21601 type. 21602 (build_sptr<regex_t>): New build function template 21603 specializations. 21604 * src/abg-sptr-utils.cc: New file. 21605 * src/Makefile.am: Add src/abg-sptr-utils.cc and 21606 src/abg-corpus-priv.h to the build system. 21607 216082016-11-01 Dodji Seketeli <dodji@redhat.com> 21609 21610 Allow pretty printing function decls for internal purposes 21611 * include/abg-ir.h 21612 (function_decl::get_pretty_representation_of_declarator): Take an 21613 "internal" flag. 21614 * src/abg-ir.cc 21615 (function_decl::get_pretty_representation_of_declarator): Take an 21616 "internal" flag. 21617 (function_decl::get_pretty_representation): Pass the "internal" 21618 flag to the function 21619 function_decl::get_pretty_representation_of_declarator. 21620 (function_decl::parameter::get_type_name): Better handle variadic 21621 parameter type. 21622 (function_decl::parameter::get_type_pretty_representation): 21623 Likewise. 21624 216252016-11-26 Dodji Seketeli <dodji@redhat.com> 21626 21627 Make bash completion files non-executable 21628 * bash-completion/abicompat: Make this be non-executable. 21629 * bash-completion/abidiff: Likewise. 21630 * bash-completion/abidw: Likewise. 21631 * bash-completion/abilint: Likewise. 21632 * bash-completion/abinilint: Likewise. 21633 * bash-completion/abipkgdiff: Likewise. 21634 * bash-completion/abisym: Likewise. 21635 * bash-completion/fedabipkgdiff: Likewise. 21636 216372016-11-26 Dodji Seketeli <dodji@redhat.com> 21638 21639 A suppressed diff node implies suppressing all equivalent nodes too 21640 *class of equivalence* is visited once. This is not only a way to 21641 prevent infinite loops while visiting the graph, but also an 21642 optimization as it avoids walking two equivalent diff nodes. 21643 But then it can happen that we forget to categorize some diff nodes 21644 inside a given class of equivalence, even though we categorized some 21645 others. 21646 This patch makes it so that when a diff node inside a class of 21647 equivalence is categorized as SUPPRESSED, the canonical diff node of 21648 that class of equivalence is categorized as SUPPRESSED too. That way, 21649 to know if a diff node is suppressed, we just need to look at its 21650 canonical diff node. 21651 While doing this, I noticed that abidiff and abipkgdiff are not 21652 dropping private types from libabigail's internal representation, even 21653 though the Library now has that capability. The patch fixes that. 21654 But then the patch adds a --dont-drop-private-types option to abidiff 21655 to avoid dropping those private types from the IR, so that regression 21656 tests can make sure that a suppressed diff node implies suppression 21657 all equivalent nodes too. 21658 * doc/manuals/abidiff.rst b/doc/manuals/abidiff.rst: Document the 21659 new --dont-drop-private-types option. 21660 * src/abg-comparison.cc (diff::is_filtered_out): If the canonical 21661 type was suppressed then the current diff node is filtered out. 21662 (suppression_categorization_visitor::visit_{begin,end}): 21663 Categorized the canonical node as SUPPRESSED if the current node 21664 is suppressed. 21665 * tools/abidiff.cc (options::drop_private_types): New data member. 21666 (options::options): Initialize it. 21667 (display_usage): Add new help string for the new 21668 --dont-drop-private-types option. 21669 (parse_command_line): Parse the new --dont-drop-private-types 21670 option. 21671 (set_suppressions): Generate suppression specification from header 21672 directories given in parameter and stick them to the read context. 21673 * tools/abipkgdiff.cc (compare): Likewise. 21674 * tests/data/test-diff-suppr/libtest34-v0.so: New test input. 21675 * tests/data/test-diff-suppr/libtest34-v1.so: Likewise. 21676 * tests/data/test-diff-suppr/test34-report-0.txt: New reference 21677 report. 21678 * tests/data/test-diff-suppr/test34-v0.c: Source code for the new 21679 test input. 21680 * tests/data/test-diff-suppr/test34-v1.c: Likewise. 21681 * tests/data/test-diff-suppr/test34-priv-include-dir-v0/test34-priv-include-v0.h: 21682 Likewise. 21683 * tests/data/test-diff-suppr/test34-priv-include-dir-v1/test34-priv-include-v1.h: 21684 Likewise. 21685 * tests/data/test-diff-suppr/test34-pub-include-dir-v0/test34-pub-include-v0.h: 21686 Likewise. 21687 * tests/data/test-diff-suppr/test34-pub-include-dir-v1/test34-pub-include-v1.h: 21688 Likewise. 21689 * tests/data/Makefile.am: Add new test input material above to 21690 source distribution. 21691 * tests/test-diff-suppr.cc (in_out_spec): Compare the two new test 21692 library provided. Add --dont-drop-private-types to test30*. 21693 signed-off-by: Dodji Seketeli <dodji@redhat.com> 21694 216952016-11-26 Dodji Seketeli <dodji@redhat.com> 21696 21697 Forgot to consider libtest33-v{0,1}.so in test-diff-suppr.cc 21698 * tests/data/test-diff-suppr/test33-report-0.txt: New refernce report. 21699 * tests/test-diff-suppr.cc (in_out_specs): Compare libtest33-v0.so 21700 and libtest33-v1.so. 21701 217022016-11-24 Dodji Seketeli <dodji@redhat.com> 21703 21704 Bump version number to 1.0.rc7 21705 * configure.ac: 21706 217072016-11-24 Dodji Seketeli <dodji@redhat.com> 21708 21709 Update website for 1.0.rc6 21710 * doc/website/mainpage.txt: Update for 1.0.rc6 release 21711 217122016-11-23 Dodji Seketeli <dodji@redhat.com> 21713 21714 Update NEWS and ChangeLog for 1.0.rc6 21715 * ChangeLog: Update this automatically using "make 21716 update-changelog". 21717 * NEWS: update this by editing the output of 'git shortlog 21718 libabigail-1.0.rc5..HEAD'. 21719 217202016-11-24 Dodji Seketeli <dodji@redhat.com> 21721 21722 Avoid using size_t to get DWARF data 21723 * src/abg-dwarf-reader.cc (die_size_in_bits, die_location_expr): 21724 Take uint64_t rather than size_t and adjust. 21725 (expr_result::const_value_): Make this be int64_t rather than 21726 ssize_t. 21727 (expr_result::expr_result): Take int64_t rather than ssize_t. 21728 (expr_result::const_value): Return int64_t rather than ssize_t. 21729 (expr_result::{operator(), operator=, operator+=}): Make these 21730 operators return or take int64_t. 21731 too. 21732 (op_pushes_constant_value, op_manipulates_stack) 21733 (op_is_arith_logic, op_is_control_flow) 21734 (eval_last_constant_dwarf_sub_expr, die_member_offset) 21735 (die_virtual_function_index): Take 21736 uint64_t rather than size_t, or int64_t rather than ssize_t. 21737 (finish_member_function_reading, build_class_type_and_add_to_ir) 21738 (build_union_type_and_add_to_ir): Adjust. 21739 217402016-11-24 Dodji Seketeli <dodji@redhat.com> 21741 21742 Fix a compiler warning issued by GCC 6.2.1 21743 * src/abg-dwarf-reader.cc (find_import_unit_point_between_dies): 21744 Parameter 5 of find_import_unit_point_between_dies is not of type 21745 Dwarf_Off. 21746 217472016-11-24 Dodji Seketeli <dodji@redhat.com> 21748 21749 Fix offset type mismatch 21750 * src/abg-dwarf-reader.cc (die_member_offset): The last two 21751 parameters of die_unsigned_constant_attribute must be of type 21752 uint64_t. 21753 217542016-11-24 Dodji Seketeli <dodji@redhat.com> 21755 21756 Fix indentation in abg-writer.cc 21757 * src/abg-writer.cc (write_union_decl_opening_tag): Fix 21758 indentation. 21759 217602016-11-23 Dodji Seketeli <dodji@redhat.com> 21761 21762 Support reading data member offset from DW_AT_bit_offset 21763 * src/abg-dwarf-reader.cc (die_member_offset): Better comments. 21764 Support reading the bit offset also from the DW_AT_bit_offset 21765 attribute when it's present. Make sure this always returns a 21766 value in bits. 21767 (build_class_type_and_add_to_ir): No need to multiply (by 8) the 21768 value returned by die_member_offset anymore because it's now in 21769 bits directly. 21770 * tests/data/test-diff-filter/test30-pr18904-rvalueref-report0.txt: Adjust. 21771 * tests/data/test-diff-filter/test30-pr18904-rvalueref-report1.txt: Adjust. 21772 * tests/data/test-read-dwarf/test1.abi: Adjust. 21773 * tests/data/test-read-dwarf/test11-pr18828.so.abi: Adjust. 21774 * tests/data/test-read-dwarf/test12-pr18844.so.abi: Adjust. 21775 * tests/data/test-read-dwarf/test13-pr18894.so.abi: Adjust. 21776 * tests/data/test-read-dwarf/test14-pr18893.so.abi: Adjust. 21777 * tests/data/test-read-dwarf/test15-pr18892.so.abi: Adjust. 21778 * tests/data/test-read-dwarf/test16-pr18904.so.abi: Adjust. 21779 * tests/data/test-read-dwarf/test17-pr19027.so.abi: Adjust. 21780 * tests/data/test-read-dwarf/test19-pr19023-libtcmalloc_and_profiler.so.abi: 21781 Adjust. 21782 * tests/data/test-read-dwarf/test21-pr19092.so.abi: Adjust. 21783 * tests/data/test-read-dwarf/test22-pr19097-libstdc++.so.6.0.17.so.abi: 21784 Adjust. 21785 217862016-11-23 Dodji Seketeli <dodji@redhat.com> 21787 21788 Lexicographically sort union data members in change reports 21789 * src/abg-comparison.cc (data_member_comp::operator()): Data 21790 members with the same offset are sorted lexicographically, by 21791 taking their name into account. 21792 * tests/data/test-diff-filter/test30-pr18904-rvalueref-report0.txt: 21793 Adjust. 21794 * tests/data/test-diff-filter/test30-pr18904-rvalueref-report1.txt: 21795 Likewise. 21796 217972016-11-23 Dodji Seketeli <dodji@redhat.com> 21798 21799 Better diagnostics when wget is missing 21800 * configure.ac: When wget is missing then make the disabling of 21801 the building of the fedabipkgdiff tool show up in the 21802 configuration summary and emit a notice. 21803 218042016-11-15 Dodji Seketeli <dodji@redhat.com> 21805 21806 Support union types 21807 * include/abg-fwd.h (class_or_union, union_decl): Forward-declare 21808 new types. 21809 (is_class_or_union_type, is_union_type): Declare new functions. 21810 * include/abg-ir.h (method_type::class_type_): Make this be of 21811 class_or_union_wptr type. 21812 (method_type::method_type): Make the class_type parameter be of 21813 class_or_union_wptr type. 21814 (method_type::{g,s}et_class_type): Take or return a 21815 class_or_union_sptr. 21816 (member_base, method_decl, member_function_template) 21817 (member_class_template, member_base::hash) 21818 (member_function_template::hash, member_class_template::hash): 21819 Take these class types out of the class_decl scope. 21820 (is_method_decl): Adjust. 21821 (operator==, opertor!=): Adjust overloads for 21822 member_function_template_sptr and member_class_template_sptr. 21823 (class class_or_union): Declare new type. 21824 (class class_decl): Make this class inherit class_or_union class. 21825 (class_decl::{add_member_decl, insert_member_decl, 21826 remove_member_decl, set_size_in_bits, get_size_in_bits, 21827 get_alignment_in_bits, set_alignment_in_bits, 21828 get_is_declaration_only, set_is_declaration_only, 21829 set_definition_of_declaration, get_definition_of_declaration, 21830 get_earlier_declaration, set_earlier_declaration, 21831 insert_member_type, add_member_type, remove_member_type, 21832 get_member_type, find_member_type, add_data_member, 21833 get_data_members, find_data_member, get_non_static_data_members, 21834 add_member_function, get_member_functions, find_member_function, 21835 add_member_function_template, get_member_function_templates, 21836 add_member_class_template, get_member_class_templates): Move these 21837 to the parent class class_or_union. 21838 (copy_member_function, equals): Add overloads for class_or_union. 21839 (struct class_or_union::hash): Declare new type. 21840 (class union_decl): Declare new type. 21841 (equals, copy_member_function): New overloads for class union_decl 21842 type. 21843 (ir_node_visitor::visit): Add new overloads for union_decl* and 21844 class_or_union*. 21845 * src/abg-ir.cc (get_member_function_is_ctor) 21846 (set_member_function_is_ctor, get_member_function_is_dtor) 21847 (set_member_function_is_dtor, get_member_function_is_const) 21848 (set_member_function_is_const, get_member_function_vtable_offset) 21849 (set_member_function_vtable_offset) 21850 (get_member_function_is_virtual, set_member_function_is_virtual) 21851 (maybe_update_types_lookup_map, get_location) 21852 (get_method_type_name, is_at_global_scope, is_at_class_scope): 21853 Adjust. 21854 (is_class_or_union_type, is_union_type): Define new functions. 21855 (type_base::get_canonical_type_for, maybe_adjust_canonical_type) 21856 (method_type::method_type, method_type::set_class_type) 21857 (function_decl::get_pretty_representation) 21858 (function_decl::get_first_non_implicit_parm) 21859 (function_decl::clone): Adjust. 21860 (equals): Adjust the overload for function_type. 21861 (struct class_or_union::priv): Define new type. 21862 (class::priv::{declaration_, definition_of_declaration_, 21863 member_types_, data_members_, non_static_data_members_, 21864 member_functions_, mem_fns_map_, member_function_templates_, 21865 member_class_templates_, is_declaration_only_}): Move these data 21866 member into class_or_union::priv. 21867 (class_priv::{mark_as_being_compared, unmark_as_being_compared, 21868 comparison_started}): Moved these member functions to 21869 class_or_union::priv. 21870 (class_or_union::{class_or_union, traverse, ~class_or_union, 21871 add_member_decl, remove_member_decl, insert_member_type, 21872 add_member_type, get_size_in_bits, remove_member_type, 21873 get_alignment_in_bits, set_alignment_in_bits, set_size_in_bits, 21874 get_is_declaration_only, set_is_declaration_only, 21875 set_definition_of_declaration, get_definition_of_declaration, 21876 get_earlier_declaration, set_earlier_declaration, 21877 get_member_types, find_member_type, add_data_member, 21878 get_data_member, find_data_member, add_member_function, 21879 get_member_functions, find_member_function, 21880 add_member_function_template, get_member_function_templates, 21881 add_member_class_template, get_member_class_templates, 21882 has_no_member, insert_member_decl, operator==}): Define new member 21883 functions. 21884 (class_decl::{add_member_decl, remove_member_decl, 21885 insert_member_type, add_member_type, get_size_in_bits, 21886 remove_member_type, get_alignment_in_bits, set_alignment_in_bits, 21887 set_size_in_bits, get_is_declaration_only, 21888 set_is_declaration_only, set_definition_of_declaration, 21889 get_earlier_declaration, set_earlier_declaration, 21890 get_member_types, find_member_type, add_data_member, 21891 get_data_member, find_data_member, add_member_function, 21892 get_member_functions, find_member_function, 21893 add_member_function_template, get_member_function_templates, 21894 add_member_class_template, get_member_class_templates): Move these 21895 member functions into class_or_union. 21896 (class_decl::{class_decl, get_definition_of_declaration, 21897 insert_member_decl, add_member_function, has_no_base_nor_member}): 21898 Adjust. 21899 (equals, copy_member_function): Define new overloads for 21900 class_or_union. 21901 (equals): Adjust the overload for class_decl. 21902 (method_decl::{method_decl, set_linkage_name, ~method_decl, 21903 get_type, set_scope}): Remove from the class_decl scope. 21904 (member_base::operator==, member_function_template::operator==): 21905 Likewise. 21906 (member_function_template::traverse) 21907 (member_class_template::operator==) 21908 (member_class_template::traverse): Likewise. 21909 (operator==, operator!=): Adjust the overlod for 21910 member_function_template_sptr. 21911 (is_method_decl, fixup_virtual_member_function) 21912 (set_member_is_static): Adjust. 21913 (virtual_member_function_less_than::operator()): Likewise. 21914 (union_decl::{union_decl, get_pretty_representation, operator==, 21915 traverse}): Define new member functions. 21916 (equals, copy_member_function): Define new overloads for 21917 union_decl. 21918 (hash_type_or_decl): Adjust. 21919 (ir_node_visitor::visit_{begin, end}): Adjust. Add new overloads 21920 for class_or_union* and union_decl*. 21921 * include/abg-comparison.h (changed_member_function_sptr) 21922 (string_member_function_sptr_map): Adjust these typedefs. 21923 (class class_or_union_diff): Declare new type. 21924 (class_diff): Adjust to make this inherit the new 21925 class_or_union_diff type. 21926 (class_diff::{get_priv, member_types_changes, 21927 data_members_changes, inserted_data_members, deleted_data_members, 21928 member_fn_tmpls_changes, member_fn_tmpls_changes, 21929 member_class_tmpls_changes}): These member functions got moved 21930 into -- and shared with -- class_or_union_diff class. 21931 (class union_diff): Declare new type. 21932 (typedef union_diff_sptr): New typedef. 21933 (compute_diff): New overload for union_diff 21934 (is_class_diff, is_union_diff): Declare new functions. 21935 * src/abg-comparison.cc (is_class_diff, is_union_diff): Define new 21936 functions. 21937 (compute_diff_for_types): Support union_decl. 21938 (represent): Adjust. 21939 (represent_data_member): Do not show offset information for data 21940 members of unions as all union data members are at offset 0. 21941 (struct class_or_union_diff::priv): New type. 21942 (class_or_union_diff::priv::{member_type_has_changed, 21943 subtype_changed_dm, member_class_tmpl_has_changed, 21944 get_deleted_non_static_data_members_number, 21945 get_inserted_non_static_data_members_number, 21946 count_filtered_subtype_changed_dm, count_filtered_changed_dm, 21947 count_filtered_changed_mem_fns, count_filtered_inserted_mem_fns, 21948 count_filtered_deleted_mem_fns}): Define new member functions. 21949 (class_or_union_diff::{class_or_union_diff, finish_diff_type, 21950 lookup_tables_empty, lookup_tables_empty, 21951 ensure_lookup_tables_populated, allocate_priv_data, get_priv, 21952 ~class_or_union_diff, first_class_or_union, second_class_or_union, 21953 member_types_changes, member_types_changes, data_members_changes, 21954 inserted_data_members, deleted_data_members, member_fns_changes, 21955 changed_member_fns, member_fns_changes, inserted_member_fns, 21956 member_fn_tmpls_changes, member_fn_tmpls_changes, 21957 member_class_tmpls_changes, member_class_tmpls_changes, 21958 has_changes, has_local_changes, report, chain_into_hierarchy}): 21959 Define new member functions. 21960 (class_diff::priv::{member_types_changes_, data_members_changes, 21961 member_fn_tmpls_changes_, member_class_tmpls_changes_, 21962 deleted_member_types_, inserted_member_types_, 21963 changed_member_types_, sorted_changed_member_types_, 21964 deleted_data_members_, deleted_dm_by_offset_, 21965 inserted_data_members_, inserted_dm_by_offset_, 21966 subtype_changed_dm_, sorted_subtype_changed_dm_, changed_dm_, 21967 sorted_changed_dm_, deleted_member_functions_, 21968 inserted_member_functions_, changed_member_functions_, 21969 sorted_changed_member_functions_, deleted_member_class_tmpls_, 21970 inserted_member_class_tmpls_, changed_member_class_tmpls_, 21971 sorted_changed_member_class_tmpls_}): Move these data members into 21972 class_or_union_diff::priv. 21973 (class_diff::{clear_lookup_tables, lookup_tables_empty, 21974 ensure_lookup_tables_populate}): Adjust. 21975 (class_diff::allocate_priv_data): Define new function. 21976 (class_diff::priv::{count_filtered_changed_mem_fns, 21977 count_filtered_inserted_mem_fns, count_filtered_deleted_mem_fns, 21978 chain_into_hierarchy, class_diff}): Likewise. 21979 (class_diff::{member_types_changes, data_members_changes, 21980 inserted_data_members, deleted_data_members, 21981 member_fn_tmpls_changes, member_fn_tmpls_changes, 21982 member_class_tmpls_changes}): These are deleted as they got moved 21983 to class_or_union_diff. 21984 (class_diff::report): Adjust. 21985 (union_diff::{clear_lookup_tables, lookup_tables_empty, 21986 ensure_lookup_tables_populated, allocate_priv_data, union_diff, 21987 finish_diff_type, first_union_decl, second_union_decl, 21988 get_pretty_representation, report}): Define new functions. 21989 (compute_diff): Define an overload for union_decl_sptr. 21990 (function_decl_diff::report): Adjust. 21991 (corpus_diff::priv::apply_suppressions_to_added_removed_fns_vars): 21992 Adjust. 21993 (corpus_diff::report): Adjust. 21994 * src/abg-hash.cc (member_base::hash::operator) 21995 (member_function_template::hash::operator) 21996 (member_class_template::hash::operator): Move these out of the 21997 class_decl scope. 21998 (class_or_union::hash::operator): Define new member function. 21999 (class_decl::hash::operator): Adjust. 22000 (type_base::dynamic_hash::operator): Support hashing of 22001 union_decl. Adjust. 22002 * src/abg-suppression.cc (type_suppression::suppresses_diff): 22003 Adjust. 22004 * src/abg-dwarf-reader.cc (typedef die_class_or_union_map_type): 22005 Define new typedef. 22006 (read_context::{die_wip_classes_map_, 22007 alternate_die_wip_classes_map_, type_unit_die_wip_classes_map_): 22008 Make these data member have type die_class_or_union_map_type. 22009 (read_context::{lookup_type_from_die_offset, die_wip_classes_map, 22010 is_wip_class_die_offset, resolve_declaration_only_classes}): 22011 Adjust. 22012 (finish_member_function_reading, build_class_type_and_add_to_ir) 22013 (build_function_type, build_function_decl, build_reference_type) 22014 (type_is_suppressed, build_function_decl) 22015 (maybe_canonicalize_type, maybe_set_member_type_access_specifier): 22016 Adjust. 22017 (build_union_type_and_add_to_ir): Define new static function. 22018 (build_ir_node_from_die): Support DW_TAG_union_type DIE tag. 22019 * src/abg-reader.cc (handle_element_node): Handle union_decl. 22020 (build_function_decl, build_function_decl_if_not_suppressed): 22021 Adjust. 22022 (build_union_decl_if_not_suppressed, build_union_decl) 22023 (handle_union_decl): Define new functions. 22024 (build_class_decl): Adjust. 22025 * src/abg-writer.cc (record_decl_only_type_as_emitted): Adjust. 22026 (write_decl): Adjust. Support writting union_decl type. 22027 p (write_class_decl_opening_tag, write_class_decl): Adjust. Call 22028 the new write_class_or_union_is_declaration_only. 22029 (write_union_decl_opening_tag, write_union_decl): Define new 22030 static functions. 22031 (write_member_tpe): Support writting union decl. 22032 * tests/test-diff-dwarf.cc (in_out_specs): Add new tests for this 22033 union type support. 22034 * tests/data/test-diff-dwarf/libtest37-union-v0.so: New test input. 22035 * tests/data/test-diff-dwarf/libtest37-union-v1.so: Likewise. 22036 * tests/data/test-diff-dwarf/libtest38-union-v0.so: Likewise. 22037 * tests/data/test-diff-dwarf/libtest38-union-v1.so: Likewise. 22038 * tests/data/test-diff-dwarf/libtest39-union-v0.so: Likewise. 22039 * tests/data/test-diff-dwarf/libtest39-union-v1.so: Likewise. 22040 * tests/data/test-diff-dwarf/test37-union-report-0.txt: Likewise. 22041 * tests/data/test-diff-dwarf/test38-union-report-0.txt: Likewise. 22042 * tests/data/test-diff-dwarf/test39-union-report-0.txt: Likewise. 22043 * tests/data/test-diff-dwarf/test37-union-v0.cc: Source code for 22044 new test input. 22045 * tests/data/test-diff-dwarf/test37-union-v1.cc: Likewise. 22046 * tests/data/test-diff-dwarf/test38-union-v0.cc: Likewise. 22047 * tests/data/test-diff-dwarf/test38-union-v1.cc: Likewise. 22048 * tests/data/test-diff-dwarf/test39-union-v0.cc: Likewise. 22049 * tests/data/test-diff-dwarf/test39-union-v1.cc: Likewise. 22050 * tests/data/test-diff-dwarf-abixml/test0-pr19026-libvtkIOSQL-6.1.so.1.abi: 22051 Update test reference. 22052 * tests/data/test-diff-filter/test30-pr18904-rvalueref-report0.txt: 22053 Likewise. 22054 * tests/data/test-diff-filter/test30-pr18904-rvalueref-report1.txt: 22055 Likewise. 22056 * tests/data/test-read-dwarf/libtest23.so.abi: Likewise. 22057 * tests/data/test-read-dwarf/libtest24-drop-fns-2.so.abi: 22058 Likewise. 22059 * tests/data/test-read-dwarf/libtest24-drop-fns.so.abi: Likewise. 22060 * tests/data/test-read-dwarf/test10-pr18818-gcc.so.abi: Likewise. 22061 * tests/data/test-read-dwarf/test11-pr18828.so.abi: Likewise. 22062 * tests/data/test-read-dwarf/test12-pr18844.so.abi: Likewise. 22063 * tests/data/test-read-dwarf/test13-pr18894.so.abi: Likewise. 22064 * tests/data/test-read-dwarf/test14-pr18893.so.abi: Likewise. 22065 * tests/data/test-read-dwarf/test15-pr18892.so.abi: Likewise. 22066 * tests/data/test-read-dwarf/test16-pr18904.so.abi: Likewise. 22067 * tests/data/test-read-dwarf/test17-pr19027.so.abi: Likewise. 22068 * tests/data/test-read-dwarf/test18-pr19037-libvtkRenderingLIC-6.1.so.abi: 22069 Likewise. 22070 * tests/data/test-read-dwarf/test19-pr19023-libtcmalloc_and_profiler.so.abi: 22071 Likewise. 22072 * tests/data/test-read-dwarf/test20-pr19025-libvtkParallelCore-6.1.so.abi: 22073 Likewise. 22074 * tests/data/test-read-dwarf/test21-pr19092.so.abi: Likewise. 22075 * tests/data/test-read-dwarf/test22-pr19097-libstdc++.so.6.0.17.so.abi: 22076 Likewise. 22077 * tests/data/test-read-dwarf/test9-pr18818-clang.so.abi: 22078 Likewise. 22079 220802016-11-10 Dodji Seketeli <dodji@redhat.com> 22081 22082 Support empty properties in INI files 22083 * include/abg-ini.h (simple_property::simple_property): Add a new 22084 constructor for empty values. 22085 (simple_property::has_empty_value): Declare new member function. 22086 * src/abg-ini.cc (simple_property::{simple_property, 22087 has_empty_value}): Define new member functions. 22088 (read_context::read_property): Support reading a property with no 22089 value. 22090 (write_property_value, write_property): Support writting a 22091 property with empty value. 22092 220932016-11-10 Dodji Seketeli <dodji@redhat.com> 22094 22095 Rename config::property_vector into config::properties_type 22096 * include/abg-ini.h (config::properties_type): Rename the typedef 22097 config::property_vector into this. 22098 (config::section::{section, get_properties, set_properties}): 22099 Adjust. 22100 * src/abg-ini.cc (config::section::priv::properties_): Adjust the 22101 name of its type. 22102 (config::section::{section, get_properties, set_properties, 22103 find_property}): Adjust. 22104 (write_section): Adjust. 22105 * src/abg-suppression.cc (read_function_suppression): Adjust. 22106 221072016-11-09 Dodji Seketeli <dodji@redhat.com> 22108 22109 Apply harmless and harmful filters in one pass 22110 * include/abg-comp-filter.h (class harmless_harmful_filter): 22111 Decalre new class. 22112 (typedef harmless_harmful_filter_sptr): Declare new typedef. 22113 (class harmless_filter, class harmful_filter): Remove these class 22114 declarations. 22115 (typedef harmful_filter_sptr, harmless_filter_sptr): Remove these 22116 typedefs. 22117 * src/abg-comp-filter.cc (categorize_harmless_diff_node) 22118 (categorize_harmful_diff_node): Define new static functions. 22119 ({harmless, harmful}_filter::{visit, visit_end}): Remove these 22120 member functions. 22121 (harmless_harmful_filter::{visit, visit_end}): Define new member 22122 functions. 22123 * src/abg-comparison.cc (diff_context::diff_context): Register the 22124 new harmless_harmful_filter, and remove the premier 22125 harmless_filter and harmful_filter. 22126 # Please enter the commit message for your changes. Lines starting 22127 # with '#' will be ignored, and an empty message aborts the 22128 commit. # On branch kabidiff-dedup # Changes to be committed: # 22129 (use "git reset HEAD <file>..." to unstage) # # modified: 22130 include/abg-comp-filter.h # modified: src/abg-comp-filter.cc # 22131 modified: src/abg-comparison.cc # # Untracked files: # (use "git 22132 add <file>..." to include in what will be committed) # # diff.txt 22133 # prtests/ # tests/data/test-read-dwarf/libtest23.so.abi.conflict 22134 221352016-11-08 Dodji Seketeli <dodji@redhat.com> 22136 22137 Avoid stripping typedefs too much 22138 * src/abg-ir.cc (types_are_compatible) 22139 (is_compatible_with_class_type): Do not strip typedefs. Just get 22140 their leaf types. 22141 221422016-11-08 Dodji Seketeli <dodji@redhat.com> 22143 22144 Misc style cleanups in abg-ir.cc 22145 * src/abg-ir.cc (equals): In overloads for function_type and 22146 class_decl, avoid returning a constant when we can return a 22147 variable like in the rest of the code. 22148 221492016-11-01 Dodji Seketeli <dodji@redhat.com> 22150 22151 Factorize out string representation of array_type_def::subrange_type 22152 * src/abg-ir.cc (array_type_def::subrange_type::{as_string, 22153 vector_as_string}): Define methods. 22154 (array_type_def::get_subrange_representation): Use the new 22155 vector_as_string method. 22156 221572016-11-01 Dodji Seketeli <dodji@redhat.com> 22158 22159 Factorize out parsing of integral types 22160 * src/abg-ir-priv.h: New file. 22161 * src/Makefile.am: Add abg-ir-priv.h to the build system. 22162 * src/abg-ir.cc: Include the new abg-ir-priv.h header file. 22163 (class_integral_type): Move this type 22164 declaration to the new abg-ir-priv.h header. 22165 (integral_type::modifiers_type): Make this non-static. 22166 (parse_integral_type): This new overload is a factorized out of 22167 ... 22168 (integral_type::integral_type): ... here. 22169 221702016-10-31 Dodji Seketeli <dodji@redhat.com> 22171 22172 Misc style fixes in abg-ir.cc 22173 * src/abg-ir.cc (get_function_type_name, 22174 get_pretty_representation): Misc style fixes. 22175 221762016-10-31 Dodji Seketeli <dodji@redhat.com> 22177 22178 Consider a method_decl as always being a member decl 22179 * src/abg-ir.cc (is_member_decl): Consider a method decl as always 22180 being a member decl. 22181 (is_member_function): Use is_member_decl. 22182 221832016-10-31 Dodji Seketeli <dodji@redhat.com> 22184 22185 Cleanup void and variadic parameter type interfaces 22186 * include/abg-ir.h (environment::{get_void_type, 22187 get_variadic_parameter_type}): Renamed get_void_type_decl and 22188 get_variadic_parameter_type_decl to these. 22189 (environment::is_void_type): Remove the overload that takes a bare 22190 pointer. 22191 (environment::is_variadic_parameter_type): Declare new member 22192 function. 22193 * src/abg-ir.cc (environment::void_type_): Renamed the data member 22194 void_type_decl_ into this. 22195 (environment::variadic_marker_type_): Renamed the data member 22196 variadic_marker_type_decl_ into this. 22197 (environment::{get_void_type, get_variadic_parameter_type}): 22198 Renamed get_void_type_decl and get_variadic_parameter_type_decl to 22199 these. 22200 (environment::is_void_type): Take a smart pointer now. 22201 (environment::is_variadic_parameter_type): Define new member 22202 function. 22203 (synthesize_function_type_from_translation_unit): Adjust. 22204 (function_decl::parameter::get_pretty_representation): Likewise. 22205 * src/abg-comparison.cc (is_diff_of_variadic_parameter_type): 22206 Adjust. 22207 * src/abg-dwarf-reader.cc (build_function_type) 22208 (build_ir_node_for_void_type): Likewise. 22209 * src/abg-reader.cc (build_function_parameter) 22210 (build_function_decl, build_function_type): Likewise. 22211 222122016-10-31 Dodji Seketeli <dodji@redhat.com> 22213 22214 Cleanup some entry points in abg-fwd.h 22215 * include/abg-fwd.h (add_decl_to_scope): Pass the scope smart 22216 pointer by reference. 22217 (is_member_type): pass the type smart pointer by reference. 22218 (is_function_decl, is_pointer_type, is_reference_type) 22219 (is_qualified_type, is_function_type, is_method_type) 22220 (is_array_type): Take a type_or_decl base pointer, rather than 22221 either a decl_base or type_base pointer. 22222 * include/abg-ir.h (translation_unit::set_corpus): Take a pointer 22223 to non-const corpus. 22224 (translation_unit::get_corpus): Add a non-const overload. 22225 (type_or_decl_base::get_corpus): Likewise. 22226 (type_or_decl_base::set_translation_unit): Take a pointer to 22227 non-corpus translation_unit. 22228 (type_or_decl_base::get_translation_unit): Add a non-const 22229 overload. 22230 (scope_decl::{add_member_decl, insert_member_decl}): Pass the 22231 member smart pointer by reference. 22232 (scope_decl::remove_member_decl): Take a non-const smart pointer. 22233 (class_decl::add_member_decl): Pass the decl smart pointer by 22234 reference. 22235 (is_method_decl): Take pointer or reference to type_or_decl_base 22236 rather than function_decl. 22237 * src/abg-ir.cc (translation_unit::priv::corpus): Make this a 22238 pointer to non-const corpus. 22239 (translation_unit::set_corpus): Take a pointer to non-const 22240 corpus. 22241 (translation_unit::get_corpus): Add a non-const overload. 22242 (translation_unit::get_global_scope): Adjust. 22243 (translation_unit::bind_function_type_life_time): Adjust. 22244 (type_or_decl_base::translation_unit): Make this a pointer to 22245 non-const translation_unit. 22246 (type_or_decl_base::get_corpus): Likewise. 22247 (type_or_decl_base::set_translation_unit): Take a pointer to 22248 non-corpus translation_unit. 22249 (type_or_decl_base::get_translation_unit): Add a non-const 22250 overload. 22251 (is_member_type): pass the type smart pointer by reference. 22252 (scope_decl::{add_member_decl, insert_member_decl}): Take a 22253 reference to the member decl smart pointer. Adjust. 22254 (class_decl::add_member_decl): Likewise. 22255 (scope_decl::remove_member_decl): Take a non-const smart pointer. 22256 (add_decl_to_scope): Pass the scope smart pointer by reference. 22257 (is_decl, is_function_decl, is_pointer_type, is_reference_type) 22258 (is_qualified_type, is_function_type, is_method_type) 22259 (is_method_decl, is_array_type): Take a type_or_decl base pointer, 22260 rather than either a decl_base or type_base pointer. 22261 222622016-10-31 Dodji Seketeli <dodji@redhat.com> 22263 22264 Fix abigail::ir::get_type_scope() 22265 * src/abg-ir.cc (get_type_scope): Do not always return nil. 22266 222672016-10-27 Dodji Seketeli <dodji@redhat.com> 22268 22269 Bug 20740 Broken check for dwarf_getalt in configure.ac 22270 * configure.ac: Add missing spaces around the "=" of a conditional 22271 expression. 22272 222732016-10-11 Dodji Seketeli <dodji@redhat.com> 22274 22275 Canonicalize function types when reading from DWARF 22276 * src/abg-dwarf-reader.cc (build_function_decl): Canonicalize 22277 function types. 22278 222792016-10-11 Dodji Seketeli <dodji@redhat.com> 22280 22281 Misc cleanups here and there 22282 * src/abg-dwarf-reader.cc (canonicalize_types_scheduled): Fix 22283 identation. 22284 * src/abg-reader.cc (build_class_decl): Use class_decl_sptr rather 22285 than shared_ptr<class_decl>. 22286 * src/abg-writer.cc (write_class_is_declaration_only) 22287 (write_is_struct, write_decl, write_decl_in_scope) 22288 (write_type_decl, write_qualified_type_def) 22289 (write_pointer_type_def, write_reference_type_def) 22290 (write_array_type_def, write_enum_type_decl, write_typedef_decl) 22291 (write_elf_symbol, write_var_decl, write_function_decl) 22292 (write_member_type_opening_tag, write_member_type) 22293 (write_class_decl_opening_tag, write_class_decl): Cleanup 22294 parameters to use the right typedef, rather than the long 22295 shared_ptr<*> form. Pass the shared pointers by reference as 22296 well. 22297 222982016-10-10 Dodji Seketeli <dodji@redhat.com> 22299 22300 Cleanup namespace importing in abg-interned-str.h 22301 * include/abg-interned-str.h: Inject std::tr1::shared_ptr, 22302 std::string and std::ostream inside the abigail namespace. 22303 (interned_string::{interned_string, raw, operator==, operator!=, 22304 operator<): Adjust. 22305 (operator==, operator!=, operator<<, operator+): Adjust. 22306 223072016-10-07 Dodji Seketeli <dodji@redhat.com> 22308 22309 Cleanup functions to detect infinite comparison of class_decl 22310 * src/abg-ir.cc (class_decl::priv::unmark_as_being_compared): In 22311 the overload that takes a pointer to class_decl, re-use the 22312 overload that takes a reference. 22313 (class_decl::priv::comparison_started): Do not crash if the klass 22314 pointer is nil. 22315 (equals): In the overload for class_decl&, undef the RESULT macro 22316 when it's not used anymore. 22317 223182016-10-07 Dodji Seketeli <dodji@redhat.com> 22319 22320 Cleanup class_decl inifite comparison detection 22321 * src/abg-ir.cc (environment::priv::classes_being_compared_): Make 22322 this use the new interned_string_set_type type. 22323 (class_decl::priv::{mark_as_being_compared, comparison_started}): 22324 Adjust. 22325 223262016-10-10 Dodji Seketeli <dodji@redhat.com> 22327 22328 Apply ODR-based type comparison optimization to function types 22329 * src/abg-ir.cc (type_eligible_for_odr_based_comparison): 22330 Factorize this out of type_base::get_canonical_type_for. Also, 22331 add function types to the set of types to use the ODR-based 22332 comparison optimization on. 22333 (type_base::get_canonical_type_for): Use the new 22334 type_eligible_for_odr_based_comparison function. 22335 223362016-10-07 Dodji Seketeli <dodji@redhat.com> 22337 22338 Prevent infinite loops while comparing two function_type 22339 * include/abg-ir.h (class environment): Make class function_type 22340 be a friend of this class. 22341 (class function_type): Make the equality function for 22342 function_types be a friend of this class. 22343 * src/abg-ir.cc (environment::priv::fn_types_being_compared_): New 22344 data member. 22345 (function_type::priv::{mark_as_being_compared, 22346 unmark_as_being_compared, comparison_started}): Define new member 22347 functions. 22348 (equals): In the overload for function_types, if any of the the 22349 function_type being compared is already being compared, return 22350 early saying that the two function_types are equal. This avoids 22351 223522016-10-06 Dodji Seketeli <dodji@redhat.com> 22353 22354 Define a new interned_string_set_type typedef 22355 * include/abg-interned-str.h (interned_string_set_type): Define a new 22356 typedef for unordered_set<interned_string>. 22357 223582016-09-23 Dodji Seketeli <dodji@redhat.com> 22359 22360 Update reference output of runtestreaddwarf 22361 * tests/data/test-read-dwarf/test10-pr18818-gcc.so.abi: Adjust. 22362 * tests/data/test-read-dwarf/test12-pr18844.so.abi: Adjust. 22363 * tests/data/test-read-dwarf/test17-pr19027.so.abi: Adjust. 22364 * tests/data/test-read-dwarf/test20-pr19025-libvtkParallelCore-6.1.so.abi: Adjust. 22365 * tests/data/test-read-dwarf/test9-pr18818-clang.so.abi: Adjust. 22366 223672016-09-21 Matthias Klose <doko@debian.org> 22368 22369 Fix typo in abipkgdiff 22370 * tools/abipkgdiff.cc (extract_deb): Fix typo. 22371 223722016-09-12 Dodji Seketeli <dodji@redhat.com> 22373 22374 Better handle fedabipkgdiff dependencies detection 22375 * configure.ac: It's only when --enable-fedabipkgdiff is provided 22376 that a missing dependency of the fedabipkgdiff program results in 22377 a fatal error. Otherwise, building fedabipkgdiff is just 22378 disabled. 22379 223802016-09-16 Dodji Seketeli <dodji@redhat.com> 22381 22382 Add default suppression specifications for C++ binaries 22383 * default.abignore: Add suppressions for non-libstdc++ and 22384 non-boost C++ libraries. 22385 223862016-09-20 Dodji Seketeli <dodji@redhat.com> 22387 22388 Add default suppression specification for webkitgtk 22389 * default.abignore: New suppression specifications for webkitgtk. 22390 223912016-09-19 Dodji Seketeli <dodji@redhat.com> 22392 22393 Drop suppressed ABI artifacts from the IR 22394 * doc/manuals/abidw.rst: Document the new --suppressions and 22395 --headers-dir options off the abidw tool. 22396 * doc/manuals/abilint.rst: Document the new --suppressions and 22397 --headers-dir options on the abilint tool. 22398 * doc/manuals/libabigail-concepts.rst: Document the new "drop" and 22399 "name_not_regexp" properties on suppression directives. 22400 * include/abg-corpus.h (corpus::corpus): Add a default argument to 22401 the path parameter. 22402 * src/abg-suppression-priv.h: New private header file. 22403 * src/Makefile.am: Add the new abg-suppression-priv.h file to 22404 source distribution. 22405 * include/abg-suppression.h ({suppression_base, type_suppression, 22406 function_suppression, variable_suppression}::priv): Make these 22407 public. 22408 (suppression_base::{g,s}et_drops_artifact_from_ir): Declare new 22409 member functions. 22410 (type_suppression::{suppressed_type}): Likewise. 22411 (suppression_base::{names,sonames}_of_binaries_match): Remove 22412 member functions. 22413 (function_suppression::{get_name, set_name, get_name_regex_str, 22414 set_name_regex_str}): Renamed get_function_name, 22415 set_function_name, get_function_name_regex_str, 22416 set_function_name_regex_str into these. 22417 ({variable,function}_suppression::{g,s}et_name_not_regex_str): 22418 Declare new member functions. 22419 * src/abg-suppression.cc: Include the new abg-suppression-priv.h 22420 private header. 22421 (class suppression_base::priv, class type_suppression::priv, class 22422 function_suppression::parameter_spec::priv, class 22423 function_suppression::priv, class variable_suppression::priv): 22424 Move these types to that new private header. 22425 (suppression_base::{g,s}et_drops_artifact_from_ir) 22426 (function_suppression::{g,s}et_name_not_regex_str) 22427 (variable_suppression::{g,s}et_name_not_regex_str): New member 22428 functions. 22429 (sonames_of_binaries_match): New static function, taken from 22430 suppression_base::sonames_of_binaries_match. 22431 (names_of_binaries_match): New static function, taken from 22432 suppression_base::names_of_binaries_match. 22433 (suppression_matches_type_no_name): New static function. 22434 (type_suppression::suppresses_type): Adjust 22435 (function_suppression::suppresses_function) 22436 (variable_suppression::suppresses_variable): Adjust. Evaluate the 22437 new "name_not_regexp" property. 22438 (suppression_matches_type_name) 22439 (suppression_matches_type_location) 22440 (suppression_matches_type_name_or_location) 22441 (suppression_matches_function_name) 22442 (suppression_matches_function_sym_name) 22443 (suppression_matches_variable_name) 22444 (suppression_matches_variable_sym_name, suppression_matches_type): 22445 New functions. 22446 (read_type_suppression): Support the new "drop_artifacts" and 22447 "drop" properties. 22448 (read_function_suppression, read_variable_suppression): Support 22449 the new "drop_artifacts", "drop", and "name_not_regexp" 22450 properties. 22451 (function_suppression::{g,s}et_name): Renamed 22452 {g,s}et_function_name into these. 22453 (function_suppression::set_name_not_regex_str): Renamed 22454 {g,s}et_name_regex_str into this. 22455 (function_suppression::suppresses_function_symbol): Adjust. 22456 * include/abg-dwarf-reader.h (add_read_context_suppressions): 22457 Declare new function. 22458 * src/abg-dwarf-reader.cc: Use the new private 22459 abg-suppression-priv.h header file. 22460 (read_context::supprs_): New data member. 22461 (read_context::get_suppressions): New member function. 22462 (read_context::get_die_source): Make this const. 22463 (read_context::tu_die_imported_unit_points_map): Add a const 22464 overload. 22465 (read_context::cur_transl_unit): Renamed current_translation_unit 22466 unit into this; 22467 (read_context::cur_tu): Remove or rename into cur_transl_unit. 22468 (get_scope_for_die, build_translation_unit_and_add_to_ir) 22469 (build_enum_type, build_pointer_type_def, build_reference_type) 22470 (build_function_type, build_array_type, build_function_decl): 22471 Adjust. 22472 (read_context::{suppression_can_match, 22473 suppression_matches_function_sym_name, 22474 suppression_matches_function_name, 22475 suppression_matches_variable_sym_name, 22476 suppression_matches_variable_name, 22477 suppression_matches_type_name_or_location, 22478 suppression_matches_type_name}): Add member functions. 22479 (die_signed_constant_attribute): Remove this as dead code. 22480 (die_location, die_loc_and_name) 22481 (find_import_unit_point_between_dies) 22482 (find_import_unit_point_before_die, get_parent_die): Make the 22483 read_context& parameter be const and adjust as required. 22484 (build_var_decl_if_not_suppressed, function_is_suppressed) 22485 (variable_is_suppressed, type_is_suppressed): Define new static 22486 functions. 22487 (add_read_context_suppressions): Define new function. 22488 (build_class_type_and_add_to_ir): Do not add suppressed static 22489 data members to the IR. 22490 (build_ir_node_from_die): Do not add suppressed enum types, class 22491 types, variables or functions to the IR. Adjust for the 22492 read_context::cur_tu -> read_context::cur_transl_unit rename. 22493 * include/abg-reader.h (read_context_sptr): Declare new type. 22494 (create_native_xml_read_context, read_corpus_from_input) 22495 (add_read_context_suppressions): Declare new functions. 22496 * src/abg-reader.cc: Include the new private 22497 abg-suppression-priv.h header file. 22498 (read_context::m_exported_decls_builder): Renamed 22499 m_exported_decls_builder_ into this. 22500 (read_context::get_exported_decls_builder): Adjust. 22501 (read_context::get_cur_scope): Make this const. 22502 (read_location): Take a const read_context and adjust. 22503 (read_corpus_from_input): Make this non-static. 22504 (build_namespace_decl): Don't abort if trying to add an artifact 22505 to the IR doesn't succeed. It might be suppressed now. 22506 (read_context::{m_path, m_supprs}): New data members. 22507 (read_context::{g,s}et_path): New member functions. 22508 (read_context::{get_suppressions, 22509 suppression_matches_function_name, suppression_can_match, 22510 suppression_matches_function_name, 22511 suppression_matches_function_sym_name, 22512 suppression_matches_variable_name, 22513 suppression_matches_variable_sym_name, 22514 suppression_matches_type_name_or_location}): Likewise. 22515 (add_read_context_suppressions, create_native_xml_read_context) 22516 (read_corpus_from_native_xml): New functions. 22517 (build_function_decl_if_not_suppressed, function_is_suppressed) 22518 (type_is_suppressed, build_var_decl_if_not_suppressed) 22519 (variable_is_suppressed, build_enum_type_decl_if_not_suppressed) 22520 (build_class_decl_if_not_suppressed): New static functions. 22521 (build_class_decl): Add member types that are being built early, 22522 so that their sub-types can be evaluated for suppression. Do not 22523 add suppressed static data members or suppressed member functions 22524 to the IR. 22525 (build_type): Do not add an enum type or a class type to the IR if 22526 they are suppressed. 22527 (handle_enum_type_decl): Do not add an enum type to the IR if its 22528 suppressed. 22529 (handle_var_decl): Likewise for a variable decl. 22530 (handle_function_decl): Likewise for a function decl. 22531 (handle_class_decl): Likewise for a class decl. 22532 * src/abg-tools-utils.cc (handle_fts_entry): Drop suppressed ABI 22533 from the IR. 22534 * tools/abidiff.cc (display_usage): Fix help strings for 22535 --headers-dirs{1,2}. 22536 (set_suppressions): New static function. 22537 (main): Adjust. Release the memory used by read_context early. 22538 * tools/abidw.cc (options::{headers_dir, suppression_paths}): 22539 (display_usage): New help strings for the new --header-dir and 22540 --suppressions options. 22541 (parse_command_line): Parse the new --header-dir and 22542 --suppressions options. 22543 (maybe_check_suppression_files, set_suppressions): New static 22544 functions. 22545 (main): Use the two new functions above. Free the memory used by 22546 the read context before working with the corpus. 22547 * tools/abilint.cc (options::suppression_paths): 22548 (display_usage): New help strings for the new --header-dir and 22549 --suppressions options. 22550 (parse_command_line): Parse the new --header-dir and 22551 --suppressions options. 22552 (maybe_check_suppression_files, set_suppressions): New static 22553 functions. 22554 (main): Use the two new functions above. Free the memory used by 22555 the read context before working with the corpus. 22556 * tests/data/test-diff-suppr/test24-soname-suppr-{2,3].txt: 22557 Adjust. 22558 * tests/data/test-diff-suppr/test29-suppr-6.txt: Likewise. 22559 * tests/data/test-diff-suppr/test29-suppr-8.txt: Likewise. 22560 * tests/data/test-diff-suppr/libtest31-v{0,1}.so: New test input. 22561 * tests/data/test-diff-suppr/libtest31.suppr: Likewise 22562 * tests/data/test-diff-suppr/libtest32-v{0,1}.so: Likewise. 22563 * tests/data/test-diff-suppr/libtest32-0.suppr: Likewise. 22564 * tests/data/test-diff-suppr/libtest33-v{0,1}.so: Likewise. 22565 * tests/data/test-diff-suppr/test31-report-{0,1}.txt: Likewise. 22566 * tests/data/test-diff-suppr/test31-v{0,1}.cc: Likewise. 22567 * tests/data/test-diff-suppr/test32-report-{0,1}.txt: Likewise. 22568 * tests/data/test-diff-suppr/test32-v{0,1}.c: Likewise. 22569 * tests/data/test-diff-suppr/test33-suppr-1.txt: Likewise. 22570 * tests/data/test-diff-suppr/test33-v{0,1}.cc: Likewise. 22571 * tests/data/test-diff-suppr/test33-v{0,1}.h: Likewise. 22572 * tests/data/test-read-dwarf/libtest24-drop-fns-2.so.abi: 22573 Likewise. 22574 * tests/data/test-read-dwarf/libtest24-drop-fns.so: Likewise. 22575 * tests/data/test-read-dwarf/libtest24-drop-fns.so.abi: Likewise. 22576 * tests/data/test-read-dwarf/test24-drop-fns-0.suppr: Likewise. 22577 * tests/data/test-read-dwarf/test24-drop-fns.cc: Likewise. 22578 * tests/data/test-read-write/test28-drop-std-fns.abignore: 22579 Likewise. 22580 * tests/data/test-read-write/test28-drop-std-vars.abignore: 22581 Likewise. 22582 * tests/data/test-read-write/test28-without-std-fns-ref.xml: 22583 Likewise. 22584 * tests/data/test-read-write/test28-without-std-fns.xml: Likewise. 22585 * tests/data/test-read-write/test28-without-std-vars-ref.xml: 22586 Likewise. 22587 * tests/data/test-read-write/test28-without-std-vars.xml: 22588 Likewise. 22589 * tests/data/test-read-write/test28.xml: Likewise. 22590 * tests/data/Makefile.am: Add the new test artifacts to source 22591 distribution. 22592 * tests/test-diff-suppr.cc (in_out_spec): Take the new test inputs 22593 into account. 22594 * tests/test-read-dwarf.cc (Inoutspec::in_suppr_spec_path): New 22595 data member. 22596 (in_out_spec): Adjust. The new test inputs into account. 22597 (set_suppressions): New static function. 22598 (handle_in_out_spec): Adjust. 22599 * tests/test-read-write.cc (Inoutspec::{in_suppr_spec_path, 22600 ref_out_path}): New data members. 22601 (in_out_spec): Adjust. Take new test inputs into account. 22602 (main): Adjust. 22603 226042016-09-19 Dodji Seketeli <dodji@redhat.com> 22605 22606 Pimplify the abigail::ir::scope_decl type 22607 * include/abg-ir.h (scope_decl::{priv, priv_sptr}) Declare new types. 22608 (scope_decl::priv_): New pimpl data member. 22609 (scope_decl::{member_, member_scopes}): Move this as data member 22610 of the new scope_decl::priv type in the abg-ir.cc file. 22611 (scope_decl::{scope_decl, get_member_decls, get_member_scopes, 22612 is_empty}): Make these inline member functions be out-of-line. 22613 * src/abg-ir.cc (struct scope_decl::priv): Define new type. 22614 (scope_decl::{scope_decl, get_member_decls, get_member_scopes, 22615 is_empty}): Define these new member functions here. They were 22616 inline in the include/abg-ir.h header files before. 22617 (scope_decl::{add_member_decl, insert_member_decl, 22618 remove_member_decl}): Adjust. 22619 226202016-09-19 Dodji Seketeli <dodji@redhat.com> 22621 22622 Add new helper functions 22623 * include/abg-fwd.h (get_location, build_qualified_name): Declare 22624 new functions. 22625 * include/abg-ir.h (is_method_decl): Declare two new overloads of 22626 this function. 22627 * src/abg-ir.cc (get_location, build_qualified_name) 22628 (is_method_decl): Define these functions declared above. 22629 226302016-09-19 Dodji Seketeli <dodji@redhat.com> 22631 22632 Do not emit empty namespaces in abixml 22633 * include/abg-ir.h 22634 (namespace_decl::is_empty_or_has_empty_sub_namespaces): Declare 22635 new function ... 22636 * src/abg-ir.cc 22637 (namespace_decl::is_empty_or_has_empty_sub_namespaces): ... and 22638 define it. 22639 * src/abg-writer.cc (write_namespace_decl): Do not write empty 22640 namespaces or namespaces containing empty namespaces. 22641 * tests/data/test-read-dwarf/test9-pr18818-clang.so.abi: Adjust. 22642 * tests/data/test-read-dwarf/test11-pr18828.so.abi: Adjust. 22643 * tests/data/test-read-dwarf/test12-pr18844.so.abi: Adjust. 22644 * tests/data/test-read-dwarf/test15-pr18892.so.abi: Adjust. 22645 * tests/data/test-read-dwarf/test16-pr18904.so.abi: Adjust. 22646 * tests/data/test-read-dwarf/test17-pr19027.so.abi: Adjust. 22647 * tests/data/test-read-dwarf/test18-pr19037-libvtkRenderingLIC-6.1.so.abi: Adjust. 22648 * tests/data/test-read-dwarf/test19-pr19023-libtcmalloc_and_profiler.so.abi: Adjust. 22649 * tests/data/test-read-dwarf/test20-pr19025-libvtkParallelCore-6.1.so.abi: Adjust. 22650 * tests/data/test-read-dwarf/test21-pr19092.so.abi: Adjust. 22651 * tests/data/test-read-dwarf/test22-pr19097-libstdc++.so.6.0.17.so.abi: Adjust. 22652 * tests/data/test-read-dwarf/libtest23.so.abi: Adjust. 22653 226542016-09-21 Dodji Seketeli <dodji@redhat.com> 22655 22656 Fix misleading indentation issues 22657 * tools/abipkgdiff.cc (compare): Likewise. 22658 * tools/abisym.cc (main): Fix misleading indentation. 22659 226602016-08-30 Dodji Seketeli <dodji@redhat.com> 22661 22662 Bug 20534 - abipkgdiff wrongly displays the name of added binary files 22663 * tools/abipkgdiff.cc (compare): Show the name of the added 22664 binary, rather than its address. 22665 226662016-08-24 Dodji Seketeli <dodji@redhat.com> 22667 22668 Bug 20420 - Wrong ODR-based type comparison optimization on qualified type 22669 * src/abg-ir.cc: 22670 226712016-08-23 Dodji Seketeli <dodji@redhat.com> 22672 22673 Don't walk diff trees indefinitely when applying suppressions 22674 * src/abg-comparison.cc: 22675 226762016-07-27 Dodji Seketeli <dodji@redhat.com> 22677 22678 Control symbols exported from libabigail.so 22679 * VISIBILITY: New documentation about this visiblity business. 22680 * CONTRIBUTING: Update the "contributing guide" to refer to symbol 22681 visibility issues. 22682 * configure.ac: Define a variable VISIBILITY_FLAGS that is set to 22683 the -fvisibility=hidden flag to pass to GCC, when its available. 22684 * src/Makefile.am: Add VISIBILITY to source distribution. Also 22685 add COMPILING and COMMIT-LOG-GUIDELINES that were missing. 22686 * src/Makefile.am: Use the new $(VISIBILITY_FLAGS) when buiding 22687 the library. 22688 * tests/Makefile.am: Use the new $(VISIBILITY_FLAGS) when buiding 22689 tests. 22690 * tools/Makefile.am: Use the new $(VISIBILITY_FLAGS) when buiding 22691 tools. 22692 * src/abg-comp-filter.cc: Enclose inclusion of public headers in 22693 ABG_BEGIN_EXPORT_DECLARATIONS and ABG_END_EXPORT_DECLARATIONS to 22694 export the symbols of entities declared in there. 22695 * src/abg-comparison.cc: Likewise. 22696 * src/abg-config.cc: Likewise. 22697 * src/abg-corpus.cc: Likewise. 22698 * src/abg-diff-utils.cc: Likewise. 22699 * src/abg-dwarf-reader.cc: Likewise. 22700 * src/abg-hash.cc: Likewise. 22701 * src/abg-ini.cc: Likewise. 22702 * src/abg-ir.cc: Likewise. 22703 * src/abg-libxml-utils.cc: Likewise. 22704 * src/abg-libzip-utils.cc: Likewise. 22705 * src/abg-reader.cc: Likewise. 22706 * src/abg-suppression.cc: Likewise. 22707 * src/abg-tools-utils.cc: Likewise. 22708 * src/abg-traverse.cc: Likewise. 22709 * src/abg-viz-common.cc: Likewise. 22710 * src/abg-viz-dot.cc: Likewise. 22711 * src/abg-viz-svg.cc: Likewise. 22712 * src/abg-workers.cc: Likewise. 22713 * src/abg-writer.cc: Likewise. 22714 227152016-07-26 Dodji Seketeli <dodji@redhat.com> 22716 22717 Support DW_TAG_type_unit 22718 * src/abg-dwarf-reader.cc (TYPE_UNIT_DIE_SOURCE): New enumerator 22719 in enum die_source. 22720 (read_context::{type_unit_die_decl_map_, type_unit_die_type_map_, 22721 type_unit_die_wip_classes_map_, 22722 type_unit_die_wip_function_types_map_, 22723 type_unit_types_to_canonicalize_, 22724 type_units_tu_die_imported_unit_points_map_, 22725 type_section_die_parent_map_}): New data members. 22726 (read_context::{get_die_source, associate_die_to_decl, 22727 lookup_decl_from_die_offset, die_type_map, clear_die_type_maps, 22728 die_wip_classes_map, die_wip_function_types_map, 22729 types_to_canonicalize, clear_types_to_canonicalize, 22730 tu_die_imported_unit_points_map, die_parent_map}): Support 22731 TYPE_UNIT_DIE_SOURCE. 22732 (get_parent_die, get_scope_for_die): Likewise. 22733 (read_context::{lookup_decl_from_type_unit_die_offset, 22734 type_section_die_parent_map}): Define new member functions. 22735 (read_context::build_die_parent_maps): Build a DIE -> parent map 22736 for DIEs coming from the .debug_types section. 22737 * tests/data/test-read-dwarf/libtest23.so: New test input. 22738 * tests/data/test-read-dwarf/libtest23.so.abi: New reference output. 22739 * tests/data/test-read-dwarf/test23-first-tu.cc: Source code of 22740 the new binary above. 22741 * tests/data/test-read-dwarf/test23-second-tu.cc: Likewise. 22742 * tests/data/Makefile.am: Add the new test material above to 22743 source distribution. 22744 * tests/test-read-dwarf.cc (in_out_specs): Make this test harness 22745 execute over the new test input and reference output. 22746 227472016-07-26 Dodji Seketeli <dodji@redhat.com> 22748 22749 Misc code cleanup 22750 * src/abg-dwarf-reader.cc (build_function_decl): Use the more 22751 readable is_class_type rather than a dynamic_cast. 22752 227532016-07-26 Dodji Seketeli <dodji@redhat.com> 22754 22755 Generalize DIE source concept in DWARF reader 22756 * src/abg-dwarf-reader.cc (enum die_source): Define new enum. 22757 (operator++): Define new prefix increment operator for the 22758 die_source enum. 22759 (imported_unit_point::imported_unit_from_alt_di): Remove this 22760 data member. 22761 (imported_unit_point::imported_unit_die_source): 22762 New data member of type die_source. 22763 (read_context::primary_die_parent_map_): Renamed 22764 die_parent_map_ data member into this. 22765 (read_context::clear_per_corpus_data): Use the new 22766 clear_die_type_maps function, not die_type_map. Also use the 22767 new clear_types_to_canonicalize overload that takes no 22768 parameter. 22769 (read_context::{get_die_source, clear_die_type_maps, 22770 clear_types_to_canonicalize}): New member functions. 22771 (build_ir_node_from_die, die_die_attribute, get_parent_die) 22772 (get_scope_for_die, build_namespace_decl_and_add_to_ir) 22773 (build_type_decl, build_enum_type) 22774 (build_class_type_and_add_to_ir, build_qualified_type) 22775 (build_pointer_type_def, build_reference_type) 22776 (build_function_type, build_array_type, build_typedef_type) 22777 (build_var_decl, build_function_decl): Remove the boolean 22778 parameter that was designating the source of the DIE. If 22779 necessary, get the source of the DIE from inside the function 22780 using the new read_context::get_die_source. 22781 (read_debug_info_into_corpus): Adjust. 22782 (maybe_canonicalize_type, find_import_unit_point_between_dies) 22783 (maybe_canonicalize_type, read_context::{associate_die_to_decl, 22784 lookup_decl_from_die_offset, die_type_map, associate_die_to_type, 22785 lookup_type_from_die_offset, die_wip_classes_map, 22786 die_wip_function_types_map, is_wip_class_die_offset, 22787 is_wip_function_type_die_offset, types_to_canonicalize, 22788 schedule_type_for_late_canonicalization, 22789 canonicalize_types_scheduled, add_late_canonicalized_types_stats, 22790 perform_late_type_canonicalizing}): Take a die_source as the 22791 source of the DIE, not a boolean. Adjust the code of the function 22792 accordingly. 22793 (read_context::{tu_die_imported_unit_points_map}): Modified 22794 this to make it take a die_source and return the appropriate 22795 map depending on the source. 22796 (read_context::build_die_parent_relations_under): Turn the 22797 non-member static function build_die_parent_relations_under 22798 into a member function. 22799 (read_context::build_die_parent_maps): Turn the non-member 22800 static function build_die_parent_maps into a member function. 22801 Make this function build a DIE -> parent map also for type 22802 DIEs that are in the .type_units section. 22803 228042016-07-25 Dodji Seketeli <dodji@redhat.com> 22805 22806 Cleanup is_class and is_compatible_with_class_type 22807 * include/abg-fwd.h (is_class): Remove the overloads that take a 22808 decl_base or a type_base. Add one that takes a type_or_decl_base. 22809 (is_compatible_with_class_type): Make this take a reference to 22810 smart pointer, not just the smart pointer. 22811 * src/abg-ir.cc (is_class): Do the same as in the header file. 22812 (is_compatible_with_class_type): Likewise. 22813 228142016-07-22 Dodji Seketeli <dodji@redhat.com> 22815 22816 Add ABG_ASSERT_NOT_REACHED macro 22817 * include/abg-tools-utils.h (ABG_ASSERT_NOT_REACHED): New macro. 22818 * src/abg-dwarf-reader.cc (stt_to_elf_symbol_type) 22819 (stb_to_elf_symbol_binding, get_elf_class_size_in_bytes) 22820 (build_ir_node_from_die): Use the new ABG_ASSERT_NOT_REACHED macro 22821 in lieu of just calling abort(). 22822 228232016-07-22 Dodji Seketeli <dodji@redhat.com> 22824 22825 Prepare support for symbol visibility control 22826 * configure.ac: Detect compiler support for 22827 __attribute__((visibility("hidden")) and define the 22828 HAS_GCC_VISIBILITY_ATTRIBUTE macro accordingly. Update the 22829 configuration report. 22830 * src/abg-internal.h: New internal header file that defines macros 22831 to be used in the source code to control declaration visibility. 22832 * src/Makefile.am: Add abg-internal.h to source distribution. Add 22833 src/ to the include search path. 22834 228352016-07-06 Chenxiong Qi <cqi@redhat.com> 22836 22837 Make fedabipkgdiff consistent with Libabigail's other tests 22838 * configure.ac: Do not require Python dependencies itertools, 22839 unittest and StringIO anymore as they are not used anymore. 22840 Require new module tempfile now. Generate new executable script 22841 tests/mockfedabipkgdiff from tests/mockfedabipkgdiff.in. 22842 * doc/manuals/abipkgdiff.rst: Add doc for new option 22843 --show-identical-binaries to abipkgdiff 22844 * doc/manuals/fedabipkgdiff.rst: Add doc for new options 22845 --show-identical-binaries to fedabipkgdiff. 22846 * tools/abipkgdiff.cc (options::show_identical_binaries): New data 22847 member. 22848 (options::options): Initialize new data member. 22849 (display_usage): Add a new help string for the new 22850 --show-identical-binaries option. 22851 (parse_command_line): Parse the newq --show-identical-binaries 22852 command line switch. 22853 (pthread_routine_compare): When the comparison of two binaries is 22854 empty, if --show-identical-binaries was provided, then emit some 22855 output saying the comparison did yield the empty set. 22856 * tools/fedabipkgdiff (DEFAULT_ABIPKGDIFF): Store the default path 22857 to abipkgdiff in this new global variable. Naming this default 22858 path is useful because it can then be cleanly overloaded when 22859 using mock.patch. 22860 (build_path_to_abipkgdiff): Return the new DEFAULT_ABIPKGDIFF 22861 global variable. 22862 (cmd): Parse the new --show-identical-binaries command line 22863 switch. 22864 * tests/data/test-diff-pkg/test-dbus-glib-0.80-3.fc12.x86_64-report-0.txt: 22865 New reference output. 22866 * tests/data/test-fedabipkgdiff/test0-from-fc20-to-fc23-dbus-glib-report-0.txt: 22867 Likewise. 22868 * tests/data/test-fedabipkgdiff/test1-from-fc20-to-dbus-glib-0.106-1.fc23.x86_64-report-0.txt: 22869 Likewise. 22870 * tests/data/test-fedabipkgdiff/test2-dbus-glib-0.100.2-2.fc20--dbus-glib-0.106-1.fc23-report-0.txt: 22871 Likewise. 22872 * tests/data/test-fedabipkgdiff/test3-dbus-glib-0.100.2-2.fc20.i686--dbus-glib-0.106-1.fc23.i686-report-0.txt: 22873 Likewise. 22874 * tests/mockfedabipkgdiff.in: New uninstalled script template. 22875 * tests/runtestfedabipkgdiff.py.in (counter) 22876 (temp_file_or_dir_prefix, UtilsTest, RPMTest, LocalRPMTest) 22877 (RunAbipkgdiffTest, GetPackageLatestBuildTest, DownloadRPMTest) 22878 (BrewListRPMsTest, AssertionHelper, MockGlobalConfig) 22879 (BUILT_ABIPKGDIFF, CompareABIFromCommandLineTest): Remove these 22880 classes, global variables and functions. 22881 (FEDABIPKGDIFF, TEST_SRC_DIR, TEST_BUILD_DIR, INPUT_DIR) 22882 (OUTPUT_DIR, FEDABIPKGDIFF_TEST_SPECS): New global variables. 22883 (ensure_output_dir_created, run_fedabipkgdiff_tests, main): New 22884 functions. 22885 * tests/test-diff-pkg.cc (in_out_specs): Add 22886 tests/data/test-diff-pkg/test-dbus-glib-0.80-3.fc12.x86_64-report-0.txt 22887 to the set of reference outputs to consider. 22888 * tests/Makefile.am: Add non-installed script mockfedabipkgdiff to 22889 source distribution. Also added 22890 tests/data/test-diff-pkg/test-dbus-glib-0.80-3.fc12.x86_64-report-0.txt, 22891 tests/data/test-fedabipkgdiff/test0-from-fc20-to-fc23-dbus-glib-report-0.txt, 22892 tests/data/test-fedabipkgdiff/test1-from-fc20-to-dbus-glib-0.106-1.fc23.x86_64-report-0.txt, 22893 tests/data/test-fedabipkgdiff/test2-dbus-glib-0.100.2-2.fc20--dbus-glib-0.106-1.fc23-report-0.txt 22894 and 22895 tests/data/test-fedabipkgdiff/test3-dbus-glib-0.100.2-2.fc20.i686--dbus-glib-0.106-1.fc23.i686-report-0.txt 22896 to source distribution. 22897 228982016-07-13 Dodji Seketeli <dodji@redhat.com> 22899 22900 Fix spurious type size change report for distinct_diff 22901 * src/abg-comparison.cc (report_size_and_alignment_changes): 22902 Report size change only when the sizes are different. 22903 * tests/data/test-diff-filter/test33-report-0.txt: Adjust. 22904 229052016-07-13 Dodji Seketeli <dodji@redhat.com> 22906 22907 Bug 20199 - Consider integral type synonyms as being equal 22908 * src/abg-ir.cc (class integral_type): New class declaration and 22909 definition. 22910 (operator|, operator&, operator&=): New non-member bitwise 22911 operators for integral_type. 22912 (parse_integral_type_modifier, parse_base_integral_type) 22913 (parse_integral_type_modifier): New static function definitions. 22914 (type_decl::type_decl): Use the parse_integral_type to parse an 22915 integral type out of the current type_decl being built and 22916 transform the current type name into a canonical form. 22917 * tests/data/test-abidiff/test-PR18791-v0.so.abi: Adjust. 22918 * tests/data/test-abidiff/test-PR18791-v1.so.abi: Likewise. 22919 * tests/data/test-diff-filter/test30-pr18904-rvalueref-report0.txt: Likewise. 22920 * tests/data/test-diff-filter/test30-pr18904-rvalueref-report1.txt: Likewise. 22921 * tests/data/test-diff-filter/test33-report-0.txt: Likewise. 22922 * tests/data/test-diff-filter/test34-report-0.txt: Likewise. 22923 * tests/data/test-diff-pkg/libICE-1.0.6-1.el6.x86_64.rpm--libICE-1.0.9-2.el7.x86_64.rpm-report-0.txt: Likewise. 22924 * tests/data/test-read-dwarf/test10-pr18818-gcc.so.abi: Likewise. 22925 * tests/data/test-read-dwarf/test11-pr18828.so.abi: Likewise. 22926 * tests/data/test-read-dwarf/test12-pr18844.so.abi: Likewise. 22927 * tests/data/test-read-dwarf/test13-pr18894.so.abi: Likewise. 22928 * tests/data/test-read-dwarf/test14-pr18893.so.abi: Likewise. 22929 * tests/data/test-read-dwarf/test15-pr18892.so.abi: Likewise. 22930 * tests/data/test-read-dwarf/test16-pr18904.so.abi: Likewise. 22931 * tests/data/test-read-dwarf/test17-pr19027.so.abi: Likewise. 22932 * tests/data/test-read-dwarf/test18-pr19037-libvtkRenderingLIC-6.1.so.abi: Likewise. 22933 * tests/data/test-read-dwarf/test19-pr19023-libtcmalloc_and_profiler.so.abi: Likewise. 22934 * tests/data/test-read-dwarf/test20-pr19025-libvtkParallelCore-6.1.so.abi: Likewise. 22935 * tests/data/test-read-dwarf/test21-pr19092.so.abi: Likewise. 22936 * tests/data/test-read-dwarf/test22-pr19097-libstdc++.so.6.0.17.so.abi: Likewise. 22937 * tests/data/test-read-dwarf/test9-pr18818-clang.so.abi: Likewise. 22938 229392016-07-08 Dodji Seketeli <dodji@redhat.com> 22940 22941 Bug 20332 - too many ...'s counted as parameters 22942 * src/abg-dwarf-reader.cc (build_function_type): Create a variadic 22943 parameter just for the first DW_TAG_unspecified_parameters seen. 22944 * tests/data/test-diff-filter/test30-pr18904-rvalueref-report0.txt: Adjust. 22945 * tests/data/test-diff-filter/test30-pr18904-rvalueref-report1.txt: Adjust. 22946 * tests/data/test-read-dwarf/test16-pr18904.so.abi: Adjust. 22947 229482016-07-06 Dodji Seketeli <dodji@redhat.com> 22949 22950 Better recognize qualified void type 22951 * include/abg-ir.h (environment::is_void_type): Declare new member 22952 function. 22953 * src/abg-ir.cc (environment::is_void_type): Define new member 22954 function. 22955 * src/abg-dwarf-reader.cc (maybe_strip_qualification): Strip const 22956 qualifier from const void. 22957 * tests/data/test-diff-filter/test34-libjemalloc.so.2-gcc-6.1.0: 22958 New test input. 22959 * tests/data/test-diff-filter/test34-libjemalloc.so.2-intel-16.0.3: Likewise. 22960 * tests/data/test-diff-filter/test34-report-0.txt: New reference output. 22961 * tests/data/Makefile.am: Add the new files above to the source 22962 distribution. 22963 * tests/test-diff-filter.cc (in_out_specs): Compare the two new 22964 binaries above. 22965 * tests/data/test-diff-filter/test30-pr18904-rvalueref-report0.txt: Adjust. 22966 * tests/data/test-diff-filter/test30-pr18904-rvalueref-report1.txt: Adjust. 22967 * tests/data/test-diff-pkg/tbb-4.1-9.20130314.fc22.x86_64--tbb-4.3-3.20141204.fc23.x86_64-report-0.txt: Adjust. 22968 * tests/data/test-diff-pkg/tbb-4.1-9.20130314.fc22.x86_64--tbb-4.3-3.20141204.fc23.x86_64-report-1.txt: Adjust. 22969 * tests/data/test-read-dwarf/test1.abi: Adjust. 22970 * tests/data/test-read-dwarf/test10-pr18818-gcc.so.abi: Adjust. 22971 * tests/data/test-read-dwarf/test11-pr18828.so.abi: Adjust. 22972 * tests/data/test-read-dwarf/test12-pr18844.so.abi: Adjust. 22973 * tests/data/test-read-dwarf/test13-pr18894.so.abi: Adjust. 22974 * tests/data/test-read-dwarf/test14-pr18893.so.abi: Adjust. 22975 * tests/data/test-read-dwarf/test15-pr18892.so.abi: Adjust. 22976 * tests/data/test-read-dwarf/test16-pr18904.so.abi: Adjust. 22977 * tests/data/test-read-dwarf/test17-pr19027.so.abi: Adjust. 22978 * tests/data/test-read-dwarf/test18-pr19037-libvtkRenderingLIC-6.1.so.abi: Adjust. 22979 * tests/data/test-read-dwarf/test19-pr19023-libtcmalloc_and_profiler.so.abi: Adjust. 22980 * tests/data/test-read-dwarf/test20-pr19025-libvtkParallelCore-6.1.so.abi: Adjust. 22981 * tests/data/test-read-dwarf/test21-pr19092.so.abi: Adjust. 22982 * tests/data/test-read-dwarf/test22-pr19097-libstdc++.so.6.0.17.so.abi: Adjust. 22983 * tests/data/test-read-dwarf/test9-pr18818-clang.so.abi: Adjust. 22984 229852016-07-05 Dodji Seketeli <dodji@redhat.com> 22986 22987 Bug 20194 - Fail to recognize void type represented by DW_TAG_base_type 22988 * src/abg-dwarf-reader.cc (build_type_decl): Recognize a 22989 DW_TAG_base_type of size zero and of name "void" as a void 22990 type. 22991 * tests/data/test-diff-filter/test33-libelf.so.0.8.13-gcc: New 22992 binary test input. 22993 * tests/data/test-diff-filter/test33-libelf.so.0.8.13-intel16.0.3: Likewise. 22994 * tests/data/test-diff-filter/test33-report-0.txt: New reference output. 22995 * tests/data/Makefile.am: Add the new files above to source 22996 distribution. 22997 * tests/test-diff-filter.cc (in_out_specs): Make this test harness 22998 run over the new test inputs above. 22999 230002016-07-04 Dodji Seketeli <dodji@redhat.com> 23001 23002 Add a new overload for is_type_decl 23003 * include/abg-fwd.h (is_type_decl): Declare a new overload 23004 * src/abg-ir.cc (is_type_decl): Define a new overload. 23005 (function_decl::parameter::get_pretty_representation): Adjust. 23006 230072016-06-29 Chenxiong Qi <cqi@redhat.com> 23008 23009 Add --abipkgdiff option in manual and bash completion 23010 * doc/manuals/fedabipkgdiff.rst: Add description of --abipkgdiff 23011 option. Reformat paragraph. 23012 * bash-completion/fedabipkgdiff: Add --abipkgdiff 23013 230142016-06-29 Chenxiong Qi <cqi@redhat.com> 23015 23016 Add fedabipkgdiff bash completion to dist 23017 * bash-completion/Makefile.am: Add fedabipkgdiff 23018 * bash-completion/fedabipkgdiff: Change mode to 775 23019 230202016-06-29 Chenxiong Qi <cqi@redhat.com> 23021 23022 Update bash completion for fedabipkgdiff 23023 * bash-completion/fedabipkgdiff: New bash completion file. 23024 230252016-06-29 Dodji Seketeli <dodji@redhat.com> 23026 23027 Bump version number to 1.0.rc6 23028 * configure.ac: Bump version number to 1.0.rc6 23029 230302016-06-29 Dodji Seketeli <dodji@redhat.com> 23031 23032 Update web page for 1.0.rc5 23033 * doc/website/mainpage.txt: Update web page. 23034 230352016-06-27 Dodji Seketeli <dodji@redhat.com> 23036 23037 Update ChangeLog for 1.0.rc5 23038 * ChangeLog: Update by doing "make update-changelog" in the build 23039 directory. 23040 230412016-06-27 Dodji Seketeli <dodji@redhat.com> 23042 23043 Update NEWS file in preparation for 1.0.rc5 23044 * NEWS: update with the edited content of the command: 23045 git shortlog libabigail-1.0.rc4..HEAD 23046 230472016-06-27 Dodji Seketeli <dodji@redhat.com> 23048 23049 Fix python interpreter path for el6 23050 * tests/runtestdefaultsupprs.py.in: Use the python interpreter at 23051 /usr/bin/python, not the one at /bin/python. 23052 230532016-06-24 Dodji Seketeli <dodji@redhat.com> 23054 23055 Misc cleanup in abg-reader.cc 23056 * src/abg-reader.cc (read_context::push_decl_to_current_scope): 23057 Pass the decl smart pointer by value. 23058 230592016-06-22 Dodji Seketeli <dodji@redhat.com> 23060 23061 Use ODR-based optimization on C/C++ translation unit only 23062 * src/abg-ir.cc (strip_typedef): Set the translation unit of the 23063 new ABI artifact. 23064 (type_base::get_canonical_type_for): Perform the ODR-based 23065 optimization only for ABI artifact in C and C++ language 23066 translation units. 23067 * src/abg-dwarf-reader.cc (build_ir_node_from_die): Assert that 23068 the new ABI artifact has its translation unit set. 23069 * src/abg-reader.cc (read_context::{push_decl_to_current_scope, 23070 push_and_key_type_decl}): Set the translation unit of the current 23071 decl, irrespective of if it was added to the current scope or not. 23072 Assert that the decl that was newly pushed to the current scope is 23073 added to the current translation unit. 23074 230752016-06-10 Dodji Seketeli <dodji@redhat.com> 23076 23077 Misc white space and comment cleanups 23078 * include/abg-ir.h (typedef type_or_decl_base): Cleanup comment. 23079 * src/abg-ir.cc (struct type_or_decl_base::priv): Fix comment. 23080 230812016-06-10 Dodji Seketeli <dodji@redhat.com> 23082 23083 Cleanup function_decl::parameter::get_pretty_representation 23084 * src/abg-ir.cc 23085 (function_decl::parameter::get_pretty_representation): Assert that 23086 the environment is always non-nil. Then no needs to check for it 23087 being non-nil anymore. Use is_type_decl instead of 23088 dynamic_pointer_cast. 23089 230902016-06-07 Chenxiong Qi <cqi@redhat.com> 23091 23092 Fix package NVR comparison in fedabipkgdiff 23093 * configure.ac: Add new dependency. 23094 * tests/runtestfedabipkgdiff.py.in (builds): Add new builds for 23095 running tests to test selecting latest build from a package. 23096 (packages): Add new package gnutls. 23097 (GetPackageLatestBuildTest.{test_get_latest_one, 23098 test_cannot_find_a_latest_build_with_invalid_distro}): Use new 23099 builds of package gnutls to run tests. 23100 * tools/fedabipkgdiff (cmp_nvr): New function used to compare nvrs 23101 by Python built-in function sorted. 23102 (Brew.listBuilds): Use the new cmp_nvr function. 23103 231042016-06-06 Chenxiong Qi <cqi@redhat.com> 23105 23106 Bug 20135 - Make fedabipkgdiff compare ABIs using devel packages 23107 * doc/manuals/fedabipkgdiff.rst: Add documentation for the new 23108 --no-devel-pkg command line option, as well as for the new default 23109 behaviour of taking devel packages into account during ABI 23110 comparison. 23111 * tools/fedabipkgdiff (PkgInfo): Add new attribute 23112 devel_package. 23113 (RPM.is_devel): New property to determine if rpm is a 23114 development package. 23115 (LocalRPM._find_rpm): New method to find a specific rpm. 23116 (LocalRPM.find_debuginfo): Use new method _find_rpm to find 23117 debuginfo package. 23118 (LocalRPM.find_devel): New method to find an associated 23119 development package. 23120 (Brew.select_rpms_from_a_build): RPMs selector method is 23121 changed to select development package also. 23122 (abipkgdiff): Construct and run abipkgdiff with and without 23123 --devel-pkg[12] options. 23124 (magic_construct): Construct PkgInfo with development package. 23125 (run_abipkgdiff): Run abipkgdiff against rpms with development 23126 packages. 23127 (diff_local_rpm_with_latest_rpm_from_koji): Find development 23128 package, and call method abipkgdiff with development package. 23129 (build_commandline_args_parser): add new option --no-devel-pkg. 23130 * tests/runtestfedabipkgdiff.py.in (packages): Add new package 23131 nss-util. 23132 (builds): Add new builds of nss-utils, nss-util-3.12.6-1.fc14 23133 and nss-util-3.24.0-2.0.fc25. 23134 (rpms): Add new associated rpms of the two new builds. 23135 (AssertionHelper.assert_functions_changes_summary): New method 23136 to match and assert functions changes summary. 23137 (AssertionHelper.assert_abi_comparison_result): Changed to 23138 support to help assert functions changes summary. 23139 (MockGlobalConfig.{no_devel_pkg, check_all_subpackages}): New 23140 fake options with default value for running tests. 23141 (RPMTest.setUp): add new development package for running test 23142 case. 23143 (RPMTest.test_is_devel): New test to test is_devel property. 23144 (RunAbipkgdiffTest.setUp): Add new development packages for 23145 running test case. 23146 (RunAbipkgdiffTest.{test_all_success, test_all_failure, 23147 test_partial_failure}): Mock global config. 23148 (RunAbipkgdiffWithDSOOnlyOptionTest): Removed. 23149 (CompareABIFromCommandLineTest.test_compare_with_no_devel_pkg): 23150 New test to test fedabipkgdiff with or without --no-devel-pkg 23151 option. 23152 * tests/data/Makefile.am: Add new rpms. 23153 * tests/data/test-fedabipkgdiff/packages/nss-util/3.12.6/1.fc14/ 23154 x86_64/nss-util-3.12.6-1.fc14.x86_64.rpm: New rpm for running 23155 tests. 23156 * tests/data/test-fedabipkgdiff/packages/nss-util/3.12.6/1.fc14/ 23157 x86_64/nss-util-debuginfo-3.12.6-1.fc14.x86_64.rpm: New rpm for 23158 running tests. 23159 * tests/data/test-fedabipkgdiff/packages/nss-util/3.12.6/1.fc14/ 23160 x86_64/nss-util-devel-3.12.6-1.fc14.x86_64.rpm: New rpm for 23161 running tests. 23162 * tests/data/test-fedabipkgdiff/packages/nss-util/3.24.0/2.0.fc25/ 23163 x86_64/nss-util-3.24.0-2.0.fc25.x86_64.rpm: New rpm for running 23164 tests. 23165 * tests/data/test-fedabipkgdiff/packages/nss-util/3.24.0/2.0.fc25/ 23166 x86_64/nss-util-debuginfo-3.24.0-2.0.fc25.x86_64.rpm: New rpm 23167 for running tests. 23168 * tests/data/test-fedabipkgdiff/packages/nss-util/3.24.0/2.0.fc25/ 23169 x86_64/nss-util-devel-3.24.0-2.0.fc25.x86_64.rpm: New rpm for 23170 running tests. 23171 231722016-06-03 Dodji Seketeli <dodji@redhat.com> 23173 23174 Improve python modules detection 23175 * configure.ac: Include 23176 autoconf-archive/ax_check_python_modules.m4 rather than 23177 autoconf-archive/ax_python_module.m4. Use AX_CHECK_PYTHON_MODULES 23178 rather than AX_PYTHON_MODULE. 23179 * Makefile.am: Add the new file 23180 autoconf-archive/ax_check_python_modules.m4 to source distribution 23181 and remove the older autoconf-archive/ax_python_module.m4 one. 23182 * autoconf-archive/ax_check_python_modules.m4: New file. 23183 * autoconf-archive/ax_python_module.m4: Remove. 23184 231852016-05-30 Chenxiong Qi <cqi@redhat.com> 23186 23187 Add integration tests for fedabipkgdiff 23188 * configure.ac: do not detect shutil module. 23189 * tests/runtestfedabipkgdiff.py.in: do not import shutil 23190 anymore. 23191 (BUILT_ABIPKGDIFF): new global variable to reference the 23192 abipkgdiff built from source code, as the new test case' tests 23193 require this command directly rather than mocking the 23194 global_config. 23195 (test_data_dir): convert variable name to uppercase, 23196 reference to the test data directory by absolute path instead of 23197 relative path. 23198 (TEST_TOPDIR): new global variable to use data directory as the 23199 topdir passed to fedabpkgdiff to download rpms. 23200 (TEST_DOWNLOAD_CACHE_DIR): new global variable referencing a 23201 fake download cache directory for tests only. 23202 (packages, builds, rpms): new global variables as a fake 23203 storage holding packages, builds and rpms. 23204 (AssertionHelper): new class helping to assert abipkgdiff 23205 result easily. 23206 (MockClientSession): new class to mock koji.ClientSession. 23207 (MockGlobalConfig.abipkgdiff): set this option to global 23208 variable BUILT_ABIPKGDIFF. 23209 (MockKojiClientSessin): removed. 23210 (mock_get_session): removed. 23211 (GetPackageLatestBuildTest.{test_get_latest_one, 23212 test_cannot_find_a_latest_build_with_invalid_distro, 23213 test_cannot_find_a_latest_build_with_invalid_distro}): mock 23214 koji.ClientSession with new class MockClientSession. Remove 23215 invalid documentation from docstring. Use new package rather 23216 than httpd. 23217 (DownloadRPMTest.setUp): remove self.download_dir and use global 23218 TEST_DOWNLOAD_CACHE_DIR. 23219 (DownloadRPMTest.tearDown): do not remove download cache 23220 directory. 23221 (DownloadRPMTest.make_remote_file_url): do not omit positional 23222 argument specifiers in string format. 23223 (DownloadRPMTest.{test_succeed_to_download_a_rpm, 23224 test_failed_to_download_a_rpm}): set fake download cache 23225 directory to mocked get_download_dir in mock.patch decorator. 23226 (BrewListRPMsTest.test_select_specific_rpms): use new 23227 MockClientSession to mock koji.ClientSession. Rewrite test by 23228 using the new package listed in global variable packages. 23229 (RunAbipkgdiffWithDSOOnlyOptionTest.{test_abipkgdiff_with_dso_only, 23230 test_abipkgdiff_without_dso_only}): set fake download cache 23231 directory to mocked get_download_dir in mock.patch decorator. 23232 (CompareABIFromCommandLineTest): new integration test case. 23233 * tests/data/test-fedabipkgdiff/packages/dbus-glib/0.100.2/2.fc20/ 23234 i686/dbus-glib-0.100.2-2.fc20.i686.rpm: new rpm for running tests. 23235 * tests/data/test-fedabipkgdiff/packages/dbus-glib/0.100.2/2.fc20/ 23236 i686/dbus-glib-debuginfo-0.100.2-2.fc20.i686.rpm: new rpm for 23237 running tests. 23238 * tests/data/test-fedabipkgdiff/packages/dbus-glib/0.100.2/2.fc20/ 23239 i686/dbus-glib-devel-0.100.2-2.fc20.i686.rpm: new rpm for 23240 running tests. 23241 * tests/data/test-fedabipkgdiff/packages/dbus-glib/0.100.2/2.fc20/ 23242 x86_64/dbus-glib-0.100.2-2.fc20.x86_64.rpm: new rpm for running 23243 tests. 23244 * tests/data/test-fedabipkgdiff/packages/dbus-glib/0.100.2/2.fc20/ 23245 x86_64/dbus-glib-debuginfo-0.100.2-2.fc20.x86_64.rpm: new rpm 23246 for running tests. 23247 * tests/data/test-fedabipkgdiff/packages/dbus-glib/0.100.2/2.fc20/ 23248 x86_64/dbus-glib-devel-0.100.2-2.fc20.x86_64.rpm: new rpm for 23249 running tests. 23250 * tests/data/test-fedabipkgdiff/packages/dbus-glib/0.106/1.fc23/ 23251 i686/dbus-glib-0.106-1.fc23.i686.rpm: new rpm for running tests. 23252 * tests/data/test-fedabipkgdiff/packages/dbus-glib/0.106/1.fc23/ 23253 i686/dbus-glib-debuginfo-0.106-1.fc23.i686.rpm: new rpm for 23254 running tests. 23255 * tests/data/test-fedabipkgdiff/packages/dbus-glib/0.106/1.fc23/ 23256 i686/dbus-glib-devel-0.106-1.fc23.i686.rpm: new rpm for running 23257 tests. 23258 * tests/data/test-fedabipkgdiff/packages/dbus-glib/0.106/1.fc23/ 23259 x86_64/dbus-glib-0.106-1.fc23.x86_64.rpm: new rpm for running 23260 tests. 23261 * tests/data/test-fedabipkgdiff/packages/dbus-glib/0.106/1.fc23/ 23262 x86_64/dbus-glib-debuginfo-0.106-1.fc23.x86_64.rpm: new rpm for 23263 running tests. 23264 * tests/data/test-fedabipkgdiff/packages/dbus-glib/0.106/1.fc23/ 23265 x86_64/dbus-glib-devel-0.106-1.fc23.x86_64.rpm: new rpm for 23266 running tests. 23267 * tests/data/Makefile.am: add new rpms. 23268 232692016-05-31 Dodji Seketeli <dodji@redhat.com> 23270 23271 Bug 19967 - System-level suppressions for glibc 23272 * default.abignore: Add initial suppression specifications for 23273 glibc. 23274 232752016-05-31 Dodji Seketeli <dodji@redhat.com> 23276 23277 Escape all characters when reading a string in ini files 23278 * src/abg-ini.cc (read_context::peek): Take an output parameter to 23279 tell the caller when this function escaped the returned 23280 character. Added an overload without this new parameter. 23281 (read_context::read_string): Accept all characters as part of the 23282 string. 23283 * tests/data/test-diff-suppr/test7-var-suppr-9.suppr: New test 23284 input. 23285 * tests/data/test-diff-suppr/test7-var-suppr-report-9.txt: New 23286 test reference output. 23287 * tests/data/Makefile.am: Add the files above to source 23288 distribution. 23289 * tests/test-diff-suppr.cc (in_out_spec): Run a new comparison of 23290 libtest7-var-suppr-v{0,1}.so this time using the new 23291 test7-var-suppr-9.suppr specification that exercices a string with 23292 the escaped characters that we were having difficulty with. 23293 232942016-05-31 Dodji Seketeli <dodji@redhat.com> 23295 23296 Don't require all version symbol sections to present 23297 * src/abg-dwarf-reader.cc (get_symbol_versionning_sections): Allow 23298 returning just some of the three version-related section, not 23299 necessarily all of them. Adjust comment. 23300 (get_version_for_symbol): Be ready to not necessarily having the 23301 three version-related sections available. 23302 233032016-05-30 Dodji Seketeli <dodji@redhat.com> 23304 23305 Bug 20180 - Support system-wide suppression specifications 23306 * doc/manuals/abidiff.rst: Document the default suppression 23307 scheme, its interaction with the --supprs option and the new 23308 --no-default option. 23309 * doc/manuals/abipkgdiff.rst: Likewise. 23310 * doc/manuals/fedabipkgdiff.rst: Likewise. 23311 * configure.ac: Generate the tests/runtestdefaultsupprs.py file 23312 from the new tests/runtestdefaultsupprs.py.in template. 23313 * default.abignore: New file. 23314 * Makefile.am: Add it to source distribution. 23315 * src/Makefile.am: Define the ABIGAIL_ROOT_SYSTEM_LIBDIR 23316 preprocessor macro that is set the value of the $libdir autotools 23317 macro. 23318 * include/abg-tools-utils.h: Update copyright years. 23319 (get_system_libdir, get_default_system_suppression_file_path) 23320 (get_default_user_suppression_file_path) 23321 (load_default_system_suppressions) 23322 (load_default_user_suppressions): Declare new functions 23323 * src/abg-tools-utils.cc (get_system_libdir) 23324 (get_default_system_suppression_file_path) 23325 (get_default_user_suppression_file_path) 23326 (load_default_system_suppressions) 23327 (load_default_user_suppressions): Define new functions. 23328 (is_regular_file): Amend this so that it return true for symlinks 23329 to regular files too. 23330 (is_dir): Amend this so that it returns true for symlinks to 23331 directories too. 23332 * tools/abidiff.cc (options::no_default_supprs): New data member. 23333 (options::options): Initialize the new data member. 23334 (display_usage): Display a new help string for the new 23335 --no-default-suppression command line option. 23336 (parse_command_line): Parse this new command line option. 23337 (set_diff_context_from_opts): Load the default suppression 23338 specifications, unless --no-default-suppression or --supprs was 23339 provided. 23340 * tools/abipkgdiff.cc (options::no_default_supprs): New data 23341 member. 23342 (options::options): Initialize the new data member. 23343 (parse_command_line): Parse the new --no-default-suppression 23344 command line option. 23345 (main): Load the default suppression specifications, unless 23346 --no-default-suppression or --supprs was provided. 23347 * tools/fedabipkgdiff (abipkgdiff): Add --no-default-suppression 23348 to the invocation of abipkgdiff if it was provided on the command 23349 line. 23350 (build_commandline_args_parser): Parse the new 23351 --no-default-suppression command line option. 23352 * tests/runtestdefaultsupprs.py.in: New test harness template. 23353 * tests/Makefile.am: Add the new runtestdefaultsupprs.py to the 23354 set of tests. 23355 * tests/data/test-default-supprs/test0-type-suppr-0.suppr: New 23356 test input. 23357 * tests/data/test-default-supprs/test0-type-suppr-report-0.txt: Likewise. 23358 * tests/data/test-default-supprs/test0-type-suppr-v0.o: Likewise. 23359 * tests/data/test-default-supprs/test0-type-suppr-v1.o: Likewise. 23360 * tests/data/test-default-supprs/dirpkg-1-dir-report-0.txt: 23361 Likewise. 23362 * tests/data/test-default-supprs/dirpkg-1-dir1: Likewise. 23363 * tests/data/test-default-supprs/dirpkg-1-dir2: Likewise. 23364 * tests/data/Makefile.am: Add new the new tests input above to 23365 Makefile.am. 23366 * tests/runtestcanonicalizetypes.sh.in: Pass 23367 --no-default-suppression to abidiff invocations. 23368 * tests/runtestdefaultsupprs.py.in: Likewise. 23369 * tests/test-abidiff-exit.cc: Likewise. 23370 * tests/test-diff-dwarf-abixml.cc: Likewise. 23371 * tests/test-diff-filter.cc: Likewise. 23372 * tests/test-diff-suppr.cc: Likewise. 23373 * tools/abidiff.cc: Likewise. 23374 233752016-05-30 Dodji Seketeli <dodji@redhat.com> 23376 23377 Add --abipkgdiff option to fedabipkgdiff 23378 * tools/fedabipkgdiff (build_path_to_abipkgdiff): Define new 23379 function. 23380 (abipkgdiff): Invoke the new build_path_to_abipkgdiff() here. 23381 (build_commandline_args_parser): Parse the new --abipkgdiff 23382 option. 23383 233842016-05-28 Dodji Seketeli <dodji@redhat.com> 23385 23386 Better diagnostics when abipkgdiff has an extra argument 23387 * tools/abipkgdiff.cc (options::wrong_arg): New data member. 23388 (parse_command_line): Set options::wrong_arg 23389 to the wrong argument passed. 23390 (main): Tell wrong argument case apart, and report it. 23391 233922016-05-26 Dodji Seketeli <dodji@redhat.com> 23393 23394 Fix suppr spec wording in abipkgdiff manual 23395 * doc/manuals/abipkgdiff.rst: Fix the wording for the --suppr 23396 option. 23397 233982016-05-26 Dodji Seketeli <dodji@redhat.com> 23399 23400 Update reference to tools in libabigail-concepts manual 23401 * doc/manuals/libabigail-concepts.rst: Do not refer just to 23402 abidiff when talking about suppression specification. Also 23403 refer to abipkgdiff and other tools. 23404 234052016-05-30 Dodji Seketeli <dodji@redhat.com> 23406 23407 Fix some wording in the Libabigail overview manual page 23408 * doc/manuals/libabigail-overview.rst: Cleanup some confusion 23409 about Abigail-the-framework and libabigail-the-library. 23410 234112016-05-25 Dodji Seketeli <dodji@redhat.com> 23412 23413 Add test data for tests/runtestfedabipkgdiff.py 23414 * tests/data/test-fedabipkgdiff/dbus-glib-0.104-3.fc23.x86_64.rpm: 23415 New file. 23416 * tests/data/test-fedabipkgdiff/dbus-glib-0.80-3.fc12.x86_64.rpm: Likewise. 23417 * tests/data/test-fedabipkgdiff/dbus-glib-debuginfo-0.104-3.fc23.x86_64.rpm: 23418 Likewise. 23419 * tests/data/test-fedabipkgdiff/dbus-glib-debuginfo-0.80-3.fc12.x86_64.rpm: 23420 Likewise. 23421 234222016-05-25 Dodji Seketeli <dodji@redhat.com> 23423 23424 Add a 'check-valgrind' target to the top-most Makefile.am 23425 * Makefile.am (check-valgrind): Add this new target here. 23426 234272016-05-21 Chenxiong Qi <cqi@redhat.com> 23428 23429 Bug 20085 - Add --dso-only option to fedabipkgdiff 23430 * tools/fedabipkgdiff: Do not import shlex anymore. 23431 (ABIDIFF_OK, ABIDIFF_ERROR, ABIDIFF_USAGE_ERROR) 23432 (ABIDIFF_ABI_CHANGE): New global constant variables. 23433 (abipkgdiff): Pass the --dso-only option to the abipkgdiff command 23434 line tool, if that option was passed to fedabipkgdiff. Build this 23435 abipkgdiff command invocation from an array of strings, rather 23436 than from formatting a string. This makes us get rid of the shlex 23437 module. Fix typo in dry-run logged string. If there was an 23438 internal error reported by abipkgdiff, report it to stderr. 23439 (build_commandline_args_parser): Parse the --dso-only command line 23440 option. 23441 * tests/runtestfedabipkgdiff.py.in (fedabipkgdiff_mod): Fix a typo 23442 in initializing this global variable. 23443 (test_data_dir): New global variable, that is used to reference 23444 tests/data/test-fedabipkgdiff/. 23445 (RunAbipkgdiffTest.{test_all_success, test_partial_failure}): Fix 23446 typo. 23447 (Mockglobalconfig.{koji_topdir, dso_only}): New data members. 23448 (GetPackageLatestBuildTest.{test_get_latest_one, 23449 test_cannot_find_a_latest_build_with_invalid_distro, 23450 test_succeed_to_download_a_rpm, test_failed_to_download_a_rpm}): 23451 Fix typo. 23452 (BrewListRPMsTest.test_select_specific_rpms): Fix typo. 23453 (RunAbipkgdiffWithDSOOnlyOptionTest): New test case class. 23454 * doc/manuals/fedabipkgdiff.rst: update document for this new 23455 --dso-only option. 23456 * tests/data/test-fedabipkgdiff/dbus-glib-0.104-3.fc23.x86_64.rpm: 23457 New symbolic link to 23458 test-diff-pkg/dbus-glib-0.104-3.fc23.x86_64.rpm. 23459 * tests/data/test-fedabipkgdiff/dbus-glib-0.80-3.fc12.x86_64.rpm: 23460 New symbolic link to 23461 test-diff-pkg/dbus-glib-0.80-3.fc12.x86_64.rpm. 23462 * tests/data/test-fedabipkgdiff/dbus-glib-debuginfo-0.104-3.fc23.x86_64.rpm: 23463 New symbolic link to 23464 test-diff-pkg/dbus-glib-debuginfo-0.104-3.fc23.x86_64.rpm. 23465 * tests/data/test-fedabipkgdiff/dbus-glib-debuginfo-0.80-3.fc12.x86_64.rpm: 23466 New symbolic link to 23467 test-diff-pkg/dbus-glib-debuginfo-0.80-3.fc12.x86_64.rpm. 23468 * tests/data/Makefile.am: add tests/data/test-fedabipkgdiff so 23469 that this data directory and all things within it can be included 23470 in tarball. 23471 234722016-05-24 Sinny Kumari <sinny@redhat.com> 23473 23474 Change parent directory for keeping extracted packages in abipkgdiff 23475 * tools/abipkgdiff.cc (extracted_packages_parent_dir): Change 23476 TMPDIR environment variable to XDG_CACHE_HOME and default 23477 temporary parent directory to $HOME/.cache/libabigail/ 23478 234792016-05-20 Dodji Seketeli <dodji@redhat.com> 23480 23481 Make abi{pkg}diff filter out changes about private types 23482 * include/abg-comp-filter.h: Update copyright year. 23483 * src/abg-comp-filter.cc (has_virtual_mem_fn_change): Make this 23484 static function become exported. 23485 (has_virtual_mem_fn_change): Declare new function. 23486 * include/abg-suppression.h 23487 (suppression_base::{get,set}_is_artificial): Declare new 23488 accessors. 23489 (type_suppression::get_source_locations_to_keep): Return an 23490 unordered set of strings, not a vector. Add a non-const overload. 23491 (type_suppression::set_source_locations_to_keep): Set an unordered 23492 set of strings, not a vector. 23493 * src/abg-suppression.cc (suppression_base::priv::is_artificial_): 23494 New data member. 23495 (suppression_base::priv::priv): Initialize the new data member. 23496 (suppression_base::{get,set}_is_artificial): Define new accessors. 23497 (type_suppression::priv::source_locations_to_keep_): Change the 23498 vector of strings representing source file names into unordered 23499 set of string. 23500 (type_suppression::get_source_locations_to_keep): Return an 23501 unordered set of strings, not a vector. Define a non-const 23502 overload. 23503 (type_suppression::set_source_locations_to_keep): Set an unordered 23504 set of strings, not a vector. 23505 (type_suppression::suppresses_diff): Make this suppress virtual 23506 member function diffs if the enclosing type of the changed virtual 23507 member is suppressed by the current type_suppression. 23508 (read_type_suppression): Adjust to use the fact that the source 23509 locations are not stored in an unordered set, not in a vector 23510 anymore. Otherwise, using a vector here make things too slow. 23511 (type_suppression::suppresses_type): Likewise. Also, If the type 23512 we are looking at has no location because it's a true opaque type 23513 and if the current suppression is an artificial suppression that 23514 is meant to suppress change reports about non-public types, then 23515 suppress the type. 23516 * include/abg-tools-utils.h (gen_suppr_spec_from_headers): Declare 23517 new public function. 23518 * src/abg-tools-utils.cc (PRIVATE_TYPES_SUPPR_SPEC_NAME): Define a 23519 new constant variable. 23520 (handle_fts_entry): Define new static function. 23521 (gen_suppr_spec_from_headers): Define new public function. 23522 * src/abg-comparison.cc 23523 (corpus_diff::priv::apply_suppressions_to_added_removed_fns_vars): 23524 If a type suppression suppresses a given class C, make it change 23525 added/removed virtual functions whose enclosing type is C. 23526 * tools/abidiff.cc (options::{headers_dir1, headers_dir2}): New 23527 data members. 23528 (display_usage): Add help strings for --headers-dir1 and 23529 --headers-dir2. 23530 (parse_command_line): Parse the new --headers-dir1 and 23531 --headers-dir2 options. 23532 (set_diff_context_from_opts): Generate suppression specifications 23533 to filter out changes on private types, if --headers-dir1 or 23534 --headers-dir2 is given. 23535 * tools/abipkgdiff.cc (options::{devel_package1, devel_package2}): 23536 New data members. 23537 (typedef package_sptr): New typedef. 23538 (enum package::kind): New enum. 23539 (package::kind_): New data member. This replaces ... 23540 (package::is_debug_info_): ... this data member. 23541 (package::{devel_package_, private_types_suppressions_}): New data 23542 members. 23543 (package::package): Adjust. 23544 (package::get_kind): Define new member function. This replaces 23545 ... 23546 (package::is_debug_info): ... this member function overload. 23547 (package::set_kind): Define new member functin. It replaces ... 23548 (package::is_debug_info): ... this member function overload. 23549 (package::{devel_package, private_types_suppressions}): Define new 23550 accessors. 23551 (package::erase_extraction_directies): Erase the sub-directory 23552 where development packages are extracted to. 23553 (compare_args::private_types_suppr{1,2}): New data members. 23554 (compare_args::compare_args): Adjust. 23555 (display_usage): Add help strings for --devel-pkg1/--devel-pkg2. 23556 (compare): Make the overload that compares elf files take private 23557 types suppressions. Add the private types suppressions to the 23558 diff context. 23559 (pthread_routine_compare): Adjust the call to compare. 23560 (maybe_create_private_types_suppressions): Define new static 23561 function. 23562 (pthread_routine_extract_pkg_and_map_its_content): If a devel 23563 package was specified for the main package then extract it in 23564 parallel with the other package extraction. When the extraction 23565 is done, create private types suppressions by visiting the 23566 directories that contain the header files. 23567 (compare): In the overload that compares packages by scheduling 23568 comparison of individual elf files that are in the packages, pass 23569 in the private type suppressions too. 23570 (parse_command_line): Parse the new --devel-pkg{1,2} command line 23571 options. 23572 (main): Associate the devel package to the main package, if the 23573 --devel-pkg{1,2}. 23574 * doc/manuals/abidiff.rst: Add documentation about the new 23575 --headers-dir1 and --headers-dir2 options. 23576 * doc/manuals/abipkgdiff.rst: Likewise, add documentation about 23577 the new --devel-pkg1 and --devel-pkg2 libraries. 23578 * tests/data/test-diff-pkg/tbb-4.1-9.20130314.fc22.x86_64--tbb-4.3-3.20141204.fc23.x86_64-report-1.txt: 23579 New test reference output. 23580 * tests/data/test-diff-pkg/tbb-devel-4.1-9.20130314.fc22.x86_64.rpm: 23581 New test input package. 23582 * tests/data/test-diff-pkg/tbb-devel-4.3-3.20141204.fc23.x86_64.rpm: Likewise. 23583 * tests/test-diff-pkg.cc b/tests/test-diff-pkg.cc 23584 (InOutSpec::{first,second}_in_devel_package_path): New data 23585 members. 23586 (in_out_specs): Adjust. Also, add a new entry describing the new 23587 test inputs above. 23588 (test_task::perform): When the new test entry contains devel 23589 packages, pass them to abipkgdiff using the --devel1 and --devel2 23590 options. 23591 * tests/data/test-diff-suppr/test30-include-dir-v0/test30-pub-lib-v0.h: 23592 A new test input source code. 23593 * tests/data/test-diff-suppr/test30-include-dir-v1/test30-pub-lib-v1.h: Likewise. 23594 * tests/data/test-diff-suppr/test30-priv-lib-v0.cc: Likewise. 23595 * tests/data/test-diff-suppr/test30-priv-lib-v0.h: Likewise. 23596 * tests/data/test-diff-suppr/test30-priv-lib-v1.cc: Likewise. 23597 * tests/data/test-diff-suppr/test30-priv-lib-v1.h: Likewise. 23598 * tests/data/test-diff-suppr/test30-pub-lib-v0.cc: Likewise. 23599 * tests/data/test-diff-suppr/test30-pub-lib-v0.so: Add new test 23600 binary input. 23601 * tests/data/test-diff-suppr/test30-pub-lib-v1.cc: Add new test 23602 input source code. 23603 * tests/data/test-diff-suppr/test30-pub-lib-v1.so: Add new test 23604 binary input. 23605 * tests/data/test-diff-suppr/test30-report-0.txt: Add new test 23606 reference output. 23607 * tests/data/test-diff-suppr/test30-report-1.txt: Add new test 23608 reference output. 23609 * tests/test-diff-suppr.cc (InOutSpec::headers_dir{1,2}): New data 23610 members. 23611 (InOutSpec::abidiff_options): Renamed the bidiff_options data 23612 member into this. 23613 (in_out_specs): Adjust. Also, added the new test input above to 23614 this. 23615 (main): Adjust to invoke abidiff with the new --hd1 and --hd2 23616 options if the input specs for the tests has the new 23617 InOutSpec::headers_dir{1,2} data member set. Renamed bidiff into 23618 abidiff. 23619 * tests/data/Makefile.am: Add the new test inputs to the source 23620 distribution. 23621 236222016-05-24 Dodji Seketeli <dodji@redhat.com> 23623 23624 Fix the number of removed functions in change report 23625 * src/abg-suppression.cc (corpus_diff::report): Show the net 23626 number of removed functions, not the total number of the removed 23627 functions. 23628 236292016-05-23 Dodji Seketeli <dodji@redhat.com> 23630 23631 Document how to handle regression tests in CONTRIBUTING 23632 * CONTRIBUTING: Add a section about regression tests. 23633 * Makefile.am: Add a check-valgrind-recursive target. 23634 236352016-05-21 Dodji Seketeli <dodji@redhat.com> 23636 23637 Fix whitespaces in autotools files 23638 * configure.ac: Fix some white spaces. 23639 * tests/Makefile.am: Likewise. 23640 236412016-05-22 Dodji Seketeli <dodji@redhat.com> 23642 23643 Fix white space in abg-comparison.cc 23644 * src/abg-comparison.cc (struct diff_context::priv): Fix indentation. 23645 236462016-05-21 Dodji Seketeli <dodji@redhat.com> 23647 23648 Fix bash completion configure status 23649 * configure.ac: If bash completion is disabled, say so. 23650 236512016-05-22 Dodji Seketeli <dodji@redhat.com> 23652 23653 Enhance API doc for diff_context::add_diff 23654 * src/abg-comparison.cc (diff_context::add_diff): Enhance the API 23655 doc string. 23656 236572016-05-20 Dodji Seketeli <dodji@redhat.com> 23658 23659 Add missing API doc strings 23660 * src/abg-comparison.cc (diff::diff) 23661 (decl_diff_base::decl_diff_base, distinct_diff::distinct_diff) 23662 (base_diff::base_diff, scope_diff::scope_diff) 23663 (fn_parm_diff::fn_parm_diff) 23664 (function_type_diff::function_type_diff) 23665 (type_decl_diff::type_decl_diff, typedef_diff::typedef_diff) 23666 (translation_unit_diff::translation_unit_diff) 23667 (corpus_diff::corpus_diff): Add missing API doc strings. 23668 236692016-05-20 Dodji Seketeli <dodji@redhat.com> 23670 23671 Optimize out some shared_ptr use 23672 * include/abg-ir.h (pointer_type_def::get_naked_pointed_to_type): 23673 Declare new member function. 23674 * src/abg-ir.cc (pointer_type_def::priv::naked_pointed_to_type_): 23675 New data member. 23676 (pointer_type_def::priv::priv): Adjust to initialize the new data 23677 member. 23678 (pointer_type_def::pointer_type_def): Adjust to use the 23679 constructor pointer_type_def::priv::priv to initialize the 23680 pointed-to type (including its new naked pointer variant). So we 23681 do not have to initialize the priv_->pointed_to_type_ explicitely 23682 in the constructor anymore. 23683 (pointer_type_def::get_naked_pointed_to_type): Define new data 23684 member. 23685 (pointer_type_def::get_qualified_name): Use a naked pointer to the 23686 pointed-to type, rather than a smart pointer. 23687 236882016-05-20 Dodji Seketeli <dodji@redhat.com> 23689 23690 Light optimizations by passing reference to smart pointers around 23691 * include/abg-fwd.h (get_type_name): Take a reference to type_sptr. 23692 * src/abg-ir.cc (get_type_name): Take a reference to type_sptr. 23693 (suppression_base::priv::{get_file_name_regex, 23694 get_file_name_not_regex, get_soname_regex, get_soname_not_regex}): 23695 Return a reference to regex_t_sptr. 23696 236972016-05-20 Dodji Seketeli <dodji@redhat.com> 23698 23699 Minimize number of string::length calculation 23700 * src/abg-tools-utils.cc (string_ends_with): Call string::length 23701 just once on each instance of string that matters. 23702 237032016-05-20 Dodji Seketeli <dodji@redhat.com> 23704 23705 Avoid unnecessary computation of type name in suppression evaluation 23706 * src/abg-suppression.cc (type_suppression::suppresses_type): If 23707 neither the type suppression "name" or "name_regex" properties 23708 where provided in the suppression specification, then do not try 23709 to look at the type name. 23710 237112016-05-22 Dodji Seketeli <dodji@redhat.com> 23712 23713 Plug leak of diffs of member variables of class type 23714 * include/abg-comparison.h (diff_wptr, unordered_diff_sptr_set): New typedefs. 23715 (struct diff_sptr_hasher): Define new type. 23716 (diff_context::keep_diff_alive): Declare new member function. 23717 (diff::children_nodes): Return a vector of diff*, rather than a 23718 vector of diff_sptr. 23719 * src/abg-comparison.cc (diff_context::priv::live_diffs_): New 23720 data member. 23721 (diff_context::keep_diff_alive): Define new data member. 23722 (diff::priv::children_): Make this be a vector of diff*, rather 23723 than a vector of diff_sptr. 23724 (diff_less_than_functor::operator()): Add a new overload for 23725 diff*. Make the existing overload of diff_sptr use the new one. 23726 (diff::children_nodes): Adjust; 23727 (diff::append_child_node): Make sure the child node is kept 23728 alive. Only add the naked pointer to the child node to the vector 23729 of children. 23730 (diff::traverse): Adjust. 23731 (var_diff::priv::type_diff_): Make this be a weak pointer, rather 23732 than a shared pointer. 23733 (var_diff::type_diff): The var_diff::priv::type_diff_ data member 23734 is now a weak pointer, so make this accessor convert it to a 23735 shared pointer. 23736 (corpus_diff::priv::children_): Turn this into a vector of diff*, 23737 rather than a vector of diff_sptr. 23738 (corpus_diff::children_nodes): Adjust. 23739 (corpus_diff::append_child_node): Make sure the child node is kept 23740 alive. Only add the naked pointer to the child node to the vector 23741 of children. 23742 (category_propagation_visitor::visit_end): Adjust. 23743 (suppression_categorization_visitor::visit_end): Adjust. 23744 (redundancy_marking_visitor::{visit_begin, visit_end}): Adjust. 23745 237462016-05-20 Dodji Seketeli <dodji@redhat.com> 23747 23748 Speedup diff node child insertion 23749 * src/abg-comparison.cc (corpus_diff::append_child_node): Insert 23750 the new child at the right point in the vector of children, so 23751 that it remains sorted. 23752 237532016-05-21 Dodji Seketeli <dodji@redhat.com> 23754 23755 Fix invocation of delete operator in test-read-dwarf.cc 23756 * tests/test-read-dwarf.cc (main): Call delete[], not delete. 23757 237582016-05-22 Dodji Seketeli <dodji@redhat.com> 23759 23760 Plug leak of debug info handles 23761 * configure.ac: Check the presence of dwarf_getalt in libdw. If 23762 it's present, define the preprocessor macro 23763 LIBDW_HAS_DWARF_GETALT. Update the autoconf configuration 23764 summary. 23765 * src/abg-dwarf-reader.cc: Add config.h. 23766 (find_alt_debug_info_location): Factorize this out of ... 23767 (find_alt_debug_info): ... this function. Use dwarf_getalt if 23768 present, otherwise, keep using dwfl_standard_find_debuginfo. In 23769 the later case, return the file descriptor opened to access the 23770 alternate debug info, by parameter, so that the caller can fclose 23771 it. 23772 (read_context::alt_fd_): New data member. 23773 (read_context::read_context): Initialize the new alt_fd_ data 23774 member. 23775 (read_context::load_debug_info): Store the file descriptor used to 23776 access the alternate debug info into the new alt_fd_ data member. 23777 (read_context::~read_context): New desctructor. 23778 (get_soname_of_elf_file, get_type_of_elf_file): Free the elf 23779 handle. 23780 (read_context::load_debug_info): Be paranoid in making sure we 23781 never override alt_dwarf_. 23782 * tests/data/test-alt-dwarf-file/test0-report.txt: Adjust. 23783 237842016-05-22 Dodji Seketeli <dodji@redhat.com> 23785 23786 Plug leak of shared private data of class_diff type 23787 * include/abg-comparison.h (class_diff::get_priv): Declare new 23788 member function. 23789 (class_diff::get_priv): Define new member function. 23790 (class_diff::{chain_into_hierarchy, base_changes, deleted_bases, 23791 inserted_bases, changed_bases, base_changes, member_types_changes, 23792 member_types_changes, data_members_changes, inserted_data_members, 23793 deleted_data_members, member_fns_changes, changed_member_fns, 23794 member_fns_changes, deleted_member_fns, inserted_member_fns, 23795 member_fn_tmpls_changes, member_class_tmpls_changes, 23796 member_class_tmpls_changes, report}): Rather than accessing 23797 class_diff::priv directly, use the new class_diff::get_priv. 23798 237992016-05-21 Dodji Seketeli <dodji@redhat.com> 23800 23801 Remove circular ref from class_decl::priv::definition_of_declaration 23802 * include/abg-ir.cc (class_decl::get_definition_of_declaration): 23803 Return a shared pointer, rather than a reference to a shared pointer. 23804 * src/abg-ir.cc (class_decl::priv::definition_of_declaration_): 23805 Make this be a weak pointer. 23806 (class_decl::get_definition_of_declaration): 23807 Likewise. And return the shared pointer built out of the weak 23808 pointer we have in there now. 23809 238102016-05-21 Dodji Seketeli <dodji@redhat.com> 23811 23812 Plug leak of regex_t in suppression engine 23813 * include/abg-sptr-utils.h (build_sptr<T>): Declare an overload that 23814 allocates a T* and wraps it into a shared_ptr<T>. 23815 (build_sptr<regex_t>): Declare a specialization for regex_t. 23816 * src/abg-corpus.cc (build_sptr<regex_t>()): Define the 23817 specialization here. 23818 * src/abg-suppression.ccp 23819 (suppression_base::priv::{get_file_[not]_name_regex, 23820 get_soname_[not]_regex}): Use the new build_sptr<regex_t>(). 23821 (type_suppression::priv::{get_type_name_regex, 23822 get_source_location_to_keep_regex}): Likewise. 23823 (function_suppression::parameter_spec::priv::get_type_name_regex): 23824 Likewise. 23825 (function_suppression::priv::{get_name_regex, 23826 get_return_type_regex, get_symbol_name_regex, 23827 get_symbol_version_regex}): Likewise. 23828 (variable_suppression::priv::{get_name_regex, 23829 get_symbol_name_regex, get_symbol_version_regex, 23830 get_type_name_regex}): Likewise. 23831 238322016-05-18 Dodji Seketeli <dodji@redhat.com> 23833 23834 Plug leak of diff_context_sptr after calling compute_diff 23835 * src/abg-comparison.cc (diff::priv::ctxt_): Make this a weak_ptr. 23836 (diff::priv::get_context): Convert the weak pointer to the context 23837 into a shared_ptr and return it. 23838 (diff::priv::is_filtered_out): Adjust to use 23839 diff::priv::get_context() to access the context. 23840 (diff::context): Likewise. 23841 (corpus_diff::priv::ctxt_): Make this a weak_ptr. 23842 (corpus_diff::priv::priv): Add a new overload that takes two 23843 corpora and a diff context. 23844 (corpus_diff::priv::get_context): Convert the weak pointer to the 23845 context into a shared_ptr and return it. 23846 (corpus_diff::priv::ensure_lookup_tables_populated): Adjust to use 23847 the new corpus_diff::priv::get_context to get the context. 23848 (variable_is_suppressed): Likewise. 23849 (corpus_diff::priv::{apply_suppressions_to_added_removed_fns_vars, 23850 apply_filters_and_compute_diff_stats, emit_diff_stats, 23851 categorize_redundant_changed_sub_nodes, 23852 clear_redundancy_categorization}): Likewise. 23853 (corpus_diff::{corpus_diff, context, 23854 apply_filters_and_suppressions_before_reporting}): Adjust. 23855 * tools/abipkgdiff.cc (compare): Make the overload that compares 23856 elf binaries take a diff context output parameter. After the 23857 context is created by this function, it's return to the caller, so 23858 that it's life time is bound to the scope this function was 23859 called from. 23860 (pthread_routine_compare): Create a shared pointer to hold a 23861 reference on a diff context. Pass that shared pointer by 23862 reference to the compare function that compares elf binaries. 23863 Rather than storing corpora in the reports_map, (as those corpora 23864 would then out-live the diff context and thus create memory 23865 corruption issues), emit the report directly into an ostringstream 23866 and store that stream in reports_map. 23867 (compare): In the overoad that compares packages, rather than 23868 trying to get corpora from the report_map, just emit the content 23869 of the ostringstream that is now there. 23870 238712016-05-22 Dodji Seketeli <dodji@redhat.com> 23872 23873 Fix a read passed-the-end in abg-dwarf-reader.cc 23874 * src/abg-dwarf-reader.cc (lookup_symbol_from_gnu_hash_tab): Do 23875 not read passed the end of the array. 23876 238772016-05-21 Dodji Seketeli <dodji@redhat.com> 23878 23879 Support running "make check-valgrind" 23880 * autoconf-archive/ax_valgrind_check.m4: Add new file. Copied it 23881 from http://www.gnu.org/software/autoconf-archive/ax_valgrind_check.html. 23882 * configure.ac: Include the new ax_valgrind_check.m4 file. 23883 Initialize the valgrind checking on tests. Update the configure 23884 status. 23885 * tests/test-valgrind-suppressions.supp: New valgrind suppression 23886 file to silence memcheck leak errors from python. 23887 * tests/Makefile.am: Add test-valgrind-suppressions.supp to source 23888 distribution. Add check-valgrind-memcheck-recursive target. 23889 238902016-05-22 Dodji Seketeli <dodji@redhat.com> 23891 23892 Update the CONTRIBUTING file 23893 * CONTRIBUTING: Cleanup. 23894 238952016-05-22 Dodji Seketeli <dodji@redhat.com> 23896 23897 Update the COMMIT-LOG-GUIDELINES file 23898 * COMMIT-LOG-GUIDELINES: Various enhancements. 23899 239002016-05-16 Dodji Seketeli <dodji@redhat.com> 23901 23902 Do not run fedabipkgdiff tests if --enable-fedabipkgdiff is turned off 23903 * tests/Makefile.am: Make running runtestfedabipkgdiff be 23904 dependent on ENABLE_FEDABIPKGDIFF. 23905 239062016-05-13 Chenxiong Qi <cqi@redhat.com> 23907 23908 Fix pep8 error 23909 * tools/fedabipkgdiff (build_commandline_args_parser): Fix 23910 PEP8 error, line is too long. 23911 239122016-05-13 Chenxiong Qi <cqi@redhat.com> 23913 23914 Use consistent string format 23915 * tools/fedabipkgdiff (download_rpm): do not omit positional 23916 argument specifiers in string format. 23917 239182016-05-16 Dodji Seketeli <dodji@redhat.com> 23919 23920 Remove config.h.in from the repository 23921 * config.h.in: Remove from repository. 23922 239232016-02-09 Chenxiong Qi <cqi@redhat.com> 23924 23925 Bug 19428 - New fedabipkgdiff utility 23926 * autoconf-archive/ax_compare_version.m4: New file copied from the 23927 autoconf-archive project. 23928 * autoconf-archive/ax_prog_python_version.m4: Likewise. 23929 * autoconf-archive/ax_python_module.m4: Likewise. 23930 * Makefile.am: Add the new files above to the source distribution. 23931 * configure.ac: Include the new m4 macros from the autoconf 23932 archive. Add a new --enable-fedabipkgdiff option. Update the 23933 report at the end of the configure process to show the status of 23934 the fedabipkgdiff feature. Add check for prerequisite python 23935 modules argparse, glob, logging, os, re, shlex, subprocess, sys, 23936 itertools, urlparse, itertools, shutil, unittest, xdg, koji and 23937 mock. These are necessary for the unit test of 23938 fedabipkgdiff. Generate tests/runtestfedabipkgdiff.py into the 23939 build directory, from the tests/runtestfedabipkgdiff.py.in input 23940 file. 23941 * tools/Makefile.am: Include the fedabipkgdiff to the source 23942 distribution and install it if the "fedabipkgdiff" feature is 23943 enabled. 23944 * tests/Makefile.am: Rename runtestfedabipkgdiff.sh into 23945 runtestfedabipkgdiff.py. Add the new runtestfedabipkgdiff.py.in 23946 autoconf template file in here. 23947 * tests/runtestfedabipkgdiff.py.in: New unit test file. 23948 * tools/fedabipkgdiff: New fedabipkgdiff tool. 23949 * doc/manuals/fedabipkgdiff.rst: New manual. 23950 239512016-05-07 Dodji Seketeli <dodji@redhat.com> 23952 23953 Implement a [suppress_file] suppression directive 23954 * doc/manuals/libabigail-concepts.rst: Document the new 23955 'suppress_file' directive. 23956 * include/abg-suppression.h (file_suppression): Define new class. 23957 (file_suppression_sptr): Define new typedef. 23958 (is_file_suppression, file_is_suppressed): Declare new functions. 23959 * src/abg-suppression.cc (): 23960 (read_file_suppression, is_file_suppression, file_is_suppressed): 23961 Define new functions. 23962 (file_suppression::{file_suppression, suppresses_file, 23963 ~file_suppression}): Define new member functions. 23964 * tools/abidiff.cc (main): If a suppression specification 23965 suppresses one of the input files, then do not perform the 23966 comparison. 23967 * tools/abipkgdiff.cc (compare): If a suppression specification 23968 suppresses a file that is to be compared, then do not perform the 23969 comparison. 23970 * tools/abicompat.cc (create_diff_context): New static function. 23971 (perform_compat_check_in_normal_mode) 23972 (perform_compat_check_in_weak_mode): Adjust to take a context in 23973 parameter. Do not create a diff context here anymore, do not load 23974 suppression files here either. 23975 (main): Use the new create_diff_context to create a diff context 23976 and initialize it, including loading suppression specifications. 23977 If any suppression specification suppresses a file to load, then 23978 do not load perform any compatibility checking. Adjust 23979 invocations of perform_compat_check_in_weak_mode and 23980 perform_compat_check_in_normal_mode to pass the diff context. 23981 * tests/data/test-diff-suppr/test0-type-suppr-3.suppr: New test 23982 input. 23983 * tests/data/test-diff-suppr/test0-type-suppr-4.suppr: Likewise. 23984 * tests/data/test-diff-suppr/test0-type-suppr-report-4.txt: Likewise. 23985 * tests/data/test-diff-suppr/test0-type-suppr-5.suppr: Likewise. 23986 * tests/data/test-diff-suppr/test0-type-suppr-report-5.txt: 23987 Likewise. 23988 * tests/data/test-diff-suppr/test0-type-suppr-6.suppr: Likewise. 23989 * tests/data/test-diff-suppr/test0-type-suppr-report-6.txt: 23990 Likewise. 23991 * tests/data/test-diff-suppr/test0-type-suppr-report-7.txt: 23992 Likewise. 23993 * tests/test-diff-suppr.cc (in_out_specs): Use the new test 23994 inputs. 23995 * tests/data/test-abicompat/test0-fn-changed-1.suppr: New test 23996 input. 23997 * tests/data/test-abicompat/test0-fn-changed-report-3.txt: 23998 Likewise. 23999 * tests/test-abicompat.cc (in_out_specs):: Use the new test 24000 inputs. 24001 * tests/data/Makefile.am: Add the new test material to source 24002 distribution. 24003 240042016-05-07 Dodji Seketeli <dodji@redhat.com> 24005 24006 Split suppression engine off of abg-comparison.{cc,h} 24007 * include/Makefile.am: Add abg-suppression.h to source 24008 distribution. 24009 * include/abg-comparison.h: Remove abg-ini.h include directive. 24010 (suppression_sptr, suppressions_type): Move these typedefs to 24011 abg-fwd.h. 24012 (class suppression_base, type_suppression) 24013 (type_suppression::insertion_range) 24014 (type_suppression::insertion_range::boundary) 24015 (type_suppression::insertion_range::integer_boundary) 24016 (type_suppression::insertion_range::fn_call_expr_boundary) 24017 (function_suppression, function_suppression::parameter_spec) 24018 (variable_suppression): Move these type definitions to the new 24019 abg-suppression.h. 24020 (read_suppressions, is_type_suppression, is_integer_boundary) 24021 (is_fn_call_expr_boundary, is_function_suppression) 24022 (is_variable_suppression, operator&) 24023 (operator|): Move these function declarations to the new 24024 abg-suppression.h. 24025 (type_suppression, type_suppression_sptr, type_suppression_type) 24026 (function_suppression, function_suppression_sptr) 24027 (function_suppressions_type, variable_suppression) 24028 (variable_suppression_sptr, variable_suppressions_type): Move 24029 these forward declaration and typedefs to the new 24030 abg-suppression.h. 24031 (diff_context::suppressions): Adjust return type to 24032 suppr::suppressions_type&. 24033 (diff_context::add_suppression): Adjust parameter type to 24034 suppr::suppressions_sptr. 24035 (diff_context::add_suppressions): Adjust parameter type 24036 suppr::suppressions_type&. 24037 (is_type_diff, is_decl_diff, is_var_diff, is_function_decl_diff) 24038 (is_pointer_diff, is_reference_diff, is_fn_parm_diff) 24039 (is_base_diff, is_child_node_of_function_parm_diff) 24040 (is_child_node_of_base_diff): Declare these new functions. They 24041 were previously static, local to abg-comparison.cc only. Now they 24042 need to be exported because they are used by the suppression 24043 engine's code that now lives in its one files. 24044 * include/abg-fwd.h (suppr::{suppression_base, suppression_sptr, 24045 suppressions_type}): Forward declare these here. 24046 * include/abg-suppression.h (class suppression_base) 24047 (type_suppression, type_suppression::insertion_range) 24048 (type_suppression::insertion_range::boundary) 24049 (type_suppression::insertion_range::integer_boundary) 24050 (type_suppression::insertion_range::fn_call_expr_boundary) 24051 (function_suppression, function_suppression::parameter_spec) 24052 (variable_suppression): Move these type definitions here, in the 24053 namespace suppr. 24054 (read_suppressions, is_type_suppression, is_integer_boundary) 24055 (is_fn_call_expr_boundary, is_function_suppression) 24056 (is_variable_suppression, operator&) 24057 (operator|): Move these function decalration here, in the 24058 namespace suppr. 24059 (type_suppression_sptr, type_suppressions_type) 24060 (function_suppression_sptr, function_suppressions_type) 24061 (variable_suppression_sptr, variable_suppressions_type): Move 24062 these typedefs here, in the namespace suppr. 24063 * src/Makefile.am: add src/abg-suppression.cc to source 24064 distribution. 24065 * src/abg-comparison.cc (is_type_diff, is_decl_diff, is_var_diff) 24066 (is_function_decl_diff, is_pointer_diff, is_reference_diff) 24067 (is_reference_or_pointer_diff, is_fn_parm_diff, is_base_diff) 24068 (is_child_node_of_function_parm_diff, is_child_node_of_base_diff): 24069 Export these functions. 24070 (*suppression*): Move all the suppression-related definitions to 24071 the new abg-suppression.cc. 24072 * src/abg-suppression.cc: New file. Contains all the *suppression* 24073 definitions from src/abg-comparison.cc, that are put in the suppr 24074 namespace. 24075 * tools/abicompat.cc: Adjust. 24076 * tools/abidiff.cc: Likewise. 24077 * tools/abipkgdiff.cc: Likewise. 24078 240792016-05-08 Dodji Seketeli <dodji@redhat.com> 24080 24081 Fix indentation for abidiff manual 24082 * doc/manuals/abidiff.rst: Fix indentation for the --suppression 24083 paragraph. 24084 240852016-05-08 Dodji Seketeli <dodji@redhat.com> 24086 24087 Add several shortcuts to options for abicompat 24088 * doc/manuals/abicompat.rst: Update documentation. 24089 * tools/abicompat.cc (display_usage): Update help strings. 24090 (parse_command_line): Add shortcuts --suppr, --appd, --libd1 and 24091 --libd2. 24092 240932016-05-08 Dodji Seketeli <dodji@redhat.com> 24094 24095 Update copyright year in tools/abicompat.cc 24096 * tools/abicompat.cc: Update copyright years to 2016. 24097 240982016-05-07 Dodji Seketeli <dodji@redhat.com> 24099 24100 Fix mention of tool's name in abidiff error message 24101 * src/abg-tools-utils.cc (emit_prefix): Try to emit the prefix 24102 only if the program name was provided. 24103 * abidiff.cc (maybe_check_suppression_files): Pass the name of the 24104 tool to the check_file function. 24105 241062016-05-07 Dodji Seketeli <dodji@redhat.com> 24107 24108 Update copyright year on abg-comparison.h 24109 * include/abg-comparison.h: Update copyright year. 24110 241112016-05-08 Dodji Seketeli <dodji@redhat.com> 24112 24113 Doc not show classes' inherited members in apidoc 24114 * doc/api/libabigail.doxy: Don't show inherited member functions 24115 or variables of a given class. 24116 241172016-05-08 Dodji Seketeli <dodji@redhat.com> 24118 24119 Fix typo in concept manual 24120 * doc/manuals/libabigail-concepts.rst: Do not refer to abidiff 24121 specifically for suppressions because several tools use 24122 suppressions. 24123 241242016-05-08 Dodji Seketeli <dodji@redhat.com> 24125 24126 Fix indentation in concepts manual 24127 * doc/manuals/libabigail-concepts.rst: Fix indentation. 24128 241292016-05-06 Dodji Seketeli <dodji@redhat.com> 24130 24131 Add some apidoc to dwarf_reader 24132 * include/abg-dwarf-reader.h (namespace dwarf_reader): Add apidoc. 24133 (enum elf_type): Add an apidoc for each enumerator. 24134 * src/abg-dwarf-reader.cc (get_type_of_elf_file): Add an apidoc 24135 for the 'type' parameter. 24136 241372016-04-28 Dodji Seketeli <dodji@redhat.com> 24138 24139 [abipkgdiff] Show SONAME of removed/added libraries 24140 * tools/abipkgdiff.cc (abi_diff::{added,removed}_binaries): Change 24141 the type of these data member from vector<string> to 24142 vector<elf_file_sptr>. 24143 (compare): Adjust. Show the soname of added/removed binaries. 24144 241452016-04-27 Dodji Seketeli <dodji@redhat.com> 24146 24147 Bug 20015 - support file_name_not_regexp and soname_not_regexp in suppr specs 24148 * include/abg-comparison.h 24149 (suppression_base::{get,set}_file_name_not_regex_str): Declare new 24150 member functions. 24151 (suppression_base::{get,set}_soname_not_regex_str): Likewise. 24152 (suppression_base::{names,sonames}_of_binaries_match): Likewise. 24153 * src/abg-comparison.cc 24154 (suppression_base::priv::get_file_name_regex): Fix comment. 24155 (suppression_base::priv::get_file_name_not_regex): New member 24156 function. 24157 (suppression_base::priv::get_soname_regex): Fix comment. 24158 (suppression_base::priv::get_soname_not_regex): New member 24159 function. 24160 (suppression_base::{get,set}_file_name_not_regex_str): Define new 24161 member functions. 24162 (suppression_base::{get,set}_soname_not_regex_str): Likewise. 24163 (suppression_base::{names,sonames}_of_binaries_match): Likewise. 24164 These got factorized out of type_suppression::suppresses_type, 24165 function_suppression::suppresses_function, 24166 function_suppression::suppresses_function_symbol, 24167 variable_suppression::suppresses_variable, 24168 variable_suppression::suppresses_variable_symbol. 24169 (type_suppression::suppresses_type): Use the new 24170 suppression_base::{names,sonames}_of_binaries_match. 24171 (read_type_suppression): Read the new file_name_not_regexp and 24172 soname_not_regexp properties. 24173 (function_suppression::{suppresses_function, 24174 suppresses_function_symbol}): Use the new 24175 suppression_base::{names,sonames}_of_binaries_match. 24176 (read_function_suppression): Read the new file_name_not_regexp and 24177 soname_not_regexp properties. 24178 (variable_suppression::{suppresses_variable, 24179 variable_suppression::suppresses_variable_symbol}): Use the new 24180 suppression_base::{names,sonames}_of_binaries_match. 24181 (read_variable_suppression): Use the new 24182 suppression_base::{names,sonames}_of_binaries_match. 24183 * doc/manuals/libabigail-concepts.rst: Document the new 24184 file_name_not_regexp and soname_not_regexp suppression properties. 24185 * tests/data/test-diff-suppr/test24-soname-report-10.txt: New test 24186 reference output. 24187 * tests/data/test-diff-suppr/test24-soname-report-11.txt: Likewise. 24188 * tests/data/test-diff-suppr/test24-soname-report-12.txt: Likewise. 24189 * tests/data/test-diff-suppr/test24-soname-report-13.txt: Likewise. 24190 * tests/data/test-diff-suppr/test24-soname-report-14.txt: Likewise. 24191 * tests/data/test-diff-suppr/test24-soname-report-15.txt: Likewise. 24192 * tests/data/test-diff-suppr/test24-soname-report-16.txt: Likewise. 24193 * tests/data/test-diff-suppr/test24-soname-report-9.txt: Likewise. 24194 * tests/data/test-diff-suppr/test24-soname-suppr-10.txt: New test input. 24195 * tests/data/test-diff-suppr/test24-soname-suppr-11.txt: Likewise. 24196 * tests/data/test-diff-suppr/test24-soname-suppr-12.txt: Likewise. 24197 * tests/data/test-diff-suppr/test24-soname-suppr-13.txt: Likewise. 24198 * tests/data/test-diff-suppr/test24-soname-suppr-14.txt: Likewise. 24199 * tests/data/test-diff-suppr/test24-soname-suppr-15.txt: Likewise. 24200 * tests/data/test-diff-suppr/test24-soname-suppr-16.txt: Likewise. 24201 * tests/data/test-diff-suppr/test24-soname-suppr-9.txt: Likewise. 24202 * tests/data/test-diff-suppr/test29-soname-report-2.txt: New test 24203 reference output. 24204 * tests/data/test-diff-suppr/test29-soname-report-3.txt: Likewise. 24205 * tests/data/test-diff-suppr/test29-soname-report-4.txt: Likewise. 24206 * tests/data/test-diff-suppr/test29-soname-report-5.txt: Likewise. 24207 * tests/data/test-diff-suppr/test29-soname-report-6.txt: Likewise. 24208 * tests/data/test-diff-suppr/test29-soname-report-7.txt: Likewise. 24209 * tests/data/test-diff-suppr/test29-soname-report-8.txt: Likewise. 24210 * tests/data/test-diff-suppr/test29-suppr-2.txt: New test input. 24211 * tests/data/test-diff-suppr/test29-suppr-3.txt: Likewise. 24212 * tests/data/test-diff-suppr/test29-suppr-4.txt: Likewise. 24213 * tests/data/test-diff-suppr/test29-suppr-5.txt: Likewise. 24214 * tests/data/test-diff-suppr/test29-suppr-6.txt: Likewise. 24215 * tests/data/test-diff-suppr/test29-suppr-7.txt: Likewise. 24216 * tests/data/test-diff-suppr/test29-suppr-8.txt: Likewise. 24217 * tests/data/Makefile.am: Add the new test material to source 24218 distribution. 24219 * tests/test-diff-suppr.cc (in_out_specs): Make this test harness 24220 run over the new test inputs. 24221 242222016-04-27 Dodji Seketeli <dodji@redhat.com> 24223 24224 Make API documentation of thread pools visible 24225 * include/abg-workers.h: Document the workers namespace, the task, 24226 queue and queue::task_done_notify types. 24227 * src/abg-workers.cc: Move the documentation of the thread_pool 24228 module inside the abigail::worker namespace, so that references to 24229 task and queue types (which are also in the abigail::worker 24230 namespace) can be resolved in the apidoc. 24231 242322016-04-27 Dodji Seketeli <dodji@redhat.com> 24233 24234 Update documentation to require doxygen and python-sphinx for building 24235 * COMPILING: Add python-sphinx to the set of required packages to 24236 build the documentation. 24237 * doc/website/mainpage.txt: Update the website to mention doxygen 24238 and python-sphinx for documentation. 24239 242402016-04-27 Dodji Seketeli <dodji@redhat.com> 24241 24242 Add doc, info, man and html-doc targets to generate documentation 24243 * Makefile.am: Add info, man and html-doc targets to generate 24244 documentation in info, man and html formats. If you want to 24245 generate them all, then the doc target is the one to be used. 24246 * COMPILING: Add documentation for the above. 24247 242482016-04-25 Dodji Seketeli <dodji@redhat.com> 24249 24250 Bug 19964 - Cannot load function aliases on ppc64 24251 * src/abg-dwarf-reader.cc (read_context::load_symbol_maps): While 24252 filling the ppc64-specific "function-entry-address => symbol" map, 24253 if we stumble accross a function-entry-address that belongs to an 24254 alias of 'symbol', then assume the alias must have been registered 24255 as an alias already, by the platform-agnostic code. Do not try to 24256 register the alias again. 24257 * tests/data/Makefile.am: Add the new test input binaries to the 24258 source distribution. 24259 * tests/data/test-diff-dwarf/libtest36-ppc64-aliases-v0.so: New 24260 binary test input. 24261 * tests/data/test-diff-dwarf/libtest36-ppc64-aliases-v1.so: Likewise. 24262 * tests/data/test-diff-dwarf/test36-ppc64-aliases-report-0.txt: 24263 New test reference output. 24264 * tests/data/test-diff-dwarf/test36-ppc64-aliases-v0.cc: Source 24265 code for the new binary test input above. 24266 * tests/data/test-diff-dwarf/test36-ppc64-aliases-v1.cc: Likewise. 24267 * tests/test-diff-dwarf.cc: Add the new test input to the list of 24268 test inputs considered by this test harness. 24269 242702016-04-20 Sinny Kumari <sinny@redhat.com> 24271 24272 Bug 19961 - Distinguish between PI executable and shared library 24273 * include/abg-dwarf-reader.h (elf_type): Add new enumerator 24274 ELF_TYPE_PI_EXEC. 24275 * src/abg-dwarf-reader.cc 24276 (lookup_data_tag_from_dynamic_segment): New function for 24277 data tag lookup in dynamic segment of an elf 24278 (elf_file_type): Return ELF_TYPE_PI_EXEC file type for 24279 a PI executable. 24280 (get_elf_file_type): Change this to take an elf handle. 24281 (get_type_of_elf_file): New function that got factorized out of ... 24282 (load_dt_soname_and_needed): ... this one. 24283 * tools/abipkgdiff.cc (create_maps_of_package_content): Also 24284 consider ELF_TYPE_PI_EXEC file type. 24285 (compare): Likewise. 24286 * tests/test-diff-pkg.cc (in_out_specs): Test case additions 24287 * tests/data/Makefile.am: Include test files 24288 * tests/data/test-diff-pkg/tarpkg-1-dir1.tar.gz: New test data 24289 * tests/data/test-diff-pkg/tarpkg-1-dir2.tar.gz: New test data 24290 * tests/data/test-diff-pkg/tarpkg-1-report-0.txt: New test result 24291 242922016-04-17 Dodji Seketeli <dodji@redhat.com> 24293 24294 Update website to 1.0.rc4 24295 * doc/website/mainpage.txt: Update tarball reference to 1.0.rc4 24296 242972016-04-17 Dodji Seketeli <dodji@redhat.com> 24298 24299 Bump current version number to 1.0.rc5 24300 * configure.ac: Bump current version number to 1.0.rc5 24301 243022016-04-17 Dodji Seketeli <dodji@redhat.com> 24303 24304 Add a 'release' target to main Makefile 24305 * Makefile.am: Add tarball, upload-release-only, upload-release 24306 and release targets. 24307 243082016-04-11 Dodji Seketeli <dodji@redhat.com> 24309 24310 Update ChangeLog for 1.0.rc4 24311 * ChangeLog: Update automatically by running "make 24312 update-changelog" 24313 243142016-04-11 Dodji Seketeli <dodji@redhat.com> 24315 24316 Update NEWS for 1.0.rc4 24317 * NEWS: Update for 1.0.rc4 24318 243192016-04-16 Dodji Seketeli <dodji@redhat.com> 24320 24321 Fix typos in the suppression specifications manual 24322 * doc/manuals/libabigail-concepts.rst: Fix typos. 24323 243242016-04-16 Dodji Seketeli <dodji@redhat.com> 24325 24326 Ease use of soname_regexp/file_name_regexp in suppr specs 24327 * doc/manuals/libabigail-concepts.rst: Update the manual to 24328 reflect the changes in the suppression_type, suppress_function and 24329 suppress_variable directives. 24330 * src/abg-comparison.cc (read_type_suppression): Accept that 24331 the suppress_type directive contains only file_name_regexp 24332 or the soname_regexp property. 24333 (read_function_suppression): Likewise for the suppress_function 24334 directive. 24335 (read_variable_suppression): Likewise for the suppress_variable 24336 directive. 24337 * tests/data/test-diff-suppr/libtest29-soname-v0.so: New binary 24338 test input. 24339 * tests/data/test-diff-suppr/libtest29-soname-v1.so: Likewise. 24340 * tests/data/test-diff-suppr/test24-soname-report-5.txt: New 24341 reference test output. 24342 * tests/data/test-diff-suppr/test24-soname-report-6.txt: Likewise. 24343 * tests/data/test-diff-suppr/test24-soname-report-7.txt: Likewise. 24344 * tests/data/test-diff-suppr/test24-soname-report-8.txt: Likewise. 24345 * tests/data/test-diff-suppr/test24-soname-suppr-5.txt: New test 24346 suppression file. 24347 * tests/data/test-diff-suppr/test24-soname-suppr-6.txt: Likewise. 24348 * tests/data/test-diff-suppr/test24-soname-suppr-7.txt: Likewise. 24349 * tests/data/test-diff-suppr/test24-soname-suppr-8.txt: Likewise. 24350 * tests/data/test-diff-suppr/test29-soname-report-0.txt: New 24351 reference test output. 24352 * tests/data/test-diff-suppr/test29-soname-report-1.txt: Likewise. 24353 * tests/data/test-diff-suppr/test29-soname-v0.cc: Source code for 24354 the new binary output above. 24355 * tests/data/test-diff-suppr/test29-soname-v1.cc: Likewise. 24356 * tests/data/test-diff-suppr/test29-suppr-0.txt: New test 24357 suppression file. 24358 * tests/data/test-diff-suppr/test29-suppr-1.txt: Likewise. 24359 * tests/data/Makefile.am: Add the new test material above to 24360 source distribution. 24361 * tests/test-diff-suppr.cc (in_out_specs): Make this test harness 24362 run over the new test input above. 24363 243642016-03-31 Dodji Seketeli <dodji@redhat.com> 24365 24366 Fix comments in tests/test-diff-pkg.cc 24367 * tests/test-diff-pkg.cc: Fix the wording of the introductory 24368 comments. 24369 243702016-03-30 Dodji Seketeli <dodji@redhat.com> 24371 24372 Bug 19885 - Cannot associates a function DIE to a symbol on powerpc64 24373 *from* the address of its entry point. 24374 More precisely, on ppc64, the address of a function is the address of 24375 a function descriptor. The function descriptor is a set of three 64 24376 bits addresses. The first element of the triplet is the function 24377 entry pointer address. So to get the symbol a given function entry 24378 point address belongs to, one must get to the function descriptor 24379 which contains said function entry point address. And function 24380 descriptors are in the ".opd" special section. 24381 Unfortunately, Libabigail's ELF/DWARF reader has no knowledge of all 24382 this. So it cannot get the symbol of a given function DWARF 24383 description. So it considers all functions as having no ELF symbols. 24384 So it shows no ABI change pertaining to function sub-types on ppc64. 24385 This patch makes Libabigail support function descriptors on ppc64 so 24386 it can detect changes on function sub-types there. 24387 * src/abg-dwarf-reader.cc (read_context::{opd_section_, 24388 fun_entry_addr_sym_map_}): New data members. 24389 (read_context::read_context): Initialize the new opd_section_ data 24390 member. 24391 (read_context::{find_opd_section, 24392 lookup_ppc64_elf_fn_entry_pointer_address, 24393 fun_entry_addr_sym_map_sptr, fun_entry_addr_sym_map, 24394 elf_architecture_is_ppc64, elf_architecture_is_big_endian}): New 24395 member functions. 24396 (read_context::lookup_elf_fn_symbol_from_address): Adjust to use 24397 the new read_context::fun_entry_addr_sym_map() function. 24398 (read_context::load_symbol_maps): Populate the function entry 24399 addresses -> symbol map, for ppc64 ELFv1. 24400 (read_context::load_elf_properties): Renamed 24401 read_context::load_remaining_elf_data into this. 24402 (read_corpus_from_elf): Load elf properties before trying to load 24403 elf symbols information. 24404 * tests/data/test-diff-filter/libtest32-struct-change-v0.so: New 24405 binary test input, compiled for ppc64le. 24406 * tests/data/test-diff-filter/libtest32-struct-change-v1.so: Likewise. 24407 * tests/data/test-diff-filter/test32-ppc64le-struct-change-report0.txt: 24408 New test reference output. 24409 * tests/data/test-diff-filter/test32-ppc64le-struct-change-v0.c: 24410 Source code of the new binary test input above. 24411 * tests/data/test-diff-filter/test32-ppc64le-struct-change-v1.c: 24412 Likewise. 24413 * tests/data/Makefile.am: Add the new test material above to 24414 source distribution. 24415 * tests/test-diff-filter.cc (in_out_spec): Make this test harness 24416 run over the new test input binaries above. 24417 244182016-03-25 Dodji Seketeli <dodji@redhat.com> 24419 24420 Fix logs in abipkgdiff and add some more 24421 * tools/abipkgdiff.cc (compare): Fix logs to make them more 24422 readable in a multithreaded context. 24423 (create_maps_of_package_content): Likewise. Add logs about the 24424 number of elf files found in a given directory. Add logs about 24425 skipping files. 24426 244272016-03-25 Dodji Seketeli <dodji@redhat.com> 24428 24429 Bug 19867 - abipkgdiff skips symbolic links 24430 * include/abg-tools-utils.h (maybe_get_symlink_target_file_path): 24431 Declare new function. 24432 * src/abg-tools-utils.cc (get_stat): Use lstat here, not stat. 24433 Update comment. 24434 * tools/abipkgdiff.cc (first_package_tree_walker_callback_fn) 24435 (second_package_tree_walker_callback_fn): Follow symbolic links to 24436 elf files to get their target paths, and only work with that 24437 target path. 24438 (maybe_get_symlink_target_file_path): Define new function. 24439 * test-diff-pkg/symlink-dir-test1-report0.txt New test material. 24440 * test-diff-pkg/symlink-dir-test1/dir1/symlinks/foo.o: Likewise. 24441 * test-diff-pkg/symlink-dir-test1/dir1/symlinks/libfoo.so: Likewise. 24442 * test-diff-pkg/symlink-dir-test1/dir1/targets/foo.c: Likewise. 24443 * test-diff-pkg/symlink-dir-test1/dir1/targets/foo.o: Likewise. 24444 * test-diff-pkg/symlink-dir-test1/dir1/targets/libfoo.so: Likewise. 24445 * test-diff-pkg/symlink-dir-test1/dir2/symlinks/foo.o: Likewise. 24446 * test-diff-pkg/symlink-dir-test1/dir2/symlinks/libfoo.so: Likewise. 24447 * test-diff-pkg/symlink-dir-test1/dir2/targets/foo.c: Likewise. 24448 * test-diff-pkg/symlink-dir-test1/dir2/targets/foo.o: Likewise. 24449 * test-diff-pkg/symlink-dir-test1/dir2/targets/libfoo.so: Likewise. 24450 * tests/data/Makefile.am: Add the new test material to source 24451 distribution. 24452 * tests/test-diff-pkg.cc (in_out_spec): Run this test harness 24453 over the new test material above. 24454 244552016-03-21 Dodji Seketeli <dodji@redhat.com> 24456 24457 Fix typo on the web page 24458 * doc/website/mainpage.txt: Fix typo. 24459 244602016-03-18 Roland McGrath <roland@hack.frob.com> 24461 24462 Fix typo in configure --enable-deb help text 24463 * configure.ac: Fix typo in --enable-deb usage text. 24464 244652016-03-18 Dodji Seketeli <dodji@redhat.com> 24466 24467 Bug 19846 - variable decl associated with the wrong debug info section 24468 * src/abg-dwarf-reader.cc (build_ir_node_from_die): Associate the 24469 decl of the variable to the same debug info file (alternate or 24470 not) as the DIE, not as its specification DIE. 24471 244722016-03-18 Dodji Seketeli <dodji@redhat.com> 24473 24474 Fix typo in the manual of abidiff 24475 * doc/manuals/abidiff.rst: Fix typo. 24476 244772016-03-18 Dodji Seketeli <dodji@redhat.com> 24478 24479 Fix typos in comments in src/abg-dwarf-reader.cc 24480 * src/abg-dwarf-reader.cc (read_context::{die_type_map, 24481 is_wip_class_die_offset, is_wip_function_type_die_offset}): Fix 24482 typo in comments. 24483 244842016-03-18 Dodji Seketeli <dodji@redhat.com> 24485 24486 Bug 19844 - Cannot try to canonicalize a type that is being constructed 24487 * src/abg-dwarf-reader.cc 24488 (read_context::{alternate_die_wip_classes_map_, 24489 alternate_die_wip_function_types_map_}): New data members. 24490 (read_context::lookup_type_from_die_offset): Lookup WIP class and 24491 function types too. 24492 (read_context::{die_wip_classes_map, die_wip_function_types_map}): 24493 Take a flag saying if we should get the map for the alternate 24494 debug info section or not. 24495 (read_context::{is_wip_class_die_offset, 24496 is_wip_function_type_die_offset}): Take a flagy saying if the DIE 24497 is in the alternate debug info section or not. 24498 (build_class_type_and_add_to_ir, build_function_type) 24499 (maybe_canonicalize_type): Adjust. 24500 (build_ir_node_from_die): Do not call maybe_canonicalize_type on 24501 type DIEs which no type has been constructed for. 24502 * tests/data/test-diff-pkg/gtk2-debuginfo-2.24.22-5.el7.i686.rpm: 24503 New test input. 24504 * tests/data/test-diff-pkg/gtk2-debuginfo-2.24.28-8.el7.i686.rpm: 24505 Likewise. 24506 * tests/data/test-diff-pkg/gtk2-immodule-xim-2.24.22-5.el7.i686.rpm: 24507 Likewise. 24508 * tests/data/test-diff-pkg/gtk2-immodule-xim-2.24.28-8.el7.i686.rpm: 24509 Likewise. 24510 * tests/data/test-diff-pkg/gtk2-immodule-xim-2.24.22-5.el7.i686--gtk2-immodule-xim-2.24.28-8.el7.i686-report-0.txt: 24511 New test reference output. 24512 * tests/data/Makefile.am: Add the new test material to the source 24513 distribution. 24514 * tests/test-diff-pkg.cc (in_out_spec): Make this test harness run 24515 on the new test input above. 24516 245172016-03-16 Dodji Seketeli <dodji@redhat.com> 24518 24519 Fix a typo in include/abg-tools-utils.h 24520 * include/abg-tools-utils.h (enum abidiff_status): Fix typo in 24521 comment. 24522 245232016-03-16 Dodji Seketeli <dodji@redhat.com> 24524 24525 Update copyright dates for the manuals 24526 * doc/manuals/conf.py: Update copyright years. 24527 245282016-03-16 Dodji Seketeli <dodji@redhat.com> 24529 24530 More docs about ABIDIFF_ABI_INCOMPATIBLE_CHANGE 24531 * doc/manuals/abidiff.rst: Explain the kind of changes that flip 24532 the ABIDIFF_ABI_INCOMPATIBLE_CHANGE flag. 24533 245342016-03-09 Dodji Seketeli <dodji@redhat.com> 24535 24536 Fix typos on the web page 24537 * doc/website/mainpage.txt: Fix typos. 24538 245392016-03-08 Dodji Seketeli <dodji@redhat.com> 24540 24541 Bump version number to 1.0.rc4 24542 * configure.ac: Bump version number to 1.0.rc4 24543 245442016-03-08 Dodji Seketeli <dodji@redhat.com> 24545 24546 Fix potential race condition in test-diff-pkg.cc 24547 * tests/test-diff-pkg.cc (in_out_spec): Make the tar format tests 24548 output have different names. 24549 245502016-03-08 Dodji Seketeli <dodji@redhat.com> 24551 24552 Updated website to point to 1.0.rc3 tarball 24553 * doc/website/mainpage.txt: Updated website to point to 1.0.rc3 24554 tarball. 24555 245562016-03-08 Dodji Seketeli <dodji@redhat.com> 24557 24558 Update ChangeLog before 1.0.rc3 24559 * ChangeLog: Update for 1.0.rc3 24560 245612016-03-08 Dodji Seketeli <dodji@redhat.com> 24562 24563 Update NEWS file for 1.0.rc3 24564 * NEWS: update for 1.0.rc3 24565 245662016-03-07 Dodji Seketeli <dodji@redhat.com> 24567 24568 Walk function_type_diff tree in a deterministic way 24569 * src/abg-comparison.cc 24570 (function_type_diff::priv::{sorted_subtype_changed_parms_, 24571 sorted_changed_parms_by_id_}): Add two data members. 24572 (function_type_diff::ensure_lookup_tables_populated): Sort the 24573 changed parameters here ... 24574 (function_type_diff::report): ... not here. 24575 (function_type_diff::chain_into_hierarchy): Chain the *sorted* 24576 changed parameters. 24577 245782016-03-07 Dodji Seketeli <dodji@redhat.com> 24579 24580 Fix reference to test file in Makefile.am 24581 * tests/data/Makefile.am: Fix bogus reference to 24582 libICE-1.0.6-1.el6.x86_64.rpm--libICE-1.0.9-2.el7.x86_64.rpm-report-0.txt. 24583 245842016-03-07 Dodji Seketeli <dodji@redhat.com> 24585 24586 Bug 19780 - abipkgdiff doesn't support parallel execution 24587 * tools/abipkgdiff.cc: Update copyright notice. 24588 (package::extracted_packages_parent_dir): Use mkdtemp to generate 24589 the unique root directory under which packages are extracted. 24590 * tests/test-diff-pkg.cc (struct test_task): New type. 24591 (main): Use worker threads to run abipkgdiff in parallel, 24592 depending on the number of CPUs advertised by the underlying 24593 machine. 24594 245952016-03-07 Dodji Seketeli <dodji@redhat.com> 24596 24597 Bug 19778 - diff_has_ancestor_filtered_out() loops forever 24598 * src/abg-comparison.cc (diff_has_ancestor_filtered_out): Add an 24599 overload that takes an additional map of pointer values. Make the 24600 older overload call the new one. 24601 * tests/data/test-diff-pkg/libICE-1.0.6-1.el6.x86_64.rpm: New test material. 24602 * tests/data/test-diff-pkg/libICE-1.0.6-1.el6.x86_64.rpm--libICE-1.0.9-2.el7.x86_64.rpm-report-0.txt: 24603 New reference output. 24604 * tests/data/test-diff-pkg/libICE-1.0.9-2.el7.x86_64.rpm: New test material. 24605 * tests/data/test-diff-pkg/libICE-debuginfo-1.0.6-1.el6.x86_64.rpm: New test material. 24606 * tests/data/test-diff-pkg/libICE-debuginfo-1.0.9-2.el7.x86_64.rpm: 24607 New test material. 24608 * tests/data/Makefile.am: Add the new test material to source distribution. 24609 * tests/test-diff-pkg.cc (in_out_specs): Run this test harness 24610 over the new tests material above. 24611 246122016-03-07 Dodji Seketeli <dodji@redhat.com> 24613 24614 Forgot to add test2-filtered-removed-fns-v{0,1}.o 24615 * test2-filtered-removed-fns-v{0,1}.o: Add these test input files. 24616 246172016-03-03 Dodji Seketeli <dodji@redhat.com> 24618 24619 Bug 19596 - Suppressed removed symbol changes still considered incompatible 24620 * src/abg-comparison.cc (corpus_diff::has_incompatible_changes): 24621 Consider the *net* number of removed function and variable 24622 symbols. Also, if all function sub-type changes have been 24623 suppressed, then no virtual offset change should be considered 24624 incompatible. 24625 * tests/data/test-abidiff-exit/test1-voffset-change-report1.txt 24626 * tests/data/test-abidiff-exit/test1-voffset-change.abignore 24627 * tests/data/test-abidiff-exit/test2-filtered-removed-fns-report0.txt 24628 * tests/data/test-abidiff-exit/test2-filtered-removed-fns-report1.txt 24629 * tests/data/test-abidiff-exit/test2-filtered-removed-fns-v0.c 24630 * tests/data/test-abidiff-exit/test2-filtered-removed-fns-v1.c 24631 * tests/data/test-abidiff-exit/test2-filtered-removed-fns.abignore 24632 * tests/data/Makefile.am: Add the new test material above to 24633 source distribution. 24634 * tests/test-abidiff-exit.cc (InOutSpec::in_suppr_path): New data 24635 member. 24636 (in_out_specs): Adjust. Add new test inputs. 24637 (main): Adjust. 24638 246392016-02-25 Dodji Seketeli <dodji@redhat.com> 24640 24641 Fixup virtual member functions with linkage and no underlying symbol 24642 * src/abg-dwarf-reader.cc (die_function_decl_map_type): New 24643 typedef. 24644 (read_context::die_function_with_no_symbol_map_): New data member. 24645 (read_context::die_function_decl_with_no_symbol_map): New 24646 accessor. 24647 (read_context::fixup_functions_with_no_symbols): New member 24648 function. 24649 (finish_member_function_reading): Take a read_context. Schedule 24650 virtual member functions with linkage and no underlying symbol to 24651 be fixed up after all the debug info is read. 24652 (build_function_decl): After a virtual member function_decl has 24653 been updated, if it has its underlying symbol and was scheduled 24654 for fixup, then de-schedule it. 24655 (build_class_type_and_add_to_ir, build_ir_node_from_die): Adjust 24656 call to finish_member_function_reading. 24657 (read_corpus_from_elf): Move the pure ELF (symbol and other mundane 24658 information) information reading ... 24659 (read_debug_info_into_corpus): ... here. Make it happen *before* 24660 actual reading of DWARF information. We need symbol information 24661 to be present and fully set before we start reading debug info. 24662 This is so that we can know when a virtual member function doesn't 24663 need to be fixed up. Also, perform the fixup after the debug 24664 information was read. 24665 * tests/data/test-read-dwarf/test22-pr19097-libstdc++.so.6.0.17.so.abi: Adjust. 24666 246672016-02-25 Dodji Seketeli <dodji@redhat.com> 24668 24669 Add --verbose to abidw 24670 * doc/manuals/abidw.rst: Update the manual for the new --verbose 24671 option. 24672 * tools/abidw.cc (options::do_log): New data member. 24673 (options::options): Initialize it. 24674 (display_usage): New string for --verbose. 24675 (parse_command_line): Parse the --verbose option. 24676 (main): Set the the logging option. 24677 246782016-02-25 Dodji Seketeli <dodji@redhat.com> 24679 24680 Update copyright information 24681 * tools/abidiff.cc: Update copyright info for 2016. 24682 * tools/abidw.cc: Likewise. 24683 246842016-02-24 Dodji Seketeli <dodji@redhat.com> 24685 24686 Make libabigail link with pthread 24687 * src/Makefile.am: Add -pthread to libabigail_la_LDFLAGS. 24688 * tools/Makefile.am: Do not use abinilint_LDFLAGS when it should 24689 be abinilint_LDADD. This one was fixed by Michi Henning. 24690 246912016-02-24 Dodji Seketeli <dodji@redhat.com> 24692 24693 Update mentions to the build dependencies in the doc 24694 * COMPILING: Mention elfutils, libtool, autoconf, automake and 24695 libtool. 24696 * doc/website/mainpage.txt: Mention automake and libtool. Fix a typo. 24697 246982016-02-24 Dodji Seketeli <dodji@redhat.com> 24699 24700 Bug 19706 - Core dump from abidiff with suppression 24701 * src/abg-comparison.cc 24702 (function_suppression::suppresses_function): Make sure a function 24703 has a symbol before (de)referencing it. 24704 247052016-02-24 Dodji Seketeli <dodji@redhat.com> 24706 24707 Some small speed optimizations 24708 * include/abg-ir.h (var_decl::get_naked_type): Declare new member function. 24709 * src/abg-ir.cc (var_decl::get_naked_type): Define it. 24710 (equals): For the var_decl overload, avoid copying symbol 24711 smart pointers. Likewise for variable type smart pointers. 24712 (hash_type_or_decl): Avoid accessing canonical type smart pointer. 24713 247142016-02-24 Dodji Seketeli <dodji@redhat.com> 24715 24716 Mist style cleanups 24717 * include/abg-ir.h: Add missing comments. Space cleanups. Use 24718 shorter typedefs rather than long template instantiation names. 24719 Use string rather than the longer std::string. 24720 * src/abg-ir.cc: Space cleanups. Add missing comments. User 24721 shorter typedefs. 24722 * src/abg-reader.cc: Likewise. 24723 * src/abg-writer.cc: Likewise. 24724 247252016-02-24 Dodji Seketeli <dodji@redhat.com> 24726 24727 Implement string interning for Libabigail 24728 * include/Makefile.am: Add the new abg-interned-str.h file to 24729 source distribution. 24730 * include/abg-corpus.h (corpus::corpus): Re-arrange the order of 24731 * src/abg-corpus.cc 24732 (corpus::exported_decls_builder::priv::get_id): Return 24733 interned_string rather than std::string. 24734 (corpus::corpus): Re-arrange the order of parameters: take an 24735 environment as first parameter. parameters: take an environment 24736 as first parameter. 24737 * include/abg-dwarf-reader.h (lookup_symbol_from_elf) 24738 (lookup_public_function_symbol_from_elf): Likewise. 24739 * src/abg-dwarf-reader.cc (lookup_symbol_from_sysv_hash_tab) 24740 (lookup_symbol_from_gnu_hash_tab) 24741 (lookup_symbol_from_elf_hash_tab, lookup_symbol_from_symtab) 24742 (lookup_symbol_from_elf, lookup_public_function_symbol_from_elf) 24743 (lookup_public_variable_symbol_from_elf, lookup_symbol_from_elf) 24744 (lookup_public_function_symbol_from_elf): Take an environment as 24745 first parameter and adjust. 24746 (build_translation_unit_and_add_to_ir) 24747 (build_namespace_decl_and_add_to_ir, build_type_decl) 24748 (build_enum_type, finish_member_function_reading) 24749 (build_class_type_and_add_to_ir, build_function_type) 24750 (read_debug_info_into_corpus, read_corpus_from_elf): Adjust. 24751 * include/abg-fwd.h: Include abg-interned-str.h 24752 (get_type_name, get_function_type_name, get_method_type_name): 24753 Return a interned_string, rather than a std::string. 24754 * include/abg-interned-str.h: New declarations for interned strings 24755 and their pool. 24756 * include/abg-ir.h (environment::intern): Declare new method. 24757 (elf_symbol::{g,s}et_environment): Likewise. 24758 (type_or_decl_base::type_or_decl_base): Make the default 24759 constructor private. 24760 ({translation, type_or_decl_base}::set_environment) 24761 (set_environment_for_artifact): Take a const environment*. 24762 (elf_symbol::elf_symbol) 24763 (elf_symbol::create) 24764 (type_or_decl_base::type_or_decl_base) 24765 (translation::translation, decl_base::decl_base) 24766 (scope_decl::scope_decl, type_base::type_base) 24767 (type_decl::type_decl, scope_type_decl::scope_type_decl) 24768 (namespace_decl::namespace_decl) 24769 (enum_type_decl::enumerator::enumerator) 24770 (function_type::function_type, method_type::method_type) 24771 (template_decl::template_decl, function_tdecl::function_tdecl) 24772 (class_tdecl::class_tdecl, class_decl::class_decl): Take an 24773 environment. 24774 (type_or_decl_base::operator=) 24775 (enum_type_decl::enumerator::get_environment): Declare new method. 24776 (decl_base::{peek_qualified_name, peek_temporary_qualified_name, 24777 get_qualified_name, get_name, get_qualified_parent_name, 24778 get_linkage_name}, qualified_type_def::get_qualified_name) 24779 (reference_type_def::get_qualified_name) 24780 (array_type_def::get_qualified_name) 24781 (enum_type_decl::enumerator::{get_name, get_qualified_name}) 24782 ({var,function}_decl::get_id) 24783 (function_decl::parameter::{get_type_name, get_name_id}): Return 24784 an interned_string, rather than a std::string. 24785 (decl_base::{set_qualified_name, set_temporary_qualified_name, 24786 get_qualified_name, set_linkage_name}) 24787 (qualified_type_def::get_qualified_name) 24788 (reference_type_def::get_qualified_name) 24789 (array_type_def::get_qualified_name) 24790 (function_decl::parameter::get_qualified_name): Take an 24791 interned_string, rather than a std::string. 24792 (class_decl::member_{class,function}_template::member_{class,function}_template): 24793 Adjust. 24794 * src/abg-ir.cc (environment_setter::env_): Make this be a pointer 24795 to const environment. 24796 (environment_setter::visit_begin): Adjust. 24797 (interned_string_pool::priv): Define new type. 24798 (interned_string_pool::*): Define the method declared in 24799 abg-interned-str. h. 24800 (operator==, operator!=, operator+): Define operator for interned_string and 24801 std::string 24802 (operator<<): Define for interned_string. 24803 (translation_unit::priv::env_): Make this be a pointer to const 24804 environment. 24805 (translation_unit::priv::priv): Take a pointer to const 24806 environment. 24807 (elf_symbol::priv::env_): New data member. 24808 (elf_symbol::priv::priv): Adjust. Make an overoad take an 24809 environment. 24810 (translation_unit::{g,s}et_environment): Adjust. 24811 (interned_string_bool_map_type): New typedef. 24812 (environment::priv::classes_being_compared_): Make this hastable 24813 of string be a hashtable of interned_string. 24814 (environment::priv::string_pool_): New data member. 24815 (environment::{get_void_type_decl, 24816 get_variadic_parameter_type_decl}): Adjust. 24817 (type_or_decl_base::priv::env_): Make this be a pointer to const 24818 environment. 24819 (type_or_decl::base::priv::priv): Adjust. 24820 (type_or_decl_base::set_environment) 24821 (set_environment_for_artifact): Take a pointer to const 24822 environment. 24823 (elf_symbol::{g,s}et_environment, environment::intern) 24824 (type_or_decl_base::operator=): Define new methods. 24825 (decl_base::priv::{name_, qualified_parent_name_, 24826 temporary_qualified_name_, qualified_name_, linkage_name_}): Make 24827 these data member be of tpe interned_string. 24828 (decl_base::priv::priv): Make this take an environment. Adjust. 24829 (decl_base::{peek_qualified_name, peek_temporary_qualified_name, 24830 get_linkage_name, get_qualified_parent_name, get_name, 24831 get_qualified_name}, get_type_name, get_function_type_name) 24832 (get_method_type_name, get_node_name) 24833 (qualified_type_def::get_qualified_name) 24834 (pointer_type_def::get_qualified_name) 24835 (array_type_def::get_qualified_name) 24836 (enum_type_decl::enumerator::get_qualified_name) 24837 (var_decl::get_id, function_decl::get_id) 24838 (function_decl::parameter::get_{name_id, type_name}): Return an 24839 interned_string. 24840 (decl_base::{set_qualified_name, set_temporary_qualified_name}) 24841 (qualified_type_def::get_qualified_name) 24842 (pointer_type_def::get_qualified_name) 24843 (reference_type_def::get_qualified_name) 24844 (array_type_def::get_qualified_name) 24845 (function_decl::parameter::get_qualified_name): Take an 24846 interned_string. 24847 (decl_base::{set_name, set_linkage_name}): Intern the std::string 24848 passed in parameter. 24849 (equals): In the overload for decl_base, adjust for a little speed 24850 optimization that is justified by profiling. 24851 (pointer_type_def::priv::{internal_qualified_name_, 24852 temp_internal_qualified_name_}): Make these data member be 24853 interned_string. 24854 (enum_type_decl::enumerator::priv::env_): New data member. 24855 (enum_type_decl::enumerator::priv::{name_, qualified_name}): Make 24856 these data member be of type interned_string. 24857 (enum_type_decl::enumerator::get_environment): New method. 24858 (enum_type_decl::enumerator::priv::priv) Adjust. 24859 (typedef_decl::operator==): Implement a little speed optimization. 24860 (var_decl::priv::nake_type_): New data member. 24861 (var_decl::priv::id_): Make this data member be of type 24862 interned_string. 24863 (equals): In the overload for var_decl, function_type, 24864 function_decl, adjust for the use of interned_string. 24865 (function_decl::priv::id_): Make this be of type interned_string. 24866 (scope_decl::{add_member_decl, insert_member_decl}) 24867 (lookup_function_type_in_translation_unit) 24868 (synthesize_type_from_translation_unit, lookup_node_in_scope) 24869 (lookup_type_in_scope, scope_decl::scope_decl) 24870 (qualified_type_def::qualified_type_def) 24871 (qualified_type_def::get_qualified_name) 24872 (pointer_type_def::pointer_type_def) 24873 (reference_type_def::reference_type_def) 24874 (array_type_def::array_type_def, array_type_def::append_subrange) 24875 (array_type_def::get_qualified_name) 24876 (enum_type_decl::enum_type_decl) 24877 (enum_type_decl::enumerator::get_qualified_name) 24878 (enum_type_decl::enumerator::set_name) 24879 (typedef_decl::typedef_decl, var_decl::var_decl) 24880 (function_type::function_type, method_type::method_type) 24881 (function_decl::function_decl) 24882 (function_decl::parameter::parameter) 24883 (class_decl::priv::comparison_started) 24884 (class_decl::add_base_specifier) 24885 (class_decl::base_spec::base_spec) 24886 (class_decl::method_decl::method_decl) 24887 (type_tparameter::type_tparameter) 24888 (non_type_tparameter::non_type_tparameter) 24889 (template_tparameter::template_tparameter) 24890 (type_composition::type_composition) 24891 (function_tdecl::function_tdecl, class_tdecl::class_tdecl) 24892 (qualified_name_setter::do_update): Adjust. 24893 (translation_unit::translation_unit, elf_symbol::elf_symbol) 24894 (elf_symbol::create, type_or_decl_base::type_or_decl_base) 24895 (decl_base::decl_base, type_base::type_base) 24896 (type_decl::type_decl, scope_type_decl::scope_type_decl) 24897 (namespace_decl::namespace_decl) 24898 (enum_type_decl::enumerator::enumerator, class_decl::class_decl) 24899 (template_decl::template_decl, function_tdecl::function_tdecl) 24900 (class_tdecl::class_tdecl): Take an environment. 24901 * src/abg-comparison.cc 24902 (function_suppression::suppresses_function): Adjust. 24903 * src/abg-reader.cc (read_translation_unit) 24904 (read_corpus_from_input, build_namespace_decl, build_elf_symbol) 24905 (build_function_parameter, build_function_decl, build_type_decl) 24906 (build_function_type, build_enum_type_decl, build_enum_type_decl) 24907 (build_class_decl, build_function_tdecl, build_class_tdecl) 24908 (read_corpus_from_native_xml): Likewise. 24909 * src/abg-writer.cc (id_manager::m_cur_id): Make this mutable. 24910 (id_manager::m_env): New data member. 24911 (id_manager::id_manager): Adjust. 24912 (id_manager::get_environment): New method. 24913 (id_manager::{get_id, get_id_with_prefix}): Return an 24914 interned_string. 24915 (type_ptr_map): Make this be a hash map of type_base* -> 24916 interned_string, rather a type_base* -> string. 24917 (write_context::m_env): New data member. 24918 (write_context::m_type_id_map): Make this data member be mutable. 24919 (write_context::m_emitted_type_id_map): Make this be a hash map of 24920 interned_string -> bool, rather than string -> bool. 24921 (write_context::write_context): Take an environment and adjust. 24922 (write_context::get_environment): New method. 24923 (write_context::get_id_manager): New const overload. 24924 (write_context::get_id_for_type): Return an interned_string; adjust. 24925 (write_context::{record_type_id_as_emitted, 24926 record_type_as_referenced}): Adjust. 24927 (write_context::type_id_is_emitted): Take an interned_string. 24928 (write_context::{type_is_emitted, 24929 record_decl_only_type_as_emitted}): Adjust. 24930 (write_translation_unit, write_corpus_to_native_xml, dump): 24931 Adjust. 24932 * tools/abisym.cc (main): Adjust. 24933 * tests/data/test-read-write/test22.xml: Adjust. 24934 * tests/data/test-read-write/test23.xml: Adjust. 24935 * tests/data/test-read-write/test26.xml: Adjust. 24936 249372016-02-24 Dodji Seketeli <dodji@redhat.com> 24938 24939 Update copyright notice 24940 * include/abg-corpus.h: Update copyright notice. 24941 * include/abg-dwarf-reader.h: Likewise. 24942 * src/abg-comparison.cc: Likewise. 24943 * src/abg-corpus.cc: Likewise. 24944 * src/abg-ir.cc: Likewise. 24945 249462016-02-23 Dodji Seketeli <dodji@redhat.com> 24947 24948 Fix crash when handling templates with empty patterns 24949 * src/abg-ir.cc (function_tdecl::traverse): Do not crash when 24950 traversing a template with empty pattern. 24951 (class_tdecl::operator==): Do not crash when comparing templates 24952 with empty patterns. 24953 249542016-02-23 Dodji Seketeli <dodji@redhat.com> 24955 24956 Add missing inequality operators for ABI artifacts 24957 * include/abg-ir.h ({translation_unit, elf_symbol::version, 24958 context_rel, decl_base, type_base, type_decl, 24959 array_type_def::subrange_type, enum_type_def::enumerator, 24960 dm_context_rel, template_parameter}::operator!=): Declare. 24961 (operator==): Make the overload form translation_unit_sptr, 24962 scope_decl_sptr, class_decl::base_spec_sptr, 24963 class_decl::member_function_template_sptr, 24964 class_decl::member_class_template_sptr take const references. 24965 (operator!=): Declare an an overload for the non-member operator 24966 != of translation_unit_sptr, elf_symbol_sptr, 24967 type_or_decl_base_sptr, type_base_sptr, scope_decl_sptr, 24968 type_decl, qualified_type_def_sptr, pointer_type_def_sptr, 24969 reference_type_def_sptr, enum_type_decl_sptr, class_decl_sptr, 24970 class_decl::base_spec_sptr, 24971 class_decl::member_function_template_sptr, 24972 class_decl::member_class_template_sptr. 24973 * src/abg-ir.cc ({translation_unit, elf_symbol::version, 24974 context_rel, decl_base, type_base, type_decl, 24975 array_type_def::subrange_type, enum_type_def::enumerator, 24976 dm_context_rel, template_parameter}::operator!=): Define. 24977 (operator==): Make the overload for translation_unit_sptr, 24978 scope_decl_sptr, class_decl::base_spec_sptr, 24979 class_decl::member_function_template_sptr, 24980 class_decl::member_class_template_sptr take const references. 24981 (operator!=): Define an an overload for the non-member operator != 24982 of translation_unit_sptr, elf_symbol_sptr, type_or_decl_base_sptr, 24983 type_base_sptr, scope_decl_sptr, type_decl, 24984 qualified_type_def_sptr, pointer_type_def_sptr, 24985 reference_type_def_sptr, enum_type_decl_sptr, class_decl_sptr, 24986 class_decl::base_spec_sptr, 24987 class_decl::member_function_template_sptr, 24988 class_decl::member_class_template_sptr. 24989 249902016-02-20 Dodji Seketeli <dodji@redhat.com> 24991 24992 Make the tree pass distcheck again. 24993 * tests/data/Makefile.am: Add file 24994 test-diff-suppr/test28-add-aliased-function-report-0.txt to source 24995 distribution. 24996 249972016-02-18 Dodji Seketeli <dodji@redhat.com> 24998 24999 Bug 19658 - Type canonicalization slow for the 2nd binary loaded 25000 * include/abg-corpus.h (corpus::{record_canonical_type, 25001 lookup_canonical_type}): Declare new member functions. 25002 * src/abg-corpus.cc (corpus::priv::canonical_types_): New data 25003 member. 25004 (corpus::{record_canonical_type, lookup_canonical_type}): Define 25005 new member functions. 25006 * src/abg-ir.cc (type_base::get_canonical_type_for): Cache the 25007 canonical type inside the corpus of the type being canonicalized. 25008 Then later when canonicalizing another type, lookup in the cache 25009 inside its corpus to see if there is a type with the same name. 25010 * tests/data/test-diff-pkg/tbb-4.1-9.20130314.fc22.x86_64--tbb-4.3-3.20141204.fc23.x86_64-report-0.txt: 25011 Adjust. 25012 250132016-02-18 Dodji Seketeli <dodji@redhat.com> 25014 25015 Add --verbose option to abidiff 25016 * doc/manuals/abidiff.rst: Add documentation for new --verbose 25017 option. 25018 * include/abg-dwarf-reader.h (set_do_log): Declare new function. 25019 * src/abg-dwarf-reader.cc (read_context::do_log_): New data 25020 member. 25021 (read_context::read_context): Initialize the new data member. 25022 (read_context::do_log): Define accessors. 25023 (set_do_log): Define new function; 25024 (read_context::canonicalize_types_scheduled) 25025 (read_debug_info_into_corpus): Add logs. 25026 * tools/abidiff.cc (options::do_log): New data member. 25027 (options::options): Initialize it. 25028 (display_usage): Add an usage string for --verbose. 25029 (parse_command_line): Parse the new --verbose option. 25030 (main): Set the dwarf reader's context wrt presence of the 25031 --verbose option. 25032 250332016-02-18 Dodji Seketeli <dodji@redhat.com> 25034 25035 Fix indentation 25036 * tools/abipkgdiff.cc (parse_command_line): Fix a wrong indentation. 25037 250382016-02-17 Dodji Seketeli <dodji@redhat.com> 25039 25040 Bug 19638 - DWARF reader fails to link clone function to its declaration 25041 * include/abg-ir.h (decl_base::set_linkage_name): Make this member 25042 function virtual. 25043 (class_decl::string_mem_fn_ptr_map_type): Define new member type. 25044 (class_decl::find_member_function): Declare new member function. 25045 (copy_member_function): Declare new function. Declare it as 25046 friend of class_decl. 25047 (method_decl::set_linkage_name): Declare an overload for this 25048 virtual function. 25049 * src/abg-dwarf-reader.cc (build_function_decl): Allow updating of 25050 linkage_name even if the linkage_name was already defined. 25051 (build_ir_node_from_die): In the case DW_TAG_subprogram, make the 25052 lookup of scope of the DIE work even if it has both an abstract 25053 origin and a specification (DW_AT_abstract_origin and 25054 DW_AT_specification). 25055 * src/abg-ir.cc (maybe_adjust_canonical_type): Define new 25056 function. 25057 (canonicalize): Use it. 25058 (function_decl::get_id): Return the linkage name first, if it 25059 exist. 25060 (class_decl::priv::mem_fns_map_): New data member. 25061 (class_decl::find_member_function): Define new member function. 25062 (class_decl::method_decl::set_linkage_name): Likewise. 25063 (class_decl::add_member_function): Update the new data member 25064 class_decl::priv::mem_fns_map_. 25065 (copy_member_function): Define new static function. 25066 * tests/data/test-abidiff/test-PR18791-report0.txt: Adjust. 25067 * tests/data/test-read-dwarf/test10-pr18818-gcc.so.abi: Adjust. 25068 * tests/data/test-read-dwarf/test12-pr18844.so.abi: Adjust. 25069 * tests/data/test-read-dwarf/test16-pr18904.so.abi: Adjust. 25070 * tests/data/test-read-dwarf/test18-pr19037-libvtkRenderingLIC-6.1.so.abi: Adjust. 25071 * tests/data/test-read-dwarf/test19-pr19023-libtcmalloc_and_profiler.so.abi: Adjust. 25072 * tests/data/test-read-dwarf/test20-pr19025-libvtkParallelCore-6.1.so.abi: Adjust. 25073 * tests/data/test-read-dwarf/test22-pr19097-libstdc++.so.6.0.17.so.abi: Adjust. 25074 * tests/data/test-read-dwarf/test9-pr18818-clang.so.abi: Adjust. 25075 250762016-02-17 Dodji Seketeli <dodji@redhat.com> 25077 25078 Add function lookup by linkage name to libabigail::corpus 25079 * include/abg-corpus.h (corpus::lookup_functions): Declare new 25080 member function. 25081 * src/abg-corpus.cc (class corpus::exported_decls_builder::priv): 25082 Make class corpus be a friend of this type. 25083 (corpus::exported_decls_builder::priv::add_fn_to_id_fns_map): Fix 25084 a thinko that was preventing the fn_id -> functions map from ever 25085 being filled. Fix this function to make it associate each aliases 25086 of a given function to the function, in the hash table. 25087 (corpus::lookup_functions): Define new member function. 25088 250892016-02-17 Dodji Seketeli <dodji@redhat.com> 25090 25091 Fix style cleanups 25092 * include/abg-ir.h (method_type::{method_type, set_class_type, 25093 get_type, set_type}): Use type_base_sptr and class_decl_sptr 25094 instead of the full non-typedefed name. 25095 (method_type):Do some cleanups in the definition of the 25096 convenience typedefs. 25097 * src/abg-ir.cc (method_type::{method_type, set_class_type, 25098 get_type, set_type}): Use type_base_sptr and class_decl_sptr 25099 instead of the full non-typedefed name. 25100 * src/abg-writer.cc (write_class_decl): Add a comment. 25101 251022016-02-13 Dodji Seketeli <dodji@redhat.com> 25103 25104 Bug 19619 - failing to suppress added aliased function reports for C++ 25105 * src/abg-comparison.cc 25106 (function_suppression::suppresses_function): Make the evaluation 25107 of the "name" and "name_regexp" consider the cases of languages in 25108 which the function name is the same as the symbol name and the 25109 case of languages in which it is not. In the former case, all 25110 symbol alias names must be matched. In the latter case, if "name" 25111 and "name_regexp" match the function name, the suppression 25112 specification is considered to match the report about the function 25113 change. Also, use the elf_symbol::is_main_symbol() predicate to 25114 test for the symbol being a main symbol, rather than using 25115 error-prone pointer equality. 25116 * tests/data/test-diff-suppr/test27-add-aliased-function-0.suppr: 25117 New test input. 25118 * tests/data/test-diff-suppr/test27-add-aliased-function-1.suppr: Likewise. 25119 * tests/data/test-diff-suppr/test27-add-aliased-function-2.suppr: Likewise. 25120 * tests/data/test-diff-suppr/test27-add-aliased-function-3.suppr: Likewise. 25121 * tests/data/test-diff-suppr/test27-add-aliased-function-4.suppr: Likewise. 25122 * tests/data/test-diff-suppr/test27-add-aliased-function-report-0.txt: Likewise. 25123 * tests/data/test-diff-suppr/test27-add-aliased-function-report-1.txt: Likewise. 25124 * tests/data/test-diff-suppr/test27-add-aliased-function-report-2.txt: Likewise. 25125 * tests/data/test-diff-suppr/test27-add-aliased-function-report-3.txt: Likewise. 25126 * tests/data/test-diff-suppr/test27-add-aliased-function-report-4.txt: Likewise. 25127 * tests/data/test-diff-suppr/test27-add-aliased-function-report-5.txt: Likewise. 25128 * tests/data/test-diff-suppr/test27-add-aliased-function-v0.cc: Likewise. 25129 * tests/data/test-diff-suppr/test27-add-aliased-function-v0.o: Likewise. 25130 * tests/data/test-diff-suppr/test27-add-aliased-function-v1.cc: Likewise. 25131 * tests/data/test-diff-suppr/test27-add-aliased-function-v1.o: Likewise. 25132 * tests/data/test-diff-suppr/test28-add-aliased-function-0.suppr: Likewise. 25133 * tests/data/test-diff-suppr/test28-add-aliased-function-1.suppr: Likewise. 25134 * tests/data/test-diff-suppr/test28-add-aliased-function-2.suppr: Likewise. 25135 * tests/data/test-diff-suppr/test28-add-aliased-function-3.suppr: Likewise. 25136 * tests/data/test-diff-suppr/test28-add-aliased-function-4.suppr: Likewise. 25137 * tests/data/test-diff-suppr/test28-add-aliased-function-5.suppr: Likewise. 25138 * tests/data/test-diff-suppr/test28-add-aliased-function-report-0.txt: Likewise. 25139 * tests/data/test-diff-suppr/test28-add-aliased-function-report-1.txt: Likewise. 25140 * tests/data/test-diff-suppr/test28-add-aliased-function-report-2.txt: Likewise. 25141 * tests/data/test-diff-suppr/test28-add-aliased-function-report-3.txt: Likewise. 25142 * tests/data/test-diff-suppr/test28-add-aliased-function-report-4.txt: Likewise. 25143 * tests/data/test-diff-suppr/test28-add-aliased-function-report-5.txt: Likewise. 25144 * tests/data/test-diff-suppr/test28-add-aliased-function-report-6.txt: Likewise. 25145 * tests/data/test-diff-suppr/test28-add-aliased-function-v0.c: Likewise. 25146 * tests/data/test-diff-suppr/test28-add-aliased-function-v0.o: Likewise. 25147 * tests/data/test-diff-suppr/test28-add-aliased-function-v1.c: Likewise. 25148 * tests/data/test-diff-suppr/test28-add-aliased-function-v1.o: Likewise. 25149 * tests/data/Makefile.am: Add the new test material above to the 25150 source distribution. 25151 * tests/test-diff-suppr.cc: Add the new test inputs above to this 25152 test harness. 25153 251542016-02-12 Dodji Seketeli <dodji@redhat.com> 25155 25156 Emit more informational messages on unrecognized options 25157 * tools/abicompat.cc (options::prog_name): New data member. 25158 (display_help, perform_compat_check_in_normal_mode) 25159 (perform_compat_check_in_weak_mode, main): Prefix error messages 25160 with the name of the program. 25161 * tools/abidw.cc (options::wrong_option): New data member. 25162 (display_help): Prefix error messages with the name of the 25163 program.n 25164 (parse_command_line): Record the name of the unrecognized option. 25165 (main): Tell the name of the unrecognized option. Prefix error 25166 messages with the name of the program. 25167 * tools/abilint.cc (optionqs::wrong_option): New data member 25168 (display_usage): Prefix error messages with the name of the 25169 program. 25170 (parse_command_line): Record the name of the unrecognized option. 25171 (main): Tell the name of the unrecognized option. Prefix error 25172 messages with the name of the program. 25173 * tools/abipkgdiff.cc (options::{wrong_option, prog_name}): New 25174 data members. 25175 (package::erase_extraction_directory, display_usage, extract_rpm) 25176 (extract_deb, extract_tar) 25177 (erase_created_temporary_directories_parent, extract_package) 25178 (compare, create_maps_of_package_content): Prefix error messages 25179 with the name of the program. 25180 (maybe_check_suppression_files): Adjust. 25181 (parse_command_line): Record the name of the unrecognized option, 25182 and the name of option which lacks an operand. 25183 (main): Give the name of the unrecognized option. Prefix error 25184 messages with the name of the program. 25185 251862016-02-12 Dodji Seketeli <dodji@redhat.com> 25187 25188 Prefix abidiff error message with the 'abidiff' program name 25189 * include/abg-tools-utils.h (emit_prefix): Declare new function. 25190 (check_file): Add a new parameter with a default value, so that 25191 existing code keeps compiling. 25192 * src/abg-tools-utils.cc (emit_prefix): Define new function. 25193 (check_file): Use the emit_prefix function and give it the program 25194 name passed as a new parameter. 25195 * tools/abidiff.cc (display_usage, main): Use the new emit_prefix 25196 to prefix error messages. 25197 251982016-02-11 Dodji Seketeli <dodji@redhat.com> 25199 25200 Bug 19606 - Need better error message for invalid options 25201 * tools/abidiff.cc (options::wrong_option): New data member. 25202 (parse_command_line): Record the name of the unknown option and of 25203 the option which value is missing. 25204 252052016-02-11 Dodji Seketeli <dodji@redhat.com> 25206 25207 Add a comment about libabigail needing elfutils 0.159 at least. 25208 * configure.ac: Add a comment saying that we require at least 25209 elfutils 0.159. 25210 252112016-02-11 Dodji Seketeli <dodji@redhat.com> 25212 25213 Talk about mandatory properties in suppress_* directives 25214 * doc/manuals/libabigail-concepts.rst: Talk about the mandatory 25215 properties for suppress_type, suppress_function and 25216 suppress_variable directives. 25217 252182016-02-11 Dodji Seketeli <dodji@redhat.com> 25219 25220 Make abipkgdiff check for the presence of suppression spec files 25221 * tools/abipkgdiff.cc (maybe_check_suppression_files): Define new 25222 static function. 25223 (main): Use it. 25224 252252016-02-11 Dodji Seketeli <dodji@redhat.com> 25226 25227 Make abipkgdiff return correct exit code on usage error 25228 * tools/abipkgdiff.cc (main): Return the correct error code on 25229 usage error. 25230 252312016-02-11 Dodji Seketeli <dodji@redhat.com> 25232 25233 Bug 19604 - abidiff --suppressions doesn't complain about invalid file name 25234 * tools/abidiff.cc (maybe_check_suppression_files): Define new 25235 static function. 25236 (main): Use it. 25237 252382016-02-10 Dodji Seketeli <dodji@redhat.com> 25239 25240 Use proper WIFEXITED and WEXITSTATUS macros to get exit code 25241 * tests/test-diff-dwarf-abixml.cc (main): Use WIFEXITED and 25242 WEXITSTATUS macros to get the return code of the abidiff program. 25243 * tests/test-diff-filter.cc (test_task::perform): Likewise. 25244 * tests/test-diff-pkg.cc (main): Likewise. 25245 * tests/test-diff-suppr.cc (main): Likewise. 25246 252472016-02-10 Dodji Seketeli <dodji@redhat.com> 25248 25249 Bug 19596 - Incorrect exit status for incompatible ABI change 25250 * include/abg-comparison.h (enum diff_category): Adjust the 25251 comment for enumerator VIRTUAL_MEMBER_CHANGE_CATEGORY; changes of 25252 this category are incompatible ABI changes. 25253 (corpus_diff::diff_stats::num_func_with_virtual_offset_changes): 25254 Declare new accessors. 25255 * src/abg-comparison.cc 25256 (corpus_diff::diff_stats::priv::num_func_with_virt_offset_changes): 25257 New data member. 25258 (corpus_diff::diff_stats::priv::priv): Initialize the new data 25259 member. 25260 (corpus_diff::diff_stats::num_func_with_virtual_offset_changes): 25261 Define new accessors. 25262 (corpus_diff::priv::apply_filters_and_compute_diff_stats): Use the 25263 new accessor to set the number of functions with virtual offset 25264 changes onto the stats data structure. 25265 (corpus_diff::has_incompatible_changes): Take functions with 25266 virtual offset changes into account. 25267 * tests/test-abidiff-exit.cc: New test harness to test for exit 25268 codes of abidiff. 25269 * tests/Makefile.am: Build the new test harness runtestabidiff 25270 from the test-abidiff-exit.cc source file. 25271 * tests/data/test-abidiff-exit/test1-voffset-change-report0.txt: 25272 New reference test output. 25273 * tests/data/test-abidiff-exit/test1-voffset-change-v0.cc: New 25274 test input source code. 25275 * tests/data/test-abidiff-exit/test1-voffset-change-v0.o: New test input. 25276 * tests/data/test-abidiff-exit/test1-voffset-change-v1.cc: New 25277 test input source code. 25278 * tests/data/test-abidiff-exit/test1-voffset-change-v1.o: New test input. 25279 * tests/data/Makefile.am: tests/data/Makefile.am: Add the new test 25280 inputs above to the source distribution. 25281 252822016-02-04 Dodji Seketeli <dodji@redhat.com> 25283 25284 Fix synthesizing of reference type 25285 * src/abg-ir.cc (synthesize_type_from_translation_unit): Support 25286 synthesizing reference types. 25287 * tests/data/test-abicompat/libtest9-fn-changed-v0.so: Add new 25288 test input. 25289 * tests/data/test-abicompat/libtest9-fn-changed-v1.so: Likewise. 25290 * tests/data/test-abicompat/test9-fn-changed-app: Likewise. 25291 * tests/data/test-abicompat/test9-fn-changed-app.cc: : Likewise. 25292 * tests/data/test-abicompat/test9-fn-changed-report-0.txt: Likewise. 25293 * tests/data/test-abicompat/test9-fn-changed-v0.cc: Likewise. 25294 * tests/data/test-abicompat/test9-fn-changed-v0.h: Likewise. 25295 * tests/data/test-abicompat/test9-fn-changed-v1.cc: Likewise. 25296 * tests/data/test-abicompat/test9-fn-changed-v1.h: Likewise. 25297 * tests/data/Makefile.am: Add the new material to source 25298 distribution. 25299 * tests/test-abicompat.cc (in_out_specs): Add the new test inputs 25300 to the test harness. 25301 253022016-02-03 Dodji Seketeli <dodji@redhat.com> 25303 25304 Fix synthesizing of pointer type 25305 * include/abg-ir.h: Update copyright. 25306 * src/abg-ir.cc (synthesize_type_from_translation_unit): Support 25307 synthesizing pointer types. 25308 * tests/data/test-abicompat/libtest8-fn-changed-libapp-v0.so: New 25309 test input. 25310 * tests/data/test-abicompat/libtest8-fn-changed-libapp-v1.so: Likewise. 25311 * tests/data/test-abicompat/test8-fn-changed-app: Likewise. 25312 * tests/data/test-abicompat/test8-fn-changed-app.c: Likewise. 25313 * tests/data/test-abicompat/test8-fn-changed-libapp-v0.c: Likewise. 25314 * tests/data/test-abicompat/test8-fn-changed-libapp-v0.h: Likewise. 25315 * tests/data/test-abicompat/test8-fn-changed-libapp-v1.c: Likewise. 25316 * tests/data/test-abicompat/test8-fn-changed-libapp-v1.h: Likewise. 25317 * tests/data/test-abicompat/test8-fn-changed-report-0.txt: Likewise. 25318 * tests/data/Makefile.am: Add the new test input files to source 25319 distribution. 25320 * tests/test-abicompat.cc (in_out_specs): Add the new test inputs 25321 above to the test harness. 25322 253232016-01-26 Mark Wielaard <mjw@redhat.com> 25324 25325 Remove defined but not used functions pointed out by GCC6. 25326 * src/abg-ir.cc (convert_node_to_decl(decl_base_sptr)): Remove 25327 definition. 25328 (get_node_name(decl_base_sptr)): Likewise. 25329 253302016-01-26 Mark Wielaard <mjw@redhat.com> 25331 25332 Make make more silent. 25333 * Makefile.am (AM_MAKEFLAGS): Set --no-print-directory. 25334 253352016-01-26 Mark Wielaard <mjw@redhat.com> 25336 25337 Fix GCC6 -Wmisleading-indentation warnings. 25338 * src/abg-dwarf-reader.cc (find_import_unit_point_before_die): 25339 Properly indent code after if clause. 25340 * src/abg-ini.cc (write_property_value): Properly indent return 25341 statement after else clause. 25342 253432016-01-27 Dodji Seketeli <dodji@redhat.com> 25344 25345 Fix abicompat's handling of library types not used by the application 25346 * tools/abicompat.cc (perform_compat_check_in_weak_mode): If the 25347 application doesn't use a given type defined and exported by the 25348 library, then skip it. 25349 253502016-01-27 Dodji Seketeli <dodji@redhat.com> 25351 25352 Do not crash when looking up a type from global scope 25353 * src/abg-ir.cc (lookup_type_in_scope): Gently Handle empty access 25354 path. 25355 253562016-01-25 Dodji Seketeli <dodji@redhat.com> 25357 25358 Comparing aliases of the same symbol must be done by pointer 25359 * src/abg-ir.cc (elf_symbol::operator==): Fix thinko and 25360 indentation. What was I thinking ... 25361 (elf_symbol::add_alias) 25362 (compute_aliases_for_elf_symbol): Do not compare aliases using the 25363 equality operator, because it considers all aliases of a given 25364 symbol as equal. Rather, use elf_symbol::is_main_symbol() to test 25365 if an alias is the main symbol alias. 25366 * src/abg-comp-filter.cc (function_name_changed_but_not_symbol): 25367 Likewise. 25368 * src/abg-corpus.cc 25369 (corpus::priv::build_unreferenced_symbols_tables): Likewise. 25370 * src/abg-writer.cc (write_elf_symbol_aliases): Likewise. 25371 253722016-01-21 Dodji Seketeli <dodji@redhat.com> 25373 25374 Bug 19204 - libabigail aborts on DWARF referencing non-existing DIE 25375 * src/abg-dwarf-reader.cc (get_parent_die): If we couldn't find 25376 the parent of a given DIE, return false, do not abort. Also, 25377 assert that if we don't find the parent of a DIE in the main debug 25378 info, we don't find it in the alternate debug info either (and 25379 vice versa). This is because I'd like to abort on cases where we 25380 look for a DIE in the wrong debug info; those cases are likely to 25381 be hint that the DWARF reader is doing something wrong which ought 25382 to be investigated and fixed. 25383 (get_scope_for_die): If we couldn't get the parent of the DIE, 25384 then return a nil scope. 25385 * tests/data/test-types-stability/pr19204-libtcmalloc.so.4.2.6-xlc: 25386 New test binary input. 25387 * tests/data/Makefile.am: Add the new binary test input to the 25388 source distribution. 25389 * tests/test-types-stability.cc (elf_paths): Account for the new 25390 binary input. 25391 253922016-01-20 Dodji Seketeli <dodji@redhat.com> 25393 25394 Pass parm of elf_symbol::add_alias by reference 25395 * include/abg-ir.h (elf_symbol::add_alias): Pass parameter by 25396 reference. 25397 * src/abg-ir.cc (elf_symbol::add_alias): Likewise. 25398 253992016-01-20 Dodji Seketeli <dodji@redhat.com> 25400 25401 Bug 19141 - Libabigail doesn't support common ELF symbols 25402 * include/abg-ir.h (elf_symbol::elf_symbol): Take a new flag to 25403 say if the symbol is common. 25404 (elf_symbol::{is_common_symbol, has_other_common_instances, 25405 get_next_common_instance, add_common_instance}): New member functions. 25406 * src/abg-ir.cc (elf_symbol::priv::{is_common_, 25407 next_common_instance_): New data members. 25408 (elf_symbol::priv::priv): Adjust. 25409 (elf_symbol::{elf_symbol, create}): Take a new flag to say if the 25410 symbol is common. 25411 (textually_equals): Adjust to account for symbol common-ness. 25412 (elf_symbol::{is_common_symbol, has_other_common_instances, 25413 get_next_common_instance, add_common_instance}): Define new member 25414 functions. 25415 (elf_symbol::add_alias): Drive-by fix; compare symbols using 25416 pointer value. Value comparison is not necessary. 25417 * src/abg-dwarf-reader.cc (lookup_symbol_from_sysv_hash_tab) 25418 (lookup_symbol_from_gnu_hash_tab, lookup_symbol_from_symtab) 25419 (read_context::lookup_elf_symbol_from_index): Adjust the creation 25420 of the symbol to account for common-ness. 25421 (read_context::load_symbol_maps): Recognize instances of a given 25422 common symbol and represent them as such. Do not mistake this 25423 with symbol aliases. 25424 * src/abg-reader.cc (build_elf_symbol): Adjust the creation of the 25425 symbol to account for common-ness. 25426 * src/abg-writer.cc (write_elf_symbol): Adjust symbol 25427 serialization to account common-ness. 25428 * tests/data/test-types-stability/pr19141-get5d.o: Add new test 25429 binary input. 25430 * tests/data/test-types-stability/pr19142-topo.o: Likewise. 25431 * tests/data/Makefile.am: Add the new test inputs to source distribution. 25432 * tests/test-types-stability.cc (elf_paths): The the new test 25433 inputs into account. 25434 254352016-01-13 Dodji Seketeli <dodji@redhat.com> 25436 25437 Bug 19434 - invalid character in attribute value 25438 * include/abg-tools-utils.h (string_is_ascii_identifier): Declare 25439 new function. 25440 * src/abg-tools-utils.cc (string_is_ascii_identifier): Define new function. 25441 * src/abg-dwarf-reader.cc (build_function_type): Discard parameter 25442 name if it's made of non-identifier ascii characters. 25443 * tests/data/test-types-stability/pr19434-elf0: New test binary input file. 25444 * tests/data/Makefile.am: Add the new test input to source distribution. 25445 * tests/test-types-stability.cc: Test the new test input into account. 25446 254472016-01-18 Dodji Seketeli <dodji@redhat.com> 25448 25449 Sort the tests run in tests/ by running the slowest ones first 25450 * tests/Makefile.am: Sort the tests by running the slowest ones 25451 first. 25452 254532016-01-15 Dodji Seketeli <dodji@redhat.com> 25454 25455 Use worker threads pattern to speed up some tests 25456 * include/Makefile.am: Add the new abg-workers.h to source 25457 distribution. 25458 * include/abg-workers.h: New file. 25459 * src/Makefile.am: Add the new abg-worker.cc to source 25460 distribution. 25461 * src/abg-workers.cc: New file. 25462 * tests/test-utils.cc: Update copyright. Make get_src_dir() and 25463 get_build_dir() return a const char*, as opposed to returning a 25464 string. Make that const char reside in thread local storage, so 25465 that two concurrent threads can safely call these functions in 25466 parallel, without any race. 25467 * tests/test-utils.h: Make get_src_dir() and get_build_dir() 25468 return a const char*, as opposed to returning a string. 25469 * tests/test-abicompat.cc: Update copyright. Adjust for 25470 get_src_dir() and get_build_dir() change. 25471 * tests/test-abidiff.cc: Likewise. 25472 * tests/test-alt-dwarf-file.cc: Likewise. 25473 * tests/test-core-diff.cc: Likewise. 25474 * tests/test-diff-dwarf-abixml.cc: Likewise. 25475 * tests/test-diff-dwarf.cc: Likewise. 25476 * tests/test-diff-pkg.cc: Likewise. 25477 * tests/test-diff-suppr.cc: Likewise. 25478 * tests/test-lookup-syms.cc: Likewise. 25479 * tests/test-read-dwarf.cc: Likewise. 25480 * tests/test-read-write.cc: Likewise. 25481 * tests/test-types-stability.cc: Likewise. Use the new task queue 25482 type to run these tests in parallel. 25483 * tests/test-diff-filter.cc: Likewise. 25484 254852016-01-18 Ondrej Oprala <ooprala@redhat.com> 25486 25487 Escape the value of the filepath attribute. 25488 * src/abg-writer.cc (write_location): Sanitize the filepath with 25489 xml::escape_xml_string(). 25490 (write_translation_unit): Likewise. 25491 (write_corpus_to_native_xml): Likewise. 25492 * tests/data/test-types-stability/pr19433-custom0: Add a new test file. 25493 * tests/test-types-stability.cc: Add the test file to the test harness. 25494 * tests/data/Makefile.am: Add the new test file to the list. 25495 254962016-01-09 Dodji Seketeli <dodji@redhat.com> 25497 25498 Make enum values take 64 bits on all platforms 25499 * include/abg-ir.h: Include stdint.h for int64_t. 25500 (enumerator::enumerator): Take an int64_t value for the value of 25501 the enumerator. 25502 (enumerator::{s,g}et_value): Take/return an int64_t value. 25503 * src/abg-ir.cc (enum_type_decl::enumerator::priv): Store the 25504 value in an int64_t. 25505 (enumerator::priv::priv): Take a int64_t for the value. 25506 (enum_type_decl::enumerator::enumerator): Likewise. 25507 (enum_type_decl::enumerator::{s,g}et_value): Take/returnan int64_t 25508 value. 25509 * src/abg-dwarf-reader.cc (die_unsigned_constant_attribute): Take 25510 an uint64_t value. 25511 (die_signed_constant_attribute): Take an int64_t value. 25512 (die_location, die_size_in_bits, die_access_specifier) 25513 (die_virtuality, die_is_virtual, die_is_declared_inline) 25514 (build_translation_unit_and_add_to_ir, build_type_decl) 25515 (build_enum_type, build_pointer_type_def, build_array_type): 25516 Adjust. 25517 * src/abg-reader.cc (build_enum_type_decl): Adjust. 25518 * src/abg-writer.cc (write_enum_type_decl): Do not cast the result 25519 of enumerator::get_value() anymore, it's value is now a int64_t. 25520 255212016-01-08 Dodji Seketeli <dodji@redhat.com> 25522 25523 Include missing <algorithm> to abg-dwarf-reader.cc 25524 * src/abg-dwarf-reader.cc: Add missing <algorithm> include file. 25525 255262016-01-08 Dodji Seketeli <dodji@redhat.com> 25527 25528 Bug 19138 - Failure to relate variables address from DWARF and ELF 25529 * include/abg-dwarf-reader.h (elf_type::ELF_TYPE_RELOCATABLE): New 25530 enumerator. 25531 * src/abg-dwarf-reader.cc (find_section): Factorize this from ... 25532 (find_text_section, find_bss_section): ... these. 25533 (find_rodata_section, find_data_section, find_data1_section): 25534 Define new static functions. 25535 (elf_file_type): Move this static function definition up. 25536 (read_context::{get_elf_file_type, address_is_in_section, 25537 get_data_section_for_variable_address}): New member functions. 25538 (read_context::maybe_adjust_fn_sym_address): Adjust comment. 25539 Adjust to use the new 25540 read_context::get_data_section_for_variable_address(). 25541 * tests/data/test-types-stability/pr19138-elf0: New test input 25542 binary. 25543 * tests/data/Makefile.am: Add the new test input binary to the 25544 test suite. 25545 * tests/test-types-stability.cc (elf_paths): Take it into account. 25546 255472016-01-08 Dodji Seketeli <dodji@redhat.com> 25548 25549 Bump version revision to 1.0.rc3 25550 * configure.ac: Change version_revision to rc3 25551 255522016-01-08 Dodji Seketeli <dodji@redhat.com> 25553 25554 Add a release announcement text pattern 25555 * release-text-template.txt: New file. 25556 255572016-01-08 Dodji Seketeli <dodji@redhat.com> 25558 25559 Upate build instructions on the website 25560 * doc/website/mainpage.txt: Add instruction about how to build 25561 tarballs. 25562 255632016-01-07 Dodji Seketeli <dodji@redhat.com> 25564 25565 Update website link for 1.0.rc2 25566 * doc/website/mainpage.txt: Update tarball link for 1.0.rc2 25567 255682016-01-07 Dodji Seketeli <dodji@redhat.com> 25569 25570 Update ChangeLog before 1.0.rc2 25571 * ChangeLog: Update with make update-changelog 25572 255732016-01-07 Dodji Seketeli <dodji@redhat.com> 25574 25575 Update NEWS for 1.0.rc2 25576 * NEWS: Update. 25577 255782016-01-07 Dodji Seketeli <dodji@redhat.com> 25579 25580 Fix tests/data/Makefile.am glitch 25581 * tests/data/Makefile.am: Fix a faulty file path. 25582 255832016-01-07 Dodji Seketeli <dodji@redhat.com> 25584 25585 Lexicographically sort added/removed base classes in change report 25586 * src/abg-comparison.cc (sort_string_base_diff_sptr_map): Define 25587 new static function. 25588 (struct base_spec_comp): Define new type. 25589 (class_diff::priv::sorted_{deleted,inserted}_bases_): New data 25590 members. 25591 (class_diff::ensure_lookup_tables_populated): Sort the deleted and 25592 inserted base classes. 25593 (class_diff::report): Use the sorted set of deleted/inserted base 25594 classes in the report. 25595 * tests/data/test-diff-pkg/tbb-4.1-9.20130314.fc22.x86_64--tbb-4.3-3.20141204.fc23.x86_64-report-0.txt: Adjust. 25596 255972016-01-06 Dodji Seketeli <dodji@redhat.com> 25598 25599 Fix regression on the support for alternate debug info files 25600 * src/abg-dwarf-reader.cc 25601 (imported_unit_point::imported_unit_from_alt_di): New data member. 25602 (imported_unit_point::imported_unit_point): Adjust. 25603 (read_context::alt_tu_die_imported_unit_points_map_): New data 25604 member. 25605 (read_context::alt_tu_die_imported_unit_points_map): New accessor. 25606 (die_die_attribute): Remove the overload which doesn't say if the 25607 resulting DIE comes from alternate debug info. 25608 (build_die_parent_relations_under): Take a new flag which says if 25609 we are building the relations about DIEs in the alternate debug 25610 info section or not. Use that flag to know if the imported unit 25611 trace we are building is for an alternate debug info file or not. 25612 (build_die_parent_maps): Build two different imported unit point 25613 trace vectors: one for the main debug info file, and another one 25614 for the alternate debug info file. 25615 (find_import_unit_point_between_dies): Take a flag that says if 25616 the beginning of the search is a DIE in the alternate debug info 25617 file or not. Use it to know if we should use the import point 25618 trace vectors from alternate debug info or from the main debug 25619 info file. When the import point trace vector is empty, return 25620 immediatly. 25621 (get_parent_die): If the parent DIE is a DW_TAG_partial_unit which 25622 hasn't been imported into this TU, then assume the logical parent 25623 is the DIE for the current translation unit. 25624 * tests/data/test-diff-pkg/tbb-4.1-9.20130314.fc22.x86_64--tbb-4.3-3.20141204.fc23.x86_64-report-0.txt: 25625 Reference test output. 25626 * tests/data/test-diff-pkg/tbb-4.1-9.20130314.fc22.x86_64.rpm: New 25627 input test rpm. 25628 * tests/data/test-diff-pkg/tbb-4.3-3.20141204.fc23.x86_64.rpm: 25629 Likewise. 25630 * tests/data/test-diff-pkg/tbb-debuginfo-4.1-9.20130314.fc22.x86_64.rpm: 25631 Likewise. 25632 * tests/data/test-diff-pkg/tbb-debuginfo-4.3-3.20141204.fc23.x86_64.rpm: 25633 Likewise. 25634 * tests/data/Makefile.am: Add the new test materials to the source 25635 distribution. 25636 * tests/test-diff-pkg.cc (int_out_specs): Add the new rpms to the 25637 list of rpms to test against. 25638 256392016-01-06 Dodji Seketeli <dodji@redhat.com> 25640 25641 Bump revision number to 1.0.rc2 25642 * configure.ac: Bump revision number to 1.0.rc2 25643 256442016-01-05 Dodji Seketeli <dodji@redhat.com> 25645 25646 Update link to the 1.0.rc1 tarball 25647 * doc/website/mainpage.txt: Update the "Getting source code" 25648 section. 25649 256502016-01-05 Dodji Seketeli <dodji@redhat.com> 25651 25652 Update ChangeLog before 1.0.rc1 25653 * ChangeLog: Update automatically with make update-changelog 25654 256552016-01-05 Dodji Seketeli <dodji@redhat.com> 25656 25657 Fix abidw -v 25658 * tools/abidw.cc (parse_command_line): Simplify logic. 25659 (main): Fix logic. 25660 256612016-01-05 Dodji Seketeli <dodji@redhat.com> 25662 25663 Add a NEWS file 25664 * NEWS: New file. 25665 * Makefile.am: Add NEWS file to source distribution. 25666 256672016-01-04 Dodji Seketeli <dodji@redhat.com> 25668 25669 Bug 19355 - Libabigail slow on r300_dri.so 25670 * src/abg-dwarf-reader.cc (struct imported_unit_point): Define new 25671 type. 25672 (operator<(const imported_unit_point&, const 25673 imported_unit_point&)): Define less-than operator for new 25674 imported_unit_point& type. 25675 (imported_unit_points_type, tu_die_imported_unit_points_map_type): 25676 New typedefs. 25677 (find_lower_bound_in_imported_unit_points): Define new static function. 25678 (read_context::tu_die_imported_unit_points_map_): New data member. 25679 (read_context::tu_die_imported_unit_points_map): New getter. 25680 (die_die_attribute): Define new overload. 25681 (build_die_parent_relations_under): Take imported_unit_points_type 25682 output parameter and populate it along the way. Remove the 25683 overload that takes a read_context as a parameter. 25684 (build_primary_die_parent_relations_under) 25685 (build_alternate_die_parent_relations_under): Remove. 25686 (build_die_parent_maps): Pass an instance of 25687 imported_unit_points_type to build_die_parent_relations_under. 25688 (find_import_unit_point_between_dies): Rename one overload of 25689 find_last_import_unit_point_before_die into this. Adjust to make 25690 it find the import point between two offsets. 25691 (find_import_unit_point_before_die): Rename the other overload of 25692 find_last_import_unit_point_before_die into this. Adjust to use 25693 find_import_unit_point_between_dies. 25694 (get_parent_die): Adjust to use find_import_unit_point_before_die. 25695 256962016-01-04 Dodji Seketeli <dodji@redhat.com> 25697 25698 Support two different variables having the same underlying symbol 25699 * src/abg-ir.cc (var_decl::get_id()): Include the name of the 25700 variable in the ID. 25701 257022016-01-04 Dodji Seketeli <dodji@redhat.com> 25703 25704 Avoid adding the same base class twice 25705 * src/abg-dwarf-reader.cc: 25706 * src/abg-reader.cc: 25707 257082016-01-04 Dodji Seketeli <dodji@redhat.com> 25709 25710 Speed up class_decl::find_base_class 25711 * src/abg-ir.cc (class_decl::priv::bases_map_): New data member. 25712 (class_decl::add_base_specifier): Add the new base specifier to 25713 the new class_decl::priv::bases_map_ data member. 25714 (class_decl::find_base_class): Use the new 25715 class_decl::priv::bases_map_ data member to speed up finding the 25716 base class. 25717 257182016-01-04 Dodji Seketeli <dodji@redhat.com> 25719 25720 Make class_decl::base_spec class follow the pimpl pattern 25721 * include/abg-ir.h (class_decl::base_spec::priv): Declare new 25722 private data type. 25723 (class_decl::base_spec::priv_): Declare new pimpl data member. 25724 (class_decl::base_spec::{base_class_, offset_in_bits_, 25725 is_virtual_}): Remove. 25726 (class_decl::base_spec::{get_base_class, get_is_virtual, 25727 get_offset_in_bits}): Make these member functions out of line. 25728 * src/abg-ir.cc (struct class_decl::base_spec::priv): New type. 25729 (class_decl::base_spec::{get_base_class, get_is_virtual, 25730 get_offset_in_bits}): Define these functions here. 25731 (class_decl::base_spec::base_spec): Adjust because now there is 25732 only one pimpl data member to initialize. 25733 257342015-11-16 Ondrej Oprala <ooprala@redhat.com> 25735 25736 Add the option of printing the file, line and column information about a type being reported. 25737 * bash-completion/abicompat: Complete the new "--no-show-locs" option. 25738 * bash-completion/abidiff: Likewise. 25739 * bash-completion/abidw: Likewise. 25740 * bash-completion/abipkgdiff: Likewise. 25741 * doc/manuals/abicompat.rst: Mention the new "--no-show-locs" option. 25742 * doc/manuals/abidiff.rst: Likewise. 25743 * doc/manuals/abidw.rst: Likewise. 25744 * doc/manuals/abipkgdiff.rst: Likewise. 25745 * include/abg-comparison.h (show_locs): Add declarations. 25746 * src/abg-comparison.cc: (diff_context::priv): Add a new switch 25747 called "show_locs_" and set its default value to false. 25748 (report_loc_info): New function. Outputting the extra information 25749 is conditionalized based on the associated diff contexts settings. 25750 (show_locs): define a getter/setter for 25751 diff_context::priv::show_locs_. 25752 ({distinct,pointer,reference,qualified_type,enum,class,scope,fn_parm, 25753 typedef,corpus}_diff::report): Call report_loc_info when 25754 appropriate. 25755 (maybe_report_diff_for_member): Likewise. 25756 (represent): Accept a const reference to a diff_context_sptr as a first 25757 argument and call report_loc_info on its second argument. 25758 * src/abg-dwarf-reader.cc: 25759 * tests/data/Makefile.am: Add the new test reference files. 25760 * tests/data/test-abicompat/test0-fn-changed-report-2.txt: New test 25761 reference output. 25762 * tests/data/test-abicompat/test5-fn-changed-report-1.txt: Likewise. 25763 * tests/data/test-abicompat/test6-var-changed-report-1.txt: Likewise. 25764 * tests/data/test-abicompat/test7-fn-changed-report-2.txt: Likewise. 25765 * tests/data/test-diff-filter/test30-pr18904-rvalueref-report1.txt: 25766 Likewise. 25767 * tests/data/test-diff-filter/test31-pr18535-libstdc++-report-1.txt: 25768 Likewise. 25769 * tests/data/test-diff-pkg/dirpkg-3-report-2.txt: Likewise. 25770 * tests/data/test-diff-suppr/test6-fn-suppr-report-0-1.txt: Likewise. 25771 * tests/test-abidiff.cc: Explicitly create a diff context and turn off 25772 location emitting. 25773 * tests/test-diff-dwarf.cc: Likewise. 25774 * tests/test-abicompat.cc: Add --no-show-locs to all existing test 25775 arguments. Run a few of the existing tests again, but without this 25776 option. 25777 * tests/test-diff-filter.cc: Likewise. 25778 * tests/test-diff-pkg.cc: Likewise. 25779 * tests/test-diff-suppr.cc: Likewise. 25780 * tools/abicompat.cc: Handle the new "--no-show-locs" option. 25781 * tools/abidiff.cc: Likewise. 25782 * tools/abidw.cc: Likewise. 25783 * tools/abipkgdiff.cc: Likewise. 25784 257852015-11-16 Ondrej Oprala <ooprala@redhat.com> 25786 25787 Fix a function doc 25788 * src/abg-ir.cc: (location_manager::expand_location): Fix a factual 25789 error in the function documentation. 25790 257912015-12-11 Dodji Seketeli <dodji@redhat.com> 25792 25793 [PERF] Speedup comparing declaration-only class_decls 25794 * src/abg-ir.cc (equals): In the overload for class_decl, avoid 25795 calling class_decl::get_is_declaration_only() several times. 25796 Avoid copying the qualified name of the class_decl. Also, use the 25797 == operator to compare strings, rather than the != one. 25798 257992015-12-11 Dodji Seketeli <dodji@redhat.com> 25800 25801 [PERF] Access naked pointers for canonical types and function types 25802 * include/abg-ir.h (type_base::get_naked_canonical_type): Declare 25803 new accessor. 25804 (function_decl::get_naked_canonical_type): Likewise. 25805 (function_decl::set_type): Pass a reference to the shared_ptr. 25806 * src/abg-ir.cc (type_base::priv::naked_canonical_type): New data 25807 member. 25808 (type_base::priv::priv): Initialize it. 25809 (canonicalize): Set the naked canonicalize type when we set its 25810 shared pointer. 25811 (type_base::get_naked_canonical_type): Define new accessor. 25812 ({pointer_type_def,reference_type_def,function_type,class_decl}::operator==): 25813 Use naked canonical pointers rather than the slower shared_ptr to 25814 canonical pointers. 25815 (function_decl::priv::naked_type_): New data member. 25816 (function_decl::priv::priv): Initialize it. 25817 (function_decl::get_naked_type): Define new accessor. 25818 (function_decl::set_type): Pass a reference to the shared_ptr . 25819 (equals): In the overload for function_decl, use the faster naked 25820 pointers to the type of the function. 25821 258222015-12-11 Dodji Seketeli <dodji@redhat.com> 25823 25824 [PERF] Turn some pimpl pointers into naked pointers 25825 * include/abg-ir.h ({decl_base, type_base, function_decl}::priv_) 25826 Make this a naked pointer to priv, rather than a shared_ptr<priv>. 25827 * src/abg-ir.cc (decl_base::~decl_base): Destroy the private data 25828 pointer, aka pimpl pointer. 25829 (type_base::~type_base): Likewise. 25830 (function_decl::~function_decl): Likewise. 25831 (class_decl::~class_decl): Likewise. 25832 258332015-12-11 Dodji Seketeli <dodji@redhat.com> 25834 25835 [PERF] Pass a bunch of perf-sensitive smart pointers by reference 25836 * include/abg-fwd.h (lookup_type_in_corpus, lookup_type_in_scope) 25837 (lookup_var_decl_in_scope): Pass the decls smart pointers by 25838 reference. 25839 * src/abg-ir.cc (lookup_type_in_corpus, lookup_type_in_scope) 25840 (lookup_var_decl_in_scope): Pass the decls smart pointers by 25841 reference, for performance reasons. 25842 258432015-12-10 Dodji Seketeli <dodji@redhat.com> 25844 25845 Bug 19126 - abidw segv on a dwz compressed version of r300_dri.so 25846 * include/abg-ir.h (class location_manager): Forward declare it 25847 before class location. 25848 (location::loc_manager_): New data member. 25849 (location::location): Take the location manager in one overload 25850 and initialize the new loc_managers_ in all the overloads. 25851 (location::get_location_manager): New getter. 25852 (location::expand): New member function. 25853 (location::*): Add API doc to all entry points. 25854 (location_manager::expand_location): Take a const location. 25855 (type_or_decl_base::set_corpus): Remove. 25856 (type_or_decl_base::{get,set}_translation): New accessors. 25857 (decl_base::{decl_base,get_location}): Take or return a reference 25858 on location. 25859 (scope_decl::scope_decl): Likewise. 25860 (type_decl::type_decl): Likewise. 25861 (namespace_decl::namespace_decl): Likewise. 25862 (qualified_type_def::qualified_type_def): Likewise. 25863 (pointer_type_def::pointer_type_def): Likewise. 25864 (reference_type_def::reference_type_def): Likewise. 25865 (array_type_def::subrange_type::{subrange_type, 25866 get_location}): Likewise. 25867 (enum_type_decl::enum_type_decl): Likewise. 25868 (typedef_decl::typedef_decl): Likewise. 25869 (var_decl::var_decl): Likewise. 25870 (function_decl::function_decl): Likewise. 25871 (function_decl::parameter::parameter): Likewise. 25872 (template_decl::template_decl): Likewise. 25873 (type_tparameter::type_tparameter): Likewise. 25874 (non_type_tparameter::non_type_tparameter): Likewise. 25875 (function_tdecl::function_tdecl): Likewise. 25876 (class_tdecl::class_tdecl): Likewise. 25877 (class_decl::class_decl): Likewise. 25878 (class_decl::method_decl::method_decl): Likewise. 25879 * src/abg-ir.cc (location::expand_location): Define new member 25880 function. 25881 (type_or_decl_base::priv::corpus_): Remove. 25882 (type_or_decl_base::priv::translation_unit_): New data member. 25883 (type_or_decl_base::priv::priv): Adjust. 25884 (type_or_decl_base::set_corpus): Remove. 25885 (type_or_decl_base::get_corpus): Adjust. 25886 (type_or_decl_base::{get,set}_translation_unit): New member 25887 functions. 25888 (decl_base::priv::priv): Take a reference to location. 25889 (decl_base::decl_base): Likewise. 25890 (decl_base::get_location): Return a reference to location. 25891 (location_manager::create_new_location): Adjust. 25892 (location_manager::expand_location): Take a reference to location. 25893 (translation_unit::get_global_scope()): Adjust. 25894 (translation_unit::bind_function_type_life_time): Likewise. 25895 (scope_decl::{add,insert}_member_decl): Adjust. 25896 (get_translation_unit): Likewise. 25897 (type_decl::type_decl): Take a reference to location. 25898 (namespace_decl::namespace_decl): Likewise. 25899 (qualified_type_def::qualified_type_def): Likewise. 25900 (pointer_type_def::pointer_type_def): Likewise. 25901 (reference_type_def::reference_type_def): Likewise. 25902 (array_type_def::subrange_type::priv::priv): Likewise. 25903 (array_type_def::subrange_type::{subrange_type, 25904 get_location}): Likewise. 25905 (enum_type_decl::enum_type_decl): Likewise. 25906 (typedef_decl::typedef_decl): Likewise. 25907 (var_decl::var_decl): Likewise. 25908 (function_decl::function_decl): Likewise. 25909 (function_decl::parameter::parameter): Likewise. 25910 (template_decl::template_decl): Likewise. 25911 (type_tparameter::type_tparameter): Likewise. 25912 (non_type_tparameter::non_type_tparameter): Likewise. 25913 (function_tdecl::function_tdecl): Likewise. 25914 (class_tdecl::class_tdecl): Likewise. 25915 (class_decl::class_decl): Likewise. 25916 (class_decl::method_decl::method_decl): Likewise. 25917 * src/abg-writer.cc (write_location): Take a reference to 25918 location and adjust. 25919 (write_array_type_def, write_function_decl, dump_decl_location): 25920 Adjust. 25921 259222015-12-08 Dodji Seketeli <dodji@redhat.com> 25923 25924 Fix some white space nits 25925 * src/abg-comparison.cc (class_diff::report): Remove a useless 25926 horizontal white space. 25927 * src/abg-ir.cc (operator==): Add a vertical space. 25928 259292015-12-08 Dodji Seketeli <dodji@redhat.com> 25930 25931 Filter out harmless diagnostics glitches due to some ODR violation 25932 * src/abg-comp-filter.cc 25933 (class_diff_has_harmless_odr_violation_change): New static 25934 function. 25935 (harmless_filter::visit): Call it. 25936 259372015-12-08 Dodji Seketeli <dodji@redhat.com> 25938 25939 Fix internal name for pointers, typedefs and arrays 25940 * include/abg-ir.h (pointer_type_def::priv_): New data structure. 25941 The type is now pimpled. 25942 (typedef_decl::priv_): Likewise. 25943 * src/abg-ir.cc (struct pointer_type_def::priv): New struct. 25944 (pointer_type_def::pointer_type_def): Adjust. 25945 (pointer_type_def::get_pointed_to_type): Likewise. 25946 (pointer_type_def::get_qualified_name): Store temporary/internal 25947 names into different caches. 25948 (array_type_def::priv::{temp_internal_qualified_name_, 25949 internal_qualified_name_}): New data members. 25950 (get_type_representation): In the overload for array_type_def, 25951 take requests for internal names into account. 25952 (array_type_def::get_qualified_name): Take requests for internal 25953 names into account. Store temporary/internal names into different 25954 caches. 25955 (typedef_decl::priv): New struct. 25956 (typedef_decl::typedef_decl): Adjust. 25957 (typedef_decl::get_underlying_type): Likewise. 25958 259592015-12-08 Dodji Seketeli <dodji@redhat.com> 25960 25961 Avoid try/catch code paths when that is possible 25962 * src/abg-ir.cc (is_type, equals): Do not use try/catch based 25963 dynamic_cast. 25964 259652015-12-08 Dodji Seketeli <dodji@redhat.com> 25966 25967 Fix comparison in qualified_type_diff::has_changes 25968 * src/abg-comparison.cc (qualified_type_diff::has_changes): Make 25969 this stupid and simple, now that we have (fast) canonical type 25970 based comparison. 25971 * include/abg-ir.h (qualified_type_diff::operator==): Add an 25972 overload for qualified_type_diff here. 25973 (operator==): Likewise. 25974 * src/abg-ir.cc (qualified_type_diff::operator==): Define it. 25975 (operator==): Likewise. 25976 259772015-12-06 Dodji Seketeli <dodji@redhat.com> 25978 25979 Bug 19336 - Better handle redundantly qualified reference types 25980 * src/abg-dwarf-reader.cc (maybe_strip_qualification): Do not nuke 25981 the qualified type. Rather, just turn the redundant const 25982 qualifier into a no-op one. 25983 * src/abg-comparison.cc (compute_diff_for_types): Look through 25984 no-op qualified types. 25985 * include/abg-ir.h 25986 (decl_base::{peek,set}_temporary_qualified_name): Declare new 25987 accessors. 25988 * src/abg-ir.cc (decl_base::priv::temporary_qualified_name_): New 25989 data member. 25990 (decl_base::{peek,set}_temporary_qualified_name): Define new 25991 accessors. 25992 (qualified_type_def::priv::{temporary_internal_name_, 25993 internal_name}): New data members. 25994 (qualified_type_def::build_name): For a no-op qualified type, the 25995 internal name (which contains the 'none' qualifier) is different 25996 from the non-internal name. 25997 (qualified_type_def::get_qualified_name): Handle temporary names 25998 and non-temporary names in two different caches. Also handle 25999 internal and non-internal names in two different caches. This 26000 makes four different caches. 26001 (qualified_name_setter::do_update): Do not touch the non-internal, 26002 non-temporary qualified name cache if the qualified parent name is 26003 empty. 26004 * tools/abidw.cc (main): change --check-alternate-debug-info to 26005 make it *not* display the name/path to the alternate debug info, 26006 when it's found. Rather, only 26007 --check-alternate-debug-info-base-name keeps displaying the base 26008 name of the alternate debug info. 26009 * tests/data/test-alt-dwarf-file/test1-libgromacs-debug-dir/*: New 26010 test material. 26011 * tests/data/Makefile.am: Add the new test material to the build 26012 system. 26013 * tests/test-alt-dwarf-file.cc (in_out_specs): Take the new test 26014 input into account. 26015 * tests/data/test-read-dwarf/test1.abi: Adjust. 26016 * tests/data/test-read-dwarf/test7.so.abi: Likewise. 26017 * tests/data/test-read-dwarf/test10-pr18818-gcc.so.abi: Likewise. 26018 * tests/data/test-read-dwarf/test11-pr18828.so.abi: Likewise. 26019 * tests/data/test-read-dwarf/test14-pr18893.so.abi: Likewise. 26020 * tests/data/test-read-dwarf/test15-pr18892.so.abi: Likewise. 26021 * tests/data/test-read-dwarf/test16-pr18904.so.abi: Likewise. 26022 * tests/data/test-read-dwarf/test17-pr19027.so.abi: Likewise. 26023 * tests/data/test-read-dwarf/test18-pr19037-libvtkRenderingLIC-6.1.so.abi: 26024 Likewise. 26025 * tests/data/test-read-dwarf/test19-pr19023-libtcmalloc_and_profiler.so.abi: 26026 Likewise. 26027 * tests/data/test-read-dwarf/test20-pr19025-libvtkParallelCore-6.1.so.abi: 26028 Likewise. 26029 * tests/data/test-read-dwarf/test22-pr19097-libstdc++.so.6.0.17.so.abi: 26030 Likewise. 26031 260322015-12-06 Dodji Seketeli <dodji@redhat.com> 26033 26034 Do not forget to peel qualified type off when peeling types 26035 * include/abg-fwd.h (peel_qualified_type): Declare new function 26036 ... 26037 * src/abg-ir.cc (peel_qualified_type): ... and define it. 26038 (peel_typedef_pointer_or_reference_type): Peel qualified types 26039 here too. 26040 260412015-12-06 Dodji Seketeli <dodji@redhat.com> 26042 26043 Find more spots where to discriminate internal and non-internal names 26044 * src/abg-ir.cc (get_type_name, get_method_type_name) 26045 ({typedef_decl,var_decl,function_decl,class_decl}::get_pretty_representation): 26046 Propagate the internal-ness to the call to get_qualified_name(). 26047 260482015-12-06 Dodji Seketeli <dodji@redhat.com> 26049 26050 Constify is_qualified_type() 26051 * include/abg-fwd.h (is_qualified_type): Make this take a const 26052 parameter. 26053 * src/abg-ir.cc (is_qualified_type): Likewise. 26054 260552015-11-28 Dodji Seketeli <dodji@redhat.com> 26056 26057 Add missing new line to abidiff help message 26058 * tools/abidiff.cc (display_usage): Add missing new line. 26059 260602015-11-26 Dodji Seketeli <dodji@seketeli.org> 26061 26062 Do not abort when there is no binary to compare in a package 26063 * tests/data/test-diff-pkg/empty-pkg-libvirt-0.9.11.3-1.el7.ppc64.rpm: 26064 New input test package. 26065 * tests/data/test-diff-pkg/empty-pkg-libvirt-1.2.17-13.el7_2.2.ppc64.rpm: 26066 Likewise. 26067 * tests/data/test-diff-pkg/empty-pkg-report-0.txt: New test 26068 reference output. 26069 * data/Makefile.am: Add the new test material above to the build system. 26070 * tests/test-diff-pkg.cc (int_out_specs): Add the new test inputs 26071 to the set of tests. 26072 * tools/abipkgdiff.cc (compare): Do not abort if there is no 26073 binary to compare. 26074 260752015-11-14 Ondrej Oprala <ooprala@redhat.com> 26076 26077 Abidiff: Remove doubled line in help. 26078 * tools/abidiff.cc (display_usage): Remove a doubled help message. 26079 260802015-11-14 Ondrej Oprala <ooprala@redhat.com> 26081 26082 Add bash-completion scripts for the libabigail tools 26083 * Makefile.am: include bash-completion/Makefile.am 26084 * bash-completion/Makefile.am: New makefile for the bash-completion 26085 directory. 26086 * bash-completion/abicompat: New completion script. 26087 * bash-completion/abidiff: Likewise. 26088 * bash-completion/abidw: Likewise. 26089 * bash-completion/abilint: Likewise. 26090 * bash-completion/abinilint: Likewise. 26091 * bash-completion/abipkgdiff: Likewise. 26092 * bash-completion/abisym: Likewise. 26093 * configure.ac: Check for the bash-completion package. Handle 26094 the new --enable-bash-completion[=WHEN] configure option. 26095 * manuals/libabigail-tools.rst: Mention the scripts. 26096 260972015-11-17 Dodji Seketeli <dodji@redhat.com> 26098 26099 Read enum values in the size_t and write them in ssize_t 26100 * include/abg-ir.h (enum_type_def::enumerator::get_value): Return 26101 a size_t. 26102 * src/abg-ir.cc (enum_type_decl::enumerator::get_value): Likewise. 26103 * src/abg-dwarf-reader.cc (die_signed_constant_attribute): #if-out 26104 this static function that is not used anymore. 26105 (build_enum_type): Read the value of the enumerator using a size_t 26106 value. 26107 * src/abg-reader.cc (build_enum_type_decl): Read the enum value 26108 using a long long int. 26109 * src/abg-writer.cc (write_enum_type_decl): Write using a ssize_t. 26110 261112015-11-17 Dodji Seketeli <dodji@redhat.com> 26112 26113 Bump version to release candidate 1.0.rc1 26114 * configure.ac: Bump version to release candidate 1.0.rc1 26115 261162015-11-17 Dodji Seketeli <dodji@redhat.com> 26117 26118 Do not use designated initializers in abipkgdiff.cc 26119 * tools/abipkgdiff.cc (prepare_packages): Do not use designated 26120 initializers syntax. 26121 261222015-11-16 Dodji Seketeli <dodji@redhat.com> 26123 26124 Update ChangeLog for 1.0.rc0 26125 * ChangeLog: Udpate using make update-changelog 26126 261272015-11-16 Dodji Seketeli <dodji@redhat.com> 26128 26129 Fix doxygen configuration file paths in doc/Makefile.am 26130 * doc/Makefile.am: There was an extra "/doc" in the path. 26131 261322015-11-16 Dodji Seketeli <dodji@redhat.com> 26133 26134 Update ChangeLog file in preparation of 1.0.rc0 release 26135 * ChangeLog: Update using make update-changelog. 26136 261372015-11-16 Dodji Seketeli <dodji@redhat.com> 26138 26139 Add --version option to several libabigail tools 26140 * configure.ac: Set the version revision to "rc0". 26141 * doc/manuals/abicompat.rst: Adjust manual for new --version 26142 option. 26143 * doc/manuals/abidiff.rst: Likewise. 26144 * doc/manuals/abidw.rst: Likewise. 26145 * doc/manuals/abilint.rst: Likewise. 26146 * doc/manuals/abipkgdiff.rst: Likewise. 26147 * include/abg-config.h (config::{m_format_minor, m_format_major}): 26148 Make these be strings. 26149 (config::{get,set}_format_minor_version_number): Make these return 26150 strings. 26151 (config::{get,set}_format_major_version_number): Make these return 26152 or take strings. 26153 (abigail_get_library_version): Make this take strings. 26154 * src/abg-config.cc (config::config): Adjust. 26155 (config::{get,set}_format_major_version_number): Make these return 26156 or take strings. 26157 (config::{get,set}_format_minor_version_number): Make these return 26158 strings. 26159 (abigail_get_library_version): Make this take strings. 26160 * include/abg-version.h.in: Make the version variables be strings. 26161 * src/abg-writer.cc (write_translation_unit): The version numbers 26162 are now strings so adjust. 26163 * tools/{abicompat,abidiff,abidw,abilint,abipkgdiff,abisym}.cc 26164 (options::display_version): New data member. 26165 (options::options): Initialize it. 26166 (display_usage): Add documentation for new --version option. 26167 (parse_command_line): Parse new --version option. 26168 (main): Support --version. 26169 261702015-11-12 Dodji Seketeli <dodji@redhat.com> 26171 26172 Correctly handle fn DIE with abstract_origin in alt debug info 26173 * src/abg-dwarf-reader.cc (build_ir_node_from_die): Consider that 26174 the function decl is for a DIE in the alternate debug info file only if 26175 the DIE itself comes from the alternate debug info file, not if 26176 the specification or the origin of the function comes from the 26177 alternate debug info file. 26178 * tests/data/test-diff-pkg/qemu-img-rhev-2.3.0-20.el7.ppc64.rpm: 26179 New test input rpm. 26180 * tests/data/test-diff-pkg/qemu-img-rhev-2.3.0-7.el7.ppc64.rpm: Likewise. 26181 * tests/data/test-diff-pkg/qemu-kvm-rhev-debuginfo-2.3.0-20.el7.ppc64.rpm: Likewise. 26182 * tests/data/test-diff-pkg/qemu-kvm-rhev-debuginfo-2.3.0-7.el7.ppc64.rpm: Likewise. 26183 * tests/data/test-diff-pkg/qemu-img-rhev-2.3.0-7.el7.ppc64--qemu-img-rhev-2.3.0-20.el7.ppc64-report-0.txt: 26184 New test reference output. 26185 * tests/data/Makefile.am: Add the new test material to the source 26186 distribution. 26187 * tests/test-diff-pkg.cc (in_out_specs): Use the new test rpm 26188 inputs. 26189 261902015-11-09 Ondrej Oprala <ooprala@redhat.com> 26191 26192 Bug 19081 - abipkgdiff parallelization 26193 * doc/manuals/abipkgdiff.rst: Mention the new --no-parallel option. 26194 * tools/Makefile.am: Add -pthread to abipkgdiffs link options. 26195 * tools/abipkgdiff.cc (elf_file_paths_tls_key): New key for the 26196 thread-local vector of ELF filepaths. 26197 (reports_map): A map of the path of the first ELF of a compared pair 26198 and a corpus representing the difference. 26199 (env_map): A map of the corpus difference and a corresponding 26200 environment needed to be kept alive until the diff is reported. 26201 ({arg,map}_lock): mutexes to control access to the comparison argument 26202 list and the {reports,env}_map respectively. 26203 (options): Add a new member "parallel" and set it to true in the ctor. 26204 (elf_file): Add a new "size" member and set it in the ctor. 26205 (package descriptor): Arguments passed to extract_package_set. 26206 (compare_args): Arguments passed to the ELF comparison function. 26207 (display_usage): Mention the new "--no-parallel" option. 26208 (pthread_routine_extract_package): A wrapper function around 26209 extract_package to be used in a multi-threaded environment. 26210 ({first_second}_package_tree_walker_callback_fn): Add the new ELF file 26211 paths to a thread-specific vector. 26212 (compare): In an overload of compare, verbose output is updated to 26213 always mention the ELF files being compared for each reported stage. 26214 Reporting is no longer done in this function, the resulting difference 26215 is instead passed back to the calling function for reporting in the 26216 main thread, along with a corresponding environment. 26217 (pthread_routine_compare): Accept a pointer to a vector of comparison 26218 arguments. This function is to be called NTHREAD times and share the 26219 vector passed to it with its other invocations. Create the environment 26220 for compare() and store its output in a map if there is a difference. 26221 (create_maps_of_package_content): Allocate memory for a thread local 26222 vector of ELF paths and dispose of it before returning. 26223 (pthread_routine_extract_pkg_and_map_its_content): Renamed from 26224 extract_package_and_map_its_content. Extract the debuginfo as well as 26225 the regular package in this function. Spawn a separate thread for the 26226 extraction of the debug package. 26227 (pthread_join): A function handling thread joining throughout package 26228 extractions. 26229 (prepare_packages): Spawn a thread to extract each set of packages. 26230 (elf_size_is_greater): New comparison function used to order ELF pairs 26231 by size. 26232 (compare): In the overload of compare, pass through the ELF path 26233 vectors and identify pairs to be diffed. Put them in a vector and sort 26234 it by the summed ELF pair size. Spawn comparison threads and safely 26235 check for results in the proper order of the ELF pairs. Report any 26236 differences ASAP and collect the threads after all the reporting is 26237 done, checking their return status. 26238 (parse_command_line): Check for the "--no-parallel" option. 26239 262402015-11-10 Dodji Seketeli <dodji@redhat.com> 26241 26242 Fix typo in test-diff-dwarf-abixml.cc 26243 * tests/test-diff-dwarf-abixml.cc (main): Fix typo. 26244 262452015-10-14 Ondrej Oprala <ooprala@redhat.com> 26246 26247 Document abipkgdiff's option --no-abignore 26248 * doc/manuals/abipkgdiff.rst: Mention the new option. 26249 * tools/abipkgdiff.cc: Likewise. 26250 262512015-11-09 Dodji Seketeli <dodji@redhat.com> 26252 26253 Avoid canonicalizing function types too early 26254 * src/abg-dwarf-reader.cc (die_function_type_map_type): New 26255 typedef. 26256 * (): 26257 (read_context::die_wip_function_types_map_): New data member. 26258 (read_context::{die_wip_function_types_map, 26259 is_wip_function_type_die_offset}): New methods. 26260 (build_function_type): Mark the function being built as "work in 26261 progress". 26262 (maybe_canonicalize_type): Do not early-canonicalize WIP function 26263 types. 26264 * src/abg-reader.cc (build_function_type): Mark the function being 26265 built as "work in progress". 26266 * tests/test-diff-dwarf-abixml.cc: New test harness. 26267 * tests/Makefile.am: Add new test harness runtestdiffdwarfabixml 26268 to the build system. 26269 * tests/data/test-diff-dwarf-abixml/test0-pr19026-libvtkIOSQL-6.1.so.1: 26270 New test binary input. 26271 * tests/data/test-diff-dwarf-abixml/test0-pr19026-libvtkIOSQL-6.1.so.1.abi: 26272 New test input. 26273 * tests/data/Makefile.am: Add new test inputs to source 26274 distribution. 26275 * tests/data/test-read-dwarf/test17-pr19027.so.abi: Adjust. 26276 262772015-11-09 Dodji Seketeli <dodji@redhat.com> 26278 26279 Propagate environment property to base specifiers 26280 * src/abg-comparison.cc (compute_diff): In the overload for 26281 class_decl::base_spec_sptr, assert that the environment of the 26282 base classes are equal and that the environment the base class is 26283 the same as the environment of the base specifier. 26284 * src/abg-ir.cc (add_base_specifier): Propagate the environment of 26285 the class to its base specifiers. 26286 * tests/data/test-types-stability/pr19026-libvtkIOSQL-6.1.so.1: 26287 New test binary input. 26288 * tests/data/Makefile.am: Add the new test input to the build 26289 system. 26290 * tests/test-types-stability.cc (elf_paths): Add new binary to the 26291 test harness. 26292 262932015-11-09 Dodji Seketeli <dodji@redhat.com> 26294 26295 Misc style fixes 26296 * src/abg-comparison.cc (diff_context::mark_diff_as_visited): Add 26297 missing space. 26298 (corpus_diff::priv::ensure_lookup_tables_populated): Likewise. 26299 * src/abg-dwarf-reader.cc (lookup_symbol_from_elf): Likewise. 26300 (get_soname_of_elf_file, get_type_of_elf_file): Likewise. 26301 * src/abg-ir.cc (var_decl::get_pretty_representation): Likewise. 26302 263032015-11-07 Dodji Seketeli <dodji@redhat.com> 26304 26305 Support DW_AT_count DWARF attribute 26306 * src/abg-dwarf-reader.cc (get_default_array_lower_bound): Define 26307 new static function. 26308 (build_array_type): Support the DW_AT_count attribute. 26309 * tests/data/test-diff-dwarf/test35-pr19173-libfoo-long-clang.so: 26310 New test binary input. 26311 * tests/data/test-diff-dwarf/test35-pr19173-libfoo-long-clang2.so: Likewise. 26312 * tests/data/test-diff-dwarf/test35-pr19173-libfoo-long-clang-report-0.txt: 26313 New test reference output. 26314 * tests/data/test-diff-dwarf/test35-pr19173-libfoo-long-gcc.so: 26315 New test binary input. 26316 * tests/data/test-diff-dwarf/test35-pr19173-libfoo-long-gcc2.so: 26317 New test binary input. 26318 * tests/data/test-diff-dwarf/test35-pr19173-libfoo-long-gcc-report-0.txt: 26319 New test reference output. 26320 * tests/data/test-diff-dwarf/test35-pr19173-libfoo-long.c: Source 26321 code for the binaries above. 26322 * tests/data/Makefile.am: Add the new test material to the build 26323 system. 26324 * tests/test-diff-dwarf.cc (in_out_specs): Add the new test inputs 26325 to the harness. 26326 263272015-11-07 Dodji Seketeli <dodji@redhat.com> 26328 26329 Bug 19173 - Abidiff doesn't detect symbol size change in library 26330 * include/abg-ir.h (elf_symbol::{elf_symbol, create}): Take a size 26331 parameter. 26332 (elf_symbol::{get,set}_size): New accessors. 26333 * src/abg-ir.cc (elf_symbol::priv::size_): New data member. 26334 (elf_symbol::priv::priv): Initialize it. 26335 (elf_symbol::{elf_symbol, create}) Take a size parameter. 26336 (textually_equals): Compare the size of variable symbols. 26337 (elf_symbol::{get, set}_size): New accessors. 26338 * src/abg-comparison.cc (maybe_report_diff_for_symbol): New static 26339 function. 26340 ({function_decl_diff,var_diff}::report): Use it. 26341 * src/abg-dwarf-reader.cc (lookup_symbol_from_sysv_hash_tab) 26342 (lookup_symbol_from_gnu_hash_tab, lookup_symbol_from_symtab) 26343 (read_context::lookup_elf_symbol_from_index): Set the size of the 26344 elf symbols' internal representation. 26345 * src/abg-reader.cc (build_elf_symbol): Read the size attribute if 26346 present. 26347 * src/abg-writer.cc (write_elf_symbol): Write the size attribute 26348 for variable symbols, if it's not zero. 26349 * tests/data/test-diff-dwarf/test34-pr19173-libfoo.so: New test 26350 input binary. 26351 * tests/data/test-diff-dwarf/test34-pr19173-libfoo2.so: Likewise. 26352 * tests/data/test-diff-dwarf/test34-pr19173-libfoo-report-0.txt: 26353 New reference test output. 26354 * tests/data/Makefile.am: Add the new test input binaries to the 26355 build system. 26356 * tests/test-diff-dwarf.cc (in_out_specs): Add the new test input 26357 above to the test harness. 26358 * tests/data/test-diff-dwarf/test9-report.txt: Adjust. 26359 * tests/data/test-diff-filter/test30-pr18904-rvalueref-report0.txt: Likewise. 26360 * tests/data/test-read-dwarf/test0.abi: Likewise. 26361 * tests/data/test-read-dwarf/test1.abi: Likewise. 26362 * tests/data/test-read-dwarf/test10-pr18818-gcc.so.abi: Likewise. 26363 * tests/data/test-read-dwarf/test11-pr18828.so.abi: Likewise. 26364 * tests/data/test-read-dwarf/test12-pr18844.so.abi: Likewise. 26365 * tests/data/test-read-dwarf/test15-pr18892.so.abi: Likewise. 26366 * tests/data/test-read-dwarf/test16-pr18904.so.abi: Likewise. 26367 * tests/data/test-read-dwarf/test18-pr19037-libvtkRenderingLIC-6.1.so.abi: Likewise. 26368 * tests/data/test-read-dwarf/test19-pr19023-libtcmalloc_and_profiler.so.abi: 26369 Likewise. 26370 * tests/data/test-read-dwarf/test20-pr19025-libvtkParallelCore-6.1.so.abi: 26371 Likewise. 26372 * tests/data/test-read-dwarf/test21-pr19092.so.abi: Likewise. 26373 * tests/data/test-read-dwarf/test22-pr19097-libstdc++.so.6.0.17.so.abi: 26374 Likewise. 26375 * tests/data/test-read-dwarf/test6.so.abi: Likewise. 26376 * tests/data/test-read-dwarf/test9-pr18818-clang.so.abi: Likewise. 26377 263782015-11-07 Dodji Seketeli <dodji@redhat.com> 26379 26380 Add some needed vertical space 26381 * src/abg-dwarf-reader.cc (build_array_type): Add a new line after 26382 this function. 26383 263842015-11-07 Dodji Seketeli <dodji@redhat.com> 26385 26386 Pass a bunch of parameters by reference as they ought to be 26387 * include/abg-ir.h (operator==): In the overload for 26388 elf_symbol_sptr, pass the parameters by reference. 26389 * src/abg-ir.cc (operator==): Do the same at definition site. 26390 * src/abg-comparison.cc (maybe_report_diff_for_member): Pass 26391 parameters by reference. 26392 263932015-11-05 Dodji Seketeli <dodji@redhat.com> 26394 26395 Bug 19139 - DWARF reader doesn't handle garbage in function names 26396 * include/abg-tools-utils.h (string_is_ascii): Declare new 26397 function ... 26398 * src/abg-tools-utils.cc (string_is_ascii): ... and define it. 26399 * src/abg-writer.cc (write_function_type): Escape forbidden XML 26400 characters in function type names. 26401 * src/abg-dwarf-reader.cc (build_function_type): If a parameter 26402 name is not ascii, drop it on the floor. 26403 * tests/data/test-types-stability/pr19139-DomainNeighborMapInst.o: 26404 New test input binary. 26405 * tests/data/test-types-stability/pr19202-libmpi_gpfs.so.5.0: 26406 Likewise. 26407 * tests/data/Makefile.am: Add the new binaries above to the build 26408 system. 26409 * tests/test-types-stability.cc: New test harness. 26410 * tests/Makefile.am: Add the new test harness to the build system. 26411 264122015-11-05 Dodji Seketeli <dodji@redhat.com> 26413 26414 Introduce the name abixml in some comments 26415 * src/abg-reader.cc: Mention abixml in the comment at the top of 26416 the file. 26417 * src/abg-writer.cc: Likewise. 26418 264192015-10-17 Dodji Seketeli <dodji@redhat.com> 26420 26421 Bug 19026 - Types with same name and different size considered equivalent 26422 * src/abg-ir.cc (type_base::get_canonical_type_for): Really 26423 compare the size of the type to be canonicalized against the size 26424 of the *current* potential canonical type of the same name. 26425 264262015-10-17 Dodji Seketeli <dodji@redhat.com> 26427 26428 Add a script to update the reference output of runtestreaddwarf 26429 * tests/update-test-read-dwarf-output.py: New helper python program. 26430 264312015-10-17 Dodji Seketeli <dodji@redhat.com> 26432 26433 Style fixes in the abixml writer. 26434 * src/abg-writer.cc (write_var_decl): Use the var_decl_sptr 26435 typedef. 26436 (write_class_decl): Indent. 26437 264382015-10-17 Dodji Seketeli <dodji@redhat.com> 26439 26440 Fix typo in test-read-dwarf.cc 26441 * tests/test-read-dwarf.cc (for test test21-pr19092.so.abi): Fix 26442 typo in the output path of that test. 26443 264442015-10-17 Dodji Seketeli <dodji@redhat.com> 26445 26446 Adjust regression tests reference output for the current patch set 26447 * tests/data/test-read-dwarf/test22-pr19097-libstdc++.so.6.0.17.so: 26448 New test input binary. 26449 * tests/data/test-read-dwarf/test22-pr19097-libstdc++.so.6.0.17.so.abi: 26450 New test reference output. 26451 * tests/data/Makefile.am: Add the new test files above to the 26452 source distribution. 26453 * tests/test-read-dwarf.cc (in_out_specs): Add the two new test 26454 files above to the set of test input files. 26455 * tests/data/test-read-dwarf/test10-pr18818-gcc.so.abi: Adjust. 26456 * tests/data/test-read-dwarf/test12-pr18844.so.abi: Adjust. 26457 * tests/data/test-read-dwarf/test13-pr18894.so.abi: Adjust. 26458 * tests/data/test-read-dwarf/test14-pr18893.so.abi: Adjust. 26459 * tests/data/test-read-dwarf/test15-pr18892.so.abi: Adjust. 26460 * tests/data/test-read-dwarf/test16-pr18904.so.abi: Adjust. 26461 * tests/data/test-read-dwarf/test17-pr19027.so.abi: Adjust. 26462 * tests/data/test-read-dwarf/test18-pr19037-libvtkRenderingLIC-6.1.so.abi: Adjust. 26463 * tests/data/test-read-dwarf/test19-pr19023-libtcmalloc_and_profiler.so.abi: Adjust. 26464 * tests/data/test-read-dwarf/test20-pr19025-libvtkParallelCore-6.1.so.abi: Adjust. 26465 * tests/data/test-read-dwarf/test21-pr19092.so.abi: Adjust. 26466 * tests/data/test-read-dwarf/test9-pr18818-clang.so.abi: Adjust. 26467 264682015-10-17 Dodji Seketeli <dodji@redhat.com> 26469 26470 Use abidw --abidiff in test-read-dwarf.cc 26471 * tests/test-read-dwarf.cc (handle_in_out_spec): Rather than 26472 calling abilint on the abixml and abidiff-ing the .so file against 26473 its .so.abi, call abidw --abidiff on the .so file and voila. Ok, 26474 it does one extra save of abixml, but then that won't hurt. And 26475 things are faster now than what they were anyway :-) 26476 264772015-10-17 Dodji Seketeli <dodji@redhat.com> 26478 26479 Fix emitting of referenced type in abixml writer 26480 * Use of canonical pointers in the hash map of referenced types 26481 The abixml writer was using canonical types pointer values to hash 26482 referenced types in a map. It was doing so "by hand"; and it was thus 26483 messing things up for types without canonical types (like some class 26484 declarations) etc. 26485 This patch changes that by using the generic solution of 26486 abigail::ir::hash_type_or_decl(), which also uses the same canonical 26487 pointer type values. For types with no canonical types, that 26488 functions knows has to gracefully fallback. At worst, it will just 26489 make things slower, not wrong. 26490 * Sorting of referenced types 26491 The patch also changes the sorting function used for the hash map of 26492 referenced types. The previous solution was sorting the pretty 26493 representation of types; but then when two types have the same pretty 26494 representation (think, typedefs, for instance) then their relative 26495 position in the sorted result was random. This causes some stability 26496 issues, in that emitting the abixml for the same binary several times 26497 can lead to the some types being sorted differently -- they have the 26498 same name, but not necessarily the same type *IDs*, as they are 26499 different types. 26500 The new sorting code handles this better; it also uses the pretty 26501 representations of types, when they are equal, it uses the type IDs to 26502 tell the types apart. At least this brings stability in the abixml 26503 output, for a given binary. 26504 * Avoiding duplicating declaration-only types when emitting the 26505 context of referenced member types. 26506 We don't keep track of declaration-only classes that are emitted. 26507 This is because we allow a given class declaration (that carries no 26508 definition) to appear several times in a given ABI corpus. So when a 26509 referenced type is a class declaration, it always appears as if that 26510 referenced type has not been emitted. So when we specifically emit 26511 the not-emitted referenced types, it can happen that declaration-only 26512 classes can appear a lot of times. This is unnecessary duplication, 26513 aka bloat. 26514 This patch thus introduces a new hash map that tracks emitted 26515 declaration-only classes, so that we can allow duplication of class 26516 declarations when they follow what's done in the IR read from DWARF, 26517 and disallow that duplication when it's totally artificial and 26518 useless. 26519 * Better tracking of referenced types 26520 We were blatantly forgetting to mark some referenced types as such. 26521 So those were missing in some abixml output. 26522 This patch fixes the spots where we were forgetting that important 26523 information. 26524 * Better representation of the scopes of the referenced types that 26525 were specifically emitted. 26526 The previous code was failing at properly representing the class scope 26527 of some referenced types that were specifically emitted, or sometimes, 26528 for member types, representing the scope would be so screwed that the 26529 (referenced) member type itself wouldn't be emitted at all. 26530 This is because I thought that to emit a given member type, just 26531 emitting its parent scope would be enough. I thought that would 26532 automatically trigger emitting the member type itself. First, that 26533 would emit too much information at times; the other members of the 26534 scope are not necessarily needed. And second the "duplication 26535 detection code" would sometime refuse to emit the scope class, because 26536 it has already been emitted earlier! But the incarnation that got 26537 emitted didn't have this member type as member, then. Yes, in DWARF, 26538 the same class A can be declared several times with different member 26539 types in it. The complete representation of A would be a union of all 26540 those declarations of A that are seen. 26541 This patch addresses this issue by carefully emitting just the 26542 information that is needed from the scope of the referenced type. 26543 Basically the scope is declared just to declare/define the type we are 26544 interested in; period. The abixml reader is now properly geared to 26545 re-construct the scope by merging its different parts that are now 26546 scattered around, in the ABI corpus. That support is part of this 26547 patch set. 26548 instance, a member typedef would be emitted with the information of 26549 its parent class badly formatted. 26550 * src/abg-writer.cc (struct type_ptr_comp_functor): Remove this. 26551 (sort_type_ptr_map): Likewise. 26552 (write_context::record_type_as_referenced): Do not add the 26553 canonical type of the type to record as referenced directly. 26554 (write_context::type_is_referenced): Adjust accordingly. 26555 (struct write_context::type_ptr_cmp): New comparison functor. 26556 (write_context::sort_types): New sorting function. 26557 (write_context::{record_decl_only_type_as_emitted, 26558 decl_only_type_is_emitted}): New member functions. 26559 (write_member_type_opening_tag): Factorize out of ... 26560 (write_member_type): ... here. 26561 (write_class_decl_opening_tag): Factorize out of ... 26562 (write_class_decl): ... here. Now, keep track also of 26563 declaration-only classes that are emitted. 26564 (write_decl_in_scope): Use the new write_member_type_opening_tag 26565 and write_class_decl_opening_tag. Now write class scopes 26566 ourselves; they only contain the type declarations that we are 26567 emitting. 26568 (write_translation_unit): Use the new sorting code to sort the 26569 referenced types to emit. Do not emit referenced types that are 26570 declaration-only classes that have already been emitted. Handle 26571 the fact that emitting the referenced types might make those 26572 emitted type *reference* other types too! So handle those new 26573 referenced types as such, and emit them too. 26574 (write_qualified_type_def, write_typedef_decl, write_var_decl): Do 26575 not forget to mark referenced types as such. 26576 265772015-10-17 Dodji Seketeli <dodji@redhat.com> 26578 26579 Support updating a class in the abixml reader 26580 * include/abg-ir.h (class_decl::{find_base_class, 26581 find_member_type, find_data_member}): Declare new member functions .. 26582 * src/abg-ir.cc (class_decl::{find_base_class, 26583 find_member_type, find_data_member}): ... and define them. 26584 * src/abg-reader.cc (build_class_decl): Add the ability to update 26585 a class to add new data members, member types and base classes to 26586 it, if necessary. 26587 265882015-10-17 Dodji Seketeli <dodji@redhat.com> 26589 26590 Don't canonicalize types not added to their context in abixml reader 26591 * src/abg-reader.cc (read_context::maybe_canonicalize_type): 26592 Assert that a class type that is scheduled for canonicalization 26593 must be in a scope. We do this only for classes, for now. The 26594 assert here helped to spot (and fix) a lot of places where we 26595 were canonicalizing types without scope. 26596 (read_context::build_or_get_type_decl): Canonicalize types here, 26597 when they are built and (hopefully) added to their scope. There 26598 might be cases here where we try to canonicalize types that are 26599 not added to their scope. That should bomb in the assert above, 26600 at least for class types, for now. We'll then fix the places where 26601 the types are created, to make them properly scoped. 26602 (build_type_decl, build_qualified_type_decl) 26603 (build_pointer_type_def, build_reference_type_def) 26604 (build_array_type_def, build_enum_type_decl, build_typedef_decl): 26605 Do not try to canonicalize the types early, right when they are 26606 created. Canonicalization should happen at the point where (or 26607 after) they are added to their scope. 26608 (build_class_decl): Likewise. Also, schedule member types for 26609 canonicalization once they've been added to their scope. 26610 (build_class_tdecl): Schedule the pattern of the class template 26611 for canonicalization once it has been added to its scope. I am 26612 not sure I should do this, as the pattern is not yet a real type, 26613 but I am taking my bet. 26614 (build_type_composition): Schedule the composed type for 26615 canonicalization once it's been added to its scope. 26616 (handle_type_decl, handle_qualified_type_decl) 26617 (handle_pointer_type_def, handle_reference_type_def) 26618 (handle_function_type, handle_array_type_def) 26619 (handle_enum_type_decl, handle_typedef_decl, handle_class_decl): 26620 At this point, we should know if the type is to be added to a 26621 scope or not. If it's in a scope, then schedule for 26622 canonicalization. 26623 266242015-10-15 Dodji Seketeli <dodji@redhat.com> 26625 26626 Bug 19092 - abidw aborts on types that violate the ODR 26627 * src/abg-ir.cc (type_base::get_canonical_type_for): Look at the 26628 size of types with the same name which could be considered 26629 ODR-equal, to spot possible violations that would induce a type 26630 canonicalization error. 26631 * tests/data/test-read-dwarf/test21-pr19092.so: New test input 26632 binary. 26633 * tests/data/test-read-dwarf/test21-pr19092.so.abi: New reference 26634 abixml for the binary above. 26635 * tests/data/Makefile.am: Add the new test input above to source 26636 distribution. 26637 * tests/data/test-read-dwarf/test9-pr18818-clang.so.abi: Adjust. 26638 * tests/data/test-read-dwarf/test12-pr18844.so.abi: Likewise. 26639 * tests/data/test-read-dwarf/test20-pr19025-libvtkParallelCore-6.1.so.abi: 26640 Likewise. 26641 * tests/test-read-dwarf.cc (int_out_specs): Add the two test input 26642 above. 26643 266442015-10-15 Dodji Seketeli <dodji@redhat.com> 26645 26646 Fix activation of Debian package support 26647 * configure.ac: If we cannot activate Debian package support, then 26648 report it clearly. 26649 266502015-10-15 Dodji Seketeli <dodji@redhat.com> 26651 26652 Misc style cleanup 26653 * include/abg-fwd.h: Remove unnecessary declaration of class 26654 parameter. 26655 * src/abg-ir.cc: Remove trailing space in a comment. 26656 * src/abg-reader.cc: Fix a comment. 26657 266582015-10-15 Dodji Seketeli <dodji@redhat.com> 26659 26660 Emit statistics about resolved class declarations 26661 * src/abg-dwarf-reader.cc 26662 (read_context::resolve_declaration_only_classes): Emit statistics 26663 about resolved classes and the missed ones. 26664 266652015-10-15 Dodji Seketeli <dodji@redhat.com> 26666 26667 Add a missing xml text reader call 26668 * src/abg-reader.cc (read_corpus_from_input): Add the necessary 26669 call to xmlTextReaderNext call after the xmlTextReaderExpand call. 26670 266712015-10-15 Dodji Seketeli <dodji@redhat.com> 26672 26673 Pass some more parameters in reference 26674 * include/abg-ir.h (operator==): For the type_base_sptr and 26675 decl_base_sptr overloads, pass the parameters by reference. 26676 ({var,function}_decl::{set,get}_symbol): Pass the elf_symbol_ptr 26677 by reference. 26678 * src/abg-ir.cc (operator==): For the type_base_sptr and 26679 decl_base_sptr overloads, pass the parameters by reference, now in 26680 the definition. 26681 ({var,function}_decl::{set,get}_symbol): Pass the elf_symbol_ptr 26682 by reference, now in the definition. 26683 266842015-10-15 Dodji Seketeli <dodji@redhat.com> 26685 26686 Adjust tests for the patchset 26687 * tests/data/test-read-dwarf/test10-pr18818-gcc.so.abi: Adjust. 26688 * tests/data/test-read-dwarf/test12-pr18844.so.abi: Likewise. 26689 * tests/data/test-read-dwarf/test13-pr18894.so.abi: Likewise. 26690 * tests/data/test-read-dwarf/test14-pr18893.so.abi: Likewise. 26691 * tests/data/test-read-dwarf/test15-pr18892.so.abi: Likewise. 26692 * tests/data/test-read-dwarf/test16-pr18904.so.abi: Likewise. 26693 * tests/data/test-read-dwarf/test17-pr19027.so.abi: Likewise. 26694 * tests/data/test-read-dwarf/test18-pr19037-libvtkRenderingLIC-6.1.so.abi: Likewise. 26695 * tests/data/test-read-dwarf/test19-pr19023-libtcmalloc_and_profiler.so.abi: Likewise. 26696 * tests/data/test-read-dwarf/test20-pr19025-libvtkParallelCore-6.1.so.abi: Likewise. 26697 * tests/data/test-read-dwarf/test9-pr18818-clang.so.abi: Likewise. 26698 266992015-10-15 Dodji Seketeli <dodji@redhat.com> 26700 26701 Make abidw --abidiff not show definitely harmless changes 26702 * tools/abidw.cc (set_diff_context): New function. 26703 (main): Use that new function. Do not show any output for 26704 --abidiff if only compatible changes were detected. Also, do not 26705 abort if no input binary was giving. 26706 267072015-10-15 Dodji Seketeli <dodji@redhat.com> 26708 26709 Allow only one definition of a given type per corpus in abixml 26710 * src/abg-writer.cc (write_translation_unit): Do not clear some 26711 important per-translation unit maps here. There are needed to 26712 keep track of the emitted and referenced types through the entire 26713 corpus. Avoid (wrongly) recording function types twice. 26714 (write_array_type_def, write_function_decl, write_function_type): 26715 Record referenced types. 26716 (write_class_decl): Record referenced types, and, allow only 26717 declarations to be duplicated in a corpus. 26718 267192015-10-15 Dodji Seketeli <dodji@redhat.com> 26720 26721 A series of small speed optimizations here and there 26722 * src/abg-comparison.cc (var_diff::has_changes): Just compare the 26723 two var_decl. It's (way) faster now than using recursive hashing 26724 for that. 26725 * src/abg-ir.cc (elf_symbol::does_alias): Get out early if the two 26726 main symbols are equal. 26727 (equals): In the overload for function_decl, start by comparing 26728 types. This can be very fast for functions with different types, 26729 as it amounts to a pointer comparison. In the overload for 26730 class_decl, avoid a map lookup when it's not necessary. 26731 267322015-10-15 Dodji Seketeli <dodji@redhat.com> 26733 26734 Accelerate a slow path in hash_type_or_decl() 26735 * include/abg-ir.h (is_function_parameter, is_class_base_spec): 26736 Declare new functions. 26737 * src/abg-ir.cc (is_function_parameter, is_class_base_spec): 26738 Define them. 26739 (hash_type_or_decl): Handle hashing of function parameters are 26740 class base specifications with the fast path of type hashing. 26741 267422015-10-15 Dodji Seketeli <dodji@redhat.com> 26743 26744 Implement fast type lookup in a corpus 26745 * include/abg-fwd.h (components_to_type_name): Declare new 26746 function. 26747 * include/abg-ir.h (string_type_base_wptr_map_type): New typedef. 26748 (translation_unit::{get,set}_types): Declare new member functions. 26749 * src/abg-ir.cc (translation_unit::priv::types_): New data member. 26750 (translation_unit::{get,set}_types): Define these member 26751 functions. 26752 (maybe_update_types_lookup_map): Define new static function. 26753 (components_to_type_name): Define new function. 26754 (scope_decl::{add_member_decl, insert_member_decl}): Call the new 26755 maybe_update_types_lookup_map. 26756 (scope_decl::find_iterator_for_member): Fix logic. 26757 (class_decl::set_is_declaration_only): When a class declaration 26758 becomes a definition, update the name -> type map maintained in 26759 the scope of the class. 26760 (lookup_type_in_translation_unit): Use the hash map of qualified 26761 name -> types that is now maintained in the translation unit. 26762 This is way faster than the previous walking algorithm. 26763 * src/abg-dwarf-reader.cc (build_translation_unit_and_add_to_ir): 26764 When fixing up global variable declarations that need to be 26765 re-added to the translation unit, use the new fast type lookup 26766 function. 26767 267682015-10-15 Dodji Seketeli <dodji@redhat.com> 26769 26770 Set the corpus of all ABI artifact reads from abixml 26771 * src/abg-reader.cc (read_translation_unit): Set the current 26772 corpus to the current translation unit being built. 26773 267742015-10-14 Dodji Seketeli <dodji@redhat.com> 26775 26776 Make canonicalization non sensitive to struct-ness of subtypes 26777 * include/abg-fwd.h (get_type_name, get_function_type_name) 26778 (get_method_type_name, get_pretty_representation): Add an 26779 "internal" flag to all overoads. 26780 * include/abg-ir.h 26781 ({type_or_decl_base, decl_base, type_decl, scope_type_decl, 26782 qualified_type_def, array_type_def, enum_type_decl, typedef_decl, 26783 var_decl, function_decl, function_decl::parameter, function_type, 26784 method_type, class_decl}::get_pretty_representation): Add an 26785 'internal' flag. 26786 ({decl_base, qualified_type_def, pointer_type_def, 26787 reference_type_def, array_type_def, enum_type_decl::enumerator, 26788 function_decl::parameter}::get_qualified_name): Likewise. 26789 (qualified_type_def::build_name): Likewise. 26790 * src/abg-ir.cc ({decl_base, qualified_type_def, pointer_type_def, 26791 reference_type_def, array_type_def, enum_type_decl, 26792 enum_type_decl::enumerator, 26793 function_decl::parameter}::get_qualified_name): Take an "internal" 26794 flag. 26795 (qualified_type_def::build_name): Likewise. 26796 ({decl_base, type_decl, namespace_decl, array_type_def, 26797 enum_type_decl, typedef_decl, var_decl, function_type, 26798 method_type, function_decl, 26799 class_decl}::get_pretty_representation): Likewise. 26800 (get_type_name, get_function_type_name, get_method_type_name) 26801 (get_pretty_representation): Likewise. 26802 (type_base::get_canonical_type_for): Call 26803 get_pretty_representation() with the "internal" flag set to 26804 "true", to get a pretty representation that is independant from 26805 the struct-ness of the subtypes of the type being canonicalized. 26806 268072015-10-14 Dodji Seketeli <dodji@redhat.com> 26808 26809 Handle aliased function decls when comparing decls in general 26810 * include/abg-ir.h (is_function_decl): Add a const to the 26811 reference parameter, making it comply with the definition. 26812 * src/abg-ir.cc (equals): In the overload for decl_base, when the 26813 two linkage names are different, consider the case of the decls 26814 being aliased functions. 26815 268162015-10-14 Dodji Seketeli <dodji@redhat.com> 26817 26818 Fix const-ness of a function parameter 26819 * include/abg-fwd.h (is_function_decl): Add a const to the 26820 parameter to make it comply with the definition in abg-ir.cc. 26821 Woops. 26822 268232015-10-14 Dodji Seketeli <dodji@redhat.com> 26824 26825 Fix "is-anonymous" abixml property impact on some tests 26826 * tests/data/test-abidiff/test-PR18166-libtirpc.so: New file. 26827 * tests/data/test-abidiff/test-PR18166-libtirpc.so.abi: Likewise. 26828 * tests/data/test-abidiff/test-corpus0-report0.txt: Renamed into 26829 tests/data/test-abidiff/test-PR18166-libtirpc.so.report.txt. 26830 * tests/data/test-abidiff/test-corpus0-v{0,1}.so.abi: Removed. 26831 * tests/data/Makefile.am: Renamed test-corpus0-* files into 26832 test-PR18166-libtirpc.so-* files. 26833 * tests/test-abidiff.cc (specs): Adjust. 26834 268352015-10-14 Dodji Seketeli <dodji@redhat.com> 26836 26837 Do not compare access specs for member types & functions 26838 * include/abg-fwd.h (is_function_decl): Declare a new overload. 26839 * src/abg-ir.cc (is_function_decl): Define a new overload. 26840 (equals): In the overload for decl_base, do not compare access 26841 specifiers when comparing member functions and types. 26842 * tests/data/test-diff-dwarf/test0-report.txt: Adjust. 26843 * tests/data/test-diff-filter/test0-report.txt: Likewise. 26844 * tests/data/test-diff-filter/test01-report.txt: Likewise. 26845 * tests/data/test-diff-filter/test30-pr18904-rvalueref-report0.txt: Likewise. 26846 * tests/data/test-diff-filter/test31-pr18535-libstdc++-report-0.txt: Likewise. 26847 * tests/data/test-diff-filter/test4-report.txt: Likewise. 26848 268492015-10-14 Dodji Seketeli <dodji@redhat.com> 26850 26851 Fix strip_typedef issues 26852 * src/abg-ir.cc (strip_typedef): Do not canonicalize 26853 the return type of the method type to typedef-strip. 26854 Acknowledge that the return type can be nil. 26855 268562015-10-14 Dodji Seketeli <dodji@redhat.com> 26857 26858 Force late canonicalizing of function types read from abixml 26859 * src/abg-reader.cc (build_function_type): Late-canonicalize 26860 function types. 26861 268622015-10-13 Ondrej Oprala <ooprala@redhat.com> 26863 26864 Bug 19082 - Recognize suppression spec files 26865 * tests/data/Makefile.am: Add new test material to the build system. 26866 * tests/data/test-diff-pkg/dirpkg-{0-dir1,{1,2}-dir2}/dir.abignore: 26867 A test suppression specification. 26868 * tests/data/test-diff-pkg/dirpkg-{2,3}-dir2/.abignore: Likewise. 26869 * tests/data/test-diff-pkg/dirpkg-3.suppr: Likewise. 26870 * tests/data/test-diff-pkg/dirpkg-{1,2,3}-dir{1,2}/libobj-v0.so: New 26871 binary test inputs. 26872 * tests/data/test-diff-pkg/dirpkg-{1,2,3}-dir{1,2}/obj-v0.cc: New test 26873 source files 26874 * tests/data/test-diff-pkg/dirpkg-{1,2,3}-report-{0,1}.txt: New 26875 reference outputs 26876 * tests/test-diff-pkg.cc: Adjust to run the new tests. 26877 * tools/abipkgdiff.cc (prog_options): New static pointer to struct 26878 opts. 26879 (file_tree_walker_callback_fn): Rename to 26880 first_package_tree_walker_callback_fn. 26881 (second_package_tree_walker_callback_fn): Check for ELF files just 26882 like the previous function but additionally check for files 26883 ending with ".abignore", unless disabled from the command line. 26884 ({create_maps_of_package,extract_package_and_map_its}_content): 26885 Add a callback as a new argument. 26886 (main) handle the new "--no-abignore" option, which turns off 26887 the search for suppression files within the new package. 26888 268892015-10-08 Dodji Seketeli <dodji@redhat.com> 26890 26891 Bug 19024 - Failing to flag underlying type of enums as anonymous 26892 * src/abg-dwarf-raeder.cc (build_enum_type): Set the is-anonymous 26893 flag on the underlying type of the enum. 26894 * tests/data/test-read-dwarf/test0.abi: Adjust. 26895 * tests/data/test-read-dwarf/test9-pr18818-clang.so.abi: Likewise. 26896 * tests/data/test-read-dwarf/test10-pr18818-gcc.so.abi: Likewise. 26897 * tests/data/test-read-dwarf/test11-pr18828.so.abi: Likewise. 26898 * tests/data/test-read-dwarf/test12-pr18844.so.abi: Likewise. 26899 * tests/data/test-read-dwarf/test13-pr18894.so.abi: Likewise. 26900 * tests/data/test-read-dwarf/test14-pr18893.so.abi: Likewise. 26901 * tests/data/test-read-dwarf/test15-pr18892.so.abi: Likewise. 26902 * tests/data/test-read-dwarf/test16-pr18904.so.abi: Likewise. 26903 * tests/data/test-read-dwarf/test17-pr19027.so.abi: Likewise. 26904 * tests/data/test-read-dwarf/test18-pr19037-libvtkRenderingLIC-6.1.so.abi: Likewise. 26905 * tests/data/test-read-dwarf/test19-pr19023-libtcmalloc_and_profiler.so.abi: Likewise. 26906 * tests/data/test-read-dwarf/test20-pr19025-libvtkParallelCore-6.1.so.abi: Likewise. 26907 269082015-10-08 Dodji Seketeli <dodji@redhat.com> 26909 26910 Bug 19025 - abixml writer forgets to emit some member types 26911 * include/abg-fwd.h (is_namespace): Fix prototype. 26912 * src/abg-writer.cc (struct type_ptr_comp_functor): New internal 26913 type. 26914 (sort_type_ptr_map): New static function. 26915 (write_context::m_referenced_types_map): Renamed 26916 m_referenced_fntypes_map data member into this. 26917 (write_context::get_referenced_types): New member function. 26918 (write_context::record_type_as_referenced): Renamed 26919 record_fntype_as_referenced member function into this. Adjust. 26920 (write_context::type_is_referenced): Renamed fntype_is_referenced 26921 into this. 26922 (write_context::clear_referenced_types_map): Renamed 26923 clear_referenced_fntypes_map member function into this. Adjust. 26924 (write_decl_in_scope): New static function. 26925 (write_translation_unit): Use it here to emit types that are 26926 referenced by other types in the TU, but that are not emitted. 26927 Adjust. 26928 (write_pointer_type_def, write_reference_type_def) 26929 (write_typedef_decl): Record the underlying types referenced by 26930 the emitted types as being, well, referenced. 26931 * tests/data/test-read-dwarf/test20-pr19025-libvtkParallelCore-6.1.so: 26932 New test binary input. 26933 * tests/data/test-read-dwarf/test20-pr19025-libvtkParallelCore-6.1.so.abi: 26934 New reference output of the binary input above. 26935 * tests/data/Makefile.am: Add the new test material above to the 26936 source distribution. 26937 * tests/test-read-dwarf.cc (in_out_spec): Add the new test inputs. 26938 * tests/data/test-read-dwarf/test9-pr18818-clang.so.abi: Adjust. 26939 * tests/data/test-read-dwarf/test10-pr18818-gcc.so.abi: Likewise. 26940 * tests/data/test-read-dwarf/test12-pr18844.so.abi: Likewise. 26941 * tests/data/test-read-dwarf/test13-pr18894.so.abi: Likewise. 26942 * tests/data/test-read-dwarf/test14-pr18893.so.abi: Likewise. 26943 * tests/data/test-read-dwarf/test15-pr18892.so.abi: Likewise. 26944 * tests/data/test-read-dwarf/test16-pr18904.so.abi: Likewise. 26945 * tests/data/test-read-dwarf/test17-pr19027.so.abi: Likewise. 26946 * tests/data/test-read-dwarf/test18-pr19037-libvtkRenderingLIC-6.1.so.abi: 26947 Likewise. 26948 * tests/data/test-read-dwarf/test19-pr19023-libtcmalloc_and_profiler.so.abi: 26949 Likewise. 26950 269512015-10-06 Ondrej Oprala <ooprala@redhat.com> 26952 26953 Parallelize test read-dwarf. 26954 * tests/Makefile.am: Link runtestreaddwarf with libpthread. 26955 * tests/test-read-dwarf.cc (main) Create worker threads corresponding 26956 to the number of CPUs online, add a "--no-parallel" option and move 26957 the main loop... 26958 (handleInOutSpec) ...here. 26959 269602015-10-07 Dodji Seketeli <dodji@redhat.com> 26961 26962 Bug 19023 - Type canonicalization is sensitive to struct-ness 26963 * include/abg-ir.h (class_decl::is_struct): Declare a setter for the 26964 "is-struct" property. 26965 * src/abg-ir.cc (class_decl::is_struct): And define that setter 26966 here. 26967 (type_base::get_canonical_type_for): Temporarily set the 26968 'is-struct' flag of the class type to 'false' before building its 26969 pretty representation. 26970 * tests/data/test-read-dwarf/test19-pr19023-libtcmalloc_and_profiler.so: 26971 New test input binary. 26972 * tests/data/test-read-dwarf/test19-pr19023-libtcmalloc_and_profiler.so.abi: 26973 New test reference output. 26974 * tests/data/Makefile.am: Add the new test material above to the 26975 source distribution. 26976 * tests/test-read-dwarf.cc (in_out_specs): Add the two new test 26977 inputs to the list of test inputs to consider. 26978 * tests/data/test-read-dwarf/test14-pr18893.so.abi: Adjust. 26979 269802015-10-06 Dodji Seketeli <dodji@redhat.com> 26981 26982 Style adjustment in abg-corpus.cc 26983 * src/abg-corpus.cc (corpus::exported_decls_builder::id_var_map_): 26984 Renamed data member vars_map_ into this. 26985 (corpus::exported_decls_builder::id_var_map): Renamed vars_map 26986 into this. 26987 (corpus::exported_decls_builder::var_id_is_in_id_var_map): Renamed 26988 var_is_in_map into this. 26989 (corpus::exported_decls_builder::{add_var_to_map, 26990 add_var_to_exported, maybe_add_var_to_exported_vars}): Adjust. 26991 269922015-10-06 Dodji Seketeli <dodji@redhat.com> 26993 26994 Bug 19037 - Make ABI corpus support several functions with same symbol 26995 * include/abg-corpus.h 26996 (corpus::exported_decls_builder::str_{fn,var}_ptr_map_type): 26997 Remove these typedefs from here as they only used internally in 26998 abg-corpus.cc. So we move them there instead. 26999 * src/abg-corpus.cc (str_fn_ptrs_map_type): New typedef. 27000 (str_var_ptr_map_type): Moved the typedef that was in 27001 corpus::exported_decls_builder here. 27002 (corpus::exported_decls_builder::id_fns_map_): Rename the fns_ 27003 data member into this. Make it have a str_fn_ptrs_map_type as a 27004 type. 27005 (corpus::exported_decls_builder::id_fns_map): Renamed the 27006 fns_map() accessor into this one. 27007 (corpus::exported_decls_builder::{fn_id_is_in_id_fns_map, 27008 fn_is_in_fns}): New member functions. 27009 (corpus::exported_decls_builder::fn_is_in_id_fns_map): Rename 27010 fn_is_in_map into this. 27011 (corpus::exported_decls_builder::add_fn_to_id_fns_map): Rename 27012 add_fn_to_map into this. 27013 (corpus::exported_decls_builder::add_fn_to_exported): Adjust. 27014 (corpus::exported_decls_builder::maybe_add_fn_to_exported_fns): 27015 Adjust. 27016 * src/abg-comparison.cc (function_decl_diff::report): Emit reports 27017 about function name changes (for a given function ID) only if 27018 there are sub-type changes to be reported for the function. In 27019 that case, do not forget to emit the sub-type changes after the 27020 name changes have been reported. 27021 (corpus_diff::priv::ensure_lookup_tables_populated): Several 27022 functions of the same ID can be removed or added from/to the 27023 corpus. 27024 * tests/data/test-read-dwarf/test18-pr19037-libvtkRenderingLIC-6.1.so: 27025 New test input binary. 27026 * tests/data/test-read-dwarf/test18-pr19037-libvtkRenderingLIC-6.1.so.abi: 27027 New test output reference. 27028 * tests/data/Makefile.am: Add the new test materials to the source 27029 distribution. 27030 * tests/test-read-dwarf.cc (in_out_specs): Adjust to add the new 27031 test inputs above. 27032 270332015-10-05 Ondrej Oprala <ooprala@redhat.com> 27034 27035 Do not imply private access when building a struct from ABIXML. 27036 * src/abg-reader.cc (read_context): Abort if we run into an 27037 unsupported access specifier. 27038 (build_class_decl) Default to public access for the children 27039 of a struct. 27040 270412015-10-05 Ondrej Oprala <ooprala@redhat.com> 27042 27043 Fix minor warnings when building documentation. 27044 * manuals/abilint.rst: Fix the "Literal block expected" warning. 27045 * manuals/abipkgdiff.rst: Fix the "Title underline too short" warning. 27046 270472015-10-05 Ondrej Oprala <ooprala@redhat.com> 27048 27049 Fix an "Unknown target name" error during make info. 27050 * doc/manuals/libabigail-overview.rst: Fix the reference to 27051 "ELF symbols". 27052 270532015-10-05 Ondrej Oprala <ooprala@redhat.com> 27054 27055 Fix a path in doc/Makefile.am 27056 * doc/Makefile.am: Prefix the path for DOXY_WEBSITE_SRC_CFG and 27057 DOXY_WEBSITE_BLD_{CFG,DIR} with "/doc" to protect it against make 27058 clean. 27059 270602015-10-04 Dodji Seketeli <dodji@redhat.com> 27061 27062 Misc style cleanups 27063 * src/abg-reader.cc (read_is_struct): Fix comment. 27064 (build_type_decl): Use type_decl_sptr rather than 27065 shared_ptr<type_decl>. 27066 (build_type_decl): Use typedef_decl_sptr rather than 27067 shared_ptr<typedef_decl>. 27068 270692015-10-04 Dodji Seketeli <dodji@redhat.com> 27070 27071 Use the ODR to speed up type canonicalization 27072 * include/abg-fwd.h (class corpus): Forward-declare this. 27073 (is_anonymous_type): Declare this new function. 27074 * include/abg-ir.h (corpus_sptr, corpus_wptr): Declare these 27075 typedefs here too. 27076 (translation_unit::{g,s}et_corpus): Declare new member functions. 27077 (type_or_decl_base::{g,s}et_corpus): Likewise. 27078 * src/abg-ir.cc (translation_unit::priv::corpus): New data member. 27079 (translation_unit::priv::priv): Initialize it. 27080 (translation_unit::{g,s}et_corpus): Define new accessors. 27081 (translation_unit::get_global_scope): Propagate the corpus of the 27082 translation unit to its newly created global scope. 27083 (translation_unit::bind_function_type_life_time): Propagate the 27084 corpus of the translation_unit to the added function type. 27085 (type_or_decl_base::priv::corpus_): Add new data member. 27086 (type_or_decl_base::priv::priv): Initialize it. 27087 (type_or_decl_base::{g,s}et_corpus): Define new accessors. 27088 (scope_decl::{add,insert}_member_decl): Propagate the context's 27089 corpus to the member added to the context. 27090 (decl_base::priv::is_anonymous_): Add new data member. 27091 (decl_base::priv::priv): Initialize it. 27092 (decl_base::{s,g}et_is_anonymous): Define accessors. 27093 (is_anonymous_type): Define a new test function. 27094 (decl_base::set_name): Update the "is_anonymous" property. 27095 (type_base::get_canonical_type_for): Implement the ODR-based 27096 optimization to type canonicalization. 27097 * src/abg-corpus.cc (corpus::add): When a translation unit is 27098 added to a corpus, set the corpus of the translation unit. 27099 * src/abg-dwarf-reader.cc (build_enum_type) 27100 (build_class_type_and_add_to_ir): Set the "is_anonymous" flag on 27101 anonymous enums and classes. 27102 * src/abg-reader.cc (read_is_anonymous): Define new static 27103 function. 27104 (build_type_decl, build_enum_type, build_class_decl): Call the new 27105 read_is_anonymous function and set the "is_anonymous" property on 27106 the built type declaration. 27107 * src/abg-writer.cc (write_is_anonymous): Define new static 27108 function. 27109 (write_type_decl, write_enum_type_decl, write_class_decl): Write 27110 the "is_anonymous" property. 27111 * tests/data/test-diff-filter/test31-pr18535-libstdc++-report-0.txt: 27112 Adjust. 27113 * tests/data/test-read-dwarf/test9-pr18818-clang.so.abi: Likewise. 27114 * tests/data/test-read-dwarf/test10-pr18818-gcc.so.abi: Likewise. 27115 * tests/data/test-read-dwarf/test11-pr18828.so.abi: Likewise. 27116 * tests/data/test-read-dwarf/test12-pr18844.so.abi: Likewise. 27117 * tests/data/test-read-dwarf/test13-pr18894.so.abi: Likewise. 27118 * tests/data/test-read-dwarf/test14-pr18893.so.abi: Likewise. 27119 * tests/data/test-read-dwarf/test15-pr18892.so.abi: Likewise. 27120 * tests/data/test-read-dwarf/test16-pr18904.so.abi: Likewise. 27121 * tests/data/test-read-dwarf/test17-pr19027.so.abi: Likewise. 27122 271232015-10-04 Dodji Seketeli <dodji@redhat.com> 27124 27125 Late canonicalize all types that reference classes when reading DWARF 27126 * include/abg-fwd.h (peel_array_type): Declare new function. 27127 * src/abg-ir.cc (peel_array_type): Define it. 27128 (peel_typedef_pointer_or_reference_type): Peel arrays too, to get 27129 the type of its element. 27130 * src/abg-dwarf-reader.cc (maybe_canonicalize_type): If a pointer, 27131 reference, array or typedef references a class, then do 27132 late-canonicalize this type. 27133 271342015-10-04 Dodji Seketeli <dodji@redhat.com> 27135 27136 Fix infinite loop in peel_typedef_pointer_or_reference_type 27137 * src/abg-ir.cc (peel_typedef_pointer_or_reference_type): Make 27138 sure the variable tested in the condition is the one updated by 27139 the loop. 27140 271412015-10-02 Dodji Seketeli <dodji@redhat.com> 27142 27143 Try harder to hash_type_or_decl avoid the slow path 27144 * src/abg-ir.cc (hash_type_or_decl): When a declaration-only 27145 class has a definition, then use the canonical type of that 27146 definition as a hash value. If the class no definition, only 27147 then, use the slow patfh of computing the recursive progressive 27148 hash value of the type. 27149 271502015-10-02 Dodji Seketeli <dodji@redhat.com> 27151 27152 Do not use recursive type hashing when writing out function types 27153 * src/abg-writer.cc (typedef fn_shared_ptr_map): Remove. 27154 (write_context::m_referenced_fntypes_map): Change the type of this 27155 into type_ptr_map. 27156 (write_context::{record_fntype_as_referenced, 27157 fntype_is_referenced}): Use the pointer value of the canonical 27158 type of the referenced type as key for the map. 27159 271602015-10-02 Dodji Seketeli <dodji@redhat.com> 27161 27162 Prevent build_function_type from not canonicalizing certain types 27163 * src/abg-dwarf-reader.cc (build_function_type): Associate the 27164 type being built with its DIE, before starting to build the 27165 sub-types. The current type is then amended with the sub-types 27166 that are built later. 27167 (build_ir_node_from_die): In the case for DW_TAG_subroutine_type, 27168 do not associate the type to the DIE here, as it's been done in 27169 build_function_type. 27170 * src/abg-ir.cc (function_type::set_parameters): Adjust the index 27171 of the parameters being set to the function: they start at 1, 27172 unless the first parameter is artificial, in which case its index 27173 starts at zero. This is just like what is done when the function 27174 type is constructed directly with the parameters passed as an 27175 argument to the constructor. 27176 271772015-10-02 Dodji Seketeli <dodji@redhat.com> 27178 27179 Fix detection of changes in pointer diff in the comparison engine 27180 * src/abg-comparison.cc (pointer_diff::has_changes): Just 27181 comparing the underlying type might not be enough. Let's just 27182 compare the pointer itself. Now that we have canonical types, 27183 comparing the pointer itself is not slower. 27184 271852015-10-02 Dodji Seketeli <dodji@redhat.com> 27186 27187 Do not overly canonicalize types during typedef stripping 27188 * src/abg-ir.cc (strip_typedef): Do not canonicalize the stripped 27189 type if the input one is not canonicalized. 27190 271912015-10-02 Dodji Seketeli <dodji@redhat.com> 27192 27193 Cleanup some IR type comparison operators 27194 * include/abg-ir.h (operator==): In the overloads for type_decl, 27195 enum and class_decl, turn the shared_ptr parameter into a const 27196 reference to the shared_ptr. 27197 * src/abg-ir.cc (operator==): Do the same in the definitions. 27198 271992015-10-02 Dodji Seketeli <dodji@redhat.com> 27200 27201 Add missing deep equality operator for pointer and reference types 27202 * include/abg-ir.h (pointer_type_def::operator==): Add an overload 27203 for pointer_type_def. 27204 (reference_type_def::operator==) Add an overload for 27205 reference_type_def. 27206 (operator==): Add an overload for pointer_type_def_sptr and 27207 reference_type_def_sptr. 27208 * src/abg-ir.cc (pointer_type_def::operator==): Make the overload 27209 for type_base& use the overload for decl_base&. Add a new 27210 overload for pointer_type_def& and make is use the overload for 27211 decl_base& too. 27212 (operator==): Add free form overloads for pointer_type_def& and 27213 reference_type_def&. 27214 (reference_type_def::operator==): Add comments. Add an overload 27215 for reference_type_def&. 27216 272172015-10-02 Dodji Seketeli <dodji@redhat.com> 27218 27219 constify is_class_type() 27220 * include/abg-fwd.h (is_class_type): Take a pointer to const. 27221 * src/abg-ir.cc (is_class_type): Adjust. 27222 272232015-10-01 Ondrej Oprala <ooprala@redhat.com> 27224 27225 Bug 19027 - ABI asymmetry with enums over INT_MAX 27226 * src/abg-reader.cc (build_enum_type_decl): Use strtol 27227 instead of atoi to parse the values and check for overflow. 27228 * tests/data/Makefile.am: Add the new test material to the build 27229 system. 27230 * tests/data/test-read-dwarf/test17-pr19027.so: New test file. 27231 * tests/data/test-read-dwarf/test17-pr19027.so.abi: Likewise. 27232 * tests/test-read-dwarf.cc: Adjust to launch the new test. 27233 272342015-10-01 Dodji Seketeli <dodji@redhat.com> 27235 27236 Encourage people to use autoreconf -i 27237 * COMPILING: Mention autoreconf -i, rather than just autoreconf. 27238 272392015-09-23 Ondrej Oprala <ooprala@redhat.com> 27240 27241 Bug 17340 - Support pointers and references to functions 27242 * include/abg-comparison.h (compute_diff_for_distinct_kinds): Take the 27243 first two arguments of type const type_or_decl_base_sptr instead. 27244 * include/abg-ir.h (translation_unit::get_function_types): Declare new 27245 method. 27246 (function_types): Declare new typedef. 27247 * src/abg-comparison.cc (compute_diff_for_types): Take the first two 27248 arguments of type const type_or_decl_base_sptr instead of a const 27249 decl_base_sptr. 27250 (try_to_diff): Likewise. 27251 (try_to_diff<class_decl>): Likewise. 27252 (try_to_diff_distinct_kinds): Likewise. 27253 (compute_diff_for_distinct_kinds): Likewise. Also remove a variant 27254 accepting arguments of type const type_base_sptr. 27255 * src/abg-dwarf-reader.cc (build_class_type_and_add_to_ir): Skip 27256 building a pointer if it points to the beginning of a vptr. 27257 (build_pointer_type_def): Declare utype_decl of type 27258 type_or_decl_base_sptr and adjust assignments to it accordingly. 27259 (build_function_type): New function definition. 27260 (build_function_decl): Call build_function_type instead of building 27261 an ftype manually. 27262 (build_ir_node_from_die): Amend case DW_TAG_subroutine_type with 27263 appropriate calls to build a function type. 27264 * src/abg-ir.cc (translation_unit::get_function_types): New method 27265 definition. 27266 ({pointer,reference}_type_def::pointer_type_def): Expect that 27267 pointed_to might not have an accompanying declaration and set a type's 27268 name in this case as well. 27269 ({pointer,reference}_type_def::get_qualified_name): Generate a 27270 qualified name even if the pointed-to type has no declaration. 27271 * src/abg-reader.cc (build_function_type): New function definition. 27272 (handle_element_node): Return a type_or_decl_base_sptr instead and 27273 try calling handle_function_type in addition to others. 27274 (handle_function_type): New function definition that calls 27275 build_function_type. 27276 (build_type): Try calling build_function_type as well. 27277 * src/abg-writer.cc (fn_shared_ptr_map): Declare new typedef. 27278 (write_context::{clear_referenced_fntypes_map,fntype_is_referenced, 27279 record_fntype_as_referenced}): New member functions. 27280 (write_translation_unit): Call the new clear_referenced_fntypes_map. 27281 * tests/data/Makefile.am: Add the new test material to the build 27282 system. 27283 (write_translation_unit): Separately write function types that have 27284 been recorded to emit by write_{pointer,reference}_type_def. 27285 (write_{pointer,reference}_type_def): Record the type pointed to as 27286 a type to be emitted if type == function type. 27287 (write_function_type): Write the details of a function type in the 27288 abixml format and unmark the type. 27289 * tests/data/test-diff-dwarf/test32-fnptr-changes-report-0.txt: New 27290 test reference report. 27291 * tests/data/test-diff-dwarf/test32-fnptr-changes-v{0,1}.cc: New test 27292 source files. 27293 * tests/data/test-diff-dwarf/test32-fnptr-changes-v{0,1}.o: New binary 27294 test inputs. 27295 * tests/data/test-diff-dwarf/test33-fnref-changes-report-0.txt: New 27296 test reference report. 27297 * tests/data/test-diff-dwarf/test33-fnref-changes-v{0,1}.cc: New test 27298 source files. 27299 * tests/data/test-diff-dwarf/test33-fnref-changes-v{0,1}.o: New binary 27300 test inputs. 27301 * tests/data/test-diff-filter/test30-pr18904-rvalueref-report0.txt: 27302 Adjust. 27303 * tests/data/test-diff-filter/test31-pr18535-libstdc++-report-0.txt: 27304 Likewise. 27305 * tests/data/test-read-dwarf/test10-pr18818-gcc.so.abi: Likewise. 27306 * tests/data/test-read-dwarf/test11-pr18828.so.abi: Likewise. 27307 * tests/data/test-read-dwarf/test12-pr18844.so.abi: Likewise. 27308 * tests/data/test-read-dwarf/test13-pr18894.so.abi: Likewise. 27309 * tests/data/test-read-dwarf/test14-pr18893.so.abi: Likewise. 27310 * tests/data/test-read-dwarf/test15-pr18892.so.abi: Likewise. 27311 * tests/data/test-read-dwarf/test16-pr18904.so.abi: Likewise. 27312 * tests/data/test-read-dwarf/test9-pr18818-clang.so.abi: Likewise. 27313 * tests/data/test-read-write/test27.xml: New test source file. 27314 * tests/test-diff-dwarf.cc: Adjust to launch the new tests. 27315 * tests/test-read-write.cc: Likewise. 27316 273172015-09-09 Ondrej Oprala <ooprala@redhat.com> 27318 27319 Generalize some dwarf-reader functions to generate and return instances of type_or_decl_base_stpr to be able to propagate types occurring without an accompanying declaration. 27320 * src/abg-dwarf-reader.cc (build_ir_node_from_die): Return 27321 a type_or_decl_base_sptr instead. 27322 (get_scope_for_die): Likewise. 27323 (build_class_type_and_add_to_ir): Typecast the assignment from 27324 build_ir_node_from_die properly. 27325 (build_{qualified,reference,array,typedef}_type): Likewise. 27326 (build_pointer_type_def): Likewise. 27327 (build_{var,function}_decl): Likewise. 27328 273292015-09-29 Ondrej Oprala <ooprala@redhat.com> 27330 27331 Move a constructor declaration 27332 * include/abg-ir.h (decl_base): Change the decl_base() declaration's 27333 visibility to private. 27334 273352015-09-24 Dodji Seketeli <dodji@redhat.com> 27336 27337 Bug 18535 - abidiff reports false positive ABI difference for libstdc++ 27338 *non-static* data member; a static data member only is not enough to 27339 make the class declaration become a definition. 27340 * src/abg-dwarf-reader.cc (build_class_type_and_add_to_ir): The 27341 presence of a data member shouldn't make a declaration-only class 27342 loose its declaration-only-ness; the presence of a enon-static* 27343 data member should. 27344 * tests/data/test-read-dwarf/test15-pr18892.so.abi: Adjust. 27345 * tests/data/test-read-dwarf/test16-pr18904.so.abi: Likewise. 27346 * tests/data/test-diff-filter/test31-pr18535-libstdc++-4.8.3.so: 27347 New binary test input. 27348 * tests/data/test-diff-filter/test31-pr18535-libstdc++-4.9.2.so: 27349 Likewise. 27350 * tests/data/test-diff-filter/test31-pr18535-libstdc++-report-0.txt: 27351 New test reference output. 27352 * tests/data/Makefile.am: Add the new test material to the build 27353 system. 27354 * tests/test-diff-filter.cc (in_out_specs): Add the new test 27355 inputs to the set of inputs to consider. 27356 273572015-09-21 Dodji Seketeli <dodji@redhat.com> 27358 27359 Remove duplicated runtestreaddwarf test 27360 * tests/Makefile.am: Remove one copy of the runtestreaddwarf test 27361 that is present twice. 27362 273632015-09-21 Dodji Seketeli <dodji@redhat.com> 27364 27365 Add a missing function declaration 27366 * include/abg-tools-utils.h (dir_name): Add missing function 27367 declaration. 27368 273692015-09-21 Dodji Seketeli <dodji@redhat.com> 27370 27371 Remove some dead code in abilint 27372 * tools/abilint.cc (options::bidiff): Remove. 27373 (options::options): Adjust. 27374 (display_usage): Remove usage string for --bidiff 27375 (parse_command_line): Remove parsing of un-implemented option 27376 --bidiff. 27377 273782015-09-21 Dodji Seketeli <dodji@redhat.com> 27379 27380 Add a new --abidiff option to abidw 27381 * tools/abidw.cc (options::abidiff): New data member. 27382 (options::options): Initialize it. 27383 (display_usage): Add a usage string for the new --abidiff option. 27384 (parse_command): Parse the new --abidiff options. 27385 (main): Save the abi of the input elf in a temporary abixml file; 27386 read it back and compare both. 27387 273882015-09-21 Dodji Seketeli <dodji@redhat.com> 27389 27390 Misc style fixes 27391 * src/abg-hash.cc (class_decl::hash::operator()): Use a temporary 27392 variable to ease debugging. 27393 * src/abg-reader.cc (read_context::is_wip_type): Make this 27394 function const. 27395 * src/abg-writer.cc (write_context): Move data members at the top. 27396 273972015-09-21 Dodji Seketeli <dodji@redhat.com> 27398 27399 Speed up type canonicalization by avoiding recursive hashing 27400 * include/abg-ir.h (canonical_types_map_type): Adjust this typedef 27401 to make it point to an unordered_map which the key is now a string 27402 and the value is a vector of types. 27403 (type_or_decl_base::{get_cached_hash_value, set_cached_hash_value, 27404 cached_hash}): Remove these member functions and type. 27405 (struct type_base::cached_hash): Remove. 27406 * src/abg-ir.cc (struct type_or_decl_base::priv::hash_): Remove. 27407 (type_or_decl_base::priv::priv): Adjust. 27408 (type_or_decl_base::{g,s}et_cached_hash_value): Remove. 27409 (type_base::get_canonical_type_for): For declaration-only classes, 27410 look at their definition for the canonical_type. Do not use 27411 recursive type hashing anymore. Rather, use the pretty 27412 representation string, and hash that. 27413 (class_decl::base_spec::get_hash): Do away with hash value caching 27414 here. 27415 (class_decl::operator==): For decl-only classes, look at their 27416 definitions for canonical types. 27417 (hash_type_or_decl): Adjust comment. Use the canonical type 27418 pointer value for type hash. That's the fast path. Otherwise, if 27419 not available, fall back to a slow path which is the recursive 27420 type hash we were using before. 27421 * src/abg-dwarf-reader.cc (maybe_canonicalize_type): Schedule all 27422 classes and typedef to classes for late canonicalization. 27423 * src/abg-hash.cc (type_base::dynamic_hash::operator()): There is 27424 no hash value cashing anymore. 27425 (type_base::cached_hash::operator()): Remove. 27426 * src/abg-reader.cc (read_context::get_type): Slight style 27427 adjustment. 27428 (read_translation_unit_from_file) 27429 (read_translation_unit_from_buffer): Do not forget to canonicalize 27430 types when reading just one translation unit. 27431 (build_type_tparameter, build_template_tparameter): Canonicalize 27432 the type. 27433 * src/abg-writer.cc (struct type_hasher): New hasher type. 27434 (type_ptr_map): Use a deep pointer comparison equal operator 27435 functor, and canonical types as type hash values. 27436 (write_class_decl): Do not write size and alignment on decl-only 27437 classes. Do not record decl-only classes as being emitted. Their 27438 definition must be emitted before. 27439 * tests/test-read-write.cc (main): Do not do abi testing on 27440 translation units (as opposed to doing it on abi corpora) as that 27441 code is not wet yet. We need to know how to diff namespaces. 27442 * tests/data/test-abidiff/test-PR18791-report0.txt: Adjust. 27443 * tests/data/test-read-dwarf/test9-pr18818-clang.so.abi: Likewise. 27444 * tests/data/test-read-dwarf/test10-pr18818-gcc.so.abi: Likewise. 27445 * tests/data/test-read-dwarf/test12-pr18844.so.abi: Likewise. 27446 * tests/data/test-read-dwarf/test13-pr18894.so.abi: Likewise. 27447 * tests/data/test-read-dwarf/test14-pr18893.so.abi: Likewise. 27448 * tests/data/test-read-dwarf/test15-pr18892.so.abi: Likewise. 27449 * tests/data/test-read-dwarf/test16-pr18904.so.abi: Likewise. 27450 274512015-09-21 Dodji Seketeli <dodji@redhat.com> 27452 27453 Update qualified name of a decl when it's added to its context 27454 * include/abg-ir.h (decl_base::priv_): Make this be public, so 27455 that the qualified name updater function can access it. 27456 (class class_decl): Make set_member_is_static() a friend function. 27457 * src/abg-ir.cc (class ::qualified_name_setter): New tree walking 27458 type. 27459 (decl_base::get_qualified_parent_name): Do not do any computation 27460 here. Just return the pre-computed qualified parent name string. 27461 (decl_base::get_qualified_name): Likewise, for qualified name. 27462 (scope_decl::{add,insert}_member_decl): Update the qualified name of the 27463 newly added member. Set the scope of the member here. It's not 27464 going to be set elsewhere, from now on. 27465 (add_decl_to_scope): Do not set the scope here anymore. Just call 27466 scope_decl::add_member_decl and let it do the work. 27467 (insert_decl_into_scope): Likewise, just call 27468 scope_decl::insert_member_decl and let it do the work. 27469 (class_decl::{add_data_member, add_member_function}): Do not 27470 handle details of context setting at this point. Let 27471 scope_decl::add_member_decl do it. Adjust the properties of the 27472 context relation afterwards. In add_data_member, when a data 27473 member changes its static-ness, move the data member into the 27474 class_decl::priv::non_static_data_members_ or out of it, as 27475 necessary. 27476 (class_decl::insert_member_decl): By default, a data member is 27477 considered static. 27478 (set_member_is_static): Move this definition after the definitions 27479 of class_decl, so that this function can see those. Also, when a 27480 data member changes its static-ness, move the data member into the 27481 class_decl::priv::non_static_data_members_ or out of it, as 27482 necessary. 27483 (class_decl::add_member_function_template): As we the 27484 underlying function template decl to the context, do not do any 27485 scope adding for it here. 27486 (::qualified_name_setter::{do_update, visit_begin}): Define new 27487 member functions. 27488 (update_qualified_name): Define new static function. 27489 * src/abg-reader.cc (build_class_decl): Make build_function_decl, 27490 build_var_decl, build_function_tdecl and build_class_tdecl 27491 automatically add the created decl to their context, and then 27492 update the properties of the resulting member decl later, just 27493 like what we do in the DWARF reader. 27494 274952015-09-21 Dodji Seketeli <dodji@redhat.com> 27496 27497 Add new test functions 27498 * include/abg-fwd.h (is_function_decl, is_decl, is_namespace) 27499 (is_scope_decl): Declare new function overloads. 27500 * src/abg-ir.cc (is_function_decl, is_decl, is_namespace) 27501 (is_scope_decl): Define them. 27502 275032015-09-21 Dodji Seketeli <dodji@redhat.com> 27504 27505 Constify some diff-utils functor operators 27506 * include/abg-diff-utils.h (deep_ptr_eq_functor::operator()): Make 27507 the overloads be const. 27508 275092015-09-16 Dodji Seketeli <dodji@redhat.com> 27510 27511 Support source_location_not_in and source_location_not_regexp suppressions 27512 * include/abg-ini.h (enum property_value::value_kind): Add a 27513 LIST_PROPERTY_VALUE kind. 27514 (class {list_property_value, list_property}): Declare new types. 27515 (is_list_property, is_list_property_value): Declare new functions. 27516 * src/abg-ini.cc (struct list_property_value::priv): Define new 27517 type. 27518 (list_property_value::{list_property_value, get_content, 27519 set_content, as_string}): Define new member functions. 27520 (is_list_property_value): Define new function. 27521 (struct list_property::priv): Define new type. 27522 (list_property::{list_property, get_value, set_value, 27523 handle_escape}): Define new member functions. 27524 (is_list_property): Define new function. 27525 (read_context::buf_): New data member. 27526 (read_context::{peek, get, put_back, good, eof, read_string, 27527 read_list_property_value}): New member functions. 27528 (read_context::read_next_char): Use the new read_context::{get, 27529 good, eof} member function, rather than using the input stream 27530 directly. 27531 (read_context::{skip_white_spaces, skip_comments, 27532 skip_white_spaces_or_comments, read_property_name, 27533 read_function_name, read_function_argument, 27534 read_function_call_expr, read_property_value, 27535 read_tuple_property_value, read_section_name, read_section}): 27536 Adjust to use the new member functions of read_context rather than 27537 using the input stream directly. 27538 (read_context::read_string_property_value): Likewise. Use the new 27539 read_context::read_string() method. 27540 (read_context::{read, write}_property): Support reading list_property. 27541 * include/abg-comparison.h 27542 (type_suppression::{get_source_locations_to_keep, 27543 set_source_locations_to_keep, 27544 set_source_location_to_keep_regex_str, 27545 get_source_location_to_keep_regex_str}): Add new member functions. 27546 * src/abg-comparison.cc 27547 (type_suppression::priv::{source_location_to_keep_, 27548 source_location_to_keep_regex_str_, 27549 source_location_to_keep_regex_}): Add new data members. 27550 (type_suppression::priv::{g,s}et_source_location_to_keep_regex): 27551 Define new member functions. 27552 (type_suppression::{g,s}et_source_locations_to_keep): Define new 27553 member functions. 27554 (type_suppression::{g,s}et_source_location_to_keep_regex_str): 27555 Likewise. 27556 (type_suppression::suppresses_type): Support 27557 "source_location_not_regexp" and "source_location_not_in" 27558 properties of suppression specifications. 27559 (read_type_suppression): Likewise. Also adjust to the fact that 27560 ta tuple property value that is a list of strings is not a list 27561 property value. 27562 * doc/manuals/libabigail-concepts.rst: Add documentation for 27563 source_location_not_in and source_location_not_regexp. 27564 * tests/data/test-diff-suppr/libtest26-loc-suppr-v{0,1}.so: New 27565 binary test inputs. 27566 * tests/data/test-diff-suppr/test26-loc-suppr-{0,1,2}.suppr: New 27567 suppression specification test inputs. 27568 * tests/data/test-diff-suppr/test26-loc-suppr-report-{0,1,2,3}.txt: 27569 New test reference reports. 27570 * tests/data/test-diff-suppr/test26-loc-suppr-v{0,1}.cc: Source 27571 code of the test binary input above. 27572 * tests/data/test-diff-suppr/test26-loc-suppr.h: Likewise. 27573 * tests/data/Makefile.am: Add the new test material to source 27574 distribution. 27575 * tests/test-diff-suppr.cc (in_out_specs): Add the new test inputs above. 27576 275772015-09-16 Dodji Seketeli <dodji@redhat.com> 27578 27579 Pass simple property data by reference 27580 * include/abg-ini.h (simple_property::{simple_property, 27581 set_value}): Pass the value shared pointer by reference. 27582 * src/abg-ini.cc (simple_property::{simple_property, set_value): 27583 Pass the value shared pointer by reference. 27584 275852015-09-15 Dodji Seketeli <dodji@redhat.com> 27586 27587 Make string_ends_with() allow long suffixes 27588 * src/abg-tools-utils.cc (string_ends_with): Allow suffixes of the 27589 same size as the input string. 27590 275912015-09-13 Dodji Seketeli <dodji@redhat.com> 27592 27593 Add missing 'break' keyword in e_machine_to_string() 27594 * src/abg-dwarf-reader.cc (e_machine_to_string): Add missing 27595 'break' keywords in switch/case statement. 27596 275972015-09-09 Dodji Seketeli <dodji@redhat.com> 27598 27599 Fix compilation warnings in abipkgdiff.cc 27600 * tools/abipkgdiff.cc (package::erase_extraction_directory) 27601 (extract_rpm, extract_deb, extract_tar) 27602 (erase_created_temporary_directories_parent): Check the return 27603 value of the system() function. 27604 (extract_package): Add necessary white space. 27605 276062015-09-09 Dodji Seketeli <dodji@redhat.com> 27607 27608 Fix spurious errors in the install-man-and-info-doc target 27609 * doc/manuals/Makefile.am (install-man-and-info-doc): Don't check 27610 for abidiff.info, that thing doesn't exist. Rather, check for 27611 abigail.info. Use gzip -f in case the zipped file exists already. 27612 276132015-09-09 Dodji Seketeli <dodji@redhat.com> 27614 27615 Compare qualified name in decl_base comparison operator 27616 * src/abg-ir.cc (equals): In the overload for decl_base, compare 27617 qualified names, not just names. 27618 * tests/data/test-abidiff/test-PR18791-report0.txt: Adjust. 27619 276202015-09-08 Dodji Seketeli <dodji@redhat.com> 27621 27622 Fix a stupid typo in function sorting code 27623 * src/abg-comparison.cc (function_comp::operator()): Fix a typo 27624 preventing the proper sorting of function name when their 27625 declarator names are equal. Oops. 27626 * tests/data/test-diff-filter/test30-pr18904-rvalueref-report0.txt: Adjust. 27627 276282015-09-08 Dodji Seketeli <dodji@redhat.com> 27629 27630 Update manual for abipkgdiff 27631 * doc/manuals/abipkgdiff.rst: Say we support tarballs and plain 27632 directories. 27633 276342015-09-07 Dodji Seketeli <dodji@redhat.com> 27635 27636 Adjust {s,g}et_show_stats() to use a reference 27637 * include/abg-dwarf-reader.h ({s,g}et_show_stats): Use a reference 27638 to the reader. 27639 * tools/abidiff.cc (main): Adjust. 27640 * tools/abidw.cc (main): Likewise. 27641 276422015-09-07 Dodji Seketeli <dodji@redhat.com> 27643 27644 Use cache type hash values only after type canonicalization is done 27645 *when* we request that hash value. If we are computing the hash value 27646 of struct list itself, then the temporary value of "struct list" is 27647 zero. But then once we are done computing the hash value of "struct 27648 list", that value becomes non-zero. 27649 Hence, the hash value of a type depends on when that value is 27650 computed. 27651 But then if we want to cache that hash value and re-use it later, 27652 which value should we cache? Definitely not the zero value! 27653 So in other words, we can use (and thus cache) the hash value of a 27654 given type T only after the hash values of all types which use T have 27655 been computed. 27656 To satisfy that condition, we decide to use the (cached) hash value of 27657 each type only after we've computed all the hash values of all types 27658 of the system. 27659 So, during type canonicalization, when a type T is canonicalized, this 27660 patch stores the hash value of T. But then it's only when all types 27661 are canonicalized that the hashing code is allowed to re-use the 27662 cached value of types. 27663 This fixes the issues of spurious type differences introduced when the 27664 same type was read either from DWARF or from abixml. Those 27665 differences where introduced by differences in the order of hashing 27666 types which sub-types refer to themselves. The patch also updates 27667 regression tests accordingly. 27668 * src/abg-dwarf-reader.cc (read_debug_info_into_corpus): Before we 27669 read debug info and build the IR, set a flag in the environment 27670 saying that type canonicalization isn't finished yet. But then, 27671 after type canonicalization is done, flip that flag to say that 27672 type canonicalization is done. 27673 * src/abg-reader.cc (read_corpus_from_input): Likewise. 27674 * src/abg-ir.cc (type_base::get_canonical_type_for): Once a type 27675 has been canonicalized, cache its hash value. 27676 * src/abg-hash.cc (type_base::dynamic_hash::operator()): If type 27677 canonicalization has been done and if the type has a cached value, 27678 use that one. 27679 * tests/data/test-read-dwarf/test2.so.abi: Adjust. 27680 * tests/data/test-read-dwarf/test9-pr18818-clang.so.abi: Likewise. 27681 * tests/data/test-read-dwarf/test10-pr18818-gcc.so.abi: Likewise. 27682 * tests/data/test-read-dwarf/test12-pr18844.so.abi: Likewise. 27683 * tests/data/test-read-dwarf/test13-pr18894.so.abi: Likewise. 27684 * tests/data/test-read-dwarf/test14-pr18893.so.abi: Likewise. 27685 * tests/data/test-read-dwarf/test15-pr18892.so.abi: Likewise. 27686 * tests/data/test-read-dwarf/test16-pr18904.so.abi: Likewise. 27687 276882015-09-07 Dodji Seketeli <dodji@redhat.com> 27689 27690 Introduce the concept of environment 27691 * include/abg-ir.h: Adjust note about memory management. 27692 (class environment): Declare new class. 27693 (translation_unit::translation_unit): Take an environment in 27694 parameter. 27695 (translation_unit::{g,s}et_environment): Declare new member 27696 functions. 27697 (type_or_decl_base::{g,s}et_environment): Likewise. 27698 (type_or_decl_base::{get_cached_hash_value, 27699 set_cached_hash_value}): Change the name of 27700 decl_base::peek_hash_value() and decl_base::set_hash() here into 27701 these and move them here. 27702 (type_or_decl_base::hashing_started): Move 27703 decl_base::hashing_started() here. 27704 ({g,s}et_environment_for_artifact): Declare new functions. 27705 (class decl_base): Move member functions hashing_started(), 27706 peek_hash_value() and set_hash() on to the type_or_decl_base base 27707 class. 27708 (scope_decl::scope_decl): Initialize the virtual member 27709 type_or_decl_base(). 27710 (type_decl::{get_void_type_decl, 27711 get_variadic_parameter_type_decl}): Remove these static member 27712 functions. They are now non-static member functions of the new 27713 environment type. 27714 * src/abg-ir.cc (class environment_setter): New internal class. 27715 (get_canonical_types_map): Remove. This now becomes a member 27716 function of the environment type. 27717 (class usage_watchdog): Remove. 27718 (usage_watchdog_{s,w}ptr): Remove these typedefs. 27719 (get_usage_watchdog_wptr, ref_usage_watchdog) 27720 (maybe_cleanup_type_system_data): Remove these functions. 27721 (translation_unit::priv::usage_watchdog_): Remove data member. 27722 (translation_unit::priv::env_): New data member. 27723 (translation_unit::priv::priv): Take an environment and initialize 27724 the new env_ data member. Do not initialize the removed 27725 usage_watchdog_. 27726 (translation_unit::translation_unit): Take an environment 27727 parameter. 27728 (translation_unit::get_global_scope): Set the environment of a new 27729 global scope. 27730 (translation_unit::{g,s}et_environment): New accessors. 27731 (translation_unit::bind_function_type_life_time): Set the 27732 environment of the function type. 27733 (struct environment::priv): New class. 27734 (environment::{environment, ~environment, get_canonical_types_map, 27735 get_variadic_parameter_type_decl, canonicalization_is_done}): New 27736 member functions. 27737 (struct type_or_decl_base::priv): New class. 27738 (type_or_decl_base::{type_or_decl_base, hashing_started, 27739 get_cached_hash_value, set_cached_hash_value, set_environment, 27740 get_environment, traverse}): New member functions. 27741 ({s,g}get_environment_for_artifact): New functions. 27742 (decl_base::priv::{hash_, hashing_started}): Remove. 27743 (decl_base::priv::priv): Adjust. 27744 (decl_base::decl_base): In the copy constructor, initialize the 27745 virtual base type_or_decl_base. Do not initialize hash_ and 27746 hashing_started data member that got removed. 27747 (decl_base::{hashing_started, peek_hash_value, set_hash}): Remove 27748 member functions. 27749 (strip_typedef): Set the environment of the new type which has its 27750 typedefs stripped off. Adjust the call to type_or_void(). 27751 (scope_decl::{add, insert}_member_decl): Set the environment of 27752 the new member decl to the environment of its scope. 27753 (synthesize_type_from_translation_unit) 27754 (synthesize_function_type_from_translation_unit): Set the 27755 environment for the newly synthesized type. Adjust calls to 27756 type_or_void(). 27757 (type_or_void): Take an environment in parameter. Get the void 27758 type from the environment. 27759 (get_canonical_types_map): Remove. 27760 (type_base::get_canonical_type_for): Get the canonical types map 27761 from the environment, not from a global variable. 27762 (type_decl::{get_void_type_decl, 27763 get_variadic_parameter_type_decl}): Remove. 27764 (pointer_type_def::pointer_type_def): Adjust call to type_or_void. 27765 (reference_type_def::reference_type_def): Likewise. 27766 (function_decl::parameter::get_pretty_representation): Get the 27767 variadic parameter type decl from the environment. 27768 (class_decl::priv::classes_being_compared_): Remove static data 27769 member. 27770 (class_decl::priv::{mark_as_being_compared, 27771 unmark_as_being_compared, comparison_started): Use the "classes 27772 being compared" map from the environment. 27773 (class_decl::base_spec::get_hash): Adjust. 27774 (keep_type_alive): Get the alive types array from the environment) 27775 not from a global variable anymore. 27776 (get_next_string): Put the counter in thread-local storage. 27777 * src/abg-hash.cc (scope_decl::hash::operator()) 27778 (function_decl::hash::operator()): Do not handle caching (here). 27779 * include/abg-corpus.h (corpus::{g,s}et_environment): Declare new 27780 accessors. 27781 * src/abg-corpus.cc (corpus::priv::env): New data member. 27782 (corpus::priv::priv): Initialize it. 27783 (corpus::corpus): Take an environment in parameter. 27784 (corpus::{g,s}et_environment): Define new member functions 27785 (corpus::add): Set the environment of the newly added translation 27786 unit, if it's not set already set. In any case, assert that the 27787 translation unit must use the same environment as the corpus. 27788 * include/abg-dwarf-reader.h (create_read_context) 27789 (read_corpus_from_elf): Take an environment parameter. 27790 ({s,g}et_debug_info_root_path, {s,g}et_environment): Declare new 27791 functions. 27792 * src/abg-dwarf-reader.cc (read_context::{env_, 27793 offline_callbacks_}): New data members. 27794 (read_context::read_context): Initialize them. 27795 (read_context::clear_per_translation_unit_data): Do not touch the 27796 void type declaration, it doesn't belong to the translation unit. 27797 (read_context::{env, offline_callbacks}): New accessors. 27798 (read_context::{create_default_dwfl}): New member function. 27799 (read_context::dwfl_handle): Add a setter overload. 27800 ({s,g}et_debug_info_root_path): Define new accessors. 27801 (create_default_dwfl, create_dwfl_sptr, create_default_dwfl_sptr): 27802 Remove these. 27803 (build_translation_unit_and_add_to_ir): Adjust to pass the 27804 environment to the newly created translation unit. 27805 (build_function_decl): Adjust to pass the environment to the 27806 created function and parameter types. Get variadic parameter type 27807 node from the current environment, not from a global variable. 27808 And do not try to canonicalize function types here. 27809 (read_debug_info_into_corpus): Set the environment of the newly 27810 created corpus. 27811 (build_ir_node_for_void_type): Get the void type node from the 27812 current environment, rather than from a global variable. 27813 (create_read_context): Take the environment in parameter. 27814 Create the default dwarf front end library handle using the new 27815 member function of the read context. Set the current environment 27816 used by the reader. 27817 (read_corpus_from_elf): Take an environment in 27818 parameter. Overhaul. This is now simpler. 27819 (has_alt_debug_info): Adjust the call to create_read_context() to 27820 make it pass an empty environment. 27821 * include/abg-fwd.h (class environment): Forward declare. 27822 * include/abg-reader.h (read_translation_unit_from_file) 27823 (read_translation_unit_from_buffer) 27824 (read_translation_unit_from_istream) 27825 (read_corpus_from_native_xml): Take an environment in parameter. 27826 * src/abg-reader.cc (read_context::m_env): New data member. 27827 (read_context::read_context): Initialize it. 27828 (read_context::{get_environment, set_environment}): New data 27829 member. 27830 (read_translation_unit): Set environment of the new translation 27831 unit. 27832 (read_corpus_from_input): Set the environment of the new corpus. 27833 (read_translation_unit_from_file) 27834 (read_translation_unit_from_buffer) 27835 (read_translation_unit_from_istream, read_corpus_from_native_xml): 27836 Take an environment in parameter. 27837 (build_function_parameter): Get variadic parameter type from the environment. 27838 * src/abg-comparison.cc (compute_diff): Add asserts in all the 27839 overloads to ensure that the artifact being compared come from the 27840 same environment. 27841 * tests/print-diff-tree.cc (main): Create an env for the ABI 27842 artifacts to use. 27843 * tests/test-abidiff.cc (main): Likewise. 27844 * tests/test-diff-dwarf.cc (main): Likewise. 27845 * tests/test-ir-walker.cc (main): Likewise. 27846 * tests/test-read-dwarf.cc (main): Likewise. 27847 * tests/test-read-write.cc (main): Likewise. 27848 * tools/abicompat.cc (main): Likewise. 27849 * tools/abidiff.cc (main): Likewise. 27850 * tools/abidw.cc (main): Likewise. 27851 * tools/abilint.cc (main): Likewise. 27852 * tools/abipkgdiff.cc (main): Likewise. 27853 278542015-09-07 Dodji Seketeli <dodji@redhat.com> 27855 27856 Fix redundant const qualifier stripping 27857 * include/abg-ir.h (operator&, operator~): Add overloaded bitwise 27858 operators for qualified_type_def::CV. 27859 * src/abg-ir.cc (operator&, operator~): Define them. 27860 * src/abg-dwarf-reader.cc (maybe_strip_qualification): Fix 27861 comment. If there are multiple qualifiers, only strip the const 27862 one. 27863 (build_ir_node_from_die): Once we've built a qualified type, if 27864 the 'const' qualifier is stripped, then add the new (stripped) 27865 type to the set of new types. 27866 278672015-09-05 Dodji Seketeli <dodji@redhat.com> 27868 27869 Fix wording in README 27870 * README: Fix wording. 27871 278722015-09-02 Dodji Seketeli <dodji@redhat.com> 27873 27874 Misc style fixes 27875 * src/abg-hash.cc (class_decl::hash::operator()): Remove some dead 27876 code. 27877 * src/abg-ir.cc (equals): In the overload for class_decl, 27878 re-indent. 27879 278802015-09-02 Dodji Seketeli <dodji@redhat.com> 27881 27882 Re-arrange some regression tests order 27883 * tests/Makefile.am: Run runtestreaddwarf and 27884 runtestcanonicalizetypes at the beginning. 27885 278862015-09-02 Dodji Seketeli <dodji@redhat.com> 27887 27888 Bug 18904 - Fix support for C++ rvalue references 27889 * src/abg-comparison.cc (reference_diff::has_changes): Just 27890 compare the references, rather than assuming that the change can 27891 only be on underlying types. 27892 (reference_diff::report): Describe lvalue/rvalue changes for 27893 references. 27894 * src/abg-ir.cc (reference_type_def::reference_type_def): Properly 27895 set the name for an rvalue reference. 27896 (equals): For references, compare lvalue-ness too. 27897 (reference_type_def::get_qualified_name): Properly set rvalue 27898 reference names. 27899 * tests/data/test-diff-filter/test30-pr18904-rvalueref-liba.so: 27900 New test input. 27901 * tests/data/test-diff-filter/test30-pr18904-rvalueref-libb.so: 27902 New test input. 27903 * tests/data/test-diff-filter/test30-pr18904-rvalueref-report0.txt: 27904 New test reference output. 27905 * tests/data/Makefile.am: Add the new files to source 27906 distribution. 27907 * tests/test-diff-filter.cc (in_out_specs): Run the new tests. 27908 279092015-09-02 Dodji Seketeli <dodji@redhat.com> 27910 27911 More type degradation fixes (from DWARF to abixml) 27912 * include/abg-fwd.h (get_type_scope): Declare new function. 27913 * src/abg-hash.cc (var_decl::hash::operator()): Do not cache the 27914 hash because that can alter the hash computing of a larger type 27915 which embeds a var decl as a member declaration. This is 27916 especially true if the var decl indirectly references the larger 27917 type. The only way to cache the value of a var decl would be to 27918 wait after all canonical types have been computed. We'd then seal 27919 all types. After that sealing happens, we can cache var decls 27920 starting from the top-level ones. 27921 (function_decl::hash::operator()): Likewise. 27922 * src/abg-ir.cc (get_type_scope): Define new functions. 27923 * src/abg-reader.cc (read_is_declaration_only): Declare this 27924 function earlier. 27925 (typedef const_types_map_it): Adjust this to make it point to a 27926 map of string and vector of types, as opposed to a map to string 27927 and type as it was before. 27928 (typedef types_map_it): New typedef. 27929 (read_context::map_id_and_node): Map a type id to the last 27930 xmlNodePtr that represent a *declaration*. That gives more leeway 27931 to the declaration resolution code to choose the right definition 27932 later. Otherwise, there are cases where the wrong definition. By 27933 wrong definition, I mean a definition that is different from the 27934 one chosen by the DWARF reading code, for a given declaration. 27935 Basically for a given ABI corpus, a type declaration resolve to 27936 the first definition seen in the corpus. 27937 (read_context::get_all_type_decls): Define new member function. 27938 (read_context::types_equal): Use qualified names only if both 27939 types have a scope. 27940 (read_context::key_type_decl): Now a given ID is associated to 27941 *all* the declarations and definition that have that ID. 27942 (read_translation_unit_from_input): Make sure the current corpus 27943 node points to the right node. 27944 (build_class_decl): Resolve class declarations to the first 27945 definition seen in the corpus. Key a type decl before reading its 27946 members as a reading a member can request the current decl. No 27947 need to try and canonicalize a member type, as build_class_decl() 27948 does that already. 27949 * tests/data/test-read-dwarf/test16-pr18904.so: New test binary 27950 input. 27951 * tests/data/test-read-dwarf/test16-pr18904.so.abi: New test 27952 output reference. 27953 * tests/test-read-dwarf.cc: Run the test above. 27954 * tests/data/Makefile.am: Add the new test input to source 27955 distribution. 27956 * tests/data/test-abidiff/test-PR18791-report0.txt: Adjust. 27957 * tests/data/test-read-dwarf/test13-pr18894.so.abi: Likewise. 27958 * tests/data/test-read-dwarf/test14-pr18893.so.abi: Likewise. 27959 * tests/data/test-read-dwarf/test15-pr18892.so.abi: Likewise. 27960 279612015-08-30 Dodji Seketeli <dodji@redhat.com> 27962 27963 Bug 18892 - type degradation from DWARF to abixml on libtsan.so 27964 * src/abg-reader.cc (read_context::maybe_canonicalize_type): Late 27965 canonicalize enum types. 27966 (build_enum_type_decl): Read the linkage name of the enum type. 27967 * src/abg-writer.cc (write_enum_type_decl): Emit the linkage name 27968 of the enum type. 27969 * tests/data/test-read-dwarf/test15-pr18892.so: New binary test 27970 input. 27971 * tests/data/test-read-dwarf/test15-pr18892.so.abi: New test 27972 output reference. 27973 * tests/data/Makefile.am: Add the new test inputs above to source 27974 distribution. 27975 * tests/test-read-dwarf.cc (in_out_specs): Run the two tests above. 27976 279772015-08-30 Dodji Seketeli <dodji@redhat.com> 27978 27979 Bug 18893 - type degradation from dwarf to abixml on libGLU.so 27980 * src/abg-dwarf-reader.cc (build_class_type_and_add_to_ir): Do not 27981 consider that virtual member functions disqualify a class from 27982 being declaration-only. 27983 * src/abg-hash.cc (var_decl::hash::operator()): Do not cache the 27984 result of hashing before we are done building the type of the 27985 var_decl. 27986 (function_decl::hash::operator()): Likewise, do not cache the 27987 result of hashing before we are done building the type of the 27988 function_decl. 27989 * src/abg-reader.cc (build_class_decl): Build the link between a 27990 class declaration and its definition. If there are several 27991 definitions of a class in the corpus, keep just one. 27992 * src/abg-writer.cc (write_class_is_declaration_only): Emit the 27993 link between a class declaration and its definition. 27994 (write_class_decl): Emit a class declaration even if it has a 27995 definition. The definition is going to be emitted 27996 separately. 27997 * tests/data/test-read-dwarf/test14-pr18893.so: New binary test 27998 input. 27999 * tests/data/test-read-dwarf/test14-pr18893.so.abi: New test 28000 reference output. 28001 * tests/data/Makefile.am: Add the new test input files to source 28002 distribution. 28003 * tests/test-read-dwarf.cc (in_out_specs): Run the new tests. 28004 * tests/data/test-abidiff/test-PR18791-report0.txt: Adjust. 28005 * tests/data/test-read-dwarf/test9-pr18818-clang.so.abi: Likewise. 28006 * tests/data/test-read-dwarf/test10-pr18818-gcc.so.abi: Likewise. 28007 * tests/data/test-read-dwarf/test11-pr18828.so.abi: Likewise. 28008 * tests/data/test-read-dwarf/test12-pr18844.so.abi: Likewise. 28009 * tests/data/test-read-dwarf/test13-pr18894.so.abi: Likewise. 28010 280112015-08-30 Dodji Seketeli <dodji@redhat.com> 28012 28013 Use common canonicalization oracle when reading class type from dwarf 28014 * src/abg-dwarf-reader.cc (build_ir_node_from_die): 28015 (maybe_canonicalize_type): Move the specific logic that was in 28016 build_ir_node_from_die (for class types) here. 28017 280182015-08-30 Dodji Seketeli <dodji@redhat.com> 28019 28020 Fix crash in file type guessing 28021 * src/abg-tools-utils.cc (string_ends_with): Handle the case where 28022 the string suffix is longer than the string itself. 28023 280242015-08-29 Dodji Seketeli <dodji@redhat.com> 28025 28026 Bug 18894 - Fix representation of enumerators in abixml format 28027 * include/abg-ir.h (enum_type_decl::enumerator::get_value()): 28028 Change the type of this from size_t to ssize_t. 28029 * src/abg-ir.cc (enum_type_decl::enumerator::get_value): Do the 28030 same on the definition side. 28031 (non_canonicalized_subtype_detector::visit_begin): If a type 28032 refers to itself, late canonicalize it to have a similar hashing 28033 result as what the abixml reader does. 28034 * src/abg-reader.cc (build_enum_type_decl): Use ssize_t to read 28035 the value of enumerators. 28036 * tests/data/test-read-dwarf/test13-pr18894.so.abi: New test input. 28037 * tests/data/Makefile.am: Add the new test inputs above to source 28038 distribution. 28039 * tests/test-read-dwarf.cc (in_out_specs): Add new test inputs. 28040 * tests/data/test-read-dwarf/test9-pr18818-clang.so.abi: Adjust. 28041 * tests/data/test-read-dwarf/test10-pr18818-gcc.so.abi: Likewise. 28042 * tests/data/test-read-dwarf/test11-pr18828.so.abi: Likewise. 28043 * tests/data/test-read-dwarf/test12-pr18844.so.abi: Likewise. 28044 280452015-08-29 Dodji Seketeli <dodji@redhat.com> 28046 28047 Detect vtable changes from member function changes 28048 * include/abg-ir.h (class_decl::{has_virtual_base, has_vtable}): 28049 Declare new member functions. 28050 * src/abg-comp-filter.cc (has_virtual_mem_fn_change): New overload 28051 for function_decl_diff. 28052 (has_virtual_mem_fn_change): In the overload for diff*, support 28053 virtual member function changes detection for function_decl_diff*. 28054 * src/abg-comparison.cc (function_decl_diff::report): Detect and 28055 report changes to a vtable by looking a changes that can happen to 28056 a given member function. 28057 (corpus_diff::report): Detect and report changes to vtables by 28058 looking at changes change to member functions. 28059 * tests/data/test-diff-dwarf/test29-vtable-changes-report-0.txt: 28060 New text input. 28061 * tests/data/test-diff-dwarf/test29-vtable-changes-v{0,1}.cc: Source 28062 code of new test input binaries. 28063 * tests/data/test-diff-dwarf/test29-vtable-changes-v{0,1}.o: New 28064 test input binaries. 28065 * tests/data/test-diff-dwarf/test30-vtable-changes-report-0.txt: 28066 New text input. 28067 * tests/data/test-diff-dwarf/test30-vtable-changes-v{0,1}.cc: New 28068 test input. 28069 * tests/data/test-diff-dwarf/test30-vtable-changes-v{0,1}.o: New 28070 test input binaries. 28071 * tests/data/test-diff-dwarf/test31-vtable-changes-report-0.txt: 28072 New test input. 28073 * tests/data/test-diff-dwarf/test31-vtable-changes-v{0,1}.cc: 28074 Source code of new test input binary. 28075 * tests/data/test-diff-dwarf/test31-vtable-changes-v{0,1}.o: New 28076 test input binary. 28077 * tests/data/Makefile.am: Add the new test input files above to 28078 source distribution. 28079 * tests/test-diff-dwarf.cc (in_out_specs): Consume the new test 28080 inputs above. 28081 280822015-08-29 Dodji Seketeli <dodji@redhat.com> 28083 28084 Do not hash or compare virtual member functions as par of classes 28085 * src/abg-ir.cc (equals): When comparing two classes, do not 28086 compare their virtual member functions. 28087 * src/abg-hash.cc (class_decl::hash::operator()): Do not hash 28088 virtual member functions when hashing a class. 28089 * tests/data/test-read-dwarf/test10-pr18818-gcc.so.abi: Adjust. 28090 280912015-08-29 Dodji Seketeli <dodji@redhat.com> 28092 28093 Misc style fixes 28094 * src/abg-ir.cc (qualified_type_def::get_qualified_name): Fix 28095 typos in comments. 28096 (class_decl::member_class_template::operator==): Add comments. 28097 (operator==): Add comment for the overload of 28098 class_decl::member_class_template_sptr. 28099 (function_tdecl::operator==): Add comments. 28100 281012015-08-29 Dodji Seketeli <dodji@redhat.com> 28102 28103 Adjust many reference output for the non-regression test suite 28104 * tests/data/test-abidiff/test-enum0-report.txt: Adjust. 28105 * tests/data/test-abidiff/test-enum1-report.txt: Adjust. 28106 * tests/data/test-abidiff/test-qual-type0-report.txt: Adjust. 28107 * tests/data/test-abidiff/test-struct0-report.txt: Adjust. 28108 * tests/data/test-read-dwarf/test10-pr18818-gcc.so.abi: Adjust. 28109 * tests/data/test-read-dwarf/test11-pr18828.so.abi: Adjust. 28110 * tests/data/test-read-dwarf/test12-pr18844.so.abi: Adjust. 28111 * tests/data/test-read-dwarf/test9-pr18818-clang.so.abi: Adjust. 28112 * tests/data/test-read-write/test17.xml: Adjust. 28113 281142015-08-29 Dodji Seketeli <dodji@redhat.com> 28115 28116 Make test-read-dwarf.cc and test-read-write.cc abidiff the ABIs 28117 * tests/test-read-dwarf.cc (main): Use abidiff to compare the 28118 input elf file with the XML emitted. That should yield the empty 28119 set. 28120 * tests/test-read-write.cc (main): Likewise, use abidiff to 28121 compare the input abixml file with the one that is emitted. 28122 281232015-08-29 Dodji Seketeli <dodji@redhat.com> 28124 28125 Add a new --noout option to abidw 28126 * tools/abidw.cc (options::noout): New data member. 28127 (options::options): Initialize it. 28128 (display_usage): Add a usage string for the new option. 28129 (parse_command_line): Parse the new option. 28130 (main): If --noout is provided, do not emit the XML form. 28131 * doc/manuals/abidw.rst: Document the new option. 28132 281332015-08-29 Dodji Seketeli <dodji@redhat.com> 28134 28135 Add a --no-architecture option to abidiff 28136 * tools/abidiff.cc (options::no_arch): New data member. 28137 (options::options): Initialize it. 28138 (display_usage): Display a help string for the new options. 28139 (parse_command_line): Parse the new options. 28140 (main): If --no-architecture is provided, set the corpus 28141 architecture to "". 28142 * doc/manuals/abidiff.rst: Document the new options. 28143 281442015-08-29 Dodji Seketeli <dodji@redhat.com> 28145 28146 Read abixml as a whole file and fix lots discrepancies with dwarf 28147 * src/abg-reader.cc (class read_context): Move data member at 28148 the top of the class like what is done elsewhere in the code 28149 base. 28150 (read_context::m_corp_node): New data member. 28151 (read_context::read_context): Initialize it. 28152 (read_context::{get,set}_corpus_node): New accessors. 28153 (read_context::map_id_and_node): Accept that a node id previously 28154 defined is defined again. In that case we just remember the first 28155 mapping id -> xml-node. That seems to work for now. 28156 (read_context::get_translation_unit): Fix the logic. 28157 (read_context::m_wip_types_map): Rename 28158 read_context::m_wip_classes_map into this. 28159 (read_context::clear_wip_types_map): Rename 28160 read_context::clear_wip_classes into this. 28161 (read_context::mark_type_as_wip): Rename 28162 read_context::mark_class_as_wip into this. 28163 (read_context::unmark_type_as_wip): Rename 28164 read_context::unmark_type_as_wip into this. 28165 (read_context::is_wip_type): Rename read_context::is_wip_class 28166 into this. 28167 (read_context::types_equal): New member function. 28168 (read_context::clear_per_translation_unit_data): Do not clear 28169 anything anymore as the previous data that were per-tu are now 28170 per-corpus. 28171 (read_context::clear_per_corpus_data): Clear here the previous 28172 data that were per-tu. 28173 (read_context::maybe_canonicalize_type): Add a new force_delay 28174 flag that forces the type to be late-canonicalized. Also force 28175 late-canonicalize references, pointers, qualified-type and typedef 28176 because they must be canonicalized once they've been added to 28177 their context; but then this function might be called too early, 28178 before they are added to their context. 28179 (read_context::type_id_new_in_translation_unit): Remove this 28180 member function. 28181 (read_translation_unit_from_input): Be able to either use the 28182 xmlTextReader interface, or get the current 'abi-instr' xml 28183 element node. If using the xmlTextReader interface, use it to 28184 move to the 'abi-instr' node, expand it and then use that. In 28185 either case, call read_translation_unit() with the 'abi-instr' xml 28186 element node. 28187 (read_translation_unit): Take an 'abi-instr' XML element in 28188 argument now, use that to read the translation unit, as opposed to 28189 using the xmlTextReader interface we where using before to walk 28190 the sub-tree of the abi-instr xml node. 28191 (read_context::get_scope_for_node): If the scope is a new 28192 translation unit, then build the new translation unit. 28193 (read_symbol_db_from_input): Take the function and variable symbol 28194 data bases, and read the current xml element node (do not use the 28195 xmlTextReader interface anymore) to populate the function and 28196 variable symbols. 28197 (read_elf_needed_from_input): Do not use the xmlTextReader 28198 interface anymore. Rather, use the current xml element node, look 28199 for the 'elf-needed' xml element node and use it to populate the 28200 set of elf dependencies. 28201 (read_corpus_from_input): Rework to expand the contents of the 28202 corpus node and use the result, rather than just exclusively 28203 relying on the xmlTextReader interface. 28204 (build_function_parameter): Build a proper IR node for variadic 28205 parameters. Build function type node *after* having built all the 28206 parameters IR, so that parameter indexing is the same as what is 28207 done in the DWARF reader. Also, if the function is not being 28208 added to its context yet, then delay the canonicalizing of its 28209 type, just like what is done by the DWARF reader. 28210 (build_qualified_type_decl, build_pointer_type_def) 28211 (build_reference_type_def, build_enum_type_decl, build_type_decl): 28212 Adjust. Do not enforce anymore that the ID of this type be new in 28213 the current TU. Delay canonicalizing if the type is not being 28214 added to its context. For typedefs, use an adapted way of 28215 checking the consistency of the underlying type. 28216 (build_array_type_def): Do not enforce anymore that the ID of this 28217 type be new in the current TU. Support the fact that the array 28218 might not have any DW_AT_byte_size attribute. Force late 28219 canonicalizing if the array is not being added to its context. 28220 (build_class_decl): Adjust. Reuse the 28221 read_context::maybe_canonicalize_type() function rather than 28222 trying to determine locally when to canonicalize. 28223 (build_template_tparameter): Adjust 28224 282252015-08-29 Dodji Seketeli <dodji@redhat.com> 28226 28227 Fix handling of class declaration during DWARF reading 28228 *virtual* member functions, data members, base classes or a 28229 DW_AT_byte_size as being conditions for being defined. 28230 * src/abg-dwarf-reader.cc (read_context::decl_only_classes_map_): 28231 Remove this data member. 28232 (read_context::{declaration_only_classes_to_force_defined, 28233 schedule_declaration_only_class_for_forced_resolution}): Remove 28234 these member functions. 28235 (read_context::resolve_declaration_only_classes): Do not force 28236 resolution of class declaration. 28237 (build_class_type_and_add_to_ir): Do not schedule classes for 28238 forced-resolution when they are used as base classes. The 28239 presence of a member function is not enough to make the class be 28240 defined. It needs to be a virtual member function. 28241 282422015-08-28 Dodji Seketeli <dodji@redhat.com> 28243 28244 Fix important hashing issues 28245 * src/abg-hash.cc (class_decl::hash::operator()): Do not force 28246 base classes to have definitions anymore. GCC and Clang (at 28247 least) some time emits debug info in which the definition of some 28248 base classes are missing, especially when those base classes have 28249 vtables. In that case, the definition of the class might it's in 28250 the binary where the vtable is emitted, which might not be the 28251 binary we are looking at. So let's relax the assertion we had 28252 here for base classes. For hashing virtual member functions, 28253 directly walk the virtual member functions by looking at 28254 class_decl::get_virtual_mem_fns() rather than walking all 28255 member functions and looking for the virtual ones. This is a 28256 speed optimization but it also helps during debugging. 28257 282582015-08-28 Dodji Seketeli <dodji@redhat.com> 28259 28260 Fix template comparison operators 28261 * include/abg-ir.h (function_tdecl::operator==): Introduce a new 28262 virtual member operator that takes a function_tdecl&. 28263 * src/abg-ir.cc 28264 (class_decl::member_function_template::operator==): Avoid the 28265 static cast in the overload for member_base. In the overload for 28266 member_class_template, avoid infinite recursion. 28267 (function_tdecl::operator==): In the overload for decl_base, do 28268 not do the real work here in the overload for decl_base Rather, 28269 the real work is done in the new overload for function_tdecl, and 28270 all other overloads call that one. 28271 282722015-08-28 Dodji Seketeli <dodji@redhat.com> 28273 28274 Use size/alignment of class definition when requested on declaration 28275 * include/abg-ir.h (type_base::{set_size_in_bits, 28276 set_alignment_in_bits}): Make these member functions virtual. 28277 (class_decl::{set_size_in_bits, get_size_in_bits, 28278 get_alignment_in_bits, set_alignment_in_bits}): Declare these 28279 virtual member functions. 28280 * src/abg-ir.cc (class_decl::{set_size_in_bits, get_size_in_bits, 28281 get_alignment_in_bits, set_alignment_in_bits}): Define these 28282 virtual functions. 28283 282842015-08-28 Dodji Seketeli <dodji@redhat.com> 28285 28286 Fix type lookup algorithm 28287 * src/abg-ir.cc (find_next_delim_in_cplus_type): Define new static 28288 function. 28289 (fqn_to_components): Use the new function above to break up a 28290 fully qualified name into components, rather than the too simple 28291 string::find_first_of() we were using previously. 28292 (lookup_node_in_scope): If the found type (class) is a 28293 declaration-only and if it has a definition, then return it. 28294 282952015-08-26 Dodji Seketeli <dodji@redhat.com> 28296 28297 Make decl hashing always take qualified name into account 28298 * src/abg-hash.cc (decl_base::hash::operator()(const decl_base&)): 28299 Always hash the qualified name of the decl. 28300 283012015-08-26 Dodji Seketeli <dodji@redhat.com> 28302 28303 Accept base classes which types are compatible with class type 28304 * include/abg-fwd.h (is_compatible_with_class_type): Declare a new 28305 overload. 28306 * src/abg-dwarf-reader.cc (build_class_type_and_add_to_ir): Rather 28307 than requiring that base classes be of class type, just require 28308 that they be compatible with class types. 28309 * src/abg-ir.cc (is_compatible_with_class_type): Define a new 28310 overload. 28311 283122015-08-26 Dodji Seketeli <dodji@redhat.com> 28313 28314 Harden function_decl::get_pretty_representation() 28315 * src/abg-ir.cc (function_decl::get_pretty_representation): Make 28316 sure the function type is a member function before calling 28317 get_member_function_is_{virtual,ctor,dtor,const}. 28318 283192015-08-25 Dodji Seketeli <dodji@redhat.com> 28320 28321 Don't cache type qualified name before canonicalization 28322 * src/abg-ir.cc (decl_base::{get_qualified_parent_name, 28323 get_qualified_name}): Use the qualified name cache only if the 28324 type is fully built, i.e, when its canonical type is present. 28325 (qualified_type_def::get_qualified_name): Likewise. 28326 (pointer_type_def::get_qualified_name): Likewise. 28327 (reference_type_def::get_qualified_name): Likewise. 28328 (array_type_def::get_qualified_name): Likewise. 28329 283302015-08-22 Dodji Seketeli <dodji@redhat.com> 28331 28332 Misc style cleanups 28333 * configure.ac: Fix some spelling typos. 28334 * src/abg-tools-utils.cc (guess_file_type): Fix indentation. 28335 * tests/test-diff-pkg.cc (int_out_specs): Add some vertical spaces 28336 for better legibility. 28337 * tools/abidiff.cc (main): Add a missing space. 28338 * tools/abipkgdiff.cc (extract_deb): Fix a typo in the comment. 28339 283402015-08-22 Dodji Seketeli <dodji@redhat.com> 28341 28342 Make abipkgdiff compare tar archives containing binaries 28343 * config.h.in (WITH_TAR): New configuration preprocessor macro. 28344 * configure.ac: Add a new --enable-tar option. It's turned on 28345 automatically if the tar program is found in the PATH. Adjust the 28346 build configuration report to add the tar archive support. 28347 * include/abg-tools-utils.h (string_ends_with): Declare new 28348 function. 28349 (enum file_type): Add a new FILE_TYPE_TAR enumerator. 28350 * src/abg-tools-utils.cc (string_ends_with): Define new function. 28351 (operator<<(ostream&, file_type)): Serialize the new FILE_TYPE_TAR 28352 enumerator. 28353 (guess_file_type): Detect UStar format file by reading its magic 28354 number. Detect compressed tar files based on the file path 28355 extension. 28356 * tools/abipkgdiff.cc (extract_tar): Define new function. 28357 (extract_package): Handle tar packages. 28358 (main): Handle tar archives. 28359 * tools/abidiff.cc (main): Handle the new FILE_TYPE_TAR 28360 enumerator. 28361 * tools/abilint.cc (main): Likewise. 28362 * tests/data/test-diff-pkg/tarpkg-0-dir{1,2}.ta{,r,.bz2, gz}: New 28363 test input tarballs. 28364 * tests/data/test-diff-pkg/tarpkg-0-report-0.txt: New test output 28365 reference. 28366 * tests/data/Makefile.am: Add the new test data file above to 28367 source distribution. 28368 * tests/test-diff-pkg.cc (in_out_specs): Add new tests cases. 28369 283702015-08-22 Dodji Seketeli <dodji@redhat.com> 28371 28372 Misc style fixes in abipkgdiff 28373 * include/abg-tools-utils.h (enum file_type): Fix the comment for 28374 for the FILE_TYPE_DEB enumerator. 28375 * tools/abipkgdiff.cc (main): Fix the style of the conditions. 28376 Also, fix the text emitted. 28377 283782015-08-22 Dodji Seketeli <dodji@redhat.com> 28379 28380 Make abipkgdiff compare directories containing binaries 28381 * include/abg-tools-utils.h (enum file_type): Add a new 28382 FILE_TYPE_DIR enumerator. 28383 * src/abg-tools-utils.cc (operator<<(ostream&, file_type)): 28384 Support serialization of the new FILE_TYPE_DIR enumerator. 28385 (guess_file_type): Detect that the path given is a directory. 28386 * tools/abipkgdiff.cc (package::package): If the package is a 28387 directory, then set its extracted directory path to the path of 28388 the directory. 28389 (package::erase_extraction_directory): Do not erase the extraction 28390 directory if the package is a directory provided by the user. 28391 (extract_package): If the package is a directory provided by the 28392 user, then there is nothing to extract. 28393 (main): If the first package is a directory, then the second one 28394 should be a directory as well. 28395 * tools/abidiff.cc (main): Support directories as input. 28396 * tools/abilint.cc (main): Likewise. 28397 * tests/data/test-diff-pkg/dirpkg-0-dir{1,2}/libobj-v0.so: New 28398 binary test inputs. 28399 * test/data/test-diff-pkg/dirpkg-0-report-0.txt: New input test 28400 file. 28401 * tests/data/test-diff-pkg/dirpkg-1-dir{1,2}/obj-v0.cc: Source 28402 code of the binary test inputs above. 28403 * tests/data/Makefile.am: Add the new files above to the source 28404 distribution. 28405 * tests/test-diff-pkg.cc (in_out_specs): Add the new test input 28406 files above to the set of tests this harness has to run over. 28407 284082015-08-22 Dodji Seketeli <dodji@redhat.com> 28409 28410 [dwarf reader] Support reference types without explicit DW_AT_byte_size 28411 * src/abg-dwarf-reader.cc (build_reference_type): If the type DIE 28412 has no DW_AT_byte_size, assume the type size is the translation 28413 unit's address size. 28414 * tests/data/test-read-dwarf/test9-pr18818-clang.so.abi: Adjust. 28415 * tests/data/test-read-dwarf/test12-pr18844.so.abi: Adjust. 28416 284172015-08-21 Dodji Seketeli <dodji@redhat.com> 28418 28419 [dwarf reader] Support pointer types without explicit DW_AT_byte_size 28420 * abg-dwarf-reader.cc (build_pointer_type_def): If the type DIE 28421 has no DW_AT_byte_size, assume the type size is the translation 28422 unit's address size. 28423 * tests/data/test-read-dwarf/test9-pr18818-clang.so.abi: Adjust. 28424 * tests/data/test-read-dwarf/test12-pr18844.so.abi: Adjust. 28425 284262015-08-21 Dodji Seketeli <dodji@redhat.com> 28427 28428 make abipkgdiff compile with GCC 4.4.7 28429 * tools/abipkgdiff.cc (package::extracted_packages_parent_dir): 28430 The string holding the dir name is no more __thread, as this won't 28431 compile with GCC 4.4.7 28432 284332015-08-21 Dodji Seketeli <dodji@redhat.com> 28434 28435 Misc style fixes 28436 * src/abg-dwarf-reader.cc (read_context::die_type_map): Fix typo 28437 in the comment. 28438 * src/abg-ir.cc (peel_typedef_type): Fix typo in the comment. 28439 * src/abg-reader.cc 28440 (read_context::perform_late_type_canonicalizing): Fix a type in 28441 the comment. 28442 284432015-08-21 Dodji Seketeli <dodji@redhat.com> 28444 28445 Make get_pretty_representation work on method types 28446 * include/abg-fwd.h (is_method_type): Declare new overloads for 28447 naked pointers. 28448 (get_method_type_name): Declare new functions. 28449 (get_pretty_representation): Declare new overloads for 28450 method_type. 28451 * src/abg-ir.cc (get_function_type_name): If the function type is 28452 a method type, handle it as such. 28453 (get_method_type_name): Define new functions. 28454 (get_pretty_representation): If the function type is a method 28455 type, handle it as such. 28456 (get_pretty_representation): Define new overloads for method_type 28457 and pointer/reference to method_type. 28458 (is_method_type): Add overloads for naked pointers. 28459 284602015-08-21 Dodji Seketeli <dodji@redhat.com> 28461 28462 Hash a class declaration the same as its definition 28463 * src/abg-hash.cc (class_decl::hash::operator()(const class_decl&)): 28464 If the class declaration has a definition, hash its definition 28465 instead. Otherwise, if the class declaration has no definition, 28466 just return a zero hash, like what we were doing before. 28467 * src/abg-reader.cc (read_context::maybe_canonicalize_type): Do 28468 not early canonicalize method types because most of the time, when 28469 this function is called, the method hasn't been added to its 28470 parent class yet. So wait until late before canonicalizing. 28471 * src/abg-writer.cc (write_class_is_declaration_only): Do not emit 28472 the "is-declaration-only" property if the declaration has a 28473 definition. 28474 (write_class_decl): If the class declaration has a definition, 28475 emit the definition instead. 28476 * tests/data/test-read-dwarf/test10-pr18818-gcc.so.abi: Adjust. 28477 * tests/data/test-read-dwarf/test12-pr18844.so.abi: Likewise. 28478 * tests/data/test-read-dwarf/test9-pr18818-clang.so.abi: Likewise. 28479 * tests/data/test-read-write/test18.xml: Likewise. 28480 * tests/data/test-read-write/test20.xml: Likewise. 28481 * tests/data/test-read-write/test21.xml: Likewise. 28482 284832015-08-20 Dodji Seketeli <dodji@redhat.com> 28484 28485 Add a --stats to abidiff and abidw 28486 * include/abg-dwarf-reader.h (get_show_stats) 28487 (set_show_stats): New accessors for a new "show_stats" property of 28488 the dwarf reader context. 28489 * src/abg-dwarf-reader.cc: Include iostream to use std::cerr. 28490 (dwarf_reader::show_stats_): New data member. 28491 (dwarf_reader::dwarf_reader): Initialize it. 28492 (dwarf_reader::show_stats) 28493 (get_show_stats) 28494 (set_show_stats): Define new accessors. 28495 (dwarf_reader::die_type_map): Add const overload to this accessor. 28496 (dwarf_reader::lookup_type_from_die_offset): Make this accessor 28497 const. 28498 (dwarf_reader::add_late_canonicalized_types_stats): New member 28499 function. 28500 (dwarf_reader::perform_late_type_canonicalizing): Emit the 28501 statistics about late-canonicalized types if the user asked for 28502 it. 28503 * tools/abidiff.cc (options::show_stats): New data member. 28504 (options::options): Initialize it. 28505 (display_usage): Document it. 28506 (parse_command_line): Parse the new --stats option. 28507 (main): Create a dwarf reader context, set the show_stats to it 28508 and then use that context to read the corpora before diffing them. 28509 * tools/abidw.cc (options::show_stats): New data member. 28510 (options::options): Initialize it. 28511 (display_usage): Document it. 28512 (parse_command_line): Parse the new --stats option. 28513 (main): Set the show_stats to the dwarf reader context before 28514 using it. 28515 * doc/manuals/abidiff.rst: Update the manual. 28516 * doc/manuals/abidw.rst: Update the manual. 28517 285182015-08-19 Dodji Seketeli <dodji@redhat.com> 28519 28520 Canonicalize all types that got scheduled for late canonicalization 28521 * src/abg-dwarf-reader.cc 28522 (read_context::canonicalize_types_scheduled): Canonicalize all 28523 types scheduled for late canonicalization. 28524 * tests/data/test-read-dwarf/test9-pr18818-clang.so.abi: Adjust. 28525 * tests/data/test-read-dwarf/test9-pr18818-clang.so.abi: Adjust. 28526 285272015-08-19 Dodji Seketeli <dodji@redhat.com> 28528 28529 Propagate canonical type of a class definition to its declaration 28530 * src/abg-ir.cc: (canonicalize): Propagate the canonical type of 28531 the type definition to its declaration. 28532 (class_decl::set_definition_of_declaration): Likewise. 28533 285342015-08-19 Dodji Seketeli <dodji@redhat.com> 28535 28536 Make type_has_non_canonicalized_subtype() tighter 28537 * include/abg-fwd.h (is_typedef, is_pointer_type) 28538 (is_reference_type): Declare new overloads. 28539 (peel_typedef_type): Renamed get_typedef_underlying_type into 28540 this. 28541 (peel_pointer_type, peel_reference_type) 28542 (peel_typedef_pointer_or_reference_type): Declare new functions. 28543 * src/abg-ir.cc (peel_typedef_type): Renamed 28544 get_typedef_underlying_type into this. 28545 (is_typedef, is_pointer_type, is_reference_type): Define new 28546 overloads. 28547 (peel_pointer_type, peel_reference_type) 28548 (peel_typedef_pointer_or_reference_type): Define new functions. 28549 (non_canonicalized_subtype_detector::has_non_canonical_type_): 28550 Make the type of this data member be a type_base*, not a bool. 28551 This is so that we can return the first non-canonicalized subtype 28552 of the type we are looking at. 28553 (non_canonicalized_subtype_detector::non_canonicalized_subtype_detector): 28554 Adjust the data member initialization. 28555 (non_canonicalized_subtype_detector::visit_begin): Add an overload 28556 for function_decl*, to avoid looking into non-virtual member 28557 functions. 28558 In the overload for type_base*, peel typedefs, pointers and 28559 reference of each sub-type that has no canonical type, to see if 28560 refers to the type we are actually walking. If yes, then keep 28561 going. 28562 (type_has_non_canonicalized_subtype): Return the non-canonicalized 28563 sub-type found. 28564 * src/abg-comparison.cc (type_suppression::suppresses_diff): 28565 Adjust for the get_typedef_underlying_type -> peel_typedef_type 28566 renaming. 28567 285682015-08-19 Dodji Seketeli <dodji@redhat.com> 28569 28570 Make decl_base::get_qualified_name() work when decl context changes 28571 * include/abg-ir.h (class decl_base): Make class scope_decl a 28572 friend of decl_base. 28573 (type_base::priv_): Make this protected, rather than private. 28574 * src/abg-ir.cc (scope_decl::add_member_decl) 28575 (scope_decl::insert_member_decl): Reset the cache of the result of 28576 decl_base::get_qualified_name(). 28577 * tests/data/test-abidiff/test-PR18791-report0.txt: Adjust. 28578 285792015-08-18 Dodji Seketeli <dodji@redhat.com> 28580 28581 Bug 18844 - assert failure in abidw at abg-dwarf-reader.cc:6537 28582 * src/abg-dwarf-reader.cc (build_class_type_and_add_to_ir): 28583 Schedule declaration-only class resolution before the class 28584 appears as usable as to other types being built. 28585 * tests/data/test-read-dwarf/test12-pr18844.so: Add a new binary 28586 test input. 28587 * tests/data/test-read-dwarf/test12-pr18844.so.abi: The reference 28588 ABI XML output for the binary above. 28589 * tests/data/Makefile.am: Add the new test inputs above to the 28590 source distribution. 28591 * tests/test-read-dwarf.cc (in_out_specs): Add the new test inputs 28592 above to the set of input this test harness has to run over. 28593 285942015-08-18 Dodji Seketeli <dodji@redhat.com> 28595 28596 Fix a little glitch in the test suite 28597 * test-read-dwarf.cc (in_out_specs): Emit the output of the test11 28598 to output/test-read-dwarf/test11-pr18828.so.abi, not 28599 output/test-read-dwarf/test10-pr18828.so.abi. 28600 286012015-08-18 Dodji Seketeli <dodji@redhat.com> 28602 28603 Escape XML property names that were not escaped before 28604 * src/abg-writer.cc (write_namespace_decl, write_typedef_decl) 28605 (write_var_decl): Escape the XML characters that are forbidden in 28606 XML properties, and that are emitted as value of the 'name' 28607 property. 28608 286092015-08-15 Dodji Seketeli <dodji@redhat.com> 28610 28611 Bug 18828 - Handle force-resolving of multiple declarations-only of the same type 28612 * src/abg-dwarf-reader.cc 28613 (read_context::resolve_declaration_only_classes): Accept that a 28614 class that needs to be force-resolved might have been declared 28615 several times. In that case, some instances of that 28616 declaration-only class might have already been resolved (or 28617 completed). 28618 * tests/data/test-read-dwarf/test11-pr18828.so: New binary input. 28619 It comes from bug https://sourceware.org/bugzilla/show_bug.cgi?id=18828. 28620 * tests/data/test-read-dwarf/test11-pr18828.so.abi: The reference 28621 output for the binary above. 28622 * tests/data/Makefile.am: Add the test input files above to source 28623 distribution. 28624 * tests/test-read-dwarf.cc (in_out_specs): Add the test inputs 28625 above to the set of input this test harness has to run over. 28626 286272015-08-15 Dodji Seketeli <dodji@redhat.com> 28628 28629 Avoid declaring a type several times in the same TU in the XML format 28630 * src/abg-writer.cc (write_context::{record_type_id_as_emitted, 28631 record_type_as_emitted, type_id_is_emitted, type_is_emitted, 28632 clear_emitted_types_map}): New member functions. 28633 (write_context::m_emitted_type_id_map): New data member. 28634 (write_translation_unit): Clear the per-translation unit map of 28635 emitted types. Do not emit a type that has already been emitted 28636 in this translation unit. 28637 (write_namespace_decl): Do not emit a type that has already been 28638 emitted in this translation unit. 28639 (write_type_decl, write_qualified_type_def) 28640 (write_pointer_type_def, write_reference_type_def) 28641 (write_array_type_def, write_typedef_decl, write_class_decl) 28642 (write_type_tparameter, write_template_tparameter): Record the 28643 type we've just written as having been written out. 28644 * tests/data/test-read-dwarf/test9-pr18818-clang.so.abi: Adjust as 28645 duplicated declarations got removed. 28646 286472015-08-14 Dodji Seketeli <dodji@redhat.com> 28648 28649 Misc style fixes in the XMLABI writer 28650 * src/abg-writer.cc (write_context): Align data members. 28651 (write_translation_unit): Remove useless horizontal white spaces. 28652 (write_decl, write_qualified_type_def, write_pointer_type_def) 28653 (write_reference_type_def, write_array_type_def) 28654 (write_enum_type_decl, write_typedef_decl, write_class_decl) 28655 (write_type_tparameter): Use the *_sptr typedefs rather than the 28656 longer form of shared_ptr<sometype> in function signatures. 28657 (write_enum_type_decl): In this function in particular, indent a 28658 line properly. 28659 286602015-08-14 Dodji Seketeli <dodji@redhat.com> 28661 28662 Fix typos in abipkgdiff 28663 * tools/abipkgdiff.cc (display_usage): s/pompare/compare. Give a 28664 better help message for --help. 28665 (extract_rpm): Insert a space after the path of the package being 28666 extracted, when emitting a verbose message. 28667 286682015-08-14 Dodji Seketeli <dodji@redhat.com> 28669 28670 Install the manpage for abipkgdiff 28671 * doc/manuals/Makefile.am (section1_manpages): Add abipkgdiff.1 to 28672 the set of manpages to be install into section 1. 28673 286742015-08-12 Dodji Seketeli <dodji@redhat.com> 28675 28676 Bug 18818 - abidw aborts on a class with a non-complete base class 28677 * src/abg-dwarf-reader.cc 28678 (read_context::decl_only_classes_to_force_defined_map_): New data 28679 member. 28680 (read_context::declaration_only_classes_to_force_defined): New 28681 accessors. 28682 (read_context::schedule_declaration_only_class_for_forced_resolution): 28683 New member function. 28684 (build_class_type_and_add_to_ir): If a base class is a 28685 declaration-only class then mark it as needing to be force-defined 28686 *if* it's still not defined at the end of the abi corpus loading. 28687 (read_context::resolve_declaration_only_classes): If 28688 declaration-only classes that need to force-defined are present 28689 and not defined (when we reach the end of the ABI corpus) then 28690 force-define them as empty classes. 28691 * tests/data/test-read-dwarf/test10-pr18818-gcc.so: New test 28692 binary input file. This comes from a user binary submitted to bug 28693 https://sourceware.org/bugzilla/show_bug.cgi?id=18818. The 28694 original URL to the binary is 28695 https://sourceware.org/bugzilla/attachment.cgi?id=8518. 28696 * tests/data/test-read-dwarf/test9-pr18818-clang.so: New binary 28697 input file. This comes from the same bug report as above. The 28698 original URL to the binary is 28699 https://sourceware.org/bugzilla/attachment.cgi?id=8511. 28700 * tests/data/test-read-dwarf/test10-pr18818-gcc.so.abi: New 28701 reference output file. 28702 * tests/data/test-read-dwarf/test9-pr18818-clang.so.abi: Likewise. 28703 * tests/data/Makefile.am: Add the new files above to the source 28704 distribution. 28705 * tests/test-read-dwarf.cc (in_out_specs): Add the test inputs 28706 above the set of tests input this harness has to run over. 28707 287082015-08-14 Dodji Seketeli <dodji@redhat.com> 28709 28710 Update the abipkgdiff manual to say that .deb files are now supported 28711 * doc/manuals/abipkgdiff.rst: Say that .deb fiel are now supported 28712 by abipkgdiff. 28713 287142015-08-14 Dodji Seketeli <dodji@redhat.com> 28715 28716 Update comment about the supported formats in abipkgdiff 28717 * tools/abipkgdiff.cc: Now that .deb packages are supported, say 28718 it. 28719 287202015-08-14 Dodji Seketeli <dodji@redhat.com> 28721 28722 Make the support of RPM and DEB package formats conditional 28723 * config.h.in: Define WITH_DEB and WITH_RPM pre-processor macros. 28724 * configure.ac: Add --enable-{rpm,deb} switches. Check for 28725 rpm2cpio and cpio programs, unless --disable-rpm was provided. If 28726 they are found and if --enable-rpm=auto was provided, then 28727 consider that --enable-rpm=yes was provided. In that case, set 28728 the WITH_RPM macro to 1. Otherwise, undefine that macro. 28729 Similarly, check for dpkg unless --disable-deb was provided. If 28730 it's found and if --enable-deb=auto was provided, consider that 28731 --enable-deb=yes was provided. In that case, set the WITH_DEB 28732 macro to 1. Otherwise, undefine that macro. Define the 28733 ENABLE_RPM and ENABLE_DEB conditional automake variables, if the 28734 rpm resp. deb support is enabled. Emit a notice about the rpm and 28735 deb features being enabled or not, at the end of the configure 28736 process. 28737 * tests/test-diff-pkg.cc: Include the config.h header. 28738 (in_out_spec): Guard rpm tests by the WITH_RPM macro. Similarly, 28739 guard deb tests by the WITH_DEB macro. 28740 * tools/abipkgdiff.cc: Include the config.h header. 28741 (extract_rpm): Guard this function definition with the WITH_RPM 28742 macro. 28743 (extract_deb): Guard this function definition with the WITH_DEB 28744 macro. 28745 (extract_package): Guard the handling of rpm packages with the 28746 WITH_RPM macro and the handling of deb package with the WITH_DEB 28747 macro. If a package not-support package format is encountered, 28748 emit an appropriate error message and error out. 28749 287502015-08-07 Matthias Klose <doko@debian.org> 28751 28752 Add support for .deb files to abipkgdiff 28753 * include/abg-tools-utils.h (file_type): Add FILE_TYPE_DEB. 28754 * tools/abipkgdiff.cc (extract_deb): New. 28755 (extract_package, main): Handle FILE_TYPE_DEB. 28756 * src/abg-tools-utils.cc (operator<<): Handle FILE_TYPE_DEB. 28757 (guess_file_type): Detect FILE_TYPE_DEB. 28758 * tools/abidiff.cc (main): Handle FILE_TYPE_DEB. 28759 * tools/abilint.cc (main): Handle FILE_TYPE_DEB. 28760 * tests/data/test-diff-pkg/libsigc++-2.0-0c2a-dbgsym_2.4.0-1_amd64.ddeb: 28761 Input debian debug info package; to be compared by the test 28762 harness runtestdiffpkg. 28763 * tests/data/test-diff-pkg/libsigc++-2.0-0c2a_2.4.0-1_amd64.deb: 28764 Input debian package; to be compared by the test harness 28765 runtestdiffpkg. 28766 * tests/data/test-diff-pkg/libsigc++-2.0-0v5-dbgsym_2.4.1-1ubuntu2_amd64.ddeb: 28767 Input debug info package 28768 * tests/data/test-diff-pkg/libsigc++-2.0-0v5_2.4.1-1ubuntu2_amd64.deb: 28769 Input debian package; to be compared by the test harness 28770 runtestdiffpkg. 28771 * tests/data/test-diff-pkg/libsigc++-2.0-0c2a_2.4.0-1_amd64--libsigc++-2.0-0v5_2.4.1-1ubuntu2_amd64-report-0.txt: 28772 Reference output for the comparison of the packages above. 28773 * tests/data/Makefile.am: Add the new files above to the source distribution. 28774 * tests/test-diff-pkg.cc (in_out_specs): Add the input packages 28775 above to the set of files to be compared by this test harness. 28776 287772015-08-14 Dodji Seketeli <dodji@redhat.com> 28778 28779 Add configure check for rm and mkdir used by abipkgdiff 28780 * configure.ac: Add configure checks for rm and mkdir used by 28781 abipkgdiff. 28782 287832015-08-14 Dodji Seketeli <dodji@redhat.com> 28784 28785 Fix a comment in configure.ac 28786 * configure.ac: Fix a comment. 28787 287882015-08-14 Dodji Seketeli <dodji@redhat.com> 28789 28790 Do not remove api and website source files by accident 28791 * doc/Makefile.am: Do not remove the entirety of the build dir of 28792 doxygen for the apidoc and the website as these can be also the 28793 source dirs. Rather, remove that is under the html/ sub-directory 28794 of the build dir, as this is always generated by doxygen. 28795 287962015-08-13 Dodji Seketeli <dodji@redhat.com> 28797 28798 Add an abipkgdiff --fail-no-dbg command line option 28799 * tools/abipkgdiff.cc (options::fail_if_no_debug_info): New data 28800 member. 28801 (options::options): Initialize it. 28802 (display_usage): Document it. 28803 (compare): If the user asked for it, fail if the we couldn't file 28804 the debug info for the corpus files being compared. 28805 288062015-08-13 Dodji Seketeli <dodji@redhat.com> 28807 28808 Add -h and -d option shortcuts to abidw 28809 * tools/abidw.cc (display_usage): Added a documentation string. 28810 (parse_command_line): Parse the new -h and -d shortcuts. 28811 * doc/manuals/abidw.rst: Update the manual. 28812 288132015-08-13 Dodji Seketeli <dodji@redhat.com> 28814 28815 Add a -h option shortcut to abidiff 28816 * tools/abidiff.cc (display_usage): Add documentation for the new 28817 switch. 28818 (parse_command_line): Parse the -h option. 28819 * doc/manuals/abidiff.rst: Update the manual. 28820 288212015-08-13 Dodji Seketeli <dodji@redhat.com> 28822 28823 Add a -h shortcup to abipkgdiff --help 28824 * tools/abipkgdiff.cc (display_usage): Document the -h shortcut. 28825 (parse_command_line): Parse the -h shortcut to --help. 28826 288272015-08-09 Dodji Seketeli <dodji@redhat.com> 28828 28829 Bug 18791 - libabigail fails to read the output of abidw 28830 * src/abg-reader.cc (read_context::get_scope_for_node): Take an 28831 access_specifier output parameter to set the access specifier of 28832 the current node in its scope. Update the function to set the 28833 access_specifier. 28834 (read_context::build_or_get_type_decl): Adjust to set the access 28835 specifier of the type we are building, in case it's a member type. 28836 * tests/data/test-abidiff/test-PR18791-v{0,1}.so.abi: New test input files. 28837 * tests/data/test-abidiff/test-PR18791-report0.txt: New test 28838 output reference. 28839 * tests/data/Makefile.am: Add the new test material to the source 28840 distribution. 28841 * tests/test-abidiff.cc (specs): Add the new test inputs to the set of 28842 input files this test harness has to run over. 28843 288442015-08-09 Dodji Seketeli <dodji@redhat.com> 28845 28846 Fix a thinko in language support de-serialization 28847 * src/abg-ir.cc (string_to_translation_unit_language): Fix 28848 thinko. What was I thinking ... 28849 288502015-08-06 Dodji Seketeli <dodji@redhat.com> 28851 28852 Add --no-added-syms to abipkgdiff 28853 * tools/abipkgdiff.cc (options::show_added_syms): New data member. 28854 (options::options): Initialize it. 28855 (parse_command_line): Parse the new --no-added-syms option and set 28856 the options::show_added_syms flag accordingly. 28857 (display_usage): Add a help string for the new option. 28858 (set_diff_context_from_opts): Set the diff context according to 28859 the state of the new options::show_added_syms flag. 28860 * doc/manuals/abipkgdiff.rst: Add manual entry for the new 28861 --no-added-syms options. 28862 * tests/data/test-diff-pkg/test-rpm-report-5.txt: New test 28863 reference input file. 28864 * tests/data/Makefile.am: Add the new file above to source 28865 distribution. 28866 * tests/test-diff-pkg.cc (InOutSpec::prog_options): New data 28867 member. 28868 (in_out_specs): Adjust. Add a new input to run the test again 28869 with --no-added-syms. 28870 (main): Adjust to pass the program options contained in 28871 InOutSpec::prog_options to abipkgdiff. 28872 fixup! Add --no-added-syms to abipkgdiff 28873 288742015-08-06 Dodji Seketeli <dodji@redhat.com> 28875 28876 Update diff stats when added symbols are removed from change report 28877 * include/abg-comparison.h (diff_context_wptr) 28878 (corpus_diff::diff_stats_sptr): New typedefs. 28879 (corpus_diff::diff_stats::diff_stats): Make this constructor take 28880 a diff_context_sptr. Make the default constructor private. 28881 * src/abg-comparison.cc (corpus_diff::diff_stats::priv::ctxt_): 28882 New data member. This is a weak pointer to a diff_context. 28883 (corpus_diff::diff_stats::priv::priv): Take a diff_context_sptr 28884 and initialize the weak pointer ctxt_ to it. 28885 (corpus_diff::diff_stats::priv::ctxt): New accessor to the 28886 diff_context hold by the diff_stats. 28887 (corpus_diff::diff_stats::{num_removed_func_filtered_out, 28888 num_added_func_filtered_out, num_removed_vars_filtered_out, 28889 num_added_vars_filtered_out, num_removed_func_syms_filtered_out, 28890 num_added_func_syms_filtered_out, 28891 num_removed_var_syms_filtered_out, 28892 num_added_var_syms_filtered_out}): If the user asked for the added 28893 [or removed] variables/functions/symbols to be ignored, the 28894 accessors for the number of filtered added/removed variables/functions/symbols 28895 return the total number of added/removed 28896 variables/functions/symbols; that is, say that *all* added/removed 28897 variables/functions/symbols got filtered out. 28898 (corpus_diff::priv::diff_stats_): Turn this data member into a 28899 [shared] pointer to diff_stats. 28900 (corpus_diff::priv::filters_and_suppr_applied_): Remove this data 28901 member. Now that diff_stats_ is a pointer, we don't need this 28902 boolean anymore. 28903 (corpus_diff::apply_filters_and_suppressions_before_reporting): 28904 Adjust to the fact that filters_and_suppr_applied_ is gone, and 28905 that diff_stats_ is now a pointer. 28906 (corpus_diff::report): Control un-referenced added symbols 28907 reporting with 28908 diff_context::show_added_symbols_unreferenced_by_debug_info() 28909 289102015-07-31 Dodji Seketeli <dodji@redhat.com> 28911 28912 Make applying supp specs through pointer access look through typedefs 28913 * include/abg-comparison.h (type_suppression::suppresses_type): 28914 Declare new member function. 28915 (get_typedef_diff_underlying_type_diff): Declare new function. 28916 * include/abg-fwd.h (get_typedef_underlying_type): Likewise. 28917 * src/abg-comparison.cc (type_suppression::suppresses_type): 28918 Define new member function. 28919 (get_typedef_diff_underlying_type_diff): Define new function. 28920 (type_suppression::suppresses_diff): After looking through the 28921 different kind of access methods, use the new 28922 type_suppression::suppresses_type(), rather than doing lots of 28923 stuff ourselves here. But then, if the suppression doesn't apply 28924 to the subjects of the diff, look through typedefs and try to 28925 apply the suppression again. 28926 * src/abg-ir.cc (get_typedef_underlying_type): Define new 28927 function. 28928 * tests/data/test-diff-suppr/libtest25-typedef-v{0,1}.so: New 28929 binary test input files. 28930 * tests/data/test-diff-suppr/test25-typedef-v{0,1}.c: Source code 28931 for the binary test input files above. 28932 * tests/data/test-diff-suppr/test25-typedef-report-{0, 1}.txt: New test 28933 input files. 28934 * tests/data/test-diff-suppr/test25-typedef-suppr-0.txt: New test 28935 input file. 28936 * tests/data/Makefile.am: Add the new test material to the source 28937 distribution. 28938 * tests/test-diff-suppr.cc (in_out_specs): Add the test inputs 28939 above to the set of test inputs this harness has to run over. 28940 289412015-07-24 Dodji Seketeli <dodji@redhat.com> 28942 28943 Make abipkgdiff erase the *parent* directory of temporary files 28944 * tools/abipkgdiff.cc 28945 (erase_created_temporary_directories_parent): New static function. 28946 (compare): After comparison, erase the temporary parent directory 28947 as well. 28948 289492015-07-24 Dodji Seketeli <dodji@redhat.com> 28950 28951 Make the name of the removed variable section be consistent 28952 * src/abg-comparison.cc (corpus_diff::report): Introduce the 28953 section of removed variables with the string "Removed variable", 28954 rather than with the string "Deleted variable". 28955 * tests/data/test-abicompat/test2-var-removed-report-0.txt: Adjust. 28956 * tests/data/test-diff-suppr/test18-suppr-removed-var-report-0.txt: Likewise. 28957 * tests/data/test-diff-suppr/test18-suppr-removed-var-report-3.txt: Likewise. 28958 * tests/data/test-diff-suppr/test18-suppr-removed-var-report-5.txt: Likewise. 28959 289602015-07-24 Dodji Seketeli <dodji@redhat.com> 28961 28962 Consider default symbol versions when computing added/removed fns/vars 28963 * include/abg-corpus.h (corpus::{lookup_function_symbol, 28964 lookup_variable_symbol}): Take a elf_symbol::version object, 28965 rather than a string representing the version. Add an overload 28966 that takes an elf_symbol. 28967 * src/abg-corpus.cc (find_symbol_by_version): New static function. 28968 (corpus::{lookup_function_symbol, lookup_variable_symbol}): Take a 28969 elf_symbol::version object, rather than a string representing the 28970 version. Add an overload that takes an elf_symbol. If the looked 28971 up symbol has no version and if the corpus contains a symbol with 28972 the same name and with a default version, then return that latter 28973 symbol if the corpus doesn't contain a symbol with the same name 28974 and empty version. 28975 * src/abg-comparison.cc 28976 (class_diff::ensure_lookup_tables_populated): Adjust. 28977 (corpus_diff::priv::ensure_lookup_tables_populated): Before 28978 deciding that a symbol has been added, if the symbol has a default 28979 version, make sure no symbol with the same name and without 28980 version was present in the former corpus. Similarly, before 28981 deciding that a symbol has been removed, if the symbol has no 28982 version, make sure the latter corpus has no symbol with the same 28983 name and with a default version. 28984 * tests/data/test-diff-dwarf/test12-report.txt: Adjust. The 28985 function should not be considered as added, because its symbol 28986 (and version) was already present in the former DSO. 28987 289882015-07-24 Dodji Seketeli <dodji@redhat.com> 28989 28990 Fix a thinko in removed variables detection 28991 * src/abg-comparison.cc 28992 (corpus_diff::priv::ensure_lookup_tables_populated): Once we have 28993 computed a set of potentially deleted variables that turned out to 28994 contain variables that were actually *NOT* deleted, really take 28995 these into account by removing these false positives from the set 28996 of deleted *variables*. We were trying to delete these from the 28997 set deleted *functions*; woops, I guess this was a copy & paste 28998 error. 28999 290002015-07-24 Dodji Seketeli <dodji@redhat.com> 29001 29002 Fix logic of type_has_non_canonicalized_subtype() 29003 * src/abg-ir.cc (type_has_non_canonicalized_subtype): Once the 29004 type has been traversed, just test if the visitor has accumulated 29005 the 'has_non_canonical_type' property. 29006 290072015-07-24 Dodji Seketeli <dodji@redhat.com> 29008 29009 Fix style issues 29010 * include/abg-ir.h (struct ir_node_visitor): Fix the wording of 29011 the comment of this type. 29012 * src/abg-dwarf-reader.cc (build_ir_node_from_die): Fix the 29013 filling of the text of the comment of the code that chooses to 29014 perform early canonicalizing. 29015 290162015-07-24 Dodji Seketeli <dodji@redhat.com> 29017 29018 Adding member type doesn't reset declaration-only-ness of a class 29019 * src/abg-dwarf-reader.cc (build_class_type_and_add_to_ir): 29020 Adding a new member type shouldn't remove the 29021 declaration-only-ness of the class. 29022 290232015-07-22 Dodji Seketeli <dodji@redhat.com> 29024 29025 Extract all packages for a given run of abipkgdiff under the same temp dir 29026 * tools/abipkgdiff.cc (package::{<all data members>}): Make the 29027 data members be private. Make their names end with an underscore. 29028 (package::extracted_package_parent_dir_path): Remove. 29029 (package::extracted_package_dir_path): Rename into 29030 package::extracted_dir_path_. 29031 (package::extracted_packages_parent_dir): New static member 29032 function, accessor. 29033 (package::package): Adjust to the new names of the data members. 29034 Call the new package::extracted_package_parent_dir() static member 29035 function to initial the package::extracted_dir_path_ data member. 29036 (package::{path, extracted_dir_path, type, is_debug, 29037 path_elf_file_sptr_map, debug_info_package}): New accessors for 29038 the data members. 29039 (package::{erase_extraction_directory, 29040 erase_extraction_directories}): Adjust. 29041 (erase_created_temporary_directories) 29042 (create_maps_of_package_content) 29043 (extract_package_and_map_its_content, prepare_packages, compare) 29044 (main): Adjust. 29045 290462015-07-22 Dodji Seketeli <dodji@redhat.com> 29047 29048 Add a --keep-tmp-files option to abipkgidff 29049 * tools/abipkgdiff.cc (options::keep_tmp_files): New data member. 29050 (options::options): Initialize it. 29051 (display_usage): Display a usage string for the new 29052 --keep-tmp-files option. 29053 (parse_command_line): Parse the new --keep-tmp-files option. 29054 (compare): Do not erase temporary directories if the users asked so. 29055 * doc/manuals/abipkgdiff.rst: Document the new --keep-tmp-files 29056 options. 29057 290582015-07-21 Dodji Seketeli <dodji@redhat.com> 29059 29060 Show linkage names in abipkgdiff output 29061 * doc/manuals/abipkgdiff.rst: Document the new --no-linkage-name 29062 options. 29063 * tools/abipkgdiff.cc (options::show_linkage_names): New data 29064 member. 29065 (options::options): Initialize it. 29066 (display_usage): Display a usage string for --no-linkage-name. 29067 (parse_command_line): Parse the --no-linkage-name option. 29068 (set_diff_context_from_opts): Set the diff context accordingly. 29069 * tests/data/test-diff-pkg/test-rpm-report-0.txt: Adjust. 29070 290712015-07-21 Dodji Seketeli <dodji@redhat.com> 29072 29073 Add --no-added-binaries to abipkgdiff 29074 * tools/abipkgdiff.cc (options::show_added_binaries): New data 29075 member. 29076 (options::options): Initialize it. 29077 (display_usage): Add a help string for --no-added-binaries. 29078 (parse_command_line): Parse the new --no-added-binaries option. 29079 (compare): Do not show added binaries if the user doesn't want to. 29080 * doc/manuals/abipkgdiff.rst: Document the new --no-added-binaries 29081 option. 29082 290832015-07-21 Dodji Seketeli <dodji@redhat.com> 29084 29085 make abipkgdiff return a proper exit code 29086 * tools/abipkgdiff.cc (compare): Return an instance 29087 abigail::tools_utils::abidiff_status, just like what we do in 29088 abidiff. 29089 * doc/manuals/abipkgdiff.rst: Document the new exit code. 29090 290912015-07-21 Dodji Seketeli <dodji@redhat.com> 29092 29093 Fix logic of determining if changes happened in abidiff 29094 * tools/abidiff.cc (main): Simplify the logic when determining if 29095 the comparison between two corpora yields worthwhile changes. 29096 290972015-07-21 Dodji Seketeli <dodji@redhat.com> 29098 29099 Add a new corpus_diff::has_net_changes() entry point 29100 * include/abg-comparison.h (corpus_diff::has_net_changes): Declare 29101 new member function. 29102 * src/abg-comparison.cc (corpus_diff::has_net_changes): Define it. 29103 291042015-07-20 Dodji Seketeli <dodji@redhat.com> 29105 29106 Fix type synthesis to fix abicompat weak mode 29107 * include/abg-fwd.h 29108 (synthesize_type_from_translation_unit): Declare new function. 29109 (synthesize_function_type_from_translation_unit): Make the 29110 translation_unit parameter non-const because the function needs to 29111 bind the life time of the synthesized function to the life time of 29112 the translation unit. Make this function be a friend of 29113 abigail::ir::translation_unit. 29114 (synthesize_function_type_from_translation_unit): 29115 * src/abg-ir.cc (translation_unit::priv::synthesized_types_): New 29116 data member. 29117 (synthesize_type_from_translation_unit): Define new function. 29118 (synthesize_function_type_from_translation_unit): Make the 29119 translation_unit parameter non-const. If the return is void, then 29120 take that in account carefuly. Rather than just looking up the 29121 type of parameters and return value, synthesize them too, 29122 especially when they are qualified types. Bind the life time of 29123 the synthesized function type to the lifetime of the translation 29124 unit. 29125 * tests/data/test-abicompat/test7-fn-changed-report-1.txt: New 29126 test reference output. 29127 * tests/test-abicompat.cc (in_out_spec): Run the harness on the 29128 exisiting test7-fn-changed-app and libtest7-fn-changed-libapp-v1 29129 but in weak mode this time. 29130 291312015-07-20 Dodji Seketeli <dodji@redhat.com> 29132 29133 Clean up the output of abicompat weak mode 29134 * tools/abicompat.cc (perform_compat_check_in_weak_mode): Remove 29135 disgracious vertical spaces in the wording. 29136 * tests/data/test-abicompat/test5-fn-changed-report-0.txt: Adjust. 29137 * tests/data/test-abicompat/test6-var-changed-report-0.txt: Adjust. 29138 291392015-07-20 Sinny Kumari <sinny@redhat.com> 29140 29141 Display --suppressions|--suppr option in help usage 29142 * tools/abipkgdiff.cc (display_usage): Print 29143 --suppressions|--suppr <path> option in help usage 29144 291452015-07-20 Dodji Seketeli <dodji@redhat.com> 29146 29147 Fix computing the set of exported functions and varible symbols 29148 * src/abg-ir.cc (elf_symbol::get_name_and_version_from_id): Always 29149 set the version and name of the symbol. 29150 * src/abg-corpus.cc 29151 (corpus::exported_decls_builder::{keep_wrt_id_of_fns_to_keep, 29152 keep_wrt_id_of_vars_to_keep}): Reset the symbol name *and* version 29153 before passing it. This is redundant with the fix in 29154 elf_symbol::get_name_and_version_from_id() that always set the 29155 symbol name and version now, but I felt it makes it easier to 29156 understand the fix overall. 29157 * tests/data/test-abicompat/libtest7-fn-changed-libapp-v{0,1}.so: 29158 New test input binaries. 29159 * tests/data/test-abicompat/test7-fn-changed-app: Likewise. 29160 * tests/data/test-abicompat/test7-fn-changed-{app, libapp-v0, 29161 libapp-v1}.c: Source code of the binary test inputs above. 29162 * * tests/data/test-abicompat/test7-fn-changed-{libapp-v0, 29163 libapp-v1}.h: Likewise. 29164 * tests/data/test-abicompat/test7-fn-changed-report-0.txt: Test 29165 input. 29166 * tests/data/Makefile.am: Add the new test material above to 29167 source distribution. 29168 * tests/test-abicompat.cc (int_out_specs): Add the test inputs 29169 above to the set of inputs this test harness has to run over. 29170 291712015-07-20 Dodji Seketeli <dodji@redhat.com> 29172 29173 Fix the wording of description of abipkgdiff.cc again 29174 * tools/abipkgdiff.cc: Fix the wording again. 29175 291762015-07-20 Dodji Seketeli <dodji@redhat.com> 29177 29178 Remove use of tmpnam from abilint 29179 * include/abg-tools-utils.h (abigail::tools_utils::temp_file): 29180 Declare new type. 29181 (abigail::tools_utils::temp_file_sptr): New typedef. 29182 * src/abg-tools-utils.cc (temp_file::priv): Define new type. 29183 (temp_file::{temp_file, is_good, get_path, get_stream, create}): 29184 Define new member functions. 29185 * tools/abilint.cc (main): Do not use tmpnam anymore. Use the new 29186 abigail::tools_utils::temp_file type instead. 29187 291882015-07-20 Dodji Seketeli <dodji@redhat.com> 29189 29190 Try to avoid a race condition when abipkgdiff extracts packages. 29191 * include/abg-tools-utils.h (get_random_number) 29192 (get_random_number_as_string): Declare new functions. 29193 * src/abg-tools-utils.cc (get_random_number) 29194 (get_random_number_as_string): Define them. 29195 * tools/abipkgdiff.cc 29196 (package::extracted_package_parent_dir_path): New data member. 29197 (package::package): Initialize 29198 package::extracted_package_parent_dir_path to 29199 <tmpdir>/<randomname>, with randomname being a random number 29200 represented as a string. 29201 (extract_rpm): Make sure to create a hierarchy of directories, not 29202 just a directory. 29203 292042015-07-19 Dodji Seketeli <dodji@redhat.com> 29205 29206 Fix the wording of the description of the abipkgdiff.cc file 29207 * tools/abipkgdiff.cc: Fix the wording of the description. 29208 292092015-07-19 Dodji Seketeli <dodji@redhat.com> 29210 29211 Fix the --suppressions manual doc for abidiff 29212 * doc/manuals/abidiff.rst: Talk about the --suppr shortcut of the 29213 --suppressions option. 29214 292152015-07-19 Dodji Seketeli <dodji@redhat.com> 29216 29217 On changed fn, show symbol info when name is different from linkage name in C 29218 * include/abg-ir.h (translation_unit::language): New enum type. 29219 (translation_unit::{get_language, set_language}): Declare new 29220 accessors. 29221 (translation_unit_language_to_string) 29222 (string_to_translation_unit_language, is_c_language) 29223 (is_cplus_plus_language): Declare new functions. 29224 * src/abg-ir.cc (translation_unit::priv::language_): New data 29225 member. 29226 (translation_unit::priv::language_): Initialize it. 29227 (translation_unit::{set_language, get_language}): Define new 29228 member functions. 29229 (translation_unit_language_to_string) 29230 (string_to_translation_unit_language, is_c_language) 29231 (is_cplus_plus_language): Define new functions. 29232 * src/abg-dwarf-reader.cc (dwarf_language_to_tu_language): New 29233 static function. 29234 (build_translation_unit_and_add_to_ir): Read the language of the 29235 translation unit. 29236 * src/abg-comparison.cc (corpus_diff::report): When reporting a 29237 change in a function sub-type, if we are in C language translation 29238 unit, if the function name is different from its linkage name, 29239 even if the symbol doesn't have any alias, show symbol 29240 information. 29241 * src/abg-reader.cc (read_translation_unit_from_input): Read the 29242 'language' property of the translation unit, if present. 29243 * src/abg-writer.cc (write_translation_unit): Write the 'language' 29244 property to the translation unit, if present. 29245 * tests/data/test-read-dwarf/test0.abi: Adjust for the new 29246 'language' property of the 'abi-instr' element. 29247 * tests/data/test-read-dwarf/test1.abi: Likewise. 29248 * tests/data/test-read-dwarf/test2.so.abi: Likewise. 29249 * tests/data/test-read-dwarf/test3.so.abi: Likewise. 29250 * tests/data/test-read-dwarf/test4.so.abi: Likewise. 29251 * tests/data/test-read-dwarf/test5.o.abi: Likewise. 29252 * tests/data/test-read-dwarf/test6.so.abi: Likewise. 29253 * tests/data/test-read-dwarf/test7.so.abi: Likewise. 29254 * tests/data/test-read-dwarf/test8-qualified-this-pointer.so.abi: 29255 Likewise. 29256 292572015-07-19 Dodji Seketeli <dodji@redhat.com> 29258 29259 Add --suppressions to abipkgdiff 29260 * tools/abipkgdiff.cc (options::suppressions): New data member. 29261 (set_diff_context_from_opts): Set the suppression specifications 29262 provided by the user to the diff context. 29263 (parse_command_line): Parse the --suppressions and --suppr command 29264 line options. 29265 * doc/manuals/abipkgdiff.rst: Document the --suppressions and 29266 --suppr options. 29267 292682015-07-18 Dodji Seketeli <dodji@redhat.com> 29269 29270 Support file_name_regexp and soname_regexp in supp-specs 29271 * include/abg-comparison.h (suppression_base::priv_): Make this 29272 pimpl member protected. 29273 (suppression_base::set_file_name_regex_str) 29274 (get_file_name_regex_str, get_soname_regex_str) 29275 (set_soname_regex_str): Declare new accessors. 29276 (function_suppression::{suppresses_function, 29277 suppresses_function_symbol}): Take a diff_context_sptr. 29278 (variable_suppression::{suppresses_variable, 29279 suppresses_variable_symbol}): Take a diff_context_sptr. 29280 * src/abg-comparison.cc 29281 (suppression_base::priv::{file_name_regex_str_, file_name_regex_, 29282 soname_regex_str_, soname_regex_}): Define new data members. 29283 (suppression_base::priv::get_file_name_regex_str) 29284 (get_soname_regex_str): Define new member functions. 29285 (suppression_base::set_file_name_regex_str) 29286 (get_file_name_regex_str, get_soname_regex_str) 29287 (set_soname_regex_str): Define new accessors. 29288 (type_suppression::suppresses_diff): Evaluate file_name_regexp and 29289 soname_regexp. 29290 (read_type_suppression): Fix the reading of the "label" property. 29291 Read the file_name_regexp and soname_regexp properties. 29292 (function_suppression::{suppresses_function, 29293 suppresses_function_symbol): Take a diff_context_sptr parameter. 29294 Evaluate file_name_regexp and soname_regexp properties. 29295 (function_suppression::suppresses_diff): Adjust for the api change 29296 of function_suppression::suppresses_function(). 29297 (read_function_suppression): Read the file_name_regexp and 29298 soname_regexp properties. 29299 (variable_suppression::suppresses_variable): Take a 29300 diff_context_sptr parameter and evaluate file_name_regexp and 29301 soname_regexp properties. 29302 (variable_suppression::suppresses_variable_symbol): Likewise. 29303 (variable_suppression::suppresses_diff): Adjust for the api change 29304 of variable_suppression::suppresses_variable(). 29305 (read_variable_suppression): Read the file_name_regexp and 29306 soname_regexp properties. 29307 (function_is_suppressed, variable_is_suppressed): Take a 29308 diff_context_sptr parameter. 29309 (corpus_diff::priv::apply_suppressions_to_added_removed_fns_vars): 29310 Adjust. 29311 * doc/manuals/libabigail-concepts.rst: Document file_name_regexp 29312 and soname_regexp in the manual. 29313 * tests/data/test-diff-suppr/libtest24-soname-v{0,1}.so: New test 29314 binary input files. 29315 * tests/data/test-diff-suppr/test24-soname-report-{0,4}.txt: New 29316 test input files. 29317 * tests/data/test-diff-suppr/test24-soname-suppr-{0,4}.txt: 29318 Likewise. 29319 * tests/data/test-diff-suppr/test24-soname-v{0,1}.cc: Source code 29320 of the binary test input files above. 29321 * tests/data/Makefile.am: Add the new test material above to 29322 source distribution. 29323 * tests/test-diff-suppr.cc (in_out_spec): Add the new test inputs 29324 to the set of tests this harness has to run over. 29325 293262015-07-18 Dodji Seketeli <dodji@redhat.com> 29327 29328 Fix possible crash in suppression evaluation 29329 * src/abg-comparison.cc (type_suppression::suppresses_diff): When 29330 evaluating the reach_kind property, do not crash on diff nodes 29331 that are pointer_diff or reference_diff to something else but a 29332 type diff. 29333 293342015-07-17 Dodji Seketeli <dodji@redhat.com> 29335 29336 Fix '--' being rendered as '-' in html manuals 29337 * doc/manuals/abicompat.rst: Quote options as verbatim. 29338 * doc/manuals/abidiff.rst: Likewise. 29339 * doc/manuals/abidw.rst: Likewise. 29340 * doc/manuals/abilint.rst: Likewise. 29341 * doc/manuals/abipkgdiff.rst: Likewise. 29342 293432015-07-17 Dodji Seketeli <dodji@redhat.com> 29344 29345 Fix the --verbose option 29346 * tools/abipkgdiff.cc (compare): In the elf_file overload, do not 29347 emit an error message when a binary could not be analyzed unless 29348 --verbose was provided. 29349 293502015-07-16 Dodji Seketeli <dodji@redhat.com> 29351 29352 Cleanup the output for added/removed binaries 29353 * tools/abipkgdiff.cc (compare): In the overload for packages, 29354 indent the content of the "Removed binaries" and "Added binaries" 29355 paragraphs. 29356 293572015-07-16 Dodji Seketeli <dodji@redhat.com> 29358 29359 Avoid redundant diff report messages by default. 29360 * tools/abipkgdiff.cc (options::show_redundant_changes): New data 29361 member. 29362 (options::options): Initialize it. 29363 (display_usage): Add a help string for the --redundant command 29364 Line option. 29365 (set_diff_context_from_opts): New static function. 29366 (compare): Take the options variable. Set the diff context from 29367 the options, especially if we should show redundant changes or 29368 not. Use that diff context when comparing ABIs. 29369 (parse_command_line): Parse the new --redundant command line 29370 switch. 29371 * doc/manuals/abipkgdiff.rst: Document the new --redundant option. 29372 293732015-07-16 Dodji Seketeli <dodji@redhat.com> 29374 29375 Support comparing only shared libraries 29376 * tools/abipkgdiff.cc (options::compare_dso_only): New data 29377 member. 29378 (options::options): Initialize it. 29379 (display_usage): Display a little help string for it. 29380 (create_maps_of_package_content): Take the option variable. Do 29381 not compare non-dso files if the --dso-only option was provided. 29382 (extract_package_and_map_its_content, prepare_packages, compare): 29383 Take the option variable. 29384 (parse_command_line): Parse the new --dso-only option. 29385 * doc/manuals/abipkgdiff.rst: Add documentation for the new 29386 --dso-only option. 29387 293882015-07-15 Dodji Seketeli <dodji@redhat.com> 29389 29390 Comment functions and types of abipkgdiff 29391 * src/abg-dwarf-reader.cc (get_soname_of_elf_file): Better wording 29392 of the apidoc of this function. 29393 * tools/abipkgdiff.cc (verbose, elf_file_paths): Add apidoc for 29394 these global variables. 29395 (struct options, ): Add apidoc for these types. 29396 (options::{erase_extraction_directory, 29397 erase_extraction_directories}, display_usage, extract_rpm) 29398 (erase_created_temporary_directories, extract_package) 29399 (file_tree_walker_callback_fn, compare) 29400 (create_maps_of_package_content) 29401 (extract_package_and_map_its_content, prepare_packages, compare) 29402 (parse_command_line): Add apidoc for these functions. 29403 294042015-07-16 Sinny Kumari <sinny@redhat.com> 29405 29406 Add regression tests for abipkgdiff tool 29407 * tests/Makefile.am: Build new runtestdiffpkg regression test 29408 * tests/data/Makefile.am: Add new test files to source 29409 * tests/data/test-diff-pkg/dbus-glib-0.104-3.fc23.x86_64.rpm: 29410 Test data for abipkgdiff tool 29411 * tests/data/test-diff-pkg/dbus-glib-0.80-3.fc12.x86_64.rpm: Likewise 29412 * tests/data/test-diff-pkg/dbus-glib-debuginfo-0.104-3.fc23.x86_64.rpm: 29413 Likewise 29414 * tests/data/test-diff-pkg/dbus-glib-debuginfo-0.80-3.fc12.x86_64.rpm: 29415 Likewise 29416 * tests/data/test-diff-pkg/test-rpm-report-0.txt: Expected test output 29417 * tests/data/test-diff-pkg/test-rpm-report-1.txt: Likewise 29418 * tests/data/test-diff-pkg/test-rpm-report-2.txt: Likewise 29419 * tests/data/test-diff-pkg/test-rpm-report-3.txt: Likewise 29420 * tests/data/test-diff-pkg/test-rpm-report-4.txt: Likewise 29421 * tests/test-diff-pkg.cc: New file 29422 294232015-07-15 Dodji Seketeli <dodji@redhat.com> 29424 29425 Add a manual for abipkgidiff 29426 * doc/manuals/abipkgdiff.rst: New manual file. 29427 * doc/manuals/libabigail-tools.rst: Refer to the manual for 29428 abipkgdiff. 29429 * doc/manuals/Makefile.am: Add the new manual file to source 29430 distribution. 29431 * doc/manuals/conf.py: Add the manual for abipkgdiff to section 1. 29432 294332015-07-15 Dodji Seketeli <dodji@redhat.com> 29434 29435 Comment functions and types of abipkgdiff 29436 * src/abg-dwarf-reader.cc (get_soname_of_elf_file): Better wording 29437 of the apidoc of this function. 29438 * tools/abipkgdiff.cc (verbose, elf_file_paths): Add apidoc for 29439 these global variables. 29440 (struct options, ): Add apidoc for these types. 29441 (options::{erase_extraction_directory, 29442 erase_extraction_directories}, display_usage, extract_rpm) 29443 (erase_created_temporary_directories, extract_package) 29444 (file_tree_walker_callback_fn, compare) 29445 (create_maps_of_package_content) 29446 (extract_package_and_map_its_content, prepare_packages, compare) 29447 (parse_command_line): Add apidoc for these functions. 29448 294492015-07-15 Dodji Seketeli <dodji@redhat.com> 29450 29451 Various style fixes 29452 * abipkgdiff.cc (get_soname_of_elf_file): Fix spacing. 29453 * tools/abipkgdiff.cc (elf_file_paths): Make this global variable 29454 static. 29455 (extract_rpm): Rename parameter pkg_path name into package_path. 29456 294572015-07-15 Dodji Seketeli <dodji@redhat.com> 29458 29459 Remove the last direct fiddling with ELF from abipkgdiff.cc 29460 * abg-dwarf-reader.h (enum elf_type): Move this declaration here 29461 from abipkgdiff.cc to here. 29462 (get_type_of_elf_file): Declare this new function. 29463 (get_soname_from_elf): Change this to take a path to the elf file 29464 rather than a Elf* handler. So now to use this, the user doesn't 29465 have to get her hand dirty with elfutils. 29466 * src/abg-dwarf-reader.cc (get_soname_from_elf): Change this to 29467 take a path to the elf file rather than a Elf* handler. 29468 (elf_file_type): Move this static function here, from 29469 abipkgdiff.cc. 29470 (get_type_of_elf_file): New function. This has been factorized 29471 out of create_maps_of_package_content() in abipkgdiff.cc. 29472 * tools/abipkgdiff.cc (class elf_file): Changed struct elf_file 29473 into this. Make the default constructor private. 29474 (elf_file::elf_file): Change the constructor to just take the path 29475 to the elf_file. The base name, soname and elf file type are now 29476 computed from the path file, in the constructor. This makes 29477 instantiation much much easier from the point of view of the user 29478 of the type. 29479 (struct abi_diff): Renamed struct abi_changes into this. 29480 (abi_diff::has_changes): Define new member function. 29481 (abi_diffs): Remove this global variable. 29482 (package::package): Remove the elf file type from the set of 29483 parameters of this constructor. Rather, compute that elf file 29484 type from the path to the elf file, in the constructor. Again, 29485 this eases the use of the type. 29486 (elf_file_type): Remove this from here, as it got moved to 29487 abg-dwarf-reader.cc. 29488 (compare): In the elf_file overload, return true if the comparison 29489 yields ABI changes. 29490 (create_maps_of_package_content): Do not fiddle with elfutils 29491 stuff here. Rather, just instantiate elf_file and the analyzing 29492 of the file magically happens. 29493 (compare): Make the package overload take an abi_diff as output 29494 parameter, rather than populating a global variable in return. 29495 (compare): Add an other overload for package that doesn't take the 29496 abi_diff as output parameter and write it in terms of the previous 29497 one. 29498 (main): Adjust as the instantiation of package is now simpler. 29499 295002015-07-08 Dodji Seketeli <dodji@redhat.com> 29501 29502 Add a --verbose option to abipkgdiff 29503 * tools/abipkgdiff.cc (verbose): Add a new global variable. 29504 (package::erase_extraction_directory, extract_rpm, compare) 29505 (create_maps_of_package_content): Emit verbose information. 29506 (parse_command_line): Parse the --verbose option. 29507 295082015-07-08 Dodji Seketeli <dodji@redhat.com> 29509 29510 Use the library to implement ABI comparison in abipkgdiff 29511 * tools/abipkgdiff.cc (compare): In the overload for elf_file, use 29512 abigail::comparison::compute_diff() to compare the ABI of two 29513 corpora. The corpora themselves is read using 29514 abigail::dwarf_reader::read_corpus_from_elf(). This cleans up the 29515 output of the tool because nothing is emitted to standard output 29516 if the two ABI corpora compares equal. 29517 295182015-07-08 Dodji Seketeli <dodji@redhat.com> 29519 29520 Fix several string passing issues in abipkgdiff.cc 29521 * tools/abipkgdiff.cc (elf_file::elf_file): Pass the strings by 29522 reference. Also, change the order of the parameters; all the 29523 strings are passed first, then the elf_type is passed last. 29524 (package::package): Likewise, pass the strings by reference, not 29525 by value. 29526 (create_maps_of_package_content): Adjust for the change in 29527 parameters order of elf_file::elf_file. 29528 295292015-07-08 Dodji Seketeli <dodji@redhat.com> 29530 29531 Only try to compare DSOs or executable binaries in abipkgdiff 29532 * tools/abipkgdiff.cc (compare): In the overload for packages, 29533 only compare binaries that are DSO or executable. 29534 295352015-07-08 Dodji Seketeli <dodji@redhat.com> 29536 29537 Avoid flushing the output stream in abipkgdiff.cc 29538 * tools/abipkgdiff.cc (extract_package) 29539 (create_maps_of_package_content, compare, main): Avoid flushing 29540 the output stream arbitrarily. 29541 295422015-07-08 Sinny Kumari <sinny@redhat.com> 29543 29544 Move get_soname() function to abg-dwarf-reader.h/cc 29545 * include/abg-dwarf-reader.h (get_soname_from_elf): Declare 29546 new function 29547 * src/abg-dwarf-reader.cc (get_soname_from_elf): Define new 29548 function 29549 * tools/abipkgdiff.cc (get_soname): Remove function 29550 (pkg_diff): Call get_soname_from_elf() instead of get_soname() 29551 295522015-07-07 Dodji Seketeli <dodji@redhat.com> 29553 29554 Important organizational changes in abipkgdiff.cc 29555 * Avoid using shortened names when the line is not too long. 29556 * Use shared_ptr when possible. 29557 * When a function parameter is not meant to be nil, do not pass it 29558 as a pointer; rather, pass it as a reference. 29559 * Avoid doing things that can "fail" in a destructor; e.g, spawning 29560 a process. Also, it's not common practise to cleanup a resource in a 29561 type destructor, when that resource has not been created in one of the 29562 member functions of the type. It eases maintenance when resource 29563 creation and cleanup is performed at the same logical level. 29564 * tools/abipkgdiff.cc (option::package{1,2}): Rename 29565 option::pkg{1,2} into this, to increase legibility. 29566 (option::debug_package{1,2}): Likewise, rename 29567 option::debug_pkg{1,2} into this. 29568 (elf_file::~elf_file): Do not "delete this" in a destructor. This 29569 leads to double free. It's when someone invokes the "delete" 29570 operator on a pointer to the object that the destructor of the 29571 object is executed automatically; so if in the destructor the 29572 delete operator is called again, bad things are going to happen. 29573 As the destructor is now empty, remove it altogether. 29574 (elf_file_sptr): New typedef for shared_ptr<elf_file>. 29575 (package::path): Rename package::pkg_path into this, for better 29576 legibility. 29577 (package::extracted_package_dir_path): Rename 29578 package::extracted_pkg_dir_path into this. 29579 (package::type): Rename package::pkg_type into this. 29580 (package::is_debug_info): Rename package::is_debuginfo_pkg into 29581 this. 29582 (package::path_elf_file_sptr_map): Rename 29583 package::dir_elf_files_map into this because this is a map of 29584 path -> elf_file_sptr. Also, now the value of the map element is 29585 a elf_file_sptr, no more an elf_file*. 29586 (package::debug_info_package): Rename package::debuginfo_pkg into 29587 this. 29588 (package::package): Adjust for the changes above. 29589 (package::{erase_extraction_directory, 29590 erase_extraction_directories}): New member functions. 29591 (elf_file_paths): Renamed dir_elf_files_path into this. 29592 (erase_created_temporary_directories) 29593 (create_maps_of_package_content) 29594 (extract_package_and_map_its_content, prepare_packages): New 29595 static functions. 29596 (get_soname, elf_file_type, extract_rpm): Make this static. 29597 (extract_package): Take a const package& rather than a 29598 package_sptr to express that the function really expects a non-nil 29599 object by reference (not by copy) and that the object won't be 29600 modified. Using a reference removes the possibility that the 29601 pointer could be nil, causing crashes in the code where 29602 parameter->something was used. Now only parameter.something can 29603 be used, so no crash possible there. This is more solid code. 29604 (file_tree_walker_callback_fn): Rename callback() into this. It 29605 makes the code more legible and kind of 'self-documented'. At 29606 least you get the hint that this is a callback function for some 29607 file tree walking (ftw) function. Adjust for the relevant names 29608 renaming above. 29609 (compare): Rename compute_abidiff into this; again, this increases 29610 legibility; at least at the point of use of this function. Rename 29611 compare_package() into a an overload of compare() as well. 29612 compare_package() used to take a vector of packages. It was hard 29613 to guess by reading the signature of the function, which element 29614 of the vector is expected to be the first vector of the 29615 comparison, which one is to be the second, etc. Now, this 29616 function takes two packages, named first_package and 29617 second_package. That is more "typed"; that is, the signature is 29618 more meaningful. Greater legibility, hopefully. And in the body 29619 of the function, the debug information packages are now accessed 29620 using the package::debug_info_package data member. Again, this is 29621 less surprising, I believe. Also, explicitly erase the temporary 29622 files that were created during this comparison. All this 29623 simplifies the logic of this function, hopefully. 29624 (parse_command_line): Make this static. Add new --d1 and --d2 29625 command line switches that are shortcuts of --debug-info-pkg1 and 29626 --debug-info-pkg2. Adjust this function for the relevant name 29627 changes above. Make lines be shorter than 80 characters. 29628 (main): Do not create any vector of parameters anymore as the 29629 compare_packages() function don't take any vector of parameter 29630 anymore. Just instantiate first_package and second_package now. 29631 Adjust for the relevant name changes above. This hopefully 29632 simplifies the logic of this function. 29633 296342015-07-06 Dodji Seketeli <dodji@redhat.com> 29635 29636 Wording fixes in abipkgdiff.cc 29637 * tools/abipkgdiff.cc (extract_package): Renamed extract_pkg into 29638 this because shortening 'package' into 'pkg' provides no 29639 legibility improvement. 29640 (compare_packages): Renamed pkg_diff() into this, so that the name 29641 of the function starts with a verb, and the shortened 'pkg' word 29642 is renamed back to the 'package' word. This way, the code almost 29643 reads like normal English sentences with verbs and complement, 29644 thus enhancing legibility and easing latter maintenance. 29645 (main): Adjust for the changes above. 29646 296472015-07-06 Dodji Seketeli <dodji@redhat.com> 29648 29649 Re-indent tools/abipkgdiff.cc 29650 * tools/abipkgdiff.cc: Re-indent the file properly and fix some 29651 white spacing here and there. 29652 296532015-07-06 Dodji Seketeli <dodji@redhat.com> 29654 29655 Some slight typo and wording fixes in abipkgdiff 29656 * tools/abipkgdiff.cc (display_usage): Fixed the typo in 29657 'bi-pacakge.' Also, refer to 'package', not to 'bi-package' that 29658 is surprising to the user at first. 29659 (compute_abidiff): Shorten the size of the introductory line. 29660 296612015-07-03 Dodji Seketeli <dodji@redhat.com> 29662 29663 Remove names of unused variables in callback() 29664 * tools/abipkgdiff.cc (callback): Remove the name of parameters st 29665 and flag. 29666 296672015-07-03 Dodji Seketeli <dodji@redhat.com> 29668 29669 Remove useless const from the declaration of extract_rpm() 29670 * tools/abipkgdiff.cc (extract_rpm): Remove useless const qualifier. 29671 296722015-07-03 Dodji Seketeli <dodji@redhat.com> 29673 29674 End all branches of get_soname() finish with a return statement 29675 * tools/abipkgdiff.cc (get_soname): Have just one return statement 29676 at the end of this function. 29677 296782015-07-03 Dodji Seketeli <dodji@redhat.com> 29679 29680 Fix abipkgdiff compilation issues 29681 * tools/abipkgdiff.cc (elf_file::elf_file): Initialize data member 29682 in the same order as they were declared. 29683 (package::package): Likewise. 29684 296852015-06-19 Sinny Kumari <sinny@redhat.com> 29686 29687 Exclude processing symlink, display removed/added binaries between two packages 29688 * tools/abipkgdiff.cc (abi_changes): Declare new struct 29689 (callback): Exclude symbloic link file for durther processing 29690 (compute_abidiff): Consider SONAME if exists as key in map instead 29691 of binary name, else binary as key. Also, print if removed/added 29692 binaries exist between packages 29693 296942015-06-09 Sinny Kumari <sinny@redhat.com> 29695 29696 Stdout ABI changes if same binary found in both package 29697 * tools/abipkgdiff.cc (compute_abidiff): New function 29698 tools/abipkgdiff.cc (pkg_diff): Iterate through list of binaries 29699 in both package directory and call compute_diff function if 29700 same binary found in both file. 29701 tools/abipkgdiff.cc (main): Also consider debug-info directories 29702 avilable in debu-info packages. 29703 297042015-06-02 Sinny Kumari <sinny@redhat.com> 29705 29706 Save ELF files, their type and SONAME if exist for extracted packages 29707 * tools/abipkgdiff.cc (elf_type): Declare new enum 29708 (elf_file): Declare new struct 29709 (package): Add member variable dir_elf_files_map 29710 (get_soname): Define new function 29711 (elf_file_type): Define new function 29712 (extract_rpm): Iterate over extracted directory files 29713 and filter ELF binary files along with their information 29714 like name, soname, elf_type and save in dir_elf_files_map 29715 297162015-05-26 Sinny Kumari <sinny@redhat.com> 29717 29718 Extract packages(RPMs) into temporary directories for further processing 29719 * tools/abipkgdiff.cc (struct package): Declare new struct 29720 (package_sptr): Declare shared_ptr for struct package 29721 (extract_rpm): Define new fuction to extract rpm package 29722 (extract_pkg): Define new function to extract pacakge 29723 (pkg_diff): Define new function to get ABI diff between 29724 two packages 29725 (main): Create new object of type pacakge for each binary 29726 and debuginfo pacakge passed in commandline options 29727 297282015-05-21 Sinny Kumari <sinny@redhat.com> 29729 29730 Guess RPM file type 29731 * include/abg-tools-utils.h (file_type): Added member 29732 FILE_TYPE_RPM and FILE_TYPE_SRPM 29733 (operator<<): New function declaration. 29734 * src/abg-tools-utils.cc (file_type): Detect RPM and 29735 SRPM file type 29736 (operator<<): New function definition 29737 * tools/abidiff.cc (main): Check for RPM and SRPM 29738 file type as well. 29739 * tools/abilint.cci (main): Check for RPM and SRPM file 29740 type as well. 29741 * tools/abipkgdiff.cc (main): Check whether input files 29742 to abipkgdiff are valid RPM files or not. 29743 297442015-05-19 Sinny Kumari <sinny@redhat.com> 29745 29746 Initial skeleton of abipkgdiff tool 29747 * tools/Makefile.am: Include abipkgdiff.cc in compilation and 29748 generate abipkgdiff binary. 29749 * tools/abipkgdiff.cc: New file 29750 297512015-07-16 Dodji Seketeli <dodji@redhat.com> 29752 29753 Support reading binaries that do not have a symbol table 29754 * src/abg-dwarf-reader.cc 29755 (read_context::find_symbol_table_section): Allow returning a nil 29756 pointer to symbol table. 29757 (read_context::lookup_elf_symbol_from_index): Return an empty elf 29758 symbol if we got a nil pointer to symbol table. 29759 (read_context::load_symbol_maps): If no symbol table is found then 29760 consider that the symbol maps loading failed. 29761 297622015-07-16 Dodji Seketeli <dodji@redhat.com> 29763 29764 Remove extra vertical spaces from diff report 29765 * src/abg-comparison.cc (class_diff::report): Do not emit new line 29766 unless the diff is to be reported. 29767 * tests/data/test-diff-filter/test25-cyclic-type-report-0.txt: Adjust. 29768 * tests/data/test-diff-filter/test26-qualified-redundant-node-report-0.txt: Adjust. 29769 * tests/data/test-diff-filter/test27-redundant-and-filtered-children-nodes-report-1.txt: 29770 : Adjust. 29771 297722015-07-09 Dodji Seketeli <dodji@redhat.com> 29773 29774 Allow null types in type comparison again 29775 * src/abg-comparison.cc (compute_diff): In the overload of 29776 type_base_sptr accept nil types. 29777 297782015-07-08 Dodji Seketeli <dodji@redhat.com> 29779 29780 Handle the life time of the map of canonical types 29781 * include/abg-ir.h (type_base::canonical_types_map_type): Move 29782 this typedef into abg-ir.cc and out of the type_base namespace. 29783 (type_base::get_canonical_types_map): Likewise. 29784 * src/abg-ir.cc (canonical_types_map_type): New typedef that got 29785 moved here from type_base::canonical_types_map_type. 29786 (get_canonical_types_map): Likewise got moved here from 29787 type_base::get_canonical_types_map. Made static in the process. 29788 (class usage_watchdog): New type. 29789 (usage_watchdog_sptr, usage_watchdog_wptr): New typedefs. 29790 (get_usage_watchdog, get_usage_watchdog_wptr, ref_usage_watchdog) 29791 (maybe_cleanup_type_system_data): New static functions. 29792 (translation_unit::priv::usage_watchdog_): Add new data member. 29793 (translation_unit::priv::priv): Get a reference on the usage 29794 watchdog. 29795 (translation_unit::priv::~priv): If the usage watchdog says that 29796 the type system is not used, then cleanup the global data 29797 logically owned by the type system. 29798 * include/abg-dwarf-reader.h (read_corpus_from_elf): Make this 29799 return a corpus and set the status by reference using a parameter. 29800 * src/abg-dwarf-reader.cc (read_corpus_from_elf): Implement the 29801 above. 29802 * include/abg-reader.h (read_translation_unit_from_file) 29803 (read_translation_unit_from_buffer) 29804 (read_translation_unit_from_istream): Remove the overloads that do 29805 not return a translation_unit_sptr and that pass it as a 29806 parameter. Only keep the overloads that return a 29807 translation_unit_sptr, forcing users of the API to own a proper 29808 reference on the resulting translation_unit pointer. That is 29809 important to handle the life time of the global data of the type 29810 system that need to be cleared when the last translation unit is 29811 de-allocated. 29812 * src/abg-reader.cc (read_translation_unit_from_input): Make this 29813 return a translation_unit_sptr. 29814 (read_translation_unit_from_file) 29815 (read_translation_unit_from_buffer) 29816 (read_translation_unit_from_istream): Remove the overloads that do 29817 not return a translation_unit_sptr and that pass it as a 29818 parameter. Only keep the overloads that return a 29819 translation_unit_sptr. 29820 (read_to_translation_unit): Make this return a 29821 translation_unit_sptr. 29822 * tests/print-diff-tree.cc (main): Adjust. 29823 * tests/test-diff-dwarf.cc (main): Likewise. 29824 * tests/test-ir-walker.cc (main): Likewise. 29825 * tests/test-read-dwarf.cc (main): Likewise. 29826 * tests/test-read-write.cc (main): Likewise. 29827 * tools/abicompat.cc (main): Likewise. 29828 * tools/abidiff.cc (main): Likewise. 29829 * tools/abidw.cc (main): Likewise. 29830 * tools/abilint.cc (main): Likewise. 29831 298322015-07-08 Dodji Seketeli <dodji@redhat.com> 29833 29834 Add --d{1,2} shortcut options for --debug-info-dir{1,2} in abidiff 29835 * tools/abidiff.cc (display_usage): Add the --d{1,2} to the help 29836 strings. 29837 (parse_command_line): Parse the new --d1 and --d2 options. 29838 298392015-07-08 Dodji Seketeli <dodji@redhat.com> 29840 29841 Factorize incompatible and subtype changes detection 29842 * include/abg-comparison.h (corpus_diff::{has_incompatible_changes, 29843 has_net_subtype_changes}): Declare new member functions. 29844 * src/abg-comparison.cc (corpus_diff::{has_incompatible_changes, 29845 has_net_subtype_changes}): Define them. 29846 * abidiff.cc (main): Use the new member functions above. 29847 298482015-07-09 Dodji Seketeli <dodji@redhat.com> 29849 29850 Adjust some tests for output changes 29851 * tests/data/test-abidiff/test-struct1-report.txt: Adjust. 29852 * tests/data/test-diff-dwarf/test10-report.txt: Likewise. 29853 * tests/data/test-diff-dwarf/test11-report.txt: Likewise. 29854 * tests/data/test-diff-dwarf/test13-report.txt: Likewise. 29855 * tests/data/test-diff-filter/test2-report.txt: Likewise. 29856 * tests/data/test-diff-filter/test26-qualified-redundant-node-report-0.txt: Likewise. 29857 * tests/data/test-diff-filter/test26-qualified-redundant-node-report-1.txt: Likewise. 29858 * tests/data/test-diff-filter/test27-redundant-and-filtered-children-nodes-report-1.txt: Likewise. 29859 * tests/data/test-diff-filter/test27-redundant-and-filtered-children-nodes-report-2.txt: Likewise. 29860 298612015-07-06 Dodji Seketeli <dodji@redhat.com> 29862 29863 Fix missing newlines in diff report 29864 * src/abg-comparison.cc (class_diff::report): The overload of 29865 represent() for instances of var_decl does not emit new lines. So 29866 the caller must ensure a new line is emitted. 29867 298682015-07-02 Dodji Seketeli <dodji@redhat.com> 29869 29870 Support filtering out just one alias of a function 29871 * include/abg-comparison.h (function_suppression::{get, 29872 set}_allow_other_aliases): Declare new member functions. 29873 * src/abg-comparison.cc 29874 (function_suppression::priv::allow_other_aliases_): New data 29875 member. 29876 (function_suppression::priv::priv): Initialize it to 'true'. 29877 (function_suppression::{get, set}_allow_other_aliases): Define new 29878 member functions. 29879 (read_function_suppression): Parse the new "allow_other_aliases" 29880 property. 29881 (function_suppression::suppresses_function): Update to evaluate 29882 the new 'allow_other_aliases' property when there is a property to 29883 match against some a symbol name of the function. 29884 (corpus_diff::report): Fix the printing of function aliases when 29885 printing sub-type changes to properly emit the plural of the word 29886 'symbol' when the function has several aliases. 29887 * include/abg-ir.h (elf_symbol::get_number_of_aliases): Declare 29888 new member function. 29889 * src/abg-ir.cc (elf_symbol::get_number_of_aliases): Define new 29890 member function. 29891 * doc/manuals/libabigail-concepts.rst: Update manual. 29892 * tests/data/test-diff-dwarf/test5-report.txt: Adjust. 29893 * tests/data/test-diff-suppr/libtest23-alias-filter-v0.so: New 29894 test input. 29895 * tests/data/test-diff-suppr/libtest23-alias-filter-v1.so: Likewise. 29896 * tests/data/test-diff-suppr/test23-alias-filter-0.suppr: Likewise. 29897 * tests/data/test-diff-suppr/test23-alias-filter-1.suppr: Likewise. 29898 * tests/data/test-diff-suppr/test23-alias-filter-2.suppr: Likewise. 29899 * tests/data/test-diff-suppr/test23-alias-filter-3.suppr: Likewise. 29900 * tests/data/test-diff-suppr/test23-alias-filter-4.suppr: Likewise. 29901 * tests/data/test-diff-suppr/test23-alias-filter-report-0.txt: Likewise. 29902 * tests/data/test-diff-suppr/test23-alias-filter-report-1.txt: Likewise. 29903 * tests/data/test-diff-suppr/test23-alias-filter-report-2.txt: Likewise. 29904 * tests/data/test-diff-suppr/test23-alias-filter-report-3.txt: Likewise. 29905 * tests/data/test-diff-suppr/test23-alias-filter-report-4.txt: Likewise. 29906 * tests/data/test-diff-suppr/test23-alias-filter-report-5.txt: Likewise. 29907 * tests/data/test-diff-suppr/test23-alias-filter-v0.c: Likewise. 29908 * tests/data/test-diff-suppr/test23-alias-filter-v1.c: Likewise. 29909 * tests/data/test-diff-suppr/test23-alias-filter-version-script: Likewise. 29910 * tests/data/Makefile.am: Add the new test stuff to source 29911 distribution. 29912 * tests/test-diff-suppr.cc (in_out_spec): Add the tests inputs 29913 above to the list of input to run over. 29914 299152015-07-01 Dodji Seketeli <dodji@redhat.com> 29916 29917 Complete apidoc 29918 * src/abg-ir.cc (elf_symbol::get_aliases_id_string): Finish the 29919 incomplete apidoc for this member function. 29920 299212015-07-01 Dodji Seketeli <dodji@redhat.com> 29922 29923 Show aliases of functions with changed sub-types 29924 * include/abg-ir.h (elf_symbol::get_aliases_id_string): Declare 29925 new overload. 29926 * src/abg-ir.cc (elf_symbol::get_aliases_id_string): Define new 29927 overload. 29928 * src/abg-comparison.cc (corpus_diff::report): For functions with 29929 sub-type changes report their aliases. Do not do this if the 29930 function is a constructor or destructor because these almost 29931 always have aliases, at least with GCC and the developer most 29932 certainly has not done anything special for that; she would thus 29933 be uselessly surprised by that remote implementation detail. 29934 * tests/data/test-diff-dwarf/test5-report.txt: Adjust test. 29935 299362015-06-25 Dodji Seketeli <dodji@redhat.com> 29937 29938 Update ChangeLog file 29939 * ChangeLog: Update automatically using 'make update-changelog'. 29940 299412015-06-23 Dodji Seketeli <dodji@redhat.com> 29942 29943 Misc typo fixes 29944 * src/abg-comparison.cc 29945 (corpus_diff::priv::{deleted, added}n_variable_is_suppressed): Fix 29946 a typo. 29947 * tests/data/test-diff-dwarf/test16-syms-only-v0.cc: Fix a typo in 29948 the comments. 29949 * tests/data/test-diff-dwarf/test16-syms-only-v1.cc: Likewise. 29950 299512015-06-22 Dodji Seketeli <dodji@redhat.com> 29952 29953 Apply suppression specifications to added and removed functions and variables 29954 * include/abg-comparison.h (is_type_suppression) 29955 (is_function_suppression): Declare new functions. 29956 ({function, variable}_suppression::change_kind): Declare new enum. 29957 (function_suppression::{parse_change_kind, get_change_kind, 29958 set_change_kind, suppresses_function, 29959 suppresses_function_symbol}): Declare new member functions. 29960 (variable_suppression::{parse_change_kind, get_change_kind, 29961 set_change_kind, suppresses_variable, suppresses_variable, 29962 suppresses_variable_symbol}): Declare new member functions. 29963 (operator{&,|}): Declare new operators for 29964 function_suppression::change_kind and 29965 variable_suppression::change_kind enums. 29966 (corpus_diff::diff_stats::{num_removed_func_filtered_out, 29967 net_num_func_removed, num_added_func_filtered_out, 29968 net_num_func_added, num_removed_vars_filtered_out, 29969 net_num_vars_removed, num_added_vars_filtered_out, 29970 net_num_vars_added, num_removed_func_syms_filtered_out, 29971 num_added_func_syms_filtered_out, net_num_removed_func_syms, 29972 net_num_added_func_syms, num_added_var_syms_filtered_out, 29973 num_removed_vars_filtered_out, net_num_removed_var_syms, 29974 net_num_added_var_syms}): Declare new member functions. 29975 (corpus_diff::diff_stats::num_changed_vars_filtered_out): Renamed 29976 corpus_diff::diff_stats::num_vars_filtered_out into this. 29977 (corpus_diff::diff_stats::num_changed_func_filtered_out): Renamed 29978 corpus_diff::diff_stats::num_func_filtered_out into this. 29979 * src/abg-comparison.cc (is_type_suppression) 29980 (is_function_suppression): Define new 29981 function. 29982 (function_suppression::priv::change_kind): New data member. 29983 (function_suppression::priv): Initialize it. 29984 (function_suppression::{parse_change_kind, get_change_kind, 29985 set_change_kind, suppresses_function, 29986 suppresses_function_symbol}): Define new member functions. 29987 (operator{&,|}): Define new operators for the new 29988 function_suppression::change_kind enum. 29989 (function_suppression::suppresses_diff): Re-write this in terms of 29990 the new function_suppression::suppresses_function() function. 29991 (read_function_suppression): Support reading the new "change_kind" 29992 property. 29993 (variable_suppression::priv::change_kind_): New data member. 29994 (variable_suppression::priv::priv): Initialize it. 29995 (variable_suppression::{parse_change_kind, get_change_kind, 29996 set_change_kind, suppresses_variable, 29997 suppresses_variable_symbol}): Define new member functions. 29998 (is_variable_suppression): Define new function. 29999 (operator{&,|}): Define new operators for 30000 variable_suppression::change_kind enum. 30001 (variable_suppression::suppresses_diff): Re-write in terms of the 30002 new variable_suppression::suppresses_variable function. 30003 (read_variable_suppression): Support reading the new "change_kind" 30004 property. 30005 (corpus_diff::diff_stats::priv::{num_removed_func_filtered_out, 30006 num_added_func_filtered_out, num_removed_vars_filtered_out, 30007 num_added_vars_filtered_out, num_removed_func_syms_filtered_out, 30008 num_added_func_syms_filtered_out, 30009 num_removed_var_syms_filtered_out, 30010 num_added_var_syms_filtered_out}): New data members. 30011 (corpus_diff::diff_stats::priv::num_changed_func_filtered_out): 30012 Renamed the data member num_func_filtered_out into this. 30013 (corpus_diff::diff_stats::priv::num_changed_vars_filtered_out): 30014 Renamed data member num_vars_filtered_out into this. 30015 (corpus_diff::diff_stats::priv::priv): Initialize the new data 30016 members. 30017 (corpus_diff::diff_stats::{num_removed_func_filtered_out, 30018 num_removed_func_filtered_out, net_num_func_removed, 30019 net_num_func_added, num_added_func_filtered_out, 30020 net_num_func_added, num_removed_vars_filtered_out, 30021 num_removed_vars_filtered_out, net_num_vars_removed, 30022 num_added_vars_filtered_out, net_num_vars_added, 30023 num_removed_func_syms_filtered_out, 30024 num_added_func_syms_filtered_out, net_num_removed_func_syms, 30025 net_num_added_func_syms, num_added_var_syms_filtered_out, 30026 num_removed_vars_filtered_out, net_num_removed_var_syms, 30027 net_num_added_var_syms}): Define new member functions. 30028 (corpus_diff::diff_stats::num_changed_func_filtered_out): Renamed 30029 corpus_diff::diff_stats::num_func_filtered_out into this. 30030 (corpus_diff::diff_stats::num_changed_vars_filtered_out): Renamed 30031 corpus_diff::diff_stats::num_vars_filtered_out into this. 30032 (corpus_diff::diff_stats::{net_num_func_changed, 30033 net_num_vars_changed}): Adjust. 30034 (corpus_diff::priv::{suppressed_deleted_fns_, 30035 suppressed_added_fns_, suppressed_deleted_vars_, 30036 suppressed_added_vars_, suppressed_added_unrefed_fn_syms_, 30037 suppressed_deleted_unrefed_fn_syms_, 30038 suppressed_added_unrefed_var_syms_, 30039 suppressed_deleted_unrefed_fn_syms_}): New data members. 30040 (corpus_diff::priv::{apply_suppressions_to_added_removed_fns_vars, 30041 deleted_function_is_suppressed, added_function_is_suppressed, 30042 deleted_variable_is_suppressed, added_variable_is_suppressed, 30043 added_unrefed_fn_sym_is_suppressed, 30044 deleted_unrefed_fn_sym_is_suppressed, 30045 added_unrefed_var_sym_is_suppressed, 30046 deleted_unrefed_var_sym_is_suppressed}): Define member functions. 30047 (function_is_suppressed, variable_is_suppressed): Define new 30048 functions. 30049 (corpus_diff::priv::apply_filters_and_compute_diff_stats): Compute 30050 stats for filtered added or removed functions, variables and their 30051 symbols. 30052 (corpus_diff::priv::emit_diff_stats): Emit diff stats for filtered 30053 added or removed functions, variables and symbols. 30054 (corpus_diff::report): Support suppressed reports about added or 30055 removed functions, variables and symbols. Fixed a typo that was 30056 in there for a while. Note that that fix requires updating some 30057 regression tests, and the part of this patch that touches 30058 regression tests does that. 30059 (apply_suppressions): In the overload for corpus_diff, apply the 30060 suppression to added or removed functions and variables. 30061 * doc/manuals/libabigail-concepts.rst: Update this manual to 30062 reflect the changes above. Also, perform an extensive cleanup of 30063 the manual to introduce more section titles to make it easier to 30064 navigate the document using the table of content. 30065 * tests/data/test-abicompat/test2-var-removed-report-0.txt: 30066 Adjust. 30067 * tests/data/test-diff-dwarf/test0-report.txt: Likewise. 30068 * tests/data/test-diff-dwarf/test12-report.txt: Likewise. 30069 * tests/data/test-diff-dwarf/test18-alias-sym-report-0.txt: 30070 Likewise. 30071 * tests/data/test-diff-dwarf/test19-soname-report-0.txt: Likewise. 30072 * tests/data/test-diff-dwarf/test7-report.txt: Likewise. 30073 * tests/data/test-diff-dwarf/test8-report.txt: Likewise. 30074 * tests/data/test-diff-dwarf/test9-report.txt: Likewise. 30075 * tests/data/test-diff-dwarf/test16-syms-only-report.txt: Likewise. 30076 * tests/data/test-diff-dwarf/test17-non-refed-syms-report-0.txt: 30077 Likewise. 30078 * tests/data/test-diff-dwarf/test28-vtable-changes-report-0.txt: 30079 Likewise. 30080 * tests/data/test-diff-filter/test0-report.txt: Likewise. 30081 * tests/data/test-diff-filter/test01-report.txt: Likewise. 30082 * tests/data/test-diff-filter/test13-report.txt: Likewise. 30083 * test-diff-suppr/test15-suppr-added-fn-v0.o: Add new test 30084 material. 30085 * tests/data/test-diff-filter/test15-0-report.txt: Likewise. 30086 * tests/data/test-diff-filter/test2-report.txt: Likewise. 30087 * tests/data/test-diff-filter/test21-compatible-vars-report-0.txt: 30088 Likewise. 30089 * tests/data/test-diff-filter/test24-compatible-vars-report-1.txt: 30090 Likewise. 30091 * test-diff-suppr/test15-suppr-added-fn-v1.o: Likewise. 30092 * test-diff-suppr/test15-suppr-added-fn-0.suppr: Likewise. 30093 * test-diff-suppr/test15-suppr-added-fn-1.suppr: Likewise. 30094 * test-diff-suppr/test15-suppr-added-fn-2.suppr: Likewise. 30095 * test-diff-suppr/test15-suppr-added-fn-3.suppr: Likewise. 30096 * test-diff-suppr/test15-suppr-added-fn-4.suppr: Likewise. 30097 * test-diff-suppr/test15-suppr-added-fn-report-0.txt: Likewise. 30098 * test-diff-suppr/test15-suppr-added-fn-report-1.txt: Likewise. 30099 * test-diff-suppr/test15-suppr-added-fn-report-2.txt: Likewise. 30100 * test-diff-suppr/test15-suppr-added-fn-report-3.txt: Likewise. 30101 * test-diff-suppr/test15-suppr-added-fn-report-4.txt: Likewise. 30102 * test-diff-suppr/test15-suppr-added-fn-report-5.txt: Likewise. 30103 * test-diff-suppr/test15-suppr-added-fn-v0.cc: Likewise. 30104 * test-diff-suppr/test15-suppr-added-fn-v1.cc: Likewise. 30105 * test-diff-suppr/test16-suppr-removed-fn-v0.o: Likewise. 30106 * test-diff-suppr/test16-suppr-removed-fn-v1.o: Likewise. 30107 * test-diff-suppr/test16-suppr-removed-fn-0.suppr: Likewise. 30108 * test-diff-suppr/test16-suppr-removed-fn-1.suppr: Likewise. 30109 * test-diff-suppr/test16-suppr-removed-fn-2.suppr: Likewise. 30110 * test-diff-suppr/test16-suppr-removed-fn-3.suppr: Likewise. 30111 * test-diff-suppr/test16-suppr-removed-fn-4.suppr: Likewise. 30112 * test-diff-suppr/test16-suppr-removed-fn-report-0.txt: Likewise. 30113 * test-diff-suppr/test16-suppr-removed-fn-report-1.txt: Likewise. 30114 * test-diff-suppr/test16-suppr-removed-fn-report-2.txt: Likewise. 30115 * test-diff-suppr/test16-suppr-removed-fn-report-3.txt: Likewise. 30116 * test-diff-suppr/test16-suppr-removed-fn-report-4.txt: Likewise. 30117 * test-diff-suppr/test16-suppr-removed-fn-report-5.txt: Likewise. 30118 * test-diff-suppr/test16-suppr-removed-fn-v0.cc: Likewise. 30119 * test-diff-suppr/test16-suppr-removed-fn-v1.cc: Likewise. 30120 * test-diff-suppr/test17-suppr-added-var-v0.o: Likewise. 30121 * test-diff-suppr/test17-suppr-added-var-v1.o: Likewise. 30122 * test-diff-suppr/test17-suppr-added-var-0.suppr: Likewise. 30123 * test-diff-suppr/test17-suppr-added-var-1.suppr: Likewise. 30124 * test-diff-suppr/test17-suppr-added-var-2.suppr: Likewise. 30125 * test-diff-suppr/test17-suppr-added-var-3.suppr: Likewise. 30126 * test-diff-suppr/test17-suppr-added-var-4.suppr: Likewise. 30127 * test-diff-suppr/test17-suppr-added-var-report-0.txt: Likewise. 30128 * test-diff-suppr/test17-suppr-added-var-report-1.txt: Likewise. 30129 * test-diff-suppr/test17-suppr-added-var-report-2.txt: Likewise. 30130 * test-diff-suppr/test17-suppr-added-var-report-3.txt: Likewise. 30131 * test-diff-suppr/test17-suppr-added-var-report-4.txt: Likewise. 30132 * test-diff-suppr/test17-suppr-added-var-report-5.txt: Likewise. 30133 * test-diff-suppr/test17-suppr-added-var-v0.cc: Likewise. 30134 * test-diff-suppr/test17-suppr-added-var-v1.cc: Likewise. 30135 * test-diff-suppr/test18-suppr-removed-var-v0.o: Likewise. 30136 * test-diff-suppr/test18-suppr-removed-var-v1.o: Likewise. 30137 * test-diff-suppr/test18-suppr-removed-var-0.suppr: Likewise. 30138 * test-diff-suppr/test18-suppr-removed-var-1.suppr: Likewise. 30139 * test-diff-suppr/test18-suppr-removed-var-2.suppr: Likewise. 30140 * test-diff-suppr/test18-suppr-removed-var-3.suppr: Likewise. 30141 * test-diff-suppr/test18-suppr-removed-var-4.suppr: Likewise. 30142 * test-diff-suppr/test18-suppr-removed-var-report-0.txt: Likewise. 30143 * test-diff-suppr/test18-suppr-removed-var-report-1.txt: Likewise. 30144 * test-diff-suppr/test18-suppr-removed-var-report-2.txt: Likewise. 30145 * test-diff-suppr/test18-suppr-removed-var-report-3.txt: Likewise. 30146 * test-diff-suppr/test18-suppr-removed-var-report-4.txt: Likewise. 30147 * test-diff-suppr/test18-suppr-removed-var-report-5.txt: Likewise. 30148 * test-diff-suppr/test18-suppr-removed-var-v0.cc: Likewise. 30149 * test-diff-suppr/test18-suppr-removed-var-v1.cc: Likewise. 30150 * tests/data/test-diff-suppr/test19-suppr-added-fn-sym-v0.o: New 30151 test input. 30152 * tests/data/test-diff-suppr/test19-suppr-added-fn-sym-v1.o: 30153 Likewise. 30154 * tests/data/test-diff-suppr/test19-suppr-added-fn-sym-0.suppr: 30155 Likewise. 30156 * tests/data/test-diff-suppr/test19-suppr-added-fn-sym-1.suppr: 30157 Likewise. 30158 * tests/data/test-diff-suppr/test19-suppr-added-fn-sym-2.suppr: 30159 Likewise. 30160 * tests/data/test-diff-suppr/test19-suppr-added-fn-sym-3.suppr: 30161 Likewise. 30162 * tests/data/test-diff-suppr/test19-suppr-added-fn-sym-4.suppr: 30163 Likewise. 30164 * tests/data/test-diff-suppr/test19-suppr-added-fn-sym-report-0.txt: 30165 Likewise. 30166 * tests/data/test-diff-suppr/test19-suppr-added-fn-sym-report-1.txt: 30167 Likewise. 30168 * tests/data/test-diff-suppr/test19-suppr-added-fn-sym-report-2.txt: 30169 Likewise. 30170 * tests/data/test-diff-suppr/test19-suppr-added-fn-sym-report-3.txt: 30171 Likewise. 30172 * tests/data/test-diff-suppr/test19-suppr-added-fn-sym-report-4.txt: 30173 Likewise. 30174 * tests/data/test-diff-suppr/test19-suppr-added-fn-sym-report-5.txt: 30175 Likewise. 30176 * tests/data/test-diff-suppr/test19-suppr-added-fn-sym-v0.cc: 30177 Likewise. 30178 * tests/data/test-diff-suppr/test19-suppr-added-fn-sym-v1.cc: 30179 Likewise. 30180 * tests/data/test-diff-suppr/test20-suppr-removed-fn-sym-v0.o: 30181 Likewise. 30182 * tests/data/test-diff-suppr/test20-suppr-removed-fn-sym-v1.o: 30183 Likewise. 30184 * tests/data/test-diff-suppr/test20-suppr-removed-fn-sym-0.suppr: 30185 Likewise. 30186 * tests/data/test-diff-suppr/test20-suppr-removed-fn-sym-1.suppr: 30187 Likewise. 30188 * tests/data/test-diff-suppr/test20-suppr-removed-fn-sym-2.suppr: 30189 Likewise. 30190 * tests/data/test-diff-suppr/test20-suppr-removed-fn-sym-3.suppr: 30191 Likewise. 30192 * tests/data/test-diff-suppr/test20-suppr-removed-fn-sym-4.suppr: 30193 Likewise. 30194 * tests/data/test-diff-suppr/test20-suppr-removed-fn-sym-report-0.txt: 30195 Likewise. 30196 * tests/data/test-diff-suppr/test20-suppr-removed-fn-sym-report-1.txt: 30197 Likewise. 30198 * tests/data/test-diff-suppr/test20-suppr-removed-fn-sym-report-2.txt: 30199 Likewise. 30200 * tests/data/test-diff-suppr/test20-suppr-removed-fn-sym-report-3.txt: 30201 Likewise. 30202 * tests/data/test-diff-suppr/test20-suppr-removed-fn-sym-report-4.txt: 30203 Likewise. 30204 * tests/data/test-diff-suppr/test20-suppr-removed-fn-sym-report-5.txt: 30205 Likewise. 30206 * tests/data/test-diff-suppr/test20-suppr-removed-fn-sym-v0.cc: 30207 Likewise. 30208 * tests/data/test-diff-suppr/test20-suppr-removed-fn-sym-v1.cc: 30209 Likewise. 30210 * tests/data/test-diff-suppr/test21-suppr-added-var-sym-v0.o: 30211 Likewise. 30212 * tests/data/test-diff-suppr/test21-suppr-added-var-sym-v1.o: 30213 Likewise. 30214 * tests/data/test-diff-suppr/test21-suppr-added-var-sym-0.suppr: 30215 Likewise. 30216 * tests/data/test-diff-suppr/test21-suppr-added-var-sym-1.suppr: 30217 Likewise. 30218 * tests/data/test-diff-suppr/test21-suppr-added-var-sym-2.suppr: 30219 Likewise. 30220 * tests/data/test-diff-suppr/test21-suppr-added-var-sym-3.suppr: 30221 Likewise. 30222 * tests/data/test-diff-suppr/test21-suppr-added-var-sym-4.suppr: 30223 Likewise. 30224 * tests/data/test-diff-suppr/test21-suppr-added-var-sym-report-0.txt: 30225 Likewise. 30226 * tests/data/test-diff-suppr/test21-suppr-added-var-sym-report-1.txt: 30227 Likewise. 30228 * tests/data/test-diff-suppr/test21-suppr-added-var-sym-report-2.txt: 30229 Likewise. 30230 * tests/data/test-diff-suppr/test21-suppr-added-var-sym-report-3.txt: 30231 Likewise. 30232 * tests/data/test-diff-suppr/test21-suppr-added-var-sym-report-4.txt: 30233 Likewise. 30234 * tests/data/test-diff-suppr/test21-suppr-added-var-sym-report-5.txt: 30235 Likewise. 30236 * tests/data/test-diff-suppr/test21-suppr-added-var-sym-v0.cc: 30237 Likewise. 30238 * tests/data/test-diff-suppr/test21-suppr-added-var-sym-v1.cc: 30239 Likewise. 30240 * tests/data/test-diff-suppr/test22-suppr-removed-var-sym-v0.o: 30241 Likewise. 30242 * tests/data/test-diff-suppr/test22-suppr-removed-var-sym-v1.o: 30243 Likewise. 30244 * tests/data/test-diff-suppr/test22-suppr-removed-var-sym-0.suppr: 30245 Likewise. 30246 * tests/data/test-diff-suppr/test22-suppr-removed-var-sym-1.suppr: 30247 Likewise. 30248 * tests/data/test-diff-suppr/test22-suppr-removed-var-sym-2.suppr: 30249 Likewise. 30250 * tests/data/test-diff-suppr/test22-suppr-removed-var-sym-3.suppr: 30251 Likewise. 30252 * tests/data/test-diff-suppr/test22-suppr-removed-var-sym-4.suppr: 30253 Likewise. 30254 * tests/data/test-diff-suppr/test22-suppr-removed-var-sym-report-0.txt: 30255 Likewise. 30256 * tests/data/test-diff-suppr/test22-suppr-removed-var-sym-report-1.txt: 30257 Likewise. 30258 * tests/data/test-diff-suppr/test22-suppr-removed-var-sym-report-2.txt: 30259 Likewise. 30260 * tests/data/test-diff-suppr/test22-suppr-removed-var-sym-report-3.txt: 30261 Likewise. 30262 * tests/data/test-diff-suppr/test22-suppr-removed-var-sym-report-4.txt: 30263 Likewise. 30264 * tests/data/test-diff-suppr/test22-suppr-removed-var-sym-report-5.txt: 30265 Likewise. 30266 * tests/data/test-diff-suppr/test22-suppr-removed-var-sym-v0.cc: 30267 Likewise. 30268 * tests/data/test-diff-suppr/test22-suppr-removed-var-sym-v1.cc: 30269 Likewise. 30270 * tests/data/Makefile.am: Add the new test materials above to source 30271 distribution. 30272 * tests/test-diff-suppr.cc (in_out_specs): Add the new tests 30273 material above to the list of test inputs this harness has to run 30274 over. 30275 302762015-06-22 Dodji Seketeli <dodji@redhat.com> 30277 30278 Do not compare static data members when comparing types 30279 * include/abg-ir.h (class_decl::get_non_static_data_members): 30280 Declare new data members. 30281 * src/abg-comparison.cc 30282 (class_diff::ensure_lookup_tables_populated): Only look at 30283 non-static data members. 30284 (compute_diff): In the overload for class_decl, only compare 30285 non-static data members. 30286 * src/abg-hash.cc (class_decl::hash::operator()): Do not hash 30287 static data members members hashing a class_decl. 30288 * src/abg-ir.cc (class_decl::priv::data_members_): New data 30289 member. 30290 (class_decl::priv::priv): When initializing data members, store 30291 the non-static data members on the side, in the new 30292 class_decl::priv::non_static_data_members_ data member. 30293 (class_decl::get_non_static_data_members): Define member function. 30294 (class_decl::add_data_member): Store the non-static data members 30295 on the side in class_decl::priv::non_static_data_members_. 30296 (equals): In the overload for class_decl, do not take in account 30297 static data members when running the comparison. 30298 * tests/data/test-diff-dwarf/test7-report.txt: Adjust. 30299 * tests/data/test-diff-filter/test12-report.txt: Adjust. 30300 303012015-06-23 Dodji Seketeli <dodji@redhat.com> 30302 30303 Add a --suppr short alias to the --suppressions option of abidiff 30304 * tools/abidiff.cc (display_usage): Add a help string for the new 30305 --suppr option. 30306 (parse_command_line): Support the --suppr option which is an alias 30307 for --suppressions. 30308 303092015-06-23 Dodji Seketeli <dodji@redhat.com> 30310 30311 Enable large file support 30312 * configure.ac: Call the AC_SYS_LARGEFILE autoconf macro. 30313 * config.h.in: Update. 30314 303152015-06-23 Dodji Seketeli <dodji@redhat.com> 30316 30317 Do not build zip archive support by default 30318 * configure.ac: By default, unconditionally disable the 30319 zip-archive support. 30320 303212015-06-23 Dodji Seketeli <dodji@redhat.com> 30322 30323 Put the man pages of the binaries in section 1 30324 * doc/manuals/Makefile.am(section1_manpages, section7_manpages): 30325 Two new variables to contain the man page names per section. 30326 (manpages): Set this variable to $section1_manpages and $section7_manpages. 30327 (install-man-and-info-doc): In this rule, create the destination 30328 directories for section 1 and 7 and copy the right man pages in 30329 their right directory. 30330 * doc/manuals/conf.py (man_pages): Generate the binary man pages 30331 into section 1 and the libabigail man page into section 7. 30332 303332015-06-23 Dodji Seketeli <dodji@redhat.com> 30334 30335 Sort deleted/added variables and symbols before emitting report 30336 * src/abg-comparison.cc (sort_string_var_ptr_map) 30337 (sort_string_elf_symbol_map): Define new static functions. 30338 (var_comp, elf_symbol_comp): Define new comparison functors. 30339 (corpus_diff::report): Sort the deleted variables, added 30340 variables, deleted function symbols, added function symbols, 30341 deleted variable symbols, and added variable symbols before 30342 walking them to emit reports. 30343 303442015-06-23 Dodji Seketeli <dodji@redhat.com> 30345 30346 Remove useless white space 30347 * src/abg-comparison.cc (sort_string_parm_map): Remove trailing 30348 white space from comment. 30349 303502015-06-23 Dodji Seketeli <dodji@redhat.com> 30351 30352 Bug 18580 - abidw ignores --out-file 30353 * tools/abidw.cc (main): Take the argument of --out-file into 30354 account when emitting the serialized form of the ABI. 30355 303562015-06-23 Dodji Seketeli <dodji@redhat.com> 30357 30358 Fix a thinko in the comparison code 30359 * src/abg-comparison.cc 30360 (class_diff::ensure_lookup_tables_populated): Ensure that when a 30361 member function is wrongly considered as being added, then either 30362 the new member function doesn't have a symbol name (linkage name) 30363 or it has one, and it was already present in the first version of 30364 the binary. 30365 # Veuillez saisir le message de validation pour vos 30366 modifications. Les lignes # commençant par '#' seront ignorées, et 30367 un message vide abandonne la validation. # Sur la branche 30368 fix-master # Votre branche est à jour avec 'origin/master'. # # 30369 Modifications qui seront validées : # modified: 30370 src/abg-comparison.cc # # Modifications qui ne seront pas validées 30371 : # modified: tools/abidw.cc # # Fichiers non suivis: # abidw.abi 30372 # build/ # depcomp # missing # patch-edited.txt # patch.txt # 30373 prtests/ # test-driver # # ------------------------ >8 30374 ------------------------ # Ne touchez pas à la ligne ci-dessus # 30375 Tout se qui suit sera éliminé. 30376 diff --git a/src/abg-comparison.cc b/src/abg-comparison.cc 30377 index 14208f5..ef7c6c9 100644 30378 --- a/src/abg-comparison.cc 30379 +++ b/src/abg-comparison.cc 30380 @@ -7419,8 +7419,8 @@ class_diff::ensure_lookup_tables_populated(void) const 30381 inserted_member_fns().begin(); 30382 i != inserted_member_fns().end(); 30383 ++i) 30384 - if (i->second->get_symbol() 30385 - && f->lookup_function_symbol(i->second->get_symbol()->get_name(), 30386 + if (!i->second->get_symbol() 30387 + || f->lookup_function_symbol(i->second->get_symbol()->get_name(), 30388 i->second->get_symbol()->get_version().str())) 30389 to_delete.push_back(i->first); 30390 303912015-06-07 Dodji Seketeli <dodji@redhat.com> 30392 30393 Build libabigail tests with position-independent code 30394 * tests/Makefile.am: Add -fPIC to the compile flags. 30395 303962015-06-07 Dodji Seketeli <dodji@redhat.com> 30397 30398 Build libabigail tools as position-independent code 30399 * tools/Makefile.am: Compile the binaries here with -fPIC. Note 30400 that the library libabigail.la is built with libtool which already 30401 takes care of this, so no need to worry about this for 30402 libabigail.la. 30403 304042015-06-07 Dodji Seketeli <dodji@redhat.com> 30405 30406 Update ChangeLog file 30407 * ChangeLog: Update this automatically by typing make 30408 update-changelog. 30409 304102015-06-07 Dodji Seketeli <dodji@redhat.com> 30411 30412 Avoid infinite loop in elf_symbol::get_alias_from_name() 30413 * src/abg-ir.cc (elf_symbol::get_alias_from_name) 30414 (elf_symbol::get_alias_which_equals): Test for the next alias 30415 pointing to the main symbol, in the loop exit condition. 30416 304172015-06-04 Dodji Seketeli <dodji@redhat.com> 30418 30419 Change the linkage name only when necessary 30420 * include/abg-ir.h (elf_symbol::get_alias_from_name): Declare new 30421 member function. 30422 * src/abg-ir.cc (elf_symbol::get_alias_from_name): Define it. 30423 * src/abg-dwarf-reader.cc (build_var_decl, build_function_decl): 30424 Once the linkage name is supposed to contain the value of the 30425 DW_AT_linkage_name attribute, set it the name of the underlying 30426 symbol only if value of DW_At_linkage_name is missing or different 30427 from the names of all the aliases of the underlying symbol. 30428 * tests/data/test-read-dwarf/test2.so.abi: Adjust. 30429 304302015-06-04 Dodji Seketeli <dodji@redhat.com> 30431 30432 Various white space cleanups 30433 * include/abg-comparison.h: Remove various useless vertical white 30434 spaces. 30435 * tests/test-diff-dwarf.cc (in_out_spec): Fix indentation of some 30436 entries. 30437 304382015-06-04 Dodji Seketeli <dodji@redhat.com> 30439 30440 Fix various comments here and there 30441 * src/abg-comparison.cc 30442 (diff_context::set_or_get_canonical_diff_for, compute_diff) 30443 (redundancy_marking_visitor::visit_begin): Fix comment in these 30444 functions. 30445 * src/abg-ir.cc (elf_symbol::is_variable): Likewise. 30446 304472015-06-04 Dodji Seketeli <dodji@redhat.com> 30448 30449 Add missing apidoc to elf_symbol type 30450 * src/abg-ir.cc (elf_symbol::{elf_symbol, get_name, set_name, 30451 get_type, set_type, get_binding, set_binding, get_version, 30452 is_defined, is_public, is_function, is_variable}): Add missing 30453 apidoc to these member functions. 30454 304552015-06-04 Dodji Seketeli <dodji@redhat.com> 30456 30457 Cleanup logic in class_diff::ensure_lookup_tables_populated() 30458 * src/abg-comparison.cc 30459 (class_diff::ensure_lookup_tables_populated): Remove the code that 30460 tries to lookup allegedly added functions from the set of deleted 30461 ones, by using the pretty printed name of the function. Handling 30462 the case of a function decl not correctly tied to it symbol is 30463 handled my generically a bit later in this function. 30464 304652015-06-04 Dodji Seketeli <dodji@redhat.com> 30466 30467 Report possible changes in the set of aliases of a symbol. 30468 * src/abg-comparison.cc (function_decl_diff::report): Report 30469 a change in the aliases of the symbols of a function; note that 30470 everything else but have stayed equal in the function. 30471 304722015-06-04 Dodji Seketeli <dodji@redhat.com> 30473 30474 Report vtable changes in top-level function change reports 30475 * src/abg-comparison.cc (function_decl_diff::report): Report about 30476 virtual-ness and vtable offset changes. 30477 * tests/data/test-diff-dwarf/test28-vtable-changes-report-0.txt: 30478 New test input file. 30479 * tests/data/test-diff-dwarf/test28-vtable-changes-v{0,1}.o: New 30480 test input binaries. 30481 * tests/data/test-diff-dwarf/test28-vtable-changes-v{0,1}.cc: 30482 Source code of the input binaries above. 30483 * tests/data/Makefile.am: Add the new test input above to source 30484 distribution. 30485 * tests/test-diff-dwarf.cc (in_out_specs): Add the new test input 30486 above to the list of input this test harness has to run over. 30487 304882015-06-03 Dodji Seketeli <dodji@redhat.com> 30489 30490 Support new 'accessed_through' suppression property 30491 * include/abg-comparison.h (enum type_suppression::reach_kind): 30492 Define new enum. 30493 (type_suppression::{get_consider_reach_kind, 30494 set_consider_reach_kind, get_reach_kind, 30495 mark_last_diff_visited_per_class_of_equivalence, 30496 clear_last_diffs_visited_per_class_of_equivalence, 30497 get_last_visited_diff_of_class_of_equivalence}): Declare new 30498 member functions. 30499 * src/abg-comparison.cc (diff_has_ancestor_filtered_out) 30500 (read_suppression_reach_kind): Define static function. 30501 (type_suppression::priv::{consider_reach_kind_, reach_kind_}): 30502 Define new data members. 30503 (type_suppression::priv::priv): Take a new reach_kind parameter. 30504 (type_suppression::type_suppression): Adjust to new prototype of 30505 priv constructor. 30506 (type_suppression::{get_consider_reach_kind, 30507 set_consider_reach_kind, get_reach_kind, set_reach_kind}): Define 30508 new member functions. 30509 (type_suppression::suppresses_diff): Interpret the result of 30510 type_suppression::get_reach_kind() to determine if the suppression 30511 specification suppresses a given diff node. 30512 (read_type_suppression): Support reading the content of the 30513 "accessed_through" property. 30514 (diff_context::priv::last_visited_diff_node_): New data member. 30515 (diff_context::{mark_last_diff_visited_per_class_of_equivalence, 30516 clear_last_diffs_visited_per_class_of_equivalence, 30517 get_last_visited_diff_of_class_of_equivalence}): Define new data 30518 members. 30519 (redundancy_marking_visitor::visit_begin): So if the current diff 30520 node has already been visited, but if the previously visited node 30521 has been filtered out, then do not mark this node as being 30522 redundant. And mark the current diff node as being the last 30523 visited one in its class of equivalence. 30524 (categorize_redundancy): Clear the map of diff nodes visited per 30525 class of equivalence. 30526 * doc/manuals/libabigail-concepts.rst: Document the new 30527 'accessed_through' property. 30528 * tests/data/test-diff-suppr/test13-suppr-through-pointer-0.suppr: 30529 New test input data. 30530 * tests/data/test-diff-suppr/test13-suppr-through-pointer-report-{0,1}.txt: 30531 Likewise. 30532 * tests/data/test-diff-suppr/libtest13-suppr-through-pointer-v{0,1}.so: 30533 New test input binaries. 30534 * tests/data/test-diff-suppr/test13-suppr-through-pointer-v{0,1}.cc: 30535 Source code of the test input binaries above. 30536 * tests/data/test-diff-suppr/test14-suppr-non-redundant-0.suppr: 30537 New test input data. 30538 * tests/data/test-diff-suppr/test14-suppr-non-redundant-report-0.txt: 30539 Likewise. 30540 * tests/data/test-diff-suppr/test14-suppr-non-redundant-v{0,1}.o: 30541 New test input binaries. 30542 * tests/data/test-diff-suppr/test14-suppr-non-redundant-v{0,1}.cc: 30543 Source code of the binaries above. 30544 305452015-06-03 Dodji Seketeli <dodji@redhat.com> 30546 30547 Fix redundancy marking for change of types used directly 30548 * include/abg-comparison.h (pointer_map): Make this be a map of 30549 {size_t, size_t} pairs, rather than {size_t, bool}, so that each 30550 pointer in the map can be associated to another one. 30551 (diff_context::diff_has_been_visited): Return the pointer to the 30552 first diff node of the equivalence class that has been visited. 30553 * src/abg-comparison.cc (is_pointer_diff, is_reference_diff) 30554 (is_reference_or_pointer_diff, is_fn_parm_diff, is_base_diff) 30555 (is_child_node_of_function_parm_diff, is_child_node_of_base_diff): 30556 Define new static functions. 30557 (diff_context::diff_has_been_visited): Return the pointer to the 30558 first diff node of the equivalence class that has been visited. 30559 (diff_context::mark_diff_as_visited): Save the pointer to the 30560 first diff node of a given class of equivalence that has been 30561 visited. 30562 (redundancy_marking_visitor::visit_begin): If a diff node is a 30563 child node of a function parameter diff or base diff node and if 30564 it's not a pointer or reference diff node, then do not mark it as 30565 redundant. Also, make sure to not mark the first diff node of a 30566 given class of equivalence that has been visited, as redundant; 30567 only the other subsequent nodes should be marked redundant; we 30568 were hitting this case because of an optimization that makes 30569 equivalent class diff nodes to share their private (pimpl) data. 30570 * tests/data/test-diff-filter/test29-finer-redundancy-marking-v{0,1}.o: 30571 New test input binaries. 30572 * tests/data/test-diff-filter/test29-finer-redundancy-marking-v{0,1}.cc: 30573 Source code of the new test input binaries above. 30574 * tests/data/test-diff-filter/test29-finer-redundancy-marking-report-0.txt: 30575 New test input. 30576 * tests/data/Makefile.am: Add the new test material above to the 30577 source distribution. 30578 * tests/test-diff-filter.cc (in_out_specs): Make this test harness 30579 run over the additional test input above. 30580 * tests/data/test-diff-suppr/test5-fn-suppr-report-0.txt: Adjust. 30581 305822015-06-02 Dodji Seketeli <dodji@redhat.com> 30583 30584 Fix detection of local changes in base classes 30585 * abg-ir.cc (equals): In the overload of class_decl::base_spec, if 30586 the underlying class carries changes, then do not flag these 30587 changes as local for the class_decl::base_spec. 30588 * tests/data/test-diff-dwarf/test27-local-base-diff-v{0,1}.o: New 30589 test input binaries. 30590 * tests/data/test-diff-dwarf/test27-local-base-diff-v{0,1}.cc: Source 30591 code for the test input binaries above. 30592 * tests/data/test-diff-dwarf/test27-local-base-diff-report.txt: 30593 New test input. 30594 * tests/data/Makefile.am: Add the test inputs above to source 30595 distribution. 30596 305972015-06-02 Dodji Seketeli <dodji@redhat.com> 30598 30599 Fix symbols comparison 30600 * include/abg-ir.h (elf_symbol_wptr): New typedef. 30601 (elf_symbol): Make the constructors and assignment operator 30602 private. The type can neither be copied nor created with the new 30603 operator. 30604 (elf_symbol::create): New static member function. 30605 (elf_symbol::{get_main_symbol, get_next_alias, add_alias}): 30606 Adjust. 30607 ( compute_aliases_for_elf_symbol): Likewise. 30608 (elf_symbol::operator=): Make this private. 30609 (elf_symbol::get_alias_which_equals): Declare new member function. 30610 * src/abg-comp-filter.cc (function_name_changed_but_not_symbol): 30611 Adjust. 30612 * src/abg-comparison.cc 30613 (class_diff::ensure_lookup_tables_populated): Adjust. 30614 * src/abg-corpus.cc 30615 (corpus::priv::build_unreferenced_symbols_tables): Likewise. 30616 * include/abg-dwarf-reader.h (lookup_symbol_from_elf) 30617 (lookup_public_function_symbol_from_elf): Adjust. 30618 * src/abg-dwarf-reader.cc (lookup_symbol_from_sysv_hash_tab) 30619 (lookup_symbol_from_gnu_hash_tab, lookup_symbol_from_elf_hash_tab) 30620 (lookup_symbol_from_symtab, lookup_symbol_from_elf) 30621 (lookup_public_function_symbol_from_elf) 30622 (lookup_public_variable_symbol_from_elf): Adjust. 30623 (read_context::lookup_elf_symbol_from_index): Likewise. 30624 (read_context::lookup_elf_fn_symbol_from_address): Likewise. 30625 (read_context::lookup_elf_var_symbol_from_address): Likewise. 30626 (read_context::lookup_public_function_symbol_from_elf): Likewise. 30627 (read_context::lookup_public_variable_symbol_from_elf): Likewise. 30628 (read_context::load_symbol_maps): Likewise. 30629 (build_var_decl, build_function_decl): Likewise. 30630 * src/abg-ir.cc (elf_symbol::priv::{main_symbol_, next_alias_}): 30631 Change the type of these from elf_symbol* to elf_symbol_wptr. 30632 (elf_symbol::priv::priv): Adjust. 30633 (elf_symbol::{create, get_alias_which_equals}): Define new functions. 30634 (textually_equals): Likewise. 30635 (elf_symbol::{get_main_symbol, is_main_symbol, get_next_alias, 30636 add_alias}): Adjust to return or take elf_symbol_sptr type, rather 30637 than a elf_symbol* one. 30638 (elf_symbol::{get_aliases_id_string, does_alias}): Adjust. 30639 (compute_alias_for_elf_symbol): Likewise. 30640 (elf_symbol::operator==): Two symbols A and B are now equal if A 30641 has at least one alias that is textually equal to B. 30642 (equals): In the overload for function_decls, in the part where we 30643 compare the decl_base part of the functions without considering 30644 their decl names, we now also omit considering their linkage 30645 names, because we compared they symbols before. 30646 * tools/abisym.cc (main): Adjust. 30647 * tests/data/test-diff-dwarf/test12-report.txt: Adjust. 30648 * tests/data/test-diff-dwarf/test12-report.txt: Adjust. 30649 * tests/data/test-diff-dwarf/test18-alias-sym-report-0.txt: Adjust. 30650 * tests/data/test-diff-dwarf/test8-report.txt: Adjust. 30651 * tests/data/test-diff-filter/test10-report.txt: Adjust. 30652 * tests/data/test-diff-filter/test13-report.txt: Adjust. 30653 * tests/data/test-diff-filter/test2-report.txt: Adjust. 30654 * tests/data/test-diff-filter/test20-inline-report-0.txt: Adjust. 30655 * tests/data/test-diff-filter/test20-inline-report-1.txt: Adjust. 30656 * tests/data/test-diff-filter/test9-report.txt: Adjust. 30657 306582015-04-22 Dodji Seketeli <dodji@redhat.com> 30659 30660 Support specifying data member insertion in suppressions 30661 * include/abg-comparison.h (type_suppression::insertion_range): 30662 Declare new type. 30663 (type_suppression::insertion_ranges): Declare new typedef. 30664 (type_suppression::{s,g}et_data_member_insertion_ranges): Declare 30665 new member functions. 30666 (is_integer_boundary, is_fn_call_expr_boundary): Declare new 30667 functions. 30668 (type_suppression::insertion_range::{boundary, integer_boundary, 30669 fn_call_expr_boundary}): Define new types. 30670 * src/abg-comparison.cc: 30671 (struct type_suppression::insertion_range::priv): New type. 30672 (type_suppression::insertion_range::{insertion_range, begin, 30673 end}): Define new member functions. 30674 (type_suppression::priv::insertion_ranges_): Add data member. 30675 (type_suppression::{s,g}et_data_member_insertion_ranges): Define 30676 new member functions. 30677 (type_suppression::insertion_range::boundary::priv): Define new 30678 type. 30679 (type_suppression::insertion_range::boundary::{boundary, 30680 ~boundary}): Define new member functions. 30681 (type_suppression::insertion_range::integer_boundary::priv): 30682 Define new type. 30683 (type_suppression::insertion_range::integer_boundary::{integer_boundary, 30684 as_integer, operator int, ~integer_boundary}): Define member 30685 functions. 30686 (type_suppression::insertion_range::fn_call_expr_boundary::priv): 30687 Define new type. 30688 (type_suppression::insertion_range::fn_call_expr_boundary::{fn_call_expr_boundary, 30689 as_function_call_expr, operator ini::function_call_expr_sptr}): 30690 Define new member functions. 30691 (type_suppression::insertion_range::{create_integer_boundary, 30692 type_suppression::insertion_range::create_fn_call_expr_boundary, 30693 type_suppression::insertion_range::eval_boundary}): Define new 30694 member functions. 30695 (is_integer_boundary, is_fn_call_expr_boundary): Define new 30696 functions. 30697 (read_type_suppression, read_function_suppression) 30698 (read_variable_suppression): Support the new kinds of 30699 property-related types. Aslo, in read_type_suppression, support 30700 the new properties has_data_member_inserted_at, 30701 has_data_member_inserted_between and 30702 has_data_members_inserted_between. 30703 (type_suppression::suppresses_diff): If we are looking at a type 30704 diff node that has inserted data members, evaluate the insertion 30705 ranges of the current type_suppression and see if they match the 30706 inserted data members. 30707 * include/abg-ini.h (property, simple_property, property_value) 30708 (string_property_value, tuple_property_value, function_call_expr): 30709 Declare new types. 30710 (property_sptr, property_value_sptr, string_property_value_sptr) 30711 (tuple_property_value_sptr): Declare new typedefs. 30712 (is_string_property_value, is_tuple_property_value) 30713 (is_simple_property, is_tuple_property, read_function_call_expr): 30714 Declare new functions. 30715 * src/abg-ini.cc (char_is_white_space, char_is_comment_start) 30716 (char_is_delimiter, char_is_property_value_char) 30717 (char_is_section_name_char, char_is_property_name_char) 30718 (char_is_comment_start, char_is_white_space) 30719 (remove_trailing_white_spaces, is_string_property_value) 30720 (is_tuple_property_value, is_simple_property, is_tuple_property) 30721 (write_property_value, char_is_function_name_char) 30722 (char_is_function_argument_char): Define new functions. 30723 (property::priv, tuple_property_value::priv) 30724 (simple_property::priv, tuple_property::priv): Define new types. 30725 (property::{property, get_name, set_name, ~property}): Define new 30726 member functions. 30727 (struct property_value::priv): Define new type. 30728 (property_value::{property_value, get_kind, operator const 30729 string&(), ~property_value}): Define new member functions. 30730 (struct string_property_value::priv): Define new type. 30731 (string_property_value::{string_property_value, set_content, 30732 as_string, operator string()}, ~string_property_value): Define new 30733 member functions. 30734 (tuple_property_value::{tuple_property_value, get_value_items, 30735 ~tuple_property_value, as_string}): Likewise. 30736 (simple_property::{simple_property, get_value, set_value, 30737 ~simple_property}): Likewise. 30738 (tuple_property::{tuple_property, set_value, get_value}): 30739 Likewise. 30740 (config::section::find_property): Adjust return type. 30741 (read_context::{char_is_delimiter, char_is_property_value_char, 30742 char_is_section_name_char, char_is_property_name_char, 30743 char_is_comment_start, char_is_white_space}): Remove these from 30744 here as they got moved them to be non-member functions above. 30745 (read_context::read_property_value): Return a property_value_sptr 30746 and do not take any parameter anymore. 30747 (read_context::{read_string_property_value, 30748 read_tuple_property_value, read_function_name, 30749 read_function_argument, read_function_call_expr}): Define new 30750 member functions. 30751 (read_context::read_property): Adjust return type. Also, change to read 30752 the different new kinds of properties values. 30753 (function_call_expr::priv): Define new type. 30754 (function_call_expr::{function_call_expr, get_name, 30755 get_arguments}): New member functions. 30756 (read_context::read_section): Adjust. 30757 (write_property, write_section): Adjust. 30758 * tests/data/test-diff-suppr/libtest{11,12}-add-data-member-v{0,1}.so: 30759 New test input binaries. 30760 * tests/data/test-diff-suppr/test{11,12}-add-data-member-{0,1}.suppr: 30761 New input suppression files. 30762 * tests/data/test-diff-suppr/test11-add-data-member-{2,3,4}.suppr: 30763 Add new test input files. 30764 * tests/data/test-diff-suppr/test{11,12}-add-data-member-report-{0,1}.txt: 30765 New reference output files. 30766 * tests/data/test-diff-suppr/test12-add-data-member-report-2.txt: 30767 Likewise. 30768 * tests/data/test-diff-suppr/test{11,12}-add-data-member-v{0,1}.cc: 30769 Source code for the new binaries above. 30770 * tests/test-diff-suppr.cc (in_out_specs): Add new test inputs. 30771 * tests/data/Makefile.am: Add the new test related files above to 30772 source distribution. 30773 * doc/manuals/libabigail-concepts.rst: Document the new properties 30774 has_data_member_inserted_at, has_data_member_inserted_between and 30775 has_data_members_inserted_between. 30776 307772015-05-24 Dodji Seketeli <dodji@redhat.com> 30778 30779 Make indexes of function parameters start at 1 30780 * src/abg-ir.cc (function_type::function_type): Starts the index 30781 of the parameters at 1, unless the firs parameter is an artificial 30782 one, in which case it starts at 0. 30783 * tests/data/test-abicompat/test5-fn-changed-report-0.txt: Adjust. 30784 * tests/data/test-diff-dwarf/test0-report.txt: Adjust. 30785 * tests/data/test-diff-dwarf/test1-report.txt: Adjust. 30786 * tests/data/test-diff-dwarf/test10-report.txt: Adjust. 30787 * tests/data/test-diff-dwarf/test11-report.txt: Adjust. 30788 * tests/data/test-diff-dwarf/test13-report.txt: Adjust. 30789 * tests/data/test-diff-dwarf/test15-enum-report.txt: Adjust. 30790 * tests/data/test-diff-dwarf/test2-report.txt: Adjust. 30791 * tests/data/test-diff-dwarf/test20-add-fn-parm-report-0.txt: Adjust. 30792 * tests/data/test-diff-dwarf/test21-redundant-fn-report-0.txt: Adjust. 30793 * tests/data/test-diff-dwarf/test22-changed-parm-c-report-0.txt: Adjust. 30794 * tests/data/test-diff-dwarf/test24-added-fn-parms-report-0.txt: Adjust. 30795 * tests/data/test-diff-dwarf/test25-removed-fn-parms-report-0.txt: Adjust. 30796 * tests/data/test-diff-dwarf/test26-added-parms-before-variadic-report.txt: Adjust. 30797 * tests/data/test-diff-dwarf/test4-report.txt: Adjust. 30798 * tests/data/test-diff-dwarf/test6-report.txt: Adjust. 30799 * tests/data/test-diff-dwarf/test7-report.txt: Adjust. 30800 * tests/data/test-diff-dwarf/test8-report.txt: Adjust. 30801 * tests/data/test-diff-filter/test0-report.txt: Adjust. 30802 * tests/data/test-diff-filter/test01-report.txt: Adjust. 30803 * tests/data/test-diff-filter/test1-report.txt: Adjust. 30804 * tests/data/test-diff-filter/test10-report.txt: Adjust. 30805 * tests/data/test-diff-filter/test13-report.txt: Adjust. 30806 * tests/data/test-diff-filter/test14-0-report.txt: Adjust. 30807 * tests/data/test-diff-filter/test14-1-report.txt: Adjust. 30808 * tests/data/test-diff-filter/test16-report-2.txt: Adjust. 30809 * tests/data/test-diff-filter/test16-report.txt: Adjust. 30810 * tests/data/test-diff-filter/test17-0-report.txt: Adjust. 30811 * tests/data/test-diff-filter/test17-1-report.txt: Adjust. 30812 * tests/data/test-diff-filter/test18-report.txt: Adjust. 30813 * tests/data/test-diff-filter/test19-enum-report-1.txt: Adjust. 30814 * tests/data/test-diff-filter/test2-report.txt: Adjust. 30815 * tests/data/test-diff-filter/test22-compatible-fns-report-0.txt: Adjust. 30816 * tests/data/test-diff-filter/test23-redundant-fn-parm-change-report-0.txt: Adjust. 30817 * tests/data/test-diff-filter/test25-cyclic-type-report-0.txt: Adjust. 30818 * tests/data/test-diff-filter/test25-cyclic-type-report-1.txt: Adjust. 30819 * tests/data/test-diff-filter/test26-qualified-redundant-node-report-0.txt: Adjust. 30820 * tests/data/test-diff-filter/test26-qualified-redundant-node-report-1.txt: Adjust. 30821 * tests/data/test-diff-filter/test27-redundant-and-filtered-children-nodes-report-1.txt: Adjust. 30822 * tests/data/test-diff-filter/test27-redundant-and-filtered-children-nodes-report-2.txt: Adjust. 30823 * tests/data/test-diff-filter/test28-redundant-and-filtered-children-nodes-report-0.txt: Adjust. 30824 * tests/data/test-diff-filter/test28-redundant-and-filtered-children-nodes-report-1.txt: Adjust. 30825 * tests/data/test-diff-filter/test3-report.txt: Adjust. 30826 * tests/data/test-diff-filter/test9-report.txt: Adjust. 30827 * tests/data/test-diff-suppr/test0-type-suppr-report-0.txt: Adjust. 30828 * tests/data/test-diff-suppr/test0-type-suppr-report-3.txt: Adjust. 30829 * tests/data/test-diff-suppr/test1-typedef-suppr-report-0.txt: Adjust. 30830 * tests/data/test-diff-suppr/test1-typedef-suppr-report-2.txt: Adjust. 30831 * tests/data/test-diff-suppr/test10-changed-parm-c-report-0.txt: Adjust. 30832 * tests/data/test-diff-suppr/test2-struct-suppr-report-0.txt: Adjust. 30833 * tests/data/test-diff-suppr/test3-struct-suppr-report-0.txt: Adjust. 30834 * tests/data/test-diff-suppr/test3-struct-suppr-report-1.txt: Adjust. 30835 * tests/data/test-diff-suppr/test3-struct-suppr-report-2.txt: Adjust. 30836 * tests/data/test-diff-suppr/test4-local-suppr-report-0.txt: Adjust. 30837 * tests/data/test-diff-suppr/test4-local-suppr-report-1.txt: Adjust. 30838 * tests/data/test-diff-suppr/test5-fn-suppr-report-0.txt: Adjust. 30839 * tests/data/test-diff-suppr/test5-fn-suppr-report-1.txt: Adjust. 30840 * tests/data/test-diff-suppr/test5-fn-suppr-report-2.txt: Adjust. 30841 * tests/data/test-diff-suppr/test5-fn-suppr-report-3.txt: Adjust. 30842 * tests/data/test-diff-suppr/test5-fn-suppr-report-4.txt: Adjust. 30843 * tests/data/test-diff-suppr/test5-fn-suppr-report-5.txt: Adjust. 30844 * tests/data/test-diff-suppr/test6-fn-suppr-report-0.txt: Adjust. 30845 * tests/data/test-diff-suppr/test6-fn-suppr-report-1.txt: Adjust. 30846 * tests/data/test-diff-suppr/test6-fn-suppr-report-2.txt: Adjust. 30847 * tests/data/test-diff-suppr/test6-fn-suppr-report-3.txt: Adjust. 30848 * tests/data/test-diff-suppr/test8-redundant-fn-report-0.txt: Adjust. 30849 * tests/data/test-diff-suppr/test8-redundant-fn-report-1.txt: Adjust. 30850 * tests/data/test-diff-suppr/test9-changed-parm-c-report-0.txt: Adjust. 30851 * tests/data/test-diff-suppr/test9-changed-parm-c-report-1.txt: Adjust. 30852 308532015-05-22 Dodji Seketeli <dodji@redhat.com> 30854 30855 Some wording fixes to doc/manuals/libabigail-concepts.rst 30856 * doc/manuals/libabigail-concepts.rst: Some light wording fixes. 30857 308582015-05-24 Dodji Seketeli <dodji@redhat.com> 30859 30860 Type read from DWARF don't have alignment information 30861 * src/abg-dwarf-reader.cc (build_type_decl) 30862 (build_class_type_and_add_to_ir, build_pointer_type_def) 30863 (build_reference_type, build_function_decl): Set the alignment for 30864 native types, class, reference and function type to zero, 30865 effectively meaning that they don't have alignment information. 30866 * src/abg-hash.cc (var_decl::hash::operator): Take the hash value 30867 of the data member context in account when computing the hash 30868 value of a given data member. 30869 * tests/data/test-diff-dwarf/test-23-diff-arch-report-0.txt: 30870 Adjust. 30871 * tests/data/test-diff-dwarf/test10-report.txt: Likewise. 30872 * tests/data/test-diff-dwarf/test13-report.txt: Likewise. 30873 * tests/data/test-diff-dwarf/test22-changed-parm-c-report-0.txt: Likewise. 30874 * tests/data/test-diff-dwarf/test26-added-parms-before-variadic-report.txt: Likewise. 30875 * tests/data/test-diff-dwarf/test8-report.txt: Likewise. 30876 * tests/data/test-diff-dwarf/test9-report.txt: Likewise. 30877 * tests/data/test-diff-filter/test13-report.txt: Likewise. 30878 * tests/data/test-diff-filter/test6-report.txt: Likewise. 30879 * tests/data/test-diff-suppr/test9-changed-parm-c-report-0.txt: Likewise. 30880 * tests/data/test-read-dwarf/test0.abi: Likewise. 30881 * tests/data/test-read-dwarf/test1.abi: Likewise. 30882 * tests/data/test-read-dwarf/test2.so.abi: Likewise. 30883 * tests/data/test-read-dwarf/test3.so.abi: Likewise. 30884 * tests/data/test-read-dwarf/test4.so.abi: Likewise. 30885 * tests/data/test-read-dwarf/test5.o.abi: Likewise. 30886 * tests/data/test-read-dwarf/test6.so.abi: Likewise. 30887 * tests/data/test-read-dwarf/test7.so.abi: Likewise. 30888 * tests/data/test-read-dwarf/test8-qualified-this-pointer.so.abi: Likewise. 30889 308902015-05-06 Dodji Seketeli <dodji@redhat.com> 30891 30892 Better name ID function parameters 30893 * src/abg-ir.cc (function_decl::parameter::get_name_id): Make this 30894 be "parameter-<index>". 30895 308962015-05-06 Dodji Seketeli <dodji@redhat.com> 30897 30898 Better detection of parameter sub-type changes 30899 * include/abg-fwd.h (type_has_sub_type_changes): Declare new 30900 function. 30901 * src/abg-ir.cc (type_has_sub_type_changes): Define it. 30902 * src/abg-comparison.cc (fn_parm_diff::report): Use the new 30903 function type_has_sub_type_changes() instead of just looking at 30904 name changes. 30905 * tests/data/test-diff-dwarf/test4-report.txt: Adjust this 30906 reference test output. 30907 309082015-05-06 Dodji Seketeli <dodji@redhat.com> 30909 30910 Fix a potential crash when comparing variadic parameters again 30911 * src/abg-comparison.cc (redundancy_marking_visitor::visit_begin): 30912 Avoid flagging diffs of variadic parameter *types* as redundant as 30913 well. 30914 309152015-05-06 Dodji Seketeli <dodji@redhat.com> 30916 30917 Add debugging function for function parameters 30918 * include/abg-ir.h 30919 (function_decl::parameter::get_pretty_representation): Declare new 30920 virtual member function. 30921 * src/abg-ir.cc 30922 (function_decl::parameter::get_pretty_representation): Define it. 30923 309242015-05-06 Dodji Seketeli <dodji@redhat.com> 30925 30926 Add comments 30927 * src/abg-dwarf-reader.cc (build_function_decl): Add comments when 30928 building the function parameters. 30929 309302015-05-06 Dodji Seketeli <dodji@redhat.com> 30931 30932 Add a debugging function for type_or_decl_base* 30933 * include/abg-fwd.h (get_pretty_representation): Declare new 30934 overload for type_or_decl_base*. 30935 * src/abg-ir.cc (get_pretty_representation): Define it and express 30936 the previous overload for type_or_decl_base_sptr in terms of this 30937 new one. 30938 309392015-05-05 Dodji Seketeli <dodji@redhat.com> 30940 30941 Return a reference to smart pointer for the void type node 30942 * src/abg-ir.h (type_decl::get_void_type_decl): Return a reference 30943 to the smart pointer initially returned. 30944 * src/abg-ir.cc (type_decl::get_void_type_decl): Likewise. 30945 309462015-05-05 Dodji Seketeli <dodji@redhat.com> 30947 30948 Bug 18342 - Segmentation fault while comparing functions with variadic parameters 30949 * include/abg-fwd.h (is_array_type): New overload for a naked 30950 pointer. 30951 * include/abg-ir.h (type_decl::get_variadic_parameter_type_decl): Declare new 30952 static function. 30953 * src/abg-ir.cc (is_array_type): Define new function overload for 30954 naked pointers 30955 (type_decl::get_variadic_parameter_type_decl): Define new static 30956 function. 30957 * src/abg-dwarf-reader.cc (build_function_decl): The type of 30958 variadic parameter is now a special type_decl. 30959 * include/abg-comparison.h (is_diff_of_variadic_parameter_type) 30960 (is_diff_of_variadic_parameter): New function declarations. 30961 * src/abg-comparison.cc (is_diff_of_variadic_parameter_type) 30962 (is_diff_of_variadic_parameter): Define new functions. 30963 (compute_diff): Refuse to return a NULL 30964 diff for types. Assert that the parameters are non-NULL. 30965 (report_size_and_alignment_changes): We are comparing arrays only 30966 if the two parameters are arrays. 30967 (fn_parm_diff::fn_parm_diff): Refuse that type diff for this diff 30968 node is non empty. 30969 (fn_parm_diff::report): Strengthen an assert. Cleanup a comment. 30970 (redundancy_marking_visitor::visit_begin): Do not mark function 30971 type and variadic parms diff nodes as redundant for local changes. 30972 * tests/data/test-diff-dwarf/libtest26-added-parms-before-variadic-v{0,1}.so: 30973 New test input binaries. 30974 * tests/data/test-diff-dwarf/test26-added-parms-before-variadic-report.txt: 30975 New test output reference. 30976 * tests/data/test-diff-dwarf/test26-added-parms-before-variadic-v{0,1}.c: 30977 Source code of the new test input binaries above. 30978 * tests/data/Makefile.am: Add the new test stuff to source 30979 distribution. 30980 * tests/test-diff-dwarf.cc (in_out_specs): Add the new test inputs 30981 above to the set of input to run this test harness over. 30982 309832015-04-24 Dodji Seketeli <dodji@redhat.com> 30984 30985 Fix archive writing support 30986 * configure.ac: Require libzip 0.10.1 at least. 30987 * src/abg-writer.cc (archive_write_ctxt::serialized_tus): Make 30988 this be a list<string>, rather than a vector<string>. 30989 (create_archive_write_context): Truncate the archive if it exists 30990 already. 30991 (write_translation_unit_to_archive): Do not use the deprecated 30992 zip_add() function anymore. Rather, use zip_file_add(). 30993 * tests/test-write-read-archive.cc (main): Double check if the 30994 translation unit we read is empty or not. 30995 309962015-04-22 Dodji Seketeli <dodji@redhat.com> 30997 30998 Use a better wording for the COPYING file 30999 * COPYING: Update to a more complete description. 31000 310012015-04-20 Dodji Seketeli <dodji@redhat.com> 31002 31003 Update licence texts 31004 * COPYING: Of course we know the licence we want to use now :-) 31005 * COPYING-GPLV3: Add the text of GPLv3. 31006 * Makefile.am: Add the file COPYING-GPLV3 above to source 31007 distribution. 31008 310092015-04-15 Dodji Seketeli <dodji@redhat.com> 31010 31011 18252 - Added parameters are not properly sorted 31012 * src/abg-comparison.cc (sort_string_parm_map): Define new static 31013 function. 31014 (struct parm_comp): Define new type. 31015 (function_type_diff::priv::{sorted_deleted_parms_, 31016 sorted_added_parms_}): New data members that hold sorted 31017 deleted/added parameters. 31018 (function_type_diff::ensure_lookup_tables_populated): Initialize 31019 the two new data members above. 31020 (function_type_diff::report): For the report of parameters that 31021 got added/removed, use the sorted set of added/removed parameters 31022 above. 31023 * tests/data/test-diff-dwarf/test24-added-fn-parms-report-0.txt: 31024 New test input. 31025 * tests/data/test-diff-dwarf/libtest24-added-fn-parms-v{0,1}.so: 31026 Likewise. 31027 * tests/data/test-diff-dwarf/test25-removed-fn-parms-report-0.txt: 31028 Likewise. 31029 * tests/data/test-diff-dwarf/libtest25-removed-fn-parms-v{0,1}.so: 31030 Likewise. 31031 * tests/data/test-diff-dwarf/test24-added-fn-parms-v{0,1}.c: 31032 Likewise. 31033 * tests/data/test-diff-dwarf/test25-removed-fn-parms-v{0,1}.c: 31034 Likewise. 31035 * tests/data/Makefile.am: Add the new test material above to the 31036 source distribution. 31037 310382015-04-14 Dodji Seketeli <dodji@redhat.com> 31039 31040 Misc reporting fixes/improvements 31041 * src/abg-comparison.cc (distinct_diff::report): Remove spurious 31042 vertical space before reporting size and alignment changes here. 31043 (represent): In the variables/data member overload, report type 31044 changes first. Then the other changes. 31045 (report_size_and_alignment_changes): Make this report array size 31046 changes too. Also, make some small adjustments about how type 31047 size/alignment changes are introduced. 31048 (array_diff::report): Now that report_size_and_alignment_changes() 31049 supports size change reporting, just use that function rather than 31050 doing it here. 31051 (corpus_diff::report): Consistently add a space between each 31052 changed function report. Prefix changed variables with a [C], 31053 just like for functions. 31054 * tests/data/test-abicompat/test0-fn-changed-report-0.txt: Adjust. 31055 * tests/data/test-abicompat/test5-fn-changed-report-0.txt: Likewise. 31056 * tests/data/test-abicompat/test6-var-changed-report-0.txt: Likewise. 31057 * tests/data/test-abidiff/test-qual-type0-report.txt: Likewise. 31058 * tests/data/test-abidiff/test-struct0-report.txt: Likewise. 31059 * tests/data/test-abidiff/test-struct1-report.txt: Likewise. 31060 * tests/data/test-abidiff/test-var0-report.txt: Likewise. 31061 * tests/data/test-diff-dwarf/test-23-diff-arch-report-0.txt: Likewise. 31062 * tests/data/test-diff-dwarf/test0-report.txt: Likewise. 31063 * tests/data/test-diff-dwarf/test1-report.txt: Likewise. 31064 * tests/data/test-diff-dwarf/test10-report.txt: Likewise. 31065 * tests/data/test-diff-dwarf/test11-report.txt: Likewise. 31066 * tests/data/test-diff-dwarf/test13-report.txt: Likewise. 31067 * tests/data/test-diff-dwarf/test15-enum-report.txt: Likewise. 31068 * tests/data/test-diff-dwarf/test2-report.txt: Likewise. 31069 * tests/data/test-diff-dwarf/test20-add-fn-parm-report-0.txt: Likewise. 31070 * tests/data/test-diff-dwarf/test21-redundant-fn-report-0.txt: Likewise. 31071 * tests/data/test-diff-dwarf/test22-changed-parm-c-report-0.txt: Likewise. 31072 * tests/data/test-diff-dwarf/test3-report.txt: Likewise. 31073 * tests/data/test-diff-dwarf/test6-report.txt: Likewise. 31074 * tests/data/test-diff-dwarf/test7-report.txt: Likewise. 31075 * tests/data/test-diff-dwarf/test8-report.txt: Likewise. 31076 * tests/data/test-diff-dwarf/test9-report.txt: Likewise. 31077 * tests/data/test-diff-filter/test0-report.txt: Likewise. 31078 * tests/data/test-diff-filter/test01-report.txt: Likewise. 31079 * tests/data/test-diff-filter/test1-report.txt: Likewise. 31080 * tests/data/test-diff-filter/test10-report.txt: Likewise. 31081 * tests/data/test-diff-filter/test11-report.txt: Likewise. 31082 * tests/data/test-diff-filter/test13-report.txt: Likewise. 31083 * tests/data/test-diff-filter/test14-0-report.txt: Likewise. 31084 * tests/data/test-diff-filter/test14-1-report.txt: Likewise. 31085 * tests/data/test-diff-filter/test15-0-report.txt: Likewise. 31086 * tests/data/test-diff-filter/test15-1-report.txt: Likewise. 31087 * tests/data/test-diff-filter/test16-report-2.txt: Likewise. 31088 * tests/data/test-diff-filter/test16-report.txt: Likewise. 31089 * tests/data/test-diff-filter/test17-0-report.txt: Likewise. 31090 * tests/data/test-diff-filter/test17-1-report.txt: Likewise. 31091 * tests/data/test-diff-filter/test18-report.txt: Likewise. 31092 * tests/data/test-diff-filter/test19-enum-report-1.txt: Likewise. 31093 * tests/data/test-diff-filter/test2-report.txt: Likewise. 31094 * tests/data/test-diff-filter/test20-inline-report-1.txt: Likewise. 31095 * tests/data/test-diff-filter/test21-compatible-vars-report-0.txt: Likewise. 31096 * tests/data/test-diff-filter/test22-compatible-fns-report-0.txt: Likewise. 31097 * tests/data/test-diff-filter/test23-redundant-fn-parm-change-report-0.txt: Likewise. 31098 * tests/data/test-diff-filter/test24-compatible-vars-report-1.txt: Likewise. 31099 * tests/data/test-diff-filter/test25-cyclic-type-report-0.txt: Likewise. 31100 * tests/data/test-diff-filter/test25-cyclic-type-report-1.txt: Likewise. 31101 * tests/data/test-diff-filter/test26-qualified-redundant-node-report-0.txt: Likewise. 31102 * tests/data/test-diff-filter/test26-qualified-redundant-node-report-1.txt: Likewise. 31103 * tests/data/test-diff-filter/test27-redundant-and-filtered-children-nodes-report-0.txt: Likewise. 31104 * tests/data/test-diff-filter/test27-redundant-and-filtered-children-nodes-report-1.txt: Likewise. 31105 * tests/data/test-diff-filter/test27-redundant-and-filtered-children-nodes-report-2.txt: Likewise. 31106 * tests/data/test-diff-filter/test28-redundant-and-filtered-children-nodes-report-0.txt: Likewise. 31107 * tests/data/test-diff-filter/test28-redundant-and-filtered-children-nodes-report-1.txt: Likewise. 31108 * tests/data/test-diff-filter/test3-report.txt: Likewise. 31109 * tests/data/test-diff-filter/test6-report.txt: Likewise. 31110 * tests/data/test-diff-filter/test9-report.txt: Likewise. 31111 * tests/data/test-diff-suppr/test0-type-suppr-report-0.txt: Likewise. 31112 * tests/data/test-diff-suppr/test0-type-suppr-report-3.txt: Likewise. 31113 * tests/data/test-diff-suppr/test1-typedef-suppr-report-0.txt: Likewise. 31114 * tests/data/test-diff-suppr/test1-typedef-suppr-report-2.txt: Likewise. 31115 * tests/data/test-diff-suppr/test10-changed-parm-c-report-0.txt: Likewise. 31116 * tests/data/test-diff-suppr/test2-struct-suppr-report-0.txt: Likewise. 31117 * tests/data/test-diff-suppr/test3-struct-suppr-report-0.txt: Likewise. 31118 * tests/data/test-diff-suppr/test3-struct-suppr-report-1.txt: Likewise. 31119 * tests/data/test-diff-suppr/test3-struct-suppr-report-2.txt: Likewise. 31120 * tests/data/test-diff-suppr/test4-local-suppr-report-0.txt: Likewise. 31121 * tests/data/test-diff-suppr/test4-local-suppr-report-1.txt: Likewise. 31122 * tests/data/test-diff-suppr/test5-fn-suppr-report-0.txt: Likewise. 31123 * tests/data/test-diff-suppr/test5-fn-suppr-report-1.txt: Likewise. 31124 * tests/data/test-diff-suppr/test5-fn-suppr-report-2.txt: Likewise. 31125 * tests/data/test-diff-suppr/test5-fn-suppr-report-3.txt: Likewise. 31126 * tests/data/test-diff-suppr/test5-fn-suppr-report-4.txt: Likewise. 31127 * tests/data/test-diff-suppr/test5-fn-suppr-report-5.txt: Likewise. 31128 * tests/data/test-diff-suppr/test6-fn-suppr-report-0.txt: Likewise. 31129 * tests/data/test-diff-suppr/test6-fn-suppr-report-1.txt: Likewise. 31130 * tests/data/test-diff-suppr/test6-fn-suppr-report-2.txt: Likewise. 31131 * tests/data/test-diff-suppr/test6-fn-suppr-report-3.txt: Likewise. 31132 * tests/data/test-diff-suppr/test7-var-suppr-report-0.txt: Likewise. 31133 * tests/data/test-diff-suppr/test7-var-suppr-report-1.txt: Likewise. 31134 * tests/data/test-diff-suppr/test7-var-suppr-report-2.txt: Likewise. 31135 * tests/data/test-diff-suppr/test7-var-suppr-report-3.txt: Likewise. 31136 * tests/data/test-diff-suppr/test7-var-suppr-report-4.txt: Likewise. 31137 * tests/data/test-diff-suppr/test7-var-suppr-report-7.txt: Likewise. 31138 * tests/data/test-diff-suppr/test7-var-suppr-report-8.txt: Likewise. 31139 * tests/data/test-diff-suppr/test8-redundant-fn-report-0.txt: Likewise. 31140 * tests/data/test-diff-suppr/test8-redundant-fn-report-1.txt: Likewise. 31141 * tests/data/test-diff-suppr/test9-changed-parm-c-report-0.txt: Likewise. 31142 * tests/data/test-diff-suppr/test9-changed-parm-c-report-1.txt: Likewise. 31143 311442015-04-10 Dodji Seketeli <dodji@redhat.com> 31145 31146 Make abidiff and abicompat return meaningful exit codes 31147 * doc/manuals/abicompat.rst: Update documentation for abicompat 31148 exit codes. 31149 * doc/manuals/abidiff.rst: Likewise for abidiff exit codes. 31150 * include/abg-tools-utils.h (enum abidiff_status): Declare new 31151 enum. 31152 (operator{|,&,|=}): Declare new operators for the new enum 31153 abidiff_status. 31154 (abidiff_status_has_error, abidiff_status_has_abi_change) 31155 (abidiff_status_has_incompatible_abi_change): Declare new 31156 functions. 31157 * src/abg-tools-utils.cc (operator{|,&,|=}): Define these new 31158 operators. 31159 (abidiff_status_has_error, abidiff_status_has_abi_change) 31160 (abidiff_status_has_incompatible_abi_change): Define new 31161 functions. 31162 * tests/test-diff-filter.cc (main): Adjust for the new exit code 31163 of abidiff. 31164 * tests/test-diff-suppr.cc (main): Likewise. 31165 * tests/test-abicompat.cc (main): Likewise. 31166 * tools/abicompat.cc (enum abicompat_status): Remove. 31167 (operator{|,&,|=}): Remove these operators for enum 31168 abicompat_status. 31169 (perform_compat_check_in_normal_mode) 31170 (perform_compat_check_in_weak_mode): Return abidiff_status instead 31171 of abicompat_status. Adjust therefore. 31172 (main): Adjust to return abidiff_status now, instead of a just 31173 zero for all non-error cases. 31174 * tools/abidiff.cc (main): Likewise. 31175 311762015-04-01 Dodji Seketeli <dodji@redhat.com> 31177 31178 Add support for abicompat weak mode 31179 * include/abg-fwd.h (class type_or_decl_base): Forward declare 31180 this. 31181 (is_decl, is_type, is_function_type, get_name, get_type_name) 31182 (get_function_type_name, get_pretty_representation) 31183 (lookup_function_type_in_corpus, lookup_type_in_translation_unit) 31184 (lookup_function_type_in_translation_unit) 31185 (synthesize_function_type_from_translation_unit) 31186 (hash_type_or_decl): New function declarations. 31187 * src/abg-corpus.cc (lookup_type_in_corpus) 31188 (lookup_function_type_in_corpus): Define new functions. 31189 * include/abg-ir.h 31190 (translation_unit::lookup_function_type_in_translation_unit): 31191 Declare new friend function. 31192 (class type_or_decl_base): Declare this. 31193 (operator==(const type_or_decl_base&, const type_or_decl_base&)): 31194 Declare new operator. 31195 (operator==(const type_or_decl_base_sptr&, const 31196 type_or_decl_base_sptr&)): Likewise. 31197 (class {decl_base, type_base}): Make these class inherit 31198 type_or_decl_base. 31199 (decl_base::get_member_scopes): New const overload. 31200 (bool operator==(const function_decl::parameter_sptr&, 31201 const function_decl::parameter_sptr&)): New operator. 31202 (function_type::get_parameters): Remove the non-const overload. 31203 (function_type::get_pretty_representation): Declare new member 31204 function. 31205 (method_type::get_pretty_representation): Likewise. 31206 * src/abg-ir.cc (bool operator==(const type_or_decl_base&, const 31207 type_or_decl_base&)): Define new equality operator. 31208 (bool operator==(const type_or_decl_base_sptr&, const 31209 type_or_decl_base_sptr&)): Likewise. 31210 (strip_typedef): Do not expect canonicalized types anymore. Now 31211 the system accepts (and expects) canonicalized types in certain 31212 cases. For instance, non-complete types and aggregated types that 31213 contain non-complete sub-types. 31214 (get_name, get_function_type_name, get_type_name) 31215 (get_pretty_representation, is_decl, is_type, is_function_type) 31216 (lookup_function_type_in_translation_unit) 31217 (synthesize_function_type_from_translation_unit) 31218 (lookup_type_in_scope, lookup_type_in_translation_unit): Define 31219 new functions or new overloads. 31220 (bool operator==(const function_decl::parameter_sptr&, 31221 const function_decl::parameter_sptr& r)): Define 31222 new operator. 31223 (function_type::get_parameters): Remove non-const overload. 31224 (function_type::get_pretty_representation): Define new function. 31225 (function_type::traverse): Adjust. 31226 (method_type::get_pretty_representation): Likewise. 31227 (function_decl::get_pretty_representation): Avoid emitting the 31228 type of cdtors. 31229 (hash_type_or_decl): Define new function. 31230 * include/abg-dwarf-reader.h (create_read_context) 31231 (read_corpus_from_elf): Take a new 'read_all_types' flag. 31232 * src/abg-dwarf-reader.cc (read_context::load_all_types_): New 31233 flag. 31234 (read_context::read_context): Initialize it. 31235 (read_context::canonical_types_scheduled): If some types still 31236 have non-canonicalized sub-types, then do not canonicalize them. 31237 (read_context::load_all_types): New member functions. 31238 (build_function_decl): Do not represent void return type like 31239 empty type anymore, rather, represent it like a void type node. 31240 (build_ir_node_from_die): When asked, load all types 31241 including those that are not reachable from an exported 31242 declaration. 31243 (create_read_context, read_corpus_from_elf): Take a new 31244 'load_all_types' flag and honour it. 31245 * src/abg-reader.cc (read_context::type_is_from_translation_unit): 31246 Support looking up function types in the current translation unit, 31247 now that we now how to lookup function types. 31248 * include/abg-comparison.h (diff_context::{has_diff_for, add_diff, 31249 set_canonical_diff_for, set_or_get_canonical_diff_for, 31250 get_canonical_diff_for}): Make these take instances of 31251 type_or_decl_base_sptr, instead of decl_base_sptr. 31252 (diff::diff): Likewise. 31253 (diff::{first_subject, second_subject}): Make these return 31254 type_or_decl_base_sptr instead of decl_base_sptr. 31255 (type_diff_base::type_diff_base): Make these take instances of 31256 type_or_decl_base_sptr instead of decl_base_sptr. 31257 (distinct_diff::distinct_diff): Likewise. 31258 (distinct_diff::{first, second}): Make these return 31259 type_or_decl_base_sptr instead of decl_base_sptr. 31260 (distinct_diff::entities_are_of_distinct_kinds): Make these take 31261 instances of type_or_decl_base_sptr instead of decl_base_sptr. 31262 (class function_type_diff): Create this new type. It's a 31263 factorization of the function_decl_diff type. 31264 * src/abg-comparison.cc (): 31265 * src/abg-comp-filter.cc ({harmless, harmful}_filter::visit): 31266 Adjust as diff::{first,second}_subject() now returns a 31267 type_or_decl_base_sptr, no more a decl_base_sptr. 31268 (decls_type, decls_diff_map_type): Remove these typedefs and replace it with ... 31269 (types_or_decls_type, types_or_decls_diff_map_type): ... these. 31270 (struct {decls_hash, decls_equals): Remove these type sand replace them with ... 31271 (struct {types_or_decls_hash, types_or_decls_equals}): ... these. 31272 ({type_suppression, variable_suppression}::suppresses_diff): 31273 Adjust. 31274 (diff_context::priv::decls_diff_map): Replace this with ... 31275 (diff_context::priv::types_or_decls_diff_map): ... this. 31276 (diff_context::{has_diff_for, add_diff, get_canonical_diff_for, 31277 set_canonical_diff_for, set_or_get_canonical_diff_for}): Take 31278 type_or_decl_base_sptr instead of decl_base_sptr. 31279 (diff::priv::{first, second}_subject): Make the type of these be 31280 type_or_decl_base_sptr, no more decl_base_sptr. 31281 (diff::priv::priv): Adjust for the subjects of the diff being of 31282 type type_or_decl_sptr now, no more decl_base_sptr. 31283 (diff_less_than_functor::operator()(const diff_sptr, const 31284 diff_sptr) const): Adjust. 31285 (diff::diff): djust for the subjects of the diff being of type 31286 type_or_decl_sptr now, no more decl_base_sptr. 31287 (diff::{first,second}_subject): Make the type of these be 31288 type_or_decl_base_sptr, no more decl_base_sptr. 31289 (report_size_and_alignment_changes): Likewise. 31290 (type_diff_base::type_diff_base): Make the type of this be 31291 type_or_decl_base_sptr instead of type_base_sptr. 31292 (distinct_diff::distinct_diff): Make this take instances of 31293 type_or_decl_base_sptr instead of decl_base_sptr. 31294 (distinct_diff::{first, second, entities_are_of_distinct_kinds}): 31295 Likewise. 31296 (distinct_diff::has_changes): Simplify logic. 31297 (distinct_diff::report): Adjust. 31298 (compute_diff_for_types): Add an additional case to support the 31299 new function_type. 31300 (report_size_and_alignment_changes): Make this take instances of 31301 type_or_decl_base_sptr instead of decl_base_sptr. 31302 (class_diff::priv::member_type_has_changed): Return an instance of 31303 type_or_decl_base_sptr rather than a decl_base_sptr. 31304 (class_diff::report): Adjust. 31305 (diff_comp::operator()(const diff&, diff&) const): Adjust. 31306 (enum function_decl_diff::priv::Flags): Remove. 31307 (function_decl_diff::priv::{first_fn_flags_, second_fn_flags_, 31308 fn_flags_changes_}): Remove. 31309 (function_decl_diff::priv::{fn_is_declared_inline_to_flag, 31310 fn_binding_to_flag}): Remove. 31311 (function_decl_diff::{deleted_parameter_at, 31312 inserted_parameter_at}): Remove. 31313 (function_decl_diff::ensure_lookup_tables_populated): Empty this. 31314 (function_decl_diff::chain_into_hierarchy): Adjust. 31315 (function_decl_diff::function_decl_diff): This now only takes the 31316 subjects. It's body is now empty. 31317 (function_decl_diff::{return_type_diff, subtype_changed_parms, 31318 removed_parms, added_parms, type_diff}): Remove these member 31319 functions. 31320 (function_decl_diff::type_diff): Define new member function. 31321 (function_decl_diff::report): Simplify logic by using the 31322 reporting of the child type diff node. 31323 (compute_diff): Likewise, in the overload for function_decl_sptr 31324 simplify logic by using the child type diff object. 31325 (function_type_diff::priv): Define new type. 31326 (function_type_diff::{function_type_diff, 31327 ensure_lookup_tables_populated, deleted_parameter_at, 31328 inserted_parameter_at, finish_diff_type, first_function_type, 31329 second_function_type, return_type_diff, subtype_changed_parms, 31330 removed_parms, added_parms, get_pretty_representation, 31331 has_changes, has_local_changes, report, chain_into_hierarchy}): 31332 Define new functions. 31333 (compute_diff): Define new overload for function_type_sptr. 31334 * tools/abicompat.cc (options::weak_mode): New data member. 31335 (options::options): Initialize it. 31336 (enum abicompat_status): New enum 31337 (abicompat_status operator|(abicompat_status, abicompat_status)) 31338 (abicompat_status& operator|=(abicompat_status &, abicompat_status)) 31339 (abicompat_status operator&(abicompat_status, abicompat_status)): 31340 New operators to manipulate the abicompat_status enum. 31341 (display_usage): Add help string for the new --weak-mode option. 31342 (parse_command_line): Add the new --weak-mode command line 31343 argument. If the tool is called with just the application and one 31344 library then assume that we are in the weak mode. 31345 (perform_compat_check_in_normal_mode): Define new function, factorized 31346 from what was in the main function. 31347 (perform_compat_check_in_weak_mode): Define new function. 31348 (struct {fn,var}_change): Define new types. 31349 (main): Use perform_compat_check_in_weak_mode() and 31350 perform_compat_check_in_normal_mode(). 31351 * tools/abidiff.cc (main): Adjust. 31352 * tools/abidw.cc: (options::load_all_types): Add new data member. 31353 (options::options): Initialize it. 31354 (display_usage): New help string for --load-all-types. 31355 (parse_command_line): Support the new --load-all-types option. 31356 (main): Adjust and honour the --load-all-types option. 31357 * tools/abilint.cc (main): Adjust. 31358 * doc/manuals/abicompat.rst: Update documentation for the new weak 31359 mode. Also provide stuff that was missing from the examples 31360 provided. 31361 * doc/manuals/abidw.rst: Update documentation for the new 31362 --load-all-types option. 31363 * tests/print-diff-tree.cc (main): Adjust. 31364 * tests/test-diff-dwarf.cc (main): Likewise. 31365 * tests/test-read-dwarf.cc (main): Likewise. 31366 * tests/data/test-abicompat/test0-fn-changed-app: Recompile this. 31367 * tests/data/test-abicompat/libtest5-fn-changed-libapp-v{0,1}.so: 31368 New new test input binaries 31369 * tests/data/test-abicompat/test5-fn-changed-app: Likewise. 31370 * tests/data/test-abicompat/test6-var-changed-app: Likewise. 31371 * tests/data/test-abicompat/libtest6-var-changed-libapp-v{0,1}.so: 31372 Likewise. 31373 * tests/data/test-abicompat/test5-fn-changed-report-0.txt: 31374 Reference output for one test above. 31375 * tests/data/test-abicompat/test6-var-changed-report-0.txt: 31376 Likewise. 31377 * tests/data/test-abicompat/test5-fn-changed-app.cc: Source file 31378 for a binary above. 31379 * tests/data/test-abicompat/test5-fn-changed-libapp-v{0,1}.{h,cc}: 31380 Likewise. 31381 * tests/data/test-abicompat/test6-var-changed-libapp-v{0,1}.{cc,h}: 31382 Likewise. 31383 * tests/data/test-abicompat/test6-var-changed-app.cc: Likewise. 31384 * tests/data/Makefile.am: Add the test related files above to the 31385 source distribution. 31386 * tests/test-abicompat.cc (in_out_spec): Add the new test input 31387 above to the list of inputs to feed to this test harness. 31388 (main): Support taking just the app and one library. 31389 * tests/data/test-read-dwarf/test{0, 1, 2.so, 3.so, 5.o, 31390 8-qualified-this-pointer.so,}.abi: Adjust for void type being 31391 really emitted now, as opposed to just being an empty type. 31392 313932015-04-01 Dodji Seketeli <dodji@redhat.com> 31394 31395 18186 - Assertion in abigail::ir::class_decl::hash::operator() 31396 * src/abg-dwarf-reader.cc (build_class_type_and_add_to_ir): When 31397 the size of the class is provided then the class is complete, no 31398 matter if this function called to update the class or to build it 31399 for the first time. 31400 314012015-03-31 Sinny Kumari <sinny@redhat.com> 31402 31403 Check if EM_AARCH64, EM_TILEPRO and EM_TILEGX macros are defined in elf.h 31404 * config.h.in: Generated autoheader by configure.ac 31405 for added macros 31406 * configure.ac: Defining HAVE_EM_AARCH64_MACRO, 31407 HAVE_EM_TILEPRO_MACRO and HAVE_EM_TILEGX_MACRO to check 31408 whether EM_AARCH64, EM_TILEPRO and EM_TILEGX macros are defined 31409 in elf.h or not 31410 * src/abg-dwarf-reader.cc (e_machine_to_string): Look for 31411 EM_AARCH64, EM_TILEPRO and EM_TILEGX macros only 31412 if they are defined in elf.h 31413 314142015-03-30 Dodji <dodji@ks305400.kimsufi.com> 31415 31416 PR libabigail/18180 31417 * src/abg-hash.cc (class_decl::hash::operator()(const class_decl&) 31418 const): Return zero only for class declarations that are not 31419 resolved. 31420 * tests/data/test-read-write/test20.xml: Fix the output to make a 31421 class definition to reference its declaration, when there was a 31422 forward declaration for it. 31423 314242015-03-30 Dodji Seketeli <dodji@redhat.com> 31425 31426 18179 - abidiff crashes on libcangjie 31427 * include/abg-fwd.h (lookup_class_type_in_corpus) 31428 (lookup_class_type_in_translation_unit): Declare new functions. 31429 * src/abg-ir.cc (lookup_class_type_in_translation_unit): Define 31430 new function. 31431 (get_node, convert_node_to_decl): Define new specializations for 31432 the class_decl type. 31433 * src/abg-corpus.cc (lookup_class_type_in_corpus): Define new 31434 function. 31435 * src/abg-dwarf-reader.cc 31436 (read_context::resolve_declaration_only_classes): Lookup class 31437 types specifically. 31438 314392015-03-30 Dodji Seketeli <dodji@redhat.com> 31440 31441 Forgot to initialize a data member 31442 * src/abg-reader.cc (read_context::read_context): Initialize the 31443 new m_exported_decls_builder_ data member. 31444 314452015-03-30 Dodji Seketeli <dodji@redhat.com> 31446 31447 18166 - Abidiff fails with internal on Libtirpc ABI in XML format 31448 * src/abg-reader.cc (read_context::m_exported_decls_builder_): New 31449 data member. 31450 (read_context::read_context): Initialize it. 31451 (read_context::{type_is_from_translation_unit, 31452 get_exported_decls_builder, set_exported_decls_builder, 31453 maybe_add_fn_to_exported_decls, maybe_add_fn_to_exported_decls, 31454 type_id_new_in_translation_unit}): New member functions. 31455 (read_context::clear_per_translation_unit_data): Clear id->xml 31456 node map here ... 31457 (read_context::clear_per_corpus_data): ... not here. 31458 (read_context::walk_xml_node_to_map_type_ids): Only walk the 31459 sub-tree we are asked to walk. 31460 (read_translation_unit_from_input): Cleanup. 31461 (read_corpus_from_input): Wire populating of exported declarations 31462 of the current corpus. 31463 (build_function_decl, build_var_decl): Populate exported 31464 declarations of the current corpus here. 31465 (build_type_decl, build_qualified_type_decl) 31466 (build_pointer_type_def, build_reference_type_def) 31467 (build_array_type_def, build_enum_type_decl, build_type_decl) 31468 (build_template_tparameter): Adjust assert on ID to make sure 31469 it's the first type it's being defined in the current translation 31470 unit. 31471 * tests/data/test-abidiff/test-corpus0-report0.txt: New test 31472 reference output. 31473 * tests/data/test-abidiff/test-corpus0-v{0,1}.so.abi: New test 31474 input. 31475 * tests/test-abidiff.cc (specs): Add the test inputs above to the 31476 list of inputs over which to run the test harness. 31477 (main): Support reading corpora too, as this test harness was 31478 reading just translation units before. 31479 (tests/data/Makefile.am): Add test material above to source 31480 distribution. 31481 314822015-03-19 Dodji Seketeli <dodji@redhat.com> 31483 31484 Update the CONTRIBUTING file 31485 * CONTRIBUTING: How to check out the web pages. 31486 314872015-03-19 Dodji Seketeli <dodji@redhat.com> 31488 31489 Update website documentation 31490 * doc/website/mainpage.txt: Update the web page. 31491 314922015-03-18 Dodji Seketeli <dodji@redhat.com> 31493 31494 Cleanup type canonicalizing logic 31495 * src/abg-ir.cc (type_base::get_canonical_type_for): Cleanup the 31496 logic here. Basically since we are not trying to cache the result 31497 of type hashing anymore, this can be simpler. 31498 314992015-03-18 Dodji Seketeli <dodji@redhat.com> 31500 31501 Fix redundancy propagation on node with filtered local changes 31502 *NOT* take in account the categories inherited from its children 31503 nodes. That way, it's possible to know if the *local changes* of a 31504 given node have been filtered out. 31505 * include/abg-comparison.h (diff::{get_local_category, 31506 add_to_local_category, add_to_local_and_inherited_categories, 31507 remove_from_local_category, set_local_category, 31508 is_filtered_out_wrt_non_inherited_categories, 31509 has_local_changes_to_be_reported}): Declare new member functions. 31510 * src/abg-comp-filter.cc ({harmless, harmful}_filter::{visit, 31511 visit_end}): Update local category too. 31512 * src/abg-comparison.cc (diff::priv::local_category_): Add new 31513 data member. 31514 (diff::priv::priv): Initialize it. 31515 (diff::priv::is_filtered_out): Add new member function. This is 31516 factorized out of diff::is_filtered_out(). 31517 (diff::is_filtered_out): Re-write in terms of 31518 diff::priv::is_filtered_out(). 31519 (diff::{get_local_category, add_to_local_category, 31520 add_to_local_and_inherited_categories, remove_from_local_category, 31521 set_local_category, is_filtered_out_wrt_non_inherited_categories, 31522 has_local_changes_to_be_reported}): Define new member functions. 31523 (suppression_categorization_visitor::visit_begin): Update local 31524 categories too. 31525 (redundancy_marking_visitor::visit_end): If all of the children 31526 nodes of the a diff node N are redundant and if N has filtered-out 31527 local changes, then N is redundant too. 31528 * tests/data/test-diff-filter/libtest28-redundant-and-filtered-children-nodes-v{1,2}.so: 31529 New binary test inputs. 31530 * tests/data/test-diff-filter/test28-redundant-and-filtered-children-nodes-v{0,1}.cc: 31531 Source code for the binary test inputs above. 31532 * tests/data/test-diff-filter/test28-redundant-and-filtered-children-nodes-report-{0,1}.txt: 31533 New test output references. 31534 * tests/test-diff-filter.cc (in_out_specs): Add the test inputs 31535 above to the set of inputs this test harness has to run over. 31536 * tests/data/Makefile.am: Add the test materials above to the 31537 source distribution. 31538 315392015-03-17 Dodji Seketeli <dodji@redhat.com> 31540 31541 Various style cleanups 31542 * src/abg-hash.cc (class_decl::hash::operator()(const class_decl& 31543 t) const): Fix comment. 31544 * src/abg-ir.cc (lookup_node_in_scope): Likewise. 31545 (class_decl::add_base_specifier): Use base_spec_sptr rather than 31546 shared_ptr<base_spec>. 31547 (class non_canonicalized_subtype_detector): Fix comment. 31548 315492015-03-17 Dodji Seketeli <dodji@redhat.com> 31550 31551 Make is_global_scope() return a pointer to the global scope 31552 * include/abg-fwd.h (is_global_scope): Return a global_scope*. 31553 * src/abg-ir.cc (is_global_scope): Likewise. 31554 315552015-03-17 Dodji Seketeli <dodji@redhat.com> 31556 31557 Add a useful assert in the comparison engine 31558 * src/abg-comparison.cc (qualified_type_diff::report): Assert that 31559 if the qualified type diff node has changes to be reported and no 31560 local change, then its child node must have changes to be 31561 reported. 31562 315632015-03-17 Dodji Seketeli <dodji@redhat.com> 31564 31565 Fix diff report about non-static data members. 31566 * src/abg-comparison.cc 31567 (class_diff::priv::{get_deleted_non_static_data_members_number, 31568 get_inserted_non_static_data_members_number}): Define new member 31569 functions. 31570 (class_diff::reports): Use the new functions above. Also, add 31571 forgotten new lines where they belong. 31572 315732015-03-17 Dodji Seketeli <dodji@redhat.com> 31574 31575 Do not cache hash values in decl_base::get_hash 31576 * src/abg-ir.cc (decl_base::get_hash): Do not cache the hash 31577 value. 31578 315792015-03-17 Dodji Seketeli <dodji@redhat.com> 31580 31581 Do not miss early non-complete type resolution when it's possible 31582 * src/abg-dwarf-reader.cc (build_class_type_and_add_to_ir): A type 31583 that has its size defined is not non-complete. Same if it has a 31584 method or a member type. 31585 315862015-03-17 Dodji Seketeli <dodji@redhat.com> 31587 31588 Delay non-complete class type resolution up to end of corpus reading 31589 * include/abg-fwd.h (lookup_type_in_corpus): Declare new function. 31590 * src/abg-corpus.cc (lookup_type_in_corpus): Define new function 31591 here. 31592 * include/abg-ir.h (function_types_type): Declare new typedef. 31593 (translation_unit::get_canonical_function_type): Remove member function. 31594 (translation_unit::bind_function_type_life_time): Declare new 31595 member function. 31596 (classes_type): New typedef. 31597 * src/abg-ir.cc 31598 (translation_unit::priv::canonical_function_types_): Remove data 31599 member. 31600 (translation_unit::priv::function_types): New data member. 31601 (translation_unit::get_canonical_function_type): Remove this 31602 function definition. 31603 (translation_unit::bind_function_type_life_time): New function 31604 definition. 31605 (lookup_node_in_scope): Ensure that the type returned is 31606 complete. 31607 * src/abg-dwarf-reader.cc (string_classes_map): New typedef. 31608 (read_context::decl_only_classes_map_): New data member. 31609 (read_context::declaration_only_classes): New accessor. 31610 (read_context::{maybe_schedule_declaration_only_class_for_resolution, 31611 is_decl_only_class_scheduled_for_resolution, 31612 resolve_declaration_only_classes, current_elf_file_is_executable, 31613 current_elf_file_is_dso}): Define new member functions. 31614 (read_context::clear_per_translation_unit_data): Do not clear the 31615 data structures that associate DIEs to decls/types or that contain 31616 the types to canonicalize here. Rather, clear them ... 31617 (read_context::clear_per_corpus_data): ... here instead. 31618 (read_context::build_translation_unit_and_add_to_ir): Do not 31619 perform late type canonicalizing here. Rather, do it ... 31620 (read_debug_info_into_corpus): ... here instead. And before that, 31621 call read_context::clear_per_corpus_data() and the new 31622 read_context::resolve_declaration_only_classes() here. 31623 (build_class_type_and_add_to_ir): Schedule the non-complete types 31624 for resolution to complete types. Assert that base classes that 31625 are non-complete are scheduled to be completed. 31626 (build_function_decl): Do not try to canonicalize function types 31627 this early, systematically. Now, all the non-complete types needs 31628 to be completed before starting canonicalizing. So let function 31629 types go through the normal processes of deciding when to 31630 canonicalize them. But then, bind the life time of the function 31631 type to the life time of the current translation unit. 31632 (maybe_canonicalize_type): If a class type is non-complete, 31633 schedule it for late canonicalizing. 31634 * src/abg-hash.cc (class_decl::hash::operator()(const class_decl&) 31635 const): During hashing, a base class should be complete. 31636 * src/abg-reader.cc 31637 (read_context::clear_per_translation_unit_data): Do not clear 31638 id/xml node, and type maps here. Rather, clear it ... 31639 (read_context::clear_per_corpus_data): ... here instead. 31640 (read_translation_unit_from_input): Do not perform late 31641 canonicalizing here. Rather, do it ... 31642 (read_corpus_from_input): ... here. Also, call the new 31643 read_context::clear_per_corpus_data() here. 31644 (build_function_decl): Do not canonicalize function types here so 31645 early. Rather, bind the life time of the function type to the 31646 life time of the translation unit. 31647 * src/abg-writer.cc (write_translation_unit): Do not clear the 31648 type/ID map here. 31649 * tests/data/test-read-dwarf/test2.so.abi: Adjust test input. 31650 316512015-03-17 Dodji Seketeli <dodji@redhat.com> 31652 31653 Add --no-architecture option to abidw 31654 * tools/abidw.cc (options::write_architecture): New flag. 31655 (options::options): Initialize it. 31656 (display_usage): Add usage string for the new --no-architecture 31657 option. 31658 (parse_command): Parse the new --no-architecture command line 31659 option. 31660 (main): Ignore the architecture name if required by the user. 31661 316622015-03-13 Dodji Seketeli <dodji@redhat.com> 31663 31664 We shouldn't build qualified types with empty underlying type 31665 * src/abg-ir.cc (qualified_type_def::qualified_type_def): Assert 31666 that we shouldn't build qualified types with empty underlying 31667 type. 31668 316692015-03-13 Dodji Seketeli <dodji@redhat.com> 31670 31671 Add an overload for is_type() that takes naked pointers 31672 * include/abg-fwd.h (is_type): Declare new overload that takes a 31673 naked pointer. 31674 * src/abg-ir.cc (is_type): Define new overload that takes a naked 31675 pointer. 31676 316772015-03-13 Dodji Seketeli <dodji@redhat.com> 31678 31679 Declaration-only classes shouldn't have canonical types 31680 * include/abg-fwd.h (keep_type_alive): Declare new function. 31681 * src/abg-ir.cc (strip_typedef): Simplify logic. Support types 31682 that are not canonicalized. 31683 (type_base::get_canonical_type_for): For declaration-only classes, 31684 return an empty canonical class, forcing the class to be compared 31685 structurally. 31686 (keep_type_alive): Define new function. 31687 * src/abg-hash.cc ({decl_base, type_decl, scope_type_decl, 31688 qualified_type_def, pointer_type_def, reference_type_def, 31689 array_type_def, enum_type_decl, typedef_decl, 31690 class_decl::member_class_template, class_decl, type_tparameter, 31691 template_tparameter, }::hash::operator()): Do not cache the 31692 computed hash. 31693 316942015-03-13 Dodji Seketeli <dodji@redhat.com> 31695 31696 Fix redundancy categorization propagation 31697 * src/abg-comparison.cc (redundancy_marking_visitor::visit_end): 31698 Consider the cases of changes that are a filtered out. 31699 * tests/data/test-diff-filter/libtest27-redundant-and-filtered-children-nodes-v{0,1}.so: 31700 New test binaries to use as test input. 31701 * tests/data/test-diff-filter/test27-redundant-and-filtered-children-nodes-report-{0,1,2}.txt: 31702 New test result baselines. 31703 * tests/data/test-diff-filter/test27-redundant-and-filtered-children-nodes-v{0,1}.cc: 31704 Source code for the test input binaries above. 31705 * tests/test-diff-filter.cc (in_out_spec): Add the binaries to the 31706 test inputs used for this test harness. 31707 * tests/data/Makefile.am: Add the new test material above to the 31708 distribution. 31709 317102015-03-13 Dodji Seketeli <dodji@redhat.com> 31711 31712 Fix thinko in has_virtual_mem_fn_change(). 31713 * src/abg-comp-filter.cc (has_virtual_mem_fn_change): Fix thinko. 31714 317152015-03-13 Dodji Seketeli <dodji@redhat.com> 31716 31717 From inside the comparison engine re-use IR's equality operators 31718 * include/abg-ir.h (operator==(scope_decl_sptr, scope_decl_sptr)): 31719 Declare. 31720 (operator==(type_decl_sptr, type_decl_sptr)): Likewise. 31721 (operator==(enum_type_decl_sptr, enum_type_decl_sptr)): Likewise. 31722 * src/abg-comparison.cc (diff_length_of_decl_bases) 31723 (diff_length_of_type_bases): Remove these static functions. 31724 (class_diff::has_changes): Re-use the comparison operator for 31725 class_decl_sptr. 31726 (type_decl_diff::has_changes): Re-use the comparison operator for 31727 type_decl_sptr. 31728 * src/abg-ir.cc (operator==(scope_decl_sptr, scope_decl_sptr)): 31729 Define. 31730 (operator==(type_decl_sptr, type_decl_sptr)): Likewise. 31731 (operator==(enum_type_decl_sptr, enum_type_decl_sptr)): Likewise. 31732 317332015-03-11 Dodji Seketeli <dodji@redhat.com> 31734 31735 Remove unnecessary vertical white space from diff report 31736 * src/abg-comparison.cc (class_diff::report): When reporting 31737 virtual member functions make sure to emit the newline only if one 31738 report for member function has already been emitted. 31739 317402015-03-10 Dodji Seketeli <dodji@redhat.com> 31741 31742 Cleanup array_type_def::is_infinite 31743 * src/abg-ir.cc (array_type_def::is_infinite): Style cleanup. 31744 317452015-03-10 Dodji Seketeli <dodji@redhat.com> 31746 31747 Make a function static as it oughts to be 31748 * src/abg-ir.cc (get_type_representation): Make this static. 31749 317502015-03-10 Dodji Seketeli <dodji@redhat.com> 31751 31752 Canonicalize function types 31753 * src/abg-dwarf-reader.cc (build_function_decl): Call 31754 maybe_canonicalize_type to canonicalize the function type. 31755 317562015-03-10 Dodji Seketeli <dodji@redhat.com> 31757 31758 Use more naked pointers when comparing function types 31759 * src/abg-ir.cc (equals): In the overload for function types, use 31760 more naked pointers, less smart pointers. 31761 317622015-03-10 Dodji Seketeli <dodji@redhat.com> 31763 31764 Pass a bunch of smart pointers by reference 31765 * include/abg-fwd.h (get_member_is_static, is_member_function) 31766 (get_member_function_is_ctor, set_member_function_is_ctor) 31767 (get_member_function_is_dtor, set_member_function_is_dtor) 31768 (get_member_function_is_const, set_member_function_is_const) 31769 (get_member_function_vtable_offset) 31770 (set_member_function_vtable_offset) 31771 (get_member_function_is_virtual): Declare the smart pointer 31772 parameter of these as being passed by reference. 31773 * include/abg-ir.h (get_member_access_specifier) 31774 (get_member_is_static, get_member_access_specifier) 31775 (set_member_function_is_ctor, set_member_function_is_const) 31776 (set_member_function_vtable_offset): Likewise, for these friend 31777 declarations to the decl_base type. 31778 * src/abg-ir.cc (get_member_access_specifier) 31779 (get_member_is_static, is_member_function) 31780 (get_member_function_is_ctor, set_member_function_is_ctor) 31781 (get_member_function_is_dtor, set_member_function_is_dtor) 31782 (get_member_function_is_const, set_member_function_is_const) 31783 (get_member_function_vtable_offset) 31784 (set_member_function_vtable_offset) 31785 (get_member_function_is_virtual): In these definitions, the smart 31786 pointer parameter is passed by reference. 31787 317882015-03-10 Dodji Seketeli <dodji@redhat.com> 31789 31790 Make decl_base::get_context_rel() return a naked pointer 31791 * include/abg-fwd.h (set_member_is_static): Add an overload that 31792 takes the member as a reference to a smart pointer. 31793 (set_member_function_{is_dtor, is_ctor, is_const, vtable_offset, 31794 is_virtual}): Pass the member function as a reference. 31795 (set_member_function_is_const, set_member_function_is_virtual): 31796 Pass the member function as a non-const reference. 31797 * include/abg-ir.h (decl_base::get_context_rel): Return a naked 31798 pointer. 31799 (set_member_is_static, set_member_function_is_virtual): Adjust 31800 this friend declaration. 31801 (set_member_access_specifier): Add an overload that takes a 31802 reference to the member. Pass a reference to smart pointer to the 31803 other overload. 31804 (set_member_function_is_{is_ctor,is_dtor,is_const,is_virtual,vtable_offset}): 31805 Take a non-const reference to function_decl. 31806 * src/abg-ir.cc (decl_base::get_context_rel): Likewise. 31807 (equals(const decl_base&, const decl_base&, change_kind*)): 31808 Adjust. 31809 (equals(const var_decl&, const var_decl&, change_kind*)): 31810 Likewise. 31811 (get_member_access_specifier, get_member_is_static) 31812 (set_data_member_offset, get_data_member_offset) 31813 (set_data_member_is_laid_out, get_data_member_is_laid_out) 31814 (get_member_function_is_ctor, set_member_function_is_ctor) 31815 (get_member_function_is_dtor, set_member_function_is_dtor) 31816 (get_member_function_is_const, set_member_function_is_const) 31817 (get_member_function_vtable_offset) 31818 (set_member_function_vtable_offset) 31819 (get_member_function_is_virtual, set_member_function_is_virtual): 31820 Likewise. 31821 (set_member_access_specifier): Add an overload that takes a 31822 reference to decl_base. 31823 (set_member_is_static, set_member_function_{is_dtor, is_ctor, 31824 is_const, vtable_offset, is_virtual}): Pass the member function as 31825 a reference.): Add an overload that takes the member as a 31826 reference, and write the older overload in terms of the new one. 31827 318282015-03-09 Dodji Seketeli <dodji@redhat.com> 31829 31830 Make overloads of decl_base::get_qualified_name() return a reference 31831 * incude/abg-ir.h (decl::get_{qualified_name, 31832 qualified_parent_name}): Return a reference to a string rather 31833 than a copy of a string. 31834 (qualified_type_def::get_qualified_name): Likewise. 31835 (reference_type_def::get_qualified_name): Likewise. 31836 (array_type_def::get_qualified_name): Likewise. 31837 (class enum_type_decl::enumerator): Make this is an out-of-line 31838 pimpled class implementation. 31839 (enum_type_decl::enumerator::{get, set}_enum_type): Declare new 31840 method. 31841 (enum_type_decl::enumerator::get_qualified_name): Change this so 31842 that it doesn't take the name of the enum type anymore. 31843 * src/abg-comparison.cc (enum_diff::report): Adjust for 31844 enum_type_decl::enumerator::get_qualified_name() not taking the 31845 name of the enum type anymore. 31846 * src/abg-ir.cc (decl_base::get_qualified_parent_name): Return a 31847 reference to string. 31848 (decl_base::get_qualified_name): Likewise. 31849 (decl_base::get_qualified_name(string&)): Use the new verson of 31850 decl_base::get_qualified_name() that returns a reference. 31851 ({qualified_type_def, pointer_type_def, reference_type_def, 31852 array_type_def}::get_qualified_name()): Return a string reference. 31853 ({qualified_type_def, pointer_type_def, reference_type_def, 31854 array_type_def}::get_qualified_name(string& qualified_name) 31855 const): Use the new qualified_type_def::get_qualified_name() that 31856 returns a string reference. 31857 (class enum_type_decl::priv): New type. 31858 (enum_type_decl::{get_underlying_type, get_enumerators}): Adjust. 31859 (enum_type_decl::{enumerator::enumerator, enumerator::operator==, 31860 enumerator::get_name, enumerator::get_qualified_name, 31861 enumerator::set_name, enumerator::get_value, 31862 enumerator::set_value, enumerator::get_enum_type, 31863 enumerator::set_enum_type}): Define methodes out-of-line here. 31864 318652015-02-24 Dodji Seketeli <dodji@redhat.com> 31866 31867 Harden strip_typedef 31868 * src/abg-ir.cc (strip_typedef): Consider that the underlying type 31869 can be void. 31870 318712015-02-24 Dodji Seketeli <dodji@redhat.com> 31872 31873 When reading DWARF set member type access where the type is built 31874 * include/abg-fwd.h (is_class(decl_base*)): Return a class_decl* 31875 rather than just a bool. 31876 * abg-ir.cc (is_class(decl_base*)): Return a class_decl* rather 31877 than just a bool. Simplify the implementation. 31878 * src/abg-dwarf-reader.cc 31879 (maybe_set_member_type_access_specifier): Define new static 31880 function. 31881 (build_ir_node_from_die): Remove the is_member_type flag. When 31882 building member types set their access specifier. Simplify the 31883 logic of detecting that a type is a member type; basically 31884 delegate taht to the new maybe_set_member_type_access_specifier(). 31885 (build_class_type_and_add_to_ir): Do not try to set the member 31886 type access specifiers anymore. 31887 (build_qualified_type, build_pointer_type, build_reference_type) 31888 (build_typedef_type, build_var_decl, build_function_decl): Adjust. 31889 318902015-02-24 Dodji Seketeli <dodji@redhat.com> 31891 31892 Fix enum_diff::has_changes() 31893 * src/abg-comparison.cc (enum_diff::has_changes): Just use the 31894 normal comparison operator to compare the two enums here. It's 31895 fast now. 31896 318972015-02-23 Dodji Seketeli <dodji@redhat.com> 31898 31899 Build the set of exported decls directly during DWARF loading 31900 * include/abg-ir.h ({var,function}_decl::get_id): Return a 31901 reference. 31902 * src/abg-ir.cc ({var,function}_decl::get_id): Return a reference 31903 to the string rather than copying it over. 31904 * include/abg-corpus.h (class corpus::exported_decls_builder): 31905 Declare new type. 31906 (corpus::{sort_functions, sort_variables, 31907 maybe_drop_some_exported_decls, get_exported_decls_builder}): 31908 Declare new methods. 31909 * src/abg-corpus.h (corpus::exported_decls_builder::priv): Define 31910 new type. 31911 (class symtab_build_visitor_type): Remove this type that is 31912 useless now. 31913 (corpus::exported_decls_builder::{exported_decls_builder, 31914 exported_functions, exported_variables, 31915 maybe_add_fn_to_exported_fns, maybe_add_var_to_exported_vars}): 31916 Define new functions. 31917 (corpus::priv::is_public_decl_table_built): Remove this data 31918 member. It's now useless. 31919 (corpus::priv::priv): Adjust. 31920 (corpus::priv::build_public_decl_table): Remove this member 31921 function. It's now useless. 31922 (corpus::{priv::build_unreferenced_symbols_tables, get_functions, 31923 get_variables}): No need to build the public decls table here. 31924 It's already built by the time the corpus is read from DWARF now. 31925 (corpus::{sort_functions, sort_variables, 31926 maybe_drop_some_exported_decls, get_exported_decls_builder}): 31927 Define new member functions. 31928 * src/abg-dwarf-reader.cc (read_context::exported_decls_builder): 31929 New data member. 31930 (read_context::read_context): Initialize it. 31931 (read_context::{exported_decls_builder, 31932 maybe_add_fn_to_exported_fns, maybe_add_var_to_exported_vars}): 31933 Define new member functions. 31934 (read_debug_info_into_corpus): Get the the new 31935 'exported_decls_builder' object from the corpus and stick it into 31936 the read context so the DWARF reading code can use it to build the 31937 exported decls set. When the DWARF reading is done, sort the set 31938 of exported functions and variables that was built. 31939 (build_ir_node_from_die): When a function or variable is built, 31940 consider putting it into the set of exported decls. 31941 * tools/abicompat.cc (main): Now that the exported decls is built 31942 *before* we had a chance to stick the list of symbol IDs to keep, 31943 call corpus::maybe_drop_some_exported_decls() to update the set of 31944 exported decls we should consider for the corpus. 31945 was applied to that list and the final 31946 319472015-02-22 Dodji Seketeli <dodji@redhat.com> 31948 31949 Fix canonicalizing of member types ... *AGAIN* 31950 * src/abg-dwarf-reader.cc (build_ir_node_from_die): For typedefs, 31951 we don't need to test that the current scope is a class to know 31952 that we are looking at a member type. Just looking at the 31953 is_member flag is enough. 31954 So the issue arises when for instance, we are reading a class that 31955 defines a member typedef (or enum) and uses that enum as the type of a 31956 data member. When reading that data member (before reading the 31957 definition of the typedef), we read the type of the data member; so we 31958 hit the typedef. But build_ir_node_from_die() cannot fully construct 31959 the scope of the typedef before handing off the typedef because we are 31960 currently building it! So it hands out a non-complete version of the 31961 class that is being built; 'is_member' is not set to 'true' because 31962 we are getting the type of the data member; it's not *necessarily* a 31963 member type. So we need to check !is_class_type(scope) to know if we 31964 are given a member type. I am now thinking that the "is_member" flag 31965 is actually useless. I think I'll remove it in a later patch. 31966 Anyway, this fixes 'abidiff libabigail.so libabigail.so' again. I 31967 have some stashed patches that brings it's time down to ~ 45 seconds. 31968 So we are getting close to being able to include that *ultimate* test in 31969 regression test suite. Oh well. 31970 * src/abg-dwarf-reader.cc (build_ir_node_from_die): When building 31971 typedefs, enum and memeber classes, check that the scope is a 31972 member class to detect if we are building a member type. In which 31973 case the caller is going to handle the canonicalizing of the 31974 member type *after* it's access specification has been adjusted. 31975 Otherwise, that adjustments happens after the type has been 31976 canonicalized and bad things happen at comparison type. 31977 319782015-02-21 Dodji Seketeli <dodji@redhat.com> 31979 31980 Bug 17649 Avoid endless looping on diff graph with cycles 31981 * include/abg-comp-filter.h (harm{less,ful}_filter::visit_end): 31982 Declare new methods. 31983 * include/abg-comparison.h (diff_context::maybe_apply_filters): 31984 Remove the traverse_nodes_once flag. 31985 * src/abg-comp-filter.cc (apply_filter): Force the traversing to 31986 operate in cycle avoidance mode. 31987 (harm{less,ful}_filter::visit): Update the category of the 31988 canonical node too. 31989 (harm{less,ful}_filter::visit_end): Define new method. 31990 * src/abg-comparison.cc (diff_context::maybe_apply_filters): 31991 Remove the traverse_nodes_once flag. Adjust. Simplify logic. 31992 (diff::traverse): Always call diff_node_visitor::{begin,end}. If 31993 the node has already been visited previously then do not call 31994 diff_node_visitor::visit() and do not visit the children nodes. 31995 (category_propagation_visitor::visit_end): If the node has 31996 already been visited, then propagate the category from the 31997 canonical nodes of the children nodes. 31998 (propagate_categories): Force the traversing to operate in cycle 31999 avoidance mode. 32000 320012015-02-20 Dodji Seketeli <dodji@redhat.com> 32002 32003 Add missing new line after reporting alignment changes 32004 * src/abg-comparison.cc (distinct_diff::report): After calling 32005 report_size_and_alignment_changes, one needs to add a new line if 32006 some stuff got emitted out the output stream. 32007 320082015-02-20 Dodji Seketeli <dodji@redhat.com> 32009 32010 Add type checking overloads that ease their calling from GDB 32011 * include/abg-fwd.h (is_class_type, is_pointer, is_reference_type) 32012 (is_qualified_type): Declare overloads that take naked (non-smart) 32013 pointers. 32014 * src/abg-ir.cc (is_class_type, is_pointer, is_reference_type) 32015 (is_qualified_type): Define overloads that take naked (non-smart) 32016 pointers. 32017 320182015-02-20 Dodji Seketeli <dodji@redhat.com> 32019 32020 Remove overly eager assert in distinct_diff::report 32021 * src/abg-comparison.cc (distinct_diff::report): Remove over-eager 32022 assert. 32023 320242015-02-20 Dodji Seketeli <dodji@redhat.com> 32025 32026 Factorize late canonicalizing code in the dwarf reader 32027 * src/abg-dwarf-reader.cc 32028 (read_context::{canonicalize_types_scheduled, 32029 perform_late_type_canonicalizing}): Factorize these from ... 32030 (build_translation_unit_and_add_to_ir): ... here. 32031 320322015-02-20 Dodji Seketeli <dodji@redhat.com> 32033 32034 Rename schedule_type_for_canonicalization -> schedule_type_for_late_canonicalization 32035 * src/abg-dwarf-reader.cc 32036 (read_context::schedule_type_for_late_canonicalization): Renamed 32037 read_context::schedule_type_for_canonicalization into this. Also, 32038 add some sanity checking code in there. 32039 (build_class_type_and_add_to_ir, maybe_canonicalize_type): Adjust. 32040 320412015-02-20 Dodji Seketeli <dodji@redhat.com> 32042 32043 Adjust semantics of the 'is_member' flag of build_ir_node_from_die() 32044 * src/abg-dwarf-reader.cc (build_ir_node_from_die): Rename 32045 is_member into is_member_type. Adjust. 32046 (get_scope_for_die, build_translation_unit_and_add_to_ir) 32047 (build_namespace_decl_and_add_to_ir): Adjust. 32048 (build_class_type_and_add_to_ir): Adjust. Adjust set to false 32049 when calling build_ir_node_from_die() to build a function_decl. 32050 320512015-02-20 Dodji Seketeli <dodji@redhat.com> 32052 32053 Simplify canonicalizing handling for typedefs 32054 * src/abg-dwarf-reader.cc (build_ir_node_from_die): For typedefs, 32055 we don't need to test that the current scope is a class to know 32056 that we are looking at a member type. Just looking at the 32057 is_member flag is enough. 32058 320592015-02-20 Dodji Seketeli <dodji@redhat.com> 32060 32061 Do not miss canonicalizing opportunities on non-member class types 32062 * src/abg-dwarf-reader.cc (build_ir_node_from_die): When a class 32063 is not a member type, then it at least ought to be scheduled for 32064 late canonicalizing. 32065 320662015-02-20 Dodji Seketeli <dodji@redhat.com> 32067 32068 Fix handling of canonicalizing of member enum types 32069 * src/abg-dwarf-reader.cc (build_ir_node_from_die): Once we've 32070 built the enum type by calling build_enum_type(), do not try to 32071 canonicalize it here if it's a member type. The calling 32072 build_class_type_and_add_to_ir() must deal with it already. 32073 320742015-02-20 Dodji Seketeli <dodji@redhat.com> 32075 32076 Stick qualified, pointer, reference and array types into the global scope 32077 * src/abg-dwarf-reader.cc (build_class_type_and_add_to_ir): Do not 32078 consider qualified, pointer, reference and array types as member 32079 types. Only typedef, class and enum types are. 32080 (build_ir_node_from_die): Stick base, pointer, reference, 32081 qualified and array types into the global scope. 32082 320832015-02-20 Dodji Seketeli <dodji@redhat.com> 32084 32085 Avoid creating multiple versions of certain composite types 32086 * src/abg-dwarf-reader.cc (build_qualified_type) 32087 (build_pointer_type_def, build_reference_type, build_array_type) 32088 (build_typedef_type): If the composite type we are about to create 32089 was already created, just return the one that exists already. 32090 320912015-02-20 Dodji Seketeli <dodji@redhat.com> 32092 32093 Do not forget to canonicalize enum underlying type and void type 32094 * src/abg-dwarf-reader.cc (build_enum_type): Canoncialize the 32095 underlying type of the enum type. 32096 (build_ir_node_for_void_type): Canonicalize the void type. 32097 320982015-02-20 Dodji Seketeli <dodji@redhat.com> 32099 32100 Do not forget to associate DIE to the types they represent 32101 * src/abg-dwarf-reader.cc (build_type_decl, build_enum_type) 32102 (build_qualified_type, build_pointer_type_def) 32103 (build_reference_type, build_typedef_type) 32104 (build_class_type_and_add_to_ir): Take a new flag that says if the 32105 DIE is from the alternate debug info section or not. Perform the 32106 DIE->type association in these functions. Note that in 32107 build_class_type_and_add_to_ir we are now doing the DIE->type 32108 association even for declaration-only classes. And for member 32109 types, do not bother doing the association because it's already 32110 been done by build_ir_node_from_die(). 32111 (build_ir_node_from_die): Do not do the DIE->type association here 32112 anymore. Adjust to the new signature of the build_* functions 32113 above that actually build the types. 32114 321152015-02-20 Dodji Seketeli <dodji@redhat.com> 32116 32117 Clear per-TU data before reading debub info for a TU 32118 * src/abg-dwarf-reader.cc 32119 (read_context::die_type_map): New accessor for the two DIE->Type 32120 maps we have; the one of the main debug info section and the one 32121 of the alternate debug info section. 32122 (read_context::{associate_die_to_type, 32123 lookup_type_from_die_offset}): use the new die_type_map() 32124 accessor. 32125 (read_context::clear_per_translation_unit_data): Factorize this 32126 from build_translation_unit_and_add_to_ir(). Also, add code to 32127 clear the DIE->type map as well as the vectors of offsets of the 32128 types of the DIEs to canonicalize after the translation unit has 32129 been read. 32130 321312015-02-19 Dodji Seketeli <dodji@redhat.com> 32132 32133 Fix the new regression test for type canonicalizing 32134 * tests/runtestcanonicalizetypes.sh.in (binaries): Refer to 32135 abg-tools-utils, not abg-tools-utils.o; the extension is computed 32136 automatically, depending on the underlying platform. 32137 321382015-02-19 Dodji Seketeli <dodji@redhat.com> 32139 32140 Make strip_typedef() act on canonical types only 32141 * include/abg-fwd.h (is_compatible_with_class_type): Declare new 32142 function. 32143 (canonicalize): Move the declaration here, from ... 32144 * include/abg-ir.h (canonicalize): ... here. 32145 * src/abg-ir.cc (strip_typedef): Assert that the input type is 32146 canonicalized. Make sure that weak references are on 32147 canonicalized types. Make sure that the returned type is a 32148 canonical one. 32149 (canonicalize): Make this return the canonical type that it has 32150 computed. 32151 * src/abg-comp-filter.cc (type_size_changed): Use the new 32152 is_compatible_with_class_type() function, instead of 32153 is_class_type(). 32154 321552015-02-18 Dodji Seketeli <dodji@redhat.com> 32156 32157 Speed up function_decl::get_id() and var_decl::get_id() 32158 * src/abg-ir.cc (var_decl::priv::id_): New data member. 32159 (var_decl::get_id): Cache the result on the first invocation and 32160 and returns it on subsequent invocations. 32161 (function_dec::priv::id_): New data member. 32162 (function_decl::get_id): Cache the result on the first invocation 32163 and and returns it on subsequent invocations. 32164 321652015-02-18 Dodji Seketeli <dodji@redhat.com> 32166 32167 Speed up symbol version reading 32168 * src/abg-dwarf-reader.cc (find_symbol_table_section) 32169 (get_symbol_versionning_sections): Forward declare these existing 32170 static functions. 32171 (read_context::{symtab_section_, 32172 symbol_versionning_sections_loaded_, 32173 symbol_versionning_sections_found_, versym_section_ 32174 verdef_section, verneed_section}): New data members. 32175 (read_context::read_context): Initialize them. 32176 (read_context::{find_symbol_table_section, 32177 get_symbol_versionning_sections, get_version_for_symbol}): 32178 Implement a caching version of their exisiting non-caching 32179 counterpart. 32180 (read_context::lookup_elf_symbol_from_index): Use the new caching 32181 functions read_context::find_symbol_table_section and 32182 read_context::get_version_for_symbol. 32183 (read_context::load_symbol_maps): Likewise, use the new caching 32184 function read_context::find_symbol_table_section. 32185 321862015-02-17 Dodji Seketeli <dodji@redhat.com> 32187 32188 Stop traversing function/variable node when added to symbol table 32189 * src/abg-corpus.cc (symtab_build_visitor_type::visit_begin): 32190 Replace symtab_build_visitor_type::visit_end with this and return 32191 false. 32192 321932015-02-13 Dodji Seketeli <dodji@redhat.com> 32194 32195 Do not apply diff filters sub-tree not carrying changes 32196 * src/abg-comp-filter.cc ({harmless, harmful}_filter::visit): Do 32197 not try to do the categorizing on a diff sub-tree that does 32198 not carry any change. 32199 * src/abg-comparison.cc (diff_context::maybe_apply_filters): Do 32200 not bother trying to apply the filters on a diff sub-tree that 32201 does not carry any change. 32202 322032015-02-13 Dodji Seketeli <dodji@redhat.com> 32204 32205 Canonicalize types either early or late after TU reading 32206 * include/abg-fwd.h (is_class_type) 32207 (type_has_non_canonicalized_subtype): Declare new functions. 32208 (is_member_type): Remove the overload that takes a decl_base_sptr. 32209 It's superfluous. We just need the one that takes a 32210 type_base_sptr. 32211 * include/abg-ir.h (translation_unit::{is_constructed, 32212 set_is_constructed}): Add new methods. 32213 (class_decl::has_virtual_member_functions): Likewise. 32214 (class decl_base): Makes it virtually inherit ir_traversable_base. 32215 (class type_base): Make this virtually inherit traversable_base 32216 too. 32217 (type_base::canonicalize): Renamed enable_canonical_equality 32218 into this. 32219 (type_base::traverse): Declare new virtual method. 32220 (canonicalize): Renamed enable_canonical_equality into this. 32221 (scope_type_decl::traverse): Declare new virtual method. 32222 (namespace_decl::get_pretty_representation): Declare new virtual 32223 method. 32224 (function_type::traverse): Likewise. 32225 (class_decl::base_spec::traverse): Likewise. 32226 (ir_node_visitor::visit): Remove the overloads and replace each of 32227 them with a pair of ... 32228 (ir_node_visitor::{visit_begin, visit_end}): ... of these. 32229 * include/abg-traverse.h (traversable_base::visiting): New 32230 method. 32231 (traversable_base::visiting_): New data member. 32232 (traversable_base::traversable_base): New constructor. 32233 * src/abg-ir.cc ({scope_decl, type_decl, namespace_decl, 32234 qualified_type_def, pointer_type_def, reference_type_def, 32235 array_type_def, enum_type_decl, typedef_decl, var_decl, 32236 function_decl, function_decl::parameter, class_decl, 32237 class_decl::member_function_template, 32238 class_decl::member_class_template, function_tdecl, 32239 class_tdecl}::traverse): Fix this to properly set the 32240 traversable_base::visiting_ flag and to reflect the new signatures 32241 of the ir_node_visitor methods. 32242 ({type_base, scope_type_decl, function_type, 32243 class_decl::base_spec}::traverse): New method. 32244 (type_base::get_canonical_type_for): Handle the case of the type 32245 already having a canonical type. Properly hash the type using the 32246 dynamic type hasher. Look through declaration-only classes to 32247 consider the definition of the class instead. Fix logic to have a 32248 single pointer of return, to ease debugging. 32249 (canonicalize): Renamed enable_canonical_equality into this. 32250 (namespace_decl::get_pretty_representation): Define new method. 32251 (ir_node_visitor::visit): Replace each of these overloads with a 32252 pair of visit_begin/visit_end ones. 32253 (translation_unit::priv::is_constructed_): New data member. 32254 (translation_unit::priv::priv): Initialize it. 32255 (translation_unit::{is_constructed, set_is_constructed}): Define 32256 new methods. 32257 (is_member_type(const decl_base_sptr)): Remove. 32258 (is_class_type(decl_base *d)): Define new function. 32259 (class_decl::has_virtual_member_functions): Define new method. 32260 (equals(const class_decl&, const class_decl&, change_kind*)): If 32261 the containing translation unit is not constructed yet, do not 32262 take virtual member functions in account when comparing the 32263 classes. This is because when reading from DWARF, there can be 32264 DIEs that change the number of virtual member functions after the 32265 DIE of the class. So one needs to start taking virtual members 32266 into account only after the translation unit has been constructed. 32267 (class non_canonicalized_subtype_detector): Define new type. 32268 (type_has_non_canonicalized_subtype): Define new function. 32269 * src/abg-corpus.cc (symtab_build_visitor_type::visit): Renamed 32270 this into symtab_build_visitor_type::visit_end. 32271 * src/abg-dwarf-reader.cc (die_type_map_type): New typedef. 32272 (die_class_map_type): This is now a typedef on a map of 32273 Dwarf_Off/class_decl_sptr. 32274 (read_context::{die_type_map_, alternate_die_type_map_, 32275 types_to_canonicalize_, alt_types_to_canonicalize_}): New data 32276 members. 32277 (read_context::{associate_die_to_decl, 32278 associate_die_to_decl_primary}): Make these methods public. 32279 (read_context::{associate_die_to_type, 32280 lookup_type_from_die_offset, is_wip_class_die_offset, 32281 types_to_canonicalize, schedule_type_for_canonicalization}): 32282 Define new methods. 32283 (build_type_decl, build_enum_type) 32284 (build_class_type_and_add_to_ir, build_qualified_type) 32285 (build_pointer_type_def, build_reference_type, build_array_type) 32286 (build_typedef_type, build_function_decl): Do not canonicalize 32287 types here. 32288 (maybe_canonicalize_type): Define new function. 32289 (build_ir_node_from_die): Take a new flag that says if the ir node 32290 is a member type/function or not. Early-canonicalize base types. 32291 Canonicalize composite types that have only canonicalized 32292 sub-types. Schedule the other types for late canonicalizing. For 32293 class types, early canonicalize those that are non-member types, 32294 that are fully constructed and that have only canonicalized 32295 sub-types. Adjust to the new signature of build_ir_node_from_die. 32296 (get_scope_for_die, build_namespace_decl_and_add_to_ir) 32297 (build_qualified_type, build_pointer_type_def) 32298 (build_reference_type, build_array_type, build_typedef_type) 32299 (build_var_decl, build_function_decl): Adjust for the new 32300 signature of build_ir_node_from_die. 32301 (build_translation_unit_and_add_to_ir): Likewise. Perform the 32302 late canonicalizing of the types that have been scheduled for 32303 that. 32304 (build_class_type_and_add_to_ir): Return a class_decl_sptr, not a 32305 decl_base_sptr. Adjust for the new signature of 32306 build_ir_node_from_die. Early canonicalize member types that are 32307 created and added to a given class, or schedule them for late 32308 canonicalizing. 32309 * src/abg-reader.cc (class read_context::{m_wip_classes_map, 32310 m_types_to_canonicalize}): New data members. 32311 (read_context::{clear_types_to_canonicalize, 32312 clear_wip_classes_map, mark_class_as_wip, unmark_class_as_wip, 32313 is_wip_class, maybe_canonicalize_type, 32314 schedule_type_for_late_canonicalizing, 32315 perform_late_type_canonicalizing}): Add new method definitions. 32316 (read_context::clear_per_translation_unit_data): Call 32317 read_context::clear_types_to_canonicalize(). 32318 (read_translation_unit_from_input): Call 32319 read_context::perform_late_type_canonicalizing() at the end of the 32320 function. 32321 (build_function_decl): Fix the function type canonicalizing (per 32322 translation) that was already in place. Do the canonicalizing of 32323 these only when the type is fully built. Oops. This was really 32324 brokend. Also, when the function type is constructed, consider it 32325 for type canonicalizing. 32326 (build_type_decl): Early canonicalize basic types. 32327 (build_qualified_type_decl, build_pointer_type_def) 32328 (build_pointer_type_def, build_reference_type_def) 32329 (build_array_type_def, build_enum_type_decl, build_typedef_decl): 32330 Handle the canonicalizing for these composite types: either early 32331 or late. 32332 (build_class_decl): Likewise. Also, mark this class a 'being 32333 built' until it's fully built. This helps the canonicalizing code 32334 to know that it should leave a class alone until it's fully built. 32335 * tests/test-ir-walker.cc (struct name_printing_visitor): Adjust 32336 to the visitor methods naming change. 32337 * configure.ac: Generate the tests/runtestcanonicalizetypes.sh 32338 testing script from tests/runtestcanonicalizetypes.sh.in. 32339 * tests/runtestcanonicalizetypes.sh.in: Add the template for the 32340 new runtestcanonicalizetypes.sh script that test for type 32341 canonicalizing. 32342 * tests/Makefile.am: Add the new runtestcanonicalizetypes.sh 32343 regression testing script to the build system. 32344 323452015-02-18 Dodji Seketeli <dodji@redhat.com> 32346 32347 Factorize per TU data clearing in the xml-abi reader 32348 * src/abg-reader.cc 32349 (read_context::clear_per_translation_unit_data): Factorize this 32350 function out of ... 32351 (read_context::read_translation_unit_from_input): ... this one. 32352 323532015-02-13 Dodji Seketeli <dodji@redhat.com> 32354 32355 Use the deep type sptr equality operator when possible 32356 * src/abg-ir.cc (equals): On function_decl overload, use the deep 32357 sptr type equality operator when comparing types. 32358 (non_type_tparameter::operator==): Likewise. 32359 323602015-02-18 Dodji Seketeli <dodji@redhat.com> 32361 32362 Properly compare virtualness of member functions 32363 * src/abg-ir.cc (equals(const function_decl&, const 32364 function_decl&, change_kind*)): Compare virtualness of member 32365 function before comparing their vtable offsets. 32366 323672015-02-13 Dodji Seketeli <dodji@redhat.com> 32368 32369 Misc style fixes 32370 * include/abg-ir.h (reference_type_def::get_pointed_to_type): use 32371 type_base_sptr, rather than shared_ptr<type_base> 32372 (typdef_decl::get_underlying_type): Likewise. 32373 (function_decl::get_return_type): Likewise. 32374 (function_decl::set_type): Likewise. 32375 (class_decl::member_class_template::as_class_tdecl): Likewise. 32376 * src/abg-comparison.cc (compute_diff): Remove useless vertical 32377 space. 32378 (corpus_diff::traverse): Add a vertical space after this. 32379 * src/abg-dwarf-reader.cc (type_ptr_map): Remove this unused 32380 typedef. 32381 (get_version_for_symbol) 32382 (finish_member_function_reading): Fix the comments of these 32383 functions. 32384 * src/abg-reader.cc (build_function_decl): Return a 32385 function_decl_sptr rather than a shared_ptr<function_decl>. 32386 (build_qualified_type_decl) 32387 (build_pointer_type_def, build_reference_type_def) 32388 (build_array_type_def, build_typedef_decl, build_class_decl): Use 32389 the is_<someking_of_type> functions here, rather than using the 32390 dynamic cast. This increases maintainability. 32391 323922015-02-11 Dodji Seketeli <dodji@redhat.com> 32393 32394 Optimize compressed debug info reading for speed 32395 * src/abg-dwarf-reader.cc 32396 (find_last_import_unit_point_before_die): Look for the inclusion 32397 point of the partial unit in reverse topological order. 32398 323992015-02-10 Dodji Seketeli <dodji@redhat.com> 32400 32401 Share private data of class_diff nodes 32402 * src/abg-comparison.cc (class_diff::class_diff): Do not 32403 initialize the private data of class_diff here. 32404 (compute_diff): In the overload for class_diff, initialize the 32405 private data of the new instance of class_diff to the private data 32406 of its canonical instance. 32407 (redundancy_marking_visitor::visit_begin): If a node is marked 32408 redundant, do not dare visit its children. In cases of classes 32409 that have members that reference themselves, this prevents us from 32410 wrongly marking some of the data member changes as being 32411 redundant. 32412 324132015-02-10 Dodji Seketeli <dodji@redhat.com> 32414 32415 Do not crash when applying filters to a NULL diff 32416 * src/abg-comparison.cc (diff_context::maybe_apply_filters): Do 32417 not crash when called with a NULL diff. 32418 324192015-02-09 Dodji Seketeli <dodji@redhat.com> 32420 32421 Initial implementation of canonical type comparison in the IR 32422 * include/abg-ir.h (class type_base): Pimplify this class. 32423 (type_base::canonical_types_map_type): New typedef. 32424 (type_base::{get_canonical_types_map, get_canonical_type_for, 32425 get_canonical_type}): Declare new member functions. 32426 (enable_canonical_equality): Declare new function. 32427 (struct type_base::hash): Declare this functor here. 32428 * src/abg-ir.cc (): 32429 * src/abg-dwarf-reader.cc (build_type_decl, build_enum_type) 32430 (build_class_type_and_add_to_ir, build_qualified_type) 32431 (build_pointer_type_def, build_reference_type, build_array_type) 32432 (build_typedef_type, build_function_decl): Enable canonical 32433 equality for the resulting type returned by these functions. 32434 * src/abg-hash.cc (type_base::hash::operator()(const type_base&)): 32435 Adjust as this is now out-of-line. Also, add two overloads for 32436 type_base* and type_base_sptr. 32437 (struct type_base::priv): Define new type for private data of 32438 type_base. 32439 (type_base::{get_canonical_types_map, get_canonical_type_for, 32440 get_canonical_type}): Define new member functions. 32441 (enable_canonical_equality): Define new function 32442 (type_base::{type_base, set_size_in_bits, get_size_in_bits, 32443 set_alignment_in_bits, get_alignment_in_bits}): Adjust. 32444 ({type_decl, scope_type_decl, qualified_type_def, 32445 pointer_type_def, reference_type_def, array_type_def, 32446 enum_type_decl, typedef_decl, function_type, 32447 class_decl}::operator==): If the types being compared have 32448 canonical type then use them for comparison. 32449 324502015-02-07 Dodji Seketeli <dodji@redhat.com> 32451 32452 Don't walk the diff tree when there are no suppressions 32453 * src/abg-comparison.cc (apply_suppressions): Do not walk the diff 32454 tree to apply suppressions when there are no suppressions to 32455 apply. 32456 324572015-02-07 Dodji Seketeli <dodji@redhat.com> 32458 32459 Speedup some diff::has_changes() implementations 32460 * src/abg-comparison.cc ({distinct_diff, var_diff, 32461 class_diff}::has_changes): Use the hash value of the diff subjects 32462 to detect quickly if they differ. If they don't, then go the slow 32463 path of comparing the types. 32464 324652015-02-05 Dodji Seketeli <dodji@redhat.com> 32466 32467 Get out as early as possible when comparing different ABI artefacts 32468 * include/abg-ir.h (equal): Turn the last parameter of type 32469 change_kind& into a change_kind*. Do this on all the overloads' 32470 declarations. 32471 * src/abg-ir.cc (equal): Do the same for the definitions of the 32472 overloads and adapt them to report about the kind of changes makes 32473 the two ABI artifact different -- only if the change_kind pointer 32474 is non-null. That way, callers have a way to choose if they want 32475 to go the expensive route of knowing what kind of changes there 32476 are. 32477 ({decl_base, scope_decl, type_base, scope_type_decl, 32478 qualified_type_def, pointer_type_def, pointer_type_def, 32479 reference_type_def, array_type_def, enum_type_decl, typedef_decl, 32480 var_decl, function_type, function_decl, function_decl::parameter, 32481 class_decl::base_spec, class_decl}::operator==): Adjust to the new 32482 signature of equals; call it with the change_kind* parameter set 32483 to NULL. 32484 * src/abg-comparison.cc ({var_diff, pointer_diff, array_diff, 32485 reference_diff, qualified_type_diff, enum_diff, class_diff, 32486 base_diff, scope_diff, fn_parm_diff, function_decl_diff, 32487 type_decl_diff, typedef_diff}::has_local_changes): Adjust. 32488 324892015-02-05 Dodji Seketeli <dodji@redhat.com> 32490 32491 Rename diff::length() into diff::has_changes() 32492 * include/abg-comparison.h (*::has_changes): Rename the ::length() 32493 method of all the diff types that inherit the diff class into 32494 this, in the class declarations. 32495 * src/abg-comparison.cc (*::has_changes): Do the same as in the 32496 declarations, in the definitions. 32497 (diff::to_be_reported, distinct_diff::has_local_changes) 32498 (distinct_diff::report, distinct_diff::, array_diff::has_changes) 32499 (reference_diff::has_changes, qualified_type_diff::has_changes) 32500 (enum_diff::has_changes, translation_unit_diff::has_changes) 32501 (suppression_categorization_visitor::visit_end) 32502 (redundancy_marking_visitor::visit_begin): Adjust. 32503 * tests/test-diff-dwarf.cc (main): Adjust. 32504 * tools/abidiff.cc (main): Likewise. 32505 325062015-01-27 Dodji Seketeli <dodji@redhat.com> 32507 32508 Add a method to diff_context to dump a diff tree to error output 32509 * include/abg-comparison.h (diff_context::error_output_stream): 32510 Make this function const. 32511 (diff_context::{do_dump_diff_tree}): Declare new methods. 32512 * src/abg-comparison.cc (diff_context::error_output_stream): Make 32513 this function const. 32514 (diff_context::do_dump_diff_tree): Define new methods. 32515 325162015-01-27 Dodji Seketeli <dodji@redhat.com> 32517 32518 Keep children nodes of class_diff and scope_diff sorted 32519 * include/abg-comparison.h (decl_diff_base, type_diff_base): 32520 Forward declare these types. 32521 (diff_sptrs_type, decl_diff_base_sptr, decl_diff_base_sptrs_type) 32522 (type_diff_base_sptr, type_diff_base_sptrs_type) 32523 (base_diff_sptrs_type, string_type_diff_base_sptr_map) 32524 (string_decl_diff_base_sptr_map, string_diff_sptr_map): New 32525 typedefs. 32526 (changed_type_or_decl, changed_parm, changed_parms_type) 32527 (string_changed_type_or_decl_map) 32528 (unsigned_changed_type_or_decl_map, changed_type_or_decl_vector): 32529 Remove typedefs. 32530 (class_diff::changed_base): Make this return a 32531 base_diff_sptrs_type now. No more a string_base_diff_sptr_map. 32532 (class_diff::changed_member_fns): Make this return a 32533 function_decl_diff_sptrs_type, no more a 32534 string_changed_member_function_sptr_map. 32535 (class_diff::changed_types): Make this return a diff_sptrs_type, 32536 not a string_changed_type_or_decl_map anymore. 32537 (class_diff::changed_decls): Make this return a diff_sptrs_type, 32538 not a string_changed_type_or_decl_map anymore. 32539 * src/abg-comp-filter.cc (has_virtual_mem_fn_change) 32540 (has_non_virtual_mem_fn_change): Adjust. 32541 * src/abg-comparison.cc (compute_diff): For the decl_base_sptr and 32542 type_base_sptr overloads, assert that the resulting diff is 32543 non-null. 32544 (class_diff::priv::{sorted_changed_base_, 32545 sorted_changed_member_types_, sorted_subtype_changed_dm_, 32546 sorted_changed_dm_, sorted_changed_member_functions_, 32547 sorted_changed_member_class_tmpls_}): New data members. 32548 (class_diff::priv::changed_member_types_): Changed the type of 32549 this from string_changed_type_or_decl_map to string_diff_sptr_map. 32550 (class_diff::priv::changed_member_functions_): Changed the type of 32551 this from string_changed_member_function_sptr_map to 32552 string_function_decl_diff_sptr_map. 32553 (class_diff::priv::changed_member_class_tmpls_): Changed the type 32554 of this from string_changed_type_or_decl_map to 32555 string_diff_sptr_map. 32556 (class_diff::ensure_lookup_tables_populated): Adjust. Initialize 32557 the new sorted members class_diff::priv::{sorted_changed_bases_, 32558 sorted_subtype_changed_dm_, sorted_changed_dm_, 32559 sorted_changed_member_functions_, sorted_changed_member_types_}. 32560 (class_diff::priv::{member_type_has_changed, 32561 member_class_tmpl_has_changed, count_filtered_bases, 32562 count_filtered_subtype_changed_dm, count_filtered_changed_mem_fns, 32563 }): Adjust. 32564 (class_diff::chain_into_hierarchy): Adjust: The children nodes of 32565 class_diff are now laid out in a sorted way. 32566 (class_diff::{changed_bases, changed_member_fns}): Adjust. 32567 (base_diff_comp, virtual_member_function_diff_comp): New types. 32568 (sort_string_base_diff_sptr_map) 32569 (sort_string_virtual_member_function_diff_sptr_map): New static 32570 functions. 32571 (data_member_diff_comp): Renamed var_diff_comp into this. 32572 (sort_unsigned_data_member_diff_sptr_map): Renamed sort_var_diffs 32573 into this and adjust. 32574 (class_diff::report): Do not sort the nodes we are about to emit 32575 here. Just use the natural order of the nodes in their parent 32576 tree as they should now be sorted. 32577 (scope_diff::priv::{changed_types_, changed_decls_}): Change the 32578 type of these from string_changed_type_or_decl_map to 32579 string_diff_sptr_map. 32580 (scope_diff::priv::{sorted_changed_types_, 32581 sorted_changed_decls_}): New data members. 32582 (scope_diff::ensure_lookup_tables_populated): Adjust. Initialize 32583 the new scope_diff::priv::sorted_changed_{types_, decls_}. 32584 (scope_diff::chain_into_hierarchy): Adjust. The children of 32585 scope_diff are now sorted. 32586 (scope_diff::changed_{types, decls}): Return the sorted vectors of 32587 children nodes. 32588 (struct changed_type_or_decl_comp): Remove. 32589 (struct diff_comp): New type. 32590 (sort_changed_type_or_decl): Remove. 32591 (sort_string_diff_sptr_map): New static function. 32592 (scope_diff::report): Adjust. Do not sort children nodes here 32593 ourselves before reporting about them. Rather, use the natural 32594 topological order of the children as they are now sorted. 32595 (corpus_diff::priv::sorted_changed_vars_): Renamed 32596 corpus_diff::priv::changed_vars_ into this to make it more 32597 explicit that the things it holds are sorted. 32598 (corpus_diff::changed_variables_sorted): Adjust. 32599 (corpus_diff::priv::ensure_lookup_tables_populated): Likewise. 32600 (corpus_diff::priv::apply_filters_and_compute_diff_stats): 32601 Likewise. 32602 (corpus_diff::priv::categorize_redundant_changed_sub_nodes): 32603 Likewise. 32604 (corpus_diff::priv::clear_redundancy_categorization): Likewise. 32605 (corpus_diff::priv::maybe_dump_diff_tree): Likewise. 32606 (corpus_diff::report): Likewise. 32607 326082015-01-26 Dodji Seketeli <dodji@redhat.com> 32609 32610 Hand-code the string representation of GElf_Ehdr::e_machine 32611 * configure.ac: Do not check for elfutils/libebl.h and libebl.a 32612 anymore. 32613 * src/abg-dwarf-reader.cc: Do not include elfutils/libebl.h 32614 anymore. 32615 (e_machine_to_string): Define new static 32616 function. 32617 (read_context::::load_elf_architecture): Use the new 32618 e_machine_to_string() function rather than ebl_backend_name() and 32619 ebl_openbackend(). 32620 * tests/data/test-diff-dwarf/test-23-diff-arch-report-0.txt: Adjust. 32621 326222015-01-26 Dodji Seketeli <dodji@redhat.com> 32623 32624 Fix chaining of descendant node of qualified type diff node 32625 * include/abg-comparison.h 32626 (qualified_type_diff::leaf_underlying_type_diff): Declare new 32627 accessor. 32628 * src/abg-comparison.cc (get_leaf_type): Forward declare this 32629 static function. 32630 (qualified_type_diff::priv::leaf_underlying_type_diff): Define new 32631 data member. 32632 (qualified_type_diff::leaf_underlying_type_diff): Define this new 32633 accessor. 32634 (qualified_type_diff::chain_into_hierarchy): Call 32635 leaf_underlying_type_diff() here rather than 32636 underlying_type_diff(). 32637 (qualified_type_diff::report): Use leaf_underlying_type_diff() 32638 rather than re-computing the diff between the two leaf underlying 32639 type diff nodes. 32640 * libtest26-qualified-redundant-node-v{0,1}.so: New binary test 32641 input files. 32642 * tests/data/test-diff-filter/test26-qualified-redundant-node-v{0,1}.cc: 32643 Source code for the binary test inputs above. 32644 * tests/test-diff-filter.cc (int_out_spec): Add the new test input 32645 to the vector of test input data over which to run this test 32646 harness. 32647 * tests/data/test-diff-filter/test26-qualified-redundant-node-report-{0,1.txt: 32648 New test input file. 32649 * tests/data/Makefile.am: Add the new test input data to the 32650 source distribution. 32651 326522015-01-24 Dodji Seketeli <dodji@redhat.com> 32653 32654 Recognize cyclic diff tree nodes as being redundant 32655 * include/abg-comparison.h (enum visiting_kind): Rename 32656 enumerator DO_NOT_MARK_VISITED_NODES_AS_TRAVERSED into 32657 DO_NOT_MARK_VISITED_NODES_AS_VISITED. 32658 (diff_context::diff_has_been_visited): Rename 32659 diff_context::diff_has_been_traversed into this. 32660 (diff_context::mark_diff_as_visited): Rename 32661 diff_context::mark_diff_as_traversed into this. 32662 (diff_context::forget_visited_diffs): Rename 32663 diff_context::forget_traversed_diffs into this. 32664 (diff_context::forbid_visiting_a_node_twice): Rename 32665 diff_context::forbid_traversing_a_node_twice into this. 32666 (diff_context::visiting_a_node_twice_is_forbidden): Rename 32667 diff_context::traversing_a_node_twice_is_forbidden into this. 32668 (diff::is_traversing): Move this from protected to public. 32669 * src/abg-comparison.cc (diff_context::priv::visited_diff_nodes_): 32670 Rename diff_context::priv::traversed_diff_nodes_ into this. 32671 (diff_context::priv::forbid_visiting_a_node_twice_): Rename 32672 diff_context::priv::forbid_traversing_a_node_twice_ into this. 32673 (diff_context::priv::priv): Adjust. 32674 (diff_context::diff_has_been_visited): Rename 32675 diff_context::diff_has_been_traversed into this. Adjust. 32676 (diff_context::mark_diff_as_visited): Rename 32677 diff_context::mark_diff_as_traversed into this. Adjust. 32678 (diff_context::forget_visited_diffs): Rename 32679 diff_context::forget_traversed_diffs into this. Adjust. 32680 (diff_context::forbid_visiting_a_node_twice): Rename 32681 diff_context::forbid_traversing_a_node_twice into this. 32682 (diff_context::visiting_a_node_twice_is_forbidden): Rename 32683 diff_context::traversing_a_node_twice_is_forbidden into this. 32684 (diff_context::maybe_apply_filters): Adjust. 32685 (diff::end_traversing): Remove the 'mark_as_traversed' parameter 32686 of this. Remove the visited-marking code. 32687 (diff::traverse): This is the crux of the changes of this patch. 32688 Avoid traversing a node that is being traversed, but one can visit 32689 a node being visited. Also, traversing a node means visiting it 32690 and visiting its children nodes. 32691 (diff::is_filtered_out): Simplify logic for filtering redundant 32692 code. Basically all nodes that are redundant are filtered. All 32693 the complicated logic that was due when diff nodes were shared is 32694 not relevant anymore. 32695 (corpus_diff::priv::categorize_redundant_changed_sub_nodes) 32696 (propagate_categories, apply_suppressions) 32697 (diff_node_printer::diff_node_printer, print_diff_tree) 32698 (categorize_redundant_changed_sub_nodes) 32699 (clear_redundancy_categorization) 32700 (clear_redundancy_categorization): Adjust. 32701 (redundancy_marking_visitor::visit_begin): Adjust. Also, if the 32702 current diff node is already being traversed (that's a clyclic 32703 node) then mark it as redundant. 32704 * src/abg-comp-filter.cc (apply_filter): Adjust. 32705 * tests/data/test-diff-filter/test16-report-2.txt: New test input data. 32706 * tests/data/test-diff-filter/libtest25-cyclic-type-v{0,1}.so: New 32707 test input binaries. 32708 * tests/data/test-diff-filter/test25-cyclic-type-v{0,1}.cc: Source 32709 code for the test input binaries. 32710 * tests/data/test-diff-filter/test25-cyclic-type-report-0.txt: New 32711 test input data. 32712 * tests/data/test-diff-filter/test25-cyclic-type-report-1.txt: 32713 Likewise. 32714 * tests/test-diff-filter.cc (in_out_specs): Add the new test 32715 inputs above to the list of test input data over which to run this 32716 test harness. 32717 * tests/data/Makefile.am: Add the new test files above to source 32718 distribution. 32719 * tests/data/test-diff-filter/test16-report.txt: Adjust. 32720 * tests/data/test-diff-filter/test17-0-report.txt: Likewise. 32721 327222015-01-20 Dodji Seketeli <dodji@redhat.com> 32723 32724 Tighten the condition for creating a cloned function from DWARF 32725 * src/abg-dwarf-reader.cc (build_ir_node): Re-indent. Also, 32726 consider that when a DIE C refers to a DIE A via the 32727 DW_abstract_origin attribute, C represents a clone of A, only if C 32728 and A have *different* linkage names. 32729 327302015-01-19 Dodji Seketeli <dodji@redhat.com> 32731 32732 Fix the output of the array diff report 32733 * src/abg-comparison.cc (array_diff::report): Refer to the pretty 32734 representation of the array when talking about changes of the 32735 array element type. 32736 * src/abg-ir.cc (equals): In the overload for array_type, use the 32737 equality operator that knows how to handle null pointers to 32738 element type. This avoids crashes when the pointer to element 32739 type is null. 32740 * tests/data/test-diff-dwarf/test10-report.txt: Adjust. 32741 * tests/data/test-diff-filter/test24-compatible-vars-report-1.txt: 32742 Likewise. 32743 327442015-01-14 Dodji Seketeli <dodji@redhat.com> 32745 32746 Do not install the generated documentation by default 32747 * doc/manuals/Makefile.am: Do not install the generated 32748 documentation by default 32749 327502015-01-14 Dodji Seketeli <dodji@redhat.com> 32751 32752 Make sure to install html docs & gziped info on make install 32753 * doc/manuals/Makefile.am: Make sure Make sure to install html 32754 docs & gziped info on make install 32755 327562015-01-14 Dodji Seketeli <dodji@redhat.com> 32757 32758 Do not install the abinilint program 32759 * tools/Makefile.am: Add abinilint to the noinst_PROGRAMS primary. 32760 327612015-01-13 Dodji Seketeli <dodji@redhat.com> 32762 32763 Small grammar fix in a manpage title 32764 * doc/manuals/conf.py: Fix the grammar of the title of the abidiff 32765 man page. 32766 327672015-01-13 Dodji Seketeli <dodji@redhat.com> 32768 32769 Generate texinfo documentation properly 32770 * doc/manuals/Makefile.am: Generate texinfo doc, install it and 32771 uninstall it. 32772 * doc/manuals/libabigail-tools.rst: Do not use the :doc: syntax to 32773 refer to documents because it doesn't seem to work with sphinx 32774 right now. Rather, use a table of content. 32775 327762015-01-13 Dodji Seketeli <dodji@redhat.com> 32777 32778 Fix man pages installation 32779 * doc/manuals/Makefile.am: Install the man pages only if they are 32780 generated. 32781 327822015-01-13 Dodji Seketeli <dodji@redhat.com> 32783 32784 Bump the candidate version of the library to 1.0 32785 * configure.ac: Bump version to 1.0.0 32786 327872015-01-13 Dodji Seketeli <dodji@redhat.com> 32788 32789 Do not forget to install the Manpages 32790 * doc/manuals/Makefile.am: Add the man pages to the man7_MANS 32791 automake primary. 32792 327932015-01-13 Dodji Seketeli <dodji@redhat.com> 32794 32795 Adjust archive-related code for the recent addition of tools_utils::* 32796 * tests/Makefile.am: tools/libtoolsutils.la is no more. 32797 * tests/test-write-read-archive.cc (main): Adjust. 32798 * tools/abiar.cc (extract_tus_from_archive): Likewise. 32799 328002015-01-13 Dodji Seketeli <dodji@redhat.com> 32801 32802 Generate Manpages for abidiff, abidw, abilint 32803 * doc/manuals/conf.py: Define man pages for abidiff, abidw, 32804 abilint and an introductory one for libabigail. 32805 328062015-01-09 Dodji Seketeli <dodji@redhat.com> 32807 32808 Sort functions & variables diff nodes in the diff tree 32809 * include/abg-comparison.h (function_decl_diff_sptrs_type) 32810 (var_diff_sptrs_type): New typedefs. 32811 (corpus_diff::{changed_functions, changed_variables}): Declare new 32812 methods. 32813 * src/abg-comparison.cc (sort_string_function_decl_diff_sptr_map) 32814 (sort_string_var_diff_sptr_map): Forward declare these static 32815 functions there were already defined later. 32816 (struct diff_less_than_functor): Define new comparison functor. 32817 (diff::append_child_node): Sort the children diff nodes of a given 32818 diff node. 32819 (corpus_diff::priv::changed_fns_map_): Renamed the data member 32820 corpus_diff::priv::changed_fns_ into this. 32821 (corpus_diff::priv::changed_fns_): New data member that is a 32822 sorted vector of changed functions. 32823 (corpus_diff::priv::{lookup_tables_empty, clear_lookup_tables}): 32824 Adjust changed_fns_ -> changed_fns_map_ and changed_vars_ -> 32825 changed_vars_map_. 32826 (corpus_diff::priv::ensure_lookup_tables_populated): Likewise. 32827 Sort the changed functions and changed variables. 32828 (corpus_diff::priv::apply_filters_and_compute_diff_stats): Adjust 32829 changed_fns_ -> changed_fns_map_ and changed_vars_ -> 32830 changed_vars_map_. Also, walk the changed functions and variables 32831 diff nodes in their sorted order. 32832 (corpus_diff::priv::{categorize_redundant_changed_sub_nodes, 32833 clear_redundancy_categorization, maybe_dump_diff_tree}): Walk the 32834 changed functions and variables diff nodes in their sorted order. 32835 * include/abg-ir.h 32836 (function_decl::get_pretty_representation_of_declarator): 32837 Declarenew method. 32838 * src/abg-ir.cc 32839 (function_decl::get_pretty_representation_of_declarator): Define 32840 new function. Its content got split out of ... 32841 (function_decl::get_pretty_representation): ... this one. 32842 * src/abg-comparison.cc (corpus_diff::chain_into_hierarchy): 32843 Consider the sorted the children nodes of a diff tree node. 32844 (corpus_diff::append_child_node): Keep the children nodes of a 32845 diff tree node sorted. 32846 (corpus_diff::{changed_functions, changed_variables, length, 32847 report}): Adjust. 32848 (corpus_diff::{changed_functions_sorted, 32849 changed_variables_sorted}): Define new functions. 32850 (function_comp::operator()): First compare the qualified function 32851 names along with the parameter declarations, then the rest. 32852 (sort_string_function_decl_diff_sptr_map) 32853 (sort_string_var_diff_sptr_map): Adjust. 32854 * tests/data/test-abicompat/test0-fn-changed-report-0.txt: Adjust. 32855 * tests/data/test-diff-suppr/test5-fn-suppr-report-0.txt: Adjust. 32856 * tests/data/test-diff-suppr/test8-redundant-fn-report-0.txt: 32857 Adjust. 32858 328592015-01-09 Dodji Seketeli <dodji@redhat.com> 32860 32861 Fix logic of function parmeters diff redundancy detection 32862 * src/abg-comparison.cc (redundancy_marking_visitor::visit_begin): 32863 For a given function parameter diff node N, we were comparing it 32864 against the other parmeter diff nodes of the function. This 32865 change ensures that we do not compare N against itself. 32866 328672015-01-09 Dodji Seketeli <dodji@redhat.com> 32868 32869 Update copyright year for tests/test-abicompat.cc 32870 * tests/test-abicompat.cc: Update copyright year. 32871 328722015-01-09 Dodji Seketeli <dodji@redhat.com> 32873 32874 Enhance the format of the diff tree dumping report 32875 * src/abg-comparison.cc (diff_node_printer::do_indent): New 32876 method. 32877 (diff_node_printer::visit): Use diff_node_printer::do_indent(). 32878 Print the addresses of the diff tree node and its canonical node. 32879 Add some vertical spaces and some indenting to make the report 32880 more readable. 32881 328822015-01-08 Dodji Seketeli <dodji@redhat.com> 32883 32884 Expose a new libabigail::tools_utils namespace 32885 * include/abg-tools-utils.h: Moved tools/abg-tools-utils.h in 32886 here. Renamed the namespace tools into tools_utils. Inject 32887 std::ostream, std::istream, std::ifstream, and std::string types 32888 into the tools_utils namespace. Adjust the function declarations 32889 accordingly. Remove the useless dirname() function declaration. 32890 * include/Makefile.am: Add abg-tools-utils.h to the list of 32891 exported headers. 32892 * src/abg-tools-utils.cc: Moved tools/abg-tools-utils.cc in here. 32893 Renamed the namespace tools into tools_utils. 32894 (get_stat): Add apidoc. 32895 (is_dir): Cleanup apidoc. 32896 (dir_name); Cleanup parameter name. 32897 (guess_file_type): Cleanup parameter type. 32898 * src/Makefile.am: Add abg-tools-utils.cc to the list of exported 32899 headers. 32900 * tools/Makefile.am: Do not build the temporary library 32901 libtoolsutils.la anymore as abg-tools-utils.{h,cc} have moved out 32902 of this directory. 32903 * tools/abicompat.cc (parse_command_line, main): Adjust for tools 32904 -> tools_utils namespace change. 32905 * tools/abidiff.cc (parse_command_line, main): Likewise. 32906 * tools/abidw.cc (parse_command_line, main): Likewise. 32907 * tools/abilint.cc (parse_command_line, main): Likewise. 32908 * tests/test-abicompat.cc (main): Adjust for tools -> tools_utils 32909 namespace change. 32910 * tests/test-abidiff.cc (main): Likewise. 32911 * tests/test-alt-dwarf-file.cc (main): Likewise. 32912 * tests/test-core-diff.cc (main): Likewise. 32913 * tests/test-diff-dwarf.cc (main): Likewise. 32914 * tests/test-diff-filter.cc (main): Likewise. 32915 * tests/test-diff-suppr.cc (main): Likewise. 32916 * tests/test-lookup-syms.cc (main): Likewise. 32917 * tests/test-read-dwarf.cc (main): Likewise. 32918 * tests/test-read-write.cc (main): Likewise. 32919 * tests/Makefile.am: Do not reference the libtoolsutils.la private 32920 library anymore. 32921 329222015-01-07 Dodji Seketeli <dodji@redhat.com> 32923 32924 Update copyright years 32925 * include/abg-comp-filter.h: Update copyright years. 32926 * include/abg-comparison.h: Likewise. 32927 * include/abg-config.h: Likewise. 32928 * include/abg-corpus.h: Likewise. 32929 * include/abg-diff-utils.h: Likewise. 32930 * include/abg-dwarf-reader.h: Likewise. 32931 * include/abg-fwd.h: Likewise. 32932 * include/abg-hash.h: Likewise. 32933 * include/abg-ini.h: Likewise. 32934 * include/abg-ir.h: Likewise. 32935 * include/abg-libxml-utils.h: Likewise. 32936 * include/abg-libzip-utils.h: Likewise. 32937 * include/abg-reader.h: Likewise. 32938 * include/abg-sptr-utils.h: Likewise. 32939 * include/abg-traverse.h: Likewise. 32940 * include/abg-viz-common.h: Likewise. 32941 * include/abg-viz-dot.h: Likewise. 32942 * include/abg-viz-svg.h: Likewise. 32943 * include/abg-writer.h: Likewise. 32944 * src/abg-comp-filter.cc: Likewise. 32945 * src/abg-comparison.cc: Likewise. 32946 * src/abg-config.cc: Likewise. 32947 * src/abg-corpus.cc: Likewise. 32948 * src/abg-diff-utils.cc: Likewise. 32949 * src/abg-dwarf-reader.cc: Likewise. 32950 * src/abg-hash.cc: Likewise. 32951 * src/abg-ini.cc: Likewise. 32952 * src/abg-ir.cc: Likewise. 32953 * src/abg-libxml-utils.cc: Likewise. 32954 * src/abg-libzip-utils.cc: Likewise. 32955 * src/abg-reader.cc: Likewise. 32956 * src/abg-traverse.cc: Likewise. 32957 * src/abg-viz-common.cc: Likewise. 32958 * src/abg-viz-dot.cc: Likewise. 32959 * src/abg-viz-svg.cc: Likewise. 32960 * src/abg-writer.cc: Likewise. 32961 * tests/print-diff-tree.cc: Likewise. 32962 * tests/test-abidiff.cc: Likewise. 32963 * tests/test-alt-dwarf-file.cc: Likewise. 32964 * tests/test-core-diff.cc: Likewise. 32965 * tests/test-diff-dwarf.cc: Likewise. 32966 * tests/test-diff-filter.cc: Likewise. 32967 * tests/test-diff-suppr.cc: Likewise. 32968 * tests/test-diff2.cc: Likewise. 32969 * tests/test-ir-walker.cc: Likewise. 32970 * tests/test-lookup-syms.cc: Likewise. 32971 * tests/test-read-dwarf.cc: Likewise. 32972 * tests/test-read-write.cc: Likewise. 32973 * tests/test-utils.cc: Likewise. 32974 * tests/test-utils.h: Likewise. 32975 * tests/test-write-read-archive.cc: Likewise. 32976 * tools/abg-tools-utils.cc: Likewise. 32977 * tools/abg-tools-utils.h: Likewise. 32978 * tools/abiar.cc: Likewise. 32979 * tools/abidiff.cc: Likewise. 32980 * tools/abidw.cc: Likewise. 32981 * tools/abilint.cc: Likewise. 32982 * tools/abisym.cc: Likewise. 32983 * tools/binilint.cc: Likewise. 32984 329852015-01-07 Dodji Seketeli <dodji@redhat.com> 32986 32987 Detect and report changes in ELF architecture 32988 * configure.ac: Detect the presence of libebl.a and add it to the 32989 list of library we depend on to build libabigail. Report when 32990 libelf.so is not found. 32991 * include/abg-comparison.h: 32992 (diff_context::show_architecture_change): Declare new accessors. 32993 (corpus_diff::architecture_changed): Declare new method. 32994 * include/abg-corpus.h (corpus::{get,set}_architecture_name): 32995 Declare new accessors. 32996 * src/abg-comparison.cc 32997 (diff_context::priv::show_architecture_change_): New data member. 32998 (diff_context::priv::priv): Initialize it. 32999 (diff_context::show_architecture_change): Define new accessors. 33000 (function_decl_diff::report): Report when the size/alignment of 33001 the function address changes. 33002 (corpus_diff::priv::architectures_equal_): New data member. 33003 (corpus_diff::priv::priv): Initialize it. 33004 (corpus_diff::priv::emit_diff_stats): Take in account changes of 33005 architecture. 33006 (corpus_diff::architecture_changed): Define new method. 33007 (corpus_diff::length): Take in account changes of architecture. 33008 (corpus_diff::report): Report about changes of architecture. 33009 (compute_diff): In the overload for corpus_diff_sptr, detect 33010 changes fo architecture. 33011 * src/abg-corpus.cc (corpus_priv::architecture_name): Define new 33012 data member. 33013 (corpus::{get,set}_architecture_name): Define new method. 33014 * src/abg-dwarf-reader.cc: Include elfutils/libebl.h to use 33015 ebl_openbackend() and ebl_backend_name() 33016 (read_context::elf_architecture_): Define new data member. 33017 (read_context::elf_architecture): Define new accessor. 33018 (read_context::{load_elf_architecture, load_remaining_elf_data}): 33019 Define new methods. 33020 (read_corpus_from_elf): Use ctxt.load_remaining_elf_data() in lieu 33021 of ctxt.load_dt_soname_and_needed. Stick the architecture into 33022 the corpus. 33023 * src/abg-reader.cc (read_corpus_from_input): Read the 33024 'architecture' XML property. 33025 * src/abg-writer.cc (write_corpus_to_native_xml): Write the 33026 'architecture' XML property. 33027 * tests/data/test-diff-dwarf/libtest-23-diff-arch-v0-32.so: New 33028 test input file. 33029 * tests/data/test-diff-dwarf/libtest-23-diff-arch-v0-64.so: 33030 Likewise. 33031 * tests/data/test-diff-dwarf/test-23-diff-arch-report-0.txt: 33032 Likewise. 33033 * tests/data/test-diff-dwarf/test-23-diff-arch-v0.cc: Source code 33034 for the binary test input files above. 33035 * tests/data/Makefile.am: Add the new test input files to the 33036 source distribution. 33037 * tests/test-diff-dwarf.cc (in_out_specs): Add the new test input 33038 data to the set of input data to run this test harness over. 33039 * tests/test-read-dwarf.cc (main): Do not take the architecture in 33040 account during comparisons. 33041 330422015-01-05 Sinny Kumari <skumari@redhat.com> 33043 33044 Include libabigail-website.doxy file in EXTRA_DIST 33045 * doc/Makefile.am: Include website/libabigail-website.doxy 33046 file in EXTRA_DIST 33047 330482015-01-06 Dodji Seketeli <dodji@redhat.com> 33049 33050 Delete ltsugar.m4 and pkg.m4 files from m4/ 33051 * m4/ltsugar.m4: Removed. 33052 * m4/pkg.m4: Likewise. 33053 330542014-12-27 Dodji Seketeli <dodji@redhat.com> 33055 33056 Enable parallel tests 33057 * configure.ac (AM_INIT_AUTOMAKE): Enable parallel tests by 33058 switching on the parallel-tests option. 33059 330602014-12-27 Dodji Seketeli <dodji@redhat.com> 33061 33062 Add a --dump-diff-tree to abidiff for debugging purposes 33063 * include/abg-comparison.h (enum visiting_kind): Add new 33064 DO_NOT_MARK_VISITED_NODES_AS_TRAVERSED enumerator. 33065 (diff_context::{default_output_stream, error_output_stream, 33066 dump_diff_tree}): Declare new accessors. 33067 (diff::end_traversing): Take a new boolean flag. 33068 (print_diff_tree): Add new overload for diff_sptr. 33069 * src/abg-comparison.cc 33070 (diff_context::priv::{default_output_stream_, 33071 error_output_stream_, dump_diff_tree_}): New data members. 33072 (priv::priv): Initialize them. 33073 (diff_context::{default_output_stream_, error_output_stream_, 33074 dump_diff_tree, dump_diff_tree}): Define new accessors. 33075 (diff::end_traversing): Take a new flag that control whether or 33076 not to mark the current diff node as having been traversed. 33077 (diff::traverse): Take in account the visiting kind carried by the 33078 visitor to determine if the visited node should be marked as being 33079 traversed. 33080 (corpus_diff::priv::maybe_dump_diff_tree): Define new member 33081 function. 33082 (corpus_diff::report): Call it. 33083 (diff_node_printer::visit): Pretty print the diff node just once. 33084 (print_diff_tree): Define a new overload for diff_sptr. 33085 * tools/abidiff.cc (options::dump_diff_tree): New data member. 33086 (options::options): Initialize it. 33087 (display_usage): Add a help string for the new --dump-diff-tree 33088 command line switch. 33089 (parse_command_line): Parse the new --dump-diff-tree command line 33090 switch. 33091 (set_diff_context_from_opts): Set the diff context according to 33092 the --dump-diff-tree presence. 33093 * doc/manuals/abidiff.rst: Add a bullet point for the new 33094 --dump-diff-tree command line switch. 33095 330962014-12-27 Dodji Seketeli <dodji@redhat.com> 33097 33098 Fix typos in the abicompat manual 33099 * doc/manuals/abicompat.rst: Fix typos. 33100 331012014-12-27 Dodji Seketeli <dodji@redhat.com> 33102 33103 Fix a typo in the abidiff manual 33104 * doc/manuals/abidiff.rst: Fix a typo. 33105 331062014-12-27 Dodji Seketeli <dodji@redhat.com> 33107 33108 Fix redundancy in abidiff manual 33109 * doc/manuals/abidiff.rst: Remove the redundant bullet point about 33110 the --drop-fn command line switch. 33111 331122014-12-26 Dodji Seketeli <dodji@redhat.com> 33113 33114 Fix the doc string of the CanonicalDiff section of the apidoc 33115 * src/abg-comparison.cc: The summary of the CanonicalDiff should 33116 not be a @par directive, otherwise it won't show up in the summary 33117 field on the html-genereated page. 33118 331192014-12-26 Dodji Seketeli <dodji@redhat.com> 33120 33121 Update doc string for new --no-redundant option of abidiff 33122 * doc/manuals/abidiff.rst: Update the documentation string for the 33123 --no-redundant option of abidiff. 33124 331252014-12-26 Dodji Seketeli <dodji@redhat.com> 33126 33127 Make abidiff *NOT* show redundant changes by default 33128 * tools/abidiff.cc (options::options): Initialize 33129 options::show_redundant_changes to false. 33130 331312014-12-26 Dodji Seketeli <dodji@redhat.com> 33132 33133 Try harder to handle pointer/reference to void 33134 * include/abg-fwd.h (type_or_void): Declare new function. 33135 * src/abg-ir.cc (type_or_void): Define it. 33136 (pointer_type_def::pointer_type_def) 33137 (reference_type_def::reference_type_def) 33138 (reference_type_def::get_qualified_name, strip_typedef): Use it to 33139 ensure that empty pointed-to-type is considered as a void type. 33140 331412014-12-26 Dodji Seketeli <dodji@redhat.com> 33142 33143 Do not mark sibling structurally identical nodes as redundant 33144 * include/abg-comparison.h (diff::parent_node): Declare new 33145 accessor. 33146 * src/abg-comparison.cc (diff::priv::parent_): New data member. 33147 (diff::priv::priv): Initialize it. 33148 (diff::parent_node): Define new accessor. 33149 (diff::append_child_node): Set the diff::priv::parent_ data member 33150 of the added child node. 33151 (redundancy_marking_visitor::visit_begin): If two (logical) 33152 sibbling nodes are structurally equivalent, do not mark them as 33153 being redundant. 33154 * tests/data/test-diff-suppr/libtest10-changed-parm-c-v0.so: New 33155 test input binary. 33156 * tests/data/test-diff-suppr/libtest10-changed-parm-c-v1.so: 33157 Likewise. 33158 * tests/data/test-diff-suppr/test10-changed-parm-c-report-0.txt: 33159 New test input data. 33160 * tests/data/test-diff-suppr/test10-changed-parm-c-v0.c: Source 33161 code for the binary input above. 33162 * tests/data/test-diff-suppr/test10-changed-parm-c-v1.c: Likewise. 33163 * tests/data/Makefile.am: Add the new test files to source 33164 distribution. 33165 * tests/test-diff-suppr.cc (in_out_specs): Add the new test input 33166 to the vector of test inputs to run this harness over. 33167 331682014-12-26 Dodji Seketeli <dodji@redhat.com> 33169 33170 Un-share diff nodes in the comparison IR 33171 * include/abg-ir.h: Prefix the doc string with "///", rather than 33172 writing it inside a /**/ comment. 33173 * include/abg-comparison.h (function_decl_diff) 33174 (function_decl_diff_sptr, fn_parm_diff, fn_parm_diff_sptr) 33175 (var_diff_sptr, base_diff, class_diff, class_diff_sptr): Move 33176 these class & typedef decls to the top of the file. 33177 (string_changed_base_map, string_changed_parm_map) 33178 (unsigned_changed_parm_map, changed_function_ptr) 33179 (string_changed_function_ptr_map): Remove these typedefs. 33180 (string_base_diff_sptr_map, string_fn_parm_diff_sptr_map) 33181 (unsigned_fn_parm_diff_sptr_map, string_var_diff_sptr_map) 33182 (unsigned_var_diff_sptr_map, string_function_decl_diff_sptr_map) 33183 (string_var_diff_ptr_map): New typedefs. 33184 (diff_context::{has_diff_for,add_diff}): Make these member 33185 functions private. 33186 (diff_context::{set_canonical_diff_for, 33187 set_or_get_canonical_diff_for}): Declare new private member 33188 functions. 33189 (diff_context::{get_canonical_diff_for, 33190 initialize_canonical_diff}): New public member functions. 33191 (diff_context::maybe_apply_filters): Set the default value of the 33192 'traverse_nodes_once' parameter to false. 33193 (compute_diff): Make the overload for class_decl_sptr friend of 33194 the diff_context class. 33195 (class diff): Make the diff_context class a friend of this one. 33196 (diff::set_canonical_diff): Declare new private member function. 33197 (diff::get_canonical_diff): Declare new public member function. 33198 (diff::children_nodes): Make this return a vector<diff_sptr>, rather 33199 than a vector<diff*>. 33200 (diff::append_child_node): Make this take a diff_sptr rather than 33201 a diff*. 33202 (class fn_parm_diff): Declare new type. 33203 (compute_diff): Declare new overload for the new 33204 function_decl::parameter_sptr. 33205 (function_decl_diff::subtype_changed_parms): Return a 33206 string_fn_parm_diff_sptr_map rather than a string_changed_parm. 33207 (function_decl_diff::children_nodes): Return a vector<diff_sptr>. 33208 (function_decl_diff::append_child_node): Take a diff_sptr. 33209 (function_decl_diff::changed_functions): Return a 33210 string_function_decl_diff_sptr_map. 33211 (function_decl_diff::changed_variables): Return a 33212 string_var_diff_sptr. 33213 (class function_decl::parameter): Make this a pimpled class. 33214 Also, make it inherit decl_base. 33215 (equals): New overload for function_decl::parameter. 33216 (struct function_decl::parameter::hash): Declare this. 33217 (ir_node_visitor::visit): Declare new overload for 33218 function_decl::parameter. 33219 * src/abg-comparison.cc: Add doc-string about the internal 33220 representation of the comparison engine and also about the concept 33221 of canonical diff of the comparison engine. 33222 (RETURN_IF_BEING_REPORTED_OR_WAS_REPORTED_EARLIER) 33223 (RETURN_IF_BEING_REPORTED_OR_WAS_REPORTED_EARLIER2) 33224 (RETURN_IF_BEING_REPORTED_OR_WAS_REPORTED_EARLIER3): Consider the 33225 canonical diff when trying to know if the current node was 33226 reported earlier. 33227 (diff_context::priv::canonical_diffs): New data member. 33228 (diff_context::{get_canonical_diff_for, set_canonical_diff_for, 33229 set_or_get_canonical_diff_for, initialize_canonical_diff}): Define 33230 new member functions. 33231 (diff_context::{diff_has_been_traversed, mark_diff_as_traversed): 33232 Consider canonical diff for these tests and actions. 33233 (diff::priv::children_): Change the type of this to 33234 vector<diff_sptr>. 33235 (diff::canonical_diff_): New data member. 33236 (diff::diff): Initialize the diff::canonical_diff_ data member. 33237 (diff::begin_traversing): Mark the canonical diff node too. 33238 (diff::is_traversing): Consider the canonical diff node in this 33239 test. 33240 (diff::end_traversing): Make the canonical diff node too. Also 33241 mark the current node as having been traversed. 33242 (diff::children_nodes): Return a vector<diff_sptr> type. 33243 (diff::{get_canonical_diff, set_canonical_diff}): Define new 33244 member functions. 33245 (diff::append_child_node): Take a diff_sptr type parameter. 33246 (diff::{reported_once, currently_reporting}): Flag the canonical 33247 diff node too. And consider the canonical diff node when checking 33248 the flag. 33249 (diff::traverse): No need to mark the node as being traversed 33250 because the diff::end_traversing() function does it now. Adjust 33251 the code because diff::children_nodes() now returns 33252 vector<diff_sptr>. 33253 ({distinct_diff, var_diff, pointer_diff, array_diff, 33254 reference_diff, qualified_type_diff, enum_diff, class_diff, 33255 base_diff, scope_diff, function_decl_diff, typedef_diff, 33256 corpus_diff}::chain_into_hierarchy): Adjust to the new type that 33257 diff::append_child_node() takes. Also, take into account that the 33258 diff nodes are now un-shared. 33259 (compute_diff_for_distinct_kinds, compute_diff_for_types) 33260 (compute_diff): Do not share diff nodes anymore. Initialize the 33261 canonical diff node for the new created node. 33262 (represent): Take a var_diff_sptr rather than two var_decl_sptr. 33263 Adjust. Also take in account the fact that diff nodes are not 33264 shared anymore, and that they do have canonical diffs. 33265 (var_diff::type_diff): Make the computation of the type_diff of 33266 the var_diff be lazy. This avoids infinite (recursive) creation 33267 of diff nodes when a class diff node has a sub-type of data member 33268 that is a class diff node too. 33269 (var_diff::report): Detect redundant reporting of this kind of 33270 diff node. 33271 (class_diff::priv::changed_bases_): Change the type of this to 33272 string_base_diff_sptr_map. 33273 (class_diff::priv::subtype_changed_dm_): Change the type of this 33274 to string_var_diff_sptr_map. 33275 (class_diff::priv::changed_dm_): Change the type of this to 33276 unsigned_var_diff_sptr_map. 33277 (class_diff::priv::{count_filtered_subtype_changed_dm, 33278 count_filtered_bases}): Do not take a diff_context_sptr anymore. 33279 (class_diff::ensure_lookup_tables_populated): changed_bases_ 33280 subtype_changed_dm_ and changed_dm_ are now *NOT* shared diff 33281 nodes anymore. 33282 (class_diff::priv::base_has_changed): Adjust. 33283 (class_diff::priv::subtype_changed_dm): Adjust. 33284 (class_diff::priv::count_filtered_bases): Adjust as changed_bases_ 33285 is now a map of un-shared diff nodes. 33286 (class_diff::priv::count_filtered_subtype_changed_dm): Adjust as 33287 subtype_changed_dm_ is now a map of un-shared diff nodes. 33288 (class_diff::priv::{count_filtered_changed_mem_fns, 33289 count_filtered_inserted_mem_fns, count_filtered_deleted_mem_fns, 33290 }): Adjust for change of the default parameter value of 33291 diff_context::maybe_apply_filters(). 33292 (class_diff::~class_diff): New destructor. 33293 (class_diff::changed_bases): Return a string_base_diff_sptr_map& 33294 type. 33295 (class_diff::{inserted_data_members, deleted_data_members, 33296 changed_member_fns}): Add doc strings. 33297 (struct changed_data_member_comp): Remove. 33298 (struct var_diff_comp): New comparison functor. 33299 (sort_changed_data_members): Remove. 33300 (sort_var_diffs): Define new sorting function. 33301 (class_diff::report): Adjust. 33302 (fn_parm_diff::*): Define member types and functions of the new 33303 fn_parm_diff type. 33304 (function_decl_diff::priv::{subtype_changed_parms_, 33305 changed_parms_by_id_}): Make these take a map of fn_parm_diff_sptr 33306 nodes. 33307 (function_decl_diff::ensure_lookup_tables_populated): Adjust to 33308 the fact that priv_->subtype_changed_parms_ and 33309 priv_->priv_->changed_parms_by_id_ now are maps of un-shared 33310 fn_parm_diff_sptr nodes. 33311 (function_decl_diff::subtype_changed_parms): Adjust. 33312 (struct changed_parm_comp): Remove. 33313 (struct fn_parm_diff_comp): New comparison functor. 33314 (sort_changed_parm_map): Remove. 33315 (sort_string_fn_parm_diff_sptr_map): New sorting function. 33316 (function_decl_diff::report): Adjust. 33317 (corpus_diff::priv::children_): Change the type of this to 33318 vector<diff_sptr>. 33319 (corpus_diff::priv::changed_fns_): Changed the type of this to 33320 string_function_decl_diff_sptr_map. 33321 (corpus_diff::priv::changed_vars_): Changed the type of this to 33322 string_var_diff_sptr_map. 33323 (corpus_diff::priv::ensure_lookup_tables_populated): Adjust. 33324 (corpus_diff::priv::apply_filters_and_compute_diff_stats}): 33325 Adjust. Do not need to clear redundancy categorization anymore 33326 because the diff nodes are not shared anymore. 33327 (corpus_diff::priv::categorize_redundant_changed_sub_nodes): 33328 Adjust. 33329 (corpus_diff::priv::clear_redundancy_categorization): Adjust. 33330 (corpus_diff::changed_variables): Adjust. 33331 (struct changed_function_ptr_comp): Remove. 33332 (struct function_decl_diff_comp): New comparison functor. 33333 (sort_string_changed_function_ptr_map): Remove. 33334 (sort_string_function_decl_diff_sptr_map): Define new sorting 33335 function. 33336 (struct changed_vars_comp): Remove. 33337 (struct var_diff_sptr_comp): New comparison functor. 33338 (sort_changed_vars): Remove. 33339 (sort_string_var_diff_sptr_map): Define new sorting function. 33340 (corpus_diff::report): Adjust. 33341 (corpus_diff::traverse): Adjust. 33342 ({category_propagation_visitor, 33343 suppression_categorization_visitor}::visit_end): Adjust. 33344 (clear_redundancy_categorization): Adjust. 33345 * src/abg-hash.cc (function_decl::parameter::hash::operator): 33346 Adjust. 33347 * src/abg-ir.cc (struct function_decl::parameter::priv): Define 33348 here as part of pimpl-ifying the function_decl::parameter type. 33349 (function_decl::parameter::*): Define here the member functions as 33350 part of pimpl-ifying the function_decl::parameter type. 33351 (equals): Define the overload for function_decl::parameter here 33352 too. 33353 (ir_node_visitor::visit(function_decl::parameter*)): Define this. 33354 * tests/data/test-abicompat/test0-fn-changed-report-0.txt: Adjust. 33355 * tests/data/test-diff-suppr/test5-fn-suppr-report-0.txt: Adjust. 33356 * tests/data/test-diff-dwarf/libtest21-redundant-fn-v0.so: New 33357 test input data. 33358 * tests/data/test-diff-dwarf/libtest21-redundant-fn-v1.so: 33359 Likewise. 33360 * tests/data/test-diff-dwarf/test21-redundant-fn-v0.cc: Source 33361 code for test input binary above. 33362 * tests/data/test-diff-dwarf/test21-redundant-fn-v1.cc: Likewise. 33363 * tests/data/test-diff-dwarf/test21-redundant-fn-report-0.txt: New 33364 test input data. 33365 * tests/data/test-diff-dwarf/libtest22-changed-parm-c-v0.so: New 33366 test input data. 33367 * tests/data/test-diff-dwarf/libtest22-changed-parm-c-v1.so: 33368 Likewise. 33369 * tests/data/test-diff-dwarf/test22-changed-parm-c-v0.c: Source 33370 code for test input binary above. 33371 * tests/data/test-diff-dwarf/test22-changed-parm-c-v1.c: Likewise. 33372 * tests/test-diff-dwarf.cc (in_out_spec): Add the new test input 33373 data to the vector the test inputs to run this harness over. 33374 * tests/data/test-diff-suppr/test8-redundant-fn-report-0.txt: New 33375 test input data. 33376 * tests/data/test-diff-suppr/test8-redundant-fn-report-1.txt: 33377 Likewise. 33378 * tests/data/test-diff-suppr/libtest8-redundant-fn-v0.so: New test 33379 input binary. 33380 * tests/data/test-diff-suppr/libtest8-redundant-fn-v1.so: Likewise. 33381 * tests/data/test-diff-suppr/test8-redundant-fn-v0.cc: Source code 33382 code for binary test input above. 33383 * tests/data/test-diff-suppr/test8-redundant-fn-v1.cc: Likewise. 33384 * tests/data/test-diff-suppr/test9-changed-parm-c-report-0.txt: 33385 New test input data. 33386 * tests/data/test-diff-suppr/test9-changed-parm-c-report-1.txt: 33387 Likewise. 33388 * tests/data/test-diff-suppr/libtest9-changed-parm-c-v0.so: New 33389 test input binary. 33390 * tests/data/test-diff-suppr/libtest9-changed-parm-c-v1.so: New 33391 test input binary. 33392 * tests/data/test-diff-suppr/test9-changed-parm-c-v0.c: Source 33393 code for binary test input above. 33394 * tests/data/test-diff-suppr/test9-changed-parm-c-v1.c: Likewise. 33395 * tests/test-diff-suppr.cc (in_out_specs): Add the new test input 33396 data to the vector the test inputs to run this harness over. 33397 * tests/data/Makefile.am: Add the new files to the source 33398 distribution. 33399 334002014-12-26 Dodji Seketeli <dodji@redhat.com> 33401 33402 Style fix 33403 * src/abg-ir.cc (reference_type_def::get_pointed_to_type): Return 33404 a type_base_sptr. 33405 * src/abg-comparison.cc (diff::is_filtered_out): Fix a comment. 33406 334072014-12-25 Dodji Seketeli <dodji@redhat.com> 33408 33409 Fix pretty printing of pointer_diff node 33410 * src/abg-comparison.cc (pointer_diff::get_pretty_representation): 33411 Add the missing opening square bracket. 33412 334132014-12-17 Sinny Kumari <skumari@redhat.com> 33414 33415 Add new methods in corpus_diff class 33416 * include/abg-comparison.h 33417 (corpus_diff::added_unrefed_function_symbols): 33418 Declare new member function 33419 (corpus_diff::added_unrefed_variable_symbols): 33420 Declare new member function 33421 * src/abg-comparison.cc 33422 (corpus_diff::added_unrefed_function_symbols): 33423 Define new member function 33424 (corpus_diff::added_unrefed_variable_symbols): 33425 Define new member function 33426 334272014-12-15 Sinny Kumari <sinny@redhat.com> 33428 33429 Add new corpus_diff::added_variables() method 33430 * include/abg-comparison.h (corpus_diff::added_variables): 33431 Declare new member function 33432 * src/abg-comparison.cc (corpus_diff::added_variables): 33433 Define new member function 33434 334352014-12-12 Dodji Seketeli <dodji@redhat.com> 33436 33437 Extend detection of compatible types to arrays 33438 * include/abg-fwd.h (is_array_type): Renamed is_array_type_def() 33439 into this for consistency. 33440 * src/abg-comparison.cc (type_suppression::suppresses_diff): 33441 Adjust. 33442 * src/abg-dwarf-reader.cc (build_array_type): Remove useless code 33443 that was trying to read a DW_AT_byte_size attribute from the DIE 33444 of the array, but then wasn't doing anything with the value. But 33445 then if the attribute was not present, the array type wouldn't be 33446 built. 33447 * src/abg-ir.cc (strip_typedef): Strip typedefs from sub-types of 33448 array types too. 33449 (is_array_type): Rename is_array_def() to this, for consistency. 33450 (var_decl::get_pretty_representation): Adjust. 33451 * tests/data/test-diff-filter/libtest24-compatible-vars-v0.so: New 33452 test input data. 33453 * tests/data/test-diff-filter/libtest24-compatible-vars-v1.so: Likewise. 33454 * tests/data/test-diff-filter/test24-compatible-vars-report-0.txt: 33455 Likewise. 33456 * tests/data/test-diff-filter/test24-compatible-vars-v0.c: Source 33457 code for the first binary above. 33458 * tests/data/test-diff-filter/test24-compatible-vars-v1.c: Source 33459 code for the second binary above. 33460 * tests/data/Makefile.am: Add the new test input data to source 33461 distribution. 33462 * tests/test-diff-filter.cc (in_out_specs): Add the new test input 33463 data to the list of input to run this test harness over. 33464 334652014-12-12 Dodji Seketeli <dodji@redhat.com> 33466 33467 Improve the doc string for the elf_symbol::get_id_string() method 33468 * src/abg-ir.cc (elf_symbol::get_id_string): Improve doc string. 33469 Talk about the content of the id string of an elf symbol. 33470 334712014-12-11 Dodji Seketeli <dodji@redhat.com> 33472 33473 Better handle pointer-to-void in various places of the pipeline 33474 * src/abg-comparison.cc (pointer_diff::report): Handle the case of 33475 pointer to void. 33476 * src/abg-dwarf-reader.cc (build_pointer_type_def): Assert that 33477 the underlying pointer is non-null. 33478 * src/abg-ir.cc (pointer_type_def::pointer_type_def): Handle the 33479 case of pointer to void. 33480 (equals): Likewise in the overload for const pointer_type_def. 33481 (pointer_type_def::get_qualified_name): Likewise. 33482 334832014-12-11 Dodji Seketeli <dodji@redhat.com> 33484 33485 Try harder to detect a DWARF attribute pointing into alternate DWARF section 33486 * src/abg-dwarf-reader.cc 33487 (is_die_attribute_resolved_through_gnu_ref_alt): Support the case 33488 of the origin function itself having a specification function 33489 link. 33490 334912014-12-11 Dodji Seketeli <dodji@redhat.com> 33492 33493 Fix accidentally removing the scope of variables when fixing them up 33494 * src/abg-dwarf-reader.cc (build_translation_unit_and_add_to_ir): 33495 During var decl fixup, remove the scope of a variable only when we 33496 are sure that we want to re-scope it. 33497 334982014-12-11 Dodji Seketeli <dodji@redhat.com> 33499 33500 Fix several aborts while diffing libdw.so 33501 * src/abg-corpus.cc 33502 (corpus::priv::build_unreferenced_symbols_tables): Fix wrong 33503 guestimation of the size of the map of unreferenced symbol table. 33504 * src/abg-dwarf-reader.cc (get_version_needed_for_versym): Honour 33505 the conditions of breaking out from walking the verneed table. 33506 335072014-12-10 Dodji Seketeli <dodji@redhat.com> 33508 33509 Temporarily disable redundant diff report elimination 33510 * src/abg-comparison.cc 33511 (diff_context::priv::priv): Show redundant changes by default. 33512 (categorize_redundancy): Do not categorize redundancy if the 33513 diff_context says that we shouldn't. 33514 * tools/abicompat.cc (options::show_redundant): New data member. 33515 (options::options): Initialize to true. 33516 (display_usage): Add new help string for new --no-redundant and 33517 --redundant options. 33518 (parse_command_line): Parse new --no-redundant and --redundant 33519 command line options. 33520 (main): Initialize the diff context with respect to the 33521 options::show_redundant property. 33522 * tools/abidiff.cc (options::options): Initialize the 33523 show_redundant_changes data member to true. 33524 (display_usage): Show new help string for the new --no-redundant 33525 command line option. 33526 (parse_command_line): Parse the new --no-redundant command line 33527 option. 33528 * tests/data/test-diff-filter/libtest23-redundant-fn-parm-change-v0.so: 33529 New test data input. 33530 * tests/data/test-diff-filter/libtest23-redundant-fn-parm-change-v1.so: 33531 Likewise. 33532 * tests/data/test-diff-filter/test23-redundant-fn-parm-change-report-0.txt: 33533 Likewise. 33534 * tests/data/test-diff-filter/test23-redundant-fn-parm-change-v0.c: 33535 Source code for the first binary above. 33536 * tests/data/test-diff-filter/test23-redundant-fn-parm-change-v1.c: 33537 Source code for the second binary above. 33538 * tests/data/Makefile.am: Add the new test data input to source 33539 distribution. 33540 * tests/test-abicompat.cc (in_out_specs): Add --no-redundant to 33541 abicompat when we don't want it to show redundant diff reports. 33542 * test-diff-filter.cc (in_out_specs): Likewise for abidiff. 33543 * test-diff-suppr.cc (in_out_specs): Likewise. 33544 335452014-12-10 Jan Engelhardt <jengelh@inai.de> 33546 33547 Fix conditional build wrt zip archives and cx11 33548 * configure.ac: remove (broken) assignment to the 33549 ENABLE_ZIP_ARCHIVE_AND_CXX11 variable 33550 * Makefile.am: replace variable assignments to 33551 ZIP_ARCHIVE_TESTS_FIRST_PART, ZIP_ARCHIVE_TESTS_SECOND_PART 33552 by ZIP_ARCHIVE_TESTS using the "+=" automake operator. 33553 Likewise for CXX11_TESTS. 33554 335552014-12-10 Dodji Seketeli <dodji@redhat.com> 33556 33557 Make determining of compatible types complete 33558 * include/abg-fwd.h (is_reference_type, is_function_type) 33559 (is_method_type): Declare new predicates. 33560 * include/abg-ir.h (class qualified_type_def): Pimpl this class. 33561 (qualified_type_def::qualified_type_def): Use the convenience 33562 type_base_sptr typedef. 33563 (qualified_type_def::{get_cv_quals, set_cv_quals}): Use the 33564 qualified_type_def::CV type rather than char. 33565 (qualified_type_def::get_underlying_type): Use the convenience 33566 type_base_sptr typedef. 33567 (pointer_type_def::pointer_type_def): Likewise. 33568 (function_decl::parameter::parameter): Add a new constructor. 33569 * src/abg-ir.cc (is_reference_type, is_function_type) 33570 (is_method_type): Define new predicates. 33571 (class qualified_type_def::priv): Define this new private type, 33572 for the purpose of Pimpl-ifying the qualified_type_def class. 33573 (qualified_type_def::{qualified_type_def, build_name, 33574 get_cv_quals_string_prefix, get_underlying_type}): Adjust for the 33575 purpose of Pimpl-ifying the qualified_type_def class. 33576 (equals): In the qualified_type_def, reference_type_def overloads, 33577 trust the fact that we have operator== overload for the 33578 type_base_sptr. This avoids crashes for when the (possible) 33579 underlying type is null. 33580 (pointer_type_def::operator==): Likewise. 33581 (strip_typedef): Make this recursively strip 33582 typedefs from sub-types. 33583 (types_are_compatible): Handle null types. 33584 (qualified_type_def::{get_cv_quals, set_cv_quals}): Handle 33585 qualified_type_def::CV rather than char. 33586 (pointer_type_def::pointer_type_def): Use the convenience 33587 type_base_sptr typedef. 33588 * include/abg-comparison.h (distinct_diff::compatible_child_diff): 33589 Declare new member function. 33590 * src/abg-comparison.cc (distinct_diff::compatible_child_diff): 33591 Define new member function. 33592 (distinct_diff::chain_into_hierarchy): 33593 Chain the compatible child diff node that might be present. 33594 (distinct_diff::report): Now when a distinct diff carries a 33595 compatible change, mention it in the report. 33596 * src/abg-comp-filter.cc (is_compatible_change): A compatible 33597 change can now involve types that are not typedefs. Only their 33598 sub-types need to be involved with typedef-ness. 33599 * tests/data/test-diff-dwarf/test{2,4,5}-report.txt: Adjust. 33600 * tests/data/test-diff-filter/libtest21-compatible-vars-v0.so: New 33601 test data input. 33602 * tests/data/test-diff-filter/libtest21-compatible-vars-v1.so: Likewise. 33603 * tests/data/test-diff-filter/test21-compatible-vars-report-0.txt Likewise. 33604 * tests/data/test-diff-filter/test21-compatible-vars-report-1.txt Likewise. 33605 * tests/data/test-diff-filter/test21-compatible-vars-v0.cc: Source 33606 code for the first data input binary above. 33607 * tests/data/test-diff-filter/test21-compatible-vars-v1.cc: Source 33608 code for the second data input binary above. 33609 * tests/data/test-diff-filter/libtest22-compatible-fns-v0.so: New 33610 test data input. 33611 * tests/data/test-diff-filter/libtest22-compatible-fns-v1.so Likewise. 33612 * tests/data/test-diff-filter/test22-compatible-fns-report-0.txt: 33613 New test data input. 33614 * tests/data/test-diff-filter/test22-compatible-fns-report-1.txt: Likewise. 33615 * tests/data/test-diff-filter/test22-compatible-fns-v0.c: Source 33616 code for the first test data input binary above. 33617 * tests/data/test-diff-filter/test22-compatible-fns-v1.c: Source 33618 code for the second test data input binary above. 33619 * tests/data/Makefile.am: Add the new test input data to source 33620 distribution. 33621 * tests/test-diff-filter.cc (in_out_specs): Add the new test data 33622 input above to the list of test data this harness has to be run 33623 over. 33624 336252014-12-09 Dodji Seketeli <dodji@redhat.com> 33626 33627 Fix classification of parameter addition in C 33628 * src/abg-comp-filter.cc (function_name_changed_but_not_symbol): 33629 Compare the fully qualified name of the functions; not their 33630 pretty representation. 33631 * tests/data/test-diff-dwarf/libtest20-add-fn-parm-v0.so: New test 33632 data intput. 33633 * tests/data/test-diff-dwarf/libtest20-add-fn-parm-v1.so: 33634 Likewise. 33635 * tests/data/test-diff-dwarf/test20-add-fn-parm-report-0.txt: 33636 Likewise. 33637 * tests/data/test-diff-dwarf/test20-add-fn-parm-v0.c: Source code 33638 for the first shared library above. 33639 * tests/data/test-diff-dwarf/test20-add-fn-parm-v1.c: Source code 33640 for the second shared library above. 33641 * tests/test-diff-dwarf.cc (in_out_specs): Add the test input data 33642 above to the list of test input the harness must run over. 33643 * Makefile.am: Add the new files above to source distribution. 33644 336452014-12-08 Dodji Seketeli <dodji@redhat.com> 33646 33647 Wire the soname check into abicompat 33648 * include/abg-comparison.h (corpus_diff::soname_changed): Declare 33649 new member function. 33650 * src/abg-comparison.cc (corpus_diff::soname_changed): Define new 33651 member function. 33652 (corpus_diff::length): Use the new corpus_diff::soname_changed() 33653 method. 33654 * tests/data/test-abicompat/libtest4-soname-changed-v0.so: New 33655 test input data. 33656 * tests/data/test-abicompat/libtest4-soname-changed-v1.so: 33657 Likewise. 33658 * tests/data/test-abicompat/test4-soname-changed-app: Likewise. 33659 * tests/data/test-abicompat/test4-soname-changed-report-0.txt: 33660 Likewise. 33661 * tests/data/test-abicompat/test4-soname-changed-app.cc: Source 33662 code for one of the binaries above. 33663 * tests/data/test-abicompat/test4-soname-changed-v0.cc: Likewise. 33664 * tests/data/test-abicompat/test4-soname-changed-v1.cc: Likewise. 33665 * tests/test-abicompat.cc (in_out_specs): Add the new test input 33666 data to the list of input data to run this harness over. 33667 (main): Take the soname change in account to determine if the 33668 change is ABI incompatible. 33669 * tests/data/Makefile.am: Add the new test input data above to source 33670 distribution. 33671 336722014-12-07 Dodji Seketeli <dodji@redhat.com> 33673 33674 Fixup messed up old runtestdiffdwarf input tests 33675 * tests/data/test-diff-dwarf/test17-non-refed-syms-report-0.txt: 33676 Add this missing reference test output. 33677 * tests/data/Makefile.am: Add the new reference test output to 33678 source distribution. 33679 * tests/data/test-diff-dwarf/test18-alias-sym-report-0.txt: Fix 33680 this output to avoid emitting symbol alias information in it. 33681 * tests/test-diff-dwarf.cc (in_out_specs): Add two missing test 33682 input data to the list of input data this harness is supposed to 33683 run over. 33684 336852014-12-07 Dodji Seketeli <dodji@redhat.com> 33686 33687 Support reading and comparing soname from ELF files 33688 * include/abg-corpus.h (corpus::{get_needed, set_needed, 33689 get_soname, set_soname}): Declare new accessors. 33690 * src/abg-corpus.cc (corpus::priv::{needed, soname}): New data 33691 members. 33692 (corpus::{get_needed, set_needed, get_soname, set_soname}): Define 33693 new accessors. 33694 (corpus::is_empty): Take dt_needed and dt_soname in account in 33695 computing empty-ness. 33696 * src/abg-dwarf-reader.cc (read_context::{dt_needed_, 33697 dt_soname_}): New data members. 33698 (read_context::{dt_needed, dt_soname}): New accessors. 33699 (read_context::load_dt_soname_and_needed): New member function. 33700 (read_corpus_from_elf): Call the new 33701 read_context::load_dt_soname_and_needed() to read the dt_soname 33702 and dt_needed tags. Set them to the corpus. 33703 * include/abg-comparison.h (diff_context::show_soname_change): 33704 Declare new accessors. 33705 * src/abg-comparison.cc (diff_context::priv::show_soname_change_): 33706 New data member. 33707 (diff_context::priv::priv): Initialize the new data member 33708 diff_context::priv::show_soname_change_. 33709 (diff_context::show_soname_change): Define new accessors. 33710 (corpus_diff::priv::sonames_equal_): New data member. 33711 (corpus_diff::priv::priv): Initialize the new data member 33712 corpus_diff::priv::sonames_equal_. 33713 (corpus_diff::length): Take the new priv_->sonames_equals_ data 33714 member in account. 33715 (corpus_diff::{report, priv::emit_diff_stats}): If the sonames 33716 changed and we are allowed to report it, then report it. 33717 (compute_diff): In the variant for corpus_diff, do not forget to 33718 compare the sonames. 33719 * src/abg-reader.cc (build_needed, read_elf_needed_from_input): 33720 Define new static functions. 33721 (read_corpus_from_input): Read the 'soname' attribute from the 33722 'abi-corpus' xml element node. 33723 * src/abg-writer.cc (write_elf_needed): Define new static 33724 function. 33725 (write_corpus_to_native_xml): Write a new 'elf-needed' xml element 33726 node that contains one xml 'dependency' element node per 33727 dependency to emit. This uses the new write_elf_needed() function 33728 above. 33729 * tests/data/test-diff-dwarf/libtest19-soname-v0.so: New test 33730 input data. 33731 * tests/data/test-diff-dwarf/libtest19-soname-v1.so: Likewise. 33732 * tests/data/test-diff-dwarf/test19-soname-report-0.txt: Likewise. 33733 * tests/data/test-diff-dwarf/test19-soname-v0.c: Source code of 33734 the first binary above. 33735 * tests/data/test-diff-dwarf/test19-soname-v1.c: Source code of 33736 the second binary above. 33737 * tests/test-diff-dwarf.cc (in_out_specs): Add the test input 33738 above to the list of test input to run this harness on. 33739 * tests/data/Makefile.am: Add the new test input data above. 33740 * tests/data/test-read-dwarf/test{0,1}.abi: Adjust. 33741 * tests/data/test-read-dwarf/test{2,3,4,6,}.so.abi: Adjust. 33742 337432014-12-07 Dodji Seketeli <dodji@redhat.com> 33744 33745 Fix some style nits in the native reader and writer 33746 * src/abg-reader.cc (read_symbol_db_from_input): Align parameter 33747 names. Fix indentation of the first line of the function. 33748 * src/abg-writer.cc (write_elf_symbols_table): Align parameter names. 33749 337502014-12-07 Dodji Seketeli <dodji@redhat.com> 33751 33752 Fix a crash while writing symbol information 33753 * src/abg-corpus.cc (corpus::{get_fun_symbol_map_sptr, 33754 get_var_symbol_map_sptr}): Make sure the symbol map is always 33755 constructed, even if it's empty. 33756 * tests/data/test-read-write/test26.xml: New test input data. 33757 * tests/test-read-write.cc (in_out_spec): Add this new test input 33758 data to the list of input data to run the harness on. 33759 (main): Support reading and writing corpus files alongside 33760 translation unit files that we were handling already. 33761 * tests/data/Makefile.am: Add the new test input data to source 33762 distribution. 33763 337642014-12-05 Dodji Seketeli <dodji@redhat.com> 33765 33766 Avoid showing ugly version info in the libabigail online manual 33767 * doc/manuals/conf.py: Update copyright mention. Do not show ugly 33768 version information. 33769 337702014-11-30 Dodji Seketeli <dodji@redhat.com> 33771 33772 Initial implementation of the abicompat tool 33773 * include/abg-comparison.h 33774 (diff_context::show_added_symbols_unreferenced_by_debug_info): 33775 Declare new accessors. 33776 (corpus_diff::{deleted_variables, 33777 deleted_unrefed_function_symbols, 33778 deleted_unrefed_variable_symbols, 33779 apply_filters_and_suppressions_before_reporting}): Declare new 33780 methods. 33781 (corpus_diff::diff_stats): Declare this new type. Actually this 33782 was previously corpus_diff::priv::diff_stats, which was a hidden 33783 internal type.. We are moving it here, in the external API so 33784 that client code can have more information about changes 33785 statistics. Change all the previously publicly accessible data 33786 members into accessor functions. 33787 * src/abg-comparison.cc (class corpus_diff::diff_stats::priv): New 33788 type. 33789 (diff_context::priv::show_added_syms_unreferenced_by_di_): New 33790 data member. 33791 (diff_context::priv::priv): Adjust. 33792 (diff_context::show_added_symbols_unreferenced_by_debug_info): 33793 Define this new method. 33794 (corpus_diff::priv::emit_diff_stats): Do not show the diff stat 33795 if the only changes is added function or variables symbols and if 33796 we were instructed to not show added symbols. 33797 (corpus_diff::priv::{diff_stats_, filters_and_suppr_applied_}): 33798 New data members. 33799 (corpus_diff::priv::priv): Initialize the 33800 filters_and_suppr_applied_ data member. 33801 (corpus_diff::priv::diff_stats): Move this type to 33802 corpus_diff::diff_stats. 33803 (corpus_diff::priv::{apply_filters_and_compute_diff_stats, 33804 emit_diff_stats}): Adjust. 33805 (corpus_diff::apply_filters_and_suppressions_before_reporting): 33806 Define new member function. 33807 (corpus_diff::report): Use the new 33808 apply_filters_and_suppressions_before_reporting() function, rather 33809 than applying the filters and suppressions by ourselves. Also 33810 adjust to the use the accessors of the new corpus_diff::diff_stats 33811 type. 33812 (corpus_diff::{deleted_variables, 33813 deleted_unrefed_function_symbols, 33814 deleted_unrefed_variable_symbols}): Define new accessors. 33815 (corpus_diff::diff_stats::{diff_stats, num_func_removed, 33816 num_func_added, num_func_changed, num_func_filtered_out, 33817 net_num_func_changed, num_vars_removed, num_vars_added, 33818 num_vars_changed, num_vars_filtered_out, net_num_vars_changed, 33819 num_func_sym_removed, num_func_syms_added, num_var_syms_removed, 33820 num_var_syms_added}): Define new member functions. 33821 * include/abg-corpus.h (corpus::{get_sym_ids_of_fns_to_keep, 33822 get_sym_ids_of_vars_to_keep}): Declare new methods. 33823 * src/abg-corpus.cc (corpus::priv::{sym_id_fns_to_keep, 33824 sym_id_vars_to_keep}): Added data members. 33825 (symtab_build_visitor_type::{unrefed_fun_symbols, 33826 unrefed_var_symbols, sym_id_fns_to_keep, sym_id_vars_to_keep}): 33827 Added new data members. 33828 (symtab_build_visitor_type::symtab_build_visitor_type): Take two 33829 additional parameters for the function and variable symbol ids to 33830 keep. 33831 (symtab_build_visitor_type::add_fn_to_wip_fns): Take the function 33832 symbols to keep in account when building the exported symbol 33833 table. 33834 (symtab_build_visitor_type::add_var_to_wip_vars): Likewise, take 33835 the variable symbols to keep in account when building the exported 33836 symbol table. 33837 (corpus::priv::build_public_decl_table): Adjust the initialization 33838 of the visitor that walks the ABI artifacts to build the exported 33839 symbol table to know take a list of function/variable symbols to 33840 keep. 33841 (corpus::priv::build_unreferenced_symbols_tables): Ensure that the 33842 public table of functions/variables is built before doing the work 33843 of this function. Also, if a list of variable/function symbols to 33844 keep is given, drop all symbols that are not in that list on the 33845 floor. 33846 (corpus::{get_sym_ids_of_fns_to_keep, 33847 get_sym_ids_of_vars_to_keep}): Define new accessors. 33848 * tools/abicompat.cc: New abicompat tool. 33849 * doc/manuals/abicompat.rst: New documentation source for 33850 abicompat. 33851 * doc/manuals/libabigail-tools.rst: Add an entry for the abicompat 33852 doc. 33853 * tests/test-abicompat.cc: New test harness for the 'abicompat' 33854 tool. 33855 * tests/Makefile.am: Build the runtestabicompat test harness and 33856 add it to the list of tests harnesses that are run by make check. 33857 * tests/data/test-abicompat/libtest0-fn-changed-libapp-v0.so: New 33858 test input. 33859 * tests/data/test-abicompat/libtest0-fn-changed-libapp-v1.so: Likewise. 33860 * tests/data/test-abicompat/test0-fn-changed-app: Likewise. 33861 * tests/data/test-abicompat/test0-fn-changed-0.suppr: Likewise 33862 * tests/data/test-abicompat/test0-fn-changed-report-0.txt: Likewise. 33863 * tests/data/test-abicompat/test0-fn-changed-report-1.txt: Likewise. 33864 * tests/data/test-abicompat/test0-fn-changed-app.cc: Likewise. 33865 * tests/data/test-abicompat/test0-fn-changed-libapp.h: Likewise. 33866 * tests/data/test-abicompat/test0-fn-changed-libapp-v0.cc: Likewise. 33867 * tests/data/test-abicompat/test0-fn-changed-libapp-v1.cc: Likewise. 33868 * tests/data/test-abicompat/libtest1-fn-removed-v0.so: Likewise. 33869 * tests/data/test-abicompat/libtest1-fn-removed-v1.so: Likewise. 33870 * tests/data/test-abicompat/test1-fn-removed-app: Likewise. 33871 * tests/data/test-abicompat/test1-fn-removed-app.cc: Likewise. 33872 * tests/data/test-abicompat/test1-fn-removed-report-0.txt: Likewise. 33873 * tests/data/test-abicompat/test1-fn-removed-v0.cc: Likewise. 33874 * tests/data/test-abicompat/test1-fn-removed-v1.cc: Likewise. 33875 * tests/data/test-abicompat/libtest2-var-removed-v0.so: Likewise. 33876 * tests/data/test-abicompat/libtest2-var-removed-v1.so: Likewise. 33877 * tests/data/test-abicompat/test2-var-removed-app: Likewise. 33878 * tests/data/test-abicompat/test2-var-removed-app.cc: Likewise. 33879 * tests/data/test-abicompat/test2-var-removed-report-0.txt: Likewise. 33880 * tests/data/test-abicompat/test2-var-removed-v0.cc: Likewise. 33881 * tests/data/test-abicompat/test2-var-removed-v1.cc: Likewise. 33882 * tests/data/test-abicompat/libtest3-fn-removed-v0.so: Likewise. 33883 * tests/data/test-abicompat/libtest3-fn-removed-v1.so: Likewise. 33884 * tests/data/test-abicompat/test3-fn-removed-app: Likewise. 33885 * tests/data/test-abicompat/test3-fn-removed-app.cc: Likewise. 33886 * tests/data/test-abicompat/test3-fn-removed-report-0.txt: Likewise. 33887 * tests/data/test-abicompat/test3-fn-removed-v0.cc: Likewise. 33888 * tests/data/test-abicompat/test3-fn-removed-v1.cc: Likewise. 33889 * tests/data/test-abicompat/test3-fn-removed-version-script-0 Likewise.: 33890 * tests/data/test-abicompat/test3-fn-removed-version-script-1: Likewise. 33891 * tests/data/Makefile.am: Add the new test inputs above to the 33892 source distribution. 33893 338942014-11-30 Dodji Seketeli <dodji@redhat.com> 33895 33896 Support reading undefined symbols from an ELF file 33897 * include/abg-corpus.h (corpus::{set_undefined_fun_symbol_map, 33898 set_undefined_var_symbol_map, get_undefined_fun_symbol_map_sptr, 33899 get_undefined_fun_symbol_map, get_sorted_undefined_fun_symbols, 33900 get_undefined_var_symbol_map_sptr, get_undefined_var_symbol_map, 33901 get_sorted_undefined_var_symbols}): Declare new methods ... 33902 * src/abg-corpus.cc (corpus::{set_undefined_fun_symbol_map, 33903 set_undefined_var_symbol_map, get_undefined_fun_symbol_map_sptr, 33904 get_undefined_fun_symbol_map, get_sorted_undefined_fun_symbols, 33905 get_undefined_var_symbol_map_sptr, get_undefined_var_symbol_map, 33906 get_sorted_undefined_var_symbols}): ... and define them. 33907 (struct corpus::priv::{undefined_var_symbol_map, 33908 sorted_undefined_var_symbols, undefined_fun_symbol_map, 33909 sorted_undefined_fun_symbols}): New data members. 33910 * src/abg-dwarf-reader.cc (get_symbol_versionning_sections): Also 33911 return the SHT_GNU_verneed section. 33912 (get_version_needed_for_versym): New static function. 33913 (get_version_definition_for_versym): Factorize this function out 33914 of .. 33915 (get_version_for_symbol): ... this one. Take a flag that says if 33916 we want the definition version or the needed version of a symbol. 33917 Extend the implementation using the two new function 33918 get_version_needed_for_versym() and 33919 get_version_definition_for_versym() above. This function now 33920 returns the version either for a defined & exported symbol, or for 33921 an undefined symbol. 33922 (lookup_symbol_from_sysv_hash_tab) 33923 (lookup_symbol_from_gnu_hash_tab, lookup_symbol_from_symtab): 33924 Adjust for the change of signature of get_version_for_symbol(). 33925 (read_context::{undefined_fun_syms_, undefined_var_syms_}): New 33926 data members. 33927 (read_context::lookup_elf_symbol_from_index): Adjust for 33928 invocation of the new signature of get_version_for_symbol(). 33929 (read_context::{undefined_fun_syms_sptr, undefined_fun_syms, 33930 undefined_var_syms_sptr, undefined_var_syms}): Define new methods. 33931 (read_context::load_symbol_maps): Add support for loading 33932 undefined symbols and their versions. 33933 (read_context::maybe_load_symbol_maps): Take in account the need 33934 to load undefined symbols as well. 33935 (read_corpus_from_elf): Once the undefined symbols have been read 33936 from the ELF file, stuff them into the resulting ABI corpus that 33937 has been built. 33938 339392014-11-30 Dodji Seketeli <dodji@redhat.com> 33940 33941 Show the pretty representation of deleted variables in the diff output 33942 * src/abg-comparison.cc (corpus_diff::report): Show the pretty 33943 representation of deleted variables in all cases. 33944 339452014-11-30 Dodji Seketeli <dodji@redhat.com> 33946 33947 Fix status checking in abidw 33948 * tools/abidw.cc (main): Fix successful status checking. 33949 339502014-11-30 Dodji Seketeli <dodji@redhat.com> 33951 33952 Rename elf_symbol::get_is_defined() to elf_symbol::is_defined() 33953 * include/abg-ir.h (elf_symbol::get_is_defined): Rename into 33954 elf_symbol::is_defined. 33955 (elf_symbol::set_is_defined): Rename into elf_symbol::is_defined. 33956 * src/abg-ir.cc (elf_symbol::get_is_defined): Likewise, rename 33957 this into elf_symbol::is_defined. 33958 (elf_symbol::set_is_defined): Likewise, rename this into 33959 elf_symbol::is_defined. 33960 (elf_symbol::{elf_symbol, is_public}): Adjust. 33961 * src/abg-writer.cc (write_elf_symbol): Adjust. 33962 339632014-11-30 Dodji Seketeli <dodji@redhat.com> 33964 33965 Update the copyright years of include/abg-corpus.h 33966 * include/abg-corpus.h: Update the copyright years of this file. 33967 339682014-11-20 Dodji Seketeli <dodji@redhat.com> 33969 33970 Make tests/data directory have its own Makefile 33971 * configure.ac(AC_CONFIG_FILE): Generate a new tests/data/Makefile 33972 file. 33973 * tests/Makefile.am: Link the data/ sub-directory from here. Move 33974 the EXTRA_DIST definition to ... 33975 * tests/data/Makefile.am: ... this new file here. 33976 339772014-11-20 Dodji Seketeli <dodji@redhat.com> 33978 33979 Hmh, finally EXTRA_DIST was just fine 33980 * tests/Makefile.am: Put EXTRA_DIST back. 33981 339822014-11-19 Dodji Seketeli <dodji@redhat.com> 33983 33984 Make sure we don't try to build test data 33985 * tests/Makefile.am: Replace EXTRA_DIST with noinst_DATA. 33986 339872014-11-19 Dodji Seketeli <dodji@redhat.com> 33988 33989 Fix manual documentation generation 33990 * doc/manuals/Makefile.am: Trigger the manual generation from the 33991 html-doc target. Add the source files to the distribution. Fix 33992 the clean target. 33993 339942014-11-19 Dodji Seketeli <dodji@redhat.com> 33995 33996 Fix apidoc building 33997 * doc/Makefile.am: Trigger the building frm the html-doc target. 33998 339992014-11-19 Dodji Seketeli <dodji@redhat.com> 34000 34001 Cleanup of configure.ac 34002 * configure.ac: Remove useless variables and fix a typo. 34003 340042014-11-19 Dodji Seketeli <dodji@redhat.com> 34005 34006 Add loads of forgotten test data files to source distribution 34007 * tests/Makefile.am: Add lots of test data file that were 34008 forgotten and then revealed by running make distcheck. Also fix 34009 some wrong paths to test data files. 34010 340112014-11-19 Dodji Seketeli <dodji@redhat.com> 34012 34013 Use DESTDIR in doc/manuals/Makefile.am when creating the manuals 34014 * doc/manuals/Makefile.am: Use the DESTDIR variable when 34015 addressing the destination directory of the created manuals. 34016 340172014-11-19 Dodji Seketeli <dodji@redhat.com> 34018 34019 Fix a thinko in doc/Makefile.am 34020 * apidoc-install-html-doxygen: Make sure that the directory 34021 $(DESTDIR)$(docdir) does not exist, before trying to create it. 34022 340232014-11-19 Dodji Seketeli <dodji@redhat.com> 34024 34025 Add doc/api/libabigail.doxy to source distribution 34026 * doc/Makefile.am: Add the file api/libabigail.doxy to source 34027 distribution. 34028 340292014-11-19 Dodji Seketeli <dodji@redhat.com> 34030 34031 Make the install-html target of apidoc/manual be conditional 34032 * configure.ac: add --enable-apidoc and --enable-manual. Add the 34033 two ENABLE_APIDOC and ENABLE_MANUAL automake conditional 34034 variables. Add the activation of the apidoc and manual into the 34035 final package configuration report. 34036 * doc/Makefile.am: Make the install-html, install-data-local and 34037 uninstall-local targets conditional on the ENABLE_APIDOC 34038 conditional variable. 34039 * doc/manuals/Makefile.am: Likewise, make the install-html, 34040 install-data-local and uninstall-data-local conditional on the 34041 ENABLE_MANUAL conditional variable. 34042 340432014-11-19 Dodji Seketeli <dodji@redhat.com> 34044 34045 Make the alt dwarf debug file *not* be a symlink 34046 * tests/data/test-alt-dwarf-file/test0-debug-dir/.build-id/16/7088580c513b439c9ed95fe6a8b29496495f26.debug: 34047 Make this be a real file, no more a symlink to 34048 ../../../test0-common-dwz.debug. 34049 * tests/data/test-alt-dwarf-file/test0-report.txt: Now that the 34050 file above is no more a symlink the message emitted by the test 34051 changes. It now says that the file found is the base name of the 34052 real file. So change the reference report accordingly. 34053 340542014-11-19 Dodji Seketeli <dodji@redhat.com> 34055 34056 Use the POSIX 1003.1-1988 tar format for dist tar 34057 * configure.ac: For the tar invocation made by make dist, make 34058 sure to use the POSIX 1003.1-1988 tar format that can support file 34059 names of more than 99 characters. This is useful for the 34060 test-alt-dwarf-file test that has data made of a file which patch 34061 has more than 99 characters. 34062 340632014-11-19 Dodji Seketeli <dodji@redhat.com> 34064 34065 Nested automake conditionals don't work 34066 * configure.ac (ENABLE_ZIP_ARCHIVE_AND_CXX11): Define this 34067 automake condition variable that is true if both the zip archive 34068 and c++11 features are enabled. This is important to know if the 34069 test runtestdot is going to be compiled. That test needs both 34070 c++11 and the zip archive features. 34071 * tests/Makefile.am: Do not nest automake conditional statements. 34072 It does not work. Rather, use the new 34073 ENABLE_ZIP_ARCHIVE_AND_CXX11 condition variable. 34074 340752014-11-19 Dodji Seketeli <dodji@redhat.com> 34076 34077 INSTALL file is not yet in the distribution 34078 * Makefile.am: Do not say that INSTALL file is in the distribution 34079 while it is not. 34080 340812014-11-19 Dodji Seketeli <dodji@redhat.com> 34082 34083 If c++11 is disable do not execute the runtestdot test 34084 * tests/Makefile.am: runtestdot should not be executed if c++11 is 34085 disabled. 34086 340872014-11-18 Dodji Seketeli <dodji@redhat.com> 34088 34089 make html now generates the apidoc, manual and web site 34090 * doc/Makefile.am (html-local): Make the html file generation be 34091 triggered by the html-local target, not the html target. The html 34092 target is a recursive target that calls the the html-local targets 34093 under each directory. 34094 (apidoc-html-doxygen): Rename the doc-html-doxygen target into 34095 (apidoc-install-html-doxygen): Rename doc-install-html-doxygen 34096 into this. this. 34097 (DO_HTML, DO_INSTALL_HTML): Adjust. 34098 (install-data-local): New target. 34099 * doc/manuals/Makefile.am (install-html, install-data-local): New 34100 targets. 34101 341022014-11-18 Dodji Seketeli <dodji@redhat.com> 34103 34104 Generate the manual html documentation in the proper build directory 34105 * doc/manuals/Makefile.am: Renamed doc/manuals/Makefile into this. 34106 (BUILDDIR): Make this variable point to $(builddir)/_build as 34107 opposed to just _build previously. 34108 (SOURCEDIR): New variable that points to the source dir as known 34109 by the autotools magic. 34110 (ALLSPHINXOPTS): Make the source dir refer to the new 34111 $(SOURCEDIR), rather than just '.' as previously. 34112 * configure.ac (doc/manuals/Makefile): Generate this now. 34113 * doc/Makefile.am: Link the sub-directory doc/manuals. 34114 341152014-11-18 Dodji Seketeli <dodji@redhat.com> 34116 34117 Update Makefile.am after the additions related to gen-changelog.py 34118 * Makefile.am: Add ChangeLog and COPYING-LGPLV2 to the source 34119 distribution. 34120 (update-changelog, tag-release-only tag-release): New Makefile 34121 targets. 34122 341232014-11-18 Dodji Seketeli <dodji@redhat.com> 34124 34125 Added a ChangeLog that is auto-generated by gen-changelog.py 34126 * ChangeLog: Add this auto-generated file. 34127 341282014-11-18 Dodji Seketeli <dodji@redhat.com> 34129 34130 [gen-changelog] Make subject line always come first 34131 * gen-changelog.py (process_commit): In changelog entries with an 34132 empty body, make sure the subject line comes first. 34133 341342014-11-18 Dodji Seketeli <dodji@redhat.com> 34135 34136 Try harder to remove timezone info from the date 34137 * gen-changelog.py (process_commit): The timezone shit can start 34138 either with a '+' or a '-'. 34139 341402014-11-18 Dodji Seketeli <dodji@redhat.com> 34141 34142 Not all ChangeLog file lines end up with a ':' 34143 * gen-changelog.py (process_commit): When trying to recognize the 34144 beginning of a ChangeLog entry body, do not expect a line that 34145 starts with a '*' to end with a ':' because there can be long file 34146 names that end on the next line. 34147 341482014-11-18 Dodji Seketeli <dodji@redhat.com> 34149 34150 Allow introductory text in commit log and ignore it when generating ChangeLog 34151 * gen-changelog.py (process_commit): Everything that comes between 34152 the subject line of the commit and the first \t* sequence is 34153 considered to be introductory text. Ignore it when generating the 34154 ChangeLog entry. 34155 * COMMIT-LOG-GUIDELINES: Update the commit log guidelines to 34156 reflect the fact that we can now have introductory text in the 34157 commit log. 34158 341592014-11-18 Dodji Seketeli <dodji@redhat.com> 34160 34161 Initial import of gen-changelog.py 34162 * gen-changelog.py: Copy from 34163 https://github.com/GNOME/gnet/blob/master/gen-changelog.py. 34164 License it under LGPLV v2+ after asking Edward Hervey's kind 34165 permission. Ain't Free Software really great? 34166 341672014-11-18 Dodji Seketeli <dodji@redhat.com> 34168 34169 Fix the reference to the IRC channel on the web page 34170 * doc/website/mainpage.txt: The IRC server address is 34171 irc.oftc.net, not just oftc.net. 34172 * include/abg-fwd.h: Likewise. 34173 341742014-11-10 Dodji Seketeli <dodji@redhat.com> 34175 34176 Consider enclosing template when comparing template parameters 34177 * src/abg-ir.cc (template_parameter::priv::comparison_started_): 34178 New data member. 34179 (template_parameter::priv::priv): Initialize it. 34180 (template_parameter::operator==): Compare the enclosing template 34181 too. And avoid infinite recursion. 34182 341832014-11-10 Dodji Seketeli <dodji@redhat.com> 34184 34185 Remove mention of libzip from the web page 34186 * doc/website/mainpage.txt: Remove mention of libzip from the list 34187 of dependencies. 34188 341892014-11-10 Dodji Seketeli <dodji@redhat.com> 34190 34191 Cleanup of the web page 34192 * doc/website/libabigail-website.doxy: Remove the redundant 34193 information that was appearing on the web page. 34194 * doc/website/mainpage.txt: Clean-up the text of the web page, add 34195 information for the new IRC channel #libabigail on oftc.net, 34196 re-organize the content by putting sections where we had 34197 paragraphs. Add a table of content. Also add a web form to 34198 subscribe/unsubscribe to the mailing list. 34199 342002014-11-08 Dodji Seketeli <dodji@redhat.com> 34201 34202 Sort functions by the their qualified name 34203 * src/abg-comparison.cc (function_comp::operator()): Sort the 34204 functions by only looking at their qualified name, as opposed to 34205 their return type name. 34206 342072014-11-08 Dodji Seketeli <dodji@redhat.com> 34208 34209 Remove too tight assert from de-mangling code 34210 * src/abg-ir.cc (demangle_cplus_mangled_name): The return length 34211 can be zero. That means, no de-mangling was done. 34212 342132014-11-08 Dodji Seketeli <dodji@redhat.com> 34214 34215 Sort reported changed declarations & types in a given scope 34216 * src/abg-comparison.cc (struct changed_type_or_decl_comp, struct 34217 changed_vars_comp): New comparison functors. 34218 (sort_changed_type_or_decl, sort_changed_vars): New static 34219 functions. 34220 (scope_diff::report): Use the above to sort changed declarations, 34221 and types in a given scope. 34222 (corpus_diff::report): Likewise for the changed variables. 34223 * tests/data/test-abidiff/test-struct1-report.txt: Adjust. 34224 * tests/data/test-diff-suppr/test7-var-suppr-report-0.txt: 34225 Likewise. 34226 * tests/data/test-diff-suppr/test7-var-suppr-report-8.txt: 34227 Likewise. 34228 342292014-11-08 Dodji Seketeli <dodji@redhat.com> 34230 34231 Sort elf symbols before serializing them 34232 * include/abg-corpus.h (corpus::{get_sorted_fun_symbols, 34233 get_sorted_var_symbols}): Declare new member functions. 34234 * src/abg-corpus.cc (corpus_priv::{sorted_var_symbols, 34235 sorted_fun_symbols}): New data members. 34236 (struct elf_symbol_comp_functor): Define new comparison functor. 34237 (corpus::{get_sorted_fun_symbols, get_sorted_var_symbols}): Define 34238 new member functions. 34239 * src/abg-writer.cc (write_elf_symbols_table): Take a sorted 34240 vector of symbols in parameters, rather than an unsorted map. 34241 (write_corpus_to_native_xml): Write a sorted vector of symbols, 34242 rather than an unsorted map of symbols. 34243 * tests/data/test-read-dwarf/test0.abi: Adjust. 34244 * tests/data/test-read-dwarf/test1.abi: Likewise. 34245 * tests/data/test-read-dwarf/test2.so.abi: Likewise. 34246 * tests/data/test-read-dwarf/test3.so.abi: Likewise. 34247 * tests/data/test-read-dwarf/test6.so.abi: Likewise. 34248 342492014-11-07 Dodji Seketeli <dodji@redhat.com> 34250 34251 Fix template parameter hashing: make it know about enclosing template 34252 * include/abg-ir.h (template_parameter_sptr, template_decl_sptr) 34253 (template_decl_wptr): Declare new typedefs. 34254 (class template_decl): Make this virtually inherit decl_base and 34255 pimpl-ify it. 34256 (class template_parameter): Pimpl-ify this. Make the constructor 34257 take the enclosing template parameter. 34258 (struct template_decl::hash): Declare this here, rather than in 34259 src/abg-hash.cc 34260 (class type_tparameter, non_type_tparameter, template_tparameter) 34261 (class type_composition, function_tdecl, class_tdecl): Pimpl-ify 34262 this. 34263 * src/abg-hash.cc (template_parameter::hash::operator()): Hash the 34264 enclosing template parameter. Avoid infinite recursion due to the 34265 loop hash parameter -> hash template -> hash parameter. 34266 (template_decl::hash::operator()) Define this here, now that it's 34267 declared in abg-ir.h. Also, avoid infinite recursion here; this 34268 is complementary to what is done in the hashing for 34269 template_parameter. 34270 ({type_tparameter, template_tparameter, }::hash::operator()): 34271 Cache the calculated hash just as what is done for other types 34272 hashed. 34273 (template_decl::priv): Define this new type. 34274 (template_decl::{add_template_parameter, get_template_parameters, 34275 ~template_decl}): Define these here to pimpl-ify template_decl. 34276 (template_parameter::priv): Define this new type. 34277 (template_parameter::template_parameter): Define this here to 34278 pimpl-ify template_parameter. Note also that this now takes the 34279 enclosing template decl. 34280 (template_parameter::{get_index, get_enclosing_template_decl, 34281 get_hashing_has_started, set_hashing_has_started, operator::==}): 34282 Define these here to pimpl-ify template_parameter. 34283 (type_tparameter::priv): Define this new type. 34284 (type_tparameter::type_tparameter): Define this here to pimpl-ify 34285 type_tparameter. Also, not that this constructor now takes the 34286 enclosing template decl. 34287 (class non_type_tparameter::priv): Define new type. 34288 (non_type_tparameter::{non_type_tparameter, get_type}): Define 34289 these here to pimpl-ify non_type_tparameter. The constructor now 34290 takes the enclosing template. 34291 (template_tparameter::priv): Define new type. 34292 (template_tparameter::template_tparameter): Define this here to 34293 pimpl-ify template_tparameter. This constructor now takes the 34294 enclosing template. 34295 (class type_composition::priv): New type. 34296 (type_composition::{type_composition, get_composed_type, 34297 set_composed_type}): Define these here to pimpl-ify 34298 type_composition. The constructor now takes the enclosing 34299 template decl. 34300 (class function_tdecl::priv): Define new type. 34301 (function_tdecl::{function_tdecl, set_pattern, get_pattern, 34302 get_binding}): Define this here to pimpl-ify function_tdecl. 34303 (class class_tdecl::priv): Define this new type. 34304 (class_tdecl::class_tdecl): Define this here to pimpl-ify 34305 class_tdecl. 34306 (class_tdecl::set_pattern): Adjust to pimpl-ify. 34307 (class_tdecl::get_pattern): Define new pimpl-ified getter. 34308 * src/abg-reader.cc (build_function_tdecl, build_class_tdecl): 34309 Cleanup. Pass the enclosing template to the template parameters 34310 that are built. 34311 (build_type_tparameter, build_type_composition) 34312 (build_non_type_tparameter, build_template_tparameter) 34313 (build_template_parameter): Take the enclosing template 34314 declaration and pass it to the template parameter being created. 34315 * tests/data/test-read-write/test12.xml: Fix and Adjust. 34316 * tests/data/test-read-write/test13.xml: Likewise. 34317 343182014-11-06 Dodji Seketeli <dodji@redhat.com> 34319 34320 Style fix 34321 * include/abg-ir.h (class location): Remove useless white space. 34322 * src/abg-writer.cc (type_has_existing_id): Use type_base_sptr 34323 rather than shared_ptr<type_base>. 34324 (write_template_tparameter): Use template_tparameter_sptr rather 34325 than shared_ptr<template_tparameter>. 34326 343272014-11-05 Dodji Seketeli <dodji@redhat.com> 34328 34329 Pass -std=gnu++11 to the compiler when --enable-cxx11 for tests 34330 * tests/Makefile.am: Pass -std=gnu++11 to the compiler when 34331 --enable-cxx11 has been used. 34332 343332014-11-05 Dodji Seketeli <dodji@redhat.com> 34334 34335 Make the use of a C++-11 compiler optional 34336 * configure.ac: Define a new --enable-cxx11 switch to control the 34337 use of the C++-11 compiler. Define a WITH_CXX11 C macro and an 34338 automake ENABLE_CXX11 variable. 34339 * config.h.in: Initialize the new WITH_CXX11 C macro. 34340 * src/Makefile.am: Include the files coded in C++-11 only if the 34341 ENABLE_CXX11 automake variable is defined. 34342 * tests/Makefile.am: Likewise, build the runtestsvg test program 34343 only if C++-11 usage is enabled. 34344 * include/abg-diff-utils.h (class d_path_vec): Remove useless 34345 usage of the 'typename' keyword. 34346 * include/abg-fwd.h (is_enum_type): Renamed is_enum into this, 34347 because of a name clash with a tr1 function when not using C++-11. 34348 (is_pointer_type): Likewise, renamed is_pointer into this because 34349 of a name clash with a tr1 function when not using C++-11. 34350 * src/abg-comp-filter.cc (has_harmless_name_change): Adjust for 34351 the is_enum -> is_enum_type change. 34352 * src/abg-comparison.cc (type_suppression::suppresses_diff): 34353 Likewise. 34354 (class function_suppression::priv): Add a missing "class" keyword 34355 in friend declaration. 34356 (diff_context::diff_has_been_traversed) 34357 (diff_context::mark_diff_as_traversed): Do not use the C++-11 34358 specific type uintptr_t. 34359 * src/abg-dwarf-reader.cc (create_default_dwfl): Do not use 34360 designated initializers. Sigh. This is handy though. 34361 (expr_result::abs): Cast the argument of std::abs to avoid 34362 ambiguous call. 34363 (finish_member_function_reading): Adjust for the is_pointer -> 34364 is_pointer_type renaming. 34365 * src/abg-hash.cc (scope_decl::hash::operator) 34366 (class_decl::base_spec::hash::operator) 34367 (type_composition::hash::operator): Use std::tr1::hash string, 34368 rather than the C++-11 specific std::hash function. 34369 * src/abg-ini.cc (read_sections, write_sections): Make 34370 std::ifstream constructor take a const char* rather than a string. 34371 * src/abg-ir.cc (is_enum_type, is_pointer_type): Renamed is_enum 34372 into is_enum_type and is_pointer into is_pointer_type. 34373 * src/abg-writer.cc (write_translation_unit): Remove useless 34374 typename keyword. Make ofstream take a const char* rather than a 34375 string. 34376 (write_namespace_decl): Remove useless typename keyword. 34377 (write_corpus_to_native_xml_file): Make ofstream take a const 34378 char* rather than a string. 34379 * tests/test-abidiff.cc (main): Make ofstream take a const char* 34380 rather than a string. 34381 * tests/test-diff-dwarf.cc (main): Likewise. 34382 343832014-11-05 Dodji Seketeli <dodji@seketeli.org> 34384 34385 Remove some m4 auto-generated files from version control 34386 * m4/ltoptions.m4: Remove from version control. 34387 * m4/ltversion.m4: Remove from version control. 34388 * m4/lt~obsolete.m4: Remove from version control. 34389 343902014-11-03 Dodji Seketeli <dodji@redhat.com> 34391 34392 Add usage examples to the abidiff manual 34393 * doc/manuals/abidiff.rst: Add a usage example section along with 34394 some small and clean examples. 34395 343962014-11-01 Dodji Seketeli <dodji@redhat.com> 34397 34398 Fix the API doc string of the abigail::xml_writer namespace 34399 * src/abg-writer.cc: Fix the API doc of the xml_writer namespace. 34400 344012014-11-01 Dodji Seketeli <dodji@redhat.com> 34402 34403 Fix an apidoc typo 34404 * include/abg-comparison.h (class variable_suppression): Fix a 34405 typo in the doc string. 34406 344072014-11-01 Dodji Seketeli <dodji@redhat.com> 34408 34409 Update the manual for variable suppression concepts 34410 * doc/manuals/libabigail-concepts.rst: Add a section for variable 34411 suppression specification in the concepts part of the manual. 34412 344132014-11-01 Dodji Seketeli <dodji@redhat.com> 34414 34415 Fix some restructured text doc glitches in the fn suppression manual 34416 * doc/manuals/libabigail-concepts.rst: Fix quoting of the syntax 34417 of parameter specification string, for the function suppression 34418 concepts. 34419 344202014-11-01 Dodji Seketeli <dodji@redhat.com> 34421 34422 Cleanup the mainpage of the API doc 34423 * include/abg-fwd.h: Cleanup text of the API doc mainpage. 34424 344252014-11-01 Dodji Seketeli <dodji@redhat.com> 34426 34427 Make get_binary_load_address static 34428 * src/abg-dwarf-reader.cc (get_binary_load_address): Make this 34429 function static. 34430 344312014-11-01 Dodji Seketeli <dodji@redhat.com> 34432 34433 Initial support for variable suppressions 34434 * include/abg-comparison.h (variable_suppression_sptr) 34435 (variable_suppressions_type): New convenience typedefs. 34436 (class variable_suppression): Declare new type. 34437 * src/abg-comparison.cc (is_var_diff): New predicate. 34438 (read_variable_suppression): Define new static function. 34439 (class variable_suppression::priv): Define type for the private 34440 data of the variable_suppression type. 34441 (variable_suppression::{variable_suppression, 34442 ~variable_suppression, get_name, set_name, get_name_regex_str, 34443 set_name_regex_str, get_symbol_name, set_symbol_name, 34444 get_symbol_name_regex_str, set_symbol_name_regex_str, 34445 get_symbol_version, set_symbol_version, 34446 get_symbol_version_regex_str, set_symbol_version_regex_str, 34447 get_type_name, set_type_name, get_type_name_regex_str, 34448 set_type_name_regex_str, suppresses_diff}): Define new member 34449 functions for the variable_suppression type. 34450 * tests/data/test-diff-suppr/libtest7-var-suppr-v0.so: Add new 34451 test input. 34452 * tests/data/test-diff-suppr/libtest7-var-suppr-v1.so: Likewise. 34453 * tests/data/test-diff-suppr/test7-var-suppr-1.suppr: Likewise. 34454 * tests/data/test-diff-suppr/test7-var-suppr-2.suppr: Likewise. 34455 * tests/data/test-diff-suppr/test7-var-suppr-3.suppr: Likewise. 34456 * tests/data/test-diff-suppr/test7-var-suppr-4.suppr: Likewise. 34457 * tests/data/test-diff-suppr/test7-var-suppr-5.suppr: Likewise. 34458 * tests/data/test-diff-suppr/test7-var-suppr-6.suppr: Likewise. 34459 * tests/data/test-diff-suppr/test7-var-suppr-7.suppr: Likewise. 34460 * tests/data/test-diff-suppr/test7-var-suppr-8.suppr: Likewise. 34461 * tests/data/test-diff-suppr/test7-var-suppr-report-0.txt: Likewise. 34462 * tests/data/test-diff-suppr/test7-var-suppr-report-1.txt: Likewise. 34463 * tests/data/test-diff-suppr/test7-var-suppr-report-2.txt: Likewise. 34464 * tests/data/test-diff-suppr/test7-var-suppr-report-3.txt: Likewise. 34465 * tests/data/test-diff-suppr/test7-var-suppr-report-4.txt: Likewise. 34466 * tests/data/test-diff-suppr/test7-var-suppr-report-5.txt: Likewise. 34467 * tests/data/test-diff-suppr/test7-var-suppr-report-6.txt: Likewise. 34468 * tests/data/test-diff-suppr/test7-var-suppr-report-7.txt: Likewise. 34469 * tests/data/test-diff-suppr/test7-var-suppr-report-8.txt: 34470 Likewise. 34471 * tests/data/test-diff-suppr/test7-var-suppr-version-script: Likewise. 34472 * tests/data/test-diff-suppr/test7-var-suppr-v0.cc: Source code 34473 for the librairie above. 34474 * tests/data/test-diff-suppr/test7-var-suppr-v1.cc: Source code 34475 for the librairie above. 34476 * tests/Makefile.am: Add the new test input data to the source 34477 distribution. 34478 * tests/test-diff-suppr.cc: Update to make this harness to run 34479 over the new test input above. 34480 344812014-11-01 Dodji Seketeli <dodji@redhat.com> 34482 34483 Update the suppr-doc.txt file for variable suppressions 34484 * doc/suppr-doc.txt: Add the suppress_variable section example. 34485 344862014-11-01 Dodji Seketeli <dodji@redhat.com> 34487 34488 Make var_diff and function_decl_diff extend decl_diff_base 34489 * include/abg-comparison.h (class var_diff, class 34490 function_decl_diff): Make these types inherit the decl_diff_base 34491 class. This is like the fact that all kinds of diff inherit the 34492 type_diff_base class. 34493 * src/abg-comparison.cc (var_diff::var_diff) 34494 (function_decl_diff::function_decl_diff): Adjust to initialize the 34495 sub-object of decl_diff_base; 34496 (is_decl_diff): New predicate to know if a diff is about decls. 34497 (is_function_decl): New predicate to know if a diff is about 34498 function decls. 34499 (function_suppression::suppresses_diff): Adjust to use the new 34500 is_function_decl. 34501 345022014-11-01 Dodji Seketeli <dodji@redhat.com> 34503 34504 Fix logic of type suppression evaluation 34505 * include/abg-comparison.cc (type_suppression::suppresses_diff): 34506 Try to evaluate the "type_name_regexp" property only if the 34507 "type_name" is empty. 34508 345092014-11-01 Dodji Seketeli <dodji@redhat.com> 34510 34511 Remove useless functions from the comparison engine 34512 * include/abg-comparison.h (read_type_suppression): Remove this 34513 function declaration. 34514 * src/abg-comparison.cc (read_type_suppressions): Remove this 34515 static function definition. 34516 (read_function_suppressions): Remove this static function 34517 declaration. 34518 345192014-11-01 Dodji Seketeli <dodji@redhat.com> 34520 34521 Spit and polish variables presentation in diff report 34522 * src/abg-comparison.cc (corpus_diff::report): Show the full 34523 representation of the variable, rather than just its name. Also, 34524 show the new representation of the variable only if it has 34525 changed. 34526 * tests/data/test-diff-dwarf/test9-report.txt: Adjust test. 34527 * tests/data/test-diff-filter/test15-0-report.txt: Likewise. 34528 * tests/data/test-diff-filter/test15-1-report.txt: Likewise. 34529 345302014-11-01 Dodji Seketeli <dodji@redhat.com> 34531 34532 Fix various apidoc typos 34533 * include/abg-comparison.h (class function_suppression): Fix typo 34534 in the doc string. 34535 * src/abg-comparison.cc (is_type_diff, read_suppressions) 34536 (diff::reported_once, typedef_diff::report): Fix the doc string. 34537 345382014-11-01 Dodji Seketeli <dodji@redhat.com> 34539 34540 Fix regexp escaping section of manual 34541 * doc/manuals/libabigail-concepts.rst: Re-indent and fix some 34542 typos in the regexp escaping section of the manual. 34543 345442014-11-01 Dodji Seketeli <dodji@redhat.com> 34545 34546 Doxygen shouldn't extract doc for static functions or private types 34547 * doc/api/libabigail.doxy: Do not extract doc for static 34548 functions, local classes. 34549 345502014-11-01 Dodji Seketeli <dodji@redhat.com> 34551 34552 Update .gitignore 34553 * .gitignore: Ignore *~ emacs files. 34554 345552014-10-29 Dodji Seketeli <dodji@redhat.com> 34556 34557 Separate alias targets with a comma 34558 * src/abg-ir.cc (elf_symbol::get_aliases_id_string): Separate 34559 alias targets by a comma. 34560 * tests/data/test-diff-dwarf/test18-alias-sym-v1.cc: Update test 34561 to add more than one alias to a given symbol. 34562 345632014-10-28 Dodji Seketeli <dodji@redhat.com> 34564 34565 Fix a typo in the manual about function suppressions 34566 * doc/manuals/libabigail-concepts.rst: Fix a typo. 34567 345682014-10-28 Dodji Seketeli <dodji@redhat.com> 34569 34570 Initial support for function suppressions 34571 * include/abg-comparison.h (enum visiting_kind): Change the 34572 meaning of this. It was to determine if traversal was to be done 34573 in a pre or post manner. But with the recent addition of 34574 diff_node_visitor::visit_{begin,end}() notifiers, the pre/post 34575 handling is taken care of in a different way. So now the meaning 34576 of this enum is changed to handle whether diff node children 34577 should be visited or not. So the enumerators are now 34578 DEFAULT_VISITING_KIND, and SKIP_CHILDREN_VISITING_KIND. And it's 34579 a bit-field. 34580 (operator{&,~}): Declare more bit manipulation operators for the 34581 enum visiting_kind. 34582 (function_suppression_sptr, function_suppressions_type): New 34583 typedefs. 34584 (function_suppression, function_suppression::parameter_spec): 34585 Declare new types. 34586 (read_function_suppressions): Declare new function. 34587 (diff_node_visitor::diff_node_visitor): Adjust for the enum 34588 visiting_kind change. Value-initialize the visiting_kind_ data 34589 member. 34590 * src/abg-comparison.cc (operator{&,~}): Define these operators 34591 for enum visiting_kind. 34592 (read_type_suppressions): Forward declare this static function. 34593 (read_function_suppression, read_parameter_spec_from_string): 34594 Define new static functions. 34595 (read_suppressions): Update to read function suppressions too, 34596 using the new read_function_suppression function above. 34597 (class function_suppression::parameter_spec::priv): Define new 34598 type. 34599 (function_suppression::parameter_spec::*): Define the member 34600 functions of the new function_suppression::parameter_spec type. 34601 (class function_suppression::priv): Define new type. 34602 (function_suppression::*): Define the member functions of the new 34603 function_suppression type. 34604 (diff::traverse): There is no more {PRE,POST}_VISITING_KIND 34605 enumerator. So nuke the code that was dealing with it. 34606 (redundancy_marking_visitor::skip_children_nodes_): New data 34607 member flag. 34608 (redundancy_marking_visitor::visit_begin): If the current diff 34609 node is not be reported (is filtered out), do not bother visit its 34610 children nodes for the purpose of marking redundant nodes. So use 34611 the new skip_children_nodes_ flag above to know we are in that case. 34612 (redundancy_marking_visitor::visit_end): Unset the new 34613 skip_children_nodes_ flag above when appropriate. 34614 * include/abg-fwd.h (is_function_decl): Declare new function. 34615 * include/abg-ir.h 34616 (function_type::get_parm_at_index_from_first_non_implicit_parm): 34617 Declare new member function. 34618 * src/abg-ir.cc (is_function_decl): Define new function. 34619 (function_type::get_parm_at_index_from_first_non_implicit_parm): 34620 Define new member function. 34621 * src/abg-comp-filter.cc (apply_filter): Adjust for the enum 34622 visiting_kind change. No need to set it for filters anymore 34623 * doc/suppr-doc.txt: Update examples of function suppression. 34624 * doc/manuals/libabigail-concepts.rst: Update the manual for the 34625 function suppression addition. 34626 * tests/data/test-diff-suppr/libtest5-fn-suppr-v0.so: New test input. 34627 * tests/data/test-diff-suppr/libtest5-fn-suppr-v1.so: New test input. 34628 * tests/data/test-diff-suppr/libtest6-fn-suppr-v0.so: New test input. 34629 * tests/data/test-diff-suppr/libtest6-fn-suppr-v1.so: New test input. 34630 * tests/data/test-diff-suppr/test5-fn-suppr-0.suppr: New test input. 34631 * tests/data/test-diff-suppr/test5-fn-suppr-1.suppr: New test input. 34632 * tests/data/test-diff-suppr/test5-fn-suppr-2.suppr: New test input. 34633 * tests/data/test-diff-suppr/test5-fn-suppr-3.suppr: New test input. 34634 * tests/data/test-diff-suppr/test5-fn-suppr-4.suppr: New test input. 34635 * tests/data/test-diff-suppr/test5-fn-suppr-report-0.txt: New test input. 34636 * tests/data/test-diff-suppr/test5-fn-suppr-report-1.txt: New test input. 34637 * tests/data/test-diff-suppr/test5-fn-suppr-report-2.txt: New test input. 34638 * tests/data/test-diff-suppr/test5-fn-suppr-report-3.txt: New test input. 34639 * tests/data/test-diff-suppr/test5-fn-suppr-report-4.txt: New test input. 34640 * tests/data/test-diff-suppr/test5-fn-suppr-report-5.txt: New test input. 34641 * tests/data/test-diff-suppr/test5-fn-suppr-v0.cc: Source code for 34642 new test input. 34643 * tests/data/test-diff-suppr/test5-fn-suppr-v1.cc: Source code for 34644 new test input. 34645 * tests/data/test-diff-suppr/test6-fn-suppr-0.suppr: New test input. 34646 * tests/data/test-diff-suppr/test6-fn-suppr-1.suppr: New test input. 34647 * tests/data/test-diff-suppr/test6-fn-suppr-2.suppr: New test input. 34648 * tests/data/test-diff-suppr/test6-fn-suppr-3.suppr: New test input. 34649 * tests/data/test-diff-suppr/test6-fn-suppr-report-0.txt: New test input. 34650 * tests/data/test-diff-suppr/test6-fn-suppr-report-1.txt: New test input. 34651 * tests/data/test-diff-suppr/test6-fn-suppr-report-2.txt: New test input. 34652 * tests/data/test-diff-suppr/test6-fn-suppr-report-3.txt: New test input. 34653 * tests/data/test-diff-suppr/test6-fn-suppr-report-4.txt: New test input. 34654 * tests/data/test-diff-suppr/test6-fn-suppr-v0.cc: Source code for 34655 new test input. 34656 * tests/data/test-diff-suppr/test6-fn-suppr-v1.cc: Source code for 34657 new test input. 34658 * tests/data/test-diff-suppr/test6-fn-suppr-version-script: New 34659 test input. 34660 * tests/Makefile.am: Add the new files above to source 34661 the distribution. 34662 * tests/test-diff-suppr.cc (in_out_specs): Add the test inputs 34663 above to the list of tests to be run by this harness. 34664 346652014-10-28 Dodji Seketeli <dodji@redhat.com> 34666 34667 Add missing virtual destructor in comparison engine code 34668 * include/abg-comparison.h (type_suppression::~type_suppression): 34669 Declare missing virtual destructor. 34670 * src/abg-comparison.cc (type_suppression::~type_suppression): 34671 Define missing virtual destructor. 34672 346732014-10-27 Dodji Seketeli <dodji@redhat.com> 34674 34675 Pimplify abigail::ir::function_type 34676 * include/abg-ir.h (function_type::priv_): Declare new data 34677 member. 34678 (function_type::<all the methods>): Move the inline methods out of 34679 line in src/abg-ir.cc. 34680 (function_type::{return_type_, parms_}): Move these ... 34681 * src/abg-ir.cc (function_type::priv::{return_type_, parms_}): 34682 ... Here. 34683 (struct function_type::priv): New type for the private data of 34684 function_type. 34685 (function_type::<all the methods>): Move the previously inline 34686 methods of function_type here. Adjust them to tap into priv_->* 34687 to get the private data members. 34688 346892014-10-27 Dodji Seketeli <dodji@redhat.com> 34690 34691 Light style fix 34692 * include/abg-ir.h (function_decl::get_type): Change the return 34693 type from shared_ptr<function_type> to function_type_sptr. 34694 346952014-10-27 Dodji Seketeli <dodji@redhat.com> 34696 34697 Allow white spaces in ini file property values 34698 * src/abg-ini.cc (read_context::char_is_property_value_char): New 34699 member function. 34700 (read_context::read_next_char): Fix typos. Allow escaping of '[' 34701 and ']'. 34702 (read_context::read_property_value): Use the new 34703 read_context::char_is_property_value_char above. 34704 347052014-10-27 Dodji Seketeli <dodji@redhat.com> 34706 34707 Fix typo in suppression specification manual 34708 * doc/manuals/libabigail-concepts.rst: Fix name -> name_regexp. 34709 347102014-10-22 Dodji Seketeli <dodji@redhat.com> 34711 34712 Support comparing symbols not referenced by debug info 34713 * doc/manuals/abidiff.rst: Adjust intro to mention that w/o debug 34714 info, abidiff now works but just report about added/removed 34715 symbols. Add documentation about the new 34716 --no-unreferenced-symbols option. 34717 * include/abg-comparison.h (string_elf_symbol_map): New typedef. 34718 (diff_context::show_symbols_unreferenced_by_debug_info): Declare 34719 new accessors. 34720 * src/abg-comparison.cc 34721 (diff_context::priv::show_syms_unreferenced_by_di_): New data 34722 member. 34723 (diff_context::priv::priv): Adjust. 34724 (diff_context::show_symbols_unreferenced_by_debug_info): Implement 34725 these accessors. 34726 (corpus_diff::priv::{unrefed_fn_syms_edit_script_, 34727 unrefed_var_syms_edit_script_, added_unrefed_fn_syms_, 34728 deleted_unrefed_fn_syms_, added_unrefed_var_syms_, 34729 deleted_unrefed_var_syms_}): New data members. 34730 (corpus_diff::priv::diff_stats::{num_func_syms_removed, 34731 num_func_syms_added, num_var_syms_removed, num_var_syms_added}): 34732 New data members. 34733 (corpus_diff::priv::diff_stats::diff_stats): Adjust. 34734 (corpus_diff::ensure_lookup_tables_populated): Populate lookup 34735 tables for added/removed symbols that are not referenced by any 34736 debug info. 34737 (corpus_diff::priv::apply_filters_and_compute_diff_stats): Compute 34738 stats for the added/removed symbols not referenced by any debug 34739 info. 34740 (corpus_diff::priv::emit_diff_stats): Emit stats about 34741 added/removed symbols that are not referenced by any debug info. 34742 (corpus_diff::length): Adjust to take in account added/removed 34743 symbols not referenced by any debug info. 34744 (show_linkage_name_and_aliases): New static function. 34745 (corpus_diff::report): When emitting a symbol name, emit its 34746 version too, and tell if it aliases other symbols. Avoid emitted 34747 extra new lines. Report added/removed symbols not referenced by 34748 any debug info. 34749 (compute_diff): In the overload for corpus_sptr, compute the diffs 34750 for symbols not referenced by debug info. 34751 * include/abg-corpus.h 34752 (corpus::get_unreferenced_{function,variable}_symbols): Declare 34753 new member functions. 34754 * src/abg-corpus.cc (corpus_priv::{unrefed_fun_symbols, 34755 unrefed_var_symbols}): New data members. 34756 (corpus_priv::build_unreferenced_symbols_tables): Define new 34757 member function. 34758 (struct comp_elf_symbols_functor): New functor. 34759 (corpus::is_empty): Adjust to take in account added/removed 34760 symbols not referenced by debug info. 34761 (corpus::{get_unreferenced_function_symbols, 34762 corpus::get_unreferenced_variable_symbols}): Define these 34763 accessors. 34764 * include/abg-dwarf-reader.h (enum status): Transform this into 34765 bitfields. Add a STATUS_UNKNOWN value that has the value 0. 34766 (operator|(status, status), operator&(status, status)) 34767 (operator|=(status&, status), operator&=(status, status)): New 34768 bit-wise operators to manipulate instances of the status bit-field. 34769 * src/abg-dwarf-reader.cc (get_version_for_symbol): Fix this to 34770 avoid returning garbage version sometimes. 34771 (read_debug_info_into_corpus): Fix this to return a non-null but 34772 empty corpus_sptr when there is no debug info available. 34773 (operator|(status, status), operator&(status, status)) 34774 (operator|=(status&, status), operator&=(status, status)): Define 34775 these new bitwise operators to manipulate instances of the status 34776 bit-field. 34777 (read_corpus_from_elf): Now that the abigail::dwarf_reader::status 34778 is a bit-field, set it to reflect if debug info and/or symbol 34779 tables have been found. Do not bail out if debug info hasn't been 34780 found. Rather, keep going, and go look for symbols-only; this is 34781 a kind of operating in degraded mode. 34782 * include/abg-ir.h (elf_symbol::get_aliases_id_string): Add a flag 34783 that says if the current instance of elf_symbol should be included 34784 in the list of aliases or not. 34785 * src/abg-ir.cc (elf_symbol::get_aliases_id_string): Define it. 34786 * tests/data/test-diff-dwarf/test16-syms-only-v{0,1}.o: New test 34787 input. 34788 * tools/abidiff.cc 34789 (options::show_symbols_not_referenced_by_debug_info): New data 34790 member. 34791 (options:options): Adjust. 34792 (display_usage): Add an info string for the new 34793 --no-unreferenced-symbols command line option. 34794 (parse_command_line): Parse the new --no-unreferenced-symbols 34795 command line. 34796 (set_diff_context_from_opts): Set the diff_context according to 34797 the presence of --no-unreferenced-symbols. 34798 (main): Adjust for the fact that abigail::dwarf_reader::status is 34799 now a bit-field. 34800 * tools/abilint.cc (main): Adjust for the fact that 34801 abigail::dwarf_reader::status is now a bit-field.. 34802 (): 34803 * tests/data/test-diff-dwarf/test16-syms-only-report.txt: New test 34804 reference output. 34805 * tests/data/test-diff-dwarf/test16-syms-only-v{0,1}.cc: Source code 34806 for new test input. 34807 * tests/data/test-diff-dwarf/test17-non-refed-syms-v{0,1}.o: New 34808 test input. 34809 * tests/data/test-diff-dwarf/test17-non-refed-syms-v{0,1}.cc: New 34810 source code for test input. 34811 * tests/data/test-diff-dwarf/libtest18-alias-sym-v{0,1}.so: New 34812 test input. 34813 * tests/data/test-diff-dwarf/test18-alias-sym-report-0.txt: 34814 Reference output for new test input. 34815 * tests/data/test-diff-dwarf/test18-alias-sym-v{0,1}.cc: Source 34816 code for new test input. 34817 * tests/data/test-diff-dwarf/test18-alias-sym-version-script: 34818 Source code for new test input. 34819 * tests/Makefile.am: Add the new test materials to the source 34820 distribution. 34821 * tests/test-diff-dwarf.cc(in_out_specs): Add the new input tests 34822 above to the array of tests to run by this harness. 34823 (main): Emit empty reports for empty resulting diffs. 34824 * tests/data/test-diff-dwarf/test{0,8,9,12,14-inline-report,}-report.txt: 34825 Adjust. 34826 * tests/data/test-diff-filter/test{0,01,2,4,5,7,8,9,10,12,13,15-0,15-1}-report.txt: 34827 Likewise. 34828 * tests/data/test-diff-filter/test{19-enum,20-inline,}-report-0.txt: 34829 Likewise. 34830 * tests/data/test-diff-suppr/test0-type-suppr-report-{1,2}.txt: 34831 Likewise. 34832 * tests/data/test-diff-suppr/test{1,2}-typedef-suppr-report-1.txt: 34833 Likewise. 34834 348352014-10-22 Dodji Seketeli <dodji@redhat.com> 34836 34837 Allow comparison of shared_ptr of things 34838 * include/abg-diff-utils.h: Adjust copyright years. 34839 (deep_ptr_eq_functor::operator()(const shared_ptr<T>, const 34840 shared_ptr<T>)): New comparison operator. 34841 348422014-10-17 Dodji Seketeli <dodji@redhat.com> 34843 34844 Use the "standard" equality operator when comparing variables 34845 * src/abg-comparison.cc (compute_diff): In the overload for 34846 corpus_sptr, use the diff_utils::deep_ptr_eq_functor that is used 34847 to compare functions too, rather than the ad-hoc early struct 34848 var_eq_type we were using until now. 34849 348502014-10-16 Dodji Seketeli <dodji@redhat.com> 34851 34852 Yet another fix to the DWARF method "static-ness" detection heuristic 34853 * include/abg-fwd.h (is_pointer, is_qualified_type): Declare new 34854 functions. 34855 * src/abg-ir.cc (is_pointer, is_qualified_type): Implement these 34856 new functions. 34857 * src/abg-dwarf-reader.cc (finish_member_function_reading): 34858 Sometimes, the this pointer of a non-static method can point to a 34859 *qualified* version of its containing type. I am seeing that when 34860 comparing libstdc++.so from RHEL 6.5 and RHEL 7. Take that in 34861 account when trying to detect that the first parameter of a member 34862 function is the this pointer, and thus detect that the function is 34863 a non static member function. 34864 * tests/data/test-read-dwarf/test8-qualified-this-pointer.so.abi: 34865 New test input. 34866 * tests/data/test-read-dwarf/test8-qualified-this-pointer.so: New 34867 test input. 34868 * tests/data/test-read-dwarf/test8-qualified-this-pointer.cc: 34869 Source code of new test input. 34870 * tests/test-read-dwarf.cc: Update copyright year. 34871 (in_out_spec): Add the new test inputs to this array, so that this 34872 test harness runs on them. 34873 * tests/Makefile.am: Add the new test inputs to the source 34874 distribution. 34875 348762014-10-16 Dodji Seketeli <dodji@redhat.com> 34877 34878 Avoid infinite loops in the comparison code for classes 34879 * src/abg-ir.cc (equals): In the overload for classes, make sure 34880 to store the name of the lhs of the class and the rhs into the 34881 lhs. Also, when we bail out because we detect that there is a 34882 comparison underway, do *not* unmark the current class as not being 34883 involved in the comparison. Also, break at the first lhs virtual 34884 member function that is different from the rhs counter part. 34885 348862014-10-15 Dodji Seketeli <dodji@redhat.com> 34887 34888 Update the manual for the suppression specification initial work 34889 * doc/manuals/abidiff.rst: Add documentation for the new 34890 --suppressions command line switch. 34891 (--harmless, --harmful): Refer to the new "concepts" section 34892 below, where harmful/harmless concepts are now explained. 34893 (Notes): Move the content of the notes section where 34894 harmful/harmless concepts were explained, to the newly created 34895 'Concepts' section. 34896 * doc/manuals/index.rst: Limit the depth of the table of content 34897 to 2. Add the new libabigail-concepts.rst stuff in here. Adjust 34898 for the renaming of tools.rst to libabigail-tools.rst. 34899 * doc/manuals/libabigail-concepts.rst: New file. 34900 349012014-10-13 Dodji Seketeli <dodji@redhat.com> 34902 34903 Properly propagate {REDUNDANT, SUPPRESSED}_CATEGORY wrt local changes 34904 * src/abg-comparison.cc 34905 (suppression_categorization_visitor::visit_end): If a diff node 34906 carries local changes, then, even if all of its children node have 34907 been suppressed, this diff node shall not be categorized as 34908 suppressed by way of propagation. 34909 (redundancy_marking_visitor::visit_end): If a diff node carries 34910 local changes, then, even if all of its children nodes are 34911 redundant, this diff node shall not be categorized as being 34912 redundant by way of propagation. 34913 * tests/data/test-diff-suppr/libtest4-local-suppr-v{0,1}.so: New test 34914 inputs. 34915 * tests/data/test-diff-suppr/test4-local-suppr-0.suppr: Likewise. 34916 * tests/data/test-diff-suppr/test4-local-suppr-report-{0,1}.txt: 34917 Likewise. 34918 * tests/data/test-diff-suppr/test4-local-suppr-v{0,1}.{c,h}: 34919 Source code of the new tests inputs. 34920 * tests/Makefile.am: Add the new test material to the source 34921 distribution. 34922 * tests/test-diff-suppr.cc (in_out_spec): Run this test harness 34923 over the new test input above. 34924 349252014-10-13 Dodji Seketeli <dodji@redhat.com> 34926 34927 Gain ability know if a diff node has local changes 34928 * include/abg-comparison.h (diff::has_local_changes): Add new pure 34929 interface. 34930 ({decl_diff_base, type_diff_base, distinct_type_diff, var_diff, 34931 pointer_diff, reference_diff, array_diff, qualified_type_diff, 34932 enum_diff, class_diff, base_diff, scope_diff, function_decl_diff, 34933 type_decl_diff, typedef_diff, 34934 translation_unit_diff}::has_local_changes): Declare the 34935 implementation of the pure interface above. 34936 * src/abg-comparison.cc ({decl_diff_base, type_diff_base, 34937 distinct_type_diff, var_diff, pointer_diff, reference_diff, 34938 array_diff, qualified_type_diff, enum_diff, class_diff, base_diff, 34939 scope_diff, function_decl_diff, type_decl_diff, typedef_diff, 34940 translation_unit_diff}::has_local_changes): Define the 34941 implementation of the pure interface above. 34942 349432014-10-13 Dodji Seketeli <dodji@redhat.com> 34944 34945 Write comparison functions that hint at the kind of changes they see 34946 * include/abg-ir.h (enum change_kind): Declare new enum. 34947 (operator|(change_kind, change_kind), operator&(change_kind, 34948 change_kind), operator|=(change_kind&, change_kind)): Declare new bit-wise 34949 operators for the new enum change_kind. 34950 (equals): Declare this new comparison function for decl_base, 34951 scope_decl, type_base, type_decl, scope_type_decl, 34952 qualified_type_def, pointer_type_def, reference_type_def, 34953 array_type_def, enum_type_decl, typedef_decl, var_decl, 34954 function_decl, function_type, class_decl, and 34955 class_decl::base_spec. 34956 (class_decl::base_spec::operator(const decl_base&)): Declare new 34957 equality operator. 34958 * src/abg-ir.cc (operator|(change_kind l, change_kind r)) 34959 (operator&(change_kind l, change_kind r), operator|=(change_kind& 34960 l, change_kind r), operator&=(change_kind& l, change_kind r)): 34961 Define these new operators. 34962 (equals): Define this new comparison function for decl_base, 34963 scope_decl, type_base, type_decl, scope_type_decl, 34964 qualified_type_def, pointer_type_def, reference_type_def, 34965 array_type_def, enum_type_decl, typedef_decl, var_decl, 34966 function_decl, function_type, class_decl, and 34967 class_decl::base_spec. 34968 ({decl_base, scope_decl, type_base, type_decl, scope_type_decl, 34969 qualified_type_def, pointer_type_def, reference_type_def, 34970 array_type_def, enum_type_decl, typedef_decl, var_decl, 34971 function_decl, function_type, class_decl, 34972 class_decl::base_spec}::operator==): Re-write these comparison 34973 operators in terms of their relevant equal() functions. 34974 349752014-09-22 Dodji Seketeli <dodji@redhat.com> 34976 34977 Fix struct type kind suppression support 34978 * src/abg-comparison.cc (type_suppression::suppresses_diff): Do 34979 not crash on diff nodes that are not about struct/classes, when 34980 "type_kind = struct" has been specified. 34981 * tests/data/test-diff-suppr/test2-struct-suppr-{0,1}.suppr: New test input. 34982 * tests/data/test-diff-suppr/test2-struct-suppr-report-{0,1}.txt: 34983 Likewise. 34984 * tests/data/test-diff-suppr/test2-struct-suppr-v{0,1}.o: Likewise 34985 * tests/data/test-diff-suppr/test2-struct-suppr-v{1,0}.cc: Source code 34986 for binary test input. 34987 * tests/test-diff-suppr.cc (in_out_spec): Run this harness on the 34988 new test input above. 34989 * tests/Makefile.am: Add the new test input files to source 34990 distribution. 34991 349922014-09-22 Dodji Seketeli <dodji@redhat.com> 34993 34994 Replace is_typedef by type_kind property in type suppressions 34995 * doc/suppr-doc.txt: Add type_kind property "documentation" in the 34996 type suppression. 34997 * include/abg-comparison.h (type_suppression::type_kind): New 34998 enum. 34999 (type_suppression::{get_consider_typedefness, 35000 set_consider_typedefness, get_is_typedef, set_is_typedef}): 35001 Remove. 35002 (type_suppression::{get_consider_type_kind, 35003 set_consider_type_kind, get_type_kind, set_type_kind}): Declare 35004 new methods. 35005 * Include/abg-fwd.h (is_type_decl): Declare new function. 35006 (is_enum): Declare new overload that takes a type_base_sptr. 35007 * src/abg-comparison.cc 35008 (type_suppression::priv::{consider_typedefness_, is_typedef_}): 35009 Remove these data members. 35010 (type_suppression::priv::{consider_type_kind_, type_kind_}): New 35011 data members. 35012 (type_suppression::priv::priv): Adjust. 35013 (type_suppression::{get_consider_typedefness, 35014 set_consider_typedefness, get_is_typedef, set_is_typedef}): Remove 35015 these member functions. 35016 (type_suppression::{get_consider_type_kind, 35017 set_consider_type_kind, get_type_kind, set_type_kind}): Define 35018 these new member functions. 35019 (type_suppression::suppresses_diff): Adjust to consider the kind 35020 of types more generally than just considering typedef-ness. 35021 (read_type_kind_string): New static function. 35022 (read_type_suppression): Use the above to parse the value of the 35023 new type_kind property. Adjust the creation of the resulting 35024 type_suppression object. 35025 * src/abg-ir.cc (is_type_decl): Define new function. 35026 * tests/data/test-diff-suppr/test1-typedef-suppr-0.suppr: Adjust. 35027 * tests/data/test-diff-suppr/test1-typedef-suppr-1.suppr: Adjust. 35028 350292014-09-19 Dodji Seketeli <dodji@redhat.com> 35030 35031 Initial support for type suppressions 35032 * include/abg-comparison.h (diff_category::SUPPRESSED_CATEGORY): 35033 New enumerator. 35034 (diff_category::{SIZE_OR_OFFSET_CHANGE_CATEGORY, 35035 VIRTUAL_MEMBER_CHANGE_CATEGORY): Update the enumerator values for 35036 these. 35037 (diff::EVERYTHING_CATEGORY): Adjust. 35038 (suppression_base, type_suppression): Declare new types. 35039 (suppression_ptr, suppressions_type, type_suppression_sptr) 35040 (type_suppressions_type): New typedefs. 35041 (read_type_suppressions, read_suppressions): Declare new 35042 functions. 35043 (diff_context::{suppressions, add_suppression, add_suppressions}): 35044 Declare new methods. 35045 (diff::is_suppressed): Declare new member function. 35046 (apply_suppressions): Declare new function & overloads. 35047 * src/abg-comparison.cc (is_type_diff): Define new static 35048 function. 35049 ({suppression_base, type_suppression}::priv): Define new types. 35050 ({suppression_base, type_suppression}::*): Define the methods of the new 35051 suppression_base, type_suppressions types. 35052 (read_type_suppression, read_type_suppressions, read_suppressions) 35053 (read_type_suppressions): Define new static functions. 35054 (diff_context::priv::supprssions_): New data member. 35055 (diff_context::{suppressions, add_suppression, add_suppressions}): 35056 New methods. 35057 (diff::is_filtered_out): Consider that a diff node that is in the 35058 SUPPRESSED_CATEGORY is filtered out. 35059 (diff::is_suppressed): Define new member function. 35060 (operator<<(ostream& o, diff_category c)): Support the 35061 SUPPRESSED_CATEGORY category. 35062 (corpus_diff::report): Apply suppressions before reporting 35063 anything. 35064 (category_propagation_visitor::visit_end): Do not propagate 35065 SUPPRESSED_CATEGORY. This is just like what we do for 35066 REDUNDANT_CATEGORY. 35067 (struct suppression_categorization_visitor): New visitor. 35068 (apply_suppressions): Define function & overloads. 35069 * include/abg-ini.h (config::section::find_property): New method. 35070 (config::section): Fix end of class comment. 35071 * src/abg-ini.cc (config::section::find_property): Define new 35072 method. 35073 * tests/data/test-diff-suppr/test0-type-suppr-{0,1,2}.suppr: New 35074 test input files. 35075 * tests/data/test-diff-suppr/test0-type-suppr-report-{0,1,2,3}.txt: 35076 Likewise. 35077 * tests/data/test-diff-suppr/test0-type-suppr-v{0,1}.o: Likewise. 35078 * tests/data/test-diff-suppr/test0-type-suppr-v{0,1}.cc: Source code 35079 for new test input. 35080 * tests/data/test-diff-suppr/test1-typedef-suppr-v{0,1}.o: New test 35081 input files. 35082 * tests/data/test-diff-suppr/test1-typedef-suppr.h: Source code 35083 for new test input files. 35084 * tests/data/test-diff-suppr/test1-typedef-suppr-v{0,1}.c: Likewise 35085 * tests/data/test-diff-suppr/test1-typedef-suppr-{0,1}.suppr: New 35086 test input files. 35087 * tests/data/test-diff-suppr/test1-typedef-suppr-report-0.txt: Likewise. 35088 * tests/data/test-diff-suppr/test1-typedef-suppr-report-1.txt: Likewise. 35089 * tests/data/test-diff-suppr/test1-typedef-suppr-report-2.txt: Likewise. 35090 * tests/test-diff-suppr.cc: New test harness to run type suppression tests 35091 using the input files above. 35092 * tests/data/test-diff-suppr/test3-struct-suppr-0.suppr: New test input. 35093 * tests/data/test-diff-suppr/test3-struct-suppr-1.suppr: Likewise. 35094 * tests/data/test-diff-suppr/test3-struct-suppr-report-0.txt: Likewise. 35095 * tests/data/test-diff-suppr/test3-struct-suppr-report-1.txt: Likewise. 35096 * tests/data/test-diff-suppr/test3-struct-suppr-report-2.txt: Likewise. 35097 * tests/data/test-diff-suppr/test3-struct-suppr-v0.cc: Likewise. 35098 * tests/data/test-diff-suppr/test3-struct-suppr-v0.o: Likewise. 35099 * tests/data/test-diff-suppr/test3-struct-suppr-v1.cc: Likewise. 35100 * tests/data/test-diff-suppr/test3-struct-suppr-v1.o: Likewise. 35101 * tests/Makefile.am: Build the new runtestdiffsuppr test harness 35102 from the test-diff-filter.cc file. Add the new test files to the 35103 build system and source distribution. 35104 * tools/bidiff.cc (options::suppressions): New data member. 35105 (display_usage): Add a help string for the new 35106 --suppressions command line switch. 35107 (parse_command_line): Parse the --suppressions command line 35108 switch. 35109 (set_diff_context_from_opts): Read the suppressions provided by 35110 the --suppression command line switch and stuff them into the diff 35111 context. 35112 351132014-09-19 Dodji Seketeli <dodji@redhat.com> 35114 35115 Make all type diff types extend new type_diff_base type 35116 * include/abg-comparison.h (type_diff_base, decl_diff_base): New 35117 types. 35118 (type_diff_base_sptr): New typedef. 35119 (pointer_diff, reference_diff, array_diff, qualified_type_diff) 35120 (enum_diff, class_diff, type_decl_diff, typedef_diff): Make this 35121 extend the new type_diff_base. 35122 * src/abg-comparison.cc (type_diff_base::priv, type_diff_base): 35123 Define these new types and their methods. 35124 (pointer_diff::pointer_diff, array_diff::array_diff) 35125 (reference_diff::reference_diff) 35126 (qualified_type_diff::qualified_type_diff, enum_diff::enum_diff) 35127 (class_diff::class_diff, type_decl_diff::type_decl_diff) 35128 (typedef_diff::typedef_diff): Adjust. 35129 351302014-09-18 Dodji Seketeli <dodji@redhat.com> 35131 35132 Rename abigail::ini::config::section_vector to sections_type 35133 * include/abg-ini.h (abigail::ini::config::sections_type): Renamed 35134 section_vector into this. 35135 (config::{get_sections, set_sections, read_sections, 35136 write_sections}): Adjust. 35137 * src/abg-ini.cc (config::priv::sections_): Adjust. 35138 (config::priv::priv): Likewise. 35139 (config::{config, get_sections}): Likewise. 35140 (read_sections, read_config, write_sections): Likewise. 35141 351422014-09-08 Dodji Seketeli <dodji@redhat.com> 35143 35144 Implement the abigail::ini::config abstraction 35145 * include/abg-ini.h (config::config): Add an overload that take a 35146 path and sections. 35147 (config::{get,set}_sections): New accessors. 35148 (read_sections): Rename the previous read_config() functions into 35149 these. 35150 (read_config): Add these function declarations to really act on 35151 instances of abigail::ini::config. 35152 (write_section): Rename the previous write_config functions into 35153 these. 35154 (write_config): Add these function declarations to really act on 35155 instances of abigail::ini::config. 35156 * src/abg-ini.cc (class config::priv): Implement this. 35157 (config::{config, ~config, get_path, set_path, get_sections, 35158 set_sections}): Define these new methods. 35159 (read_sections): Rename the former read_config into this. 35160 (read_config): Add this function definitions to really act on 35161 instances of abigail::ini::config. 35162 (write_sections): Rename the former write_config into this. 35163 (write_config):: Add this function definitions to really act on 35164 instances of abigail::ini::config. 35165 * tools/binilint.cc (main): Adjust. 35166 351672014-09-05 Dodji Seketeli <dodji@redhat.com> 35168 35169 Initial support of ini-style file parsing 35170 * include/abg-ini.h: New file. 35171 * include/Makefile.am: Add include/abg-ini.h to the source 35172 distribution. 35173 * src/abg-ini.cc: New file. 35174 * src/Makefile.am: Add src/abg-ini.cc to the source distribution. 35175 * tools/binilint.cc: New testing tool. 35176 * tools/Makefile.am: Add tools/binilint.cc to the source distribution. 35177 351782014-09-03 Dodji Seketeli <dodji@redhat.com> 35179 35180 Initial examples of suppression list specifications 35181 * doc/suppr-doc.txt: New file. 35182 351832014-10-11 Dodji Seketeli <dodji@redhat.com> 35184 35185 Put IR artifacts in the abigail::ir namespace 35186 * include/abg-fwd.h: Wrap IR artifacts into abigail::ir namespace. 35187 Inject that new abigail::ir namespace into the abigail namespace. 35188 * include/abg-ir.h: Wrap IR artifacts into abigail::ir namespace. 35189 (function_decl::parameter::get_type_name): Adjust the call to 35190 abigail::get_type_name. It's now a call to 35191 abigail::ir::get_type_name. 35192 * src/abg-ir.cc: Wrap IR artifacts into abigail::ir namespace. 35193 * include/abg-traverse.h: Wrap the ir traversing artifact into the 35194 abigail::ir namespace too. 35195 * src/abg-traverse.cc: Adjust. 35196 * include/abg-corpus.h: Wrap corpus type stuff into abigail::ir. 35197 * include/abg-dwarf-reader.h: Inject namespace abigail::ir stuff 35198 into the abigail::dwarf_reader namespace. 35199 * include/abg-reader.h: Inject namespace abigail::ir stuff into 35200 the abigail::xml_reader namespace. 35201 * src/abg-reader.cc: Adjust. 35202 * include/abg-writer.h: Inject namespace abigail::ir stuff into 35203 the abigail::xml_writer namespace. 35204 * src/abg-writer.cc: Inject namespace abigail::ir stuff into 35205 abigail namespace here too. 35206 * src/abg-hash.cc: Inject the abigail::ir namespace into the 35207 abigail namespace. 35208 * tools/abg-tools-utils.cc: Adjust for the injection of 35209 abigail::function_decl. It's now abigail::ir::function_decl. 35210 352112014-10-13 Dodji Seketeli <dodji@redhat.com> 35212 35213 Misc style cleanups 35214 * src/abg-comparison.cc: ({pointer_diff, reference_diff}::length): 35215 Add some vertical spaces here. 35216 352172014-10-13 Dodji Seketeli <dodji@redhat.com> 35218 35219 constify dm_context_rel::operator== 35220 * include/abg-ir.h (dm_context_rel::operator==): Make this const. 35221 352222014-10-13 Dodji Seketeli <dodji@redhat.com> 35223 35224 A distinct_diff node has no children node 35225 * src/abg-comparison.cc (distinct_diff::chain_into_hierarchy): Do 35226 not append any children node here. 35227 352282014-10-13 Dodji Seketeli <dodji@redhat.com> 35229 35230 Remove useless redundant_filter 35231 * include/abg-comp-filter.h (class redundant_filter): Remove this 35232 now useless type declaration 35233 * src/abg-comparison.cc (filtering::redundant_filter::visit): 35234 Remove this useless member function definition. 35235 352362014-10-10 Dodji Seketeli <dodji@redhat.com> 35237 35238 Sort diff reports about function parameters by their indexes 35239 * include/abg-comparison.h (changed_parms_type): New convenience 35240 typedef. 35241 * src/abg-comparison.cc (struct changed_parm_comp): New comparison 35242 functor. 35243 (sort_changed_parm_map): New sorting function. 35244 (function_decl_diff::report): Use the new sort_changed_parm_map to 35245 sort the diffs for function parameters by their indexes. 35246 352472014-10-10 Dodji Seketeli <dodji@redhat.com> 35248 35249 Don't be too eager to use distinct_diff 35250 * src/abg-comparison.cc (try_to_diff): For this to actually 35251 select a diff kind, the two diff subject must be of type 35252 'DiffType'. 35253 (compute_diff_for_types, compute_diff_for_decls): Use 35254 distinct_diff in last resort. 35255 352562014-10-10 Dodji Seketeli <dodji@redhat.com> 35257 35258 Implement generic diff tree walking and port categorization over it 35259 * include/abg-comp-filter.h (apply_filter): Declare new overload 35260 that takes a corpus_diff_sptr ... 35261 * src/abg-comp-filter.cc (apply_filter): ... and define it. On 35262 the existing overload for diff_sptr, make sure to traverse all 35263 diff nodes, even those that have already been traversed. 35264 * include/abg-comparison.h (enum diff_category): Remove 35265 NOT_REDUNDANT_CATEGORY, add REDUNDANT_CATEGORY. 35266 (operator&=, +operator<<): Declare new operators for enum diff_category. 35267 (diff_context::{forbid_traversing_a_node_twice, 35268 traversing_a_node_twice_is_forbidden): 35269 (diff_context::categorizing_redundancy): Remove this declaration. 35270 (diff_context::maybe_apply_filters): Declare a new overload that 35271 takes a corpus_diff_sptr. And a take a new flag that says if it 35272 should visit all nodes including those that have already been 35273 visited. 35274 (diff::priv_): Make this data member protected. 35275 (diff::{begin_traversing, is_traversing, end_traversing, 35276 finish_diff_type, children_nodes, append_child_node, 35277 get_pretty_representation, chain_into_hierarchy, traverse}): 35278 Declare new member functions. 35279 (distinct_diff::{finish_diff_type, get_pretty_representation, 35280 chain_into_hierarchy}): Likewise. 35281 (distinct_diff::traverse): Remove. 35282 (pointer_diff::pointer_diff): Take the underlying type diff in 35283 parameter. 35284 (pointer_diff::{finish_diff_type, get_pretty_representation, 35285 chain_into_hierarchy}): Declare new member functions. 35286 (pointer_diff::traverse): Remove. 35287 (reference_type_def::reference_type_def): Take the underlying type 35288 diff in parameter. 35289 ({array_type_def, reference_type_def}::{finish_diff_type, 35290 get_pretty_representation, chain_into_hierarchy}): Declare new 35291 member functions. 35292 ({array_type_diff, reference_type_def}::traverse): Remove. 35293 (qualified_type_diff::qualified_type_diff): Take the underlying 35294 type diff in parameter. 35295 ({enum_diff, qualified_type_diff, class_diff}::{finish_diff_type, 35296 get_pretty_representation, chain_into_hierarchy}): Declare new 35297 member functions. 35298 ({enum_diff, qualified_type_diff, class_diff}::traverse): Remove. 35299 (is_class_diff): Declare new function. 35300 (base_diff::base_diff): Take the underlying type diff in 35301 parameter. 35302 ({scope_diff, base_diff}::{finish_diff_type, get_pretty_representation, 35303 chain_into_hierarchy}): Declare new member functions. 35304 ({scope_diff, base_diff}::traverse): Remove. 35305 (function_decl_diff::function_decl_diff): Take the return type 35306 diff as parameter. 35307 ({function_decl_diff, type_decl_diff}::{finish_diff_type, 35308 get_pretty_representation, chain_into_hierarchy}): Declare new 35309 member functions. 35310 ({function_decl_diff, type_decl_diff}::traverse): Remove. 35311 (typedef_diff::typedef_diff): Take the underlying type diff as 35312 parameter. 35313 (typedef::{finish_diff_type, get_pretty_representation, 35314 chain_into_hierarchy}): Declare new member functions. 35315 ({typedef, translation_unit_diff}::traverse): Remove member 35316 function. 35317 (corpus_diff::{finish_diff_type, children_nodes, 35318 append_child_node, changed_variables, get_pretty_representation, 35319 chain_into_hierarchy}): Declare new member functions. 35320 (class diff_node_visitor::{visit_begin, visit_end}): Declare new 35321 member functions. 35322 (propagate_categories, print_diff_tree, categorizing_redundancy) 35323 (clear_redundancy_categorization, apply_filters): New functions 35324 and function overloads. 35325 * src/abg-comparison.cc (TRY_PRE_VISIT, TRY_PRE_VISIT_CLASS_DIFF) 35326 (TRY_POST_VISIT, TRY_POST_VISIT_CLASS_DIFF) 35327 (CATEGORIZE_REDUNDANCY_FROM_CHILD_NODE) 35328 (UPDATE_REDUNDANCY_CATEGORIZATION_FROM_NODE_SUBTREE) 35329 (TRAVERSE_DIFF_NODE_AND_PROPAGATE_CATEGORY) 35330 (TRAVERSE_MEM_DIFF_NODE_AND_PROPAGATE_CATEGORY) 35331 (TRAVERSE_MEM_FN_DIFF_NODE_AND_PROPAGATE_CATEGORY) 35332 (ENSURE_DIFF_NODE_TRAVERSED_ONCE) 35333 (ENSURE_MEM_DIFF_NODE_TRAVERSED_ONCE): Remove these macros. 35334 Hurrah. 35335 (diff_context::priv::categorizing_redundancy_): Remove. 35336 (diff_context::priv::forbid_traversing_a_node_twice_): Add new 35337 data member. 35338 (diff_context::priv::priv): Adjust. 35339 (diff_context::{forbid_traversing_a_node_twice, 35340 traversing_a_node_twice_is_forbidden}): Define new member 35341 functions. 35342 (diff_context::maybe_apply_filters): Once filters are applied (and 35343 categories are set to the relevant diff tree nodes, run a pass 35344 over the diff tree to propagate the categories to the relevant 35345 diff tree parent nodes. Add an overload for corpus_diff_sptr. 35346 (diff_context::categorizing_redundancy): Remove member function. 35347 (diff_context::maybe_apply_filters): Define a new overload for 35348 corpus_diff_sptr 35349 (struct diff::priv::{finished_, traversing_, children_, 35350 pretty_representation_}): New data members. 35351 (diff::priv::priv): Adjust. 35352 (diff::{begin_traversing, is_traversing, end_traversing, 35353 finish_diff_type, children_nodes, append_child_node, traverse, 35354 set_category, get_pretty_representation, chain_into_hierarchy}): 35355 Define new member functions. 35356 (diff::is_filtered_out): Do not refer to NOT_REDUNDANT_CATEGORY 35357 anymore. Rather, use the new REDUNDANT_CATEGORY. 35358 ({distinct_diff, var_diff, pointer_diff, array_diff, 35359 reference_diff, qualified_type_diff, enum_diff, class_diff, 35360 base_diff, scope_diff, function_decl_diff, type_decl_diff, 35361 typedef_diff}::{get_pretty_representation, chain_into_hierarchy, 35362 finish_diff_type}): Define new member functions. 35363 ({distinct_diff, var_diff, pointer_diff, array_diff, 35364 reference_diff, qualified_type_diff, enum_diff, class_diff, 35365 base_diff, scope_diff, function_decl_diff, type_decl_diff, 35366 typedef_diff, translation_unit_diff}::traverse): Remove member 35367 functions. 35368 (operator&=, operator<<): Define new operators for diff_category. 35369 ({function_decl_diff, typedef_diff}::priv::priv): Add a new 35370 constructor. 35371 (pointer_diff::{priv::priv, pointer_diff}) 35372 (reference_diff::{priv::priv, reference_diff}) 35373 (qualified_type_diff::{priv::priv, qualified_type_diff}) 35374 (enum_diff::{priv::priv, enum_diff}, base_diff::{priv::priv, 35375 base_diff}, function_decl_diff::function_decl_diff): Take the 35376 underlying type diff in parameter. 35377 (compute_diff): Adjust the pointer_diff, reference_diff, 35378 qualified_type_diff, base_diff, function_decl_diff overloads. 35379 (class_diff::priv::{count_filtered_bases, 35380 count_filtered_subtype_changed_dm, count_filtered_changed_dm, 35381 count_filtered_changed_mem_fns, count_filtered_inserted_mem_fns, 35382 count_filtered_deleted_mem_fns}): Adjust for the call to 35383 diff_context::maybe_apply_filters. 35384 (corpus_diff::priv::{finished_, pretty_representation_}): New data 35385 member. 35386 (corpus_diff::priv::priv): New constructor. 35387 (corpus_diff::priv::clear_redundancy_categorization): Define new 35388 member function. 35389 (corpus_diff::priv::apply_filters_and_compute_diff_stats): 35390 Adjust for call to diff_context::maybe_apply_filters. Also, call 35391 clear_redundancy_categorization at the end. 35392 (corpus_diff::priv::categorize_redundant_changed_sub_nodes): 35393 Revisit logic. 35394 (corpus_diff::{chain_into_hierarchy, finish_diff_type, 35395 children_nodes, append_child_node, changed_variables, 35396 get_pretty_representation}): Define new member functions. 35397 (corpus_diff::report): Categorize redundancy for every top level 35398 function/variable diff. 35399 (corpus_diff::traverse): Adjust to the new traversing interface. 35400 (diff_node_visitor::{visit_begin, visit_end}): Define new member 35401 functions. 35402 (struct category_propagation_visitor, struct diff_node_printer) 35403 (struct redundancy_marking_visitor, struct 35404 redundancy_clearing_visitor): New diff tree node visitors. 35405 (propagate_categories, print_diff_tree, categorize_redundancy) 35406 (clear_redundancy_categorization, apply_filters): Define new 35407 functions. 35408 * tests/Makefile.am: Add the new tests/print-diff-tree.cc to the 35409 source distribution. Build it into a tests/printdifftree binary. 35410 * tools/abidiff.cc (print_diff_tree): Add debugging functions to 35411 call from within the debugger. By default, this function and its 35412 overloads are not compiled. 35413 354142014-10-10 Dodji Seketeli <dodji@redhat.com> 35415 35416 Update copyright notice for tests/test-diff2.cc 35417 * tests/test-diff2.cc: Update copyright year. 35418 354192014-10-09 Dodji Seketeli <dodji@redhat.com> 35420 35421 Do not crash on function_decl_diff for fns that have no symbol 35422 * src/abg-comparison.cc (function_decl_diff::report): If a 35423 function decl has no associated elf symbol, do not crash while 35424 trying to report about its elf symbol aliases. 35425 354262014-10-09 Dodji Seketeli <dodji@redhat.com> 35427 35428 Avoid broken output for virtual member fns w/o symbols 35429 * src/abg-comparison.cc (represent): When a virtual member 35430 function has no associated elf symbol, do not emit garbage in lieu 35431 of the linkage name. Just emit no linkage name; 35432 * tests/data/test-abidiff/test-struct1-report.txt: Adjust. 35433 354342014-10-02 Dodji Seketeli <dodji@redhat.com> 35435 35436 Sort added/removed/changed functions reported by the comparison engine 35437 * src/abg-comparison.cc (struct function_comp, struct 35438 changed_function_ptr_comp): New comparison functors. 35439 (sort_string_function_ptr_map) 35440 (sort_string_changed_function_ptr_map): Define new static 35441 functions. 35442 (corpus_diff::report): Sort the added/removed/changed functions 35443 that are reported. 35444 * tests/data/test-diff-dwarf/test0-report.txt: Adjust. 35445 * tests/data/test-diff-filter/test01-report.txt: Adjust. 35446 * tests/data/test-diff-filter/test2-report.txt: Adjust. 35447 * tests/data/test-diff-filter/test9-report.txt: Adjust. 35448 354492014-10-02 Dodji Seketeli <dodji@redhat.com> 35450 35451 Mention virtual-ness of member function in their pretty representation 35452 * include/abg-fwd.h (get_member_function_is_virtual): Declare new 35453 overload for pointers. 35454 * src/abg-ir.cc (get_member_function_is_virtual): Define it. 35455 (function_decl::get_pretty_representation): Print virtual-ness of 35456 the function_decl being pretty printed. 35457 354582014-10-02 Dodji Seketeli <dodji@redhat.com> 35459 35460 Do not crash when reporting diffs about virtual member fns that have no symbol 35461 * src/abg-comparison.cc (represent): If a virtual member function 35462 has no symbol do not crash. 35463 354642014-10-02 Dodji Seketeli <dodji@redhat.com> 35465 35466 Fixup member functions which virtual-ness has just been set 35467 * include/abg-ir.h (fixup_virtual_member_function): Declare new 35468 function. 35469 (class_decl): Declare fixup_virtual_member_function() as a member. 35470 * src/abg-ir.cc (set_member_function_is_virtual): Ensure that the 35471 member function that has seen its virtualness set is also put 35472 correctly put in the vector of virtual member functions of its 35473 class. 35474 354752014-10-02 Dodji Seketeli <dodji@redhat.com> 35476 35477 Assert that only decls with elf symbols are part of comparison 35478 * src/abg-corpus.cc (corpus::priv::build_public_decl_table): Assert 35479 that when read from DWARF, only decls with elf symbols are part of 35480 the public decls table. 35481 354822014-10-02 Dodji Seketeli <dodji@redhat.com> 35483 35484 Emit all virtual member functions in group 35485 * src/abg-writer.cc (write_class_decl): Emit virtual member 35486 functions contiguously. 35487 354882014-10-02 Dodji Seketeli <dodji@redhat.com> 35489 35490 Always emit vtable offset for virtual member function 35491 * src/abg-writer.cc (write_voffset): Emit the vtable offset of 35492 virtual function even when the offset is zero. 35493 354942014-10-02 Dodji Seketeli <dodji@redhat.com> 35495 35496 Do not forget priv_->in_pub_sym_tab_ when copying decl_base 35497 * src/abg-ir.cc (decl_base::decl_base(const decl_base& d)): Do 35498 not forget to copy priv_->in_pub_sym_tab_. 35499 355002014-10-01 Dodji Seketeli <dodji@redhat.com> 35501 35502 Fix reading several clones of the same member function from DWARF 35503 * include/abg-fwd.h (set_member_function_is_ctor) 35504 (set_member_function_is_dtor, set_member_function_is_const) 35505 (set_member_function_vtable_offset): Declare new functions. 35506 * include/abg-ir.h (class_decl::sort_virtual_mem_fns): Declare new 35507 member function. 35508 (mem_fn_context_rel::{vtable_offset, is_constructor is_destructor, 35509 is_const}): Add these setters. 35510 (set_member_function_is_ctor, set_member_function_is_dtor) 35511 (set_member_function_is_static, set_member_function_is_const) 35512 (set_member_function_vtable_offset) 35513 (set_member_function_is_virtual): Declare these new friend 35514 function to class class_decl::method_decl. 35515 * src/abg-dwarf-reader.cc (finish_member_function_reading): Split 35516 this out from build_class_type_and_add_to_ir. Use the new setters 35517 for member functions properties introduced above. 35518 (build_class_type_and_add_to_ir): Factorize the creation of member 35519 function by using build_ir_node_from_die. Once that function has 35520 created the member function in a rather generic way, use the new 35521 finish_member_function_reading to set the remaining specific 35522 properties for member functions. 35523 (build_function_decl): When called to read additional properties 35524 of a function_decl, allow this to read and update the elf symbol 35525 properties too. This is useful for building a clone of a function 35526 that already has an elf symbol. 35527 (build_ir_node_from_die): When building a function decl, consider 35528 the case of a DIE that has both DW_AT_specification and 35529 DW_AT_abstract_origin set. That is, DW_AT_abstract_origin is set, 35530 and the origin has DW_AT_specification set. This is basically a 35531 clone of a function that implements an interface (this happens for 35532 destructors, for instance). In this case, really do the cloning 35533 of the interface implementation. If the cloned function happens 35534 to be member function, use finish_member_function_reading to read 35535 the properties relevant to its method-ness. 35536 * src/abg-ir.cc (set_member_function_is_ctor) 35537 (set_member_function_is_dtor, set_member_function_is_const) 35538 (set_member_function_vtable_offset) 35539 (class_decl::sort_virtual_mem_fns): Define new functions. 35540 (sort_virtual_member_functions): Define new static function. 35541 (struct virtual_member_function_less_than): New functor. 35542 (class_decl::add_member_function): Keep virtual member functions 35543 vector sorted. 35544 * data/test-read-dwarf/test1.abi: Adjust. Now, both the 35545 cdtor specification and all the clones that implements the 35546 different are emitted. 35547 * data/test-read-dwarf/test2.so.abi: Likewise. 35548 355492014-10-01 Dodji Seketeli <dodji@redhat.com> 35550 35551 Do not crash when comparing functions that have no symbol 35552 * src/abg-comparison.cc 35553 (class_diff::ensure_lookup_tables_populated): Just skip functions 35554 that have no ELF symbol. 35555 355562014-09-30 Dodji Seketeli <dodji@redhat.com> 35557 35558 Rename member_function_is_virtual to get_member_function_is_virtual 35559 * include/abg-fwd.h (get_member_function_is_virtual): Renamed the 35560 declaration of member_function_is_virtual into this. 35561 * src/abg-ir.cc (get_member_function_is_virtual): Likewise for its 35562 definition. 35563 * include/abg-ir.h (class decl_base): Adjust the friend function 35564 member_function_is_virtual references. 35565 * src/abg-comp-filter.cc (has_virtual_mem_fn_change) 35566 (has_non_virtual_mem_fn_change): Adjust. 35567 * src/abg-comparison.cc (represent) 35568 (SKIP_MEM_FN_IF_VIRTUALITY_DISALLOWED, class_diff::report): 35569 Likewise. 35570 * src/abg-hash.cc (class_decl::hash::operator()): Likewise. 35571 (function_decl::clone, class_decl::add_member_function): Adjust. 35572 355732014-09-30 Dodji Seketeli <dodji@redhat.com> 35574 35575 Factorize a no-op deleter for shared pointer 35576 * include/abg-sptr-utils.h (struct noop_deleter): Move this here 35577 from ... 35578 * src/abg-comparison.cc (struct noop_deleter): ... here. 35579 355802014-09-30 Dodji Seketeli <dodji@redhat.com> 35581 35582 Link manuals from the main web page 35583 * doc/website/mainpage.txt: Add a link to the manuals. 35584 355852014-09-26 Dodji Seketeli <dodji@redhat.com> 35586 35587 Initial documentation for libabigail 35588 * doc/manuals/Makefile: New file, generated by sphinx-quickstart. 35589 * doc/manuals/abidiff.rst: New manual for abidiff. 35590 * doc/manuals/abidw.rst: New manual for abidw. 35591 * doc/manuals/abilint.rst: New manual for abilint. 35592 * doc/manuals/conf.py: New configuration file generated by sphinx-quickstart. 35593 * doc/manuals/index.rst: The root of the this documentation. 35594 * doc/manuals/libabigail-overview.rst: The overview of libabigail. 35595 * doc/manuals/tools.rst: The root of the tools manuals. 35596 355972014-09-26 Dodji Seketeli <dodji@redhat.com> 35598 35599 Do not install the abisym program 35600 * tools/Makefile.am: Do not install abisym. It's really there 35601 just for testing purposes and is of almost no use for generic 35602 users. 35603 356042014-09-26 Dodji Seketeli <dodji@redhat.com> 35605 35606 Rename bi* tools to abi* tools 35607 * tests/data/test-bidiff: Rename this directory to 35608 tests/data/test-abidiff. 35609 * tests/test-bidiff.cc: Renamed this to tests/test-abidiff.cc. 35610 * tools/biar.cc: Renamed to tools/abiar.cc 35611 * tools/bidiff.cc: Renamed to tools/abidiff.cc 35612 * tools/bidw.cc: Renamed to tools/abidw.cc 35613 * tools/bilint.cc: Renamed to tools/abilint.cc 35614 * tools/bisym.cc: Renamed to tools/abisym.cc 35615 * tests/test-alt-dwarf-file.cc: Renamed references to bidw* to abidw*. 35616 * tests/test-diff-filter.cc: Renamed references to bidiff to abidiff. 35617 * tests/test-lookup-syms.cc: Renamed references to bisym to abisym. 35618 * tools/Makefile.am: Adjust. 35619 * tests/Makefile.am: Likewise. 35620 356212014-09-19 Dodji Seketeli <dodji@redhat.com> 35622 35623 Light cleanup in abg-corpus.cc 35624 * src/abg-corpus.cc 35625 (symtab_build_visitor_type::regex_fns_suppress): use 35626 sptr_utils::build_sptr, rather than building the shared_ptr of 35627 regex_t by hand. 35628 356292014-09-18 Dodji Seketeli <dodji@redhat.com> 35630 35631 Pimplify abigail::comparison::diff type 35632 * include/abg-comparison.h (diff::{priv, sptr}): New types. 35633 (diff::priv_): New member. 35634 (diff::*): Remove all the other previous data members and 35635 transform the inline member function definition into declarations 35636 only. 35637 * src/abg-comparison.cc (class diff::priv): New private data type. 35638 (diff::*): Define the previous inline member functions as 35639 out-of-line here. 35640 356412014-09-18 Dodji Seketeli <dodji@redhat.com> 35642 35643 Rename shared_ptr<regex_t> into regex_t_sptr 35644 * include/abg-sptr-utils.h (build_sptr()): Rename the return type 35645 from shared_ptr<regex_t> to regex_t_sptr. 35646 356472014-09-19 Dodji Seketeli <dodji@redhat.com> 35648 35649 Fix a comment in abg-comparison.h 35650 * include/abg-comparison.h (class base_diff): Fix comment. 35651 356522014-09-05 Dodji Seketeli <dodji@redhat.com> 35653 35654 Light style cleanup in tools/bidiff.cc 35655 * tools/bidiff.cc (display_usage): Remove useless space before '&'. 35656 356572014-09-05 Dodji Seketeli <dodji@redhat.com> 35658 35659 src/Makefile.am cleanup 35660 * src/Makefile.am: Remove the unused 'headers' variable. 35661 356622014-09-16 Dodji Seketeli <dodji@redhat.com> 35663 35664 Emit reports about not-yet categorized diff nodes 35665 * include/abg-comparison.h (NO_CHANGE_CATEGORY): Better comment 35666 this enumerator. 35667 * src/abg-comparison.cc (diff::is_filtered_out): Not-yet 35668 categorized changes are not filtered out anymore. 35669 (distinct_diff::report): Avoid extraneous new line here. 35670 356712014-09-16 Dodji Seketeli <dodji@redhat.com> 35672 35673 Better support for inline related diffs 35674 * include/abg-comparison.h 35675 (diff_category::HARMLESS_SYMBOL_ALIAS_CHANGE_CATEORY): New 35676 enumerator. 35677 (diff_category::EVERYTHING_CATEGORY): Adjust. 35678 * include/abg-ir.h (elf_symbol::get_aliases_id_string) 35679 (elf_symbol::does_alias, elf_symbols_alias) 35680 (compute_aliases_for_elf_symbol): Declare new functions ... 35681 * src/abg-ir.cc (elf_symbol::get_aliases_id_string) 35682 (elf_symbol::does_alias, elf_symbols_alias) 35683 (compute_aliases_for_elf_symbol): ... and define them. 35684 (function_decl::operator==): Take in account elf symbol aliases. 35685 * src/abg-comp-filter.cc (function_name_changed_but_not_symbol): 35686 Define new static functions. 35687 (harmless_filter::visit): Categorize function name changes that 35688 n doesn't impact underlying elf symbols (or the fact that two 35689 symbols were aliases and are not anymore) as harmless. 35690 * src/abg-comparison.cc (function_decl_diff::report): Properly 35691 report function name changes, or symbol aliases changes for that 35692 matter. Also report inline-ness declaration changes. 35693 * src/abg-dwarf-reader.cc (die_is_declared_inline): New static 35694 function. 35695 (build_function_decl): Use the above. 35696 * tools/bidiff.cc (set_diff_context_from_opts): Add 35697 abigail::comparison::HARMLESS_SYMBOL_ALIAS_CHANGE_CATEORY into the 35698 harmless change camp. 35699 * tests/data/test-diff-dwarf/test14-inline-report.txt: New test 35700 input. 35701 * tests/data/test-diff-dwarf/test14-inline-v0.o: Likewise. 35702 * tests/data/test-diff-dwarf/test14-inline-v1.o: Likewise. 35703 * tests/data/test-diff-dwarf/test14-inline-v0.cc: Source code for 35704 test input. 35705 * tests/data/test-diff-dwarf/test14-inline-v1.cc: Source code for 35706 test input. 35707 * tests/test-diff-dwarf.cc: Run this test harness over the new 35708 input above. 35709 * tests/data/test-diff-filter/test20-inline-report-0.txt: Likewise. 35710 * tests/data/test-diff-filter/test20-inline-report-1.txt: 35711 Likewise. 35712 * tests/data/test-diff-filter/test20-inline-v0.o: New test input. 35713 * tests/data/test-diff-filter/test20-inline-v1.o: New test input. 35714 * tests/data/test-diff-filter/test20-inline-v0.cc: Source code for 35715 test input. 35716 * tests/data/test-diff-filter/test20-inline-v1.cc: Likewise. 35717 * tests/test-diff-filter.cc: Run this test harness over the new 35718 input above. 35719 357202014-09-16 Dodji Seketeli <dodji@redhat.com> 35721 35722 Better support for enum diffs 35723 * include/abg-comparison.h (changed_enumerator_type): New typedef. 35724 (diff_category::{HARMLESS_ENUM_CHANGE_CATEGORY}): New enumerator. 35725 * src/abg-comp-filter.cc (has_type_size_change) 35726 (has_enumerator_insertion, has_enumerator_removal_or_change) 35727 (has_harmful_enum_change): New functions. 35728 (harmless_filter::visit): Categorize enumerator insertions that 35729 don't change the size of the type into HARMLESS_ENUM_CHANGE_CATEGORY. 35730 (harmful_filter::visit): Categorize enumerator removal or any enum 35731 change that changes the size of the type into 35732 SIZE_OR_OFFSET_CHANGE_CATEGORY. 35733 * src/abg-comparison.cc (enumerator_value_comp) 35734 (changed_enumerator_comp): New types. 35735 (sort_enumerators, sort_changed_enumerators): New static 35736 functions. 35737 (enum_diff::report): Sort enum related reports by the value of the 35738 enumerators. 35739 * src/abg-dwarf-reader.cc (build_enum_type): Name anonymous enums 35740 as __anonymous_enum__. 35741 * tools/bidiff.cc (set_diff_context_from_opts): Add 35742 abigail::comparison::HARMLESS_ENUM_CHANGE_CATEGORY into the harmless 35743 stuff camp. 35744 * tests/data/test-diff-dwarf/test15-enum-report.txt: New test 35745 input. 35746 * tests/data/test-diff-dwarf/test15-enum-v1.o: Likewise. 35747 * tests/data/test-diff-dwarf/test15-enum-v0.o: Likewise. 35748 * tests/data/test-diff-dwarf/test15-enum-v0.cc: Source code for 35749 test input. 35750 * tests/data/test-diff-dwarf/test15-enum-v1.cc: Likewise. 35751 * tests/data/test-diff-filter/test19-enum-report-0.txt: New test input. 35752 * tests/data/test-diff-filter/test19-enum-report-1.txt: Likewise. 35753 * tests/data/test-diff-filter/test19-enum-v0.o: Likewise. 35754 * tests/data/test-diff-filter/test19-enum-v1.o: Likewise. 35755 * tests/data/test-diff-filter/test19-enum-v0.cc: Source code for 35756 test input. 35757 * tests/data/test-diff-filter/test19-enum-v1.cc: Likewise. 35758 * tests/test-diff-dwarf.cc: Run this test harness on the new test 35759 inputs above. 35760 * tests/test-diff-filter.cc: Likewise. 35761 * tests/Makefile.am: Add the new files above to the source distribution. 35762 357632014-09-16 Dodji Seketeli <dodji@redhat.com> 35764 35765 Add constness to elf_symbol::operator== 35766 * include/abg-ir.h (elf_symbol::operator==): Add a const to the 35767 declaration ... 35768 * src/abg-ir.cc (elf_symbol::operator==): ... and to the definition. 35769 357702014-09-15 Dodji Seketeli <dodji@redhat.com> 35771 35772 Misc style cleanups 35773 * src/abg-comparison.cc (ChangedDataMemberComp): Rename this to 35774 changed_data_member_comp 35775 (sort_changed_data_members): Adjust. 35776 (DataMemberComp): Rename this to data_member_comp. 35777 (sort_data_members): Adjust. 35778 357792014-09-15 Dodji Seketeli <dodji@redhat.com> 35780 35781 Constify some function parameters in abg-comp-filter.cc 35782 * src/abg-comp-filter.cc (type_size_changed): Now take const 35783 parameters. 35784 357852014-09-09 Jan Engelhardt <jengelh@inai.de> 35786 35787 Add .gitignore files. 35788 * .gitignore: Add new file. 35789 * m4/.gitignore: Likewise. 35790 * tools/.gitignore: Likewise. 35791 357922014-09-09 Jan Engelhardt <jengelh@inai.de> 35793 35794 Place -L/-l flags into *_LIBADD/*_LDADD 35795 * src/Makefile.am: -L and -l ought to be in LIBADD/LDADD because 35796 that is the only place guaranteed to be in the right spot. So add 35797 Them to libabigail_la_LIBADD. 35798 * tools/Makefile.am: Likewise. 35799 358002014-09-09 Jan Engelhardt <jengelh@inai.de> 35801 35802 Add libelf to libabigail.la's linker line 35803 * configure.ac: Check for the existence of libelf at configure 35804 time by looking at the presence of the elf_end symbol. Add the 35805 libelf to the link command line. 35806 358072014-09-09 Jan Engelhardt <jengelh@inai.de> 35808 35809 Drop hardcoded substitutions 35810 * doc/Makefile.am: Do not use @docdir@. It's indeed replaced at 35811 configure time. But there is no need for this limitation with 35812 automake, as $(docdir) is available and replaceable anytime. 35813 * src/Makefile.am: Likewise for @DEPS_LIBS@ and @DEPS_CFLAGS@. 35814 358152014-09-09 Jan Engelhardt <jengelh@inai.de> 35816 35817 Replace indirect variable assignments 35818 * configure.ac(DEVEL_CFLAGS, DEVEL_CXXFLAGS): Remove these 35819 useless variables. 35820 (CFLAGS, CXXFLAGS): Set these variables directly. 35821 * include/Makefile.am (pkginclude_HEADERS): Use this predefined 35822 variable. 35823 (publicheaders_DATA, publicheadersdir): Remove these. 35824 358252014-09-09 Jan Engelhardt <jengelh@inai.de> 35826 35827 Remove empty and autogenerated files from git repository 35828 * ChangeLog: Remove this empty file for now. It'll be added back 35829 right before the first release by automatic generation from the 35830 commit logs. 35831 * INSTALL: Remove this empty file for now. 35832 * NEWS: Remove this empty file for now. It'll be added back right 35833 before the first release. 35834 * configure.ac (AM_INIT_AUTOMAKE): As the mandatory but empty 35835 files above are being removed for now, let's put in the 'foreign' 35836 mode of automake for the moment. We'll likely remove it at 35837 release time. 35838 358392014-09-09 Jan Engelhardt <jengelh@inai.de> 35840 35841 Set automake options globally 35842 * configure.ac(AM_INIT_AUTOMAKE): Set the subdir-object option 35843 here .. 35844 * src/Makefile.am: ... not here. 35845 * tests/Makefile.am: Likewise. 35846 * tools/Makefile.am: Likewise. 35847 358482014-09-09 Jan Engelhardt <jengelh@inai.de> 35849 35850 Stash some autogenerated tools in build-aux/ 35851 * configure.ac: Reduce the pollution in the top-level directory a 35852 bit. 35853 358542014-09-10 Dodji Seketeli <dodji@redhat.com> 35855 35856 Fix memory leaks due to cycles in types ownership 35857 * include/abg-fwd.h (std::tr1::weak_ptr): Inject this type in the 35858 abigail namespace. 35859 * include/abg-ir.h: Write a memory management guideline for the IR 35860 artifacts. 35861 (Type_base_wptr, function_type_wptr) 35862 (class_decl_wptr): New typedefs. 35863 (translation_unit::get_canonical_function_type): Declare new 35864 member function. 35865 (qualified_type_def::underlying_type_) 35866 (reference_type_def::pointed_to_type_) 35867 (typedef_decl::underlying_type_, function_decl::parameter::type_) 35868 (function_type::return_type_, method_type::class_type_) 35869 (non_type_tparameter::type_, type_composition::type_): Make this a 35870 weak pointer. 35871 (qualified_type_def::get_pointed_to_type) 35872 (reference_type_def::get_pointed_to_type) 35873 (array_type::get_element_type, typedef_decl::get_underlying_type) 35874 (var_decl::get_type, function_decl::parameter::get_type) 35875 (function_type::get_return_type, method_type::get_class_type) 35876 (non_type_tparameter::get_type) 35877 (type_composition::get_composed_type): Adjust to make this return 35878 a shared pointer initialized with the content of the weak pointer. 35879 (function_decl::function_decl, method_decl::method_decl): Remove 35880 the overload that doesn't take a type. This is because now, 35881 function types need to be registered to their containing 35882 translation unit. 35883 (struct function_type::hash): Declare here. 35884 * src/abg-hash.cc (struct function_type::hash): Declare this in 35885 abg-ir.h and just define the methods here. 35886 * src/abg-ir.cc (fn_type_ptr_map): New typedef. 35887 (translation_unit::priv::canonical_types_): Remove this unused 35888 member. 35889 (translation_unit::priv::canonical_function_types_): New member. 35890 (translation_unit::get_canonical_function_type): Define this 35891 function. 35892 (array_type_def::priv::element_type_, var_decl::priv::type_) 35893 (function_decl::priv::type_): Make this a weak pointer. 35894 (qualified_type_def::get_underlying_type) 35895 (pointer_type_def::get_pointed_to_type) 35896 (reference_type_def::get_pointed_to_type) 35897 (array_type_def::get_element_type) 35898 (typedef_decl::get_underlying_type, var_decl::get_type) 35899 (function_decl::get_type): Adjust to make this return a shared 35900 pointer initialized with the content of the weak pointer. 35901 (qualified_type_def::build_name) 35902 (pointer_type_def::get_qualified_name) 35903 (reference_type_def::get_qualified_name): Adjust. 35904 (method_type::set_class_type): Cleanup the logic. 35905 (function_decl::priv::priv): Remove the overload that takes a bare 35906 pointer to a type. This should not be used now that we need the 35907 function type to registered with the translation unit. 35908 (function_decl::function_decl): Remove the overload that doesn't 35909 take a type. This is because now, function types need to be 35910 registered to their containing translation unit. 35911 * src/abg-dwarf-reader.cc (build_function_decl): Register the 35912 function type within its translation type and use its canonical 35913 version. This complies with the new memory management rules. 35914 * src/abg-reader.cc (build_function_decl): Likewise. 35915 359162014-09-10 Dodji Seketeli <dodji@redhat.com> 35917 35918 Compare class names when comparing methods 35919 * src/abg-ir.cc: 35920 359212014-09-10 Dodji Seketeli <dodji@redhat.com> 35922 35923 Slight white space fix 35924 * src/abg-hash.cc (method_type::hash::operator()(const 35925 method_type&)): White space fix. 35926 359272014-09-10 Dodji Seketeli <dodji@redhat.com> 35928 35929 Update copyright notice 35930 * include/abg-ir.h: Update year of copyright notice. 35931 359322014-07-05 Ondrej Oprala <ooprala@redhat.com> 35933 35934 Unite help output for tools 35935 * tools/biar.cc (std::ostream): Add a using directive. 35936 (display_usage): Make it take a string reference and an ostream 35937 as parameters. Use the ostream argument as an output stream 35938 instead of a hard-coded cout. 35939 Prettify output. 35940 (main): Call display_usage with new parameters. 35941 * tools/bidiff.cc (display_usage): Declare it static. 35942 Prettify output. 35943 * tools/bidw.cc (display_usage): Prettify output. 35944 * tools/bilint.cc (display_usage): Declare it static. 35945 Prettify output. 35946 * tools/bisym.cc (std::cerr): Add a using directive. 35947 (prog_name): Rename progname into this. 35948 (display_usage): Rename show_help into this. 35949 Add an ostream as a parameter. Use the ostream argument 35950 as output stream insted of a hard-coded cout. 35951 359522014-09-03 Dodji Seketeli <dodji@redhat.com> 35953 35954 Adjust copyright year 35955 * tests/test-diff-dwarf.cc: Adjust year in copyright notice. 35956 359572014-09-03 Dodji Seketeli <dodji@redhat.com> 35958 35959 Sort reported changed data members by increasing offset 35960 * include/abg-comparison.h (changed_type_or_decl_vector): New 35961 typedef. 35962 * include/abg-fwd.h (is_data_member): Change the overload that 35963 takes a decl_base_sptr to make it return the real var_decl_sptr 35964 rather than just a bool. 35965 * src/abg-comparison.cc (ChangedDataMemberComp, DataMemberComp): 35966 New comparison functors. 35967 (sort_changed_data_members, sort_data_members): Sorting functions 35968 for changed data members and data members. 35969 (class_diff::report): Sort reports for deleted, inserted and 35970 change data members by the increasing value of the offsets of said 35971 data members. 35972 * src/abg-ir.cc (is_data_member): Change the overload that takes a 35973 decl_base_sptr to make it return the real var_decl_sptr rather 35974 than just a bool. 35975 * tests/data/test-bidiff/test-struct1-report.txt: Adjust. 35976 * tests/data/test-diff-dwarf/test13-report.txt: New test input. 35977 * tests/data/test-diff-dwarf/test13-v0.cc: Source code for new 35978 test input. 35979 * tests/data/test-diff-dwarf/test13-v0.o: New test input. 35980 * tests/data/test-diff-dwarf/test13-v1.cc: Source code for new 35981 test input. 35982 * tests/data/test-diff-dwarf/test13-v1.o: New test input. 35983 * tests/Makefile.am: Add the new test inputs above to the source 35984 distribution. 35985 * tests/test-diff-dwarf.cc: Run this test harness on the new test 35986 input. 35987 359882014-09-03 Dodji Seketeli <dodji@redhat.com> 35989 35990 Do not filter out diff nodes that are only in NOT_REDUNDANT_CATEGORY 35991 * src/abg-comparison.cc (diff::is_filtered_out): If a diff not is 35992 only in the NOT_REDUNDANT_CATEGORY category consider it as not 35993 being filtered. 35994 * tests/data/test-diff-filter/test18-report.txt: New test input. 35995 * tests/data/test-diff-filter/test18-v0.cc: Source code for new 35996 test input. 35997 * tests/data/test-diff-filter/test18-v0.o: New test input. 35998 * tests/data/test-diff-filter/test18-v1.cc: Source code for new 35999 test input. 36000 * tests/data/test-diff-filter/test18-v1.o: New test input. 36001 * tests/Makefile.am: Add the new test inputs to the source distribution. 36002 * tests/test-diff-filter.cc: Run this test harness on the new test 36003 input above. 36004 360052014-09-03 Dodji Seketeli <dodji@redhat.com> 36006 36007 White space cleanup 36008 * src/abg-ir.cc (get_data_member_offset): Remove useless 36009 horizontal white space. 36010 360112014-09-03 Dodji Seketeli <dodji@redhat.com> 36012 36013 Add some comments in the comparison engine 36014 * src/abg-comparison.cc: Add a comment for the file. 36015 (struct class_diff::priv::{subtype_changed_dm_,changed_dm_}): Add 36016 comment for these data members. 36017 360182014-09-02 Dodji Seketeli <dodji@redhat.com> 36019 36020 Remove useless new line from comparison engine's report 36021 * src/abg-comparison.cc (class_diff::report): Do not emit new 36022 lines after reporting about inserted data members. 36023 * tests/data/test-bidiff/test-qual-type0-report.txt: Adjust. 36024 * tests/data/test-bidiff/test-struct0-report.txt: Adjust. 36025 * tests/data/test-bidiff/test-struct1-report.txt: Adjust. 36026 * tests/data/test-diff-dwarf/test0-report.txt: Adjust. 36027 * tests/data/test-diff-dwarf/test1-report.txt: Adjust. 36028 * tests/data/test-diff-dwarf/test3-report.txt: Adjust. 36029 * tests/data/test-diff-dwarf/test7-report.txt: Adjust. 36030 * tests/data/test-diff-filter/test0-report.txt: Adjust. 36031 * tests/data/test-diff-filter/test01-report.txt: Adjust. 36032 * tests/data/test-diff-filter/test1-report.txt: Adjust. 36033 * tests/data/test-diff-filter/test11-report.txt: Adjust. 36034 * tests/data/test-diff-filter/test14-0-report.txt: Adjust. 36035 * tests/data/test-diff-filter/test14-1-report.txt: Adjust. 36036 * tests/data/test-diff-filter/test15-0-report.txt: Adjust. 36037 * tests/data/test-diff-filter/test15-1-report.txt: Adjust. 36038 * tests/data/test-diff-filter/test16-report.txt: Adjust. 36039 * tests/data/test-diff-filter/test17-0-report.txt: Adjust. 36040 * tests/data/test-diff-filter/test17-1-report.txt: Adjust. 36041 * tests/data/test-diff-filter/test2-report.txt: Adjust. 36042 * tests/data/test-diff-filter/test3-report.txt: Adjust. 36043 * tests/data/test-diff-filter/test9-report.txt: Adjust. 36044 360452014-09-01 Dodji Seketeli <dodji@redhat.com> 36046 36047 Adjust copyright years 36048 * src/abg-corpus.cc: Adjust copyright years. 36049 * src/abg-libzip-utils.cc: Likewise. 36050 * src/abg-writer.cc: Likewise. 36051 360522014-09-01 Dodji Seketeli <dodji@redhat.com> 36053 36054 Factorize basic redundancy detection in diff report 36055 * src/abg-comparison.cc 36056 (RETURN_IF_BEING_REPORTED_OR_WAS_REPORTED_EARLIER) 36057 (RETURN_IF_BEING_REPORTED_OR_WAS_REPORTED_EARLIER{2,3}): New 36058 macros. 36059 ({pointer_diff, array_diff, reference_diff, qualified_type_diff, 36060 class_diff, typedef_diff}::report): Use the new macros above. 36061 * tests/data/test-bidiff/test-qual-type0-report.txt: Adjust 36062 because type pretty representation are now always quoted. 36063 * tests/data/test-bidiff/test-struct1-report.txt: Adjust likewise. 36064 360652014-08-31 Dodji Seketeli <dodji@redhat.com> 36066 36067 Display package configuration at the end of configure 36068 * configure.ac: Display the configure of the package at the end of 36069 the configure script. 36070 360712014-08-31 Dodji Seketeli <dodji@redhat.com> 36072 36073 Make zip archive support optional 36074 * configure.ac: Support a new --enable-zip-archive option. By 36075 default its value is set to the 'auto', meaning that if libzip is 36076 installed, that turns the option on -- just like if 36077 --enable-zip-archive was called with the value 'yes'; if libzip is 36078 not installed, that turns the option off -- just like if 36079 --enable-zip-archive was called with the value 'no'. If libzip is 36080 detected, the pre-processor macro HAVE_LIBZIP is set to 1. If 36081 --enable-zip-archive is turned on, the pre-processor macro 36082 WITH_ZIP_ARCHIVE is set to 1. 36083 * config.h.in (HAVE_LIBZIP, WITH_ZIP): New define. 36084 * src/abg-corpus.cc: Include config.h. Guard the inclusion of 36085 abg-libzip-utils.h with the WITH_ZIP_ARCHIVE macro. Likewise for 36086 the use of declarations coming from abg-libzip-utils.h. 36087 * src/abg-libzip-utils.cc: Include config.h. Guard the file's 36088 content with the WITH_ZIP_ARCHIVE macro. 36089 * src/abg-reader.cc: Include config.h. Guard the inclusion of 36090 abg-libzip-utils.h with the WITH_ZIP_ARCHIVE. Likewise for the 36091 use of declarations coming from abg-libzip-utils.h. 36092 * src/abg-writer.cc: Likewise. 36093 * tests/Makefile.am: Build runtestwritereadarchive and runtestdot 36094 only if zip archives are supported. 36095 * tools/Makefile.am: The biar program is built only if 36096 zip archives are supported. 36097 * tools/bidiff.cc: Handle zip archives only if the 36098 WITH_ZIP_ARCHIVE macros is defined. 36099 * tools/bilint.cc: Likewise. 36100 361012014-08-28 Dodji Seketeli <dodji@redhat.com> 36102 36103 Tell bidiff --help, wrong options and missing argument apart 36104 * tools/bidiff.cc (options::{display_usage,missing_operand}): New 36105 data members. 36106 (options::options): Initialize them. 36107 (parse_command_line): Flag missing operands. Return false only 36108 when an option could not be parsed. Flag when the user wants us 36109 to display help. 36110 (main): Tell --help, wrong options and missing argument apart and 36111 give an appropriate message on stderr. The help string goes to 36112 stdout though. Just like what GNU diff does. 36113 361142014-08-28 Dodji Seketeli <dodji@redhat.com> 36115 36116 In bidiff, don't emit a report when the binaries have the same ABI 36117 * tools/bidiff.cc (main): For differences of zero length, do not 36118 emit any report. 36119 361202014-08-29 Dodji Seketeli <dodji@redhat.com> 36121 36122 Take variables in account in corpus changes detection 36123 * src/abg-comparison.cc (corpus_diff::length): Take changes about 36124 variables into account. 36125 361262014-08-28 Dodji Seketeli <dodji@redhat.com> 36127 36128 During redundancy marking start with the current node as non redundant 36129 * src/abg-comparison.cc (ENSURE_DIFF_NODE_TRAVERSED_ONCE): If the 36130 diff node is being traversed for the first time, mark it as being 36131 in the NOT_REDUNDANT_CATEGORY. I don't know why I was doing this 36132 only for classes and basic types. Update comments. 36133 * tests/data/test-diff-filter/test16-report.txt: New test input. 36134 * tests/data/test-diff-filter/test16-v0.cc: Source code of new 36135 test input. 36136 * tests/data/test-diff-filter/test16-v0.o: New test input. 36137 * tests/data/test-diff-filter/test16-v1.cc: Source code of new 36138 test input. 36139 * tests/data/test-diff-filter/test16-v1.o: New test input. 36140 * tests/data/test-diff-filter/test17-0-report.txt: Likewise. 36141 * tests/data/test-diff-filter/test17-1-report.txt: Likewise. 36142 * tests/data/test-diff-filter/test17-v0.cc: Source code of new 36143 test input. 36144 * tests/data/test-diff-filter/test17-v0.o: Likewise. 36145 * tests/data/test-diff-filter/test17-v1.cc: Source code of new 36146 test input. 36147 * tests/data/test-diff-filter/test17-v1.o: Likewise. 36148 * tests/Makefile.am: Add the new files to the source distribution. 36149 * tests/test-diff-filter.cc (in_out_spec): Run this test harness 36150 over the new test inputs. 36151 361522014-08-28 Dodji Seketeli <dodji@redhat.com> 36153 36154 Give anonymous struct the name "__anonymous_struct__" 36155 * src/abg-dwarf-reader.cc (build_class_type_and_add_to_ir): Set 36156 the name of anonymous structs to '__anonymous_struct_'. 36157 361582014-08-28 Dodji Seketeli <dodji@redhat.com> 36159 36160 Style fix in the comparison engine 36161 * src/abg-comparison.cc (represent): Remove useless white space. 36162 361632014-08-27 Dodji Seketeli <dodji@redhat.com> 36164 36165 In bidiff, change --no-linkage-names to --no-linkage-name 36166 * tools/bidiff.cc (display_usage): Change--no-linkage-names -o 36167 --no-linkage-name in the help string. 36168 (parse_command_line): Adjust the command line parsing accordingly. 36169 * tests/test-diff-filter.cc (in_out_specs): Adjust. 36170 361712014-08-27 Dodji Seketeli <dodji@redhat.com> 36172 36173 In diff reports, show symbol version info in linkage names 36174 * src/abg-comparison.cc (represent, corpus_diff::report): show 36175 symbol version info in linkage name info. 36176 361772014-08-27 Dodji Seketeli <dodji@redhat.com> 36178 36179 In diff reports, fns & members add/remove at the top, changes later. 36180 * src/abg-comparison.cc (class_diff::report): Put virtual member 36181 function adding/removal/change first, then data members 36182 add/removal, then the rest (including data members changes). 36183 (corpus_diff::report): Put function adding/removal first, then 36184 function changes. Likewise for variables. 36185 * tests/data/test-bidiff/test-struct0-report.txt: Adjust. 36186 * tests/data/test-bidiff/test-struct1-report.txt: Adjust. 36187 * tests/data/test-diff-dwarf/test0-report.txt: Adjust. 36188 * tests/data/test-diff-dwarf/test1-report.txt: Adjust. 36189 * tests/data/test-diff-dwarf/test12-report.txt: Adjust. 36190 * tests/data/test-diff-dwarf/test8-report.txt: Adjust. 36191 * tests/data/test-diff-dwarf/test9-report.txt: Adjust. 36192 * tests/data/test-diff-filter/test0-report.txt: Adjust. 36193 * tests/data/test-diff-filter/test01-report.txt: Adjust. 36194 * tests/data/test-diff-filter/test1-report.txt: Adjust. 36195 * tests/data/test-diff-filter/test13-report.txt: Adjust. 36196 * tests/data/test-diff-filter/test2-report.txt: Adjust. 36197 * tests/data/test-diff-filter/test3-report.txt: Adjust. 36198 * tests/data/test-diff-filter/test9-report.txt: Adjust. 36199 362002014-08-27 Dodji Seketeli <dodji@redhat.com> 36201 36202 Consider symbol versions' public-ness during comparison 36203 * src/abg-ir.cc (elf_symbol::operator==): Rather than comparing 36204 bindings, compare public-ness here. That is, if two symbol 36205 versions' differ because one is GLOBAL and the other one is WEAK, 36206 they should still be considered equal, from an ABI standpoint. 36207 362082014-08-27 Dodji Seketeli <dodji@redhat.com> 36209 36210 Lookup proper names of symbol during determination of deleted/added decls 36211 * src/abg-comparison.cc 36212 ({class,corpus}_diff::ensure_lookup_tables_populated): Now that in the 36213 intermediate maps we store symbol *ids* rather than symbol names, 36214 make sure to really refer to symbol names for symbol lookups, 36215 rather than (wrongly) referring to symbol ids. 36216 362172014-08-26 Dodji Seketeli <dodji@redhat.com> 36218 36219 Cleanup bidiff help string some more 36220 * tools/bidiff.cc (display_usage): Add help strings for --harmless 36221 and --no-harmful. 36222 (main): Emit the help string to stdout, not stderr. 36223 362242014-08-26 Dodji Seketeli <dodji@redhat.com> 36225 36226 bidiff --no-harmless is no more 36227 * tools/bidiff.cc (display_usage): Remove the help string for the 36228 --no-harmless option that doesn't exist anymore, as it's on by 36229 default. 36230 362312014-08-26 Dodji Seketeli <dodji@redhat.com> 36232 36233 During comparison use symbol name + version as decl ID 36234 * include/abg-ir.h ({var,function}_decl::get_id): New member 36235 function declarations. 36236 * src/abg-ir.cc ({var,function}_decl::get_id): New member function 36237 definitions. 36238 * src/abg-comparison.cc 36239 (corpus_diff::priv::ensure_lookup_tables_populated): Use the 36240 ::get_id() function to get an identifier for the function or 36241 variable. 36242 * src/abg-corpus.cc (symtab_build_visitor_type::build_id): Use the 36243 get_id of the function/variable. 36244 362452014-08-26 Dodji Seketeli <dodji@redhat.com> 36246 36247 Fix access to alternate die -> decl map 36248 * src/abg-dwarf-reader.cc (read_context::alternate_die_decl_map): 36249 Return the real alternate die decl map, rather than what we was 36250 doing previously b/c of a stupid copy/paste. Oh well. 36251 362522014-08-25 Dodji Seketeli <dodji@redhat.com> 36253 36254 Take symbol versions in account when computing added/removed decls 36255 * include/abg-corpus.h 36256 (corpus::lookup_{function,variable}_symbol): Add an overload 36257 declaration that takes the version of the symbol to lookup. 36258 * src/abg-comparison.cc 36259 (corpus_diff::priv::ensure_lookup_tables_populated): So when looking 36260 up the corpora for symbols, take their versions in account. 36261 * src/abg-corpus.cc (corpus::lookup_{function,variable}_symbol): 36262 Add an overload definition that takes the version of the symbol to 36263 lookup. 36264 (symtab_build_visitor_type::build_id): New 36265 member functions. 36266 (corpus::priv::build_public_decl_table): Use the new member 36267 functions above. 36268 * src/abg-ir.cc (elf_symbol::version::operator==): Do not take the 36269 is_default flag in account when comparing two symbol versions. 36270 * libtest12-v{0,1}.so: New test input files. 36271 * libtest12-v{0,1}.c: Source code for the test input files. 36272 * test12-version-script: Version script to build the files above. 36273 * test12-report.txt: Test input file. 36274 * tests/Makefile.am: Add the new test input files above to the 36275 source distribution. 36276 * tests/test-diff-dwarf.cc (in_out_specs[]): Add an entry to this 36277 table for the new test input files. 36278 362792014-08-25 Dodji Seketeli <dodji@redhat.com> 36280 36281 Misc style cleanups 36282 * include/abg-corpus.h (corpus::lookup_function_symbol) 36283 (corpus::lookup_variable_symbol): Add the name of the function 36284 parameter in the declaration. 36285 * include/abg-ir.h (elf_symbol::version::version): Properly indent 36286 this constructor declaration. 36287 * src/abg-corpus.cc 36288 (symtab_build_visitor_type::symtab_build_visitor_type): Properly 36289 indent constructor parameters. 36290 * src/abg-ir.cc (function_decl::operator==): Fix typo in 36291 comments. 36292 362932014-08-25 Dodji Seketeli <dodji@redhat.com> 36294 36295 bidiff --harmful is not supported anymore 36296 * tools/bidiff.cc (display_usage): remove the '--harmful' line 36297 from the help string as this option is now activated by default. 36298 It's --harmless that exists now. 36299 363002014-08-22 Dodji Seketeli <dodji@redhat.com> 36301 36302 A builtin type name change is not harmless - fix that 36303 * include/abg-comp-filter.h (has_harmless_name_change): New 36304 function declaration. 36305 * include/abg-comparison.h 36306 (diff_category::DECL_NAME_CHANGE_CATEGORY): Renamed this into 36307 HARMLESS_DECL_NAME_CHANGE_CATEGORY. 36308 (diff_category::EVERYTHING_CATEGORY): Update. 36309 * include/abg-fwd.h (is_enum): New function declaration. 36310 (is_var_decl): Return the shared_ptr<var_decl> rather than a bool. 36311 (is_data_member): New overload that takes a shared_ptr<decl_base>. 36312 * src/abg-comp-filter.cc (decl_name_changed): Consider the 36313 qualified name here. 36314 (has_harmless_name_change): Define new function declaration. 36315 (harmless_filter::visit): Use the new has_harmless_name_change 36316 function. 36317 * src/abg-comparison.cc (represent) 36318 (report_name_size_and_alignment_changes, enum_diff::report) 36319 (typedef_diff::report, is_data_member): Use the new 36320 filtering::has_harmless_name_change function to simplify logic of 36321 emitting the name change related diff 36322 * tools/bidiff.cc (set_diff_context_from_opts): Adjust 36323 DECL_NAME_CHANGE_CATEGORY -> HARMLESS_DECL_NAME_CHANGE_CATEGORY. 36324 * src/abg-ir.cc (is_data_member, is_enum): New function definitions. 36325 (is_var_decl): Return the var_decl_sptr rather than just a bool. 36326 * tests/data/test-diff-filter/test13-report.txt: Adjust. 36327 * tests/data/test-diff-filter/test6-report.txt: Adjust. 36328 363292014-08-18 Ondrej Oprala <ooprala@redhat.com> 36330 36331 Support C and C++ array type. 36332 * include/abg-comparison.h (array_diff): Declare new class. 36333 (array_diff_sptr): Shared pointer to type array_diff. 36334 (compute_diff): Overload the function to take type 36335 array_diff_sptr as the first two arguments. 36336 * include/abg-fwd.h (array_type_def): Declare new class. 36337 (subrange_type): Likewise. 36338 (is_array_def): Declare new function. 36339 * include/abg-ir.h (array_type_def_sptr): Shared pointer 36340 to type array_type_def. 36341 (array_type_def): Declare new class. 36342 (ir_node_visitor::visit): Declare a new virtual function 36343 taking a pointer to type array_type_def as an argument. 36344 * src/abg-comparison.cc (compute_diff_for_types): Add 36345 try_to_diff for two instances of type array_type_def. 36346 (array_diff::priv): declare struct for holding private members 36347 of type array_diff. 36348 (array_diff::array_diff): Define constructor. 36349 (array_diff::{first,second}_array):Define new 36350 member functions. 36351 (array_diff::element_type_diff): Likewise. 36352 (array_diff::{length,report,traverse}): Likewise. 36353 (compute_diff): Define function overloaded in 36354 include/abg-comparison.h. 36355 * src/abg-dwarf-reader.cc (build_array_type): Define new 36356 function. Handle DW_TAG_array_type and DW_TAG_subrange type. 36357 (build_ir_node_from_die): Amend case DW_TAG_array_type with 36358 a call to build_array_type. 36359 * src/abg-hash.cc (array_type_def::hash): Declare new struct. 36360 (type_base::dynamic_hash::operator()): Attempt to dynamic_cast 36361 the argument to type array_type_def as well. 36362 (array_type_def::hash): Declare new struct. 36363 * src/abg-ir.cc (array_type_def::array_type_def): Define 36364 constructors. 36365 (array_type_def::priv): declare struct for holding private members 36366 of type array_type_def. 36367 (array_type_def::operator==(const decl_base&): 36368 Define new operator. 36369 (array_type_def::operator==(const type_base&): 36370 Likewise. 36371 (array_type_def::append_subrange{,s}): Define 36372 new functions. 36373 (array_type_def::{set,get}_size_in_bits): Likewise. 36374 (array_type_def::get_dimension_count): Likewise. 36375 (array_type_def::get_qualified_name): Likewise. 36376 (array_type_def::get_pretty_representation): Likewise. 36377 (array_type_def::get_subrange_representation): Likewise. 36378 (array_type_def::traverse): Likewise. 36379 (array_type_def::get_{element_type,location,subranges}): Likewise. 36380 (array_type_def::is_infinite): Likewise. 36381 (array_type_def::~array_type_def): Define destructor. 36382 (ir_node_visitor::visit): Define function, taking 36383 pointer to array_type_def as an argument. 36384 * src/abg-reader.cc (map_id_and_node): Check if node 36385 is an array. 36386 (is_array_def): Check if object is an array. 36387 (handle_element_node): Handle array_type_def as well. 36388 (build_subrange_type): Define new function. 36389 (build_array_type_def): Likewise. 36390 (build_type): Build type array_type_def as well. 36391 (build_type_composition): Likewise. 36392 (handle_array_type_def): Define new function. 36393 * src/abg-writer.cc: (write_decl): Output arrays 36394 as well. 36395 (write_member_type): Likewise. 36396 (write_type_composition): Likewise. 36397 (write_array_type_def): Define new function. 36398 * tests/data/test-diff-dwarf/test{10,11}-v{0,1}.{cc,o}: New test source 36399 files 36400 * tests/data/test-diff-dwarf/test{10,11}-report.txt: Likewise. 36401 * tests/data/test-diff-dwarf/test10-report.txt: New test input. 36402 * tests/data/test-read-dwarf/test7.cc: New test source 36403 file. 36404 * tests/data/test-read-dwarf/test7.so: New input binary 36405 to read. 36406 * tests/data/test-read-dwarf/test7.so.abi: New reference 36407 test to compare against. 36408 * tests/data/test-read-write/test25.xml: New test source 36409 file. 36410 * tests/test-diff-dwarf.cc: Adjust to launch the new test. 36411 * tests/test-read-dwarf.cc: Likewise. 36412 * tests/test-read-write.cc: Likewise. 36413 * test/Makefile.am: Add the new test inputs to the source 36414 distribution. 36415 364162014-08-19 Dodji Seketeli <dodji@redhat.com> 36417 36418 Ignore variables which type couldn't be read from DWARF 36419 * src/abg-dwarf-reader.cc (build_var_decl): Drop the var on the 36420 floor if its type couldn't be built. 36421 364222014-08-19 Dodji Seketeli <dodji@redhat.com> 36423 36424 Support TLS variables 36425 * src/abg-ir.cc (elf_symbol::is_variable): Accept TLS objects as 36426 variables too. 36427 * src/abg-dwarf-reader.cc (eval_last_constant_dwarf_sub_expr) 36428 (die_location_address): Add an output parameter to say if the 36429 resulting constant value is a tls address or not. 36430 (lookup_public_variable_symbol_from_elf): Use the proper 36431 elf_symbol::is_variable() method, rather than trying to figure out 36432 the low levels of what a variable is here. Also, cleanup the 36433 condition. 36434 (read_context::load_symbol_maps): Consider symbols of type 36435 STT_TLS, when loading symbols for variables. Also, to avoir 36436 symbols that are for versions, filter out symbols of type 36437 STT_OBJECT and with a SHN_ABS section index. 36438 (read_context::get_variable_address): If the address is for a tls 36439 variable, do no try to adjust the address to arrange for things 36440 like prelink. As that doesn't seem to affect TLS variables. 36441 (dwarf_expr_eval_context::set_tls_addr): New data member. 36442 (dwarf_expr_eval_context::dwarf_expr_eval_context): Initialize it. 36443 (dwarf_expr_eval_context::set_tls_address): New accessors. 36444 (dwarf_expr_eval_context::op_manipulates_stack): Handle 36445 DW_OP_GNU_push_tls_address, a bit like DW_OP_form_tls_address, but 36446 then, its result is a constant. Set the 36447 dwarf_expr_eval_context::set_tls_addr flag when these two OPs are 36448 run. 36449 (die_member_offset): Adjust to the new signature of 36450 eval_last_constant_dwarf_sub_expr. 36451 * tests/data/test-diff-dwarf/libtest9-v0.so: New test input. 36452 * tests/data/test-diff-dwarf/libtest9-v1.so: Likewise. 36453 * tests/data/test-diff-dwarf/test9-report.txt: Likewise 36454 * tests/data/test-diff-dwarf/test9-v0.cc: Source code for the 36455 first input. 36456 * tests/data/test-diff-dwarf/test9-v1.cc: Source code for the 36457 second input. 36458 * tests/test-diff-dwarf.cc: Run this harness on the two new inputs 36459 above. 36460 * tests/Makefile.am: Add the new inputs to the source distribution. 36461 364622014-08-18 Dodji Seketeli <dodji@redhat.com> 36463 36464 Update copyright for abg-dwarf-reader.cc 36465 * src/abg-dwarf-reader.cc: Update copyright year. 36466 364672014-08-18 Dodji Seketeli <dodji@redhat.com> 36468 36469 Make the link to the alt debug info file relative 36470 * tests/data/test-alt-dwarf-file/test0-debug-dir/.build-id/16/7088580c513b439c9ed95fe6a8b29496495f26.debug: 36471 Make this link be relative. 36472 364732014-08-15 Dodji Seketeli <dodji@redhat.com> 36474 36475 White space fix 36476 * tests/test-lookup-syms.cc: Remove useless white space. 36477 364782014-08-15 Dodji Seketeli <dodji@redhat.com> 36479 36480 Update copyright notice 36481 * tests/test-lookup-syms.cc: Update year in copyright notice. 36482 * tools/bidw.cc: Likewise. 36483 364842014-08-15 Dodji Seketeli <dodji@redhat.com> 36485 36486 Support alternate debug info sections 36487 * include/abg-dwarf-reader.h (class read_context) 36488 (typedef read_context_sptr, create_read_context) 36489 (has_alt_debug_info): Declare these. 36490 (read_corpus_from_elf): Declare new overload. 36491 * src/abg-dwarf-reader.cc (find_alt_debug_info) 36492 (is_die_attribute_resolved_through_gnu_ref_alt) 36493 (build_primary_die_parent_relations_under) 36494 (build_alternate_die_parent_relations_under): 36495 Define new static functions. 36496 (read_context::{alt_dwarf_, 36497 alt_debug_info_path_, alternate_die_decl_map_, 36498 alternate_die_parent_map_}): New data members. 36499 (read_context::{alt_dwarf, alt_debug_info_path, 36500 alternate_die_decl_map, associate_die_to_decl_primary, 36501 associate_die_to_decl_alternate, associate_die_to_decl, 36502 lookup_decl_from_die_offset_primary, 36503 lookup_decl_from_die_offset_alternate, 36504 lookup_decl_from_die_offset, alternate_die_parent_map}): New 36505 member functions. 36506 (read_context::load_debug_info): Painfully Get a handle on the 36507 alternate debug info section too. We shouldn't have to do all 36508 this work; we could use the new dwarf_getalt() function from 36509 libdw, but we cannot as we want to support supports that predate 36510 that api. When a version of elfutils gets released with that api 36511 though, we should conditionally use that instead. 36512 (build_ir_node_from_die, get_parent_die, get_scope_for_die) 36513 (build_namespace_decl_and_add_to_ir) 36514 (build_class_type_and_add_to_ir, build_qualified_type) 36515 (build_pointer_type_def, build_reference_type, build_typedef_type) 36516 (build_var_decl, build_function_decl): Take a new parameter that 36517 tells if the input DIE is from alternate debug info. Adjust their 36518 code accordingly. 36519 (die_die_attribute): Take a new output parameter that tells if the 36520 resolved DIE is from alternate debug info. Also take a new 36521 parameter that tells if the input DIE is from alternate debug info 36522 sections. 36523 (build_die_parent_relations_under): Take the DIE -> parent map to 36524 act upon. Also, add a new overload that takes a flag saying if 36525 the DIE is from alternate debug info or not, and act upon that. 36526 (build_die_parent_maps): Renamed build_die_parent_map into this 36527 and make it build DIE -> parent DIE relationship for the alternate 36528 debug info file as well. 36529 (find_last_import_unit_point_before_die, ): Adjust to use the 36530 information about if the relevant DIEs are in alternate debug info 36531 or not. 36532 (build_translation_unit_and_add_to_ir): Clear the alternate DIE -> 36533 decl map, that is per TU just as the primary DIE -> decl map. 36534 Adjust to use the information about if the relevant DIEs are in 36535 alternate debug info or not. 36536 (read_debug_info_into_corpus): Build the two DIE -> DIE parent 36537 maps (one for the primary debug info and one for the alternate 36538 debug info). 36539 (create_read_context, has_alt_debug_info): Define new public entry 36540 points. 36541 (read_corpus_from_elf): New entry point overload that takes a 36542 read_context. 36543 * tools/bidw.cc (options::{check_alt_debug_info_path, 36544 show_base_name_alt_debug_info_path}): New data members. 36545 (display_usage): Update for the two new options 36546 --check-alternate-debug-info and 36547 check-alternate-debug-info-base-name. 36548 (parse_command_line): Parse the two options above. 36549 (main) Handle the two new options above. 36550 * tests/Makefile.am: Build the new runtestaltdwarf test. Add the 36551 new data/test-alt-dwarf-file/* files to the build system. 36552 * tests/test-alt-dwarf-file.cc: New test driver. 36553 * tests/data/test-alt-dwarf-file/test0-common.cc: New test input 36554 files. 36555 * tests/data/test-alt-dwarf-file/libtest0-common.so: Likewise. 36556 * tests/data/test-alt-dwarf-file/test0.cc: Likewise. 36557 * tests/data/test-alt-dwarf-file/libtest0.so: Likewise. 36558 * tests/data/test-alt-dwarf-file/test0.h: Likewise. 36559 * tests/data/test-alt-dwarf-file/test0-common-dwz.debug: Likewise. 36560 * tests/data/test-alt-dwarf-file/test0-debug-dir/.build-id/16/7088580c513b439c9ed95fe6a8b29496495f26.debug: 36561 Likewise. 36562 * tests/data/test-alt-dwarf-file/test0-debug-dir/test0-common-dwz.debug: 36563 Likewise. 36564 * tests/data/test-read-dwarf/test1.abi: Adjust. bidw doesn't emit 36565 an abstract constructor/destructor anymore. It emits just the 36566 functions matching the cdtor symbols found in the binary. 36567 * tests/data/test-read-dwarf/test2.so.abi: Likewise. 36568 365692014-07-26 Dodji Seketeli <dodji@redhat.com> 36570 36571 Better handle corner cases of void* DWARF parsing 36572 * src/abg-dwarf-reader.cc (build_pointer_type_def): Better 36573 support cases where the underlying type of the pointer is not 36574 know. In that case, the pointer should not be created. 36575 365762014-07-20 Dodji Seketeli <dodji@redhat.com> 36577 36578 Support finding symbols with bias wrt DWARF references 36579 * src/abg-dwarf-reader.cc (get_binary_load_address): New function 36580 definition. 36581 (read_context::elf_handle): Add comment. 36582 (read_context::{dwarf_elf_handle, dwarf_is_splitted, 36583 maybe_adjust_address_for_exec_or_dyn}): New method definitions. 36584 (maybe_adjust_fn_sym_address) 36585 (maybe_adjust_var_sym_address): Move these so they become members 36586 of read_context. Also, For shared libraries and executable (that 36587 could have been e.g prelinked), consider their loading address 36588 when trying to find which symbol resides at a given place in 36589 memory. 36590 (read_context::{get_function_address, get_variable_address): 36591 Adjust. 36592 (build_translation_unit_and_add_to_ir): Fix comment. 36593 365942014-07-20 Dodji Seketeli <dodji@redhat.com> 36595 36596 Reset the scope of void_type_decl for each new translation unit 36597 * src/abg-dwarf-reader.cc (build_translation_unit_and_add_to_ir): 36598 Clear the void_type_decl on new translation units. 36599 366002014-07-18 Dodji Seketeli <dodji@redhat.com> 36601 36602 Update INSTALL file 36603 * INSTALL: Adjust the copyright year information because autotools 36604 2.69 did. 36605 366062014-07-18 Dodji Seketeli <dodji@redhat.com> 36607 36608 Correctly write the name of a const reference type 36609 * src/abg-dwarf-reader.cc (maybe_strip_qualification): Define new 36610 function. 36611 (build_ir_node_from_die): Use the maybe_strip_qualification when 36612 building a qualified type. 36613 * src/abg-ir.cc (qualified_type_def::build_name): Fix the 36614 representation of the name of a reference that is const. 36615 * tests/data/test-read-dwarf/test1.abi: Adjust. 36616 * tests/data/test-diff-dwarf/test0-report.txt: Likewise. 36617 * tests/data/test-diff-dwarf/test1-report.txt: Likewise. 36618 * tests/data/test-diff-dwarf/test6-report.txt: Likewise. 36619 * tests/data/test-diff-dwarf/test7-report.txt: Likewise. 36620 * tests/data/test-diff-dwarf/test8-report.txt: Likewise. 36621 * tests/data/test-diff-filter/test0-report.txt: Likewise. 36622 * tests/data/test-diff-filter/test01-report.txt: Likewise. 36623 * tests/data/test-diff-filter/test2-report.txt: Likewise. 36624 * tests/data/test-diff-filter/test3-report.txt: Likewise. 36625 * tests/data/test-diff-filter/test9-report.txt: Likewise. 36626 * tests/data/test-diff-filter/test10-report.txt: Likewise. 36627 * tests/data/test-diff-filter/test13-report.txt: Likewise. 36628 * tests/data/test-diff-filter/test14-0-report.txt: Likewise. 36629 * tests/data/test-diff-filter/test14-1-report.txt: Likewise. 36630 366312014-07-01 Sinny Kumari <skumari@redhat.com> 36632 36633 Consider symbols with STB_GNU_UNIQUE binding as public 36634 * src/abg-ir.cc (is_public): Change in function to consider 36635 symbols with STB_GNU_UNIQUE binding as public 36636 * tests/data/test-read-dwarf/test6.cc: Test file to generate 36637 STB_GNU_UNIQUE binding symbols 36638 * tests/data/test-read-dwarf/test6.so: Test shared library having 36639 STB_GNU_UNIQUE binding symbols 36640 * tests/data/test-read-dwarf/test6.so.abi: XML file containing 36641 dwarf information from test6.so 36642 * tests/test-read-dwarf.cc (in_out_specs): Add the new test above 36643 * tests/Makefile.am: Add tests/data/test-read-dwarf/test6.cc, 36644 tests/data/test-read-dwarf/test6.so and 36645 tests/data/test-read-dwarf/test6.so.abi to the distribution 36646 366472014-07-01 Dodji Seketeli <dodji@redhat.com> 36648 36649 Add comment to test-read-write.cc 36650 * tests/test-read-write.cc: Update copyright notice and add a 36651 meaningful comment for the file. 36652 366532014-06-23 Dodji Seketeli <dodji@redhat.com> 36654 36655 Support reading void* type from DWARF 36656 * include/abg-ir.h (type_decl::get_void_type_decl): Declare new 36657 static method. 36658 * src/abg-ir.cc (type_decl::get_void_type_decl): Define it. 36659 * src/abg-dwarf-reader.cc (build_ir_node_for_void_type): Define 36660 new static function. 36661 (build_pointer_type_def): Support void* type nodes here. 36662 * tests/data/test-read-dwarf/test5.cc: Source code for new test 36663 input. 36664 * tests/data/test-read-dwarf/test5.o: New test input. 36665 * tests/data/test-read-dwarf/test5.o.abi: Likewise. 36666 * tests/Makefile.am: Add the above to the source distribution. 36667 366682014-06-23 Dodji Seketeli <dodji@redhat.com> 36669 36670 Update a comment in abg-dwarf-reader.cc 36671 * src/abg-dwarf-reader.cc (build_ir_node_from_die): Update a 36672 comment here. 36673 366742014-06-23 Mark Wielaard <mjw@redhat.com> 36675 36676 Handle C99 restrict qualifier and DWARFv3 DW_TAG_restrict_type. 36677 * src/abg-dwarf-reader.cc (build_qualified_type): Handle 36678 DW_TAG_restrict_type by adding CV_RESTRICT. 36679 (build_ir_node_from_die): Call build_qualified_type for 36680 DW_TAG_restrict_type. 36681 * src/abg-reader.cc (build_qualified_type_decl): Handle 36682 "restrict" attribute by adding CV_RESTRICT. 36683 * src/abg-writer.cc (write_qualified_type_def): Output 36684 "restrict" attribute for CV_RESTRICT. 36685 * tests/data/test-read-dwarf/test4.c: New test file. 36686 * tests/data/test-read-dwarf/test4.so: Likewise. 36687 * tests/data/test-read-dwarf/test4.so.abi: Likewise. 36688 * tests/data/test-read-write/test24.xml: Likewise. 36689 * tests/test-read-dwarf.cc (in_out_specs): Add test4. 36690 * tests/test-read-write.cc (in_out_specs): Add test24.xml. 36691 366922014-06-23 Dodji Seketeli <dodji@seketeli.org> 36693 36694 Add subdir-objects automake option where it is needed 36695 * src/Makefile.am: Add the subdir-object automake option here. 36696 Do not specify absolute paths for the input files as Automake now 36697 takes care of that just fine. 36698 * tests/Makefile.am: Likewise. 36699 * tools/Makefile.am: Likewise. 36700 367012014-06-23 Dodji Seketeli <dodji@seketeli.org> 36702 36703 Remove autotools artifacts from the repository 36704 * config.guess: Remove from revision control system. 36705 * config.sub: Likewise. 36706 * depcomp: Likewise. 36707 * m4/libtool.m4: Likewise. 36708 * missing: Likewise. 36709 367102014-06-23 Dodji Seketeli <dodji@redhat.com> 36711 36712 Avoid reporting diff nodes that have already been reported 36713 * include/abg-comp-filter.h (class harmful_filter): Update 36714 comment. 36715 (class redundant_filter): Declare new filter. 36716 * include/abg-comparison.h (enum 36717 diff_category::NOT_REDUNDANT_CATEGORY): New category. Update the 36718 values of the other enumerators. 36719 (diff_context::{add_diff, diff_has_been_traversed}): New overloads. 36720 (diff_context::{categorizing_redundancy, show_redundant_changes}): 36721 Declare new methods. 36722 (diff_context::remove_from_category): Define new inline method. 36723 * src/abg-comparison.cc (noop_deleter::operator()): Constify the 36724 parameter. 36725 (CATEGORIZE_REDUNDANCY_FROM_CHILD_NODE) 36726 (UPDATE_REDUNDANCY_CATEGORIZATION_FROM_NODE_SUBTREE): New macros. 36727 (TRAVERSE_DIFF_NODE_AND_PROPAGATE_CATEGORY) 36728 (TRAVERSE_MEM_DIFF_NODE_AND_PROPAGATE_CATEGORY) 36729 (TRAVERSE_MEM_FN_DIFF_NODE_AND_PROPAGATE_CATEGORY): Use the new 36730 CATEGORIZE_REDUNDANCY_FROM_CHILD_NODE and 36731 UPDATE_REDUNDANCY_CATEGORIZATION_FROM_NODE_SUBTREE macros above. 36732 (ENSURE_DIFF_NODE_TRAVERSED_ONCE) 36733 (ENSURE_MEM_DIFF_NODE_TRAVERSED_ONCE): If the (type_decl or class) 36734 node hasn't been yet traversed, mark it as non-redundant. 36735 (diff_context::priv::categorizing_redundancy): New member. 36736 (diff_context::priv::priv): Initialize it. 36737 (diff_context::{add_diff, diff_has_been_traversed): Define new 36738 overloads. 36739 (diff_context::mark_diff_as_traversed): Intern a diff node that is 36740 marked as being traversed. 36741 (diff_context::{categorizing_redundancy, show_redundant_changes}): 36742 Define new methods. 36743 (diff::is_filtered_out): A redundant function or top-level 36744 variable is considered filtered-out. Otherwise, the new 36745 NOT_REDUNDANT_CATEGORY doesn't play any role when comparing 36746 allowed categories with the set of categories a diff node belongs 36747 to. 36748 (corpus::priv::categorize_redundant_changed_sub_nodes): Define 36749 new member function. 36750 (corpus_diff::priv::apply_filters_and_compute_diff_stats): Change 36751 this to first walk the changed functions and variables to apply 36752 filters, then categorize redundant changed functions, and then 36753 walk the changed functions and variables again to count 36754 filtered-out diff nodes. 36755 (filtering::redundant_filter::visit): Define new member function. 36756 * tools/bidiff.cc (options::show_redundant_changes): New data 36757 member. 36758 (options::options): Initialize it. 36759 (display_usage): Add help string for the --redundant command line 36760 option. 36761 (parse_command_line): Add support for the --redundant command line 36762 option. 36763 (set_diff_context_from_opts): Take the --redundant command line 36764 option in account. 36765 * tests/test-diff-filter.cc: Update this to add new test inputs. 36766 * tests/data/test-diff-filter/test14-0-report.txt: New test input. 36767 * tests/data/test-diff-filter/test14-1-report.txt: Likewise. 36768 * tests/data/test-diff-filter/test14-v0.cc: Likewise. 36769 * tests/data/test-diff-filter/test14-v0.o: Likewise. 36770 * tests/data/test-diff-filter/test14-v1.cc: Likewise. 36771 * tests/data/test-diff-filter/test14-v1.o: Likewise. 36772 * tests/data/test-diff-filter/test15-0-report.txt: Likewise. 36773 * tests/data/test-diff-filter/test15-1-report.txt: Likewise. 36774 * tests/data/test-diff-filter/test15-v0.cc: Likewise. 36775 * tests/data/test-diff-filter/test15-v0.o: Likewise. 36776 * tests/data/test-diff-filter/test15-v1.cc: Likewise. 36777 * tests/data/test-diff-filter/test15-v1.o: Likewise. 36778 * tests/Makefile.am: Add the above to the build system. 36779 367802014-06-23 Dodji Seketeli <dodji@redhat.com> 36781 36782 A name that couldn't be demangled remains the same 36783 * src/abg-ir.cc (demangle_cplus_mangled_name): When the demangler 36784 fails to demangle a name, just return the input name as-is. 36785 367862014-06-23 Dodji Seketeli <dodji@redhat.com> 36787 36788 Update copyright notice for a bunch of files 36789 * include/abg-comp-filter.h: Update copyright notice. 36790 * include/abg-comparison.h: Likewise. 36791 * src/abg-comparison.cc: Likewise. 36792 * src/abg-ir.cc: Likewise. 36793 * tools/bidiff.cc: Likewise. 36794 * tests/test-diff-filter.cc: Likewise. 36795 367962014-06-19 Sinny Kumari <skumari@redhat.com> 36797 36798 Keep symbol's multiple aliases within single attribute separated by comma 36799 * src/abg-writer.cc (write_elf_symbol_aliases): Changing function 36800 to keep multiple symbol aliases within one alias attribute 36801 * src/abg-reader.cc (build_elf_symbol_db): Changing function to read 36802 symbol's alias attribute and split if multiple alias exist with comma(,) 36803 asi a delimiter and add all aliases to main symbol 36804 * tests/data/test-read-dwarf/test3.c: Test file to generate multiple aliases 36805 * tests/data/test-read-dwarf/test3.so: Test shared library having multiple 36806 aliases of a symbol 36807 * tests/data/test-read-dwarf/test3.so.abi: XML file containing dwarf 36808 information from test3.so 36809 * tests/test-read-dwarf.cc (in_out_specs): Add the new test above 36810 * tests/Makefile.am: Add tests/data/test-read-dwarf/test3.c, 36811 tests/data/test-read-dwarf/test3.so and tests/data/test-read-dwarf/test3.so.abi 36812 to the distribution 36813 368142014-06-18 Mark Wielaard <mjw@redhat.com> 36815 36816 DW_TAG_mutable_type doesn't exist. 36817 * src/abg-dwarf-reader.cc (is_type_tag): Remove DW_TAG_mutable_type. 36818 (build_ir_node_from_die): Likewise. 36819 368202014-06-05 Dodji Seketeli <dodji@redhat.com> 36821 36822 Look at first parm type and artificial-ness to detect static-ness 36823 * src/abg-dwarf-reader.cc (build_class_type_and_add_to_ir): To 36824 tell if a member function is static, look if the first parm is a 36825 pointer to the type of the enclosing class, and if it's 36826 artificial. Don't bother trying to be smart by looking at the 36827 non-presence of DW_AT_object_pointer b/c that attribute wasn't 36828 emitted by GCC 4_4. 36829 368302014-06-04 Dodji Seketeli <dodji@redhat.com> 36831 36832 Harden debug info path management & better error reporting 36833 * include/abg-dwarf-reader.h (enum status): New enum. 36834 (read_corpus_from_elf): Return an instance of status above, and 36835 return the corpus by parameter. 36836 * src/abg-dwarf-reader.cc (create_default_dwfl): Add a comment 36837 about elfutils wanting the Dwfl_Callbacks::debuginfo_path to be an 36838 absolute path. 36839 (read_corpus_from_elf): Return an instance of status above, and 36840 return the corpus by parameter. 36841 * tools/abg-tools-utils.h (make_path_absolute): Declare new function. 36842 * tools/abg-tools-utils.cc (make_path_absolute): New 36843 implementation. 36844 * tools/bidiff.cc (options::di_root_path[12]): Make these be 36845 shared pointers. 36846 (parse_command_line): ensure the debug info root paths are 36847 absolute. 36848 (main): Adjust. Give meaningful errors when the debug info or 36849 symbol files couldn't be read. 36850 * tools/bidw.cc (options::di_root_path): Make this be a shared 36851 pointer. 36852 (parse_command_line): Ensure the debug info root path is absolute. 36853 (main): Adjust. Give meaningful errors when the debug info or 36854 symbol files couldn't be read. 36855 * tools/bilint.cc (options::di_root_path): Make this be a shared 36856 pointer. 36857 (parse_command_line): Ensure the debug info root path is absolute. 36858 (main): Adjust. Give meaningful errors when the debug info or 36859 symbol file couldn't be read. 36860 * tests/test-diff-dwarf.cc (main): Adjust. 36861 * tests/test-read-dwarf.cc (main): Likewise. 36862 368632014-06-02 Dodji Seketeli <dodji@redhat.com> 36864 36865 Do not choke on AR archives 36866 * tools/abg-tools-utils.h (file_type::FILE_TYPE_AR): New enumerator. 36867 * tools/abg-tools-utils.cc (guess_file_type): Recognize AR archive 36868 files. 36869 * tools/bidiff.cc (main): Support AR archives. 36870 * tools/bidw.cc (main): Likewise. 36871 * tools/bilint.cc (main): Likewise. 36872 368732014-05-30 Dodji Seketeli <dodji@redhat.com> 36874 36875 Honor linkage name showing when displaying added/removed member functions 36876 * src/abg-comparison.cc (represent): Take a diff_context. If 36877 instructed to show linkage names, show the linkage name of the 36878 member function. 36879 (class_diff::report): Adjust for the new signature of represent(). 36880 368812014-05-30 Dodji Seketeli <dodji@redhat.com> 36882 36883 Make bidiff filter output and display symbol names by default 36884 * tools/bidiff.cc (options::options): Initialize 36885 options::show_linkage_names to true and 36886 options::show_harmful_changes to false. 36887 (parse_command_line): Change --linkage-names into 36888 --no-linkage-names as the linkage names are now displayed by 36889 default. Change --no-harmless into --harmless as harmless changes 36890 are now filtered by default. 36891 (display_usage): Update help string for the --linkage-names -> 36892 --no-linkage-names and --no-harmful -> --harmful change. 36893 * tests/test-diff-filter.cc: Adjust. 36894 368952014-05-29 Dodji Seketeli <dodji@redhat.com> 36896 36897 Ensure added/removed member functions have their symbols added/removed 36898 * include/abg-comparison.h (diff_context::{set_corpora, 36899 get_first_corpus, get_second_corpus}): Declare new member 36900 functions. 36901 * src/abg-comparison.cc (diff_context::{set_corpora, 36902 get_first_corpus, get_second_corpus}): Define them. 36903 (compute_diff): In the overload for corpus_sptr stick the corpora 36904 being compared, into the diff context. 36905 (class_diff::ensure_lookup_tables_populated): If a member function 36906 is allegedly removed, check that its underlying symbol is removed 36907 from the corpus as well. Otherwise, consider that the member 36908 function hasn't been removed. Likewise, if a member function is 36909 allegedly added, check that its underlying symbol has been added 36910 to the corpus as well. Otherwise, consider that the member 36911 function hasn't been added. The symbols can now be accessed 36912 through the two corpora that are now present in the diff context. 36913 369142014-05-29 Dodji Seketeli <dodji@redhat.com> 36915 36916 Fix scope for DIEs with specification or abstract_origin attributes 36917 * src/abg-dwarf-reader.cc (get_scope_for_die): If the DIE has a 36918 DW_AT_specification or DW_AT_abstract_origin attribute, get the 36919 scope of the referred-to DIE. 36920 (build_ir_node_from_die): For a variable DIE that has a 36921 DW_AT_{specification,abstract_origin} attribute, do not add the 36922 built variable IR node to its scope because it is already in a 36923 scope. It's in a scope because that built variable is for the DIE 36924 that is referred-to by the DW_AT_{specification,abstract_origin} 36925 attribute. Likewise for member functions. Also, now, 36926 get_scope_for_die can return a class for a function DIE because 36927 get_scope_for_die now returns the *logical* scope of the DIE; that 36928 is, it follows DW_AT_{specification,abstract_origin} attributes. 36929 * tests/data/test-read-dwarf/test1.abi: Adjust. 36930 369312014-05-28 Dodji Seketeli <dodji@redhat.com> 36932 36933 Add a symbol database to the ABI Corpus & support symbol aliases 36934 * include/abg-corpus.h (corpus::{g,s}et_{fun,var}_symbol_map{_sptr}): 36935 Declare new accessors. 36936 (corpus::lookup_{variable,function}_symbol): Declare new member 36937 functions. 36938 * src/abg-corpus.cc (corpus::{g,s}et_{fun,var}_symbol_map{_sptr}): 36939 Define new accessors. 36940 (corpus::lookup_{variable,function}_symbol): Define new member 36941 functions. 36942 * include/abg-ir.h (string_elf_symbol_sptr_map_type) 36943 (string_elf_symbol_sptr_map_sptr, elf_symbols) 36944 (string_elf_symbols_map_type, string_elf_symbols_map_sptr): New 36945 convenience typedefs. 36946 (elf_symbol::{get_main_symbol, is_main_symbol, get_next_alias, 36947 has_aliases, add_alias, get_id_string, 36948 get_name_and_version_from_id, operator=}): Declare new member 36949 functions. 36950 * src/abg-ir.cc (elf_symbol::{get_main_symbol, is_main_symbol, 36951 get_next_alias, has_aliases, add_alias, get_id_string, 36952 get_name_and_version_from_id, operator=}): Define new member 36953 functions. 36954 * include/abg-reader.h (read_corpus_from_file): Take a shared 36955 pointer to corpus. 36956 * src/abg-reader.cc (read_context::{g,s}et_corpus): Define these. 36957 (build_elf_symbol_db, build_elf_symbol_from_reference) 36958 (read_symbol_db_from_input): Define new functions. 36959 (read_corpus_from_input): Adjust. Make it read symbol databases. 36960 (build_elf_symbol): Harden this. 36961 (build_{var,function}_decl): Read the symbol reference. Do not 36962 read the local symbol serialization anymore. 36963 (read_corpus_from_archive): Adjust. 36964 (read_corpus_from_file): Take a reference to a shared pointer to 36965 corpus, rather than a reference to the corpus. 36966 (read_corpus_from_native_xml): Only keep the overload that returns 36967 a corpus. Set the current context with the corpus. 36968 * src/abg-dwarf-reader.cc (addr_elf_symbol_sptr_map_type) 36969 (addr_elf_symbol_sptr_map_sptr): New convenience typedefs. 36970 (read_context::{fun_sym_addr_sym_index_map_, 36971 var_sym_addr_sym_index_map_): Remove. 36972 (read_context::{fun,var}_addr_sym_map_): New. Replace the above 36973 that got removed. 36974 (read_context::{var,fun}_syms_): New. 36975 (read_context::lookup_elf_{fn,var}_symbol_from_address): Adjust. 36976 (read_context::{fun,var}_addr_sym_map{_sptr}): New. 36977 (read_context::{fun,var}_syms{_sptr}): New. 36978 (read_context::load_symbol_maps): Replace 36979 read_context::load_symbol_addr_to_index_maps. Adjust to load all 36980 the new maps. 36981 (read_context::maybe_load_symbol_maps): New. 36982 (read_debug_info_into_corpus): Renamed build_corpus into this. 36983 Update to load symbol maps and set it to the corpus. 36984 * src/abg-writer.cc (write_context::get_fun_symbol_map): New 36985 accessor. 36986 (write_elf_symbol_aliases, write_elf_symbol_reference) 36987 (write_elf_symbols_table): Define new static functions. 36988 (write_var_decl): Write the reference to the underlying symbol of 36989 the variable. Do not write the full symbol here anymore. 36990 (write_function_decl): Likewise, write the reference to the 36991 underlying symbol of the function. Do not write the full symbol 36992 here anymore. 36993 (write_corpus_to_native_xml): Write the symbol databases at the 36994 beginning of the corpus document. 36995 * src/abg-comparison.cc 36996 (corpus_diff::priv::ensure_lookup_tables_populated): Now that the 36997 corpus has symbols, check if a the symbol of an allegedly deleted 36998 function (resp. variable) is deleted; if not, then do not report 36999 the function (resp. variable) as deleted. Similarly, check if the 37000 symbol of an allegedly added function (resp. variable) is added. 37001 if not, the do not report the function (resp. variable) as added. 37002 * tests/test-write-read-archive.cc (main): Adjust. 37003 * tools/biar.cc (extract_tus_from_archive): Likewise. 37004 * tests/data/test-diff-filter/test9-report.txt: Adjust. 37005 * tests/data/test-read-dwarf/test0.abi: Likewise. 37006 * tests/data/test-read-dwarf/test1.abi: Likewise. 37007 * tests/data/test-read-dwarf/test2.so.abi: Likewise. 37008 370092014-05-21 Dodji Seketeli <dodji@redhat.com> 37010 37011 Rename 'symbol' in fn names to 'public decl' in abg-corpus.{cc,h} 37012 * src/abg-corpus.cc (lots of places): Rename references to 37013 'symbol' in function & variable names to 'public_decl'. 37014 370152014-05-22 Dodji Seketeli <dodji@redhat.com> 37016 37017 Support debug info files being outside the expected system directories 37018 * include/abg-dwarf-reader.h (read_corpus_from_elf): Take a 37019 debug_info_root_path parameter. 37020 src/abg-dwarf-reader.cc (create_default_dwfl): Take a 37021 debug_info_root_path. Use that to initialize the Dwfl_Callbacks 37022 structure used by dwfl_begin. 37023 (create_default_dwfl_sptr, read_corpus_from_elf): Likewise, Take a 37024 debug_info_root_path parameter. 37025 * tests/test-diff-dwarf.cc (main): Adjust. 37026 * tests/test-read-dwarf.cc (main): Likewise. 37027 * tools/bidiff.cc (options::dir_root_path[12]): New member. 37028 (options::options): Initialize it. 37029 (display_usage): Add help string for the --debug-info-dir[12] 37030 options. 37031 (parse_command_line): Handle the new --debug-info-dir[12] options. 37032 (main): Pass the debug info directories to read_corpus_from_elf. 37033 * bidw.cc (options::::di_root_path): New member. 37034 (options::options): Initialize it. 37035 (display_usage): Add help string for the new --debug-info-dir 37036 option. 37037 (parse_command_line): Handle the new --debug-info-dir. 37038 (main): Pass the debug info root path to read_corpus_from_elf. 37039 * tools/bilint.cc (options::di_root_path): New member. 37040 (options::options): Initialize it. 37041 (display_usage): Add help string for the new --debug-info-dir. 37042 (parse_command_line): Handle --debug-info-dir command line option. 37043 (main): Pass the debug info root path to read_corpus_from_elf. 37044 370452014-05-21 Dodji Seketeli <dodji@redhat.com> 37046 37047 Fix detection of destructors 37048 * src/abg-dwarf-reader.cc (build_class_type_and_add_to_ir): Simply 37049 detect that the destructor starts with a '~'. 37050 370512014-05-21 Dodji Seketeli <dodji@redhat.com> 37052 37053 Add clone in the scope of the cloned decl they logically belong to 37054 * src/abg-dwarf-reader.cc (build_ir_node_from_die): Do not try to 37055 add the cloned function/variable to the current scope because 37056 cloning should have added the decl into the scope of the cloned 37057 target. 37058 * src/abg-ir.cc ({var,function}_decl::clone): Insert the clone 37059 decl into the scope of the cloned decl. My understanding is that 37060 it's where they belong. 37061 * tests/data/test-read-dwarf/test1.abi: Update this to incorporate 37062 all the abstract constructors/destructors *and* their clones into 37063 the classes where they belong. 37064 * tests/data/test-read-dwarf/test1.abi: Adjust for the abstract 37065 cdtor being added to the class, as well as their cloned concrete 37066 instances. 37067 * tests/data/test-read-dwarf/test2.so.abi: Likewise. 37068 370692014-05-20 Dodji Seketeli <dodji@redhat.com> 37070 37071 Support decl cloning when seeing DW_AT_abstract_origin 37072 * include/abg-ir.h ({var,function}_decl::clone): New method. 37073 * src/abg-dwarf-reader.cc (die_die_attribute): Add a flag to avoid 37074 looking through DW_AT_abstract_origin attribute here. 37075 (build_function_decl): Set the linkage name from 37076 DW_AT_linkage_name if it's not set yet. 37077 (build_ir_node_from_die): For DW_TAG_{variable,subprogram}, when 37078 we see DW_AT_abstract_origin, clone the decl they refer to. 37079 Also, avoid dropping the DIE on the floor just because it doesn't 37080 have die_is_artificial here. 37081 * src/abg-ir.cc ({var,function}_decl::clone): Implement this. 37082 370832014-05-19 Dodji Seketeli <dodji@redhat.com> 37084 37085 Don't share types across TUs when DW_TAG_partial_unit are involved 37086 * src/abg-dwarf-reader.cc (build_translation_unit_and_add_to_ir): 37087 Clear the part of the context that needs to be per TU. 37088 (build_ir_node_from_die): Assert that this should not be called 37089 for partial and imported unit because for now our practical 37090 assumption is that DIEs under partial unit are lazily read only 37091 when referenced by DIEs that are under DW_TAG_compile_unit. 37092 * tests/Makefile.am: Add the new test files to the build system. 37093 * tests/data/test-read-dwarf/test2.so.abi: Fix the reference 37094 output here to avoid sharing types across TUs, making the output 37095 valid for bilint. 37096 370972014-05-19 Dodji Seketeli <dodji@redhat.com> 37098 37099 Initial support for DW_TAG_partial_unit 37100 * src/abg-dwarf-reader.cc (read_context::cur_tu_die_): New member. 37101 (read_context::read_context): Initialize the new member. 37102 (read_context::cur_tu_die): New accessors. 37103 (find_last_import_unit_point_before_die): New static function. 37104 (get_parent_die): Take a logical current die offset parameter. If 37105 the die we want the parent for is a partial unit, then find the 37106 last DW_TAG_imported_unit that imports that partial unit before 37107 the logical current die and return the parent of that 37108 DW_TAG_imported_unit die. 37109 (get_scope_for_die): Take a logical current die offset parameter. 37110 Adjust. 37111 (build_translation_unit_and_add_to_ir): Set/unset the current 37112 translation unit DIE in the context. Adjust. 37113 (build_namespace_decl_and_add_to_ir) 37114 (build_class_type_and_add_to_ir, build_qualified_type) 37115 (build_pointer_type_def, build_reference_type, build_typedef_type) 37116 (build_var_decl, build_function_decl, build_ir_node_from_die): 37117 Take a logical current die offset parameter. Adjust. 37118 (build_corpus): Accept that we can have DIE that are not 37119 DW_TAG_compile_unit at the top level, because, well, we can now 37120 have DW_TAG_partial_unit too. 37121 * tests/data/test-read-dwarf/test2-{0,1}.cc: New test source 37122 files. 37123 * tests/data/test-read-dwarf/test2.h: Likewise. 37124 * tests/data/test-read-dwarf/test2.so: New input binary to read. 37125 * tests/data/test-read-dwarf/test2.so.abi: New reference test to 37126 compare against. 37127 * tests/test-read-dwarf.cc: Adjust to launch the new test. 37128 371292014-05-14 Dodji Seketeli <dodji@redhat.com> 37130 37131 Re-build a test input file with debug info 37132 * tests/data/test-lookup-syms/test1.so: Rebuild this with debug 37133 info. 37134 371352014-05-14 Dodji Seketeli <dodji@redhat.com> 37136 37137 Serialize and de-serialize elf symbols for var & function decls 37138 * abg-ir.h (string_to_elf_symbol_type, string_to_elf_symbol_binding): 37139 Declare new entry points. 37140 * src/abg-ir.cc (string_to_elf_symbol_type) 37141 (string_to_elf_symbol_binding): Define new entry points. 37142 * include/abg-libxml-utils.h (xml_char_sptr_to_string): Declare 37143 new entry points. 37144 * src/abg-libxml-utils.cc (xml_char_sptr_to_string): Define new 37145 entry points. 37146 * src/abg-reader.cc (read_elf_symbol_type) 37147 (read_elf_symbol_binding, build_elf_symbol): Define new static 37148 functions. 37149 (build_function_decl, build_var_decl): Use the new 37150 build_elf_symbol and set the symbol to the function. Flag the 37151 function as having a public symbol in the symbol table if the 37152 symbol is public. 37153 * src/abg-writer.cc (write_elf_symbol_type) 37154 (write_elf_symbol_binding, write_elf_symbol): Define new static 37155 functions. 37156 (write_var_decl, write_function_decl): Use the new 37157 write_elf_symbol to serialize the symbol for the decl. 37158 * tests/data/test-read-dwarf/test[01].abi: Adjust. 37159 371602014-05-14 Dodji Seketeli <dodji@redhat.com> 37161 37162 Don't crash when de-serializing an empty function parm xml node 37163 * src/abg-reader.cc (build_function_parameter): Do not crash if 37164 the xml node is NULL. 37165 371662014-05-14 Dodji Seketeli <dodji@redhat.com> 37167 37168 Fix a typo in serializing a decl_base::binding 37169 * src/abg-ir.cc (operator<<(std::ostream&, decl_base::binding)): 37170 Fix a typo here. 37171 371722014-05-14 Dodji Seketeli <dodji@redhat.com> 37173 37174 Add a help string for the --no-absolute-path option of bisym 37175 * tools/bisym.cc (show_help): Add a missing help string. 37176 371772014-05-13 Dodji Seketeli <dodji@redhat.com> 37178 37179 Do not try to use ELF hash tables in demangling lookup mode 37180 * src/abg-dwarf-reader.cc (lookup_symbol_from_elf): If in 37181 demangling mode, do not use ELF hash tables. 37182 371832014-05-13 Dodji Seketeli <dodji@redhat.com> 37184 37185 Use the proper symbol table for and set linkage_name to symbol name 37186 * src/abg-dwarf-reader.cc (find_symbol_table_section): Return the 37187 .symtab if we are looking at an executable or relocatable file and 37188 .dynsym if we are looking at a DSO. 37189 (find_symbol_table_section_index): Likewise. Implement this in 37190 terms of find_symbol_table_section. 37191 (build_{function,var}_decl): Set the linkage_name to the symbol 37192 name, if the symbol name is not empty. 37193 * tests/data/test-diff-filter/test9-report.txt: Adjust. 37194 371952014-05-13 Dodji Seketeli <dodji@redhat.com> 37196 37197 Remove redundant "'" around linkage names in diff reports 37198 * src/abg-comparison.cc (corpus_diff::report): Remove the 37199 redundant "'" from the linkage names in the diff. 37200 372012014-05-08 Dodji Seketeli <dodji@redhat.com> 37202 37203 Initial support for elf symbol (versionning) during decl comparison 37204 * include/abg-fwd.h (get_linkage_name): Remove. 37205 * include/abg-dwarf-reader.h (enum symbol_type) 37206 (enum symbol_binding): Move these into abg-ir.h. 37207 (lookup_symbol_from_elf, lookup_public_function_symbol_from_elf): 37208 Adjust. 37209 * src/abg-dwarf-reader.cc (eval_last_constant_dwarf_sub_expr): 37210 Declare this before using it. 37211 (die_address_attribute, die_location_address) 37212 (stt_to_elf_symbol_type, stb_to_elf_symbol_binding) 37213 (find_hash_table_section_index, find_symbol_table_section) 37214 (find_symbol_table_section_index, find_text_section) 37215 (find_bss_section, compare_symbol_name) 37216 (get_symbol_versionning_sections get_version_for_symbol) 37217 (lookup_symbol_from_sysv_hash_tab) 37218 (lookup_symbol_from_gnu_hash_tab, get_elf_class_size_in_bytes) 37219 (bloom_word_at, setup_gnu_ht, lookup_symbol_from_elf_hash_tab) 37220 (lookup_symbol_from_symtab, maybe_adjust_fn_sym_address) 37221 (maybe_adjust_var_sym_address): New static functions. 37222 (enum hash_table_kind): New enum. 37223 (struct gnu_ht): New struct. 37224 (read_context::var_decls_to_add_): Renamed var_decls_to_add into 37225 this. 37226 (read_context::{fun, var}_sym_addr_sym_index_map_): New member. 37227 (read_context::{lookup_symbol_from_elf, 37228 lookup_elf_symbol_from_index, lookup_elf_fn_symbol_from_address, 37229 lookup_elf_var_symbol_from_address, fun_sym_addr_sym_index_map, 37230 var_sym_addr_sym_index_map, load_symbol_addr_to_index_maps, 37231 get_function_address, get_variable_address}): New member 37232 functions. 37233 (read_context::lookup_public_{variable, 37234 function}_symbol_from_elf): Adjust. 37235 (op_pushes_constant_value): Fix a bug here. 37236 (lookup_symbol_from_elf): Adjust. Support cases where there is no 37237 elf hash table, e.g, for relocatable files. 37238 (lookup_public_function_symbol_from_elf) 37239 (lookup_public_variable_symbol_from_elf): Adjust. 37240 (build_var_decl): Allow updating the var_decl to associate it with 37241 its underlying symbol. In that case, if the linkage name is not 37242 set, set it to the symbol name. 37243 (build_function_decl): Likewise for function_decl. 37244 (operator<<(std::ostream&, symbol_type)): 37245 (operator<<(std::ostream&, symbol_binding)): Move these do 37246 abg-ir.cc. 37247 * include/abg-ir.h (class elf_symbol): Declare new class. Move 37248 enum symbol_binding and enum symbol_type (from abg-dwarf-reader.h) to 37249 elf_symbol::binding and elf_symbol::type here. 37250 (operator<<(std::ostream&, elf_symbol::type)) 37251 (operator<<(std::ostream&, elf_symbol::binding)) 37252 (operator==(const elf_symbol_sptr, const elf_symbol_sptr)): New 37253 operators. 37254 (class elf_symbol::version): Declare new class. 37255 (class var_decl): Make this pimpl, and add ... 37256 (var_decl::{g,s}et_symbol): ... new member functions. 37257 (class function_decl): Likewise, make this pimpl and add ... 37258 (function_decl::{g,s}et_symbol): ... new member functions. 37259 * src/abg-ir.cc (struct elf_symbol, elf_symbol::priv): New 37260 types. 37261 (elf_symbol::*): Lots of new members and member functions. 37262 (operator==(const elf_symbol_sptr, const elf_symbol_sptr)): New. 37263 (operator<<(std::ostream&, elf_symbol::type)): New. 37264 (operator<<(std::ostream&, elf_symbol::binding)): New. 37265 (elf_symbol::version::priv): New type. 37266 (elf_symbol::version::*): Lots of member functions. 37267 (get_linkage_name): Removed. 37268 (var_decl::priv): New type. Pimplify the thing. 37269 (var_decl::{s,g}et_symbol): New. 37270 (var_decl::operator==): Take symbols in account in the comparison. 37271 (function_decl::priv): New type. 37272 (function_decl::*): Pimplify. 37273 (function_decl::{s,g}et_symbol): New. 37274 (function_decl::operator==): Take symbols in account in the 37275 comparison. 37276 * include/abg-comparison.h (diff_context::show_linkage_name): New 37277 member function. 37278 * src/abg-comparison.cc (diff_context::priv::show_linkage_name_): 37279 New member. 37280 (diff_context::priv::priv): Initialize it. 37281 (diff_context::show_linkage_names): New member function. 37282 (corpus_diff::report): If the user used --show-linkage-names, 37283 display the linkage name after the name of the functions. Add 37284 missing "'" in the some spots. 37285 * tools/bidiff.cc (options.show_linkage_names): New member. 37286 (display_usage, parse_command_line): Support --linkage-names. 37287 * tools/bisym.cc (show_help): Add '\n' at the end of help string 37288 for --demangle. Add --no-absolute-path option. 37289 (parse_command_line): Support --no-absolute-path. 37290 (main): Adjust for symbol (versionning) support. Consider that 37291 the program successfully completed even when the symbol wasn't 37292 found. Support --no-absolute-path. 37293 * tests/data/test-lookup-syms/test0-report.txt: New. 37294 * tests/data/test-lookup-syms/test01-report.txt: New. 37295 * tests/data/test-lookup-syms/test02-report.txt: New. 37296 * tests/data/test-read-dwarf/test0.abi: Adjust. 37297 * tests/data/test-read-dwarf/test1.abi: Adjust. 37298 * tests/data/test-diff-dwarf/test7-report.txt: Adjust. 37299 * tests/data/test-diff-filter/test10-report.txt: Adjust. 37300 * tests/data/test-diff-filter/test12-report.txt: Adjust. 37301 * tests/data/test-lookup-syms/test1-[123]-report.txt: New. 37302 * tests/data/test-lookup-syms/test1.c: New. 37303 * tests/data/test-lookup-syms/test1.version-script: New. 37304 * tests/test-lookup-syms.cc: Adjust for new tests. 37305 * test/Makefile.am: Adjust makefile. 37306 373072014-05-07 Dodji Seketeli <dodji@redhat.com> 37308 37309 Rename decl_base::get_mangled_name into decl_base::get_linkage_name 37310 * include/abg-ir.h (decl_base::get_linkage_name): Renamed 37311 decl_base::get_mangled_name into this. 37312 * src/abg-comparison.cc 37313 (class_diff::ensure_lookup_tables_populated) 37314 (function_decl_diff::report, type_decl_diff::report) 37315 (corpus_diff::priv::ensure_lookup_tables_populated) 37316 (corpus_diff::report, compute_diff): Adjust. 37317 * src/abg-corpus.cc ({var_comp, func_comp}::operator()): Likewise. 37318 (corpus::priv::build_symbol_table): Likewise. 37319 * src/abg-dwarf-reader.cc (die_linkage_name): Renamed 37320 die_mangled_name into this. 37321 (die_loc_and_name, build_translation_unit_and_add_to_ir) 37322 (build_namespace_decl_and_add_to_ir, build_type_decl) 37323 (build_enum_type, build_class_type_and_add_to_ir) 37324 (build_typedef_type, build_var_decl, build_function_decl, ): Adjust. 37325 * src/abg-hash.cc (decl_base::hash::operator()): Likewise. 37326 * src/abg-ir.cc (decl_base::priv::linkage_name_): Renamed 37327 decl_base::priv::mangled_name_ into this. 37328 (decl_base::priv::priv, decl_base::{decl_base, operator==}) 37329 (get_linkage_name, typedef_decl::typedef_decl, var_decl::var_decl) 37330 (function_decl::function_decl, class_decl::base_spec::base_spec) 37331 (class_decl::method_decl::method_decl): Adjust. 37332 (decl_base::{g,s}et_linkage_name): Renamed 37333 decl_base::{g,s}et_mangled_name into this. 37334 * src/abg-writer.cc (write_decl, write_typedef_decl) 37335 (write_var_decl, write_function_decl, dump): Adjust. 37336 373372014-04-21 Dodji Seketeli <dodji@redhat.com> 37338 37339 Drop symbols not global in a symtab from corpus symtab 37340 * src/abg-corpus.cc (corpus_priv::build_symbol_table): If a 37341 function or variable symbol is not public (global or weak) and 37342 present in an elf symbol table, drop it from the corpus symbol 37343 table. As a result functions are variables (not present in the 37344 elf symbol tables) that we were previously taking in account are 37345 not dropped on the floor, leading to much less noise. 37346 * tests/data/test-diff-dwarf/test0-v0.cc: Update to avoid 37347 generating inline functions. 37348 * tests/data/test-diff-dwarf/test0-v0.o: Likewise. 37349 * tests/data/test-diff-dwarf/test0-v1.cc: Likewise. 37350 * tests/data/test-diff-dwarf/test0-v1.o: Likewise. 37351 * tests/data/test-diff-dwarf/test7-v0.o: Likewise. 37352 * tests/data/test-diff-dwarf/test7-v1.cc: Likewise. 37353 * tests/data/test-diff-dwarf/test7-v1.o: Likewise. 37354 * tests/data/test-diff-dwarf/test8-v0.cc: Likewise. 37355 * tests/data/test-diff-dwarf/test8-v0.o: Likewise. 37356 * tests/data/test-diff-dwarf/test8-v1.cc: Likewise. 37357 * tests/data/test-diff-dwarf/test8-v1.o: Likewise. 37358 * tests/data/test-diff-filter/test0-v0.cc: Likewise. 37359 * tests/data/test-diff-filter/test0-v0.o: Likewise. 37360 * tests/data/test-diff-filter/test0-v1.cc: Likewise. 37361 * tests/data/test-diff-filter/test0-v1.o: Likewise. 37362 * tests/data/test-diff-filter/test10-v0.cc: Likewise. 37363 * tests/data/test-diff-filter/test10-v0.o: Likewise. 37364 * tests/data/test-diff-filter/test10-report.txt: Likewise. 37365 * tests/data/test-diff-filter/test10-v1.o: Likewise. 37366 * tests/data/test-diff-filter/test13-v0.cc: Likewise. 37367 * tests/data/test-diff-filter/test13-v0.o: Likewise. 37368 * tests/data/test-diff-filter/test13-v1.cc: Likewise. 37369 * tests/data/test-diff-filter/test13-v1.o: Likewise. 37370 * tests/data/test-diff-filter/test2-v0.cc: Likewise. 37371 * tests/data/test-diff-filter/test2-v0.o: Likewise. 37372 * tests/data/test-diff-filter/test2-v1.cc: Likewise. 37373 * tests/data/test-diff-filter/test2-v1.o: Likewise. 37374 * tests/data/test-diff-filter/test4-v0.cc: Likewise. 37375 * tests/data/test-diff-filter/test4-v0.o: Likewise. 37376 * tests/data/test-diff-filter/test4-v1.cc: Likewise. 37377 * tests/data/test-diff-filter/test4-v1.o: Likewise. 37378 * tests/data/test-diff-filter/test9-v0.o: Likewise. 37379 * tests/data/test-diff-filter/test9-v1.cc: Likewise. 37380 * tests/data/test-diff-filter/test9-v1.o: Likewise. 37381 373822014-04-21 Dodji Seketeli <dodji@redhat.com> 37383 37384 Fix mangled name setting for static data members from DWARF 37385 * src/abg-dwarf-reader.cc (build_var_decl): Support adding 37386 properties to an existing var_decl. For now just add mangled 37387 name. 37388 (build_ir_node_from_die): Accept DW_TAG_member too. This helps 37389 for when this function is used to add additional properties to an 37390 existing DW_TAG_member representing a static data member. Then, 37391 use build_var_decl to really add the value of the additional 37392 mangled name property. 37393 373942014-04-21 Dodji Seketeli <dodji@redhat.com> 37395 37396 Always show pretty representation of variables in report 37397 * src/abg-comparison.cc (corpus_diff::report): Display the pretty 37398 representation of the variable, no matter what. 37399 374002014-04-21 Dodji Seketeli <dodji@redhat.com> 37401 37402 Set "is_in_public_symbol_table" property for vars & fns 37403 * src/abg-dwarf-reader.cc (build_var_decl, build_function_decl): 37404 Set the "is_in_public_symbol_table" property for the variable or 37405 function decl. 37406 374072014-04-21 Dodji Seketeli <dodji@redhat.com> 37408 37409 Support symbol lookups from ELF 37410 * include/abg-dwarf-reader.h (symbol_type, symbol_binding): New 37411 enums. 37412 (operator<<): Declare new overloads for the new enums above. 37413 (lookup_symbol_from_elf, lookup_public_function_symbol_from_elf): 37414 Declare new entry points. 37415 * src/abg-dwarf-reader.cc (lookup_symbol_from_elf) 37416 (lookup_public_function_symbol_from_elf) 37417 (lookup_public_variable_symbol_from_elf): Define new static 37418 functions. 37419 (read_context::elf_{module_, handle}_): New data members. 37420 (read_context::{elf_module, elf_handle}): New accessors. 37421 (read_context::load_debug_info): Store the elf module into 37422 read_context::_elf_module_. Adjust. 37423 (read_context::{lookup_symbol_from_elf, 37424 lookup_public_function_symbol_from_elf, 37425 lookup_public_variable_symbol_from_elf}): New member functions. 37426 (lookup_symbol_from_elf, lookup_public_function_symbol_from_elf) 37427 (operator<<): Define public entry points. 37428 * tools/bisym.cc: New tool to lookup a symbol in an elf file. 37429 * tools/Makefile.am: Add the bisym.cc source file to the 37430 distribution and arrange to compile it into a 'bisym' executable. 37431 * tests/test-lookup-syms.cc: New test harness. 37432 * tests/data/test-lookup-syms/test0-report.txt: New test input 37433 for the harness above. 37434 * tests/data/test-lookup-syms/test0.cc: Likewise. 37435 * tests/data/test-lookup-syms/test0.o: Likewise 37436 * tests/data/test-lookup-syms/test01-report.txt: Likewise. 37437 * tests/data/test-lookup-syms/test02-report.txt: Likewise. 37438 * tests/Makefile.am: Build the new runtestlookupsyms test and add 37439 the new files to the distribution. 37440 374412014-04-21 Dodji Seketeli <dodji@redhat.com> 37442 37443 Add corpus::{s,g}et_origin accessors 37444 * include/abg-corpus.h (enum corpus::origin): New enum. 37445 (corpus::{g,s}et_origin): New accessors. 37446 * src/abg-corpus.cc (corpus::priv::origin): New data member. 37447 (corpus::priv::is_symbol_table_built): Move this up. 37448 (corpus::priv::priv): Adjust. 37449 (corpus::{g,s}et_origin): Define accessors. 37450 * src/abg-dwarf-reader.cc (read_corpus_from_elf): Set the corpus 37451 origin. Also set the path. Oops. 37452 * src/abg-reader.cc (read_corpus_from_input) 37453 (read_corpus_from_archive): Set the corpus origin. 37454 374552014-04-21 Dodji Seketeli <dodji@redhat.com> 37456 37457 Add a get_linkage_name function. 37458 * include/abg-fwd.h (is_at_global_scope): Declare a new overload. 37459 (get_linkage_name): Declare ... 37460 * src/abg-ir.cc (get_linkage_name): ... these new entry points. 37461 (is_at_global_scope): Define these new overloads useful for the 37462 new get_linkage_name. 37463 374642014-04-21 Dodji Seketeli <dodji@redhat.com> 37465 37466 Pimplify decl_base and add decl_base::{s,g}et_is_in_public_symbol_table 37467 * include/abg-ir.h (struct decl_base::priv): New pimpl type. 37468 (decl_base::priv_): New pimpl. 37469 (decl_base::{hashing_started, peek_hash_value, 37470 peek_qualified_name, set_qualified_name}): Declare new protected 37471 methods. 37472 (decl_base::{get_context_rel, set_qualified_name, get_location, 37473 set_location, set_name, set_mangled_name, get_visibility, 37474 set_visibility}): Move these out-of-line. 37475 (decl_base::{g,s}et_is_public_symbol_table): 37476 (class_decl::hashing_started): Remove this as we now have 37477 decl_base::hashing_started. 37478 (decl_base::{hash_, hashing_started, location_, context_, name_, 37479 qualified_parent_name_, qualified_name_, mangled_name_, 37480 visibility_}): Move all these members into the new ... 37481 * src/abg-ir.cc (struct decl_base::priv): ... pimpl type. 37482 (decl_base::decl_base): Move these out-of-line here. Adjust the 37483 other overloads. 37484 (decl_base::{hashing_started, peek_hash_value, 37485 peek_qualified_name, set_qualified_name}): Define these new 37486 protected methods. 37487 (decl_base::{get_context_rel, set_context_rel, get_location, 37488 set_location, set_name, get_mangled_name, set_mangled_name, 37489 get_visibility, set_visibility}): Define these out-of-line here. 37490 (decl_base::{get_hash, set_hash, get_scope, 37491 get_qualified_parent_name, get_qualified_name, operator==, 37492 set_scope}): Adjust. 37493 (qualified_type_def::get_qualified_name): Likewise. 37494 (pointer_type_def::get_qualified_name): Likewise. 37495 (reference_type_def::get_qualified_name): Likewise. 37496 (var_decl::set_scope): Likewise. 37497 (class_decl::base_spec): Likewise. 37498 (class_decl::method_decl::set_scope): Likewise. 37499 (decl_base::{g,s}et_is_in_public_symbol_table): Define new accessors. 37500 * src/abg-hash.cc ({decl_base, type_decl, scope_decl, 37501 scope_type_decl, qualified_type_def, pointer_type_def, 37502 reference_type_def, enum_type_decl, typedef_decl, var_decl, 37503 class_decl}::hash::operator): Adjust. 37504 375052014-04-17 Dodji Seketeli <dodji@redhat.com> 37506 37507 Categorize base class changes as SIZE_OR_OFFSET_CHANGE_CATEGORY 37508 * include/abg-comparison.h (class_diff::{deleted, inserted, 37509 changed}_bases): Declare new member functions ... 37510 * src/abg-comparison.cc ((class_diff::{deleted, inserted, 37511 changed}_bases)): ... and define them. 37512 * src/abg-comp-filter.cc (base_classes_added_or_removed): Define 37513 new static functions. 37514 (harmless_filter): Categorize base classes added or removed. 37515 * tests/data/test-diff-dwarf/test8-report.txt: New test input. 37516 * tests/data/test-diff-dwarf/test8-v0.cc: Likewise. 37517 * tests/data/test-diff-dwarf/test8-v0.o: Likewise. 37518 * tests/data/test-diff-dwarf/test8-v1.cc: Likewise. 37519 * tests/data/test-diff-dwarf/test8-v1.o: Likewise. 37520 * tests/data/test-diff-filter/test13-report.txt: New test input. 37521 * tests/data/test-diff-filter/test13-v0.cc: Likewise. 37522 * tests/data/test-diff-filter/test13-v0.o: Likewise. 37523 * tests/data/test-diff-filter/test13-v1.cc: Likewise. 37524 * tests/data/test-diff-filter/test13-v1.o: Likewise. 37525 * tests/Makefile.am: Add the new files above to the source distribution. 37526 * tests/test-diff-dwarf.cc: Use the new relevant input above to 37527 run more tests. 37528 * tests/test-diff-filter.cc: Likewise. 37529 375302014-04-17 Dodji Seketeli <dodji@redhat.com> 37531 37532 Fix class diff reporting issues for base classes 37533 * src/abg-comparison.cc (class_diff::report): For base classes, 37534 report their pretty representation. Do not try to report a the 37535 diff of a changed base class that got filtered out. Avoid 37536 emitting too many vertical white spaces. 37537 375382014-04-17 Dodji Seketeli <dodji@redhat.com> 37539 37540 Simplify SIZE_OR_OFFSET_CHANGE_CATEGORY categorizing 37541 * src/abg-comp-filter.cc (harmful_filter::visit): Now that 37542 type_size_changed is correctly geared to not be fulled by 37543 decl-only classes, there is no need for its caller to handle that 37544 case. And data_member_offset_changed ain't affected by decl-only 37545 classes anyway. So the code is now much simpler. 37546 375472014-04-17 Dodji Seketeli <dodji@redhat.com> 37548 37549 Fix API doc for static_data_member_type_size_changed 37550 * src/abg-comp-filter.cc (static_data_member_type_size_changed): 37551 Fix API doc comment. 37552 375532014-04-17 Dodji Seketeli <dodji@redhat.com> 37554 37555 Don't blindly drop DIEs defined in the scope of a function 37556 * src/abg-dwarf-reader.cc (get_scope_for_die): Do not drop a DIE 37557 on the floor just because it is in the scope of a function. We 37558 were dropping a function parameter because its type is a typedef 37559 defined right before the parameter, in the scope of the function. 37560 Urgh. So with this change, that function parameter is not dropped 37561 anymore. I have seen that happening in a DWARF generated by GCC 37562 4.7.1 on libstdc++.so. Hard to come up with a regression test 37563 case for this one. 37564 375652014-04-17 Dodji Seketeli <dodji@redhat.com> 37566 37567 Useless code killing 37568 * src/abg-comparison.cc (decls_equal::operator()(const decls_type, 37569 const decls_type)): Kill dead code. Note that there is a proper 37570 equality operator for decl_base_sptr already. 37571 375722014-04-17 Dodji Seketeli <dodji@redhat.com> 37573 37574 File static data member changes in STATIC_DATA_MEMBER_CHANGE_CATEGORY 37575 * include/abg-comparison.h 37576 (diff_category::STATIC_DATA_MEMBER_CHANGE_CATEGORY): New category. 37577 (diff_category::EVERYTHING_CATEGORY): Update 37578 * src/abg-comp-filter.cc (static_data_member_type_size_changed) 37579 (static_data_member_added_or_removed): Define new static 37580 functions. 37581 (harmless_filter::visit): Categorize changes to static data 37582 members as STATIC_DATA_MEMBER_CHANGE_CATEGORY. 37583 * tools/bidiff.cc (set_diff_context_from_opts): 37584 STATIC_DATA_MEMBER_CHANGE_CATEGORY is falls into the harmless 37585 group. 37586 * tests/data/test-diff-filter/test12-report.txt: New test input. 37587 * tests/data/test-diff-filter/test12-v0.cc: Likewise. 37588 * tests/data/test-diff-filter/test12-v0.o: Likewise. 37589 * tests/data/test-diff-filter/test12-v1.cc: Likewise. 37590 * tests/data/test-diff-filter/test12-v1.o: Likewise. 37591 * tools/bidiff.cc: Run this test with the additional input data 37592 above. 37593 * tests/Makefile.am: Adjust. 37594 375952014-04-17 Dodji Seketeli <dodji@redhat.com> 37596 37597 Fix typo in comments 37598 * include/abg-comparison.h 37599 (diff_category::NON_VIRT_MEM_FUN_CHANGE_CATEGORY): Fix typo in 37600 comments. 37601 376022014-04-17 Dodji Seketeli <dodji@redhat.com> 37603 37604 Only non-static data member changes are SIZE_OR_OFFSET_CHANGE_CATEGORY 37605 * src/abg-comp-filter.cc 37606 (non_static_data_member_type_size_changed): Renamed 37607 data_member_offset_changed into this. Make sure the test detects 37608 changes on *non-static* data members only. 37609 (non_static_data_member_added_or_removed): Likewise for 37610 data_member_offset_changed that got renamed into this. 37611 (harmful_filter::visit): Adjust. 37612 376132014-04-17 Dodji Seketeli <dodji@redhat.com> 37614 37615 Fix comments in categorization code 37616 * src/abg-comp-filter.cc (data_member_added_or_removed): Fix 37617 comments. 37618 376192014-04-16 Dodji Seketeli <dodji@redhat.com> 37620 37621 Really detect static-ness of data members. Oops. 37622 * src/abg-dwarf-reader.cc (build_class_type_and_add_to_ir): Let's 37623 consider that a data member being not laid out (i.e, not having a 37624 data_member_location) is is a static data member. Otherwise, we 37625 were not detecting static data members at all. Well we were only 37626 inferring their presence from seeing the static variable 37627 definition later on. That means we were missing most of the 37628 static variables. Woops. 37629 * src/abg-comparison.cc 37630 (corpus_diff::priv::ensure_lookup_tables_populated): Now that we 37631 are really seeing static data members, let's be prepare to the 37632 fact that we can the same static data member being declared 37633 several times in a corpus. 37634 * tests/data/test-diff-dwarf/test7-report.txt: New test input file. 37635 * tests/data/test-diff-dwarf/test7-v0.cc: Likewise. 37636 * tests/data/test-diff-dwarf/test7-v0.o: Likewise. 37637 * tests/data/test-diff-dwarf/test7-v1.cc: Likewise. 37638 * tests/data/test-diff-dwarf/test7-v1.o: Likewise. 37639 * tests/test-diff-dwarf.cc: Update this to consume the new test 37640 input files. 37641 * tests/Makefile.am: Update this to add the missing test files to 37642 the source distribution. 37643 376442014-04-16 Dodji Seketeli <dodji@redhat.com> 37645 37646 Add dumping routines for declaration location 37647 * include/abg-fwd.h (get_global_scope()): New overload for const 37648 decl_base&. Move the other overloads up in the file. 37649 (get_translation_unit): Add an overload for decl_base&. Constify 37650 the others. 37651 (dump_decl_location): Declare new functions. 37652 * src/abg-ir.cc (get_global_scope): Define the overload for const 37653 decl_base&. Write the other overloads in terms of this one. 37654 (get_translation_unit): Likewise, define the overload for const 37655 decl_base&. Write the other overloads in terms of this one. 37656 (dump_decl_location): Define these new overloads. 37657 376582014-04-16 Dodji Seketeli <dodji@redhat.com> 37659 37660 Fix dumping function to make them use generic ostream 37661 * src/abg-writer.cc (dump(const decl_base_sptr, std::ostream&)): 37662 Do not dump the content to cerr here. Rather dump to the output 37663 stream given in parameter. Oops. 37664 (dump(const translation_unit&, std::ostream&)): Likewise. 37665 376662014-04-16 Dodji Seketeli <dodji@redhat.com> 37667 37668 Misc style fixes 37669 * src/abg-ir.cc (get_translation_unit): Remove useless vertical 37670 white space. 37671 (is_global_scope): Add missing API doc. 37672 376732014-04-16 Dodji Seketeli <dodji@redhat.com> 37674 37675 A virt mem fn deleted and added to the same offset is not harmful 37676 * src/abg-comp-filter.cc (has_virtual_mem_fn_change): A virtual 37677 member that gets deleted and added back again to the same vtable 37678 offset is not considered as being a virtual member function change 37679 suitable for VIRTUAL_MEMBER_CHANGE_CATEGORY. Likewise for a 37680 function sub-type change not involving a change in the vtable 37681 offset. 37682 376832014-04-16 Dodji Seketeli <dodji@redhat.com> 37684 37685 Do not categorize size/offset changes when a decl-only class is involved 37686 * src/abg-comp-filter.cc (there_is_a_decl_only_class) 37687 (diff_involves_decl_only_class): New static functions. 37688 (type_size_changed, data_member_added_or_removed) 37689 (has_virtual_mem_fn_change, has_non_virtual_mem_fn_change): Bail 37690 out if one of the types involved is a decl-only class. 37691 376922014-04-16 Dodji Seketeli <dodji@redhat.com> 37693 37694 Work around "mangled name vanishing from one version of mem fn decl" bug 37695 * src/abg-comparison.cc 37696 (class_diff::ensure_lookup_tables_populated): If the first version 37697 of the member function decl doesn't have a mangled name while the 37698 second has it, try the lookups using the pretty representation of 37699 the function. 37700 377012014-04-16 Dodji Seketeli <dodji@redhat.com> 37702 37703 Do not try to represent the offset for a static data member 37704 * src/abg-comparison.cc (represent_data_member(var_decl_sptr, 37705 ostream&)): If the data member is static, do not try to represent 37706 its offset. 37707 377082014-04-16 Dodji Seketeli <dodji@redhat.com> 37709 37710 A static data member shouldn't be checked for having been laid out 37711 * src/abg-comparison.cc (represent_data_member(var_decl_sptr, 37712 ostream&)): If the data member is static do not check for it 37713 having been laid out. 37714 377152014-04-16 Dodji Seketeli <dodji@redhat.com> 37716 37717 Prefix pretty representation of static data members with 'static' 37718 * src/abg-ir.cc (var_decl::get_pretty_representation): Prefix 37719 pretty representation of static data members with 'static'. 37720 377212014-04-16 Dodji Seketeli <dodji@redhat.com> 37722 37723 Provide a robust way of getting the size of a qualified type 37724 * include/abg-ir.h (qualified_type_def::get_size_in_bits): Declare 37725 new member function ... 37726 * src/abg-ir.cc (qualified_type_def::get_size_in_bits): ... and 37727 define it. Keep in mind that some times the size of the 37728 underlying type can change between the moment the qualified type 37729 is created and the end of its life time. That is because a 37730 subsequent DIE (from DWARF) can alter the size of the underlying 37731 type. This overload allows the user to always query the size of 37732 the underlying type and keep the size of the qualified type in 37733 sync with it. 37734 377352014-04-16 Dodji Seketeli <dodji@redhat.com> 37736 37737 Add an assert to the pointer diff reporting code 37738 * src/abg-comparison.cc (pointer_diff::report): If the pointer 37739 diff node is deemed to be reported then the underlying diff node 37740 should be reported as well. 37741 377422014-04-16 Dodji Seketeli <dodji@redhat.com> 37743 37744 Little style adjustment in diff node categorization code 37745 * src/abg-comp-filter.cc (harmful_filter::visit): Factorize the 37746 categorization into SIZE_OR_OFFSET_CHANGE_CATEGORY for data member 37747 adding or removal and for data member type size change. 37748 377492014-04-15 Dodji Seketeli <dodji@redhat.com> 37750 37751 If a diff node is in NO_CHANGE_CATEGORY do not report it anymore 37752 * src/abg-comparison.cc (diff::is_filtered_out): Now that we seem 37753 to be flagging every changes to a class into a category, we do not 37754 need to dive into reporting a diff not that is categorized as 37755 NO_CHANGE_CATEGORY anymore. So let's have the implementation that 37756 one would expect for this function. 37757 377582014-04-15 Dodji Seketeli <dodji@redhat.com> 37759 37760 Categorize changes to virt mem fncts as VIRTUAL_MEMBER_CHANGE_CATEGORY 37761 * src/abg-comp-filter.cc (has_virtual_mem_fn_change): New static 37762 function. 37763 (harmful_filter): Categorize changes to virtual member functions 37764 into VIRTUAL_MEMBER_CHANGE_CATEGORY. 37765 * src/abg-comparison.cc 37766 (class_diff::priv::count_filtered_changed_dm): Move this up, right 37767 after class_diff::priv::count_filtered_subtype_changed_dm. 37768 (SKIP_MEM_FN_IF_VIRTUALITY_DISALLOWED): New macro. 37769 (class_diff::priv::count_filtered_{changed, inserted, 37770 deleted}_mem_fns): Modify these to properly take member function 37771 virtual-ness in account. 37772 377732014-04-15 Dodji Seketeli <dodji@redhat.com> 37774 37775 Do not hash non-virtual member functions when hashing a class 37776 * src/abg-hash.cc (class_decl::hash::operator): Do not hash 37777 non-virtual member functions. 37778 377792014-04-15 Dodji Seketeli <dodji@redhat.com> 37780 37781 Fix a missing new line in the reports 37782 * src/abg-comparison.cc (represent(class_decl::method_decl_sptr, 37783 ostream&)): Add a missing new line. 37784 * tests/data/test-bidiff/test-struct1-report.txt: Adjust. 37785 377862014-04-14 Dodji Seketeli <dodji@redhat.com> 37787 37788 Add more pretty printing facilities 37789 * include/abg-comparison.h (get_pretty_representation(diff*)): 37790 Declare new function. 37791 * include/abg-fwd.h (get_pretty_representation): Declare functions 37792 for decl_base*, type_base*, decl_base_sptr and type_base_sptr. 37793 * src/abg-comparison.cc (get_pretty_representation): Implement 37794 this for diff*. 37795 * src/abg-ir.cc (get_pretty_representation): Define 37796 implementations for decl_base*, type_base*, decl_base_sptr and 37797 type_base_sptr. 37798 377992014-04-14 Dodji Seketeli <dodji@redhat.com> 37800 37801 Don't compare non-virtual member functions in class comparison 37802 * src/abg-comparison.cc 37803 (class_diff::ensure_lookup_tables_populated): Use the virtual 37804 member functions here, not the member functions in general. 37805 (compute_diff): Consider virtual member functions only, not 37806 non-virtual ones. 37807 * src/abg-ir.cc (class_decl::operator==): Do not compare 37808 non-virtual member functions. Only compare virtual member 37809 functions. 37810 * tests/data/test-bidiff/test-struct1-report.txt: New test input. 37811 * tests/data/test-diff-dwarf/test0-report.txt: New test input. 37812 * tests/data/test-diff-filter/test0-report.txt: New test input. 37813 * tests/data/test-diff-filter/test01-report.txt: New test input. 37814 * tests/data/test-diff-filter/test10-report.txt: New test input. 37815 * tests/data/test-diff-filter/test11-report.txt: New test input. 37816 * tests/data/test-diff-filter/test2-report.txt: New test input. 37817 * tests/data/test-diff-filter/test9-report.txt: New test input. 37818 378192014-04-14 Dodji Seketeli <dodji@redhat.com> 37820 37821 Recognize virtual member functions better and store them appart 37822 * include/abg-fwd.h (set_member_function_is_virtual): Declare new 37823 function. 37824 * include/abg-ir.h (class class_decl): Declare 37825 set_member_function_is_virtual and member_function_is_virtual as 37826 friends of class_decl. 37827 (class_decl::add_member_function): Take an is_virtual flag. 37828 (class_decl::get_num_virtual_functions): Remove. 37829 (class_decl::get_virtual_mem_fns): New member function. 37830 (mem_fn_context_rel::is_virtual_): New member. 37831 (mem_fn_context_rel::mem_fn_context_rel): Adjust to initialize the 37832 new is_virtual_ member. 37833 (mem_fn_context_rel::is_virtual): New member functions. 37834 * src/abg-comparison.cc (represent): Adjust. 37835 * src/abg-dwarf-reader.cc (build_class_type_and_add_to_ir): Adjust. 37836 * src/abg-ir.cc (member_function_is_virtual): Change this to use 37837 mem_fn_context_rel::is_virtual. 37838 (set_member_function_is_virtual): Define this new function. 37839 (class_decl::priv::virtual_mem_fns_): New member to hold virtual 37840 member functions. 37841 (class_decl::get_virtual_mem_fns): Implement this member function. 37842 (class_decl::get_num_virtual_functions): Remove. 37843 (class_decl::add_member_function): Take a new is_virtual flag. 37844 Add virtual member functions to 37845 class_decl::priv::virtual_mem_fns_. 37846 * src/abg-reader.cc (build_class_decl): Adjust. 37847 378482014-04-13 Dodji Seketeli <dodji@redhat.com> 37849 37850 Filter non-virtual member fns insertions/deletions from class changes 37851 * include/abg-fwd.h (member_function_is_virtual): Declare new 37852 function. 37853 * include/abg-comparison.h 37854 (diff_category::{NON_VIRT_MEM_FUN_CHANGE_CATEGORY, 37855 VIRTUAL_MEMBER_CHANGE_CATEGORY}): New enumerators. 37856 (diff_category::EVERYTHING_CATEGORY): Adjust. 37857 (class_diff::{changed, deleted, inserted}_member_fns): Declare new 37858 member functions. 37859 * src/abg-comp-filter.cc (data_member_added_or_removed): Add 37860 missing comments. 37861 (has_non_virtual_mem_fn_change): New static predicate function. 37862 (harmless_filter::visit): Categorize non-virtual member function 37863 changes in a diff into NON_VIRT_MEM_FUN_CHANGE_CATEGORY. 37864 * src/abg-comparison.cc 37865 (TRAVERSE_MEM_FN_DIFF_NODE_AND_PROPAGATE_CATEGORY): New macro. 37866 (report_mem_header): Count filtered functions for added/deleted 37867 functions as well. 37868 (class_diff::priv::count_filtered_changed_mem_fns): Renamed 37869 priv::count_filtered_member_functions into this. Filter out 37870 changes to non-virtual member functions here. 37871 (class_diff::priv::count_filtered_{inserted, deleted}_mem_fns): 37872 New member functions. 37873 (class_diff::{deleted, inserted, changed}_member_fns): Define new 37874 member functions. 37875 (class_diff::report): Adjust count for filtered inserted/deleted 37876 member functions. Do not report NON_VIRT_MEM_FUN_CHANGE_CATEGORY 37877 if it's disallowed. 37878 (class_diff::traverse): Propagate only 37879 VIRTUAL_MEMBER_CHANGE_CATEGORY from member functions to their 37880 enclosing class. 37881 * src/abg-ir.cc (member_function_is_virtual): Define new 37882 functions. 37883 * tools/bidiff.cc (set_diff_context_from_opts): Adjust to add 37884 NON_VIRT_MEM_FUN_CHANGE_CATEGORY into the harmless group and 37885 VIRTUAL_MEMBER_CHANGE_CATEGORY into the harmful one. 37886 * tests/data/test-diff-filter/test0-report.txt: New test input. 37887 * tests/data/test-diff-filter/test10-report.txt: Likewise. 37888 * tests/data/test-diff-filter/test10-v0.cc: Likewise. 37889 * tests/data/test-diff-filter/test10-v0.o: Likewise. 37890 * tests/data/test-diff-filter/test10-v1.cc: Likewise. 37891 * tests/data/test-diff-filter/test10-v1.o: Likewise. 37892 * tests/data/test-diff-filter/test11-report.txt: Likewise. 37893 * tests/data/test-diff-filter/test11-v0.cc: Likewise. 37894 * tests/data/test-diff-filter/test11-v0.o: Likewise. 37895 * tests/data/test-diff-filter/test11-v1.cc: Likewise. 37896 * tests/data/test-diff-filter/test11-v1.o: Likewise. 37897 * tests/data/test-diff-filter/test2-report.txt: Likewise. 37898 * tests/data/test-diff-filter/test9-report.txt: Likewise. 37899 * tests/data/test-diff-filter/test9-v0.cc: Likewise. 37900 * tests/data/test-diff-filter/test9-v0.o: Likewise. 37901 * tests/data/test-diff-filter/test9-v1.cc: Likewise. 37902 * tests/data/test-diff-filter/test9-v1.o: Likewise. 37903 * tests/test-diff-filter.cc: Consume the test input above to run 37904 more tests. 37905 379062014-04-13 Dodji Seketeli <dodji@redhat.com> 37907 37908 Make class_decl pimpl and harden comparison infloop prevention 37909 * include/abg-ir.h (class_decl::{priv}): New private data member. 37910 (class_decl::{get_is_declaration_only, set_is_declaration_only, 37911 is_struct, get_definition_of_declaration, get_earlier_declaration, 37912 add_base_specifier, get_base_specifiers, get_member_types, 37913 get_data_members, get_member_functions, 37914 get_member_function_templates, get_member_class_templates}): Move 37915 these methods out-of-line. 37916 (class_decl::{comparison_started_, 37917 declaration_,is_declaration_only_, definition_of_declaration, 37918 is_struct_, bases_, member_types_, data_members_, 37919 member_functions_, member_function_template, 37920 member_class_templates_}): Move these data members into the pimpl 37921 in ... 37922 * src/abg-ir.cc 37923 (class_decl::priv::{declaration_,is_declaration_only_, 37924 definition_of_declaration, is_struct_, bases_, member_types_, 37925 data_members_, member_functions_, member_function_template, 37926 member_class_templates_}): ... here. 37927 (class_decl::priv::classes_being_compared_): New data member. 37928 (class_decl::priv::priv): Initialize the data members. 37929 (class_decl::priv::{mark_as_being_compared, 37930 unmark_as_being_compared, comparison_started): New methods. 37931 (class_decl::{get_is_declaration_only, set_is_declaration_only, 37932 is_struct, get_definition_of_declaration, add_base_specifier, 37933 get_base_specifiers, get_member_types, get_data_members, 37934 get_member_functions, get_member_function_templates, 37935 get_member_class_templates}): Move these out-of-line in here. 37936 (class_decl::{class_decl, set_definition_of_declaration, 37937 set_earlier_declaration, insert_member_type, add_member_type, 37938 add_data_member, add_member_function, 37939 add_member_function_template, add_member_class_template, 37940 has_no_base_nor_member}): Adjust. 37941 (class_decl::operator==): Harden inf-loop prevention during class 37942 comparison using the new priv::mark/unmark_as_being_compared() 37943 functions. Now comparison of a class really compares member 37944 functions again. And it is *slooow*. I should probably change 37945 this to compare only virtual member functions. But at least this 37946 should be correct and robust for now. 37947 * tests/data/test-diff-filter/test0-report.txt: Adjust. 37948 * test01-report.txt: Adjust. 37949 379502014-04-11 Dodji Seketeli <dodji@redhat.com> 37951 37952 Remove the parent member of the diff node 37953 * include/abg-comparison.h (diff::parent_): Remove. 37954 (diff::diff): Adjust. 37955 (diff::{get, set}_parent): Remove. 37956 * src/abg-comp-filter.cc (harmless_filter::visit): Remove category 37957 propagation to the parent. 37958 379592014-04-11 Dodji Seketeli <dodji@redhat.com> 37960 37961 Update the decl_base copy constructor for forgotten members 37962 * src/abg-ir.cc (decl_base::decl_base): Copy forgotten decl_base 37963 members hashing_started_, qualified_parent_name_, qualified_name_. 37964 379652014-04-11 Dodji Seketeli <dodji@redhat.com> 37966 37967 Comment fix in filtering code 37968 * src/abg-comp-filter.cc (harmful_filter::visit): Fix comment 37969 typos. 37970 379712014-04-11 Dodji Seketeli <dodji@redhat.com> 37972 37973 Put data member type size changes in SIZE_OR_OFFSET_CHANGE_CATEGORY 37974 * src/abg-comp-filter.cc (type_size_changed): New overload for 37975 type_base_sptr. 37976 (data_member_type_size_changed): New predicate. 37977 (harmful_filter::visit): Use the new predicate to categorize data 37978 member type size changes into the SIZE_OR_OFFSET_CHANGE_CATEGORY. 37979 379802014-04-11 Dodji Seketeli <dodji@redhat.com> 37981 37982 Represent a removed+added data member at a given offset as changed 37983 * include/abg-fwd.h (get_data_member_offset): Declare new overload for 37984 decl_base_sptr. 37985 * include/abg-comparison.h (unsigned_decl_base_sptr_map) 37986 (unsigned_changed_type_or_decl_map): New typedefs. 37987 * src/abg-ir.cc (get_data_member_offset): Define new overload for decl_base_sptr. 37988 * src/abg-comparison.cc (diff_kind::subtype_change_kind): New 37989 enumerator for a change about a type or sub-type of a member of a 37990 structure/enum. 37991 (report_mem_header): Handle the new enumerator above. 37992 (class_diff::priv::{deleted_dm_by_offset_, inserted_dm_by_offset_, 37993 changed_dm_}): New data members. 37994 (class_diff::priv::subtype_changed_dm_): Renamed 37995 class_diff::priv::changed_data_members_ into this. 37996 (class_diff::priv::subtype_changed_dm): Renamed 37997 class_diff::priv::data_member_has_changed into this. Adjust. 37998 (class_diff::count_filtered_subtype_changed_dm): Renamed 37999 count_filtered_data_members into this. Adjust. 38000 (class_diff::priv::count_filtered_changed_dm): New member 38001 function. 38002 (class_diff::lookup_tables_empty): Adjust. 38003 (class_diff::ensure_lookup_tables_populated): Adjust. Detect when 38004 a data member is deleted and added back to offset N, and be 38005 prepared to present that as a change of data member at offset N. 38006 (class_diff::report): Adjust. Report data members of a given 38007 offset that have changed. 38008 * tests/data/test-diff-dwarf/test6-report.txt: New reference 38009 report for new test input. 38010 * tests/data/test-diff-dwarf/test6-v0.cc: Source code for new test 38011 input binary. 38012 * tests/data/test-diff-dwarf/test6-v0.o: New test input binary. 38013 * tests/data/test-diff-dwarf/test6-v1.cc: Source code for new test 38014 input binary. 38015 * tests/data/test-diff-dwarf/test6-v1.o: New test input binary. 38016 * tests/test-diff-dwarf.cc: Adjust to include the new test inputs above. 38017 380182014-04-11 Dodji Seketeli <dodji@redhat.com> 38019 38020 Unmark class_diff node as being traversed once traversal is finished 38021 * src/abg-comparison.cc (class_diff:traverse): Unmark class_diff 38022 node as being traversed once traversal is finished 38023 380242014-04-11 Dodji Seketeli <dodji@redhat.com> 38025 38026 Do not use the parent diff node link for category propagation 38027 * src/abg-comparison.cc (class_diff::traverse): Use the new 38028 TRAVERSE_MEM_DIFF_NODE_AND_PROPAGATE_CATEGORY macro to propagate 38029 categorization from the children diff nodes to the current one for 38030 bases, data members and member functions. 38031 (scope_diff::traverse): Likewise, use the 38032 TRAVERSE_DIFF_NODE_AND_PROPAGATE_CATEGORY to propagate 38033 categorization from the children diff nodes to the current one. 38034 380352014-04-11 Dodji Seketeli <dodji@redhat.com> 38036 38037 Ensure that each diff node is traversed just once 38038 * include/abg-comparison.cc (pointer_map): New typedef. 38039 (diff_context::{has_diff_for}): New overload for diff*. 38040 (diff_context::{diff_has_been_traversed, mark_diff_as_traversed, 38041 forget_traversed_diffs}): Declare new methods. 38042 * src/abg-comparison.cc (ENSURE_DIFF_NODE_TRAVERSED_ONCE) 38043 (ENSURE_MEM_DIFF_NODE_TRAVERSED_ONCE): Define new macros. 38044 (diff_context::priv::traversed_diff_nodes_): New data member. 38045 (diff_context::has_diff_for): New overload for diff* 38046 (diff_context::{diff_has_been_traversed, mark_diff_as_traversed, 38047 forget_traversed_diffs}): Define new member functions. 38048 (diff_context::maybe_apply_filters): Forget the traversed diffs 38049 before applying a filter. 38050 ({distinct_diff, var_diff, pointer_diff, reference_diff, 38051 qualified_type_diff, enum_diff, class_diff, base_diff, scope_diff, 38052 function_decl_diff, type_decl_diff, typedef_diff, 38053 translation_unit_diff}::traverse): Ensure that the diff node is 38054 traversed only once. 38055 380562014-04-11 Dodji Seketeli <dodji@redhat.com> 38057 38058 Factorize diff sub-tree traversal and category propagation code 38059 * src/abg-comparison.cc 38060 (TRAVERSE_DIFF_NODE_AND_PROPAGATE_CATEGORY) 38061 (TRAVERSE_MEM_DIFF_NODE_AND_PROPAGATE_CATEGORY): New macros. 38062 ({distinct_diff, pointer_diff, reference_diff, 38063 qualified_type_diff, enum_diff, base_diff, function_decl_diff, 38064 typedef_diff}::traverse): Use the new macro above in lieu of the 38065 duplicated sub-tree traversal code in there. 38066 380672014-04-11 Dodji Seketeli <dodji@redhat.com> 38068 38069 Style fixes in the diff nodes traversing code 38070 * src/abg-comparison.cc (TRY_{PRE, PRO}_VISIT, TRY_{PRE, 38071 PRO}_VISIT_CLASS_DIFF, ): Add a white space. 38072 380732014-04-10 Dodji Seketeli <dodji@redhat.com> 38074 38075 Supporting reporting data member name change 38076 * src/abg-comparison.cc (represent): Support reporting data member 38077 name change. 38078 380792014-04-10 Dodji Seketeli <dodji@redhat.com> 38080 38081 Consider added/removed data members as changing size or offset 38082 * src/abg-comp-filter.cc (data_member_added_or_removed): New 38083 static function. 38084 (harmless_filter::visit): Re-organize logic. Categorize data 38085 member addition/removal into SIZE_OR_OFFSET_CHANGE_CATEGORY. 38086 380872014-04-10 Dodji Seketeli <dodji@redhat.com> 38088 38089 Add missing comment 38090 * src/abg-ir.cc (non_type_tparameter::get_hash): Add missing api doc. 38091 380922014-04-09 Dodji Seketeli <dodji@redhat.com> 38093 38094 Fix and add missing hashing through the virtual decl_base::get_hash 38095 * include/abg-ir.h (struct {scope_decl, non_type_tparameter, 38096 type_composition, class_decl}::hash): Declare hashers. 38097 ({scope_decl, var_decl, non_type_tparameter, type_composition, 38098 class_decl}::get_hash): Provide new overloads of the get_hash. 38099 * src/abg-hash.cc ({type_decl, scope_type_decl, 38100 qualified_type_def, pointer_type_def, reference_type_def, 38101 enum_type_decl, typedef_decl, var_decl, 38102 function_decl}::hash::operator()): If the hash is being 38103 calculated, do not use the not-yet fully calculated hash value. 38104 Rather, calculate the hash, cache it and return the value. 38105 ({class_decl, non_type_tparameter}::hash::operator()): Moved the 38106 {class_decl, non_type_tparameter}::hash declaration out of here 38107 and stick it in include/abg-ir.h. Keep the definition of the 38108 hashing operators here though. 38109 (type_composition::hash::operator()): New operator definition. 38110 * src/abg-ir.cc ({scope_decl, var_decl, class_decl, 38111 non_type_tparameter, type_composition}::get_hash): Define new 38112 virtual overload. 38113 381142014-04-08 Dodji Seketeli <dodji@redhat.com> 38115 38116 Fix mis-hashing of base specifiers and function_decl during comparison 38117 * include/abg-ir.h (function_decl::get_hash): Declare new virtual 38118 overload. 38119 * src/abg-hash.cc (class_decl::base_spec::hash::operator()): 38120 Properly hash the base specifier so that it doesn't collide with 38121 hashing a class. 38122 * src/abg-ir.cc (decl_base::get_hash): Abort if we detect a 38123 missing overload for this; 38124 (function_decl::get_hash() const): Implement this missing 38125 overload, allowing using the virtual decl_base::get_hash for 38126 function_decl. 38127 381282014-04-08 Dodji Seketeli <dodji@redhat.com> 38129 38130 Properly place opening quote and add missing closing quote in report 38131 * src/abg-comparison.cc (corpus_diff::report): Move the [{A,D}] 38132 marker before the opening quote. And add a closing quote. 38133 * tests/data/test-diff-dwarf/test0-report.txt: Adjust. 38134 * tests/data/test-diff-filter/test0-report.txt: Adjust. 38135 * tests/data/test-diff-filter/test01-report.txt: Adjust. 38136 * tests/data/test-diff-filter/test2-report.txt: Adjust. 38137 381382014-04-08 Dodji Seketeli <dodji@redhat.com> 38139 38140 Drive-by indentation fix 38141 * src/abg-dwarf-reader.cc (build_ir_node_from_die): Fix 38142 indentation. 38143 381442014-04-08 Dodji Seketeli <dodji@redhat.com> 38145 38146 Drop ABI artifacts that are local to a function 38147 * src/abg-dwarf-reader.cc (get_scope_for_die): If the parent die 38148 is DW_TAG_subprogram then just drop the whole thing on the floor. 38149 (build_ir_node_from_die): When the scope is NULL, just drop the 38150 whole thing on the floor. 38151 381522014-04-08 Dodji Seketeli <dodji@redhat.com> 38153 38154 Fix the static data member recognition hack 38155 * src/abg-dwarf-reader.cc (build_translation_unit_and_add_to_ir): 38156 When trying to recognize the global var_decl as being definition 38157 variables for static data members, lookup the declaration for the 38158 data member in the relevant class. If found, then just flag the 38159 var_decl for the data member as being static; no need to add a 38160 var_decl as data member in that case, that would duplicate the 38161 data member. 38162 381632014-04-08 Dodji Seketeli <dodji@redhat.com> 38164 38165 Fix looking up a node inside a class 38166 * src/abg-ir.cc (lookup_node_in_scope): Do not forget to actually 38167 look at the class members. Sigh. 38168 381692014-04-07 Dodji Seketeli <dodji@redhat.com> 38170 38171 Work around old dwarf producers forgetting mangled names for functions 38172 * src/abg-comparison.cc 38173 (corpus_diff::priv::ensure_lookup_tables_populated): If lookup 38174 using mangled name for a deleted function yields nada, try the 38175 lookup with the pretty representation for the function. 38176 381772014-04-07 Dodji Seketeli <dodji@redhat.com> 38178 38179 Make type_base::get_{size,alignment}_in_bits virtual 38180 * include/abg-ir.h (type_base::get_{size,alignment}_in_bits): Make 38181 this virtual. 38182 (typedef_decl::get_{size,alignment}_in_bits): Add new member 38183 functions. Get the size,alignment from the underlying type and 38184 update the current size/alignment if they differ. Keep in mind 38185 that the size of an underlying class_decl can change over its 38186 lifetime, given how the dwarf reader reads the type information, 38187 i.e, there can be a DIE for a class type with no size information 38188 that will lead to the creation of a class_decl with size zero. 38189 Later during the DWARF reading process, another DIE will 38190 supplement the type information, adding size information to that 38191 class_decl. In between, a typedef_decl might have been created 38192 with the first version of the class_decl that has a zero size. I 38193 guess this should be extended to the other type constructs that 38194 have an underlying type (qualified types, references and pointers). 38195 381962014-04-07 Dodji Seketeli <dodji@redhat.com> 38197 38198 Look through typedefs when setting SIZE_OR_OFFSET_CHANGE_CATEGORY 38199 * include/abg-fwd.h (is_class_type): Declare new functions. 38200 * src/abg-comp-filter.cc (harmful_filter::visit): Use the above to 38201 convert a type into a class. 38202 * src/abg-ir.cc (is_class_type): Define the new function. 38203 382042014-04-06 Dodji Seketeli <dodji@redhat.com> 38205 38206 Add a new DECL_NAME_CHANGE_CATEGORY change category 38207 * include/abg-comparison.h (enum 38208 diff_category::DECL_NAME_CHANGE_CATEGORY): New enumerator. 38209 * src/abg-comparison.cc (report_name_size_and_alignment_changes) 38210 ({enum, typedef}_diff::report): Adjust to avoid emitting name 38211 change report if the DECL_NAME_CHANGE_CATEGORY category of change 38212 is currently disallowed. 38213 * abg-comp-filter.cc (decl_name_changed): New static function. 38214 (harmless_filter::visit): Detect that the decl name changed and 38215 put the current diff node (and its parents) into the 38216 DECL_NAME_CHANGE_CATEGORY category. 38217 * tools/bidiff.cc (set_diff_context_from_opts): Set the new 38218 DECL_NAME_CHANGE_CATEGORY category into the harmless_changes group 38219 of categories. 38220 * tests/data/test-diff-filter/test6-report.txt: New test input file. 38221 * tests/data/test-diff-filter/test6-v0.cc: Likewise. 38222 * tests/data/test-diff-filter/test6-v0.o: Likewise. 38223 * tests/data/test-diff-filter/test6-v1.cc: Likewise. 38224 * tests/data/test-diff-filter/test6-v1.o: Likewise. 38225 * tests/data/test-diff-filter/test7-report.txt: Likewise. 38226 * tests/data/test-diff-filter/test7-v0.cc: Likewise. 38227 * tests/data/test-diff-filter/test7-v0.o: Likewise. 38228 * tests/data/test-diff-filter/test7-v1.cc: Likewise. 38229 * tests/data/test-diff-filter/test7-v1.o: Likewise. 38230 * tests/test-diff-filter.cc: Take the new inputs above to run new tests. 38231 * tests/Makefile.am: Add the new files above to the distribution. 38232 382332014-04-05 Dodji Seketeli <dodji@redhat.com> 38234 38235 Emit qualified name for typedefs 38236 * src/abg-comparison.cc (typedef_diff::report): Emit qualified 38237 names for typedefs in diff reports about typedef name changes. 38238 382392014-04-05 Dodji Seketeli <dodji@redhat.com> 38240 38241 Fix indentation in distinct type diff report 38242 * src/abg-comparison.cc (distinct_diff::report): Do not forget to 38243 change line. 38244 382452014-04-05 Dodji Seketeli <dodji@redhat.com> 38246 38247 Really compare return types for function types 38248 * src/abg-ir.cc (compare_function_types): Compare return types, 38249 unless this is a method and the return type is the same type as 38250 the containing class type. 38251 * tests/data/test-diff-dwarf/test5-report.txt: Reference report 38252 for the comparison of the two input binaries below. 38253 * tests/data/test-diff-dwarf/test5-v0.cc: Source code for the 38254 input binary below. 38255 * tests/data/test-diff-dwarf/test5-v0.o: Test input binary. 38256 * tests/data/test-diff-dwarf/test5-v1.cc: Source code for the 38257 input binary below. 38258 * tests/data/test-diff-dwarf/test5-v1.o: Test input binary. 38259 382602014-04-05 Dodji Seketeli <dodji@redhat.com> 38261 38262 Add missing tests for previous commits 38263 * tests/data/test-diff-dwarf/test4-report.txt: Adjust. 38264 * tests/test-diff-dwarf.cc: Run tests for 38265 data/test-diff-dwarf/test3-report.txt" and 38266 data/test-diff-dwarf/test4-report.txt. 38267 382682014-04-05 Dodji Seketeli <dodji@redhat.com> 38269 38270 Categorize through compatible distinct type diffs 38271 * src/abg-comparison.cc (report_size_and_alignment_changes): Split 38272 this static function out of ... 38273 (report_name_size_and_alignment_changes): ... this one. 38274 (distinct_diff::report): If the typedef-stripped variants of the 38275 diff subjects are of the same kind, display their diff. 38276 Otherwise, tell explicitly is the distinct type diff involves a 38277 type size change. 38278 (distinct_diff::traverse): If the typedef-stripped variants of the 38279 diff subjects are of the same kind, traverse that underlying diff 38280 sub-tree and propagate the categorizing possibly resulting from 38281 that traversal. 38282 * tests/data/test-diff-dwarf/test4-v0.o: New test input binary. 38283 * tests/data/test-diff-dwarf/test4-v0.cc: Source code for the 38284 input binary above. 38285 * tests/data/test-diff-dwarf/test4-v1.o: New test input binary. 38286 * tests/data/test-diff-dwarf/test4-v1.cc: Source code for the 38287 input binary above. 38288 * tests/data/test-diff-dwarf/test4-report.txt: Reference report 38289 for the difference between the two binaries above. 38290 * tests/data/test-diff-filter/test5-v0.o: New test input binary. 38291 * tests/data/test-diff-filter/test5-v0.cc: Source code for the 38292 input binary above. 38293 * tests/data/test-diff-filter/test5-v1.o: New test input binary. 38294 * tests/data/test-diff-filter/test5-v1.cc: Source code for the 38295 input binary above. 38296 * tests/data/test-diff-filter/test5-report.txt: Reference report 38297 for the difference between the two binaries above. 38298 * tests/test-diff-filter.cc: Adjust to produce a filtered diff for 38299 the two input binaries above. 38300 * tests/Makefile.am: Adjust to add missing test files to the 38301 distribution. 38302 383032014-04-04 Dodji Seketeli <dodji@redhat.com> 38304 38305 Slight run-by fixes 38306 * src/abg-comparison.cc 38307 (corpus_diff::priv::apply_filters_and_compute_diff_stats) 38308 (corpus_diff::report): Use compute_diff for types which it has an 38309 overload rather than going through the compute_diff_for_decls that 38310 would use dynamic casting. 38311 383122014-04-04 Dodji Seketeli <dodji@redhat.com> 38313 38314 Do not hook type diff nodes to a parent 38315 * abg/comparison.cc (var_diff::var_diff): Do not set parent node 38316 for the type diff of the var_diff. 38317 (var_diff::traverse): Handle category propagation from the 38318 type diff node to the var_diff node. 38319 (pointer_diff::underlying_type_diff) 38320 (reference_diff::underlying_type_diff) 38321 (qualified_type_diff::underlying_type_diff, enum_diff::enum_diff) 38322 (base_diff::get_underlying_class_diff) 38323 (typedef_diff::underlying_type_diff): Do not set the parent node 38324 here. 38325 ({pointer_diff, reference_diff, qualified_type, enum_diff, 38326 class_diff, base_diff, function_decl_diff, 38327 typedef_diff}::traverse): Handle category propagation here. 38328 * tests/data/test-diff-filter/test4-v0.o: New input binary. 38329 * tests/data/test-diff-filter/test4-v0.cc: Source code for the 38330 input binary above. 38331 * tests/data/test-diff-filter/test4-v1.o: New input binary. 38332 * tests/data/test-diff-filter/test4-v1.cc: Source code for the 38333 input binary above. 38334 * tests/data/test-diff-filter/test4-report.txt: Reference diff 38335 report for the input binaries above. 38336 * tests/test-diff-filter.cc:: Run bidiff --no-harmless on the 38337 binaries above. 38338 383392014-04-04 Dodji Seketeli <dodji@redhat.com> 38340 38341 Fix off-by one comparison bug in comparing function parameters 38342 * src/abg-comparison.cc 38343 (function_decl_diff::ensure_lookup_tables_populated): Function 38344 parameters that are diff'ed start at the first non-implicit 38345 parameter, not at the first parameter. Oops. 38346 * tests/data/test-diff-dwarf/test3-v0.o: New test input binary. 38347 * tests/data/test-diff-dwarf/test3-v0.cc: Source code for the 38348 binary above. 38349 * tests/data/test-diff-dwarf/test3-v1.o: New test input binary. 38350 * tests/data/test-diff-dwarf/test3-v1.cc: Source code for the 38351 binary above. 38352 * tests/data/test-diff-dwarf/test3-report.txt: Reference report 38353 for the diff of the new test inputs. 38354 * tests/test-diff-dwarf.cc: Use the test inputs above to run new 38355 tests. 38356 383572014-04-03 Dodji Seketeli <dodji@redhat.com> 38358 38359 Do not forget parm sub-type changes as opposed to parm changes 38360 * src/abg-comparison.cc 38361 (function_decl_diff::ensure_lookup_tables_populated): A parm 38362 change is valid only when the added parm has a different name from 38363 the removed parm. Both have the same index, of course. In that 38364 case, do not try to remove the corresponding parm sub-type change. 38365 * tests/data/test-bidiff/test-enum0-report.txt: Adjust. 38366 * tests/data/test-bidiff/test-enum1-report.txt: Adjust. 38367 * tests/data/test-bidiff/test-qual-type0-report.txt: Adjust. 38368 * tests/data/test-bidiff/test-struct0-report.txt: Adjust. 38369 * tests/data/test-diff-dwarf/test0-report.txt: Adjust. 38370 * tests/data/test-diff-dwarf/test1-report.txt: Adjust. 38371 * tests/data/test-diff-filter/test0-report.txt: Adjust. 38372 * tests/data/test-diff-filter/test01-report.txt: Adjust. 38373 * tests/data/test-diff-filter/test1-report.txt: Adjust. 38374 * tests/data/test-diff-filter/test2-report.txt: Adjust. 38375 * tests/data/test-diff-filter/test3-report.txt: Adjust. 38376 383772014-04-03 Dodji Seketeli <dodji@redhat.com> 38378 38379 Remove useless white space 38380 * src/abg-ir.cc (look_through_decl_only_class): Remove useless 38381 white space. 38382 383832014-04-02 Dodji Seketeli <dodji@redhat.com> 38384 38385 Use mangled name for decl comparison when it's present 38386 * src/abg-ir.cc (decl_base::operator==(const decl_base& other) 38387 const): Use the mangled name of the decl in priority. 38388 * src/abg-hash.cc (struct decl_base::hash::operator()): Likewise. 38389 * src/abg-comparison.cc (function_decl_diff::report): Do not 38390 report a function name change if it doesn't involve a mangled name 38391 change. This might change when we start dealing with templates. 38392 383932014-04-02 Dodji Seketeli <dodji@redhat.com> 38394 38395 A change involving a decl-only class is not SIZE_OR_OFFSET_CHANGE_CATEGORY 38396 * src/abg-comp-filter.cc (harmful_filter::visit): If a size change 38397 involves a decl-only class, it certainly shouldn't trigger putting 38398 the sub-tree into the SIZE_OR_OFFSET_CHANGE_CATEGORY category. 38399 384002014-04-02 Dodji Seketeli <dodji@redhat.com> 38401 38402 Fix heuristics to detect function static-ness for DWARF < 3 38403 * src/abg-dwarf-reader.cc (build_class_type_and_add_to_ir): Make 38404 the heuristics work for functions with no parameters. 38405 384062014-04-02 Dodji Seketeli <dodji@redhat.com> 38407 38408 Avoid emitting local filtered-out changes in more spots 38409 * src/abg-comparison.cc (maybe_report_diff_for_member): Take the 38410 diff_context in parameter. Use that to check if local changes of 38411 category ACCESS_CHANGE_CATEGORY are filtered-out and do not report 38412 the change in that case. 38413 ({var_diff, enum_diff, class_diff, base_diff, 38414 function_decl_diff}::report): Adjust. 38415 384162014-04-02 Dodji Seketeli <dodji@redhat.com> 38417 38418 Add a COMPATIBLE_TYPE_CHANGE_CATEGORY to bidiff --no-harmless 38419 * include/abg-comparison.h 38420 (diff_category::COMPATIBLE_TYPE_CHANGE_CATEGORY): New enumerator. 38421 (operator|=(diff_category&, diff_category)): New declaration. 38422 * include/abg-fwd.h (is_typedef, strip_typedef) 38423 (types_are_compatible): New declarations. 38424 * include/abg-ir.h (operator==(const decl_base_sptr, const 38425 decl_base_sptr)): Added the consts here. 38426 (operator==(const type_base_sptr, const type_base_sptr)): New 38427 declaration. 38428 * src/abg-comp-filter.cc (is_compatible_change): New static 38429 function. 38430 (harmless_filter::visit): Detect compatible changes and add the 38431 sub-tree into the new COMPATIBLE_TYPE_CHANGE_CATEGORY if 38432 applicable. Cleanup the logic. 38433 * src/abg-comparison.cc (operator|=(diff_category&, 38434 diff_category)): Define new function. 38435 (operator==(const decl_base_sptr l, const decl_base_sptr r)): Add 38436 consts. 38437 (operator==(const type_base_sptr l, const type_base_sptr r)): 38438 Define new operator. 38439 (is_typedef, strip_typedef, types_are_compatible): New function 38440 definitions. 38441 * tests/data/test-diff-filter/test3-report.txt: New test report 38442 reference. 38443 * tests/data/test-diff-filter/test3-v0.cc: Source code for new 38444 test input. 38445 * tests/data/test-diff-filter/test3-v0.o: New test input. 38446 * tests/data/test-diff-filter/test3-v1.cc: Source code for new 38447 test input. 38448 * tests/data/test-diff-filter/test3-v1.o: New test input. 38449 * tests/test-diff-filter.cc: Adjust to consume the new tests 38450 inputs above. 38451 * tools/bidiff.cc: Add the new COMPATIBLE_TYPE_CHANGE_CATEGORY 38452 into the --harmless group. 38453 384542014-04-01 Dodji Seketeli <dodji@redhat.com> 38455 38456 Don't emit local filtered-out changes 38457 * src/abg-comparison.cc (represent): For var_decl, do not emit 38458 filtered-out local size/offset/access changes. 38459 (report_name_size_and_alignment_changes): Take the diff context. 38460 Do not report filtered-out local size/offset changes. 38461 ({var_diff, enum_diff, class_diff, type_decl_diff}::report): 38462 Adjust. 38463 * test0-report.txt: Adjust. 38464 * test01-report.txt: New reference report for the same inputs 38465 test0-v{1,0}.o, but called without the --no-harmless command line. 38466 * tests/data/test-diff-filter/test2-v0.cc: Source code for new test input. 38467 * tests/data/test-diff-filter/test2-v1.cc: Likewise. 38468 * tests/data/test-diff-filter/test2-v0.o: New test input. 38469 * tests/data/test-diff-filter/test2-v1.o: Likewise. 38470 * tests/data/test-diff-filter/test2-report.txt: Reference report 38471 for new test input. 38472 * tests/test-diff-filter.cc: Consume the test inputs above. 38473 * tests/Makefile.am: Add the new test inputs above to the 38474 distribution. 38475 384762014-04-01 Dodji Seketeli <dodji@redhat.com> 38477 38478 Compact & intuitive reporting for changed function parameters 38479 * include/abg-comparison.h (unsigned_changed_parm_map) 38480 (unsigned_parm_map): New typedefs. 38481 * src/abg-comparison.cc 38482 (function_decl_diff::subtype_changed_parms): Renamed this from 38483 changed_parms. 38484 (function_decl_diff::priv::subtype_changed_parms_}): Renamed this 38485 from changed_parms_; 38486 (function_decl_diff::priv::{deleted_parms_by_id_, 38487 added_parms_by_id_, changed_parms_by_id_}): New members. 38488 (function_decl_diff::ensure_lookup_tables_populated): Update the 38489 new priv::changed_parms_by_id_ member to contain the parameters 38490 that got changed, as opposed to the subtype_changed_parms_ member 38491 that contain parameters that got a sub-type change. The other 38492 priv::*_by_id_ members are helpers for this. Update them too. 38493 (function_decl_diff::subtype_changed_parms): Renamed this from 38494 ::changed_parms. 38495 (function_decl_diff::report): Report separately about parameters 38496 having a sub-type change, and parameters that got changed. Note 38497 that in both cases, the change is necessarily to a compatible 38498 type. 38499 * data/test-diff-dwarf/test2-v0.cc: New test file. 38500 * data/test-diff-dwarf/test2-v0.o: Likewise. 38501 * data/test-diff-dwarf/test2-v1.cc: Likewise. 38502 * data/test-diff-dwarf/test2-v1.o: Likewise. 38503 * data/test-diff-dwarf/test2-report.txt: Likewise. 38504 * tests/Makefile.am: Add the new test files above to the 38505 distribution. 38506 * tests/test-diff-dwarf.cc: Consume the input files above to 38507 actually perform a regression test. 38508 385092014-03-31 Dodji Seketeli <dodji@redhat.com> 38510 38511 Fix thinko class_diff traversing. 38512 * src/abg-comparison.cc (class_diff::traverse): Fix thinking in 38513 introduced by commit "6709478 Fix infinite loop when traversing 38514 classes and their members" 38515 * tests/data/test-diff-filter/test1-v{0,1}.o: New test binary input files. 38516 * tests/data/test-diff-filter/test1-v{0,1}.cc: Source code for the 38517 above. 38518 * tests/data/test-diff-filter/test1-report.txt: Reference report 38519 for the diffing of the two binary input files above. 38520 * tests/test-diff-filter.cc: Make the test run on the new input above. 38521 * tests/Makefile.am: Add the new material to the distribution. 38522 385232014-03-31 Dodji Seketeli <dodji@redhat.com> 38524 38525 Add forgotten test output adjustment 38526 * tests/data/test-diff-filter/test0-report.txt: Adjust for the 38527 commit "a8d5284 Fix diff report indentation issue" 38528 * tests/data/test-diff-dwarf/test{0,1}-report.txt: Likewise. 38529 385302014-03-31 Dodji Seketeli <dodji@redhat.com> 38531 38532 Add forgotten source file for binary test input 38533 * tests/data/test-diff-dwarf/test1-v0.cc: New file. 38534 * tests/data/test-diff-dwarf/test1-v1.cc: Likewise. 38535 385362014-03-31 Dodji Seketeli <dodji@redhat.com> 38537 38538 Fix diff report indentation issue 38539 * abg-comparison.cc (corpus_diff::report): Indent the details of 38540 function changes. 38541 385422014-03-31 Dodji Seketeli <dodji@redhat.com> 38543 38544 Fix infinite loop when traversing classes and their members 38545 * src/abg-comparison.cc (TRY_{PRE,POST}_VISIT_CLASS_DIFF): New 38546 macros. 38547 (class_diff::priv::traversing_): New flag. 38548 (class_diff::priv::priv): New constructor to initialize the new 38549 flag above. 38550 (class_diff::traversing): Do not traverse the diff again if it's 38551 being traversed already. 38552 385532014-03-31 Dodji Seketeli <dodji@redhat.com> 38554 38555 Fix access_changed and data_member_offset_changed predicates 38556 * src/abg-comp-filter.cc (access_changed) 38557 (data_member_offset_changed): Fix detection of membership. 38558 385592014-03-29 Dodji Seketeli <dodji@redhat.com> 38560 38561 Take filtering in account in diff stats & better categorizing 38562 * include/abg-comparison.h 38563 (diff_category::ACCESS_CHANGE_CATEGORY): Renamed 38564 ACCESS_CHANGED_CATEGORY into this. 38565 (diff_category::SIZE_OR_OFFSET_CHANGE_CATEGORY): Renamed 38566 SIZE_CHANGED_CATEGORY into this. Changed its semantics to 38567 incorporate offset changes as well. 38568 * src/abg-comparison.cc (struct noop_deleter): Move this up. 38569 (represent): Do not report filtered out data members. 38570 (report_mem_header): Add a new num_filtered parameter to take 38571 filtered-out members in account in members report headers. 38572 Adjust. 38573 (class_diff::priv::{count_filtered_bases, 38574 count_filtered_data_members, count_filtered_member_functions}): 38575 New member functions. When a member is filtered, do not report 38576 it all. 38577 ({enum_diff, class_diff}::report): Adjust. Take filtered members 38578 into account in headers. 38579 (corpus_diff::priv::apply_filters_and_compute_diff_stats): New 38580 member function. 38581 (corpus_diff::priv::emit_diff_stats): Renamed 38582 emit_corpus_diff_stats into this. Change it to take the stats in 38583 parameter. 38584 (corpus_diff::report): Adjust to re-use the above. Filter 38585 varibles as well. Take the filtered functions & variables in 38586 account in the stats. Do not report filtered-out functions & 38587 variables at all. 38588 * src/abg-comp-filter.cc (type_size_changed, access_changed) 38589 (data_member_offset_changed): New predicates. 38590 ({harmless, harmful}_filter::visit): Adjust to use the new 38591 predicates above. Update the harmful variant for the new 38592 SIZE_OR_OFFSET_CHANGE_CATEGORY category. 38593 * tools/bidiff.cc (set_diff_context_from_opts): Adjust for the 38594 categories name changes. 38595 * tests/data/test-diff-filter/test0-report.txt: New test input. 38596 * tests/data/test-diff-filter/test0-v0.cc: Likewise. 38597 * tests/data/test-diff-filter/test0-v0.o: Likewise. 38598 * tests/data/test-diff-filter/test0-v1.cc: Likewise. 38599 * tests/data/test-diff-filter/test0-v1.o: Likewise. 38600 * tests/test-diff-filter.cc: New test harness. 38601 * tests/Makefile.am: Add the new test files above to the 38602 distribution. 38603 386042014-03-29 Dodji Seketeli <dodji@redhat.com> 38605 38606 Fix var_diff length determination 38607 * src/abg-comparison.cc (var_diff::length): Just compare the two 38608 diff subjects. 38609 386102014-03-29 Dodji Seketeli <dodji@redhat.com> 38611 38612 Fix typos in the test-diff-dwarf.cc source code 38613 * tests/test-diff-dwarf.cc: Fix various typos. 38614 386152014-03-27 Dodji Seketeli <dodji@redhat.com> 38616 38617 Initial implementation of diff tree node filtering 38618 * include/abg-comp-filter.h: New file. 38619 * include/Makefile.am: Add the new include/abg-comp-filter.h to 38620 the source distribution. 38621 * include/abg-comparison.h (enum visiting_kind, diff_category): New enums. 38622 (operator|): Declare new operator declaration for the new 38623 visiting_kind enum. 38624 (operator{|,^,&,~}): Declare new operator decl for the new 38625 diff_category enum. 38626 (diff_context::{get_allowed_category, set_allowed_category, 38627 switch_categories_on, switch_categories_off, diff_filters, 38628 add_diff_filter, maybe_apply_filters}): Declare new member functions. 38629 (diff::{parent_, category_}): New members. 38630 (diff::diff): Adjust. 38631 (diff::{get_parent, set_parent, get_category, add_to_category, 38632 is_filtered_out, to_be_reported}): New members. 38633 (diff_node_visitor::{get_visiting_kind, set_visiting_kind}): New 38634 members. 38635 (diff_node_visitor::visit): Add a new flag to saying if the 38636 visitor is being called in post or pre children traversing mode. 38637 * src/abg-comparison.cc (operator|): Declare new operator 38638 declaration for the new visiting_kind enum. 38639 (operator{|,^,&,~}): Declare new operator decl for the new 38640 diff_category enum. 38641 (diff_context::priv::{allowed_category_, filters_}): New members. 38642 (diff_context::diff_context): Add all known filters. 38643 (diff_context::{get_allowed_category, set_allowed_category, 38644 switch_categories_on, switch_categories_off, diff_filters, 38645 add_diff_filter, maybe_apply_filters}): Define new member 38646 functions. 38647 (diff::{is_filtered_out, to_be_reported}): Define new members. 38648 (*::report): Use the new diff::to_be_reported function. 38649 (*::traverse): Adjust for pre/post visiting. 38650 (var_diff::var_diff): Chain the type diff node to its parent. 38651 ({pointer_diff, reference_diff, qualified_type_diff, 38652 typedef_diff}::underlying_type_diff): Chain the underlying type 38653 diff node to its parent. 38654 (enum_diff::enum_diff): Likewise. 38655 (base_diff::underlying_class_diff): Likewise. 38656 ({class_diff, corpus_diff}::report): Do not report changed 38657 (member) functions that have been filtered out. Rather report 38658 that they have been filtered out. 38659 ({function_decl_diff, class_diff}::traverse): Chain underlying 38660 type diff nodes to their parent. 38661 (diff_node_visitor::visit): Add a new flag to saying if the 38662 visitor is being called in post or pre children traversing mode. 38663 Make sure to call the default diff::visit overload. 38664 * src/abg-comp-filter.cc: New file. 38665 * src/Makefile.am: Add the new abg-comp-filter.cc to the source 38666 distribution. 38667 * tools/bidiff.cc (options::show_harm{ful,less}_changes): New 38668 members. 38669 (display_usage): Add usage strings for --no-harmless and 38670 --no-harmful options. 38671 (parse_command_line): Parse --no-harmless and --no-harmful command 38672 line options. 38673 (set_diff_context_from_opts): Populate the diff context 38674 accordingly. 38675 386762014-03-26 Dodji Seketeli <dodji@redhat.com> 38677 38678 Add missing headers double inclusion guards 38679 * include/abg-comparison.h: Add a missing double inclusion guard. 38680 * include/abg-diff-utils.h: Likewise. 38681 386822014-03-26 Dodji Seketeli <dodji@redhat.com> 38683 38684 Add a missing apostrophe to access reporting 38685 * src/abg-comparison.cc (represent): For member var_decls, add a 38686 missing apostrophe after the access. 38687 * tests/data/test-diff-dwarf/test0-report.txt: Update test report. 38688 386892014-03-21 Dodji Seketeli <dodji@redhat.com> 38690 38691 Fix diff emptiness detection for function_decl_diff nodes 38692 * src/abg-comparison.cc (function_decl_diff::length): Just compare 38693 the two functions here, damit. 38694 * tests/data/test-diff-dwarf/test0-report.txt: Adjust. 38695 386962014-03-21 Dodji Seketeli <dodji@redhat.com> 38697 38698 Fixlets in the bidiff regression testing harness 38699 * tests/test-bidiff.cc (main): Fix a typo. Fix the path to the 38700 output path. 38701 387022014-03-21 Dodji Seketeli <dodji@redhat.com> 38703 38704 Initial regression test for dwarf diffing 38705 * tests/test-diff-dwarf.cc: New dwarf diffing regression test 38706 harness. 38707 * tests/data/test-diff-dwarf/test0-report.txt: New test input. 38708 * tests/data/test-diff-dwarf/test0-v0.cc: Likewise. 38709 * tests/data/test-diff-dwarf/test0-v0.o: Likewise. 38710 * tests/data/test-diff-dwarf/test0-v1.cc: Likewise. 38711 * tests/data/test-diff-dwarf/test0-v1.o: Likewise. 38712 * tests/Makefile.am: Add the new test inputs from 38713 tests/test-diff-dwarf.cc and tests/data/test-diff-dwarf/* to 38714 the build system. 38715 387162014-03-21 Dodji Seketeli <dodji@redhat.com> 38717 38718 Rename test-walker.cc into test-ir-walker.cc 38719 * tests/test-ir-walker.cc: Renamed test-walker.cc into this. 38720 * tests/Makefile.am: Adjust. The generated binary is now testirwalker. 38721 387222014-03-21 Dodji Seketeli <dodji@redhat.com> 38723 38724 Initial diff tree traversal infrastructure 38725 * include/abg-comparison.h (struct diff_traversable_base, struct 38726 diff_node_visitor): New type. 38727 (class diff): Extends the new diff_traversable_base. 38728 ({diff, distinct_diff, var_diff, pointer_diff, reference_diff, 38729 qualified_type_diff, enum_diff, class_diff, base_diff, scope_diff, 38730 function_decl_diff, type_decl_diff, typedef_diff, 38731 translation_unit_diff, corpus_diff}::traverse): New methods. 38732 (function_decl_diff::return_type_diff): New accessor. Renamed 38733 return_diff into this. 38734 (translation_unit_diff::{first, second}_translation_unit): New 38735 accessors. 38736 (corpus_diff::{deleted, added, changed}_functions): New accessors. 38737 * src/abg-comparison.cc ({distinct_diff, var_diff, 38738 pointer_diff, reference_diff, qualified_type_diff, enum_diff, 38739 class_diff, base_diff, scope_diff, function_decl_diff, 38740 type_decl_diff, typedef_diff, translation_unit_diff, 38741 corpus_diff}::traverse): New function implementations. 38742 (maybe_report_diff_for_member): Renamed 38743 maybe_report_diff_for_class_members into this. 38744 (var_diff::report): Adjust. 38745 (struct translation_unit_diff::priv): New private type. 38746 (translation_unit_diff::translation_unit_diff): Instantiate the 38747 new priv_ member. 38748 (translation_unit_diff::{first,second}_translation_unit): New 38749 accessors. 38750 (corpus_diff::{deleted, added, changed}_functions): New function 38751 implementations. 38752 (diff_node_visitor::visit): New function implementations. 38753 387542014-03-19 Dodji Seketeli <dodji@redhat.com> 38755 38756 Make tree walking preemptive 38757 * include/abg-traverse.h (traversable_base::traversable): Change 38758 the signature of this to return a boolean. 38759 * include/abg-ir.h (ir_traversable_base::traverse): Change the 38760 signature of this to return a boolean. 38761 (*::traverse): Adjust. 38762 (ir_node_visitor::visit): Change the signature of this to return a 38763 boolean. 38764 * src/abg-corpus.cc (symtab_build_visitor_type::visit): Adjust. 38765 * src/abg-ir.cc (::traverse): Adjust. 38766 * tests/test-walker.cc (name_printing_visitor::visit): Adjust. 38767 387682014-03-26 Jonathan Wakely <jwakely@redhat.com> 38769 38770 Fix comment typos 38771 * include/abg-diff-utils.h (compute_diff): Fix typo in apidoc 38772 comment. 38773 387742014-03-24 Dodji Seketeli <dodji@redhat.com> 38775 38776 Follow DW_AT_abstract_origin and add missing mangled name 38777 * src/abg-dwarf-reader.cc (build_function_decl): Change signature 38778 to take function_decl to which one shall add properties that got 38779 added by subsequent DIEs later. 38780 (build_class_type_and_add_to_ir): Adjust. 38781 (build_function_decl): Allow adding new properties to an existing 38782 function_decl. Add the mangled name in particular. 38783 * tests/data/test-read-dwarf/test1.abi: Update test. 38784 387852014-03-20 Dodji Seketeli <dodji@redhat.com> 38786 38787 Fix destructor naming. 38788 * src/abg-ir.cc (function_decl::get_pretty_representation): In 38789 DWARF at least, the destructor function name already contains the 38790 '~'. No need to add it. 38791 387922014-03-20 Dodji Seketeli <dodji@redhat.com> 38793 38794 Better static function determination heuristic 38795 * src/abg-dwarf-reader.cc (build_class_type_and_add_to_ir): Better 38796 heuristic. 38797 387982014-03-20 Dodji Seketeli <dodji@redhat.com> 38799 38800 Dynamically wire class_decl::base_spec hashing 38801 * include/abg-ir.h (decl_base::get_hash): Make this virtual. 38802 (class_decl::base_spec::get_hash): Declare a new virtual overload. 38803 * src/abg-ir.cc (class_decl::base_spec::get_hash): Define. 38804 388052014-03-20 Dodji Seketeli <dodji@redhat.com> 38806 38807 Slight indentation fix in the diff report 38808 * src/abg-comparison.cc (class_diff::report): Indentation fix for 38809 member function changes report. 38810 388112014-03-20 Dodji Seketeli <dodji@redhat.com> 38812 38813 Get rid of class_decl::member_function 38814 * include/abg-fwd.h (is_member_function) 38815 (get_member_function_is_{ctor,dtor,const}) 38816 (get_member_function_vtable_offset): New function declarations. 38817 * include/abg-ir.h (class_decl::member_function): Remove. 38818 (class_decl::member_functions): Adjust. This is now just a vector 38819 of method_decl_sptr. 38820 (class_decl::add_member_function): Remove the overload taking 38821 class_decl::member_function. Adjust the other overload to take a 38822 method_decl_sptr. 38823 (class mem_fn_context_rel): New class. 38824 (class_decl::method_decl::set_scope): New virtual overload. 38825 (class_decl::member_function): Remove. 38826 (operator==): Remove the overload taking a 38827 class_decl::member_function. 38828 (class_decl::member_function::hash): Remove. 38829 (ir_node_visitor::visit): Remove the overload taking a 38830 class_decl::member_function. 38831 * include/abg-comparison.h (changed_member_function_sptr) 38832 (string_member_function_sptr_map): Adjust. 38833 * src/abg-comparison.cc (represent): Adjust the overload taking a 38834 class_decl::member_function to take a class_decl::method_decl. 38835 (class_diff::{report, ensure_lookup_tables_populated}): Adjust. 38836 * src/abg-corpus.cc (symtab_build_visitor_type::visit): Remove the 38837 overload taking a class_decl::member_function. 38838 * src/abg-dwarf-reader.cc (build_class_type_and_add_to_ir): 38839 Adjust. 38840 * src/abg-hash.cc (decl_base::hash::operator()): Use the fully 38841 qualified name of the decl in the hash, to increase the likelihood 38842 of avoiding hash collisions. 38843 (method_type::hash::operator()): Likewise. 38844 (function_decl::hash::operator()): Take member functions in 38845 account. 38846 (class_decl::member_function::hash::operator()): Remove. 38847 (class_decl::hash::operator()): Adjust. 38848 (type_base::dynamic_hash::operator()): Adjust. 38849 * src/abg-ir.cc (is_member_function) 38850 (get_member_function_is_{ctor,dtor,const}) 38851 (get_member_function_vtable_offset): New function definitions. 38852 (function_decl::get_pretty_representation): Adjust. 38853 (function_decl::operator): Take member functions in account here. 38854 (class_decl::insert_member_decl): Adjust. 38855 (mem_fn_context_rel::~mem_fn_context_rel): New definition. 38856 (class_decl::member_function::*): Remove. 38857 (class_decl::method_decl::set_scope): New definition. 38858 (class_decl::get_num_virtual_functions): Adjust. 38859 (class_decl::add_member_function): Remove overload taking a 38860 class_decl::member_function. Define a new overload taking a 38861 class_decl::method_decl. 38862 (ir_node_visitor::visit): Remove the overload taking a 38863 class_decl::member_function. 38864 * src/abg-reader.cc (build_class_decl): Adjust. 38865 * src/abg-writer.cc (write_voffset, write_class_decl): Adjust. 38866 388672014-03-19 Dodji Seketeli <dodji@redhat.com> 38868 38869 Get rid of class_decl::data_member 38870 * include/abg-fwd.h (has_scope): Delete the overloads for 38871 type_base. 38872 (get_member_is_static): Add an overload for decl_base*. 38873 ({is,get,set}_data_member,{get_,set}_data_member_is_laid_out) 38874 ({get,set}_data_member_offset): New access declarations. 38875 * include/abg-ir.h (class context_rel): Move up. 38876 (decl_base::set_context_rel): New definition. 38877 (class dm_context_rel): New type. 38878 (decl_base::hash_as_member): Remove. 38879 (var_decl::set_scope): Declare new virtual member. 38880 (class_decl::data_member): Remove. 38881 (ir_node_visitor::visit): Remove the overload for 38882 class_decl::data_member. 38883 (represent_data_member): Remove the represent overload for 38884 class_decl::data_member into this. Make it take a var_decl. 38885 (represent): Change the overload that takes two 38886 class_decl::data_member take two var_decl. And adjust it. 38887 (class_diff::report): Adjust. 38888 * src/abg-corpus.cc (symtab_build_visitor_type::visit): Remove the 38889 overload that takes a class_decl::data_member*. Adjust the 38890 overload that takes a var_decl to recognize (static) data members. 38891 * src/abg-dwarf-reader.cc (build_translation_unit_and_add_to_ir) 38892 (build_class_type_and_add_to_ir, build_ir_node_from_die): 38893 Adjust. 38894 * src/abg-hash.cc (var_decl::hash::operator()): Adjust. 38895 (class_decl::data_member::hash::operator()): Remove. 38896 (decl_base::hash::operator()): Take the context relationship in 38897 account here. 38898 (decl_base::hash_as_member::operator()): Remove. 38899 ({enum_type_decl,typedef_decl}::hash::operator()): Adjust. 38900 (class_decl::member_function::hash::operator()): Adjust. 38901 (type_base::dynamic_hash::operator()): Adjust. 38902 * src/abg-ir.cc (dm_context_rel::~dm_context_rel): New definition. 38903 (has_scope): Remove overload for type_base. 38904 (get_member_is_static): New overload for decl_base*. 38905 (is_data_member): New function definition. 38906 ({get,set}_data_member_{offset,is_laid_out}): Define new 38907 accessors. 38908 (var_decl::set_scope): Define new member function. Make this set 38909 a dm_context_rel as the context relationship. 38910 (var_decl::operator==): Adjust to take in account the new data 38911 member relationship. 38912 (class_decl::class_decl): Adjust. 38913 (class_decl::insert_member_decl): Adjust. 38914 (class_decl::add_data_member): Remove the overload for 38915 class_decl::data_member. 38916 (class_decl::add_data_member): Adjust the overload for var_decl. 38917 (operator==): Remove overload for class_decl::data_member*. 38918 (class_decl::data_member::operator==): Likewise. 38919 (ir_node_visitor::visit): Remove overload for 38920 class_decl::data_member. 38921 * src/abg-writer.cc (write_layout_offset, write_class_decl): 38922 Adjust. 38923 * tests/data/test-read-write/test20.xml: Adjust. 38924 389252014-03-18 Dodji Seketeli <dodji@redhat.com> 38926 38927 Better base class diff reporting 38928 * include/abg-comparison.h (class base_diff): New. 38929 * include/abg-ir.h (function_decl::get_first_non_implicit_parm): 38930 New member function. 38931 (function_type::get_first_non_implicit_parm): Likewise. 38932 * src/abg-comparison.cc (base_has_changed): Change parm to take 38933 class_decl::base_spec_sptr. 38934 (class_diff::ensure_lookup_tables_populated): Compare the base 38935 specs not just the base classes. 38936 (class_diff::report): Adjust. Report sub-type changes in the 38937 member functions. 38938 (base_diff::*): Define member functions. 38939 (compute_diff): Define an overload for base_diff_sptr. 38940 * src/abg-hash.cc ({function_type, 38941 method_type}::hash::operator()): Do not hash the implicit parm of 38942 member functions. 38943 (class_decl::hash::operator()): Do not hash member types. 38944 * src/abg-ir.cc (decl_base::decl_base): Initialize the 38945 hashing_started_ member that got moved here from class_decl. 38946 (decl_base::get_hash): Do not set the hash if it's being set b/c 38947 we are in a class_decl. 38948 (decl_base::operator==) Do not compare hashes for now. Two decls 38949 can have different hashes and compare equal; think about an 38950 incomplete type foo, that compares equal with a complete foo. 38951 Their hashes will be different though. So for now, just avoid 38952 comparing these. 38953 (compare_function_types): Avoid comparing the implicit parameter 38954 for member functions. 38955 ({function, method}_type::get_first_non_implicit_parm): New 38956 definition. 38957 * tests/data/test-read-write/test20.xml: Update. 38958 389592014-03-13 Dodji Seketeli <dodji@redhat.com> 38960 38961 Do not report change in typedef underlying type is there is none 38962 * src/abg-comparison.cc (typedef_diff::report): Do not forget to 38963 check the length of the diff of the underlying type before sending 38964 its diff report down the wire. 38965 389662014-03-13 Dodji Seketeli <dodji@redhat.com> 38967 38968 Avoid hashing a access & static-ness of member types twice 38969 * src/abg-hash.cc (class_decl::hash::operator()): Do hash the 38970 'member' part of the member types here, it has been hashed 38971 already. 38972 389732014-03-13 Dodji Seketeli <dodji@redhat.com> 38974 38975 Set class {size,loc} when adding members to a decl-only class 38976 * src/abg-dwarf-reader.cc (build_class_type_and_add_to_ir): Do not 38977 forget to set class size and location when adding members to a 38978 declaration-only class, turning it into a definition class. 38979 389802014-03-13 Dodji Seketeli <dodji@redhat.com> 38981 38982 Use the same representation for member and non-member types 38983 * include/abg-fwd.h (is_at_class_scope): Add new oveloads. 38984 (as_non_member_type, as_non_member_class_decl): Remove. 38985 (has_scope, is_member_decl, is_member_type): New function 38986 declarations. (get_member_is_static, set_member_is_static): 38987 Likewise. * include/abg-ir.h (enum access_specifier): Move to 38988 the abigail:: namespace, from ... 38989 (class_decl::access_specifier): ... here. (class 38990 context_rel): New type. (decl_base::hash_as_member): New 38991 hasher. (decl_base::context_): Change the type of this to 38992 context_rel_sptr. (decl_base::get_context_rel): New protected 38993 getter. (decl_base::get_scope): Move this out-of-line. 38994 (class_decl::member_type): Remove. 38995 (class_decl::member_types): Adjust this typedef. 38996 (class_decl::{insert,add}_member_type): Make these take a 38997 type_base_sptr now. (class_decl::add_member_type): Change the 38998 overload that returned a member_type to return a 38999 type_base_sptr. (get_member_access_specifier, 39000 set_member_access_specifier): New function declarations. * 39001 include/abg-comparison.h (class member_type_diff): Remove. 39002 (compute_diff): Remove the overload for member_type_diff. * 39003 src/abg-comparison.cc (compute_diff_for_types): Adjust for the 39004 removal of class_decl::member_type. 39005 (maybe_report_diff_for_class_members): New static function. 39006 (report_name_size_and_alignment_changes): Do not report a name 39007 change just because of a struct -> class change. ({var_diff, 39008 enum_diff, function_decl_diff}::report): Use the new 39009 maybe_report_diff_for_class_members. (class_diff::report): 39010 Adjust for the removal of class_decl::member_type. Use the 39011 new maybe_report_diff_for_class_members. (class member_diff): 39012 Remove. * src/abg-dwarf-reader.cc (die_access_specifier) 39013 (get_scope_for_die, build_translation_unit_and_add_to_ir) 39014 (build_class_type_and_add_to_ir, build_function_decl) 39015 (build_ir_node_from_die): Adjust. * abg-hash.cc (struct 39016 decl_base::hash_as_member): Define. ({scope_type_decl, 39017 enum_type_decl, typedef_decl}::hash::operator()): Use the 39018 decl_base::hash_as_member. 39019 * src/abg-ir.cc (decl_base::decl_base): Adjust. 39020 (decl_base::get_scope): New out-of-line getter. 39021 (decl_base::{operator==, set_scope): Adjust. 39022 (has_scope, is_member_decl, is_member_type) 39023 (get_member_access_specifier, set_member_access_specifier) 39024 (get_member_is_static, set_member_is_static, is_at_class_scope): 39025 New function definitions. 39026 (as_non_member_type, as_non_member_class_decl): Remove. 39027 (get_node_name): Adjust. 39028 (class_decl::{class_decl, set_earlier_declaration, 39029 insert_member_decl, insert_member_type, add_member_type): 39030 Likewise. 39031 (class_decl::member_type::*) Remove. 39032 * src/abg-reader.cc (read_access, build_qualified_type_decl) 39033 (build_reference_type_def, build_typedef_decl) 39034 (build_class_decl): Adjust. 39035 * src/abg-writer.cc (write_access, write_member_type) 39036 (write_class_decl): Likewise. 39037 390382014-03-12 Dodji Seketeli <dodji@redhat.com> 39039 39040 Avoid more static_casts in the (comparison) code 39041 * src/abg-ir.cc (class_decl::insert_member_type, operator==): 39042 Remove static_casts. 39043 (class_decl::member_type::operator==): Likewise. 39044 (class_decl::member_class_template::operator==): Likewise. 39045 390462014-03-12 Dodji Seketeli <dodji@redhat.com> 39047 39048 Allow adding members to decl-only classes making them defined classes 39049 * include/abg-fwd.h (lookup_type_in_scope) 39050 (lookup_var_decl_in_scope): New declarations. 39051 * include/abg-ir.h (class_decl::get_is_declaration_only): Rename 39052 is_declaration_only on this. 39053 (class_decl::set_is_declaration_only): 39054 * src/abg-comparison.cc (try_to_diff<class_decl>) 39055 (class_diff::ensure_lookup_tables_populated) 39056 (scope_diff::ensure_lookup_tables_populated): Update for the 39057 get_is_declaration_only renaming. 39058 * src/abg-dwarf-reader.cc (get_scope_for_die): Likewize. 39059 (build_class_type_and_add_to_ir): Make sure that a member type or 39060 data member is not already present in the class before adding it. 39061 Also, if a decl-only class gets a data member, it's not a 39062 decl-only class anymore. 39063 * src/abg-hash.cc (class_decl::hash::operator()): Update for the 39064 get_is_declaration_only renaming. 39065 * src/abg-ir.cc (scope_decl::find_iterator_for_member) 39066 (look_through_decl_only_class): Likewise. 39067 (lookup_type_in_scope, lookup_var_decl_in_scope, get_node_name) 39068 (convert_node_to_decl, lookup_node_in_scope) 39069 (lookup_type_in_scope): New definitions. 39070 (class_decl::{set_definition_of_declaration, 39071 set_earlier_declaration, operator==}): Update for the 39072 get_is_declaration_only renaming. 39073 * src/abg-reader.cc (build_class_decl): Likewise. 39074 * src/abg-writer.cc (write_class_is_declaration_only): Likewise. 39075 390762014-03-12 Jonathan Wakely <jwakely@redhat.com> 39077 39078 Fixed typos in abg-diff-utils.h 39079 * include/abg-diff-utils.h (compute_diff): Fix typos in the API 39080 doc. 39081 390822014-03-11 Dodji Seketeli <dodji@redhat.com> 39083 39084 Initialize a variable 39085 * tools/bilint.cc (main): Initialize the 'r' variable. 39086 390872014-03-11 Dodji Seketeli <dodji@redhat.com> 39088 39089 Do not declare classes before defining them anymore 39090 * src/abg-dwarf-reader.cc (build_class_type_and_add_to_ir): Do not 39091 declare classes before defining them because both the declaration 39092 and the definition now compare equal. 39093 * tests/data/test-read-dwarf/test1.abi: Update test. 39094 * tests/data/test-read-write/test20.xml: Likewise. 39095 390962014-03-11 Dodji Seketeli <dodji@redhat.com> 39097 39098 Little style fix 39099 * src/abg-comparison.cc (class_diff::report): Slight style fix. 39100 391012014-03-10 Dodji Seketeli <dodji@redhat.com> 39102 39103 Better support for decl-only classes in diffing and comparison 39104 * include/abg-fwd.h (look_through_decl_only_class): New function 39105 declaration. 39106 * src/abg-comparison.cc (class_diff::length): Just compare the two 39107 classes. 39108 (compute_diff): Look through the two classes if they are 39109 decl-only, and use their declaration for the diffing. 39110 * src/abg-ir.cc (look_through_decl_only_class): Define this new 39111 entry point. 39112 (class_decl::set_definition_of_declaration): Allow setting a 39113 definition that is itself a declaration-only. 39114 * src/abg-writer.cc (write_class_decl): Declaration-only can now 39115 have members, namely member types. 39116 391172014-03-10 Dodji Seketeli <dodji@redhat.com> 39118 39119 Fix comparison wrt hash number 39120 * src/abg-ir.cc (decl_base::operator==): Do not consider empty 39121 hashes. 39122 (class_decl::operator==): Better support for comparing decl-only 39123 classes against non-decl-only classes. 39124 391252014-03-10 Dodji Seketeli <dodji@redhat.com> 39126 39127 Better support of class DIEs with DW_AT_specification 39128 * src/abg-dwarf-reader.cc (get_scope_for_die): The definition of a 39129 declaration-only class can be NULL. Do not look through in that 39130 case. 39131 (build_class_type_and_add_to_ir): Support adding class members to 39132 an existing class. 39133 (build_ir_node_from_die): If a class DIE has a DW_AT_specification, 39134 get the specification DIE, get its matching IR node and add the 39135 current members of the current DIE to that IR node. 39136 391372014-03-10 Dodji Seketeli <dodji@redhat.com> 39138 39139 Tell struct and class apart 39140 * include/abg-ir.h (class_decl::is_struct_): New member. 39141 (class_decl::class_decl): Take an additional is_struct member. 39142 (class_decl::is_struct): New getter. 39143 * src/abg-ir.cc (class_decl::class_decl): Initialize the new 39144 is_struct_ data member. 39145 (class_decl::get_pretty_representation): Tell struct and class 39146 apart. 39147 * abg-reader.cc (read_is_struct): New static function. 39148 (build_class_decl): Capture the struct-ness of the class. 39149 * src/abg-dwarf-reader.cc (build_class_type_and_add_to_ir): 39150 Likewise. 39151 * src/abg-writer.cc (write_is_struct): New static function. 39152 (write_class_decl): Write the struct-ness of the class. 39153 * tests/data/test-read-dwarf/test1.abi: Update test. 39154 391552014-03-06 Dodji Seketeli <dodji@redhat.com> 39156 39157 Fix typedef_diff emptyness detection 39158 * src/abg-comparison.cc (typedef_diff::length): Do not mask away the 39159 dynamic type of the typedef_decl before the comparison. 39160 391612014-02-28 Dodji Seketeli <dodji@redhat.com> 39162 39163 Add --drop/--keep options to bidiff 39164 * include/abg-sptr-utils.h: New file. 39165 * include/Makefile.am: Add abg-sptr-utils. to the build system. 39166 * include/abg-libxml-utils.h (reader_sptr, xml_char_sptr): Remove 39167 these typedefs as there are now in abg-sptr-utils. 39168 (build_sptr): Likewise for this template and its specializations 39169 declarations. 39170 * src/abg-libxml-utils.cc (sptr_utils::build_sptr): Mode the 39171 definition of the specializations for xmlTextReader and xmlChar 39172 into the sptr_utils namespace. 39173 * include/abg-corpus.h 39174 (corpus::{get_regex_patterns_of_fns_to_suppress, 39175 get_regex_patterns_of_vars_to_suppress, 39176 get_regex_patterns_of_fns_to_keep, 39177 get_regex_patterns_of_vars_to_keep}): Declare new member 39178 functions. 39179 * src/abg-comparison.cc (sptr_utils::regex_t_deleter): Define new 39180 functor. 39181 (build_sptr) Define new specialization for regex_t. 39182 (struct array_deleter): Remove unused functor. 39183 (corpus::priv::regex_patterns_{fns,vars}_to_{suppress,keep}): New data 39184 members. 39185 (symtab_build_visitor_type::regex_patterns_{fns,vars}_to_{suppress,keep}): 39186 Likewise. 39187 (symtab_build_visitor_type::r_{fns,vars}_{suppress,keep})): 39188 Likewise. 39189 (symtab_build_visitor_type::symtab_build_visitor_type): Update the 39190 signature of this constructor to take regex patterns for functions 39191 and variables to suppress and to keep. Also, initialize the data 39192 members from these new parameters. 39193 (symtab_build_visitor_type::regex_{fns,vars}_{suppress,keep}): New 39194 member functions. 39195 (symtab_build_visitor_type::{add_fn_to_wip_fns, 39196 add_var_to_wip_vars}): Likewise. 39197 (symtab_build_visitor_type::visit) Use either add_fn_to_wip_fns or 39198 add_var_to_wip_vars depending on the overload of the visit() 39199 member. 39200 (corpus::priv::build_symbol_table): Update for the change of the 39201 symtab_build_visitor_type constructor signature. 39202 (corpus::get_regex_patterns_of_{fns,vars}_to_{suppress,keep}): 39203 Define new member functions. 39204 * tools/bidiff.cc (options::{drop,keep}_{fn,var}_regex_patterns}): 39205 New data member. 39206 (display_usage): Add help strings for --drop, --drop-fn, 39207 --drop-var, --keep, --keep-fn, --keep-var 39208 (parse_command_line): Parse the command lines above. 39209 (set_corpus_keep_drop_regex_patterns): Define new static function. 39210 (main): Use the new set_corpus_keep_drop_regex_patterns. 39211 392122014-02-28 Dodji Seketeli <dodji@redhat.com> 39213 39214 Style fix in the dwarf reader 39215 * src/abg-dwarf-reader.cc (die_is_public_decl): Rename 39216 is_public_decl into this. 39217 (die_is_declaration_only): Rename is_declaration_only into this. 39218 (build_class_type_and_add_to_ir, build_var_decl) 39219 (build_function_decl): Adjust for the renames above. 39220 392212014-02-28 Dodji Seketeli <dodji@redhat.com> 39222 39223 Skip artificial (member) functions from DWARF 39224 * src/abg-dwarf-reader.cc (die_is_artificial): New static 39225 function. 39226 (build_class_type_and_add_to_ir, build_ir_node_from_die): Use the 39227 die_is_artificial function to test if the function DIE is 39228 artificial and then skip it. 39229 392302014-02-28 Dodji Seketeli <dodji@redhat.com> 39231 39232 Fix function parameter addition/deletion/change detection 39233 * include/abg-ir.h (function_decl::parameter::get_name_id): 39234 Declare new entry point. 39235 * src/abg-comparison.cc 39236 (function_decl_diff::ensure_lookup_tables_populated): Use the new 39237 function_decl::parameter::get_name_id() for the unique name of the 39238 parameter. Also, fix a little logic error: if a parm is deleted 39239 and inserted, in all cases, consider it as not deleted. 39240 392412014-02-28 Dodji Seketeli <dodji@redhat.com> 39242 39243 Add a --stat option to bidiff 39244 * include/abg-comparison.h (diff_context::show_stats_only): 39245 Declare new accessors. 39246 * src/abg-comparison.cc 39247 (diff_context::priv::show_stats_only_): New member. 39248 (diff_context::show_stats_only): Define new accessors. 39249 (corpus_diff::report): If showing stats only, quit right after 39250 showing the summary. 39251 * tools/bidiff.cc (options::show_stats_only): New data member. 39252 (options::options): Initialize the new data member. 39253 (display_usage): Add help string for --stat. 39254 (parse_command_line): Parse the --stat option. 39255 (set_diff_context_from_opts): Update to set the show_stats_only 39256 onto the context. Cleanup the logic to make it more compact. 39257 392582014-02-28 Dodji Seketeli <dodji@redhat.com> 39259 39260 Report about functions of different names 39261 * src/abg-comparison.cc (function_decl_diff::report): Consider the 39262 case of functions with different names. This doesn't happen in 39263 the current pipeline b/c they just show up as deleted/added 39264 functions so the function reporter doesn't see them as they have 39265 been already reported by now. 39266 392672014-02-28 Dodji Seketeli <dodji@redhat.com> 39268 39269 Fix length calculation for type diffs. 39270 * src/abg-comparison.cc (diff_length_of_type_bases): Fix stupid 39271 harmful thinko here. 39272 392732014-02-28 Dodji Seketeli <dodji@redhat.com> 39274 39275 Fix calculation of the length of distinct_diff 39276 * src/abg-comparison.cc (distinct_diff::length): Also perform a 39277 deep comparison here. 39278 392792014-02-28 Dodji Seketeli <dodji@redhat.com> 39280 39281 Fix diff length calculation for typedef diffs 39282 * src/abg-comparison.cc (typedef_diff::length): Just use 39283 comparison for this. 39284 392852014-02-28 Dodji Seketeli <dodji@redhat.com> 39286 39287 Fix layout of diff summary 39288 * src/abg-comparison.cc 39289 (corpus_diff::priv::emit_corpus_diff_stats): Remove useless 39290 vertical and horizontal white spaces. 39291 392922014-02-28 Dodji Seketeli <dodji@redhat.com> 39293 39294 Fix indentation of pieces of class diff report 39295 * src/abg-comparison.cc (represent, class_diff::report): Fix 39296 indentation. 39297 392982014-02-28 Dodji Seketeli <dodji@redhat.com> 39299 39300 Fix detection of entities of different kinds for diff purposes 39301 * src/abg-comparison.cc 39302 (distinct_diff::entities_are_of_distinct_kinds): Consider two NULL 39303 decls are distinct types for the purpose of diffing. This is just 39304 a shortcut to avoid creating a null_diff type for now. But then, 39305 stop considering same pointers as different. This was a bug. 39306 393072014-02-28 Dodji Seketeli <dodji@redhat.com> 39308 39309 Constify function_decl::parameter::get_type_pretty_representation() 39310 * include/abg-ir.h 39311 (function_decl::parameter::get_type_pretty_representation): This 39312 is now const. 39313 393142014-02-28 Dodji Seketeli <dodji@redhat.com> 39315 39316 Improve API doc for the location machinery 39317 * include/abg-ir.h (class location): Improve doc. 39318 (decl_base::{get,set}_location): Likewise. 39319 393202014-02-26 Dodji Seketeli <dodji@redhat.com> 39321 39322 Remove useless dynamic cast 39323 * src/abg-ir.cc (class_decl::insert_member_decl): Remove useless 39324 dynamic cast from here. 39325 393262014-02-26 Dodji Seketeli <dodji@redhat.com> 39327 39328 Insert reference, pointers and qual types at their declaration point 39329 * src/abg-dwarf-reader.cc (build_ir_node_from_die): Insert 39330 reference, pointers and qualified types at the point where we see 39331 them, in their scope, rather than under the scope of their 39332 underlying type. This is because their might be first declared as 39333 member types and we don't want to loose that information. 39334 393352014-02-24 Dodji Seketeli <dodji@redhat.com> 39336 39337 Fix documentation for the diff_utils namespace 39338 * include/abg-diff-utils.h (namespace diff_utils): Add comment. 39339 (compute_diff): Update comments for some overloads where they were 39340 missing. 39341 393422014-02-21 Dodji Seketeli <dodji@redhat.com> 39343 39344 Misc style fixes 39345 * src/abg-comparison.cc 39346 (class_diff::ensure_lookup_tables_populated): use 39347 as_non_member_class_decl rather that complicated casting. 39348 src/abg-ir.cc (var_decl::get_pretty_representation): Use 39349 get_type_declaration rather than casting. 39350 393512014-02-21 Dodji Seketeli <dodji@redhat.com> 39352 39353 Fix a glitch in member data diff reporting 39354 * src/abg-comparison.cc (represent): Do not forget the "'" around 39355 the access specifier. 39356 393572014-02-21 Dodji Seketeli <dodji@redhat.com> 39358 39359 Proper support for diffing member types 39360 * include/abg-comparison.h (class member_type_diff): New class. 39361 (member_type_diff_sptr): New convenience typedef. 39362 (compute_diff): New overload for member_type_diff. 39363 * src/abg-comparison.cc (struct member_type_diff::priv): New 39364 definition. 39365 (member_type_diff::{first_member_type, second_member_type, 39366 underlying_type_diff, length}): New member function definitions. 39367 (compute_diff): New definition for member type diffs. 39368 (compute_diff_for_types): Support diffing 39369 member types. 39370 (class_diff::report): Do not use strip member types now that we 39371 can properly diff them. 39372 393732014-02-21 Dodji Seketeli <dodji@redhat.com> 39374 39375 Fix the support for printing cv-qualified names 39376 * include/abg-ir.h (decl_base::{location_, name_, 39377 qualified_parent_name_, qualified_name_}): Make these data members 39378 protected rather than private. 39379 (decl_base::get_qualified_parent_name): Declare new member 39380 functions. 39381 (decl_base::get_qualified_name): Make the core overload virtual. 39382 Simplify the other overload that calls the core one. 39383 (qualified_type_def::build_name): Declare new protected helper 39384 function. 39385 (qualified_type_def::{get_cv_quals_string_prefix, 39386 get_qualified_name}): Declare new functions. 39387 (pointer_type_def::{get_qualified_name}}): Likewise. 39388 (class_decl::member_type::get_qualified_name): Likewise. 39389 * src/abg-ir.cc (decl_base::get_qualified_parent_name): New 39390 definition. 39391 (decl_base::get_name): Make this out-of-line. 39392 (decl_base::get_qualified_name): The signature of this got 39393 simplified. Make it use the new get_qualified_parent_name. 39394 (qualified_type_def::{build_name, get_qualified_name, 39395 get_cv_quals_string_prefix}): New definitions. 39396 (qualified_type_def::qualified_type_def): Update the constructor 39397 to use the new build_name function above. 39398 (pointer_type_def::get_qualified_name): New definitions. 39399 (reference_type_def::get_qualified_name): Likewise. 39400 (class_decl::member_type::get_qualified_name): Likewise. 39401 394022014-02-21 Dodji Seketeli <dodji@redhat.com> 39403 39404 Misc style fix 39405 * src/abg-comparison.cc (represent): Remove useless curly braces 39406 and vertical spaces. 39407 394082014-02-21 Dodji Seketeli <dodji@redhat.com> 39409 39410 Support DW_AT_specification on class/struct DIEs 39411 * src/abg-dwarf-reader.cc (build_ir_node_from_die): Support 39412 DW_AT_specification on DW_TAG_{class,structure}type. 39413 394142014-02-21 Dodji Seketeli <dodji@redhat.com> 39415 39416 Avoid comparing member types and class templates 39417 * src/abg-comparison.h (compute_diff): For class_decl_sptr, do not 39418 compare member types and member class templates. This adds a lots 39419 of noise that is not necessarily useful for now. 39420 * tests/data/test-bidiff/test-qual-type0-report.txt: Update tests. 39421 * tests/data/test-bidiff/test-struct0-report.txt: Likewise. 39422 * tests/data/test-bidiff/test-struct1-report.txt: Likewise. 39423 394242014-02-21 Dodji Seketeli <dodji@redhat.com> 39425 39426 Fix the report of added/removed function parameters 39427 * src/abg-comparison.cc 39428 (function_decl_diff::priv::{inserted_parms_, removed_parms_}): 39429 Remove these. 39430 (function_decl_diff::ensure_lookup_tables_populated): Fix thinko. 39431 Avoid using the members removed above. Use one less loop to 39432 update the changed params. 39433 (function_decl_diff::report): Avoid using the removed_parms_ 39434 data member that was removed above. 39435 394362014-02-21 Dodji Seketeli <dodji@redhat.com> 39437 39438 Put the setter of access specifiers in class_decl::member_base 39439 * include/abg-ir.h 39440 (class_decl::member_base::set_access_specifier): Put the setter 39441 for access specifier here, where it belongs ... 39442 (class_decl::member_type::set_access_specifier): ... not here. 39443 394442014-02-21 Dodji Seketeli <dodji@redhat.com> 39445 39446 First approach to avoid duplication of IR nodes for forward-declared classes 39447 * src/abg-dwarf-reader.cc (is_declaration_only): Put this back (I 39448 removed it earlier). 39449 (build_class_type_and_add_to_ir): If the class is a 39450 declaration-only (a forward declaration), do not add a new 39451 declaration only IR node. 39452 394532014-02-21 Dodji Seketeli <dodji@redhat.com> 39454 39455 Do not forget to set the indexes of fn parms 39456 * include/abg-ir.h (function_type::function_type): In the 39457 constructor that takes a vector of parms, walk the vector and set 39458 the indexes of the parms. 39459 394602014-02-19 Dodji Seketeli <dodji@redhat.com> 39461 39462 Misc diff reporting output cleanup 39463 * src/abg-comparison.cc (function_decl_diff::report): Do not talk 39464 about changed function anymore. Rather, say that some indirect 39465 sub-types changed in the function. 39466 394672014-02-19 Dodji Seketeli <dodji@redhat.com> 39468 39469 Do not forget some member types/functions we built IR nodes for 39470 * src/abg-dwarf-reader.cc (build_class_type_and_add_to_ir): 39471 Associate the member type IR node to the offset of the die of the 39472 member type. 39473 (build_ir_node_from_die): For a DW_TAG_subprogram DIE that has a 39474 DW_AT_specification pointing to another subprogram DIE, associate 39475 the offset of this DIE to the IR node of that other DIE. 39476 394772014-02-19 Dodji Seketeli <dodji@redhat.com> 39478 39479 Better support of static member variables 39480 * include/abg-fwd.h (fqn_to_components) 39481 (lookup_type_in_translation_unit, demangle_cplus_mangled_name): 39482 Declare new public entry points 39483 * src/abg-comparison.cc (corpus_diff::report): Report stuff about 39484 global variables using their mangled name, and demangle them. If 39485 there is no mangled name for the variable, then use its pretty 39486 representation. 39487 (compute_diff): For the corpus overload, compare global variables 39488 using their mangled name, if its available; otherwise, fall back 39489 to using their pretty representation. 39490 * src/abg-corpus.cc (var_comp::operator()(const var_decl*, 39491 const_var_decl*)): Compare variables using their mangled name in 39492 priority. If it's not available then use their pretty 39493 representation. 39494 * src/abg-dwarf-reader.cc 39495 (read_context::var_decls_to_re_add_to_tree): New accessor. 39496 (build_translation_unit_and_add_to_ir): If there is what appears 39497 to be a definition of a static member variable variable -- this is 39498 in case this definition lacks the DW_AT_specification attribute 39499 that links it to the DW_TAG_member or DW_TAG_variable DIE that is 39500 a child of the right class/structure DIE -- that is not at the 39501 right place in the DIE tree, remove it from the its current place 39502 in the tree and try to hang it off of the right DIE. To do this, 39503 de-mangle its mangled name, look at what is supposed to be the 39504 parent class name, look it up in the translation unit IR, and if 39505 found, stick the variable IR node in there, as a static member 39506 variable. If not found, then bad luck. 39507 (build_class_type_and_add_to_ir): Do not try to see if a member 39508 variable is static here as the way I was doing it was unreliable. 39509 Build the data member node directly w/o going through building a 39510 variable node first. Register the data member in the die offset 39511 -> IR node map. 39512 (build_ir_node_from_die): When seeing DW_TAG_variable, look for a 39513 DW_AT_specification attribute. If there is one, then it points to 39514 a the DIE of a data member and means that data member is static. 39515 Flag the IR node of that data member as static thus. Update the 39516 die offset -> IR node map. If there is no DW_AT_specification 39517 attribute or if it doesn't point to a data member DIE, schedule 39518 this variable tag for a stage when after the whole IR is built for 39519 the translation unit, the variable's mangled named is inspected, 39520 its hypothetical parent struct/class is looked up and the variable 39521 IR node is put into the node of the right struct/class IR node. 39522 * src/abg-ir.cc (enum lookup_entity_kind): New. 39523 (fqn_to_components, iterator, lookup_type_in_translation_unit) 39524 (lookup_node_in_translation_unit, lookup_type_in_translation_unit) 39525 (demangle_cplus_mangled_name): New function definitions. 39526 395272014-02-19 Dodji Seketeli <dodji@redhat.com> 39528 39529 Shorten an accessor name in the DWARF reader 39530 * src/abg-dwarf-reader.cc (read_context::cur_tu): Rename 39531 read_context::current_translation_unit into this. 39532 (read_context::current_scope, die_location) 39533 (build_translation_unit_and_add_to_ir, build_enum_type) 39534 (build_function_decl): Adjust wrt the change above. 39535 395362014-02-19 Dodji Seketeli <dodji@redhat.com> 39537 39538 Unset decl scope when removing the decl from its scope 39539 * src/abg-ir.cc (remove_decl_from_scope): Unset the scope of the 39540 decl. 39541 395422014-02-19 Dodji Seketeli <dodji@redhat.com> 39543 39544 Support adding data member from var_decl 39545 * src/abg-ir.cc (class_decl::insert_member_decl): Support taking 39546 a var_decl. 39547 (class_decl::add_data_member): Do not insert a data member twice. 39548 395492014-02-19 Dodji Seketeli <dodji@redhat.com> 39550 39551 Fix qualified type pretty printing 39552 * src/abg-ir.cc (qualified_type_def::qualified_type_def): Remove 39553 useless white space. 39554 395552014-02-19 Dodji Seketeli <dodji@redhat.com> 39556 39557 Add class_decl::member_base::set_is_static() accessor 39558 * include/abg-ir.h (class_decl::member_base::get_is_static): 39559 Rename is_static into get_is_static. 39560 (class_decl::member_base::set_is_static): New accessor. 39561 * src/abg-comparison.cc (represent): Adjust for 39562 class_decl::member_base::is_static -> get_is_static. 39563 * src/abg-corpus.cc (symtab_build_visitor_type::visit): Likewise. 39564 src/abg-hash.cc (class_decl::member_function::hash::operator()): 39565 Likewise. 39566 * src/abg-ir.cc (class_decl::member_base::operator==): Likewise. 39567 * src/abg-writer.cc (write_class_decl): Likewise. 39568 395692014-02-13 Dodji Seketeli <dodji@redhat.com> 39570 39571 Fixes needed to diff libstdc++ v4_4 against master 39572 * src/abg-comparison.cc 39573 (class_diff::ensure_lookup_tables_populated): Support several 39574 instances of the same member function being deleted. That can 39575 happen when the same member function was present in the initial 39576 class several times. Yeah, I've seen that in dwarf. 39577 * src/abg-corpus.cc (corpus::priv::build_symbol_table): Do not add 39578 the same variable (identified by its mangled name) twice in the 39579 variable symbol table. 39580 395812014-02-13 Dodji Seketeli <dodji@redhat.com> 39582 39583 Fix wrong deleted functions count when diffing corpora 39584 * src/abg-comparison.cc 39585 (corpus_diff::priv::ensure_lookup_tables_populated): If a function 39586 has changed, deleted it from the list the removed functions. 39587 395882014-02-13 Dodji Seketeli <dodji@redhat.com> 39589 39590 Several fixes needed to read libstdc++.so 39591 * src/abg-reader.cc (read_context::map_id_and_node): Allow 39592 duplicated class and basic type declarations. 39593 (build_type_decl): Allow duplicated type decls. 39594 (build_qualified_type_decl, build_pointer_type_def) 39595 (build_reference_type_def): As there can be several distinct 39596 duplicated types, compare them by value. 39597 (build_class_decl): There can be duplicated class decls. 39598 * src/abg-writer.cc (write_enum_type_decl): The name of the enum 39599 needs to be xml-escaped. 39600 396012014-02-12 Dodji Seketeli <dodji@redhat.com> 39602 39603 qualified, pointer and reference types can be member types 39604 * src/abg-reader.cc (build_qualified_type_decl) 39605 (build_pointer_type_def, build_reference_type_def): Consider that 39606 these types can be member types. 39607 396082014-02-12 Dodji Seketeli <dodji@redhat.com> 39609 39610 Consider two typedefs with different names to be different 39611 * src/abg-ir.cc (typedef_decl::operator==): Consider two typedefs 39612 with different names to be different. 39613 396142014-02-12 Dodji Seketeli <dodji@redhat.com> 39615 39616 Really Avoid trying to build IR nodes for non-public functions 39617 * src/abg-dwarf-reader.cc (build_ir_node_from_die): For the 39618 DW_TAG_subprogram case, bail out early if the current function is 39619 non-public. 39620 396212014-02-12 Dodji Seketeli <dodji@redhat.com> 39622 39623 Add --{changed,deleted,added}-{fns,vars} options to bidiff 39624 * include/abg-comparison.h 39625 (diff_context::{show_{deleted,changed_added}_{fns,vars}}): Declare 39626 new accessors. 39627 (corpus_diff::context): Declare new getter. 39628 * src/abg-comparison.cc 39629 (diff_context::{show_{deleted,changed_added}_{fns,vars}}): Define 39630 these new accessors. 39631 (corpus_diff::priv::emit_corpus_diff_stats): Define new function. 39632 (corpus_diff::context()): Define new getter. 39633 (corpus_diff::report): Use the new 39634 corpus_diff::priv::emit_corpus_diff_stats to emit diff stats at 39635 the beginning of the report. Conditionalise emitting the 39636 different parts of the reports (changed,deleted,added stuff) on 39637 the values of the new properties that were just added. 39638 * tools/bidiff.cc 39639 (options::{show_{deleted,changed,added}_{fns,vars}): New 39640 properties. 39641 (display_usage, parse_command_line): Update for the newly added 39642 --{changed,deleted,added}-{fns,vars} command line options. 39643 (set_diff_context_from_opts): Define new static function. 39644 (main): Create a diff context, initialize it from the options 39645 (using set_diff_context_from_opts) and pass it to compute_diff. 39646 396472014-02-11 Dodji Seketeli <dodji@redhat.com> 39648 39649 Add --show-symtabs to bidiff 39650 * tools/bidiff.cc (display_usage): Update usage string. 39651 (parse_command_line): Recognize the --show-symtab cmdline option. 39652 (display_symtabs): New static function. 39653 (main): Call the new display_symtabs. 39654 396552014-02-11 Dodji Seketeli <dodji@redhat.com> 39656 39657 Harden class_decl node traversal code 39658 * src/abg-ir.cc (class_decl::traverse): Add a few asserts here and there. 39659 396602014-02-11 Dodji Seketeli <dodji@redhat.com> 39661 39662 Fix the pretty representation for member functions 39663 * src/abg-ir.cc (function_decl::get_pretty_representation): Fix 39664 this to properly display the representation of member functions. 39665 * tests/data/test-bidiff/test-enum0-report.txt: Update this. 39666 * tests/data/test-bidiff/test-enum1-report.txt: Likewise. 39667 * tests/data/test-bidiff/test-qual-type0-report.txt: Likewise. 39668 * tests/data/test-bidiff/test-struct0-report.txt: Likewise. 39669 * tests/data/test-bidiff/test-struct1-report.txt: Likewise. 39670 396712014-02-11 Dodji Seketeli <dodji@redhat.com> 39672 39673 Do not forget to traverse member types 39674 * include/abg-ir.h (class_decl::member_type::traverse): Declare new virtual 39675 function. 39676 (ir_node_visitor::visit): Declare new virtual function 39677 * src/abg-ir.cc (class_decl::member_type::traverse): Implement the 39678 traversal of a member type. 39679 (ir_node_visitor::visit): Provide a default implementation for the 39680 visitor of member type. 39681 396822014-02-11 Dodji Seketeli <dodji@redhat.com> 39683 39684 From DWARD, avoid adding IR nodes for member functions twice 39685 * include/abg-fwd.h (as_non_member_class_decl): Declare new overload. 39686 * src/abg-ir.cc (as_non_member_class_decl): Define new overload. 39687 * src/abg-dwarf-reader.cc (build_class_type_and_add_to_ir): Add 39688 member functions to the DIE -> IR Node map. 39689 (build_ir_node_from_die): Assert that DW_TAG_subprogram cannot be 39690 for a member function here because getting the scope of the member 39691 function would have constructed the entire class that contains it, 39692 including the member function. Then, calling 39693 build_ir_node_from_die for the DIE of the member function would 39694 find the already IR Node in the DIE -> IR Node map. 39695 396962014-02-11 Dodji Seketeli <dodji@redhat.com> 39697 39698 Fix access specifiers value 39699 * include/abg-ir.h (class_decl::enum access_specifier): Give the enumerators 39700 the same values as what the DWARF spec says. 39701 397022014-02-10 Dodji Seketeli <dodji@redhat.com> 39703 39704 Misc diff report cleanups 39705 * include/abg-ir.h (function_decl::parameter::get_type_name): Add 39706 comment. 39707 (function_decl::parameter::get_type_pretty_representation): New 39708 member fn. 39709 * src/abg-comparison.cc (represent): When representing changed 39710 members, use their pretty representation. 39711 (function_decl_diff::{ensure_lookup_tables_populated, report}): Use the 39712 pretty representation of parameters type. 39713 (typedef_diff::report): Enclose the underlying type in "'". 39714 (corpus_diff::report): Add proper spacing. 39715 397162014-02-10 Dodji Seketeli <dodji@redhat.com> 39717 39718 Re-organize the output of diffing two corpora 39719 * src/abg-comparison.cc (corpus_diff::report): Emit 39720 information about the number of added/removed/changed 39721 functions. If the report is big, prefix any added 39722 function with '[A]' deleted function with '[B]'. Also, 39723 fix indentation. 39724 397252014-02-10 Dodji Seketeli <dodji@redhat.com> 39726 39727 Support diffing entities of different kinds. 39728 * include/abg-comparison.h (class distinct_diff): Declare new 39729 type. 39730 (compute_diff_for_distinct_kinds): Declare new function. 39731 * src/abg-comparison.cc (distinct_diff::{distinct_diff, first, 39732 second, entities_are_of_distinct_kinds, length, report}): Define 39733 new member functions. 39734 (compute_diff_for_distinct_kinds, try_to_diff_distinct_kinds): 39735 Define new function. 39736 (compute_diff_for_types, compute_diff_for_decls): Support diffing 39737 entities of different kinds. 39738 397392014-02-10 Dodji Seketeli <dodji@redhat.com> 39740 39741 Avoid recursive comparison on class_decl & perform some optimizations 39742 * src/abg-ir.cc (class_decl::operator==(const decl_base& other) 39743 const): Bail out early in case of recursive comparison, or if type 39744 hashes are different. Do not try to compute qualified name unless 39745 it's really necessary. The optimizations part of this change were 39746 hinted by profiling. 39747 397482014-02-10 Dodji Seketeli <dodji@redhat.com> 39749 39750 Handle the DIE for a fn that has a 'specification' attribute 39751 * src/abg-dwarf-reader.cc (build_ir_node_from_die): For the 39752 DW_TAG_subprogram case, if the function has a DW_AT_specification 39753 attribute, build the IR node for the specification DIE instead. 39754 397552014-02-10 Dodji Seketeli <dodji@redhat.com> 39756 39757 Add an assert in the dwarf reader 39758 * src/abg-dwarf-reader.cc (build_class_type_and_add_to_ir): 39759 Assert that the result of build_function_decl on a member function 39760 is a method_decl. 39761 397622014-02-10 Dodji Seketeli <dodji@redhat.com> 39763 39764 Do not forget that build_ir_node_from_die can return member types 39765 * src/abg-dwarf-reader.cc (get_scope_for_die): Handle member class 39766 types. 39767 (build_function_decl): Likewise. 39768 397692014-02-10 Dodji Seketeli <dodji@redhat.com> 39770 39771 A member function can have an empty mangled name 39772 * src/abg-comparison.cc 39773 (class_diff::ensure_lookup_tables_populated): If a member function 39774 has an empty mangling name, use its pretty representation. 39775 397762014-02-10 Dodji Seketeli <dodji@redhat.com> 39777 39778 Remove too eager asserts 39779 * src/abg-comparison.cc 39780 (class_diff::ensure_lookup_tables_populated): Do not assert that 39781 the same member type cannot be deleted/inserted twice. It 39782 actually can for, pointers, references, typedefs, etc. 39783 397842014-02-10 Dodji Seketeli <dodji@redhat.com> 39785 39786 Fix some new line handling in diff reports 39787 * src/abg-comparison.cc (represent): Remove extra new line after 39788 reporting virtual function number. 39789 (class_diff::report): Do not forget to emit a new line between two 39790 inserted functions. 39791 397922014-02-10 Dodji Seketeli <dodji@redhat.com> 39793 39794 Perform the diff of changed functions and variables in the right order 39795 * src/abg-comparison.cc 39796 (corpus_diff::priv::ensure_lookup_tables_populated): In a changed 39797 function or variable, do not mix up the new and old value. 39798 397992014-02-10 Dodji Seketeli <dodji@redhat.com> 39800 39801 Fix typo in report 39802 * src/abg-comparison.cc (reference_diff::report): Fix typo 39803 refereneced -> referenced. 39804 398052014-02-10 Dodji Seketeli <dodji@redhat.com> 39806 39807 Fix various crashes 39808 * src/abg-comparison.cc (decls_equal::operator()(const decls_type, 39809 const decls_type) const): Do not crash when of the decl_types is 39810 NULL. 39811 ({pointer_diff, reference_diff, enum_diff}::length): Avoid 39812 crashing if the underlying type is NULL. 39813 * abg-ir.cc (function_decl::get_pretty_representation): Avoid 39814 crashing on member functions with empty parameter set. 39815 signed-off-by: Dodji Seketeli <dodji@redhat.com> 39816 398172014-02-10 Dodji Seketeli <dodji@redhat.com> 39818 39819 More optimizations hinted by profiling 39820 * include/abg-ir.h (decl_base::qualified_name_): New member. 39821 (decl_base::get_qualified_name): Cache the qualified name. 39822 (decl_base::get_type): Return a reference on the shared pointer. 39823 (method_type::get_class_type): Likewise. 39824 (class_decl::get_definition_of_declaration): Likewise. 39825 (class_decl::member_type::get_underlying_type): Likewise. 39826 (class_decl::base_spec::get_base_class): Likewise. 39827 * src/abg-ir.cc (decl_base::get_qualified_name): Implement the 39828 caching. 39829 (class_decl::member_type::get_qualified_name): Return a reference 39830 on the shared pointer. 39831 398322014-02-10 Dodji Seketeli <dodji@redhat.com> 39833 39834 Avoid crashing when getting function parm type name 39835 * include/abg-ir.h (function_decl::parameter::get_type_name): New 39836 member function. 39837 * src/abg-comparison.cc 39838 (function_decl_diff::ensure_lookup_tables_populated): Use the new 39839 member function above. 39840 398412014-02-10 Dodji Seketeli <dodji@redhat.com> 39842 39843 Small optimization hinted by profiling 39844 * include/abg-diff-utils.h (d_path_vec::max_d): Avoid using member 39845 functions. This is relevant only when compiling w/o optimization. 39846 398472014-02-10 Dodji Seketeli <dodji@redhat.com> 39848 39849 Fix allocation of diff_utils::d_path_vec 39850 * include/abg-diff-utils.h (d_path_vec::d_path_vec): Do not 39851 forget to allocate enough data for reverse vectors as well. The 39852 comment of the constructor is accurate. 39853 398542014-02-07 Dodji Seketeli <dodji@redhat.com> 39855 39856 Misc style fixes 39857 * include/abg-hash.h (combine_hashes): Remove trailing white 39858 spaces. 39859 * include/abg-ir.h (class function_decl): Add end-of-class 39860 comment. 39861 (struct type_base::cached_hash): Fix comment. 39862 * src/abg-comparison.cc: Remove useless new line. 39863 * src/abg-corpus.cc: Likewise. 39864 * src/abg-writer.cc: Likewise. 39865 398662014-02-07 Dodji Seketeli <dodji@redhat.com> 39867 39868 Support looking through decl-only classes and update diff reports accordingly 39869 * include/abg-comparison.h (class diff_context): New class. 39870 (class diff::{ctxt_, reported_once_, currently_reporting_}): New 39871 data members. 39872 (diff::diff): Initialize the new data members above. 39873 (diff::{context, currently_reporting, reported_once}): New 39874 accessors. 39875 (compute_diff, var_diff::var_diff, pointer_diff::pointer_diff) 39876 (reference_diff::reference_diff, qualified_type_diff) 39877 (enum_diff:enum_diff, class_diff::class_diff) 39878 (scope_diff::scope_diff, function_decl_diff::function_decl_diff) 39879 (type_decl_diff::type_decl_diff, typedef_diff::typedef_diff) 39880 (translation_unit_diff::translation_unit_diff, corpus_diff::corpus_diff): 39881 Take an additional pointer to diff_context. 39882 * abg-comparison.cc (diff_context::{has_diff_for, 39883 has_diff_for_types, add_diff}): New methods. 39884 (try_to_diff, compute_diff_for_types, compute_diff_for_decls) 39885 (represent): Take an additional pointer to 39886 diff_context in argument. In the later function, do not re-report 39887 a diff if it has already been reported, or if it's being reported 39888 already. 39889 (var_diff::var_diff, pointer_diff::pointer_diff) 39890 (reference_diff::reference_diff) 39891 (qualified_type_diff::qualified_type_diff, enum_diff::enum_diff) 39892 (class_diff::class_diff, scope_diff::scope_diff) 39893 (function_decl_diff::function_decl_diff, type_decl::type_decl) 39894 (typedef_diff::typedef_diff) 39895 (translation_unit_diff::translation_unit_diff) 39896 (corpus_diff::corpus_diff): Take an additional pointer to 39897 diff_context in argument. 39898 ({pointer_diff, qualified_type_diff, 39899 reference_type_diff}::report): do not re-report a diff about the 39900 underlying type if it has already been reported, or if it's being 39901 reported already. 39902 (enum_diff::report): Fix this to properly use the populated lookup 39903 tables. 39904 (compute_diff): take an additional pointer to diff_context in 39905 argument. For the var_decl, pointer_diff reference_type_diff, 39906 qualified_type_diff enum_diff, scope_diff, function_decl_diff, 39907 type_decl_diff and typedef_diff overloads, do not re-build a diff 39908 object, if one exits already. Otherwise, record the new diff 39909 object created so that it can be re-used later. 39910 (enum_diff::ensure_lookup_tables_populated): Fix logic to avoid 39911 one loop. 39912 (class_decl::priv::{deleted_member_functions_, 39913 inserted_member_functions_, changed_member_function_}): New 39914 members to support reporting about member functions changes. 39915 (class_decl::{lookup_tables_empty, clear_lookup_tables, length): 39916 Update for the new additions above. 39917 (class_decl::ensure_lookup_tables_populated): Likewise. Fix to 39918 properly use the lookup tables and also avoid a going through 39919 several loops to compute the changed members. 39920 (class_decl::report): Flip a switch to make the beginning and end 39921 of the reporting, in the context. Also, do not try to report 39922 again, if we were already reporting this diff. Fix quite some 39923 spots to properly use the lookup tables. 39924 (scope_diff::ensure_lookup_tables_populated): Skip decl-only 39925 classes during comparison. Fix some thinkos. Fix logic to avoid a 39926 loop. 39927 (scope_diff::report): Adjust to pass a context to 39928 compute_diff_for_types. 39929 (function_decl_diff::ensure_lookup_tables_populated): Fix logic to 39930 avoid a loop. 39931 (function_decl_diff::report): Adjust call to 39932 compute_diff_for_types to pass the context. 39933 (typedef::report): Avoid re-reporting the diff of the underlying 39934 types, if we are already reporting it. 39935 (corpus_diff::priv::ensure_lookup_tables_populated): Use the 39936 pretty representation of the function rather than its name to key 39937 the maps of deleted and added functions. Fix logic to avoid going 39938 through an additional loop for the changed functions. 39939 (corpus_diff::report): Add a title for removed/added/changed 39940 functions. Fix indentation for added/removed/changed functions. 39941 * include/abg-ir.h (class_decl::comparison_started_): New member 39942 * src/abg-dwarf-reader.cc (is_public_decl): Style fix. 39943 (is_declaration_only_): New static function. 39944 (build_class_type_and_add_to_ir): Create decl-only classes (IR) for 39945 classes flagged as declaration-only in the DWARF. 39946 * src/abg-hash.cc (class_decl::hash::operator()): Do not forget to 39947 include the "is_declaration_only" flag into the hashing. 39948 * src/abg-ir.cc (class_decl::operator==): Look through decl-only 39949 classes to get their definitions and compare the definitions 39950 instead. Avoid comparing member types and fns if the comparison 39951 of this type has already started. 39952 * src/abg-reader.cc (build_class_decl): Set the definition of a 39953 declaration, when we see it. 39954 * tests/data/test-bidiff/test-qual-type0-report.txt: Update. 39955 * tests/data/test-bidiff/test-struct0-report.txt: Likewise. 39956 * tests/data/test-bidiff/test-struct1-report.txt: Likewise. 39957 signed-off-by: Dodji Seketeli <dodji@redhat.com> 39958 399592014-02-07 Dodji Seketeli <dodji@redhat.com> 39960 39961 Support reading *.bi input with duplicated qualified type ids. 39962 * src/abg-reader.cc (read_context::map_id_and_node): Support 39963 qualified types with duplicated ids. 39964 399652014-02-07 Dodji Seketeli <dodji@redhat.com> 39966 39967 Fix comparison of member types 39968 * src/abg-ir.cc (class_decl::member_type::operator==): Compare the 39969 underlying type of the member type. 39970 399712014-02-07 Dodji Seketeli <dodji@redhat.com> 39972 39973 Avoid duplicated entries in the symbol tables of the corpus 39974 * include/abg-ir.h ({var_decl, function_decl}::ptr_equal): New 39975 equality functor for pointers to var_decl and function_decl. 39976 ({function_decl, var_decl}::hash): Make these hashing functors 39977 public. 39978 * include/abg-hash.cc (struct var_decl::hash, struct 39979 function_decl::hash): Remove these from here. There are now in 39980 the public abg-ir.h. 39981 ({var_decl, function_decl}::hash::operator()): Define these here. 39982 * src/abg-corpus.cc (symtab_build_visitor_type::{fns_map, 39983 fn_is_in_map, add_fn_to_map, vars_map, var_is_in_map, 39984 add_var_to_map}): New accessors. 39985 (corpus::priv::build_symbol_table): Avoid duplicated entries in 39986 variables and functions symbols tables. 39987 399882014-02-07 Dodji Seketeli <dodji@redhat.com> 39989 39990 Ease debugging of abigail::diff_utils::compute_diff 39991 * include/abg-diff-utils.h (compute_diff): Add asserts on for the 39992 length of the shortest edit script during the divide and conquer 39993 part of the diff algorithm. 39994 399952014-02-07 Dodji Seketeli <dodji@redhat.com> 39996 39997 Fix further reaching reverse path calculation in core diff algo 39998 * include/abg-diff-utils.h (end_of_frr_d_path_in_k_plus_delta): 39999 Favour moving left when the two abscissas at the previous steps 40000 are equal. 40001 (compute_diff): Update the length of the shortest edit script when 40002 the size of one of the inputs is zero. 40003 * tests/test-core-diff.cc (in_out_spec): Add a new input to diff 40004 two sequences for regression testing. 40005 * tests/data/test-core-diff/report13.txt: New reference for 40006 the comparison of the new regression test above. 40007 400082014-02-07 Dodji Seketeli <dodji@redhat.com> 40009 40010 Add debugging facilities for core diffing issues 40011 * include/abg-ir.h (fns_to_str): Declare new fn. 40012 * src/abg-ir.cc (get_next_string, fn_to_str, fns_to_str): New 40013 static functions. 40014 (fns_to_str): Define new fn. 40015 * tools/abg-tools-utils.cc (dump_functions_as_string) 40016 (dump_function_names, compare_functions): New functions. 40017 400182014-01-20 Dodji Seketeli <dodji@redhat.com> 40019 40020 Fix apidoc comment 40021 * src/abg-ir.cc (decl_base::operator==): Fix comment. 40022 400232014-01-20 Dodji Seketeli <dodji@redhat.com> 40024 40025 Fix bilint outputting for translation units & corpus 40026 * tools/bilint.cc (main): Fix logic. 40027 400282014-01-20 Dodji Seketeli <dodji@redhat.com> 40029 40030 Remove debugging assertion when diffing 40031 * include/abg-diff-utils.h (d_path_vec::at): Do not check for 40032 bounds. 40033 400342014-01-20 Dodji Seketeli <dodji@redhat.com> 40035 40036 Do not use exceptions in dynamic_cast 40037 * src/abg-ir.cc (class_decl::member_function::operator==) 40038 (class_decl::member_function::operator==): Do not use the 40039 exception path for dynamic casting. This was near the top of many 40040 profiles. 40041 400422014-01-20 Dodji Seketeli <dodji@redhat.com> 40043 40044 Just add decls sequentially when reading from DWARF 40045 * src/abg-dwarf-reader.cc (insert_decl_into_ir_under_scope) 40046 (build_namespace_decl_and_add_to_ir, build_enum_type) 40047 (build_class_type_and_add_to_ir, build_ir_node_from_die) 40048 (build_ir_node_from_die): Remove. 40049 * tests/data/test-read-dwarf/test0.abi: Update because now type 40050 IDs can be used before they are defined. 40051 * tests/data/test-read-dwarf/test1.abi: Likewise. 40052 400532014-01-17 Dodji Seketeli <dodji@redhat.com> 40054 40055 Misc Doxygen API doc fixes 40056 * include/abg-comparison.h: Various doxygen api doc string fixes. 40057 * include/abg-diff-utils.h: Likewise. 40058 * include/abg-dwarf-reader.h: Likewise. 40059 * include/abg-ir.h: Likewise. 40060 * include/abg-reader.h: Likewise. 40061 * include/abg-writer.h: Likewise. 40062 * src/abg-comparison.cc: Likewise. 40063 * src/abg-corpus.cc: Likewise. 40064 * src/abg-dwarf-reader.cc: Likewise. 40065 * src/abg-ir.cc: Likewise. 40066 * src/abg-libxml-utils.cc: Likewise. 40067 * src/abg-reader.cc: Likewise. 40068 * src/abg-writer.cc: Likewise. 40069 400702014-01-17 Dodji Seketeli <dodji@redhat.com> 40071 40072 Fix bilint --noout, add --diff option 40073 * tools/bilint.cc (options::options): Initialize ... 40074 (options::{diff, bidiff}): ... new members. 40075 (display_usage): Update the display usage string for --diff & 40076 --bidiff options. 40077 (parse_command_line): Support the --diff and --bidiff options. 40078 (main): Require the --diff option to actually diff the emitted 40079 output with input. Make --noout really work for when reading 40080 from dwarf. 40081 400822014-01-17 Dodji Seketeli <dodji@redhat.com> 40083 40084 Read .abi files with types used before being defined & lots of fixes 40085 * src/abg-reader.cc (read_context::m_decls_stack): Make this is a 40086 std::deque, rather than a std::stack. 40087 (read_context::{get_id_xml_node_map, 40088 clear_id_xml_node_map, get_xml_node_decl_map, 40089 map_xml_node_to_decl, get_decl_for_xml_node, 40090 clear_xml_node_decl_map, map_id_and_node, get_xml_node_from_id, 40091 get_scope_for_node, build_or_get_type_decl}): New member 40092 functions. 40093 (read_context::{get_cur_decl, push_decl, pop_decl}): Update this 40094 now that the decl stack uses a std::deque. 40095 (read_context::clear_decls_stack): New. 40096 (read_context::get_translation_unit): Use the first decl of the 40097 decl stack, that is most certainly the global scope of the current 40098 translation unit, to get the translation unit. 40099 (read_context::key_type_decl): Take a new flag to force the 40100 re-keying; that is set an id to a new type, even if the id was 40101 already set to a type. 40102 (read_context::push_and_key_type_decl): Assert that a type must 40103 have a declaration. 40104 (handle_*): Make these return the decl_base_sptr resulting from 40105 the parsing of the xml node, rather than just a bool. 40106 (walk_xml_node_to_map_type_ids): New static function. 40107 (read_translation_unit_from_input): Read the abi-instr xml 40108 sub-tree once, just to build an id->xml node map. That way, when a 40109 declaration needs a type what is not yet defined, it can just get 40110 its XML node, build the type from it and use it. Do not forget to 40111 advance the xml reader cursor when the reading of the 'abi-instr' 40112 sub-tree is read. Clear all the new maps we have used for the 40113 current translation unit. 40114 (handle_element_node): Cleanup logic. 40115 (build_namespace_decl): Update the new xml node -> decl map, and 40116 use it to avoid building the same namespace twice. 40117 (build_function_parameter): Do not even try to get the type of a 40118 variadic parameter. 40119 (build_function_decl, build_var_decl): Support types that are defined later. 40120 (build_type_decl): Do not build the same type twice. But there 40121 can be several 'unnamed-enum-underlying-type' node. In that case 40122 just return the previous one. 40123 (build_qualified_type_decl, build_pointer_type_def) 40124 (build_reference_type_def, build_enum_type_decl) 40125 (build_typedef_decl): Support underlying type defined later. 40126 (build_class_decl): Support declaration-only related cases where 40127 we can have several xml nodes with the same id. Update the new 40128 xml node -> IR node maps. Fix member type adding. 40129 (build_type_tparameter, build_non_type_tparameter) 40130 (build_template_tparameter): Support used types defined later. 40131 401322014-01-17 Dodji Seketeli <dodji@redhat.com> 40133 40134 Fix member class template creation 40135 * src/abg-ir.cc (class_decl::add_member_class_template): Do not 40136 forget the scope of the member class template itself. 40137 401382014-01-17 Dodji Seketeli <dodji@redhat.com> 40139 40140 Avoid endless loop in unescape_xml_string 40141 * src/abg-libxml-utils.cc (unescape_xml_string): Avoid and endless 40142 loop for strings containing an '&' but that are not pre-defined 40143 entities. 40144 401452014-01-17 Dodji Seketeli <dodji@redhat.com> 40146 40147 Fix a potential crash 40148 * src/abg-ir.cc (decl_base::get_qualified_name): Do not crash if 40149 the scope is empty. 40150 401512014-01-17 Dodji Seketeli <dodji@redhat.com> 40152 40153 Do not loose the member type information when reading them from DWARF 40154 * include/abg-ir.h (class_decl::declaration_): Make this be a 40155 decl_base_sptr so that it can actually be a 40156 class_decl::member_type which underlying type is a class decl. 40157 (class_decl::{set, get}_earlier_declaration): Take or return a 40158 decl_base_sptr rather than a class_decl_sptr. 40159 * src/abg-ir.cc (class_decl::set_earlier_declaration): Take a 40160 decl_base_sptr rather than a class_decl_sptr. 40161 * src/abg-dwarf-reader.cc (die_class_map_type): Make this map take 40162 decl_base_sptr rather than a class_decl_sptr. 40163 (build_class_type_and_add_to_ir): If the class being currently 40164 built is a member class, do not loose that information after it 40165 has been added to its scope. Also, base types and types of member 40166 variables can be member types and should retain that information. 40167 (build_qualified_type): Likewise, the underlying type of a 40168 qualified type shouldn't loose the information about its 40169 potentially being a member type. 40170 (build_pointer_type_def, build_reference_type, build_typedef_type) 40171 (build_var_decl, build_function_decl): Likewise. 40172 401732014-01-17 Dodji Seketeli <dodji@redhat.com> 40174 40175 Fix hashing of member types 40176 * include/abg-ir.h (class_decl::{member_function_template, 40177 member_class_template}): Make these inherit from decl_base, to 40178 comply with class_decl::member_type. 40179 (class_decl_base_spec::{base_spec, member_type, member_function, 40180 member_function_template, member_class_template}::hash): Declare 40181 these hashing functors in the header here. 40182 (class_decl::{member_base, member_type, data_member, 40183 member_function, member_function_template, 40184 member_class_template}::hash::operator()): define these out of 40185 line here. 40186 (type_base::dynamic_hash::operator()): Update this to hash member 40187 things. 40188 * src/abg-writer.cc (write_qualified_type_def) 40189 (write_pointer_type_def, write_class_decl) 40190 (write_reference_type_def, write_enum_type_decl): Add an overload 40191 that takes the type ID to use in the serialization. 40192 (write_member_type): New implementation. 40193 401942014-01-17 Dodji Seketeli <dodji@redhat.com> 40195 40196 A Member class can also be a scope for other decls in DWARF 40197 * include/abg-fwd.h (as_non_member_class_decl): Declare ... 40198 * src/abg-ir.cc (as_non_member_class_decl): ... this new function. 40199 * include/abg-ir.h (class class_decl::member_type): Add more 40200 comments about member types. 40201 * src/abg-dwarf-reader.cc (get_scope_for_die): Use the new 40202 as_non_member_class_decl here. 40203 402042014-01-17 Dodji Seketeli <dodji@redhat.com> 40205 40206 Misc style fixes 40207 * include/abg-ir.h (location_manager::_Impl): Rename this type 40208 into priv. 40209 * src/abg-ir.cc b/src/abg-ir.cc (location_manager::_Impl): 40210 Likewise. 40211 (location_manager::location_manager): Update for the renaming 40212 above. 40213 * src/abg-reader.cc (build_type_decl): Remove useless white space. 40214 (build_enum_type_decl, build_class_decl): Use the _sptr typedef in 40215 the return type. 40216 402172014-01-14 Dodji Seketeli <dodji@redhat.com> 40218 40219 Update namespace comments 40220 * src/abg-dwarf-reader.cc (namespace dwarf_reader): Add apidoc comment. 40221 * src/abg-reader.cc (namespace xml_reader): Update apidoc comment. 40222 402232014-01-14 Dodji Seketeli <dodji@redhat.com> 40224 40225 Expand 'abi-instr' XML element nodes during de-serialization 40226 * src/abg-reader.cc (update_read_context) 40227 (update_depth_info_of_read_context): Remove. 40228 (read_context::{pop_scope, pop_scope_or_abort): New. 40229 (read_context::{push_decl_to_current_scope, 40230 push_and_key_type_decl}): Remove the overloads that take the 40231 'update_depth_info' boolean. 40232 (build_namespace_decl): New static function. 40233 (build_function_decl, build_var_decl, build_type_decl) 40234 (build_qualified_type_decl, build_pointer_type_def) 40235 (build_reference_type_def, build_enum_type_decl, build_type_decl) 40236 (build_class_decl, build_function_tdecl, build_class_tdecl) 40237 (build_type_tparameter, build_type_composition) 40238 (build_non_type_tparameter, build_template_tparameter) 40239 (build_template_parameter, build_type): Remove the 40240 'update_depth_info' boolean from parameters. 40241 (handle_element_node): Renamed handle_element into this. Take an 40242 xml node and a boolean to add the resulting IR node to the IR. 40243 (handle_type_decl, handle_namespace_decl) 40244 (handle_qualified_type_decl, handle_pointer_type_def) 40245 (handle_reference_type_def, handle_enum_type_decl) 40246 (handle_typedef_decl, handle_var_decl, handle_function_decl) 40247 (handle_class_decl, handle_function_tdecl, handle_class_tdecl): 40248 Take an xml node and a boolean to add the resulting IR node to the 40249 IR. 40250 (advance_cursor): No more need to call update_read_context. 40251 (read_translation_unit_from_input): Expand the 'abi-instr' node 40252 into memory so that we walk its XML nodes and build the IR nodes 40253 from them. 40254 (read_location): Remove the overload that was using the xml reader. 40255 (): 40256 402572014-01-14 Dodji Seketeli <dodji@redhat.com> 40258 40259 Misc style fixes 40260 * src/abg-reader.cc (read_context::{get_cur_decl, pop_decl}): Return 40261 decl_base_sptr rather than shared_ptr<decl_base>. 40262 (read_context::push_decl): Take a decl_base_sptr rather than 40263 shared_ptr<decl_base>. 40264 402652014-01-14 Dodji Seketeli <dodji@redhat.com> 40266 40267 Fix apidoc markup 40268 * include/abg-comparison.h (class var_diff): @ref var_decls -> 40269 @ref var_decl. 40270 * src/abg-comparison.cc (function_decl_diff::first_function_decl): 40271 @Return -> @return. 40272 402732014-01-14 Jonathan Wakely <jwakely@redhat.com> 40274 40275 Fix checkout & build instructions 40276 * CONTRIBUTING: Fix Git repository url. 40277 * doc/website/mainpage.txt: Add elfutils into the dependencies 40278 list and fix the repository directory name. Also use autoreconf 40279 -i. 40280 * include/abg-fwd.h: Fix Git repository URL. 40281 402822014-01-13 Dodji Seketeli <dodji@redhat.com> 40283 40284 Tweak dwarf reading test to detect more namespace linking-fu 40285 * tests/data/test-read-dwarf/test0.cc: Define a member function 40286 out-of-line, outside of its namespace. 40287 * tests/data/test-read-dwarf/test0.abi: Update the .abi file. 40288 * tests/data/test-read-dwarf/test0: Update the resulting binary. 40289 402902014-01-13 Dodji Seketeli <dodji@redhat.com> 40291 40292 Add asserts to detect type id mis-management in native format 40293 * read_translation_unit_from_input 40294 (read_translation_unit_from_input): Abort when an element could 40295 not be handled. 40296 (build_function_parameter, build_type_decl, qualified_type_def) 40297 (build_pointer_type_def, build_reference_type_def) 40298 (build_enum_type_decl, build_typedef_decl, build_class_decl) 40299 (build_type_tparameter, build_template_tparameter) 40300 (handle_qualified_type_decl, handle_pointer_type_def) 40301 (handle_reference_type_def, handle_typedef_decl): 40302 Abort when a referred-to type is not found or if a type is defined twice. 40303 403042014-01-13 Dodji Seketeli <dodji@redhat.com> 40305 40306 Misc style fixes 40307 * src/abg-hash.cc 40308 (class_decl::member_function_template::hash::operator()): Remove 40309 useless vertical space. 40310 * src/abg-ir.cc (class_decl::class_decl): Properly indent. 40311 * src/abg-writer.cc (fn_tmpl_shared_ptr_map) 40312 (class_tmpl_shared_ptr_map): Properly indent these typedefs. 40313 403142014-01-13 Dodji Seketeli <dodji@redhat.com> 40315 40316 Optimize comparison & underlying type accessing 40317 * include/abg-ir.h (qualified_type::get_underlying_type) 40318 (pointer_type_def::get_pointed_to_type) 40319 (reference_type_def::get_pointed_to_type) 40320 (typedef_decl::get_underlying_type): Avoid triggering refcount 40321 counter increasing/decreasing here, by returning a reference to 40322 the underlying type. This showed up high on a profile. 40323 ({scope_decl, type_decl, scope_type_decl, namespace_decl, 40324 qualified_type_def, pointer_type_def, reference_type_def, 40325 enum_type_decl, typedef_decl, var_decl, class_decl}::operator==): 40326 Avoid taking the exception-using path of dynamic_cast. This 40327 showed up very high on a profile. 40328 403292014-01-13 Dodji Seketeli <dodji@redhat.com> 40330 40331 Fix reading/writing native xml corpus files 40332 * src/abg-reader.cc (read_context::clear_type_map): New member 40333 function. 40334 (read_translation_unit_from_input): Read up to the next element 40335 node if we are not on an element node already. Clear the type 40336 map. Realize that we might be on the next 'abi-instr' node upon 40337 completion. 40338 (read_corpus_from_input): Read up to the next element node if we 40339 are not on an element node already. It must be an "abi-corpus" 40340 node. THen Advance to the next 'abi-instr' element node before 40341 handing it to read_translation_unit_from_input. 40342 * src/abg-writer.cc (write_context::clear_type_id_map): New member 40343 function. 40344 (write_translation_unit): Call it. 40345 * tools/abg-tools-utils.cc (guess_file_type): Read enough bytes to 40346 detect abi-corpus files magic bytes. 40347 * tools/bilint.cc (main): Do not write the corpus file to the 40348 output stream if --noout has been provided. 40349 403502014-01-13 Dodji Seketeli <dodji@redhat.com> 40351 40352 Escape xml pre-defined entities in native (de-)serialization. 40353 * include/abg-libxml-utils.h (escape_xml_string) 40354 (unescape_xml_string): Declare new functions. 40355 * src/abg-libxml-utils.cc (escape_xml_string) 40356 (unescape_xml_string): Define them. 40357 * src/abg-reader.cc (build_function_decl, build_var_decl) 40358 (build_type_decl, build_enum_type_decl, build_class_decl) 40359 (build_type_tparameter, build_non_type_tparameter) 40360 (build_template_tparameter, handle_namespace_decl) 40361 (handle_typedef_decl): Use unescape_xml_string. 40362 * src/abg-writer.cc (write_type_decl, write_function_decl) 40363 (write_class_decl, write_type_tparameter) 40364 (write_non_type_tparameter, write_template_tparameter): Use 40365 escape_xml_string. 40366 403672014-01-13 Dodji Seketeli <dodji@redhat.com> 40368 40369 Implement hash caching 40370 * include/abg-ir.h (decl_base::hash_): New member. 40371 (decl_base::{g,s}et_hash): New accessors. 40372 (type_base_::cached_hash): Forward-declare new hasher. 40373 (struct type_ptr_equal): New equality predicate. 40374 (type_shared_ptr_equal::operator()): Do not forget to test pointer 40375 equality. 40376 (type_base::cached_hash): Declare new hasher. 40377 * src/abg-hash.cc ({decl_base, type_decl, scope_type_decl, 40378 qualified_type_def, pointer_type_def, reference_type_def, 40379 enum_type_decl, typedef_decl, var_decl, function_decl, 40380 function_decl::parameter, class_decl::data_member, 40381 class_decl::member_function, class_decl, }::hash::operator()): 40382 Implement caching. 40383 (type_base::cached_hash::operator()(const type_base*)): Define. 40384 (type_base::cached_hash::operator() (const type_base_sptr): 40385 Define. 40386 * src/abg-ir.cc (type_ptr_map): Make this map use 40387 type_base::cached_hash instead of type_base::ptr_hash now. 40388 (decl_base::decl_base): Initialize the new 40389 decl_base::hash_. member. 40390 (decl_base::{s,g}et_hash): Define. 40391 (decl_base::operator==(const decl_base& other)): Take the hash in 40392 account to speed up inequality detection. 40393 * src/abg-writer.cc (type_ptr_map): Renamed type_shared_ptr_map 40394 into this. Make it use type_base::cached_hash and type_ptr_equal 40395 instead of type_base::shared_ptr_hash and type_shared_ptr_equal. 40396 (get_id_for_type): Add overload for type_base*. Re-write the 40397 previous overload in terms of this one. 40398 (write_context::m_type_id_map): Use type_ptr_map as the type for 40399 this. 40400 404012014-01-13 Dodji Seketeli <dodji@redhat.com> 40402 40403 Do not canonicalize types anymore; it's slow and luckily not needed 40404 * src/abg-ir.h (translation_unit::canonicalize_type): Remove. 40405 * src/abg-dwarf-reader.cc (canonicalize_and_add_type_to_ir) 40406 (canonicalize_and_insert_type_into_ir) 40407 (canonicalize_and_insert_type_into_ir_under_scope): Remove. 40408 (build_enum_type, build_class_type, build_ir_node_from_die): 40409 Update for removal of type canonicalization. 40410 * src/abg-ir.cc (translation_unit::canonicalize_type): Remove. 40411 404122014-01-13 Dodji Seketeli <dodji@redhat.com> 40413 40414 Fix class scope setting & member type de-serializing from dwarf 40415 * include/abg-fwd.h (add_decl_to_scope, insert_decl_into_scope): 40416 return the decl added to the scope. 40417 (as_non_member_type, get_type_declaration): Declare new entry 40418 points. 40419 * include/abg-ir.h (class decl_base::insert_decl_into_scope): 40420 Update this friend declaration. 40421 (class scope_decl, class_decl): Update the friend add_decl_to_scope 40422 declaration. 40423 (scope_decl::add_member_decl): Return the added decl. 40424 (class_decl_sptr): Move this typedef befoer the class_decl class 40425 declaration. 40426 (class_decl::definition_of_declaration_): New member. 40427 (class_decl::{set_definition_of_declaration, 40428 get_definition_of_declaration}): New accessors. 40429 (class_decl::add_member_decl): Return the added member. 40430 (class_decl::insert_member_type): New member. 40431 (class_decl::member_base::access_specifier): Make this protected. 40432 (class_decl::member_type): Make this inherit from type_vase. 40433 (class_decl::member_type::type_): Remove this member. 40434 (class_decl::member_type::as_type): Remove this accessor. 40435 (class_decl::member_type::operator==(const type_base&)): New. 40436 (class_decl::member_type::operator shared_ptr<type_base>() const): 40437 Remove. 40438 (class_decl::member_type::get_underlying_type): New. 40439 (class_decl::member_type::operator==(const member_type&) const): 40440 New. 40441 * src/abg-comparison.cc 40442 (class_diff::{ensure_lookup_tables_populated, report}): Adjust for 40443 the removal of class_decl::member_type::as_type. 40444 * src/abg-dwarf-reader.cc (scope_stack_type): Change this as a 40445 typedef to stack<scope_decl*>. 40446 (current_scope): Change return type from scope_decl_sptr to 40447 scope_decl*. 40448 (insert_decl_into_scope): New. 40449 (build_namespace_decl_and_add_to_ir): Use insert_decl_into_scope 40450 in lieu of add_decl_to_scope. 40451 (build_class_type_and_add_to_ir): likewise. Link a class 40452 definition to its declaration. Push the current scope on the 40453 scope stack. Use as_non_member_type. Fix setting member types. 40454 (get_scope_for_die): Look through declaration-only classe to get 40455 its definition. 40456 (build_qualified_type, build_pointer_type_def) 40457 (build_reference_type, build_typedef_type, build_var_decl) 40458 (build_function_decl): Use as_non_member_type. 40459 (build_ir_node_from_die): Fix member variable & function adding. 40460 * src/abg-ir.cc (scope_decl::{add_member_decl, 40461 insert_member_decl}): Return the added member. 40462 (add_decl_to_scope): Likewise. 40463 (insert_decl_into_scope): Likewise. 40464 (get_top_most_scope_under): Fix logic. 40465 (get_type_declaration): New overload that return a decl_base*. 40466 (as_non_member_type): New definition. 40467 (class_decl::{get_definition_of_declaration, 40468 set_definition_of_declaration, insert_member_decl}): Likewise. 40469 (class_decl::add_member_decl): Re-write in terms of 40470 class::insert_member_decl. 40471 (class_decl::insert_member_type): New definition. 40472 (class_decl::add_member_type): Re-write in terms of 40473 class_decl::insert_member_type. 40474 (class_decl::remove_member_type): Update for the 40475 class_decl::member_type::as_type removal. 40476 (class_decl::{add_data_member, add_member_function, 40477 add_member_function_template, add_member_class_template}): Call 40478 scope_decl::add_member_decl. 40479 (class_decl::member_type::member_type): Update as the type now 40480 virtually inherits from type_base. 40481 (class_decl::member_type::{set,get}_access_specifier): New 40482 definitions. 40483 (class_decl::member_type::get_underlying_type): Likewise. 40484 (class_decl::member_type::set_scope): Update wrt 40485 class_decl::member_type::as_type -> get_underlying_type rename. 40486 (class_decl::member_type::operator==(const decl_base& other)): 40487 There is no more class_decl::member_type::as_type. 40488 (class_decl::member_type::operator==(const type_base& other)): 40489 New. 40490 (class_decl::member_type::get_pretty_representation): Update wrt 40491 class_decl::member_type::as_type -> get_underlying_type rename. 40492 * src/abg-reader.cc (build_class_decl): New that add 40493 add_member_decl adds even member types, no need to add it 40494 explicitly anymore. 40495 404962014-01-07 Dodji Seketeli <dodji@redhat.com> 40497 40498 Add regression tests for dwarf reading 40499 * tests/test-read-dwarf.cc: New dwarf reading regression test. 40500 * tests/data/test-read-dwarf/test0: New test input. 40501 * data/test-read-dwarf/test0: Likewise. 40502 * data/test-read-dwarf/test0.abi: Likewise. 40503 * data/test-read-dwarf/test0.cc: Likewise. 40504 * data/test-read-dwarf/test1: Likewise. 40505 * data/test-read-dwarf/test1.abi: Likewise. 40506 * data/test-read-dwarf/test1.cc: Likewise. 40507 * tests/Makefile.am: Build the new tests/test-read-dwarf.cc file. 40508 405092014-01-07 Dodji Seketeli <dodji@redhat.com> 40510 40511 Remove useless dependencies in tests/Makefile.am 40512 * tests/Makefile.am: Remove useless *_DEPENDENCIES variables. 40513 405142014-01-07 Dodji Seketeli <dodji@redhat.com> 40515 40516 Support new 'abi-corpus' native XML format (.abi) 40517 * include/abg-reader.h (read_corpus_from_native_xml) 40518 (read_corpus_from_native_xml_file): Declare new entry points. 40519 * include/abg-writer.h (write_corpus_to_native_xml) 40520 (write_corpus_to_native_xml_file): Likewise. 40521 * src/abg-reader.cc (read_translation_unit_from_input): Renamed 40522 read_input into this. Support new 'path' attribute for 40523 'abi-instr' XML element. 40524 (read_corpus_from_input): New static function. 40525 (read_translation_unit_from_file) 40526 (read_translation_unit_from_buffer) 40527 (read_translation_unit_from_istream): Update wrt read_input -> 40528 read_translation_unit_from_input. 40529 (read_corpus_from_native_xml, read_corpus_from_native_xml) 40530 (read_corpus_from_native_xml_file): Define new entry points. 40531 * src/abg-writer.cc (write_translation_unit): Write 'path' 40532 attribute into the 'abi-instr' xml element. 40533 (write_corpus_to_native_xml, write_corpus_to_native_xml_file): 40534 Define new entry points. 40535 * tools/abg-tools-utils.h (file_type::{FILE_TYPE_XML_CORPUS, 40536 FILE_TYPE_ZIP_CORPUS}): New enumerators. 40537 * tools/abg-tools-utils.cc (guess_file_type): Support detection of 40538 the new xml file format containing a document root 'abi-corpus' 40539 root element. 40540 * tools/bidiff.cc (main): Support diffing xml corpus-es and zip 40541 corpus-es. 40542 * tools/bidw.cc (main): Recognize elf files before reading them. 40543 * tools/bilint.cc (main): Support reading xml/zip corpus-es too. 40544 * tests/data/test-read-write/test[0-23].xml: Update 'path' 40545 attribute. 40546 405472014-01-07 Dodji Seketeli <dodji@redhat.com> 40548 40549 Misc style fixes 40550 * include/abg-writer.h (write_translation_unit): Re-indent parms. 40551 * src/abg-writer.cc (write_translation_unit): Likewise. 40552 * test/test-read-write.cc (main): Fix white space. 40553 405542014-01-06 Dodji Seketeli <dodji@redhat.com> 40555 40556 Fix global variables diff reporting in corpus-es 40557 * src/abg-comparison.cc 40558 (corpus_diff::priv::ensure_lookup_tables_populated): Fix a wrong 40559 assert, resulting from a copy paste typo. 40560 405612014-01-06 Dodji Seketeli <dodji@redhat.com> 40562 40563 Add support for global variables in corpus diffing 40564 * include/abg-comparison.h (string_var_ptr_map, changed_var_ptr) 40565 (string_changed_var_ptr_map): New convenience typedefs. 40566 * src/abg-comparison.cc 40567 (corpus_diff::priv::{deleted_vars_,added_vars_,changed_vars_}): 40568 New members. 40569 (corpus_diff::priv::{lookup_tables_empty, clear_lookup_tables}): 40570 Update wrt the new variables related lookup tables. 40571 (corpus_diff::ensure_lookup_tables_populated): Update to populate 40572 variables related lookup tables. 40573 (corpus_diff::report): Update to display added/removed/changed 40574 variables. 40575 405762014-01-06 Dodji Seketeli <dodji@redhat.com> 40577 40578 Misc style fixlets 40579 * include/abg-comparison.h (changed_function_ptr): Fix comment. 40580 * src/abg-comparison.cc (corpus_diff::report): Likewise. 40581 * src/abg-corpus.cc (corpus::is_empty): Likewise. 40582 405832013-12-23 Dodji Seketeli <dodji@redhat.com> 40584 40585 Initial support for diffing ABI corpus files 40586 * include/abg-comparison.h (string_function_ptr_map) 40587 (changed_function_ptr, string_changed_function_ptr_map) 40588 (corpus_diff_sptr): New convenience typedefs. 40589 (translation_unit_diff): Add comments. 40590 (class corpus_diff): New type. 40591 (compute_diff): New overload for corpus_diff. 40592 * include/abg-corpus.h (corpus::{functions, variables}): New 40593 typedefs. 40594 (corpus::{operator==, get_functions, get_variables}): New members. 40595 * include/abg-diff-utils.h (struct deep_ptr_eq_functor): New 40596 functor. 40597 * include/abg-ir.h (translation_unit::operator==): New member 40598 equality operator. 40599 * src/abg-comparison.cc (struct corpus_diff::priv): New private 40600 struct holding the private members of corpus_diff. 40601 (corpus_diff::priv::{lookup_tables_empty, clear_lookup_tables, 40602 ensure_lookup_tables_populated}): Define new private member functions. 40603 (corpus_diff::{corpus_diff, first_corpus, second_corpus, 40604 function_changes, variable_changes, length, report}): New public members. 40605 (struct noop_deleter): New struct. 40606 (compute_diff): New implementation for corpus_diff. 40607 * src/abg-corpus.cc (struct corpus::priv): Renamed corpus::impl 40608 into this. Add new fns, vars and is_symbol_table_built data 40609 members. 40610 (corpus::priv::build_symbol_table): New member function. 40611 (class symtab_build_visitor_type): New visitor type to build the 40612 symbol table. 40613 (struct func_comp, struct var_comp): New comparison functors. 40614 (corpus::priv::build_symbol_table): Define new member function. 40615 (corpus::{corpus, add, get_translation_units, operator==, 40616 get_functions, get_variables}): Define new members. 40617 * src/abg-ir.cc (translation_unit::operator==): Define new member 40618 equality operator. 40619 (operator==(translation_unit_sptr l, translation_unit_sptr r)): 40620 Define new equality operator. 40621 * tools/abg-tools-utils.h (enum file_type): New enum. 40622 (guess_file_type): Declare new function. 40623 * tools/abg-tools-utils.cc (guess_file_type): define new function. 40624 * tools/bidiff.cc (main): Guess the type of the files given in 40625 input and support elf files reading and diffing. 40626 406272013-12-23 Dodji Seketeli <dodji@redhat.com> 40628 40629 Generalize use of equality operator in core diff algorithms 40630 * include/abg-diff-utils.h (struct default_eq_functor): New 40631 equality functor. 40632 (end_of_fr_d_path_in_k, end_of_frr_d_path_in_k_plus_delta): Add a 40633 new equality functor template parameter and document it. Use it 40634 to compare the elements of the sequences given in argument. 40635 (compute_middle_snake, ses_len, compute_diff): Add a new equality 40636 functor template parameter and document it. Adjust call to 40637 end_of_frr_d_path_in_k_plus_delta, end_of_fr_d_path_in_k and 40638 compute_middle_snake. 40639 (ses_len, compute_diff): Add a new overload that uses a 40640 default_eq_functor as comparison functor, to avoid breaking 40641 existing client code. 40642 * src/abg-diff-utils.cc (compute_middle_snake): Adjust the call to 40643 the compute_middle_snake. 40644 406452013-12-23 Dodji Seketeli <dodji@redhat.com> 40646 40647 Change ir node visitor interface work on pointer to nodes 40648 * include/abg-ir.h (ir_traversable_base): New type to be the base 40649 of IR nodes that are to be traversed. Extends traversable_base. 40650 Its ir_traversable_base::traversable() method takes an 40651 ir_node_visitor&. 40652 (ir_node_visitor::visit): Change these virtual overloads to take 40653 pointers to IR nodes, rather than references. This will be useful 40654 to e.g, store these IR nodes in containers on the side for some 40655 algorithms to work. That is going to be useful later to, 40656 e.g. build symbol tables on the side, using the visitor interface. 40657 (class decl_base): Make this inherit ir_traversable_base. 40658 * src/abg-ir.cc (*::traverse): Adjust comments and the call the 40659 ir_node_visitor::visit call. Use the ir_traversable_base type 40660 rather than traversable_base. 40661 (ir_traversable_base::traverse): Define. 40662 (ir_node_visitor::visit): Change these overloads to take pointers 40663 rather than reference to ir nodes. 40664 * tests/test-walker.cc (name_printing_visitor::visit): Adjust to 40665 take pointers rather than references. 40666 406672013-12-23 Dodji Seketeli <dodji@redhat.com> 40668 40669 Do not forget to read function parms 40670 * src/abg-dwarf-reader.cc (build_function_decl): Do not forget the 40671 the function parameters. Oops. 40672 406732013-12-20 Dodji Seketeli <dodji@redhat.com> 40674 40675 Support reading member functions and member types from DWARF 40676 * include/abg-ir.h (method_type_sptr): New convenience typedef. 40677 * src/abg-dwarf-reader.cc (read_context::{dwarf_version, 40678 die_wip_classes_map}): New accessors. 40679 (die_is_virtual): Rename is_virtual into this. 40680 (is_type_tag, is_type_die, die_virtual_function_index): Define new 40681 static functions. 40682 (die_member_offset): Fix comment. 40683 (get_scope_for_die): Take the read context as argument. 40684 (canonicalize_and_add_type_to_ir): Likewise. On NULL scope, get 40685 the current translation unit from the read context. 40686 (canonicalize_and_insert_type_into_ir_under_scope): Handle NULL 40687 context. 40688 (build_function_decl): Support creating method_decls from here 40689 when necessary. 40690 (build_class_type_and_add_to_ir): Rename build_class_type into 40691 this. Handle adding the class to the IR and to the relevant maps. 40692 During the creation of the class, arrange for 40693 build_ir_node_from_die on the current DIE to return a 40694 declaration-only class, representing the declaration for the class 40695 that is being constructed. This breaks circular dependencies 40696 induced by decls/types that refer to the class being built, before 40697 the class is fully built and has a (logical) type ID. Once the 40698 class is created, make it refer to the class declaration that was 40699 previously handed for the requests to the class DIE. Now requests 40700 to the class DIE will just yield the newly built class. Add 40701 support for member functions and member types. 40702 (build_corpus): Support reading the dwarf version and stick it 40703 into the context. 40704 (build_ir_node_from_die): Adjust for change in 40705 canonicalize_and_add_type_to_ir and build_class_type signature 40706 change. 40707 * src/abg-ir.cc (class_decl::method_decl::get_type): Support 40708 returning NULL type. 40709 407102013-12-20 Dodji Seketeli <dodji@redhat.com> 40711 40712 Don't crash in get_global_scope on empty decls 40713 * src/abg-ir.cc (get_global_scope): Don't crash when given a NULL 40714 decl. 40715 407162013-12-20 Dodji Seketeli <dodji@redhat.com> 40717 40718 Make decl_base::set_scope virtual, to work on class_decl::member_type 40719 * include/abg-ir.h (decl_base::set_scope): Make this virtual. 40720 (class_decl::member_type::set_scope): Declare an overload here. 40721 * src/abg-ir.cc (class_decl::member_type::set_scope): Define new 40722 overload. Make this set the scope of the underlying type of the 40723 member type as well. 40724 407252013-12-20 Dodji Seketeli <dodji@redhat.com> 40726 40727 Support artificial parameters 40728 * include/abg-ir.h (function_decl::parameter::{get, 40729 set}_artificial): Add new accessors for an "artificial" flag. 40730 * src/abg-reader.cc (build_function_parameter): Support reading 40731 the artificial parameter flag. 40732 * src/abg-writer.cc (write_function_decl): Support writing the 40733 artificial parameter flag. 40734 407352013-12-19 Dodji Seketeli <dodji@redhat.com> 40736 40737 Initial support for reading struct/class 40738 * src/abg-dwarf-reader.cc (enum virtuality): New enum. 40739 (class expr_result, struct dwarf_expr_eval_context): New types. 40740 (die_size_in_bits) 40741 (die_access_specifier, die_virtuality, is_virtual) 40742 (die_location_expr, op_pushes_constant_value) 40743 (op_pushes_non_constant_value, op_manipulates_stack) 40744 (op_is_arith_logic, op_is_control_flow) 40745 (eval_last_constant_dwarf_sub_expr, die_member_offset) 40746 (build_class_type): New static functions. 40747 (build_ir_node_from_die<DW_TAG_{class, structure}_type>): Support 40748 creating IR node for class and struct by calling the new 40749 build_class_type. 40750 407512013-12-19 Dodji Seketeli <dodji@redhat.com> 40752 40753 Slight style fix 40754 * src/abg-dwarf-reader.cc (build_qualified_type): Fix indentation. 40755 407562013-12-19 Dodji Seketeli <dodji@redhat.com> 40757 40758 Be more forgiving when parsing xml from stdin 40759 * src/abg-libxml-utils.cc (xml_istream_input_read): Return the 40760 byte read count even when the stream seems to be borked. In that 40761 case it should be zero. 40762 407632013-12-19 Dodji Seketeli <dodji@redhat.com> 40764 40765 Don't crash if building pointer/reference yields NULL 40766 * src/abg-dwarf-reader.cc 40767 (build_ir_node_from_die<DW_TAG_pointer_type) 40768 (DW_TAG_rvalue{0,1}_reference_type>): Do not crash if building the 40769 IR node for the underlying type yields NULL. 40770 407712013-12-19 Dodji Seketeli <dodji@redhat.com> 40772 40773 Use dwarf_attr_integrate() rather than dwarf_attr() 40774 * src/abg-dwarf-reader.cc (die_string_attribute) 40775 (die_unsigned_constant_attribute, die_signed_constant_attribute) 40776 (die_flag_attribute, die_die_attribute): Use dwarf_attr_integrate 40777 rather than dwarf_attr to look through DW_AT_abstract_origin. 40778 407792013-12-14 Dodji Seketeli <dodji@redhat.com> 40780 40781 Support enums 40782 * src/abg-dwarf-reader.cc (build_enum_type): New function. 40783 (build_ir_node_from_die): Call the new build_enum_type here to 40784 Handle DW_TAG_enumeration_type DIEs. 40785 407862013-12-14 Dodji Seketeli <dodji@redhat.com> 40787 40788 Build & use a DIE -> parent map to avoid emitting useless types 40789 * include/abg-ir.h (translation_unit::{mark_type_as_used, 40790 prune_unused_types}): Remove these declarations. 40791 * src/abg-ir.cc (translation_unit::priv::used_types_): Remove. 40792 (class subtype_marking_visitor): Likewise. 40793 (translation_unit::{mark_type_as_used, prune_unused_types): 40794 Likewise. 40795 (get_top_most_scope_under): Fix logic and add comment. 40796 * src/abg-dwarf-reader.cc (die_tu_map_type, offset_offset_map): 40797 New convenience typedefs. 40798 (read_context::{die_tu_map_, die_parent_map_}): New context 40799 members. 40800 (read_context::{die_tu_map, die_parent_map}): New accessors. 40801 (build_ir_node_from_die): New overload that takes the scope of the 40802 ir node in parameter. 40803 (die_signed_constant_attribute): Un-comment this. 40804 (build_die_parent_relations_under, build_die_parent_map) 40805 (get_parent_die, get_scope_for_die): New static functions. 40806 (build_translation_unit_and_add_to_ir): Renamed 40807 build_translation_unit into this. Populate the new 40808 read_context::die_tu_map() here. 40809 (canonicalize_and_add_type_to_ir) 40810 (canonicalize_and_insert_type_into_ir) 40811 (canonicalize_and_insert_type_into_ir_under_scope): Move these 40812 overloads over the top of the file. 40813 (build_namespace_decl_and_add_to_ir): Fix this by adding the 40814 namespace to the IR scope of the DIE (using the new 40815 get_scope_for_die()). Update the read_context::die_decl_map() 40816 map. 40817 (build_function_decl): Support functions that return void. Also, 40818 skip parameters that don't have type set. 40819 (build_corpus): Walk all the DIEs to build a DIE -> parent map. 40820 Adjust for the rename to build_translation_unit_and_add_to_ir. 40821 (build_ir_node_from_die): Add a scope parm. Adjust back to 40822 building IR nodes only for public decls, unless the 40823 'called_from_public_decl' flag is set. Adjust to stick the resulting 40824 IR node into the scope given in parameter. 40825 408262013-12-14 Dodji Seketeli <dodji@redhat.com> 40827 40828 Mark sub-types as part of general type marking 40829 * src/abg-ir.cc (subtype_marking_visitor): New visitor. 40830 (translation_unit::mark_type_as_used): When marking a composite 40831 type as used, mark its sub-types as well. 40832 408332013-12-14 Dodji Seketeli <dodji@redhat.com> 40834 40835 Add missing virtual keywords for traverse() method 40836 * include/abg-ir.h ({translation_unit, decl_base, scope_decl, 40837 type_decl, namespace_decl, qualified_type_decl, pointer_type_def, 40838 reference_type_def, enum_type_decl, typedef_decl, var_decl, 40839 function_tdecl, class_decl, class_decl::data_member, 40840 class_decl::member_function, class_decl::member_function_template, 40841 class_decl::member_class_template}::traverse): Add a virtual 40842 keyword at least to "document" that this method is virtual -- and 40843 thus remind the user that it overrides the 40844 traversable_base::traverse(). 40845 408462013-12-14 Dodji Seketeli <dodji@redhat.com> 40847 40848 Add a is_type overload 40849 * include/abg-fwd.h (is_type): Declare new overload that takes a 40850 type reference. 40851 * src/abg-ir.cc (is_type): Define. 40852 408532013-12-13 Dodji Seketeli <dodji@redhat.com> 40854 40855 Prune types that are not ref'ed by public decls 40856 * include/abg-fwd.h (remove_decl_from_scope): Declare new 40857 function. 40858 * include/abg-ir.h (type_base_sptr, decl_base_sptr): Move these 40859 convenience typedef before the translation_unit declaration. 40860 (translation_unit::{mark_type_as_used, prune_unused_types}): 40861 Declare new methods. 40862 (decl_base::remove_member_decl): Likewise. 40863 (class_decl::{remove_member_decl, remove_member_type): Likewise. 40864 * src/abg-dwarf-reader.cc (die_decl_map_type): Change this map 40865 type so that the value is now a DIE offset, rather than a DIE. 40866 This is because many times the lifetime of DIEs is shorter than 40867 the one of the reader_context. Also, the die offset uniquely 40868 designates a physical DIE even if several different instances of 40869 logical DIE might point to it. 40870 (struct die_hash): Remove this as it's useless now that we store 40871 DIE offsets in the map. 40872 (build_translation_unit): Call build_ir_node_from_die w/o setting 40873 the called_from_public_decl flag. Prune the types that are not 40874 used by any public decls. 40875 (build_namespace_decl_and_add_to_ir): all build_ir_node_from_die 40876 w/o setting the called_from_public_decl flag. 40877 (build_ir_node_from_die): Change the only_public_decl flag into a 40878 called_from_public_decl flag. Mark types used by public decls as 40879 such. Adjust for the parm changes of build_qualified_type 40880 build_pointer_type_def, build_reference_type, and 40881 build_typedef_type. 40882 (build_qualified_type, build_pointer_type_def) 40883 (build_reference_type, build_typedef_type): Take a new 40884 called_from_public_decl. Pass it to build_ir_node_from_die. 40885 (build_var_decl): Call build_ir_node_from_die with the 40886 called_from_public_decl flag set to true to flag the types 40887 referenced by this variable as being used. 40888 (build_function_decl): Take a called_from_public_decl flag as 40889 well, as this function can now call build_function_decl itself to 40890 build a function decl out of the value of the DW_AT_specification 40891 attribute, for DIEs representing function definitions. Also, flag 40892 the types referenced by public functions are being used. 40893 * src/abg-ir.cc (translation_unit::priv::used_types_): New map for 40894 the used types. 40895 (translation_unit::{mark_type_as_used, prune_unused_types}): 40896 Define new methods. 40897 (scope_decl::remove_member_decl): Likewise. 40898 (remove_decl_from_scope): Define new function. 40899 (class_decl::{remove_member_decl, remove_member_type}): Define new 40900 methods. 40901 409022013-12-12 Dodji Seketeli <dodji@redhat.com> 40903 40904 Support reading namespaces 40905 * include/abg-fwd.h (get_global_scope): Return a const 40906 global_scope. Add a new overload that takes a naked pointer as 40907 parm. 40908 (insert_decl_into_scope, get_top_most_scope_under): Declare new 40909 entry points. 40910 * include/abg-ir.h (class decl_base, class scope_decl): Add 40911 insert_decl_into_scope as a friend of these classes. 40912 (scope_decl::{insert_decl_into_scope, find_iterator_for_member}): 40913 Declare new member. 40914 (scope_decl::get_member_decls): New non-const overload. 40915 * src/abg-dwarf-reader.cc (build_translation_unit): Remove the 40916 "recurse" parameter. Adjust the call to build_ir_node_from_die to 40917 read just public decls that are at namespace scope. Anything else 40918 should be dropped unless it's needed to emitting the public 40919 namespace-level decls. 40920 (build_namespace_decl_and_add_to_ir) 40921 (canonicalize_and_insert_type_into_ir): Define new static 40922 functions. 40923 (build_corpus): Adjust ad build_translation_unit doesn't have the 40924 "recurse" parameter anymore. 40925 (canonicalize_and_add_type_to_ir): Make this static. Fix 40926 comments. 40927 (build_ir_node_from_die): Take a new "only_public_decl" 40928 parameter. For DW_TAG_base_type case, use the new 40929 canonicalize_and_insert_type_into_ir to insert the type at the 40930 right place in the global scope making sure it is seen before the 40931 current scope. For pointer, references and qualified types, use 40932 canonicalize_and_insert_type_into_ir to add the type at the same 40933 scope as its underlying type. Handle DW_TAG_{namespace,module} 40934 using the new build_namespace_decl_and_add_to_ir function. Add 40935 some vertical spaces and some assertions. 40936 * src/abg-ir.cc (scope_decl::add_member_decl): Use scope_decl_sptr 40937 typedef. 40938 (scope_decl::{insert_member_decl,find_iterator_for_member}): 40939 Define new methods. 40940 (insert_decl_into_scope, get_top_most_scope_under): Define new 40941 functions. 40942 (get_global_scope): Constify the return type. 40943 (get_translation_unit): Adjust as get_global_scope now returns a 40944 const. 40945 * src/abg-reader.cc (get_translation_unit): Likewise. 40946 409472013-12-12 Dodji Seketeli <dodji@redhat.com> 40948 40949 Fix function_decl::parameter::operator== 40950 * include/abg-ir.h (function_decl::parameter::operator==): Support 40951 empty type, e.g, in presence of a variadic parameter. 40952 409532013-12-12 Dodji Seketeli <dodji@redhat.com> 40954 40955 Misc style fixes 40956 * include/abg-ir.h (decl_base::set_visibility): Remove useless 40957 white space. 40958 (class scope_decl): Remove useless white space. 40959 (scope_decl::add_member_decl): Use decl_base_sptr convenience 40960 typedef. 40961 (global_scope_sptr, namespace_decl_sptr): New convenience typedef. 40962 (class global_scope): Remove useless white space. 40963 409642013-12-11 Dodji Seketeli <dodji@redhat.com> 40965 40966 Misc style fixes 40967 * src/abg-dwarf-reader.cc (die_string_attribute, is_public_decl) 40968 (build_translation_unit, build_ir_node_from_die): Fix comments. 40969 (die_unsigned_constant_attribute, die_signed_constant_attribute) 40970 (die_loc_and_name): Align parms. 40971 409722013-12-11 Dodji Seketeli <dodji@redhat.com> 40973 40974 Support typedef types 40975 * src/abg-dwarf-reader.cc (build_typedef_type): Define new static 40976 function. 40977 (canonicalize_and_add_type_to_ir): Do not crash on NULL input 40978 type. Also, add a new overload for smart pointer on scope. 40979 (build_ir_node_from_die): For DW_TAG_base_type case, adjust as 40980 canonicalize_and_add_type_to_ir now takes smart pointers on 40981 scopes. Support the DW_TAG_typedef case by calling the new 40982 build_typedef_type. 40983 409842013-12-11 Dodji Seketeli <dodji@redhat.com> 40985 40986 Support reference types 40987 * src/abg-dwarf-reader.cc (build_pointer_type_def): Do not forget 40988 to get the proper size of the pointer type. 40989 (build_reference_type): Define new static function. 40990 (build_ir_node_from_die): Call build_reference_type for the 40991 DW_TAG_reference_type and DW_TAG_rvalue_reference_type cases. 40992 409932013-12-11 Dodji Seketeli <dodji@redhat.com> 40994 40995 Support pointer types 40996 * include/abg-fwd.h (get_translation_unit, get_global_scope): 40997 Declare new overloads that act on a naked pointer to decl_base. 40998 * src/abg-dwarf-reader.cc (build_pointer_type_def): Define new 40999 static function. 41000 (canonicalize_and_add_type_to_ir): Take a naked pointer to 41001 scope_decl rather than a smart pointer. 41002 (build_ir_node_from_die): For DW_TAG_base_type, adjust. Support 41003 DW_TAG_pointer_type case. For DW_TAG_{const,volatile}_type case, 41004 make sure the qualified type is in the same scope as its 41005 underlying type. 41006 * src/abg-ir.cc (get_global_scope, get_translation_unit): Define 41007 new overloads that acts on a naked decl_base. 41008 410092013-12-11 Dodji Seketeli <dodji@redhat.com> 41010 41011 Support qualified types 41012 * src/abg-dwarf-reader.cc (build_qualified_type) 41013 (canonicalize_and_add_type_to_ir): Define new static functions. 41014 (build_ir_node_from_die): In the DW_TAG_base_type case, use the 41015 new canonicalize_and_add_type_to_ir which is a factorization of 41016 this code. In the DW_TAG_{const,volatile}_type, use the new 41017 build_qualified_type and canonicalize_and_add_type_to_ir 41018 functions. 41019 410202013-12-11 Dodji Seketeli <dodji@redhat.com> 41021 41022 Support reading public functions from DWARF 41023 * src/abg-dwarf-reader.cc (read_context::dwarf_): New member. 41024 (read_context::load_debug_info): Move the content of 41025 load_debug_info_from_elf here. 41026 (read_context::dwarf): New accessor for the dwarf_ member above. 41027 (die_flag_attribute, die_loc_and_name, is_public_decl) 41028 (build_function_decl): New static functions. 41029 (die_location): Do not try to create a location object when the 41030 location has empty file or empty line number. 41031 (build_translation_unit): Take a new address_size parameter. 41032 (build_type_decl): Really take a context parameter. Use the new 41033 die_loc_and_name() here. 41034 (build_var_decl): Skip non-public vars. 41035 (build_corpus): Use dwarf_nextcu instead of dwfl_nextcu, so that 41036 we can get the address_size used in the current CU. Note that for 41037 this we are getting the Dwarf* pointer from the context thanks to 41038 the new read_context::dwarf() getter. Adjust the call to 41039 build_translation_unit to pass it the new address_size. 41040 (build_ir_node_from_die): Shorten lines a little bit. Call the 41041 new build_function_decl to support reading DW_TAG_subprogram DIEs. 41042 (read_corpus_from_elf): Adjust to create the read context earlier 41043 and use its read_context::load_debug_info method to load the debug 41044 info. 41045 410462013-12-11 Dodji Seketeli <dodji@redhat.com> 41047 41048 Make bilint read input from stdin 41049 * include/abg-libxml-utils.h (new_reader_from_istream): Declare 41050 new public entry point. 41051 * src/abg-libxml-utils.cc (xml_istream_input_read) 41052 (xml_istream_input_close): New static functions. 41053 (new_reader_from_istream): Define new public input function. 41054 * include/abg-reader.h (read_translation_unit_from_istream): 41055 Declare new entry points. 41056 * src/abg-reader.cc (read_translation_unit_from_istream): Define 41057 new entry points. 41058 * tools/bilint.cc (options::{read_from_stdin, noout}): New 41059 members. 41060 (display_usage): Document --stdin and --noout. 41061 (parse_command_line): Adjust to consider that no option on the 41062 command line means reading from stdin, just like --stdin. Support 41063 the --noout option as well. 41064 (main): Support Read the abi instr from stdin; in that case, what 41065 was read is just serialized back to stdout, unless --noout was 41066 supplied. 41067 410682013-12-11 Dodji Seketeli <dodji@redhat.com> 41069 41070 Support the "address-size" attribute for <abi-instr> elements 41071 * include/abg-ir.h (translation_unit::translation_unit): Take an 41072 address_size parameter. 41073 (translation_unit::{get_address_size, set_address_size}): New 41074 accessors. 41075 * src/abg-ir.cc (translation_unit::priv::address_size_): New 41076 private member. 41077 (translation_unit::translation_unit): Take an address_size 41078 parameter. 41079 (translation_unit::{get_address_size, set_address_size}): Define 41080 these new methods. 41081 * src/abg-reader.cc (read_input): Read the "address-size" 41082 attribute from the abi-instr element. 41083 * src/abg-writer.cc (write_translation_unit): Write the 41084 "address-size" attribute. 41085 * tests/data/test-read-write/test23.xml: New test input. 41086 * tests/test-read-write.cc (in_out_specs): Add the new test above 41087 to the list of files to read and write back. 41088 410892013-12-11 Dodji Seketeli <dodji@redhat.com> 41090 41091 Support variadic arguments in function decls 41092 * src/abg-reader.cc (build_function_parameter): Support reading 41093 the "is-variadic" attribute. 41094 * src/abg-writer.cc (write_function_decl): Support writing the 41095 "is-variadic" attribute. 41096 * tests/data/test-read-write/test22.xml: New test input. 41097 * tests/test-read-write.cc (in_out_specs): Add the new test to the 41098 list of files to read and write back. 41099 411002013-12-07 Dodji Seketeli <dodji@redhat.com> 41101 41102 Initial support of reading an ABI Corpus from DWARF 41103 * configure.ac: Check the presence of libdw.so and 41104 elfutils/libdwfl.h headers from elfutils and define the necessary 41105 linking flags. 41106 * include/abg-dwarf-reader.h: New header file 41107 * include/Makefile.am: Add the new header file to the source 41108 distribution. 41109 * src/abg-dwarf-reader.cc:: New file. 41110 * src/Makefile.am: Add the new file to the source distribution. 41111 * include/abg-fwd.h (dump): Add declarations for several overloads 41112 to allow dumping to a given output stream. 41113 * include/abg-ir.h (class translation_unit): Use a pimpl idiom for 41114 this now. 41115 (translation_unit::canonicalize_type): Declare new method. 41116 * src/abg-ir.cc (struct translation_unit::priv): New private type 41117 for the pimpl idiom for translation_unit. 41118 (translation_unit::{translation_unit, get_global_scope, get_path, 41119 set_path, get_loc_mgr}): Adjust for pimpl idiom. 41120 (translation_unit::canonicalize_type): Define this new method and 41121 one overload. 41122 * src/abg-writer.cc (dump): Define several overloads to dump IR 41123 nodes to given output streams. 41124 * tools/bidw.cc: New file for the new bidw tool. 41125 * tools/Makefile.am: Define rules to build the new bidw tools. 41126 411272013-12-07 Dodji Seketeli <dodji@redhat.com> 41128 41129 Pass a string by reference rather than by value 41130 * tools/bilint.cc (display_usage): Pass program name by reference. 41131 411322013-12-07 Dodji Seketeli <dodji@redhat.com> 41133 41134 Misc style fixes 41135 * src/abg-ir.cc (location_manager::location_manager) 41136 (translation_unit::{is_empty, traverse, ~translation_unit): Remove 41137 useless vertical white spaces. 41138 * tools/bilint.cc (parse_command_line): Fix indentation. 41139 411402013-12-04 Dodji Seketeli <dodji@redhat.com> 41141 41142 Prepare serialization API for multiple backends 41143 * include/abg-reader.h: New file with abigail::xml_reader APIs. 41144 * include/abg-writer.h: New file with abigail::xml_writer APIs. 41145 * include/Makefile.am: Add the new files above to the source 41146 distribution. 41147 * src/abg-reader.cc: Update top-file comments. 41148 (namespace xml_reader): Rename namespace 41149 reader into this. 41150 (read_to_translation_unit, read_corpus_from_archive): New static 41151 functions. 41152 (read_translation_unit_from_file) 41153 (read_translation_unit_from_file, read_corpus_from_file): New 41154 entry points. 41155 (struct array_deleter): New functor. 41156 (translation_unit::read): Remove this. 41157 * src/abg-writer.cc: Update top file comments. 41158 (namespace xml_writer): Rename namespace 41159 writer into this. 41160 (struct archive_write_ctxt): New internal type. 41161 (create_archive_write_context, write_translation_unit_to_archive) 41162 (write_translation_unit, write_corpus_to_archive): New low level 41163 static functions overloads. 41164 (write_corpus_to_archive, write_translation_unit): Public higher 41165 level overloads. 41166 (translation_unit::write): Remove. 41167 (dump): Update for new xml_writer namespace. 41168 * include/abg-ir.h (translation_unit::{read, write}): Remove these 41169 serialization methods. 41170 * include/abg-corpus.h (corpus_sptr): New convenience typedef. 41171 (corpus::{read, write}): Remove these methods. 41172 * src/abg-corpus.cc (corpus::{read, write}) 41173 (corpus::impl::{serialized_tus, archive}): Remove these members. 41174 (corpus::impl::{get_archive, close_archive, write_tu_to_archive, 41175 read_to_translation_unit}): Remove these methods. 41176 * tests/test-bidiff.cc (main): Update for usage of the new 41177 xml_reader API. 41178 * tests/test-read-write.cc (main): Likewise. Update for the usage 41179 of the new xml_writer API, too. 41180 * tests/test-walker.cc (main): Update for the usage of the new 41181 xml_reader API. 41182 * tests/test-write-read-archive.cc (main): Likewise. And for the 41183 xml_writer API, too. 41184 * tools/biar.cc (add_tus_to_archive, extract_tus_from_archive): Likewise. 41185 * tools/bidiff.cc (main): Likewise, for xml_reader APIs. 41186 * tools/bilint.cc (main): Likewise, for xml_writer APIs, too. 41187 411882013-11-29 Dodji Seketeli <dodji@redhat.com> 41189 41190 Add support for bidiff regression testing 41191 * tests/data/test-bidiff/test-enum0-v0.cc.bi: New input file. 41192 * tests/data/test-bidiff/test-enum0-v1.cc.bi: Likewise. 41193 * tests/data/test-bidiff/test-enum0-report.diff: Likewise. 41194 * tests/data/test-bidiff/test-enum1-v0.cc.bi: Likewise. 41195 * tests/data/test-bidiff/test-enum1-v1.cc.bi: Likewise. 41196 * tests/data/test-bidiff/test-enum1-report.txt: Likewise. 41197 * tests/data/test-bidiff/test-qual-type0-v0.cc.bi: Likewise. 41198 * tests/data/test-bidiff/test-qual-type0-v1.cc.bi: Likewise. 41199 * tests/data/test-bidiff/test-qual-type0-report.txt: Likewise. 41200 * tests/data/test-bidiff/test-struct0-v0.cc.bi: Likewise. 41201 * tests/data/test-bidiff/test-struct0-v1.cc.bi: Likewise. 41202 * tests/data/test-bidiff/test-struct0-report.txt: Likewise. 41203 * tests/data/test-bidiff/test-struct1-v0.cc.bi: Likewise. 41204 * tests/data/test-bidiff/test-struct1-v1.cc.bi: Likewise. 41205 * tests/data/test-bidiff/test-struct1-report.txt: Likewise. 41206 * tests/data/test-bidiff/test-var0-v0.cc.bi: Likewise. 41207 * tests/data/test-bidiff/test-var0-v1.cc.bi: Likewise. 41208 * tests/data/test-bidiff/test-var0-report.txt: Likewise. 41209 * tests/test-bidiff.cc: New file. 41210 * tests/Makefile.am: Build the new runtestbidiff regression test 41211 and add the above to the source distribution. 41212 412132013-11-29 Dodji Seketeli <dodji@redhat.com> 41214 41215 Add missing test inputs to source distribution 41216 * tests/Makefile.am (data/test-read-write/test{17, 18, 19, 20, 41217 21}.xml): Add these test input files to the source distribution. 41218 412192013-11-28 Dodji Seketeli <dodji@redhat.com> 41220 41221 Add diff support for var_decl 41222 * include/abg-comparison.h (class var_diff): New declaration. 41223 (var_diff_sptr): New convenience typedef. 41224 (compute_diff): New overloads for var_diff, decl_base and 41225 type_base. 41226 * src/abg-comparison.cc (try_to_diff): Renamed try_to_diff_types 41227 into this. 41228 (compute_diff_for_types): Adjust for the try_to_diff_types 41229 renaming. Fix comments. 41230 (compute_diff_for_decls): Re-use try_to_diff. Update for 41231 var_decl. 41232 (compute_diff): Define overloads for decl_base, type_base and 41233 var_decl. 41234 (diff_length_of_decl_bases, diff_length_of_type_bases): New static 41235 help functions. 41236 (report_name_size_and_alignment_changes): Renamed 41237 report_size_and_alignment_changes into this. Make it report name 41238 changes as well. 41239 (var_diff::priv): New struct. 41240 (var_diff::{var_diff, first_var, second_var, type_diff, length, 41241 report}): Define methods. 41242 ({qualified_type_diff, enum_diff, class_diff, scope_diff, 41243 function_decl_diff}::report): Do not report 41244 anything if the diff is empty. 41245 (type_decl_diff::length): Fix this. 41246 (type_decl_diff::report): Adjust for renaming to 41247 report_name_size_and_alignment_changes. 41248 412492013-11-28 Dodji Seketeli <dodji@redhat.com> 41250 41251 Add enum_type_decl::get_pretty_representation() 41252 * include/abg-ir.h (enum_type_decl::get_pretty_representation): 41253 Declare new virtual method override. 41254 * src/abg-ir.cc (enum_type_decl::get_pretty_representation): 41255 Define it. 41256 412572013-11-28 Dodji Seketeli <dodji@redhat.com> 41258 41259 Change return type of abigail::is_type() 41260 * include/abg-fwd.h (is_type): Change the return type from bool to 41261 type_base_sptr. 41262 412632013-11-27 Dodji Seketeli <dodji@redhat.com> 41264 41265 Support diff for enum_type_decl 41266 * include/abg-ir.h (enum_type_decl_sptr): New typedef. 41267 (enum_type_decl::enumerator::enumerator): Make default constructor 41268 public so that enumerators can be stored in vectors. Maybe I 41269 should have made stored pointers to enumerators instead ... 41270 (enum_type_decl::enumerator::get_qualified_name): Define new 41271 method. 41272 * include/abg-comparison.h (string_enumerator_map) 41273 (changed_enumerator, string_changed_enumerator_map) 41274 (enum_diff_sptr): New convenience typedefs. 41275 (class enum_diff): Declare new class. 41276 (compute_diff): New overload for enum_type_decl. 41277 * src/abg-comparison.cc (enum diff_kind, report_mem_header): Move 41278 these at the beginning of the file. 41279 (struct enum_diff::priv): Define this. 41280 (enum_diff::{clear_lookup_tables, lookup_tables_empty, 41281 ensure_lookup_tables_populated, enum_diff, first_enum, 41282 second_enum, underlying_type_diff, deleted_enumerators, 41283 inserted_enumerators, changed_enumerators, length, report}): 41284 Define these new methods. 41285 (compute_diff): New overload for enum_diff. 41286 (compute_diff_for_types): Add support enum_type_decl here. 41287 412882013-11-27 Dodji Seketeli <dodji@redhat.com> 41289 41290 Fix equality operator for enum_type_decl 41291 * src/abg-ir.cc (enum_type_decl::operator==(const type_base& o)): 41292 This was comparing just the decl_base and type_base part of the 41293 enum. Now re-use the enum_type_decl::operator==(const decl_base) 41294 that compares the entirety of the types. 41295 412962013-11-27 Dodji Seketeli <dodji@redhat.com> 41297 41298 Fix indentation and wording of some existing diff reports 41299 * src/abg-comparison.cc (class_diff::report): Fix report wording. 41300 Change indentation space from 4 white spaces to two. 41301 (scope_diff::report): Fix logic indentation generation. 41302 413032013-11-26 Dodji Seketeli <dodji@redhat.com> 41304 41305 Change enum_type_decl::enumerators from a list to a vector 41306 * include/abg-ir.h (enum_type_decl::enumerators): Change this from 41307 a list to a vector. 41308 * src/abg-hash.cc (enum_type_decl::hash::operator()): Use the 41309 typedef enum_type_decl::enumerators rather than std::list<blah>. 41310 * src/abg-ir.cc (enum_type_decl::get_enumerators): Use 41311 the enum_type_decl::enumerators typedef. 41312 (enum_type_decl::operator==): Likewise. 41313 * src/abg-reader.cc (build_enum_type_decl): Likewise. 41314 * src/abg-writer.cc (write_enum_type_decl): Likewise. 41315 413162013-11-25 Dodji Seketeli <dodji@redhat.com> 41317 41318 Fix thinko in qualified_type_diff::length 41319 * src/abg-comparison.cc (qualified_type_diff::length): Fix thinko. 41320 413212013-11-25 Dodji Seketeli <dodji@redhat.com> 41322 41323 Support diff between qualified types 41324 * include/abg-ir.h (qualified_type_def_sptr): Declare new typedef. 41325 (class qualified_type_def): Add comment at the end. 41326 (operator<<(std::ostream&, qualified_type_def::CV)): Declare new 41327 streaming operator. 41328 * src/abg-ir.cc (operator<<(std::ostream&, 41329 qualified_type_def::CV)): Define this new streaming operator. 41330 * include/abg-comparison.h (class qualified_type): Declare new 41331 class. 41332 (compute_diff): Declare new overload for qualified_type_def_sptr. 41333 * src/abg-comparison.cc (struct qualified_type_diff::priv): Define 41334 new type. 41335 (qualified_type_diff::{qualified_type_diff, first_qualified_type, 41336 second_qualified_type, underlying_type_diff, length}): 41337 Define new methods. 41338 (get_leaf_type): Define new static function. 41339 (compute_diff): Define overload for qualified_type_def_sptr. 41340 (compute_diff_for_types): Add support for 41341 diffing qualified_type_def here. 41342 413432013-11-25 Dodji Seketeli <dodji@redhat.com> 41344 41345 Cleanup header of changes of underlying types of pointers/references 41346 * src/abg-comparison.cc ({pointer_diff, reference_diff}::report): 41347 Unify header of changes in the referenced type. 41348 * src/abg-ir.cc (decl_base::get_pretty_representation): By 41349 default, do not prefix types with "type ", for consistency sake. 41350 413512013-11-25 Dodji Seketeli <dodji@redhat.com> 41352 41353 Ensure diff types can only be created by compute_diff 41354 * include/abg-comparison.h (diff::diff): Make constructor 41355 protected. 41356 (pointer_diff::pointer_diff): Likewise. 41357 (pointer_diff::{first_pointer, second_pointer}): Constify the 41358 return type. 41359 (compute_diff): Make this a friend of class pointer_diff. 41360 (reference_diff::reference_diff): Make this constructor protected. 41361 (compute_diff): Make this a friend of class reference_diff. 41362 (class_diff::class_diff): Make this constructor protected. 41363 (compute_diff): Make this a friend of class class_diff. 41364 (scope_diff::scope_diff): Make this constructor protected. 41365 (compute_diff): Make this a friend of class scope_diff. 41366 (function_decl_diff::function_decl_diff): Make this constructor 41367 protected. 41368 (type_decl_diff::type_decl_diff): Likewise. 41369 (typedef_diff::typedef_diff): Likewise. 41370 (translation_unit_diff::translation_unit_diff): Likewise. 41371 (compute_diff): Make this a friend of class translation_unit_diff. 41372 * src/abg-comparison.cc (pointer_diff::{first_pointer, 41373 second_pointer}): Constify return type. 41374 413752013-11-21 Dodji Seketeli <dodji@redhat.com> 41376 41377 Add size/alignment info to class diff report 41378 * src/abg-comparison.cc (represent): Move these static overloads 41379 to the beginning of the file. 41380 (report_size_and_alignment_changes): New function. It has been 41381 factorized out of ... 41382 (type_decl_diff::report): ... this. 41383 (class_diff::report): Use the new 41384 report_size_and_alignment_changes to report size/alignment info 41385 for classes. 41386 413872013-11-21 Dodji Seketeli <dodji@redhat.com> 41388 41389 Style fix 41390 * src/abg-comparison.cc (class_diff::report): Rename first_class 41391 into first and second_class into second. 41392 413932013-11-21 Dodji Seketeli <dodji@redhat.com> 41394 41395 Misc diff reporting nits 41396 * include/abg-ir.h (type_decl::get_pretty_representation): New 41397 overload. 41398 * abg-ir.cc (type_decl::get_pretty_representation): Implement it. 41399 * src/abg-comparison.cc (represent, class_diff::report): Quote the 41400 pretty representation of abi artifacts in the report. 41401 (type_decl_diff::report): Better wording to express type_decl 41402 change. 41403 414042013-11-20 Dodji Seketeli <dodji@redhat.com> 41405 41406 Support reporting changed data member in class 41407 * include/abg-ir.h (operator<<(std::ostream&, decl_base::binding)) 41408 (operator<<(std::ostream&, class_decl::access_specifier)): Declare 41409 new streaming operators. 41410 (class_decl::member_type::get_pretty_representation): New virtual 41411 overload. 41412 * src/abg-ir.cc (operator<<(std::ostream&, decl_base::binding)): 41413 (operator<<(std::ostream&, class_decl::access_specifier)): Define 41414 new streaming operators. 41415 (class_decl::member_type::get_pretty_representation): Define new method. 41416 * src/abg-comparison.cc (represent): Make the existing overloads 41417 end by a newline. Add a new overload that represents the changes 41418 that happened a given data member. 41419 (enum diff_kind): New. 41420 (report_mem_header): Renamed report_num_dels_or_ins into this. 41421 Make it support introducing changed members as well as 41422 deletions/insertions. 41423 (class_diff::report): Adjust for the report_num_dels_or_ins -> 41424 report_mem_header change. Use the new represent() overload to 41425 report about changed data members. Adjust logic now that 41426 represent() emits a newline at its end. Also adjust logic as far 41427 as representing base classes and member types changes is 41428 concerned. 41429 (type_decl_diff::report): Remove useless white space. 41430 414312013-11-20 Dodji Seketeli <dodji@redhat.com> 41432 41433 Ensure that *::report adds just one empty line to its content 41434 * include/abg-comparison.h (diff::report): Add a comment saying 41435 that each the diff::report interface must leave one empty line at 41436 the end of the report. 41437 * src/abg-comparison.cc ({pointer_diff, reference_diff, 41438 class_diff, scope_diff, function_decl_diff, type_decl_diff, 41439 typedef_diff}::report): Leave just one 41440 empty line after content. 41441 414422013-11-20 Dodji Seketeli <dodji@redhat.com> 41443 41444 Various doxygen doc additions and fixes 41445 * include/abg-comparison.h: Lots of doc string additions & fixes, 41446 especially for typedefs. 41447 * include/abg-ir.h: Likewise. 41448 * src/abg-comparison.cc: Likewise. 41449 * src/abg-ir.cc: Likewise. 41450 414512013-11-20 Dodji Seketeli <dodji@redhat.com> 41452 41453 Better support changed base classes and member types 41454 * include/abg-comparison.h (class_diff::{clear_lookup_tables, 41455 lookup_tables_empty, ensure_lookup_tables_populated}): Declare new 41456 methods. 41457 (compute_diff): Make this a friend of class_diff. 41458 * src/abg-comparison.cc (class_diff::priv::{deleted_bases_, 41459 inserted_bases_, changed_bases_, deleted_member_types_, 41460 inserted_member_types_, changed_member_types_, 41461 deleted_data_members_, inserted_data_members_, 41462 changed_data_members_, deleted_member_class_tmpls_, 41463 inserted_member_class_tmpls_, changed_member_class_tmpls_}): 41464 Define new members. 41465 (class_diff::priv::{base_has_changed, member_type_has_changed, 41466 data_member_has_changed}): Declare and define new methods. 41467 (class_diff::{clear_lookup_tables, lookup_tables_empty, 41468 ensure_lookup_tables_populated}): Define new methods. 41469 (class_diff::report): Detect and report when a base class or a 41470 member type has changed, as opposed to just saying that it has 41471 been removed and inserted. Fix the rest of the function to avoid 41472 emitting useless vertical space and avoid saying that the class 41473 has "zero" insertion/deletion of a given kind of member. 41474 (scope_diff::report): avoid saying that the scope has "zero" 41475 insertion/deletion of a given kind of member. Avoid useless 41476 vertical spaces. 41477 (type_decl_diff::report): Avoid useless vertical spaces. 41478 414792013-11-19 Dodji Seketeli <dodji@redhat.com> 41480 41481 Add bilint tool to validate bi files somewhat. 41482 * tools/bilint.cc: New file. 41483 * tools/Makefile.am: Build and install the new file above. 41484 414852013-11-19 Dodji Seketeli <dodji@redhat.com> 41486 41487 Add diff support for typedef_decl and type_decl 41488 * include/abg-ir.h (operator<<(std::ostream&, 41489 decl_base::visibility)): Declare new streaming operator. 41490 * src/abg-ir.cc (operator<<(std::ostream&, 41491 decl_base::visibility)): Define it. 41492 (type_decl::{operator==, get_pretty_representation}): Likewise, 41493 define these new overloads. 41494 (decl_base::{operator==, get_pretty_representation}): New overloads. 41495 * include/abg-comparison.h (type_decl_diff type_decl_diff_sptr, 41496 typedef_diff, typedef_diff_sptr): Declare new classes and 41497 typedefs. 41498 * src/abg-comparison.cc (type_decl_diff::{type_decl_diff, 41499 first_type_decl, second_type_decl, length, report}): New methods 41500 definitions. 41501 (compute_diff): New function definition that takes pointers of 41502 type_decl. 41503 (typedef_diff::{typedef_diff, first_typedef_decl, 41504 second_typedef_decl, underlying_type_diff, length, report}): New 41505 methods. 41506 (compute_diff): New function definition that takes pointers of 41507 typedef_decl. 41508 (try_to_diff_types): New template function, factorized out of ... 41509 (compute_diff_for_types): ... this. Add support diffing type_decl 41510 and typedef_decl. 41511 (pointer_diff::report): Fix indentation of emitted report. 41512 * tools/bidiff.cc (parse_command_line): Fix style. 41513 415142013-11-19 Dodji Seketeli <dodji@redhat.com> 41515 41516 Avoid missing member types while reading bi files 41517 * include/abg-fwd.h (get_type_declaration): Declare function. 41518 * include/abg-ir.h (class decl_base): Add class_decl as a friend. 41519 This to be able to call decl_base::set_scope from class_decl. 41520 (scope_decl::add_member_decl): Make this virtual protected, so 41521 that it can be called (virtually) from e.g, class_decl. 41522 (type_decl_sptr, typedef_decl_sptr): New convenience typedefs. 41523 (class_decl::add_member_decl): New virtual overload for 41524 scope_decl::add_member_decl. 41525 (class_decl::{add_member_type, add_data_member, 41526 add_member_function}): New overloads. 41527 * src/abg-ir.cc (add_decl_to_scope): Benign style cleanup. 41528 (get_type_declaration): Define new function. 41529 (class_decl::add_member_decl): New method. 41530 (class_decl::add_member_type): Avoid silently added a new member 41531 type when that member type has already been (perhaps 41532 inadvertently) added to a scope already. Rather, put a strict 41533 assert in place there. Also add a new overload that constructs 41534 the member type out of a classic type and adds it to the class. 41535 (class_decl::{add_data_member, add_member_function}): Likewise. 41536 (class_decl::{add_member_function_template, 41537 add_member_class_template}): Avoid silently added a new member 41538 template when that template has already been (perhaps 41539 inadvertently) added to a scope already. Rather, put a strict 41540 assert in place there. 41541 * src/abg-reader.cc (push_decl_to_current_scope): Take a an extra 41542 flag saying if the current decl should be added to the current 41543 scope as well (in addition to being pushed onto the stack of 41544 scopes maintained in the reader context). 41545 (push_and_key_type_decl): Likewise, take that extra flag and pass 41546 it to push_decl_to_current_scope. 41547 (build_function_decl, build_var_decl, build_type_decl) 41548 (build_qualified_type_decl, build_pointer_type_def) 41549 (build_reference_type_def, build_enum_type_decl, build_typedef_decl) 41550 (build_function_tdecl, build_class_tdecl): Likewise. 41551 (build_class_decl): Likewise. When building member data, types, 41552 and functions, make sure /not/ to add the data, type of function to 41553 the current scope before adding it to the class_decl. This was 41554 making the member not being added to the class because it already 41555 had a scope. 41556 (build_type_tparameter, build_type_composition) 41557 (build_non_type_tparameter, build_template_tparameter) 41558 (build_type): Adjust to add the template parm to the current scope 41559 explicitly, like previously. 41560 (handle_type_decl): Use build_type_decl function. Add the 41561 type_decl to the current scope, like previously. 41562 (handle_namespace_decl, handle_qualified_type_decl) 41563 (handle_pointer_type_def, handle_reference_type_def) 41564 (handle_enum_type_decl, handle_typedef_decl, handle_var_decl) 41565 (handle_function_decl, handle_class_decl, handle_function_tdecl) 41566 (handle_class_tdecl): Adjust to add the decl to the current scope, 41567 like previously. 41568 * tests/data/test-read-write/test21.xml: New test input with 41569 member type(def). 41570 415712013-10-24 Dodji Seketeli <dodji@redhat.com> 41572 41573 Avoid tabs and add const/virtual/offsets to class member diff reports 41574 * include/abg-ir.h (class_decl::get_num_virtual_functions): New 41575 declaration. 41576 * src/abg-ir.cc (class_decl::get_num_virtual_functions): New 41577 definition. 41578 (function_decl::get_pretty_representation): Represent 41579 destructors and const member functions. 41580 * src/abg-writer.cc (write_cdtor_const_static): Take a new bool 41581 parm for constness and serialize it. 41582 (write_class_decl): Serialize member functions & function template 41583 const-ness. 41584 * src/abg-reader.cc (read_cdtor_const): Read the "const" xml 41585 attribute, rather than "is_const". 41586 415872013-10-24 Dodji Seketeli <dodji@redhat.com> 41588 41589 Fix num insertions reporting in member functions 41590 * src/abg-comparison.cc (class_diff::report): Fix num insertions 41591 reporting. 41592 415932013-10-24 Dodji Seketeli <dodji@redhat.com> 41594 41595 Serialize vtable offset for virtual functions 41596 * include/abg-ir.h 41597 (class_decl::member_function::get_vtable_offset): Renamed 41598 class_decl::member_function::get_vtable_offset_in_bits into this. 41599 The offset is an index into a table; it's not a value in bits. 41600 * src/abg-hash.cc (class_decl::member_function::hash): Update wrt 41601 function name change above. 41602 * src/abg-ir.cc (class_decl::member_function::operator==): 41603 Likewise. 41604 * src/abg-reader.cc (build_class_decl): Rename the attribute 41605 vtable-offset-in-bits into vtable-offset. 41606 * src/abg-writer.cc (write_voffset): New function. 41607 (write_class_decl): Use the new write_voffset. Cleanup. 41608 416092013-10-24 Dodji Seketeli <dodji@redhat.com> 41610 41611 White space and style fixes 41612 * include/abg-ir.h (class_decl::member_function::member_function): 41613 Align function parameters. 41614 * src/abg-ir.cc (type_decl::operator==): Remove useless white spaces 41615 416162013-10-24 Dodji Seketeli <dodji@redhat.com> 41617 41618 Do not report added/removed type_decls 41619 * src/abg-comparison.cc (scope_diff::report): Do not report 41620 added/removed type_decls. 41621 416222013-10-24 Dodji Seketeli <dodji@redhat.com> 41623 41624 Fix string representation for variables and methods 41625 * src/abg-ir.cc (var_decl::get_pretty_representation): Don't use 41626 the pretty representation for the type of the variable; just use 41627 its qualified name. 41628 (method_type::set_class_type): I wonder what I was thinking when 41629 setting the first parameter's type to being the type of the 41630 class. Remove this. 41631 (function_decl::get_pretty_representation): Use the "method " 41632 prefix for methods. Avoid printing the first parameter of 41633 methods. Use the qualified name of the parameter type, rather 41634 than its pretty representation. 41635 * src/abg-writer.cc (write_class_decl): Do not skip the first 41636 function parameter when serializing the method. 41637 416382013-10-24 Dodji Seketeli <dodji@redhat.com> 41639 41640 Support reporting removed types/decls 41641 * include/abg-comparison.h (scope_diff::{removed_types, 41642 removed_decls, added_types, added_decls}): New accessor methods 41643 declarations. 41644 * src/abg-comparison.cc (scope_diff::{removed_types, 41645 removed_decls, added_types, added_decls}): New accessor methods 41646 definitions. 41647 (scope_diff::report): Report removed & added types/decls. 41648 416492013-10-24 Dodji Seketeli <dodji@redhat.com> 41650 41651 Fix erratic reporting of changed types & decls in scopes 41652 * src/abg-comparison.cc 41653 (scope_diff::ensure_lookup_tables_populated): A changed type/decl 41654 is not only one that has been both deleted and inserted (as is a 41655 type/decl with a given name N has been deleted and a type/decl 41656 with that same name N has been inserted), but we must also ensure 41657 that both inserted and deleted type/decl are not the same. 41658 Otherwise, it might has been a type/decl that has been shuffled 41659 around. 41660 416612013-10-24 Dodji Seketeli <dodji@redhat.com> 41662 41663 Fix some class & scope diff reports formatting glitchs 41664 * src/abg-comparison.cc (class_diff::report): Quote data members. 41665 (scope_diff::report): Simplify how we report changed types. Avoid 41666 unnecessary vertical spaces. 41667 416682013-10-24 Dodji Seketeli <dodji@redhat.com> 41669 41670 Pretty representation for variables and types by default 41671 * include/abg-ir.h (var_decl::get_pretty_representation): New 41672 method declaration. 41673 * src/abg-ir.cc (decl_base::get_pretty_representation): Prefix 41674 types with the "type " string. 41675 (var_decl::get_pretty_representation): New method definition. 41676 416772013-10-24 Dodji Seketeli <dodji@redhat.com> 41678 41679 Re-write middle snakes management in core diff algorithms 41680 * include/abg-diff-utils.h (point::set): New overload.. 41681 (point::{add, operator<, operator>, operator<=, operator>=}): New 41682 methods. 41683 (point::operator!=): Constify. 41684 (point::operator==): Constify. Cleanup. 41685 (point::operator=): Keep emptiness. 41686 (class snake): New class definition 41687 (d_path_vec::{over_bounds, offset}): New methods. 41688 (d_path_vec::check_index_against_bound): Don't take a bound 41689 parameter anymore. Use the new over_bound method above. Fix up 41690 error reporting. 41691 (d_path_vec::d_path_vec): Fix d_path_vec size allocation. 41692 (d_path_vec::operator[]): Use the d_path_vec::at method to check 41693 all accesses against the bounds. This is slower, but at least we 41694 can expect to have something that is more robust. We can remove 41695 the bound checking later when we are sure the code has been tested 41696 enough. Also use the new offset() method. 41697 (d_path_vec::at): Take long long. 41698 (ends_of_furthest_d_paths_overlap): Constify input parameters. 41699 (end_of_fr_d_path_in_k, end_of_frr_d_path_in_k_plus_delta): Take 41700 an instance of the new snake in parameter, rather than a bare end 41701 point that wasn't carrying enough information about the snake. 41702 Record the snake which consists of up to four points: a begin 41703 point, an intermediate point, a diagonal start point and an end 41704 point. Return that snake upon successful completion. 41705 (compute_middle_snake): Take an instance of snake, rather than the 41706 two points that were supposed to represent a snake and with which 41707 we were loosing information before. Revisit/simplify the logic of 41708 this function; this literally goes forward or in reverse, gets the 41709 resulting snake returned by the end_of_fr_d_path_in_k and 41710 end_of_frr_d_path_in_k_plus_delta functions, detect if these snakes 41711 overlap and just return the current snake. Much simpler. The 41712 caller now gets a snake, which has much more information than the 41713 previous snake approximation made of just two points. Bonus 41714 point, this follows almost to the word, what the paper says. 41715 (maybe_record_match_point, find_snake_start_point): Remove these 41716 as there are not used by compute_middle_snake anymore. 41717 (print_snake, ses_len): Update these to take/handle a snake. 41718 (snake_end_points): New declaration. 41719 (compute_diff): When we are getting an empty first sequence, this 41720 means that we are inserting the second sequence *before* the 41721 beginning of the first sequence; keep this information by setting 41722 the insertion point index to -1, rather than zero. Update this to 41723 get/handle snakes, rather than free points vaguely representing 41724 snakes. Now that compute_middle_snake returns real snakes, handle 41725 the information we are getting. Basically for edit scripts of 41726 length equal to 1, as the snake carries all the necessary 41727 information about the non-diagonal edge (as well as the diagonal 41728 edges), we (can) now precisely update the current edit script (as 41729 well as the longest common sub-sequence). For edit scripts of 41730 length greater than 1, better at which points to divide the 41731 problem and consequently, at which points to conquer it back -- 41732 better following The Paper to the letter. 41733 (display_edit_script): Update this for the use of instances of 41734 snake. 41735 * src/abg-diff-utils.cc (ends_of_furthest_d_paths_overlap): Update 41736 for constification of inputs. 41737 (snake_end_points): Define new function. 41738 (compute_middle_snake): Adapt for the taking an instance of snake. 41739 * tests/test-diff2.cc (main): Update for using instances of snake. 41740 * tests/test-core-diff.cc: Add new tests. 41741 * tests/data/test-core-diff/report0.txt: Update for output 41742 adaptation. 41743 * tests/data/test-core-diff/report6.txt: Likewise. 41744 * tests/data/test-core-diff/report7.txt: Likewise. 41745 * tests/data/test-core-diff/report8.txt: New test data. 41746 * tests/data/test-core-diff/report9.txt: Likewise. 41747 * tests/data/test-core-diff/report10.txt: Likewise. 41748 * tests/data/test-core-diff/report11.txt: Likewise. 41749 * tests/data/test-core-diff/report12.txt: Likewise. 41750 * tests/data/test-core-diff/report3.txt: Likewise. 41751 417522013-10-19 Dodji Seketeli <dodji@redhat.com> 41753 41754 Support diff/reporting for functions & better diff/report in general 41755 * include/abg-ir.h ({decl_base, class_decl, 41756 function_decl}::get_pretty_representation): New virtual member to 41757 get a pretty string name for decls & types. 41758 (class_decl::parameter): Add an index to the parameter type. 41759 (class_decl::parameter::parameter): Update the constructor for the 41760 change above. 41761 (class_decl::parameter::{get_index, set_index}): Accessors for the 41762 new index. 41763 (class_decl::parameter::operator==): Take in account the index. 41764 (function_type::append_parameter): Set the index of the parameter 41765 here. 41766 * include/abg-fwd.h (get_type_name): New declaration. 41767 * src/abg-ir.cc (get_type_name): New definition. 41768 ({decl_base, function_decl, 41769 class_decl}::get_pretty_representation): New implementations. 41770 (method_type::set_class_type): Update this to set function 41771 parameter's index by default. 41772 (function_decl::append_parameters): Use the append_parameter 41773 method from function_type. 41774 * include/abg-comparison.h (class function_decl_diff): New type 41775 declaration. 41776 * src/abg-comparison.cc (compute_diff_for_decls, compute_diff): 41777 New definitions. 41778 ({pointer_diff, class_diff, scope_diff}::report): Use the new 41779 get_pretty_representation. Output a prettier report. 41780 (function_decl_diff::priv): New type. 41781 (function_decl_diff::{deleted_parameter_at, inserted_parameter_at, 41782 ensure_lookup_tables_populated, function_decl_diff, 41783 first_function_decl, second_function_decl, changed_parms, 41784 removed_parms, added_parms, length, report}): New member function 41785 definitions. 41786 * src/abg-hash.cc (function_decl::parameter::hash): Update this to 41787 take the index in account. 41788 417892013-10-19 Dodji Seketeli <dodji@redhat.com> 41790 41791 Misc style & white space fixes 41792 * include/abg-fwd.h (is_global_scope, is_at_global_scope) 41793 (is_at_class_scope, is_at_template_scope, is_template_parameter) 41794 (is_type, is_var_decl, is_template_parm_composition_type) 41795 (is_template_decl, is_function_template_pattern) 41796 (add_decl_to_scope, get_global_scope, get_translation_unit): 41797 Remove parameter names from declarations. 41798 * include/abg-ir.h (decl_base::set_location): Remove useless white 41799 space. 41800 (struct type_shared_ptr_equal): Fix comment filling. 41801 418022013-10-16 Dodji Seketeli <dodji@redhat.com> 41803 41804 Avoid useless hashing during serialization 41805 * src/abg-writer.cc (write_context::get_id_for_type): Avoid the 41806 useless hashing incurred by the [] operator on the map, when we 41807 already have the value we want. 41808 418092013-10-16 Dodji Seketeli <dodji@redhat.com> 41810 41811 Add more IR nodes dumping routines 41812 * include/abg-fwd.h (dump): Declare 4 overloads for the dumping 41813 routines. 41814 * include/abg-ir.h (var_decl_sptr): New typedef. 41815 * src/abg-writer.cc (dump(const decl_base_sptr)): Add comments. 41816 (dump(const type_base_sptr)): New dumping routines. 41817 (dump(const var_decl_sptr)): Likewise. 41818 418192013-10-16 Dodji Seketeli <dodji@redhat.com> 41820 41821 Fix IR node comparison bugs 41822 * include/abg-ir.h (type_shared_ptr_equal::operator()): Fix thinko 41823 in checking for the boolean value of the pointers to types. 41824 * src/abg-ir.cc (type_decl::operator==(const decl_base&)): Do not 41825 forget to compare the decl_base part of the type too. 41826 (type_decl::operator==(const type_base&)): To ease maintenance, 41827 re-use the equality operator that takes a decl_base. 41828 (scope_type_decl::operator==(const type_base&)): Likewise. 41829 (qualified_type_def::operator==(const type_base&)): Likewise. 41830 (compare_function_types): New sub-routine to compare function 41831 types. It fixes an infinite recursion when comparing two methods 41832 of the same class. 41833 (function_type::operator==(const type_base&)): Use the new 41834 compare_function_types function. 41835 (class_decl::operator==(const decl_base&)): Fix a thinko in the 41836 first test of the function. Use a dedicated scope for each class 41837 section comparison; that way, there won't be any chance to misuse 41838 the variables pertaining to a different section. Fix the member 41839 function sections; we were mistakenly using the variables for the 41840 *data* section there. 41841 (class_decl::operator==(const type_base&)): Re-use the operator 41842 that takes a decl_base. 41843 (class_decl::operator==(const class_decl&)): Don't remove 41844 const-ness during the static cast. 41845 (class_decl::member_function::operator==(const member_function&)): 41846 Do not remove the reference from the static cast. 41847 (class_decl::member_class_template::operator==(const 41848 member_base&)): Likewise. 41849 (type_tparameter::operator==(const template_parameter&)): 41850 Likewise. 41851 (template_tparameter::operator==(const template_parameter&)): 41852 Likewise. 41853 (function_tdecl::operator==(const template_decl&)): Likewise. 41854 (class_tdecl::operator==(const template_decl&)): Likewise. 41855 (class_tdecl::operator==(const class_tdecl&)): Likewise. 41856 * tests/data/test-read-write/test12.xml: Update this because the 41857 test now correctly considers two type template parameters at the 41858 same index as being equivalent. 41859 * tests/data/test-read-write/test13.xml: Likewise. 41860 418612013-10-16 Dodji Seketeli <dodji@redhat.com> 41862 41863 On going white space cleanups 41864 * include/abg-ir.h: Remove useless white spaces. 41865 * src/abg-ir.cc: Likewise. 41866 * src/abg-reader.cc: Likewise. 41867 * src/abg-writer.cc: Likewise. 41868 418692013-10-15 Dodji Seketeli <dodji@redhat.com> 41870 41871 Finish reporting about class_diff 41872 * src/abg-comparison.cc (report_num_dels_or_ins): Factorize out 41873 the header of each of inserted/deleted parts of the class into 41874 this new function. 41875 (class_diff::report): Use the new report_num_dels_or_ins. Cleanup 41876 the code. Add support for reporting about member functions, 41877 member function templates and member class templates. 41878 418792013-10-15 Dodji Seketeli <dodji@redhat.com> 41880 41881 White space cleanup in abg-ir.h 41882 * include/abg-ir.h 41883 (class_decl::member_function_template::member_function_template): 41884 Remove useless white space. 41885 418862013-10-15 Dodji Seketeli <dodji@redhat.com> 41887 41888 Progress on diffing pointers, references and classes 41889 * include/abg-comparison.h (diff::{first_subject,second_subject): Changed 41890 first_scope/second_scope into these; so that this diff class now works on 41891 stuff that are not scope. Changed the type of these to 41892 decl_base_sptr 41893 (diff::diff): Update for the change above. 41894 (diff::{length, report}): New virtual pure methods. 41895 (class pointer_diff, reference_diff): New classes declarations. 41896 (compute_diff): New overloads for the new classes above. Make the 41897 existing overloads take shared_pointers instead of references. 41898 Also make them return shared pointers of the computed diff, rather 41899 than just populating diff references passed in parameter. 41900 (class class_diff): Renamed class class_decl_diff into this. 41901 (report_changes): Change these functions into member functions. 41902 * src/abg-comparison.cc (compute_diff_for_types): New static 41903 function. 41904 (pointer_diff::pointer_diff, pointer_diff::first_pointer) 41905 (pointer_diff::second_pointer, pointer_diff::length) 41906 (pointer_diff::underlying_type_diff) 41907 (pointer_diff::underlying_type_diff, pointer_diff::report) 41908 (pointer_diff::report, compute_diff) 41909 (reference_diff::reference_diff, reference_diff::first_reference) 41910 (reference_diff::second_reference) 41911 (reference_diff::underlying_type_diff) 41912 (reference_diff::underlying_type_diff, reference_diff::length) 41913 (reference_diff::report, compute_diff): New functions. 41914 (class_diff::class_diff, class_diff::length) 41915 (class_diff::first_class_decl, class_diff::second_class_decl) 41916 (class_diff::base_changes, class_diff::base_changes) 41917 (class_diff::member_types_changes) 41918 (class_diff::member_types_changes) 41919 (class_diff::data_members_changes) 41920 (class_diff::data_members_changes, class_diff::member_fns_changes) 41921 (class_diff::member_fns_changes) 41922 (class_diff::member_fn_tmpls_changes) 41923 (class_diff::member_class_tmpls_changes) 41924 Update wrt class_decl_diff -> class_diff renaming. 41925 (class_diff::report): Make the report function be a member 41926 function. Add an indentation parameter. Add support for member 41927 types and data members. 41928 (compute_diff): New overload for class_decl_sptr. 41929 (scope_diff::first_scope, scope_diff::second_scope) 41930 (scope_diff::length, scope_diff::report): New member functions. 41931 (scope_diff::{deleted_member_at, inserted_member_at}): Update wrt 41932 first_scope -> first_subject change. 41933 (compute_diff): New overload for scope_decl_sptr. 41934 (translation_unit_diff::report): Change the report function into 41935 this member function. 41936 (compute_diff): Change the overload for translation_unit to take a 41937 translation_unit_sptr rather than a reference. 41938 * tools/bidiff.cc (main): Update this wrt the change of the 41939 signature of compute_diff. 41940 419412013-10-15 Dodji Seketeli <dodji@redhat.com> 41942 41943 Fix construction of class_decl::member_type 41944 * include/abg-ir.h (class_decl::member_type::member_type): Remove 41945 inline body from here. 41946 * src/abg-ir.cc (class_decl::member_type::member_type): Move 41947 implementation here. Also, properly set the name of the the 41948 member_type at construction time. 41949 419502013-10-15 Dodji Seketeli <dodji@redhat.com> 41951 41952 Few typedef additions to abg-ir.h 41953 * include/abg-ir.h (pointer_type_def_sptr) 41954 (reference_type_def_sptr): New typedefs. 41955 419562013-10-11 Dodji Seketeli <dodji@redhat.com> 41957 41958 Add debugging routines for decl_base_sptr and translation_unit 41959 * src/abg-writer.cc (dump): Add two version of this; on for 41960 decl_base_sptr, one for translation_unit&. 41961 419622013-10-11 Dodji Seketeli <dodji@redhat.com> 41963 41964 Initial implementation of tu diffing & bidiff cmd line program 41965 * include/abg-comparison.h (class translation_unit_diff): New type. 41966 (compute_diff): Make this take class_decl&, rather than 41967 class_decl_sptr. Add new overloads for scope_decl& and 41968 translation_unit&. 41969 (report_changes): New overload for scope_diff& and 41970 translation_unit&. 41971 * src/abg-comparison.cc (struct class_decl_diff::priv): New type. 41972 (class class_decl_diff): Add comments to methods. 41973 (class translation_unit_diff): Implement methods. 41974 (compute_diff, report_changes): Implement the new overloads. 41975 (scope_diff::ensure_lookup_tables_populated): Fix a thinko here. 41976 * src/abg-ir.cc (is_var_decl): Add new predicate. 41977 * tools/abg-tools-utils.h (file_exists, is_regular_file) 41978 (check_file): Declare new functions. 41979 * tools/abg-tools-utils.cc (get_stat, file_exists, check_file) 41980 (is_regular_file): Define new functions. 41981 (is_dir): Use the new get_stat. 41982 * tools/bidiff.cc: New file. 41983 * tools/Makefile.am: Add tools/bidiff.cc to the build system; make it 41984 produce the bidiff tool. 41985 419862013-10-10 Dodji Seketeli <dodji@redhat.com> 41987 41988 Fix inheritance of operator== on decl_base and type_base 41989 * include/abg-ir.h (*lots of descendants of decl_base, type_decl) 41990 (template_decl, class_decl::member_base): Replace the previous classical 41991 *::operator==(*&) with an overload of decl_base::operator==(const 41992 decl_base&), type_base::operator==(const type_base), 41993 template_decl::operator==(const template_decl&) or 41994 class_decl::member_base::operator==(const 41995 class_decl::member_base&). This makes the descendant operator be 41996 the one called when a comparison involves references the parent 41997 class. 41998 * src/abg-ir.cc: Write the implementation of the above. Remove 41999 the useless static_casts from the previous operator== code. 42000 420012013-10-10 Dodji Seketeli <dodji@redhat.com> 42002 42003 On going misc white spaces and style fixes 42004 * include/abg-ir.h: Add author. Remove many useless white 42005 spaces. Add missing end-of-class comments. Move function 42006 declaration comments from here to their definition point. 42007 * include/abg-fwd.h: Remove useless indentation. Also move 42008 doxygen comments to *definition* points in src/abg-ir.cc. 42009 * src/abg-ir.cc: Remove many useless white spaces. Move comments 42010 from declaration points to here. 42011 420122013-10-06 Dodji Seketeli <dodji@redhat.com> 42013 42014 Fix middle snake determination & ses len computation for d == 1 42015 * include/abg-diff-utils.h (compute_middle_snake): After the 42016 overlap determination happened, finding the middle snake can 42017 require keep on building the current path until the "end". The 42018 end meaning reaching the max of D. And that max is (M + N)/2 + 1. 42019 In the extreme cases were middle snake was on the very last step 42020 (M + N) + 1, we were not finding the middle snake. Fix this. 42021 (compute_diff): When d == 1 and the first edge on the edit graph 42022 is a non-diagonal edge and when a_base != a_begin, we were failing 42023 to properly initialize x,y to find that non-diagonal edge. Also 42024 we were failing to correctly compute the size of the sequence. 42025 Fix these. 42026 * tests/test-core-diff.cc: Add a new regression test for the two 42027 cases above. 42028 * tests/data/test-core-diff/report7.txt: New reference data for 42029 the new regression test. 42030 420312013-10-05 Dodji Seketeli <dodji@redhat.com> 42032 42033 Initial un-debugged implementation of scope diffing 42034 * include/abg-comparison.h (class scope_diff): New type. 42035 (compute_diff(scope_decl_sptr, scope_decl_sptr, scope_diff)): New 42036 declaration. 42037 (report_changes): New declaration. 42038 * src/abg-comparison.cc (struct scope_diff::priv): Define. 42039 (scope_diff::{clear_lookup_tables, lookup_tables_empty, 42040 ensure_lookup_tables_populated, scope_diff, member_changes, 42041 deleted_member_at, inserted_member_at, changed_types, 42042 changed_decls}): Define these new member functions. 42043 (compute_diff): Define. 42044 * include/abg-ir.h (decl_base_sptr): New typedef. 42045 (operator==(decl_base_sptr, decl_base_sptr)): Declare new 42046 operator. 42047 * src/abg-ir.cc (operator==(decl_base_sptr, decl_base_sptr)): 42048 Define. 42049 (scope_decl::{operator==, traverse}): Adjust for using vectors to 42050 store scope members now, rather than lists. 42051 (scope_decl::{declarations, scopes}): Make these types be vector. 42052 This makes the members of a scopes be vector, rather than lists. 42053 This enables them to be diffed. 42054 420552013-10-05 Dodji Seketeli <dodji@redhat.com> 42056 42057 Simplify & cleanup compute_diff core api 42058 * include/abg-diff-utils.h (insertion::inserted_): Changed the 42059 type of this from vector<int> to vector<unsigned>. 42060 (insertion::{insertion, inserted_indexes}): Adjust. 42061 (compute_diff): Add two new simpler overloads. Implement them in 42062 term of the former more complex overload. 42063 (compute_lcs): Adjust for the vector<int> -> vector<unsigned> 42064 change. 42065 * src/abg-diff-utils.cc (compute_lcs, compute_ses): Adjust for the 42066 compute_diff change above. 42067 * src/abg-comparison.cc (compute_diff, report_changes): Adjust for 42068 the compute_diff & vector<unsigned> changes above.. 42069 420702013-10-05 Dodji Seketeli <dodji@redhat.com> 42071 42072 Misc white space, style and comments cleanup 42073 * include/abg-ir.h (class scope_decl): Add end of class comment. 42074 (class type_base): Add a _sptr typedef and end of class comment. 42075 * src/abg-ir.cc (operator==(class_decl_sptr, class_decl_sptr)): 42076 Fix comment. 42077 420782013-10-04 Dodji Seketeli <dodji@redhat.com> 42079 42080 Un-debugged initial implementation of class diffing. 42081 * include/abg-ir.h (decl_base::get_qualified_name): New 42082 declaration. 42083 (class_decl::{base_specs, member_types, data_members, 42084 member_functions, member_function_templates, 42085 member_class_templates}): Make all these containers be vectors, 42086 rather than list. This makes these containers (like 42087 class_decl::base_specs, class_decl::member_types, etc) be suitable 42088 to be used by the core diffing algorithms to diff their content. 42089 (operator==(class_decl_sptr, class_decl_sptr)) 42090 (operator==(class_decl::member_type_sptr, class_decl::member_type_sptr)) 42091 (operator==(class_decl::base_spec_sptr, 42092 class_decl::base_spec_sptr)) 42093 (operator==(class_decl::data_member_sptr, 42094 class_decl::data_member_sptr)) 42095 (operator==(class_decl::member_function_sptr, 42096 class_decl::member_function_sptr)) 42097 (operator==(class_decl::member_function_template_sptr, 42098 class_decl::member_function_template_sptr)) 42099 (operator==(class_decl::member_class_template_sptr, 42100 class_decl::member_class_template_sptr)): Declare 42101 these new equality operators. These are to be used by the core 42102 diffing algorithms when comparing two vectors of shared pointers 42103 of members of class_decls. 42104 * src/abg-ir.cc (decl_base::get_qualified_name): Define. 42105 (class_decl::class_decl, class_decl::operator==(class_decl&)): Adjust for the 42106 containers type change to a vector. 42107 (operator==(class_decl_sptr, class_decl_sptr)) 42108 (operator==(class_decl::member_type_sptr, class_decl::member_type_sptr)) 42109 (operator==(class_decl::base_spec_sptr, 42110 class_decl::base_spec_sptr)) 42111 (operator==(class_decl::data_member_sptr, 42112 class_decl::data_member_sptr)) 42113 (operator==(class_decl::member_function_sptr, 42114 class_decl::member_function_sptr)) 42115 (operator==(class_decl::member_function_template_sptr, 42116 class_decl::member_function_template_sptr)) 42117 (operator==(class_decl::member_class_template_sptr, 42118 class_decl::member_class_template_sptr)): Define 42119 these. 42120 * include/abg-comparison.h (diff::scope_): Remove 42121 (diff::{first_scope_, second_scope_}): New members. 42122 (class_decl_diff::class_decl_diff): Pass the new scopes to this 42123 constructor. 42124 (class_decl_diff::{first_class_decl, second_class_decl}) 42125 (report_changes): New declarations. 42126 * src/abg-comparison.cc (class_decl_diff::class_decl_diff): Update 42127 as per the declaration. 42128 (class_decl_diff::{first_class_decl, second_class_decl}): Define 42129 as per the declaration. 42130 (compute_diff): Initial implementation for this. 42131 (report_changes): Define. 42132 421332013-10-04 Dodji Seketeli <dodji@redhat.com> 42134 42135 Change the diff::changes_type back to just edit_script 42136 * include/abg-comparison.h (diff::changes_type): 42137 Remove this typedef. 42138 (class_decl_diff::data_members_changes): Rename 42139 class_decl_diff::data_member_changes into this. 42140 (class_decl_diff::member_fn_tmpls_changes): Renamed 42141 class_decl_diff::member_fn_tmpl_changes into this. 42142 (class_decl_diff::member_class_tmpls_changes): Renamed 42143 class_decl_diff::member_class_tmpl_changes into this. 42144 (class_decl_diff::{base_changes, member_types_changes, 42145 data_members_changes, member_fns_changes, member_fn_tmpls_changes, 42146 member_fn_tmpls_changes, member_class_tmpls_changes}): Adjust 42147 these declarations for the use of edit_script. 42148 * src/abg-comparison.cc (class_decl_diff::priv::*): Likewise. 42149 (class_decl_diff::{base_changes, member_types_changes, 42150 data_members_changes, member_fns_changes, member_fn_tmpls_changes, 42151 member_fn_tmpls_changes, member_class_tmpls_changes}): Adjust 42152 these definitions for the above. 42153 421542013-10-04 Dodji Seketeli <dodji@redhat.com> 42155 42156 Misc white space, style and comment fixes 42157 * include/abg-ir.h: Lots of useless white space removals and 42158 comments adding. 42159 (class class_decl::member_base): Fix comment. 42160 * src/abg-hash.cc: Lots of useless white space removals too. 42161 * src/abg-ir.cc: Remove useless white space too. 42162 421632013-10-04 Dodji Seketeli <dodji@redhat.com> 42164 42165 Fix middle snake determination 42166 * include/abg-diff-utils.h (point::{operator!=,operator==}): New 42167 operators. 42168 (end_of_fr_d_path_in_k, end_of_frr_d_path_in_k_plus_delta): Allow 42169 the initial point (-1,-1) that is not a point addressing elements 42170 of the input sequences, but that is the starting point of the 42171 forward paths and the ending point of reverse paths in the "Linear 42172 Refinement" of the algorithm. 42173 (is_match_point, maybe_record_match_point) 42174 (find_snake_start_point): New functions. 42175 (find_last_snake_in_path): Remove this. It's not used anymore. 42176 (compute_middle_snake): Allow checking for overlapping paths even 42177 on points that are outside of the edit graph boundaries. Once the 42178 overlap is detected, if a non-empty snake has been seen already, 42179 report it as the middle snake. Otherwise, keep building the path 42180 until the end and report the last snake encountered as the middle 42181 snake. Add comments. 42182 (compute_diff): For the d == 1 case, fix the logic of the finding 42183 the non-diagonal edge. Fix typos. Add comments. 42184 (display_edit_script): Fix report glitches. 42185 * tests/data/test-core-diff/report3.txt: Update as per the report 42186 glitch above. 42187 * tests/data/test-core-diff/report4.txt: Likewise. 42188 * tests/data/test-core-diff/report5.txt: Likewise. 42189 * tests/data/test-core-diff/report6.txt: New reference report for 42190 a new test. 42191 * tests/test-core-diff.cc: Add a new test for negative delta. 42192 421932013-10-03 Dodji Seketeli <dodji@redhat.com> 42194 42195 Initial regression test facility for core diff algorithms 42196 * tests/data/test-core-diff/report0.txt: New test reference data. 42197 * tests/data/test-core-diff/report1.txt: Likewise. 42198 * tests/data/test-core-diff/report2.txt: Likewise. 42199 * tests/data/test-core-diff/report3.txt: Likewise. 42200 * tests/data/test-core-diff/report4.txt: Likewise. 42201 * tests/data/test-core-diff/report5.txt: Likewise. 42202 * tests/test-core-diff.cc: New regression test program. 42203 * tests/Makefile.am: Add these new files to the build system. 42204 422052013-10-02 Dodji Seketeli <dodji@redhat.com> 42206 42207 Initial command line testing facility for core diff algorithms 42208 * tests/test-diff2.cc: New command line testing facility. 42209 * tests/Makefile.am: Add this to the build system. 42210 422112013-10-02 Dodji Seketeli <dodji@redhat.com> 42212 42213 Fix core diff algorithms for negative deltas 42214 * diff2.h (point::point): New copy constructor. 42215 (point::{operator+=, operator=}): Use point::set. 42216 (point::{operator--, operator++,}): New operators. 42217 (d_path_vec::{a_size_, b_size_}): New members. 42218 (d_path_vec::max_d_): Remove this member. 42219 (d_path_vec::max_d): Compute this, now that max_d_ was removed. 42220 (point_is_valid_in_graph): Declare this new function. 42221 (end_of_fr_d_path_in_k, ): Return 42222 a bool when the end of furthest reaching past found is within the 42223 bounds of the edit graph. Add comments. 42224 (end_of_frr_d_path_in_k_plus_delta): Likewise. Also, delta can be 42225 negative; support that. Do not cross the boundaries of the edit 42226 graph when following a diagonal edge. 42227 (find_last_snake_in_path): New function. 42228 (compute_middle_snake): Make forward/reverse d_path_vec be big 42229 enough to hold paths for M+N differences. Normally M+N/2 should 42230 be enough, but we were getting weird out of bound errors. Let's 42231 handle it this way for now. Do not require that we check for 42232 overlap only when we are on a diagonal edge. Once we detected an 42233 overlap, use the new find_last_snake_in_path to find the 42234 boundaries of the snake. 42235 (ses_len): Delta can be negative. 42236 (display_edit): Small minor English nit. 42237 422382013-09-28 Dodji Seketeli <dodji@redhat.com> 42239 42240 Lay down the foundations of computing the diff between two class_decl 42241 * include/abg-diff-utils.h: New file. 42242 * src/abg-diff-utils.cc: Likewise. Implement the code diffing 42243 algorithms from Eugene Myers. 42244 * include/abg-comparison.h: New file. First short at defining the 42245 basic APIs to compute the diff of two classes. 42246 * src/abg-comparison.cc: New file. Start the implementation of 42247 the above header. 42248 422492013-09-26 Dodji Seketeli <dodji@redhat.com> 42250 42251 Prepare node visitors to be usable on things other than IR nodes 42252 * include/abg-fwd.h (node_visitor_base): Renamed ir_node_visitor 42253 into this. 42254 * include/abg-traverse.h (struct node_visitor_base): New base for 42255 the visitors. 42256 (struct traversable_base): Update comments. 42257 (traversable_base::traverse): Change this into non-pure virtual. 42258 Make it take a reference to node_visitor_base, rather than a 42259 reference to ir_node_visitor. 42260 * src/abg-traverse.cc (traversable_base::traverse): New empty 42261 default implementation. 42262 * include/abg-ir.h: Make ir_node_visitor inherit from new 42263 node_visitor_base. 42264 422652013-09-26 Dodji Seketeli <dodji@redhat.com> 42266 42267 Renamed data members from m_something to something_ 42268 * src/abg-ir.{cc,h}: Renamed data members from m_something to 42269 something_ and update their usage. 42270 422712013-08-29 Dodji Seketeli <dodji@redhat.com> 42272 42273 Initial version of an archive manipulation program: biar 42274 * tests/test-utils.h (is_dir, ensure_dir_path_created) 42275 (ensure_parent_dir_created): Move these directories manipulation 42276 utilities from here to ... 42277 * tools/abg-tools-utils.h (is_dir, ensure_dir_path_created) 42278 (ensure_parent_dir_created): ... here in this new file. 42279 (dir_name, base_name): Declare these new functions. 42280 * tests/test-utils.cc (is_dir, ensure_dir_path_created) 42281 (ensure_parent_dir_created): Likewise, move these to ... 42282 * tools/abg-tools-utils.cc (is_dir, ensure_dir_path_created) 42283 (ensure_parent_dir_created): ... here in this new file. 42284 (dir_name, base_name): Define these. 42285 * tools/Makefile.am: New file. Create a new libtoolsutils.la 42286 static library with stuff from tools/abg-tools-utils.cc in it. 42287 Also create a new 'biar' program with the stuff from the new 42288 tools/biar.cc in it. 42289 * tools/biar.cc: New file. Contains the code for the new "biar" 42290 archive manipulation command line utility. 42291 * tests/test-read-write.cc (main): Adjust for the change about 42292 ensure_parent_dir_created above. 42293 * tests/test-write-read-archive.cc (main): Likewise. 42294 * Makefile.am (SUBDIRS): Add the new tools/ sub-directory to the 42295 build system. 42296 * configure.ac (AC_CONFIG_FILES): Generate tools/Makefile. 42297 * tests/Makefile.am: Make libtestutils.la link with the new 42298 libtoolsutils.la. Make sure to express the dependencies between 42299 libtestutils.la and the binaries that depend on it. Otherwise 42300 parallel builds can go awry. 42301 423022013-08-29 Dodji Seketeli <dodji@redhat.com> 42303 42304 Define translation_unit{_sptr,s} types in abigail:: 42305 * include/abg-corpus.h (abigail::corpus::{translation_unit_sptr, 42306 translation_units): Do not define these typedefs here. Rather) 42307 (define them ... 42308 * include/abg-ir.h 42309 (abigail::{translation_units,translation_unit_sptr): ... here. 42310 This is because a translation unit can be manipulated 42311 independently from an abi corpus. 42312 * src/abg-corpus.cc (corpus::get_translation_units): Adjust return 42313 type to comply with the change above. 42314 423152013-08-29 Dodji Seketeli <dodji@redhat.com> 42316 42317 Fix header inclusion in abg-corpus.h 42318 * include/abg-corpus.h: Drop incomplete abg-traverse.h and 42319 abg-fwd.h. Use abg-ir.h proper and be done with it. Users of the 42320 library will just have to use abg-corpus.h to manipulate and the 42321 archives and the IR they contain. 42322 423232013-08-29 Dodji Seketeli <dodji@redhat.com> 42324 42325 Add error message to translation_unit::write 42326 * src/abg-writer.cc (translation_unit::write): Add an error 42327 message to stderr if something ultimately went wrong. 42328 423292013-08-29 Dodji Seketeli <dodji@redhat.com> 42330 42331 Rename abigail::corpus::{get_file_path --> get_path} 42332 * include/abg-corpus.h (corpus::{get_path, set_path): Renamed 42333 corpus::get_file_path and corpus::set_file_path into these as 42334 get_path/set_path is what is used elsewhere as well. 42335 * src/abg-corpus.cc (corpus::{get_path, set_path}): Likewise. 42336 * tests/test-write-read-archive.cc (main): Adjust for the change 42337 above. 42338 423392013-08-29 Dodji Seketeli <dodji@redhat.com> 42340 42341 Cleanup src/Makefile.am 42342 * src/Makefile.am: Fix library naming and remove useless trailing 42343 space from directory path. 42344 423452013-08-27 Dodji Seketeli <dodji@redhat.com> 42346 42347 Initial writing/reading of an ABI corpus to an archive 42348 * configure.ac: Support detection of libzip dependency. Define 42349 new DEPS_CFLAGS and DEPS_LIBS variables for use in 42350 Makefile.am to refer to the dependency headers and 42351 libraries. 42352 * doc/website/mainpage.txt: Update this to talk about the new 42353 libzip dependency. 42354 * include/Makefile.am: Add abg-libzip-utils.h to the build system. 42355 * include/abg-corpus.h (corps): Hide abigail::corpus's private behind a 42356 pimpl idiom. 42357 (corpus::{drop_translation_units, get_file_path, set_file_path, 42358 write, read}): New methods. 42359 * include/abg-libxml-utils.h (new_reader_from_buffer): Declare new 42360 function. 42361 * include/abg-libzip-utils.h: New file. 42362 * src/Makefile.am: Add abg-corpus.cc and abg-libzip-utils.cc to 42363 the build system. Refer to the library and headers dependencies 42364 via the new DEPS_LIBS and DEPS_CFLAGS variables. 42365 * src/abg-corpus.cc: New file. 42366 * src/abg-ir.cc (translation::set_path): New method. 42367 * src/abg-libxml-utils.cc (new_reader_from_buffer): Define new 42368 function. 42369 * src/abg-libzip-utils.cc: New file. 42370 * src/abg-reader.cc (translation_unit::read): New overload. 42371 * src/abg-writer.cc: Inject the names from the std namespace into 42372 the abigail namespace, rather than into abigail::writer. 42373 (abigail::translation_unit::write): New overload. This can now 42374 use ofstream and the other stuff from std that are injected in the 42375 abigail:: namespace. 42376 * tests/Makefile.am: Add tests/test-write-read-archive.cc to the 42377 build system; use that to build runtestwritereadarchive. Also add 42378 the input test data from 42379 tests/data/test-write-read-archive/test[0-4].xml. 42380 * /tests/data/test-write-read-archive/test[0-4].xml: New test 42381 input data files. 42382 * tests/test-write-read-archive.cc: New test for this archive 42383 write/read support. 42384 423852013-08-27 Dodji Seketeli <dodji@redhat.com> 42386 42387 Fix & add missing API documentation 42388 * src/abg-ir.cc (location_manager::create_new_location): Fix 42389 documentation comment. (translation_unit::translation_unit) 42390 (translation_uni::get_global_scope, translation_unit::get_path) 42391 (translation_unit::traverse, translation_unit::get_loc_mgr) 42392 (translation_unit::is_empty, translation_unit::traverse): Add 42393 missing documentation comments. 42394 * src/abg-libxml-utils.cc (new_reader_from_file): Fix comment. 42395 * src/abg-reader.cc (translation_unit::read): Likewise. 42396 423972013-08-27 Dodji Seketeli <dodji@redhat.com> 42398 42399 Remove useless header inclusion 42400 * include/abg-traverse.h: Remove useless #include <tr1/memory> 42401 424022013-08-27 Dodji Seketeli <dodji@redhat.com> 42403 42404 Misc white space cleanups 42405 * include/abg-corpus.h: Cleanup white spaces. 42406 * include/abg-fwd.h: Likewise. 42407 * include/abg-ir.h: Likewise. 42408 * include/abg-libxml-utils.h: Likewise. 42409 * src/abg-config.cc: Likewise. 42410 * src/abg-ir.cc: Likewise. 42411 * src/abg-reader.cc: Likewise. 42412 * src/abg-writer.cc: Likewise. 42413 424142013-08-27 Dodji Seketeli <dodji@redhat.com> 42415 42416 Small cleanup in abg-config.cc 42417 * src/abg-config.cc: Include auto-generated 42418 $(top_builddir)/config.h file. 42419 424202013-08-27 Dodji Seketeli <dodji@redhat.com> 42421 42422 Pass absolute paths to the compiler during the build 42423 * src/Makefile.am: Pass absolute file paths to the compiler during 42424 the build. This helps in e.g in emacs' compilation mode, when the 42425 output shows an error reported by GCC's diagnostics, setting point 42426 to the error line and hitting 'enter' transports the user to the 42427 file location where the error happened; as the file path is nows 42428 absolute, emacs can always find it. Otherwise, finding it depends 42429 on $PWD and whatnot. 42430 * tests/Makefile.am: Likewise. 42431 424322013-08-27 Dodji Seketeli <dodji@redhat.com> 42433 42434 Misc cleanups in abg-fwd.h 42435 * include/abg-fwd.h: Move location, location_manager and 42436 translation_unit in the ir section. Remove stuff that was 42437 commented out anyway. 42438 424392013-08-27 Dodji Seketeli <dodji@redhat.com> 42440 42441 Move location, location_manager & translation_unit back into abg-ir.h 42442 * include/abg-corpus.h: Move location location_manager, 42443 translation_unit from here ... 42444 * include/abg-ir.h: ... to here. The reason being that these are 42445 really constructs of the Internal Representation of the ABI/API of 42446 a translation unit. What is left in abg-corpus is really 42447 exclusively related to an ABI Corpus, which I see more as a 42448 "packaging" construct that abstracts the bundling of several 42449 translation units together. Also, I fixed some comments about the 42450 location/location_manger types; now a location is made specific to 42451 a translation unit; to an abi corpus. A location of a given 42452 translation unit has to be decoded by the location manager of that 42453 same translation unit. 42454 424552013-08-22 Dodji Seketeli <dodji@redhat.com> 42456 42457 Make libxml2 a private dependency wrt pkconfig 42458 * libabigail.pc.in: Libxml2 is not exposed to clients so make it 42459 be a private dependency. 42460 424612013-08-22 Dodji Seketeli <dodji@redhat.com> 42462 42463 White space fix in COMPILING 42464 * COMPILING: White space fix. 42465 424662013-08-22 Dodji Seketeli <dodji@redhat.com> 42467 42468 Add abg-version.h.in to the source distribution & cleanup 42469 * include/Makefile.am: Add abg-version.h.in to the source 42470 distribution. 42471 * configure.ac: Generate abg-version.h in using the existing 42472 AC_CONFIG_FILES macro call. 42473 424742013-08-22 Dodji Seketeli <dodji@redhat.com> 42475 42476 Support pkgconfig through a new libabigail.pc file 42477 * libabigail.pc.in: New pkgconfig file. 42478 * configure.ac: Define the LIBXML2_VERSION variable that is used 42479 in the libabigail.pc.in file. Generate the libabigail.pc file 42480 from its libabigail.pc.in template. 42481 * Makefile.am: Add libabigail.pc.in to the source distribution. 42482 Install the generated libabigail.pc to the right destination. 42483 424842013-08-21 Dodji Seketeli <dodji@redhat.com> 42485 42486 Tweak the apidoc mainpage 42487 * include/abg-fwd.h<doxygen markup>: Fix link to the project web 42488 page and for git check-out. 42489 424902013-08-21 Dodji Seketeli <dodji@redhat.com> 42491 42492 Initial website generation-fu using Doxygen 42493 * doc/website/mainpage.txt: New file representing the input for 42494 the website. 42495 * doc/website/libabigail-website.doxy: New file representing the 42496 doxygen configuration for the website generation. 42497 * doc/api/libabigail.doxy: Output doxygen generation warnings into 42498 a file. 42499 * doc/Makefile.am: Support generating the website from doxygen. 42500 Update the api generation relevant macros names for better 42501 consistency. Make "make html" generate the website too. Make 42502 "make clean" erase the website bits too. Add a 'website' 42503 target to make the website. 42504 425052013-08-21 Dodji Seketeli <dodji@redhat.com> 42506 42507 Fix typo in CONTRIBUTING file 42508 * CONTRIBUTING: Fix typo, courtesy of Mark Wielaard. 42509 425102013-08-19 Dodji Seketeli <dodji@redhat.com> 42511 42512 Remove autotools-generated files 42513 * Makefile.in: Remove this autotools-generated file. I know that 42514 people in the GCC-realm like storing these autotools-generated 42515 files into the source control system, but I believe in this day 42516 and age, this is annoying (to say the least) for the project 42517 developers for no good reason. Requiring (the ubiquitous) 42518 autoconf for building from source is no big deal today, and typing 42519 "autoreconf" is not hard to do, really. And it saves the 42520 developers for having to update a bunch of boilerplate 42521 automatically generated files into the source control system; this 42522 is really unnecessary noise and it is a commonly accepted good 42523 practice to avoid doing it these days. To help people who do not 42524 know how to handle this, there is a COMPILING file in the source 42525 tree that explains how to build the project from sources. 42526 * aclocal.m4: Likewise. 42527 * configure: Likewise. 42528 * include/Makefile.in: Likewise. 42529 * src/Makefile.in: Likewise. 42530 * doc/Makefile.in: Likewise. 42531 * tests/Makefile.in: Likewise. 42532 425332013-08-19 Dodji Seketeli <dodji@redhat.com> 42534 42535 Add a new COMPILING file explaining how to build the package 42536 * COMPILING: New file. 42537 425382013-08-14 Dodji Seketeli <dodji@redhat.com> 42539 42540 Remove name of unused parameter in decl_base::traverse. 42541 * src/abg-ir.c (decl_base::traverse): Remove name of unused parameter. 42542 425432013-08-14 Dodji Seketeli <dodji@redhat.com> 42544 42545 install headers in $includedir/libabigail 42546 * include/Makefile.am: Install headers in $includedir/libabigail 42547 425482013-08-14 Dodji Seketeli <dodji@redhat.com> 42549 42550 For usage from within GCC set header path to $includedir/libabigail 42551 * abigail.m4: The include path used for compilation goes to 42552 $includedir/libabigail. 42553 425542013-08-08 Benjamin Kosnik <bkoz@redhat.com> 42555 42556 Separate out bits from the ir header. 42557 * include/abg-irfwd.h: Move to... 42558 * include/abg-fwd.h: ...this. 42559 * include/abg-ir.h (traverse_base): Move to... 42560 * include/abg-traverse.h: ...here. New. 42561 * include/abg-ir.h (location, location_manager, translation_unit): 42562 Move to... 42563 * include/abg-corpus.h: ...here. 42564 * include/Makefile.am: Adjust. 42565 * include/Makefile.in: Regenerate. 42566 425672013-08-07 Benjamin Kosnik <bkoz@redhat.com> 42568 42569 Template naming compression. 42570 * include/abg-ir.h: Template naming compressions. 42571 (class_template_decl): To class_tdecl. 42572 (function_template_decl): To function_tdecl. 42573 (template_type_parameter): To type_tparameter. 42574 (template_non_type_parameter): To non_type_tparameter. 42575 (template_template_parameter): To template_tparameter. 42576 (tmpl_parm_type_composition): To type_composition. 42577 * include/abg-irfwd.h: Same. 42578 * src/abg-hash.cc: Same. 42579 * src/abg-ir.cc: Same. 42580 * src/abg-reader.cc: Same. 42581 425822013-08-07 Benjamin Kosnik <bkoz@redhat.com> 42583 42584 Slight change to doxy config. 42585 * doc/api/libabigail.doxy: Turn off namespace scopes, on all the viz. 42586 425872013-08-07 Benjamin Kosnik <bkoz@redhat.com> 42588 42589 Move class_decl nested types out-of-line. 42590 * include/abg-ir.h (class_decl): Move nested types out of line. 42591 425922013-08-07 Benjamin Kosnik <bkoz@redhat.com> 42593 42594 Rename class_decl::method to class_decl::method_base. 42595 * include/abg-ir.h (class_decl::member): To member_base. 42596 * src/abg-hash.cc: Same. 42597 * src/abg-ir.cc: Same. 42598 * src/abg-writer.cc: Same. 42599 426002013-08-07 Benjamin Kosnik <bkoz@redhat.com> 42601 42602 Nest hashers. 42603 * include/abg-ir.h: Nest all hashers. 42604 * include/abg-irfwd.h (abigail): Don't inject std::tr1::hash. 42605 Remove hasher forward declarations. 42606 * include/abg-hash.h: Tweak. 42607 * src/abg-hash.cc: Define hashers here. 42608 * src/abg-ir.cc: Adjust for above. 42609 * src/abg-reader.cc: Same. 42610 * src/abg-writer.cc: Same. 42611 426122013-08-06 Benjamin Kosnik <bkoz@redhat.com> 42613 42614 Rename abi_corpus to corpus 42615 * include/abg-corpus.h (abi_corpus): Change to corpus. 42616 * include/abg-hash.h: Tweaks. 42617 * include/abg-libxml-utils.h: Same. 42618 426192013-08-06 Benjamin Kosnik <bkoz@redhat.com> 42620 42621 Simplify interface for serializing/deserializing translation_units. 42622 * include/abg-ir.h (translation_unit::read): New member function. 42623 (translation_unit::write): Same. 42624 * src/abg-reader.cc (translation_unit::read): Define. 42625 * src/abg-writer.cc (translation_unit::write): Define. 42626 * include/abg-reader.h: Remove. 42627 * include/abg-writer.h: Remove. 42628 * include/Makefile.am (headers): Same. 42629 * include/Makefile.in: Regenerate. 42630 426312013-08-06 Benjamin Kosnik <bkoz@redhat.com> 42632 42633 First pass clean reading API. 42634 * include/abg-reader.h (read_file): Remove extraneous file parameter. 42635 * src/abg-reader.cc: Same. 42636 * tests/test-read-write.cc: Adjust. 42637 426382013-08-06 Benjamin Kosnik <bkoz@redhat.com> 42639 42640 Rename traversable to traversable_base, move up the _decl hierarchy via decl_base derivation. 42641 * include/abg-ir.h (traversable): To traversable_base. 42642 (decl_base): Inherit from traversable_base. 42643 (decl_base::traverse): Null definition. 42644 (function_decl, etc.): Remove traversable_base as base class. 42645 426462013-08-06 Benjamin Kosnik <bkoz@redhat.com> 42647 42648 Standardize typedef naming. Plural form is the container form, smart_ptr types are type + _sptr. 42649 * include/abg-ir.h (scope_decl): Add declarations, scopes as types. 42650 (function_type): Add parameter_sptr, parameters as types. 42651 (enum_type_decl): Add type_sptr, enumerators as types. 42652 (class_decl): Adjust typedefs for consistency. Change 42653 base_specs_type to base_specs, member_types_type to member_types, 42654 data_members_type to data_members, member_functions_type to 42655 member_functions, member_function_templates_type to 42656 member_function_templates, member_class_templates_type to 42657 member_class_templates. 42658 426592013-08-02 Benjamin Kosnik <bkoz@redhat.com> 42660 42661 Doxygen markup fixes final. 42662 * include/abg-config.h: Doxygen cleanups round two. 42663 * include/abg-hash.h: Same. 42664 * include/abg-ir.h: Same. 42665 * include/abg-irfwd.h: Same. 42666 * include/abg-libxml-utils.h: Same. 42667 * src/abg-config.cc: Same. 42668 * src/abg-hash.cc: Same. 42669 * src/abg-ir.cc: Same. 42670 * src/abg-reader.cc: Same. 42671 * src/abg-writer.cc: Same. 42672 426732013-08-01 Benjamin Kosnik <bkoz@redhat.com> 42674 42675 Forward decls for abg-ir.h, doxygen fixups, restyle. 42676 * include/abg-irfwd.h: New file for forward declarations. 42677 * include/Makefile.am: Add new header. 42678 * include/Makefile.in: Regenerate. 42679 * include/*: Forward declare, doxygen fixups, restyle. 42680 * src/*: Same. 42681 * src/abg-corpus.cc: Empty, removed. 42682 * doc/api/libabigail.doxy: Tweak. 42683 426842013-08-01 Benjamin Kosnik <bkoz@redhat.com> 42685 42686 Add virtual dtor to translation_unit. 42687 * include/abg-ir.h (translation_unit): Add virtual dtor. 42688 * src/abg-ir.cc: Define. 42689 426902013-08-01 Benjamin Kosnik <bkoz@redhat.com> 42691 42692 Adjust doxygen input path. 42693 * doc/api/libabigail.doxy: Adjust include directory. 42694 426952013-08-01 Benjamin Kosnik <bkoz@redhat.com> 42696 42697 Collapse subdir of include to include. 42698 * include/libabigail/abg-*.h: Move to... 42699 * include/abg-*.h 42700 * include/libabigail: Remove. 42701 * configure.ac: Adjust include location from libabigail/include to 42702 include. 42703 * Makefile.in: Same. 42704 * aclocal.m4: Same. 42705 * configure: Same. 42706 * doc/Makefile.in: Same. 42707 * include/Makefile.am: Same. 42708 * src/Makefile.am: Same. 42709 * src/Makefile.in: Same. 42710 * tests/Makefile.am: Same. 42711 * tests/Makefile.in: Same. 42712 427132013-07-23 Dodji Seketeli <dodji@seketeli.org> 42714 42715 Update autotool auto-generated files 42716 * Makefile.in: Updated. 42717 * aclocal.m4: Likewise. 42718 * configure: Likewise. 42719 * doc/Makefile.in: Likewise. 42720 * src/Makefile.in: Likewise. 42721 * tests/Makefile.in: Likewise. 42722 427232013-07-20 Dodji Seketeli <dodji@seketeli.org> 42724 42725 Implement a translation unit traversal API 42726 * include/libabigail/abg-ir.h (struct ir_node_visitor, struct 42727 traversable): New interfaces. 42728 (translation_unit, scope_decl, type_decl, qualified_type_def) 42729 (pointer_type_def, reference_type_def, enum_type_decl) 42730 (typedef_decl, var_decl, function_decl, data_member) 42731 (member_function, member_function_template) 42732 (member_class_template): Implement the traversable interface, 42733 overload the traversable::traverse pure virtual function. 42734 * src/abg-ir.cc ({translation_unit, scope_decl, type_decl, 42735 namespace_decl, qualified_type_def, pointer_type_def, 42736 reference_type_def, enum_type_decl, typedef_decl, var_decl, 42737 function_decl, class_decl::member_function, class_decl, 42738 class_decl::data_member, class_decl::member_function_template, 42739 class_decl::member_class_template, function_template_decl, 42740 class_template_decl, }::traverse): Implement traversal. 42741 (ir_node_visitor::visit): New method, overloaded for the types 42742 above, which implement the traversable interface. 42743 * tests/test-walker.cc: New test case program to showcase how to 42744 use the new traversal API. 42745 * tests/makefile.am: Add test-walker.cc to the build system. 42746 427472013-07-19 Dodji Seketeli <dodji@seketeli.org> 42748 42749 By default, statically link libabigail with whoever uses abigail.m4 42750 * abigail.m4: Make $abigaillibs statically link libabigail by default. 42751 427522013-07-19 Dodji Seketeli <dodji@seketeli.org> 42753 42754 Move static member definition to abg-viz-dot.cc file 42755 * include/libabigail/abg-viz-dot.h: Move definition of 42756 node_base::_M_count_total to ... 42757 * src/abg-viz-dot.cc: ... here. 42758 427592013-07-19 Dodji Seketeli <dodji@seketeli.org> 42760 42761 Put headers in include/libabigail 42762 * include/libabigail: New directory. 42763 * include/Makefile.am: New file. 42764 * include/libabigail/Makefile.am: New file. 42765 * src/abg-*.h: Move these in include/libabigail/*.h 42766 * src/Makefile.am: Set -I option to look for headers in include/libabigail 42767 * doc/api/libabigail.doxy: Look for headers in include/libabigail 42768 * tests/Makefile.am: Set -I option to look for headers in include/libabigail 42769 * abigail.m4: Set includedir to $prefix/include/libabigail for 42770 library used as a dep, or to srcdir/libabigail/include/libabigail 42771 in GCC source tree. 42772 * configure.ac: Add Makefile.am in include and include/libabigail 42773 * abigail.m4: Look for headers in include/libabigail when the 42774 libabigail is in in the source tree and in $incdir/libabigail when 42775 it is installed as a dependency. 42776 427772013-07-18 Benjamin Kosnik <bkoz@redhat.com> 42778 42779 Install into docdir, turn off collaboration graphs. 42780 * doc/Makefile.am (doc-install-html-doxygen): Install generated 42781 files into docdir. 42782 * doc/api/libabigail.doxy (COLLABORATION_GRAPH): Turn off. 42783 427842013-07-18 Benjamin Kosnik <bkoz@redhat.com> 42785 42786 Fix dependencies for api/html output directory. 42787 * doc/Makefile.am: Create abi output directory. 42788 427892013-07-16 Dodji Seketeli <dodji@seketeli.org> 42790 42791 Prepare for publishing 42792 * COMMIT-LOG-GUIDELINES: New file. 42793 * CONTRIBUTING: New file. 42794 * README: Amended to refer to the first files above. 42795 427962013-07-16 Dodji Seketeli <dodji@seketeli.org> 42797 42798 LGPLv3 License the library 42799 * COPYING-LGPLV3: New file. 42800 * abg-config.cc: License the file to LGPLv3. 42801 * abg-config.h: Likewise. 42802 * abg-corpus.cc: Likewise. 42803 * abg-corpus.h: Likewise. 42804 * abg-hash.cc: Likewise. 42805 * abg-hash.h: Likewise. 42806 * abg-ir.cc: Likewise. 42807 * abg-ir.h: Likewise. 42808 * abg-libxml-utils.cc: Likewise. 42809 * abg-libxml-utils.h: Likewise. 42810 * abg-reader.cc: Likewise. 42811 * abg-reader.h: Likewise. 42812 * abg-writer.cc: Likewise. 42813 * abg-writer.h: Likewise. 42814 * src/abg-viz-common.cc: Likewise. 42815 * src/abg-viz-common.h: Likewise. 42816 * src/abg-viz-dot.cc: Likewise. 42817 * src/abg-viz-dot.h: Likewise. 42818 * src/abg-viz-svg.cc: Likewise. 42819 * src/abg-viz-svg.h: Likewise. 42820 * tests/test-read-write.cc: Likewise. 42821 * tests/test-utils.cc: Likewise. 42822 * tests/test-utils.h: Likewise. 42823 428242013-07-17 Dodji Seketeli <dodji@seketeli.org> 42825 42826 Add assert.h in abg-ir.cc 42827 * src/abg-ir.cc: Add missing assert.h 42828 428292013-07-17 Dodji Seketeli <dodji@seketeli.org> 42830 42831 Fix missing license blurbs 42832 * src/abg-config.cc: Fix licensing blurb. 42833 * src/abg-config.h: Likewise. 42834 * src/abg-corpus.cc: Likewise. 42835 * src/abg-corpus.h: Likewise. 42836 * src/abg-ir.cc: Likewise. 42837 * src/abg-ir.h: Likewise. 42838 * src/abg-reader.cc: Likewise. 42839 * src/abg-writer.cc: Likewise. 42840 428412013-07-02 Benjamin Kosnik <bkoz@redhat.com> 42842 42843 Correct DOT merge. 42844 * src/abg-viz-common.h: Use _M_attributes for attribute overflows. 42845 * src/abg-viz-dot.h: Merge in correct node_base. 42846 * src/abg-viz-dot.cc: Same. 42847 * tests/test-dot.cc: Correct examples. 42848 * tests/Makefile.am: Add .gv to CLEANFILES. 42849 * tests/Makefile.in: Regenerate. 42850 428512013-07-02 Benjamin Kosnik <bkoz@redhat.com> 42852 42853 Pull out common style type. 42854 * src/abg-viz-common.h: Pull out common style type. 42855 * src/abg-viz-dot.cc: Adjust scoping. 42856 * src/abg-viz-common.cc: Same. 42857 * src/abg-viz-dot.h: Use common style class. 42858 * src/abg-viz-svg.h: Same. 42859 428602013-07-02 Benjamin Kosnik <bkoz@redhat.com> 42861 42862 Commonize visualization support. 42863 * src/abg-viz-svg.h: Move common code to... 42864 * src/abg-viz-dot.h: Move common code to... 42865 * src/abg-viz-common.h: ...here. New. 42866 * src/abg-viz-svg.cc: Move common code to... 42867 * src/abg-viz-common.cc: ...here. New. 42868 * src/Makefile.am: Add abg-viz-common.cc, abg-viz-common.h 42869 * src/Makefile.in: Regenerate. 42870 428712013-07-01 Benjamin Kosnik <bkoz@redhat.com> 42872 42873 Initial DOT work. 42874 * doc/vizualization/layout/scripts/ 42875 (inkscape_export_svg_to_plain_svg.sh): Move... 42876 (inkscape_export_svg_to_png_and_pdf.sh): Move... 42877 * scripts: ..here. New toplevel directory. 42878 * scripts/scripts/dot_to_png.sh: New. 42879 * scripts/scripts/dot_to_svg.sh: New. 42880 * src/Makefile.am: Add abg-viz-dot.cc, abg-viz-dot.h. 42881 * tests/Makefile.am: Add test-dot.cc. 42882 * src/abg-viz-dot.cc: New. 42883 * src/abg-viz-dot.h: New. 42884 * tests/test-dot.cc: New. 42885 * doc/vizualization/graph: New. 42886 * doc/vizualization/graph/gv/sa-A.gv: New. 42887 * doc/vizualization/graph/gv/sa-B.gv: New. 42888 * doc/vizualization/graph/gv/sa-C1.gv: New. 42889 * doc/vizualization/graph/gv/sa-C2.gv: New. 42890 * doc/vizualization/graph/gv/sa-C3.gv: New. 42891 * doc/vizualization/graph/gv/sa-C4.gv: New. 42892 * doc/vizualization/graph/gv/sa-D1.gv: New. 42893 * doc/vizualization/graph/gv/sa-D2.gv: New. 42894 * doc/vizualization/graph/gv/sa-D2v.gv: New. 42895 * doc/vizualization/graph/gv/sa-D3.gv: New. 42896 * doc/vizualization/graph/gv/sa-D3v.gv: New. 42897 * doc/vizualization/graph/gv/sa-D4v.gv: New. 42898 * doc/vizualization/graph/gv/sa-D5v1.gv: New. 42899 * doc/vizualization/graph/gv/sa-D5v2.gv: New. 42900 * doc/vizualization/graph/gv/sa-DD1.gv: New. 42901 * doc/vizualization/graph/gv/sa-DD2.gv: New. 42902 * doc/vizualization/graph/gv/sa-DD3.gv: New. 42903 * doc/vizualization/graph/gv/sa-DD4.gv: New. 42904 * doc/vizualization/graph/gv/sa-DD5.gv: New. 42905 * doc/vizualization/graph/gv/sa-base.gv: New. 42906 * doc/vizualization/graph/png/sa-A.png: New. 42907 * doc/vizualization/graph/png/sa-B.png: New. 42908 * doc/vizualization/graph/png/sa-C1.png: New. 42909 * doc/vizualization/graph/png/sa-C2.png: New. 42910 * doc/vizualization/graph/png/sa-C3.png: New. 42911 * doc/vizualization/graph/png/sa-C4.png: New. 42912 * doc/vizualization/graph/png/sa-D1.png: New. 42913 * doc/vizualization/graph/png/sa-D2.png: New. 42914 * doc/vizualization/graph/png/sa-D2v.png: New. 42915 * doc/vizualization/graph/png/sa-D3.png: New. 42916 * doc/vizualization/graph/png/sa-D3v.png: New. 42917 * doc/vizualization/graph/png/sa-D4v.png: New. 42918 * doc/vizualization/graph/png/sa-D5v1.png: New. 42919 * doc/vizualization/graph/png/sa-D5v2.png: New. 42920 * doc/vizualization/graph/png/sa-DD1.png: New. 42921 * doc/vizualization/graph/png/sa-DD2.png: New. 42922 * doc/vizualization/graph/png/sa-DD3.png: New. 42923 * doc/vizualization/graph/png/sa-DD4.png: New. 42924 * doc/vizualization/graph/png/sa-DD5.png: New. 42925 * doc/vizualization/graph/png/sa-base.png: New. 42926 * doc/vizualization/graph/sources/sa-A.cc: New. 42927 * doc/vizualization/graph/sources/sa-B.cc: New. 42928 * doc/vizualization/graph/sources/sa-C.cc: New. 42929 * doc/vizualization/graph/sources/sa-D.cc: New. 42930 * doc/vizualization/graph/sources/sa-DD.cc: New. 42931 * doc/vizualization/graph/sources/sa-base.cc: New. 42932 * doc/vizualization/graph/svg/sa-A.svg: New. 42933 * doc/vizualization/graph/svg/sa-B.svg: New. 42934 * doc/vizualization/graph/svg/sa-C1.svg: New. 42935 * doc/vizualization/graph/svg/sa-C2.svg: New. 42936 * doc/vizualization/graph/svg/sa-C3.svg: New. 42937 * doc/vizualization/graph/svg/sa-C4.svg: New. 42938 * doc/vizualization/graph/svg/sa-D1.svg: New. 42939 * doc/vizualization/graph/svg/sa-D2.svg: New. 42940 * doc/vizualization/graph/svg/sa-D2v.svg: New. 42941 * doc/vizualization/graph/svg/sa-D3.svg: New. 42942 * doc/vizualization/graph/svg/sa-D3v.svg: New. 42943 * doc/vizualization/graph/svg/sa-D4v.svg: New. 42944 * doc/vizualization/graph/svg/sa-D5v1.svg: New. 42945 * doc/vizualization/graph/svg/sa-D5v2.svg: New. 42946 * doc/vizualization/graph/svg/sa-DD1.svg: New. 42947 * doc/vizualization/graph/svg/sa-DD2.svg: New. 42948 * doc/vizualization/graph/svg/sa-DD3.svg: New. 42949 * doc/vizualization/graph/svg/sa-DD4.svg: New. 42950 * doc/vizualization/graph/svg/sa-DD5.svg: New. 42951 * doc/vizualization/graph/svg/sa-base.svg: New. 42952 429532013-07-01 Benjamin Kosnik <bkoz@redhat.com> 42954 42955 Regenerate build/configure. 42956 * aclocal.m4: 42957 * configure: 42958 429592013-06-06 Benjamin Kosnik <bkoz@redhat.com> 42960 42961 Regenerate configure files. 42962 * Makefile.in: 42963 * aclocal.m4: 42964 * configure: 42965 * doc/Makefile.in: 42966 * src/Makefile.in: 42967 * tests/Makefile.in: 42968 429692013-05-28 Benjamin Kosnik <bkoz@redhat.com> 42970 42971 Add svg generation. 42972 * src/Makefile.am: Add abg-viz-svg.cc, abg-viz-svg.h. 42973 * tests/Makefile.am: Add test-svg.cc. 42974 * src/abg-viz-svg.cc: New. 42975 * src/abg-viz-svg.h: New. 42976 * tests/test-svg.cc: New. 42977 429782013-05-22 Benjamin Kosnik <bkoz@redhat.com> 42979 42980 Remove ChangeLog 42981 * ChangeLog: Remove content. 42982 429832013-05-21 Benjamin Kosnik <bkoz@redhat.com> 42984 42985 Fixup abg-version.h merge duplicate. 42986 * configure.ac: Remove src/abg-version.h merge duplicate. 42987 429882013-05-20 Benjamin Kosnik <bkoz@redhat.com> 42989 42990 Add doc/visualization/layout. 42991 * doc/vizualization/layout: New. 42992 * doc/vizualization/layout/pdf/sa-A.pdf: New. 42993 * doc/vizualization/layout/pdf/sa-B.pdf: New. 42994 * doc/vizualization/layout/pdf/sa-C1.pdf: New. 42995 * doc/vizualization/layout/pdf/sa-C2.pdf: New. 42996 * doc/vizualization/layout/pdf/sa-C3.pdf: New. 42997 * doc/vizualization/layout/pdf/sa-D1.pdf: New. 42998 * doc/vizualization/layout/pdf/sa-D2.pdf: New. 42999 * doc/vizualization/layout/pdf/sa-D2v.pdf: New. 43000 * doc/vizualization/layout/pdf/sa-D3.pdf: New. 43001 * doc/vizualization/layout/pdf/sa-D3v.pdf: New. 43002 * doc/vizualization/layout/pdf/sa-D4v.pdf: New. 43003 * doc/vizualization/layout/pdf/sa-DD1.pdf: New. 43004 * doc/vizualization/layout/pdf/sa-DD2.pdf: New. 43005 * doc/vizualization/layout/pdf/sa-DD3.pdf: New. 43006 * doc/vizualization/layout/pdf/sa-DD4.pdf: New. 43007 * doc/vizualization/layout/pdf/sa-DD5.pdf: New. 43008 * doc/vizualization/layout/pdf/sa-base.pdf: New. 43009 * doc/vizualization/layout/png/sa-A.png: New. 43010 * doc/vizualization/layout/png/sa-B.png: New. 43011 * doc/vizualization/layout/png/sa-C1.png: New. 43012 * doc/vizualization/layout/png/sa-C2.png: New. 43013 * doc/vizualization/layout/png/sa-C3.png: New. 43014 * doc/vizualization/layout/png/sa-D1.png: New. 43015 * doc/vizualization/layout/png/sa-D2.png: New. 43016 * doc/vizualization/layout/png/sa-D2v.png: New. 43017 * doc/vizualization/layout/png/sa-D3.png: New. 43018 * doc/vizualization/layout/png/sa-D3v.png: New. 43019 * doc/vizualization/layout/png/sa-D4v.png: New. 43020 * doc/vizualization/layout/png/sa-DD1.png: New. 43021 * doc/vizualization/layout/png/sa-DD2.png: New. 43022 * doc/vizualization/layout/png/sa-DD3.png: New. 43023 * doc/vizualization/layout/png/sa-DD4.png: New. 43024 * doc/vizualization/layout/png/sa-DD5.png: New. 43025 * doc/vizualization/layout/png/sa-base.png: New. 43026 * doc/vizualization/layout/scripts/ 43027 (inkscape_export_svg_to_plain_svg.sh): New. 43028 (inkscape_export_svg_to_png_and_pdf.sh): New. 43029 * doc/vizualization/layout/sources/sa-A.cc: New. 43030 * doc/vizualization/layout/sources/sa-B.cc: New. 43031 * doc/vizualization/layout/sources/sa-C.cc: New. 43032 * doc/vizualization/layout/sources/sa-D.cc: New. 43033 * doc/vizualization/layout/sources/sa-DD.cc: New. 43034 * doc/vizualization/layout/sources/sa-base.cc: New. 43035 * doc/vizualization/layout/svg/sa-A.svg: New. 43036 * doc/vizualization/layout/svg/sa-B.svg: New. 43037 * doc/vizualization/layout/svg/sa-C1.svg: New. 43038 * doc/vizualization/layout/svg/sa-C2.svg: New. 43039 * doc/vizualization/layout/svg/sa-C3.svg: New. 43040 * doc/vizualization/layout/svg/sa-D1.svg: New. 43041 * doc/vizualization/layout/svg/sa-D2.svg: New. 43042 * doc/vizualization/layout/svg/sa-D2v.svg: New. 43043 * doc/vizualization/layout/svg/sa-D3.svg: New. 43044 * doc/vizualization/layout/svg/sa-D3v.svg: New. 43045 * doc/vizualization/layout/svg/sa-D4v.svg: New. 43046 * doc/vizualization/layout/svg/sa-DD1.svg: New. 43047 * doc/vizualization/layout/svg/sa-DD2.svg: New. 43048 * doc/vizualization/layout/svg/sa-DD3.svg: New. 43049 * doc/vizualization/layout/svg/sa-DD4.svg: New. 43050 * doc/vizualization/layout/svg/sa-DD5.svg: New. 43051 * doc/vizualization/layout/svg/sa-base.svg: New. 43052 430532013-05-20 Benjamin Kosnik <bkoz@redhat.com> 43054 43055 Generate abg-version.h at configure time. 43056 * configure.ac: Add src/abg-version.h to AC_CONFIG_FILES. 43057 * src/Makefile.am: Remove abg-version.h generation rules. 43058 * src/abg-version.h.in: New. 43059 430602013-04-02 Benjamin Kosnik <bkoz@redhat.com> 43061 43062 Add doc dir. Add Doxgen api generation rules. 43063 * doc: Add. 43064 * doc/Makefile.am (html, install-html): Add. 43065 * doc/Makefile.in: Add. 43066 * doc/api/libabigail.doxy: Add doxygen config. 43067 * src/abg-*: Add @file markup. 43068 430692013-03-27 Benjamin Kosnik <bkoz@redhat.com> 43070 43071 Add configure to source control 43072 * configure: Add. 43073 * src/abg-corpus.cc: include stdexcept 43074 430752013-06-25 Dodji Seketeli <dodji@redhat.com> 43076 43077 Support offsets and virtual attribute in base class specifiers 43078 * src/abg-ir.h (class_decl::base_spec::base_spec): Take an offset 43079 and a is_virtual flag. 43080 (class_decl::base_spec::{get_is_virtual, get_offset_in_bits}): New 43081 methods. 43082 (class_decl::has_no_base_nor_member): New method declaration.. 43083 * src/abg-ir.cc (class_decl::base_spec::base_spec): Take an offset 43084 and a is_virtual flag 43085 (class_decl::has_no_base_nor_member): Define it. 43086 * src/abg-reader.cc (read_offset_in_bits): Renamed 43087 read_var_offset_in_bits into this. 43088 (read_is_virtual): New static function. 43089 (build_class_decl): Read the 'layout-offset-in-bits' and the 43090 'is-virtual' of the base class specifier. Adjust for the 43091 read_var_offset_in_bits -> read_offset_in_bits rename. 43092 * src/abg-writer.cc (write_layout_offset): New overload for the 43093 base class specifiers. 43094 (write_class_decl): If the class has no member or base class, make 43095 it a proper empty xml element. Write the offset and the 43096 is-virtual attribute. 43097 * tests/data/test-read-write/test20.xml: New test input data. 43098 * tests/test-read-write.cc: De-serialize the test above, serialize 43099 it back and compare that both versions are the same. 43100 431012013-06-22 Dodji Seketeli <dodji@redhat.com> 43102 43103 Iron out support for simple base classes. 43104 * src/abg-ir.h (class_decl::base_spec::base_spec): Move this 43105 out-of-line. Add a new constructor for clients compiled without 43106 RTTI. 43107 * src/abg-ir.cc (class_decl::base_spec::base_spec): This is now 43108 here out-of-line. Define the new constructor for clients compiled 43109 without RTTI. 43110 * tests/data/test-read-write/test19.xml: New test case input for 43111 base classes. 43112 * tests/test-read-write.cc: De-serialize and serialize the new 43113 test case input above. 43114 431152013-06-21 Dodji Seketeli <dodji@redhat.com> 43116 43117 Fix handling of forward decl of classes 43118 * abg-ir.h (class_decl::set_earlier_declaration): Move this 43119 out-of-line and add an overload. 43120 * src/abg-ir.cc (class_decl::set_earlier_declaration): Moved this 43121 out-of-line here and add an overload. 43122 * src/abg-reader.cc (build_class_decl): Really read the 43123 'decl-of-decl-id' property. Do not make the definition use the id 43124 of the declaration. Both have their id. 43125 * src/abg-writer.cc (write_class_decl): Put a space before the 43126 property "def-of-decl-id". 43127 * tests/data/test-read-write/test18.xml: New test input. 43128 * tests/test-read-write.cc: De-serialize this new input, serialize 43129 it back and make sure both versions are identical. 43130 431312013-06-21 Dodji Seketeli <dodji@redhat.com> 43132 43133 Serialize the layout offset of class data members. 43134 * src/abg-writer.cc (write_layout_offset): New function. 43135 (write_class_decl): Serialize the layout offset. 43136 431372013-06-21 Dodji Seketeli <dodji@redhat.com> 43138 43139 Support Bitwise OR for qualified_type_def::CV better 43140 * src/abg-ir.h (qualified_type_def::CV_RESTRICT): New enumerator 43141 for the qualified_type_def::CV enum. 43142 (operator|(qualified_type_def::CV, qualified_type_def::CV)): New 43143 declaration. 43144 * src/abg-ir.cc (operator|(qualified_type_def::CV, 43145 qualified_type_def::CV)): New definition. 43146 * src/abg-reader.cc (build_qualified_type_decl): No need for 43147 casting the result of bitwise or between instances of 43148 qualified_type_def::CV. 43149 431502013-06-14 Dodji Seketeli <dodji@seketeli.org> 43151 43152 Support method type/decl, variadic functions, class declarations-only 43153 * src/abg-ir.h (function_decl::parameter::parameter): New 43154 constructor with variadic parameter marker. 43155 (function_decl::m_type): Make this protected to let method_decl 43156 inheriting class to access it. 43157 (function_decl::get_type): Move this out-of-line. 43158 (class method_type, method_type_hash): New types. 43159 (enum class_decl::access_specifier): Add no_access new enumerator. 43160 (class_decl::data_member::data_member): Move this out-of-line. 43161 (class_decl::data_member::~data_member): Declare virtual 43162 destructor. 43163 (class method_decl): New class. 43164 (class member_function): Make this inherit method_decl, instead of 43165 function_decl. 43166 (class_decl::class_decl): New constructors. 43167 (class_decl::{hashing_started, is_declaration_only, 43168 set_earlier_declaration, get_earlier_declaration}): New methods. 43169 * src/abg-ir.cc (add_decl_to_scope): If a decl is already in a 43170 scope, don't add it to this scope. 43171 (get_global_scope): Make this work when passed an instance of 43172 global_scope. 43173 (dynamic_type_hash::operator()): Add support for method_type. 43174 (method_type::{method_type, set_class_type, ~method_type, }) 43175 (method_type_hash::operator()): New defintions. 43176 (function_decl::get_type, class_decl::class_decl): Move these 43177 out-of-line here. 43178 (class_decl::method_decl::{method_decl, ~method_decl, get_type}): 43179 New definitions. 43180 (class_decl::member_function::member_function): Move this 43181 out-of-line here. Support method_decl. 43182 (class_decl::data_member::data_member): Likewise. 43183 (class_decl_hash::operator()): Guard this against endless loop. 43184 * src/abg-reader.cc (write_class_is_declaration_only): New static 43185 function. 43186 (write_var_decl): Take a flag to write the mangled name or not. 43187 (write_function_decl): Take a flag to skip the first parameter. 43188 (write_cdtor_const_static): Use 'yes' instead of 'true' as value 43189 of the properties. 43190 (write_decl, write_function_template_decl): Adjust wrt the new 43191 signatures of write_var_decl and write_function_decl. 43192 (write_enum_type_decl): Simplify call to write_location. 43193 (write_class_decl): Support serializing declaration-only classes. 43194 * src/abg-writer.cc: 43195 * tests/data/test-read-write/test17.xml: New test input. 43196 * tests/test-read-write.cc: De-serialize the above, and serialize it back. 43197 * tests/data/test-read-write/test10.xml: Update this test. 43198 431992013-06-01 Dodji Seketeli <dodji@redhat.com> 43200 43201 Support function_type and adapt a function_decl to use it 43202 * src/abg-ir.h (class function_type): Forward decl prior to class 43203 function_decl. 43204 (function_decl::parameter): Pass string by const reference. Add a 43205 variadic marker member and initialize it. 43206 (function_decl::parameter::get_type): Add a non-const overload. 43207 (function_decl::parameter::get_variadic_marker): New getter. 43208 (function_decl::function_decl) Take a const reference to a vector 43209 for parameters, type size/alignment. Add two overloads that takes a 43210 pointer to function_type. 43211 (function_decl::get_parameters): Move this out-of-line. 43212 (function_decl::append_parameter(s)): Renamed 43213 function_decl::add_parameter(s) into these. Move it out-of-line. 43214 Add an overload. 43215 (function_decl::{get_type, set_type}): New declaration. 43216 (function_decl::get_return_type): Move this out-of-line. 43217 (function_decl::is_variadic): New in-line function. 43218 (function_decl::m_type): New data member. 43219 (function_decl::{m_parms, m_return_type}): Remove. This are now 43220 carried by function_decl::m_type. 43221 (class function_type, struct function_type_hash): New 43222 declarations. 43223 (member_function::member_function): Take a vector of pointers to 43224 parameters. Take size/align of the type of the member function. 43225 Adjust initialization. 43226 * src/abg-ir.cc (dynamic_type_hash): Hash instance of 43227 function_type accessed through a pointer. 43228 (function_type::{operator==, ~function_type}) 43229 (function_type_hash::operaror(), function_decl::{get_return_type, 43230 }, function_decl::parameter::hash::operator()): New definitions. 43231 (function_decl::function_decl): The out-of-line definitions of the 43232 declarations above. 43233 (function_decl::append_parameter): Moved this out-of-line from 43234 inline function_decl::add_parameter. Make this rely on the 43235 underlying m_type. 43236 (function_decl::operator==): Adjust for use of vector for the 43237 parameters. Also, there is no need anymore to compare the 43238 parameters or the return types as they are compared by the 43239 comparison of the function types. 43240 * src/abg-reader.cc (build_function_decl): Read the new size/alignment 43241 attributes on the function-decl element. Build a function_type 43242 and use it to build the function_decl. Parameters and return type 43243 are now hung off of the function_type. 43244 (handle_function_decl): use build_function_decl. 43245 * src/abg-writer.cc (write_function_decl): Write the new 43246 size/alignment properties of the function-decl element. Adjust 43247 for the use of vectors for function parameters now. 43248 * tests/data/test-read-write/test10.xml: Adjust for the presence 43249 of size/alignment properties in the function-decl element now. 43250 * tests/data/test-read-write/test11.xml: Likewise. 43251 * tests/data/test-read-write/test12.xml: Likewise. 43252 * tests/data/test-read-write/test13.xml: Likewise. 43253 * tests/data/test-read-write/test14.xml: Likewise. 43254 * tests/data/test-read-write/test9.xml: Likewise. 43255 432562013-06-01 Dodji Seketeli <dodji@redhat.com> 43257 43258 Support null type hashing 43259 * src/abg-ir.cc (dynamic_type_hash::operator()(const type_base* t) 43260 const): Support hashing null type. 43261 432622013-05-23 Dodji Seketeli <dodji@redhat.com> 43263 43264 Add a couple of output file suffix configuration properties 43265 * src/abg-config.h (config::{get_tu_instr_suffix, 43266 set_tu_instr_suffix, get_tu_instr_archive_suffix, 43267 set_tu_instr_archive_suffix}): New decls. 43268 * src/abg-config.cc (config::{get_tu_instr_suffix, 43269 set_tu_instr_suffix, get_tu_instr_archive_suffix, 43270 set_tu_instr_archive_suffix}): New defs. 43271 432722013-05-23 Dodji Seketeli <dodji@redhat.com> 43273 43274 Add a new add_decl_to_scope overload 43275 * src/abg-ir.h (add_decl_to_scope): New declaration. 43276 * src/abg-ir.cc (add_decl_to_scope): New definition. 43277 432782013-05-23 Dodji Seketeli <dodji@redhat.com> 43279 43280 Ensure add_decl_to_scope properly updates the scope 43281 * src/abg-ir.h (scope_decl::m_member_scopes) 43282 (scope_decl::get_member_scopes): New declarations. 43283 (scope_decl::add_member_decl): Move this to ... 43284 * src/abg-ir.cc (scope_decl::add_member_decl): ... here. Make it 43285 update the new scope_decl::m_member_scopes too. 43286 432872013-05-23 Dodji Seketeli <dodji@redhat.com> 43288 43289 Add translation_unit::get_path 43290 * src/abg-ir.cc (translation_unit::get_path): New declaration. 43291 * src/abg-ir.cc (translation_unit::get_path): New definition. 43292 432932013-05-23 Dodji Seketeli <dodji@redhat.com> 43294 43295 Link the global scope to its translation unit 43296 * src/abg-ir.h (global_scope::global_scope): Take a translation 43297 unit and initialize the tu member with it. 43298 * src/abg-ir.cc (translation_unit::get_global_scope): Initialize 43299 the global scope with its actual translation unit. 43300 433012013-05-23 Dodji Seketeli <dodji@redhat.com> 43302 43303 Have location numbers that are stable throughout translation unit editing 43304 * src/abg-irc.cc (location_manager::create_new_location): Just 43305 append the new expanded location to the end of the location 43306 vectors, and return the new size of the vector as the location 43307 number. That way we don't change the location number of an 43308 expanded location that is already in the vector -- that change 43309 happens if we keep the vector sorted during the insertion. 43310 (location_manager::expand_location): The index of the expanded 43311 location is the location number - 1. 43312 433132013-05-23 Dodji Seketeli <dodji@redhat.com> 43314 43315 Fix in-source detection of the library for GCC 43316 * abigail.m4 (ABIGAIL_INIT): Don't forget to set abigaillibs when 43317 we detect the library in the source tree, particularly for GCC. 43318 433192013-05-21 Dodji Seketeli <dodji@redhat.com> 43320 43321 Re-generate aclocal.m4 43322 * aclocal.m4: Re-generate with autoconf 2.64. 43323 433242013-05-21 Benjamin Kosnik <bkoz@redhat.com> 43325 43326 Generate abg-version at configure time in builddir 43327 * configure.ac: Add src/abg-version.h to AC_CONFIG_FILES. 43328 * src/Makefile.am: Remote ad-hoc generation of abg-version.h from 43329 here. 43330 * src/abg-version.h.in: New file. 43331 * configure: Re-generate. 43332 * src/Makefile.in: Likewise. 43333 433342013-05-21 Dodji Seketeli <dodji@redhat.com> 43335 43336 add abigail.m4 to the distribution 43337 * Makefile.am: Add abigail.m4 to the distribution. 43338 * Makefile.in: Re-generate. 43339 433402013-05-10 Dodji Seketeli <dodji@redhat.com> 43341 43342 Pedantic fixes 43343 * src/abg-ir.h (enum decl_base::binding): Remove trailing space. 43344 (enum class_decl::access_specifier): Likewise. 43345 433462013-05-07 Dodji Seketeli <dodji@redhat.com> 43347 43348 Fix for building libabigail inside the GCC tree 43349 * abigail.m4: Detect when we are in the GCC tree; disable version 43350 check in that case. 43351 433522013-05-07 Dodji Seketeli <dodji@redhat.com> 43353 43354 Re-generate configury with autoconf 2.64 43355 * abigail.m4: Add licence header. 43356 * configure.ac: Re-generate configure script with autoconf 2.64 43357 like for GCC. 43358 433592013-05-07 Dodji Seketeli <dodji@redhat.com> 43360 43361 Allow autoconf-based clients to detect the library 43362 * configure.ac: Define the components of the version number as 43363 autoconf variables. Set the version number to 0.1.0 43364 * abigail.m4: New file 43365 * Makefile.am: Add abigail.m4 to the build system. Install it in 43366 $(datadir)/aclocal. 43367 * src/Makefile.am: Generate and add abg-version.h from the version 43368 number autoconf variable defined in configure.ac. Re-generate 43369 abg-version.h each time configure.ac changes. 43370 * src/abg-config.h (abigail_get_library_version): Declare ... 43371 * src/abg-config.cc (abigail_get_library_version): ... and define 43372 this wirth C linkage. This is useful for autoconf tests to test 43373 for the presence of the library. 43374 * configure: Re-generate. 43375 * Makefile.in: Likewise. 43376 * src/Makefile.in: Likewise. 43377 * tests/Makefile.in: Likewise. 43378 433792013-05-03 Dodji Seketeli <dodji@redhat.com> 43380 43381 Build system fix for make distcheck 43382 * Makefile.am: Support the doc sub-directory. We don't have a 43383 COPYRIGHT file. 43384 * src/Makefile.am: Don't prefix the file paths by the absolute 43385 path of the src dir; current autotools know how to deal with it, 43386 otherwise and it break them. 43387 * tests/Makefile.am: Likewise. Make sure to remove the output of 43388 the tests upon make clean. 43389 * Makefile.in: Re-generate. 43390 * aclocal.m4: Likewise. 43391 * configure: Likewise. 43392 * src/Makefile.in: Likewise. 43393 * tests/Makefile.in: Likewise. 43394 433952013-05-02 Dodji Seketeli <dodji@redhat.com> 43396 43397 Initial support for member class templates 43398 * src/abg-ir.cc (class_decl::add_member_function_template): Fix 43399 comment. 43400 (class_decl::add_member_class_template) 43401 (class_decl::member_class_template::operator==) 43402 (class_decl::member_class_template_hash::operator()): New 43403 definitions. 43404 (class_decl::operator==): Compare member templates. Fix logic. 43405 (class_decl::data_member_hash::operator()) 43406 (class_decl::member_function_hash::operator()) 43407 (class_decl::member_function_template_hash::operator()): Don't 43408 hash the is_static boolean as it's hashed as part of the 'member' 43409 sub-object hashing. 43410 (class_decl::member_function_template::operator==): Move this out 43411 of line here, from the header file. 43412 (class_decl_hash::operator()): Hash member class templates. 43413 * src/abg-ir.h (class_decl::member::{m_is_static,is_static}): Add the is_static 43414 boolean here, so that it's factorized out of the inherited classes 43415 of this class. 43416 (class_decl::data_member::{is_static, m_is_static}) 43417 (class_decl::member_function::{is_static, m_is_static}) 43418 (class_decl::member_function_template::{is_static, m_is_static}): Remove this 43419 as it's now part of the base 'member' class. 43420 (class_decl::data_member::operator==) 43421 (class_decl::member_function::operator==): Don't compare the 43422 is_static boolean as it's now compared as part of the 'member' 43423 sub-object comparison. 43424 (class_decl::member_function_template::operator==): Move this 43425 out-of-line into src/abg-ir.cc. 43426 (class class_decl::member_class_template, struct 43427 class_decl::member_class_template_hash) 43428 (class_decl::{add_member_class_template, 43429 get_member_class_templates}): New declarations. 43430 (class_decl::member_class_templates_type): New typedef. 43431 * src/abg-reader.cc (build_class_decl): Support de-serializing 43432 member class templates. 43433 * src/abg-writer.cc (write_class_decl): Likewise, support 43434 serializing member class templates. 43435 * tests/data/test-read-write/test16.xml: New test input. 43436 * tests/test-read-write.cc (int_out_specs[]): Add the new test 43437 input to the list of inputs that are de-serialized and serialized 43438 back. 43439 * tests/Makefile.am: Add the new test input to the distribution. 43440 434412013-05-02 Dodji Seketeli <dodji@redhat.com> 43442 43443 Initial support of class templates 43444 * src/abg-ir.cc (class_template_decl::class_template_decl) 43445 (class_template_decl::set_pattern) 43446 (class_template_decl::operator==) 43447 (class_template_decl::~class_template_decl) 43448 (class_template_decl_hash::operator()) 43449 (class_tmpl_shared_ptr_hash::operator()): New definitions. 43450 * src/abg-ir.h (class class_template_decl, struct 43451 class_tmpl_shared_ptr_hash, struct class_tmpl_shared_ptr_hash): 43452 New declarations. 43453 * src/abg-reader.cc (read_context::const_class_tmpl_map_it): New 43454 typedef. 43455 (read_context::get_fn_tmpl_decl): Fix comment. 43456 (read_context::{get_class_tmpl_decl,key_class_tmpl_decl}) 43457 (build_class_template_decl, handle_class_template_decl): New 43458 definitions. 43459 (read_context::m_class_tmpl_map): New member. 43460 (handle_element): Support "class-template-decl" xml elements 43461 nodes. 43462 (build_class_decl): Add missing bits to comment. 43463 (build_function_template_decl): Fix spacing. 43464 * src/abg-writer.cc (class_tmpl_shared_ptr_map): New typedef. 43465 (write_context::m_class_tmpl_map): New member. 43466 (write_context::get_id_for_class_tmpl, write_class_template_decl): 43467 New definitions. 43468 (write_template_parameters): Factorize this this out from ... 43469 (write_function_template_decl): ... here. 43470 (write_decl): Support writing instances of class_template_decl. 43471 Fix spacing. 43472 * tests/data/test-read-write/test15.xml: New test input. 43473 * tests/Makefile.am: Add the new test15.xml input to the 43474 distribution. 43475 * tests/test-read-write.cc (in_out_specs): Add the new test15.xml 43476 test to the list of serialized output to be de-serialized and 43477 serialized back. 43478 434792013-05-02 Dodji Seketeli <dodji@redhat.com> 43480 43481 Fix function_tempalte_decl init & hashing 43482 * src/abg-ir.cc (function_template_decl::operator==): Compare the 43483 patterns, not a pointer to them. 43484 (function_template_decl_hash::operator()): Don't try to hash null 43485 patterns. 43486 * src/abg-ir.h (function_template_decl::function_template_decl): 43487 Use function_template_decl::set_pattern to set the pattern here. 43488 434892013-04-30 Dodji Seketeli <dodji@redhat.com> 43490 43491 Support member function templates 43492 * src:abg-ir.h: Move template declarations before class 43493 class_decl, so that class_decl can have member templates. 43494 (class class_decl::member_function_template) 43495 (class_decl::add_member_function_template) 43496 (class_decl::{base_specs_type, member_types_type, 43497 data_members_types, member_functions_type, 43498 member_function_templates_type}): New declarations. 43499 * src/abg-ir.cc (class_decl::add_member_function_template) 43500 (class_decl::member_function_template_hash::operator()): New 43501 definitions. 43502 (class_decl_hash::operator()): Support hashing for member 43503 function templates. 43504 * src/abg-reader.cc (build_class_decl): Use the new 43505 class_decl::{member_types_type, data_members_type, 43506 member_functions_type, base_specs_type} types. Support member 43507 function templates. 43508 * src/abg-writer.cc (write_cdtor_const_static): New definition. 43509 (write_class_decl): Support member function templates. 43510 * tests/data/test-read-write/test14.xml: New input data. 43511 * tests/Makefile.am: Add it to the distribution. 43512 * tests/test-read-write.cc (InOutSpec int_out_specs): De-serialize 43513 the new test input file, serialize it back and diff both results. 43514 435152013-04-25 Dodji Seketeli <dodji@redhat.com> 43516 43517 Inheritance fix 43518 * src/abg-ir.h (class template_non_type_parameter): Make this 43519 inherit decl_base virtually. 43520 435212013-04-25 Dodji Seketeli <dodji@redhat.com> 43522 43523 Small comment fix 43524 * src/abg-ir.h (class template_decl): Fix comment. 43525 435262013-04-25 Dodji Seketeli <dodji@redhat.com> 43527 43528 Add some decl predicates 43529 * src/abg-ir.h (is_at_global_scope): Rename 43530 is_decl_at_global_scope into this. 43531 (is_at_class_scope, is_at_template_scope) 43532 (is_template_parameter, is_type) 43533 (is_template_parm_composition_type) 43534 (is_function_template_pattern, is_template_decl): New 43535 declarations. 43536 * src/abg-ir.cc (is_at_global_scope): Rename 43537 is_decl_at_global_scope into this. 43538 (is_at_class_scope, is_at_template_scope, is_template_parameter) 43539 (is_type, is_template_parm_composition_type) 43540 (is_function_template_pattern, is_template_decl): New definitions. 43541 * src/abg-reader.cc (update_depth_info_of_read_context): Use the 43542 new is_at_class_scope decl. 43543 435442013-04-25 Dodji Seketeli <dodji@redhat.com> 43545 43546 Support composing template type parameters 43547 * src/abg-ir.h (class tmpl_parm_type_composition): New 43548 declaration. 43549 * src/abg-ir.cc 43550 (tmpl_parm_type_composition::tmpl_parm_type_composition) 43551 (tmpl_parm_type_composition::~tmpl_parm_type_composition): New 43552 definitions. 43553 * src/abg-reader.cc (build_tmpl_parm_type_composition): New 43554 function. 43555 (build_template_parameter): Support template parameter type 43556 composition. 43557 * src/abg-writer.cc (write_tmpl_parm_type_composition): New 43558 function. 43559 (write_template_non_type_parameter): Fix type-id attribute. 43560 (write_template_parameter): Support template parameter type 43561 composition. 43562 * tests/data/test-read-write/test13.xml: New test input. 43563 * tests/Makefile.am: Add it to the distribution. 43564 * tests/test-read-write.cc (InOutSpec in_out_spec): Add test13.xml 43565 to the list of xml file that are de-serialized and serialized back. 43566 435672013-04-24 Dodji Seketeli <dodji@redhat.com> 43568 43569 Fix depth management during the parsing 43570 * src/abg-ir.cc (decl_base_hash::operator()): Don't hash the 43571 context for decls in general. 43572 * src/abg-reader.cc (read_context::push_decl_to_current_scope) 43573 (read_context::push_and_key_type_decl): Add an overload that takes 43574 a node and update_depth_info boolean. 43575 (build_var_decl, build_type_decl, build_qualified_type_decl) 43576 (build_pointer_type_def, build_reference_type_def) 43577 (build_enum_type_decl, build_type_decl) 43578 (build_template_type_parameter, build_template_non_type_parameter) 43579 (build_template_template_parameter, build_template_parameter) 43580 (build_type): Make these functions take an update_depth_info 43581 parameter. Pass it do read_context::push_and_key_type_decl or 43582 read_context::push_decl_to_current_scope rather than call 43583 update_read_context. 43584 (build_function_decl, build_class_decl) 43585 (build_function_template_decl): Change the seen_by_reader 43586 parameter into update_depth_info. Pass the update_depth_info bool 43587 to read_context::push_decl_to_current_scope rather than call 43588 update_depth_info here. 43589 (handle_class, handle_function_template_decl): Adjust. 43590 * tests/data/test-read-write/test12.xml: Add new test input. 43591 * tests/test-read-write.cc (InOutSpec in_out_specs): Add it to the 43592 list of input to de-serialize, serialize back and compare the two. 43593 * tests/Makefile.am: Add the new test input to the distribution. 43594 435952013-04-23 Dodji Seketeli <dodji@redhat.com> 43596 43597 Initial support for function templates 43598 * src/abg-ir.h (function_decl::set_return_type): New inline 43599 definition. 43600 (class template_decl, struct template_decl_hash, class 43601 template_parameter, struct template_parameter_hash, struct 43602 dynamic_template_parameter_hash, struct 43603 template_parameter_shared_ptr_hash, class template_type_parameter) 43604 (struct template_type_parameter_hash, class 43605 template_non_type_parameter, struct 43606 template_non_type_parameter_hash, class 43607 template_template_parameter, struct 43608 template_template_parameter_hash, class function_template_decl) 43609 (struct function_template_decl_hash, struct 43610 fn_tmpl_shared_ptr_hash): New declarations. 43611 * src/abg-ir.cc (dynamic_type_hash::operator()): Add hashing for 43612 template template, and template type parameters. 43613 (template_decl_hash::operator, template_decl::~template_decl) 43614 (template_decl::operator==, template_parameter::operator==) 43615 (template_parameter_hash::operator()) 43616 (dynamic_template_parameter_hash::operator()) 43617 (template_type_parameter::operator==) 43618 (template_type_parameter::~template_type_parameter) 43619 (template_type_parameter_hash::operator()) 43620 (template_non_type_parameter::operator==) 43621 (template_non_type_parameter::~template_non_type_parameter) 43622 (template_non_type_parameter_hash::operator()) 43623 (template_template_parameter::operator==) 43624 (template_template_parameter::~template_template_parameter) 43625 (template_template_parameter_hash::operator()) 43626 (function_template_decl::operator==) 43627 (function_template_decl_hash::operator()) 43628 (fn_tmpl_shared_ptr_hash::operator()) 43629 (function_template_decl::~function_template_decl()): New 43630 definitions. 43631 * src/abg-reader.cc (read_context::get_fn_tmpl_decl) 43632 (read_context::key_fn_tmpl_decl): New functions. 43633 (read_context::m_fn_tmpl_map): New data member. 43634 (read_context::key_type_decl): Renamed read_context::add_type_decl 43635 into this. 43636 (read_context::push_decl_to_current_scope): Renamed 43637 read_context::finish_decl_creation into this. Add an assert. 43638 (read_context::push_and_key_type_decl): Renamed 43639 read_context::finish_type_decl_creation into this. Adjust to the 43640 use of push_decl_to_current_scope and key_type_decl. 43641 (build_function_template_decl, build_template_type_parameter) 43642 (build_template_non_type_parameter) 43643 (build_template_template_parameter, build_template_parameter) 43644 (handle_function_template_decl): New functions. 43645 (handle_element): Call handle_function_template_decl. 43646 (build_function_decl): Take a bool parameter to update depth 43647 information in parsing context. Move instantiation of 43648 function_decl before parsing its xml sub-nodes. Update the depth 43649 info in the parsing context if necessary. Push the newly 43650 intantiated decl to scope. And then parse the sub nodes. Do not 43651 forget to add the fn parameters and return type using 43652 function_decl::add_parameter and function_decl::set_return_type. 43653 (build_var_decl, build_type_decl, build_qualified_type_decl) 43654 (build_pointer_type_def, build_reference_type_def) 43655 (build_enum_type_decl, build_typedef_decl, handled_type_decl) 43656 (handle_qualified_type_decl, handle_pointer_type_def) 43657 (handle_reference_type_def, handle_enum_type_decl) 43658 (handle_typedef_decl, handle_var_decl, handle_function_decl) 43659 (handle_class_decl): Adjust. 43660 (build_class_decl): Take a bool parameter to update depth 43661 information in parsing context. Add comment. Wait for the class 43662 members to be built, before keying (and thus hashing it) the 43663 class. 43664 (build_type): Fix logic, and adjust. 43665 * src/abg-writer.cc (write_context::type_has_existing_id) 43666 (write_context::get_id_for_fn_tmpl, write_template_type_parameter) 43667 (write_template_non_type_parameter) 43668 (write_template_template_parameter, write_template_parameter) 43669 (write_function_template_decl): New functions. 43670 (write_context::get_id_for_type): Simplify logic. 43671 (write_decl): Support writing function template. 43672 * tests/data/test-read-write/test11.xml: New test input. 43673 * tests/test-read-write.cc (InoutSpec in_out_specs[]): 43674 De-serialize the new test11.xml test, serialize it back and diff 43675 output and input. 43676 * tests/Makefile.am: Add test11.xml to the distribution. 43677 436782013-04-23 Dodji Seketeli <dodji@redhat.com> 43679 43680 Mangled name of a scope_decl is its name 43681 * src/abg-ir.h (scope_decl::scope_decl): The mangled name is the name. 43682 436832013-04-23 Dodji Seketeli <dodji@redhat.com> 43684 43685 Update scope when adding class members 43686 * src/abg-ir.h (class_decl::add_member_type) 43687 (class_decl::add_data_member, class_decl::add_member_function): 43688 Move the inline implementation of these functions ... 43689 * src:abg-ir.cc (class_decl::add_member_type) 43690 (class_decl::add_data_member, class_decl::add_member_function): 43691 ... here. Augment their implementation to properly update the 43692 scope of the member. 43693 436942013-04-23 Dodji Seketeli <dodji@redhat.com> 43695 43696 Rename class_decl::member_type::get_type into as_type 43697 * src/abg-ir.h (class_decl::member_type::get_type): Rename this 43698 into class_decl::member_type::as_type. 43699 * src/abg-writer.cc (write_class_decl): Adjust. 43700 437012013-04-23 Dodji Seketeli <dodji@redhat.com> 43702 43703 Avoid having multiple sub-objects of base classes 43704 * src/abg-ir.cc (decl_base::decl_base): Remove useless definition. 43705 (type_base::type_base): Remove default arguments from parameters. 43706 (scope_type_decl::scope_type_decl) 43707 (namespace_decl::namespace_decl): Call the constructors for the 43708 virtual bases explicitly. 43709 * src/abg-ir.h (class scope_decl): Perform virtual inheritance of 43710 decl_base. 43711 (global_scope::global_scope): Call virtual base decl_base's 43712 constructor directly. 43713 (class type_decl): Inherit from decl_base and type_base 43714 virtually. 43715 (class scope_type_decl): Inherit from type_base virtually. 43716 (class qualified_type_def, pointer_type_def, reference_type_def) 43717 (class enum_type_decl, typedef_decl): Inherit from type_base and 43718 decl_base virtually. 43719 (class var_decl, function_decl): Inherit from decl_base virtually. 43720 (class class_decl::member): Don't inherit from anything and adjust 43721 constructor's mem-initializer accordingly. 43722 (class class_decl::member_type): Inherit from decl_base virtually 43723 and adjust constructor's mem-initializer accordingly. 43724 (class_decl::{data_member::data_member,member_function::member_function) 43725 (class_decl::class_decl): Call virtual base's constructor 43726 explicitly. 43727 437282013-04-22 Dodji Seketeli <dodji@redhat.com> 43729 43730 Move inline hashing functions out of line 43731 * src/abg-ir.h (decl_base_hash::operator()) 43732 (type_base_hash::operator(), type_decl_hash::operator()) 43733 (scope_type_decl_hash::operator()) 43734 (qualified_type_def_hash::operator()) 43735 (pointer_type_def_hash::operator()) 43736 (reference_type_def_hash::operator()) 43737 (enum_type_decl_hash::operator(), typedef_decl_hash::operator()) 43738 (var_decl_hash::operator(), function_decl_hash::operator()) 43739 (class_decl::member_type_hash::operator()) 43740 (class_decl::base_spec_hash::operator()) 43741 (class_decl::data_member_hash::operator()) 43742 (class_decl::member_function_hash::operator()): Move these inline 43743 definition ... 43744 * src/abg-ir.cc: ... here. 43745 437462013-04-22 Dodji Seketeli <dodji@redhat.com> 43747 43748 Various style nit fixes 43749 * src/abg-ir.cc: Move the emacs mode specifier for the file to the 43750 top of the file, otherwise, it's not effective. 43751 (struct location_manager::priv): Add end of struct comment. 43752 (class_decl_hash::operator()): Add fn comment. 43753 * src/abg-ir.h: Move the emacs mode specifier for the file to the 43754 top of the file, otherwise, it's not effective. 43755 (class scope_decl): Add end of class comment. 43756 * src/abg-reader.cc: Move the emacs mode specifier for the file to the 43757 top of the file, otherwise, it's not effective. 43758 (read_context::{get_type_decl,add_type_decl): Add comment. 43759 (handle_namespace_decl): Fix indent. 43760 * src/abg-writer.cc: Move the emacs mode specifier for the file to 43761 the top of the file, otherwise, it's not effective. 43762 437632013-04-12 Dodji Seketeli <dodji@redhat.com> 43764 43765 Remove .gitignore from VCS 43766 * .gitignore: Remove from revision control as different 43767 programmers might want to ignore different things. 43768 437692013-04-08 Benjamin Kosnik <bkoz@redhat.com> 43770 43771 Add license 43772 * src/abg-*: Add license. 43773 * tests/test-*: Same. 43774 437752013-04-11 Dodji Seketeli <dodji@redhat.com> 43776 43777 Initial Support for class declarations 43778 * src/abg-ir.h (scope_decl::scope_decl) 43779 (scope_type_decl::scope_type_decl): Don't set mangled name for 43780 scope_decl instances as it doesn't make sense. 43781 (var_decl::var_decl): Pass the type shared pointer by value. 43782 (struct var_decl_hash, function_decl::parameter::operator==) 43783 (struct function_decl::parameter_hash, function_decl::operator==) 43784 (struct function_decl_hash, class class_decl, struct 43785 class_decl_hash): New declarations. 43786 * src/abg-ir.cc (scope_type_decl::scope_type_decl): Don't set the 43787 mangled name. It doesn't make sense for scope_decls. 43788 (dynamic_type_hash::operator): Fix comment. Run the hashing for 43789 scope_type_decl instances *after* running it for class_decl 43790 instance, otherwise, the class_decl instances case will never get 43791 hit. 43792 (var_decl::var_decl): Pass the type shared pointer by value. 43793 (function_decl::operator==, class_decl::operator==) 43794 (class_decl_hash::operator()): New fns. 43795 * src/abg-libxml-utils.h (get_xml_node_depth): Declare new fn. 43796 (XML_READER_GET_ATTRIBUTE): Fix comment. 43797 (XML_NODE_GET_ATTRIBUTE): New getter macro. 43798 * src/abg-libxml-utils.cc (get_xml_node_depth): New definition. 43799 * src/abg-reader.cc (update_read_context) 43800 (update_depth_info_of_read_context, read_visibility, read_binding) 43801 (read_access, read_size_and_alignment, read_static) 43802 (read_var_offset_in_bits, read_cdtor_const, build_function_decl) 43803 ( build_var_decl, build_type_decl, build_qualified_type_decl) 43804 (build_pointer_type_def, build_reference_type_def) 43805 (build_enum_type_decl, build_typedef_decl, build_class_decl) 43806 (build_type, handle_class_decl): New functions or overloads. 43807 (handle_element): Update to handle "class-decl" xml elements. 43808 * src/abg-writer.cc (write_size_and_alignment, write_access) 43809 (write_class, do_indent_to_level, get_indent_to_level): New fns. 43810 (write_decl): Update to serialize instances of class_decl. 43811 (write_type_decl, write_pointer_type_def) 43812 (write_reference_type_def): Use the new write_size_and_alignment instead of 43813 writing the attributes directly. 43814 * tests/data/test-read-write/test10.xml: New test file. 43815 * tests/Makefile.am: Add tests/data/test-read-write/test10.xml to 43816 the build system. 43817 * tests/test-read-write.cc (in_out_spec): De-serialize 43818 data/test-read-write/test10.xml, serialize it back into 43819 output/test-read-write/test10.xml, and compare the two output that 43820 should be identical. 43821 438222013-04-11 Dodji Seketeli <dodji@redhat.com> 43823 43824 Update enum decl representation as per the schema 43825 * src/abg-reader.cc (handle_enum_type_decl): The name of the 43826 element holding the underlying type is now "underlying-type", no 43827 more "base". 43828 * src/abg-writer.cc (write_enum_type_decl): Likewise. 43829 * tests/data/test-read-write/test6.xml: Likewise. 43830 438312013-04-10 Dodji Seketeli <dodji@redhat.com> 43832 43833 Add tests/data/test-read-write/test9.xml 43834 * tests/data/test-read-write/test9.xml: (Forgot to) Add this new 43835 test file. 43836 438372013-04-04 Dodji Seketeli <dodji@redhat.com> 43838 43839 Support function declarations 43840 * src/abg-ir.h (class function_decl): New declaration & inline 43841 definitions. 43842 * src/abg-ir.cc (function_decl::~function_decl): New definition. 43843 * src/abg-reader.cc (read_location): New overload to read location 43844 from an xmlNodePtr. 43845 (build_function_parameter, handle_function_decl): 43846 New definitions. 43847 (handle_element): Support "function-decl" elements. 43848 * src/abg-writer.cc (write_location): New overload to write a 43849 location directly, not from a decl. 43850 (write_function_decl): New definition. 43851 (write_binding): Support writing the binding attribute from a 43852 function_decl instance. 43853 (write_decl): support serializing function 43854 * tests/data/test-read-write/test9.xml: New test input file. 43855 * tests/Makefile.am: Add data/test-read-write/test9.xml to the 43856 build system. 43857 * tests/test-read-write.cc: De-serialize 43858 data/test-read-write/test9.xml, serialize it back and diff the 43859 output from the input. 43860 438612013-04-03 Dodji Seketeli <dodji@redhat.com> 43862 43863 Update in-vcs configure and docs/Makefile.in to recent configure 43864 * configure: Updated as re-generated by autoconf 2.69. 43865 * doc/Makefile.in: Updated as re-generated by automake 1.12.2. 43866 438672013-04-02 Benjamin Kosnik <bkoz@redhat.com> 43868 43869 Add doc dir. Add Doxgen api generation rules. 43870 * doc: Add. 43871 * doc/Makefile.am (html, install-html): Add. 43872 * doc/Makefile.in: Add. 43873 * doc/api/libabigail.doxy: Add doxygen config. 43874 * src/abg-*: Add @file markup. 43875 438762013-04-03 Dodji Seketeli <dodji@redhat.com> 43877 43878 Introduce/use translation_unit & global_scope types 43879 * abg-corpus.h (abi_corpus::{get_decls, get_loc_mgr}): Remove. 43880 (abi_corpus::add): New function to add a translation unit. 43881 (abi_corpus::get_translation_units): New declaration. 43882 * abg-corpus.cc (abi_corpus::*): Remove all the definitions of 43883 abi_corpus for now, as the abi_corpus type is not used anymore -- 43884 for now at least. 43885 * src/abg-ir.h (add_decl_to_scope, get_global_scope) 43886 (get_translation_unit, is_global_scope, is_decl_at_global_scope) 43887 (class translation_unit, class global_scope): New declarations 43888 * src/abg-ir.cc (translation_unit::translation_unit) 43889 (translation_unit::get_global_scope) 43890 (translation_unit::get_loc_mgr, translation_unit::get_loc_mgr) 43891 (translation_unit::is_empty, get_global_scope) 43892 (get_translation_unit, is_global_scope, is_global_scope) 43893 (is_decl_at_global_scope, global_scope::~global_scope): New 43894 definitions. 43895 (scope_decl::scope_decl, scope_decl::scope_decl) 43896 (scope_decl::add_member_decl, scope_decl::get_member_decls): Move 43897 to abg-ir.h, inline. 43898 * src/abg-reader.h (read_file): Don't use abi_corpus in the api. 43899 Rather, use translation_unit. 43900 * src/abg-reader.cc (read_context::get_cur_scope): Now that we 43901 have a specific instance of global_scope to represent global 43902 scope, don't play games with empty scopes to detect a global 43903 scope. 43904 (read_context::get_translation_unit): New definition. 43905 (read_context::finish_decl_creation, finish_type_decl_creation): 43906 (read_input, read_file, read_location, handle_element) 43907 (handle_type_decl) 43908 (handle_namespace_decl, handle_qualified_type_decl) 43909 (handle_pointer_type_def, handle_reference_type_def) 43910 (handle_enum_type_decl, handle_typedef_decl, handle_var_decl): 43911 Don't use abi_corpus anymore. Rather, the translation unit a decl 43912 belongs to is accessible from the decl itself. 43913 * src/abg-writer.h (write_to_ostream): Use translation_unit in 43914 this API, rather than abi_corpus. 43915 * src/abg-writer.cc (write_translation_unit): Rename write_corpus 43916 into this. And stop using abi_corpus here. 43917 (write_to_ostream, write_corpus, write_location, write_decl) 43918 (write_type_decl, write_namespace_decl, write_qualified_type_def) 43919 (write_pointer_type_def, write_reference_type_def) 43920 (write_enum_type_decl, write_typedef_decl, write_var_decl): Stop 43921 using abi_corpus. Use the translation_unit that is accessible 43922 from the decl being serialized, if need be. 43923 * test-read-write.cc (main): De-serialize the input into an 43924 instance of translation_unit, not an abi_corpus anymore, and 43925 serialize that translation_unit. 43926 439272013-04-02 Dodji Seketeli <dodji@redhat.com> 43928 43929 Support var decl & mangled_name attributes 43930 * src/abg-ir.h (decl_base::binding, decl_base::get_mangled_name) 43931 (decl_base::set_mangled_name, decl_base::m_mangled_name): New 43932 declarations. 43933 (scope_decl::scope_decl: type_decl::type_decl) 43934 (scope_type_decl::scope_type_decl, typedef_decl::typedef_decl): 43935 Initialize mangled_name. 43936 (namespace_decl::namespace_decl): Initialize visibility. 43937 (class var_decl): New declaration. 43938 * src/abg-ir.cc (decl_base::decl_base, scope_decl::scope_decl) 43939 (type_decl::type_decl, scope_type_decl::scope_type_decl): 43940 Initialize mangled name. 43941 (namespace_decl::namespace_decl): Initialize visibility. 43942 (qualified_type_def::qualified_type_def) 43943 (pointer_type_def::pointer_type_def) 43944 (reference_type_def::reference_type_def): By default, set the 43945 visibility to the same as for the underlying type. 43946 (enum_type_decl::enum_type_decl, typedef_decl::typedef_decl): 43947 Initialize mangled name. 43948 (var_decl::var_decl, var_decl::operator==, var_decl::~var_decl): 43949 New definitions. 43950 * src/abg-reader.cc (read_visibility, read_binding, handle_var_decl): New 43951 definitions. 43952 (read_file): Handle var-decl elements. 43953 * src/abg-writer.cc (write_location): Rename write_decl_location 43954 into this. 43955 (write_var_decl, write_visibility, write_binding): New definitions. 43956 (write_decl, write_type_decl, write_qualified_type_def) 43957 (write_pointer_type_def, write_reference_type_def) 43958 (write_enum_type_decl, write_typedef_decl): Adjust to use 43959 write_location. 43960 * tests/data/test-read-write/test8.xml: New test input. 43961 * tests/test-read-write.cc: De-serialize the above and serialize 43962 it back and ensure both are equal. 43963 * tests/Makefile.am: add tests/data/test-read-write/test8.xml to 43964 the distribution. 43965 439662013-04-02 Dodji Seketeli <dodji@redhat.com> 43967 43968 Don't forget to init context & visibility in decl_base 43969 * src/abg-ir.cc (decl_base::decl_base): Initialize context and 43970 visibility on all the overloads of the constructor. 43971 439722013-03-31 Dodji Seketeli <dodji@redhat.com> 43973 43974 Fix some style 43975 * src/abg-ir.h (decl_base::get_scope): Really re-style. 43976 439772013-03-31 Dodji Seketeli <dodji@redhat.com> 43978 43979 Fix some style 43980 * src/abg-ir.h (decl_base::{get_location, set_location, get_name, 43981 set_name}): Re-style. 43982 439832013-03-31 Dodji Seketeli <dodji@redhat.com> 43984 43985 Basic support for type/decl visibility 43986 * src/abg-ir.h (enum decl_base::visibility) 43987 (decl_base::get_visibility, decl_base::set_visibility) 43988 (decl_base::m_visibility): New. 43989 (decl_base::decl_base, scope_decl::scope_decl) 43990 (type_decl::type_decl, enum_type_decl::enum_type_decl) 43991 (typedef_decl::typedef_decl): Pass visibility. 43992 * src/abg-ir.cc (decl_base::decl_base, scope_decl::scope_decl) 43993 (type_decl::type_decl, enum_type_decl::enum_type_decl) 43994 (typedef_decl::typedef_decl): Pass visibility. 43995 (qualified_type_def::qualified_type_def) 43996 (pointer_type_def::pointer_type_def) 43997 (reference_type_def::reference_type_def): Initialize visibility. 43998 439992013-03-31 Dodji Seketeli <dodji@redhat.com> 44000 44001 A type/decl shouldn't hold a reference on its scope 44002 * src/abg-ir.h (decl_base::m_context): Make this a naked pointer. 44003 (decl_base::set_scope, add_decl_to_scope): Pass the 44004 scope as a naked pointer. 44005 * src/abg-ir.cc (decl_base::decl_base): Initialize the context to 44006 0. 44007 (decl_base::set_scope, add_decl_to_scope): Pass the scope as a 44008 naked pointer. 44009 * src/abg-reader.cc (read_context::get_cur_scope): Return a naked 44010 pointer. 44011 (handle_namespace_decl): Adjust accordingly. 44012 440132013-03-30 Dodji Seketeli <dodji@redhat.com> 44014 44015 Support typedef declarations 44016 * src/abg-ir.cc (dynamic_type_hash::operator()): Handle hashing of 44017 a pointer to an instance of typedef_decl. 44018 (typedef_decl::typedef_decl, typedef_decl::operator==) 44019 (typedef_decl::operator==, typedef_decl::get_underlying_type) 44020 (typedef_decl::~typedef_decl): New definitions. 44021 * src/abg-ir.h (class typedef_decl, struct typedef_decl_hash): New 44022 declarations. 44023 * src/abg-reader.cc (handle_typedef_decl): New definition. 44024 (handle_element): Handle de-serialization of typedef-decl element. 44025 * src/abg-writer.cc (write_typedef_decl): New definition. 44026 (write_decl): Handle serialization of an instance of typedef_decl. 44027 * tests/data/test-read-write/test7.xml: New test. 44028 * tests/Makefile.am: Add it to the distribution. 44029 * tests/test-read-write.cc: De-serialize the content of the new 44030 test, serialize it back and diff both. 44031 440322013-03-30 Dodji Seketeli <dodji@redhat.com> 44033 44034 Remove useless static_cast from hashing code 44035 * src/abg-ir.h (scope_type_decl_hash::operator()) 44036 (qualified_type_def_hash::operator()) 44037 (pointer_type_def_hash::operator()) 44038 (reference_type_def_hash::operator()): Remove useless static_cast. 44039 440402013-03-30 Dodji Seketeli <dodji@redhat.com> 44041 44042 Simplify equality operators 44043 * src/abg-ir.cc (qualified_type_def::operator==) 44044 (pointer_type_def::operator==, reference_type_def::operator==) 44045 (enum_type_decl::operator==): Simplify the code by safely assuming 44046 the underlying type is non-null. 44047 440482013-03-30 Dodji Seketeli <dodji@redhat.com> 44049 44050 Support enum type declarations 44051 * src/abg-ir.h (class enum_type_decl, struct enum_type_decl_hash): 44052 New declarations. 44053 * src/abg-ir.cc (dynamic_type_hash::operator()): Add hashing 44054 support for enum_type_decl. 44055 (enum_type_decl::enum_type_decl) 44056 (enum_type_decl::get_underlying_type) 44057 (enum_type_decl::get_enumerators, enum_type_decl::~enum_type_decl) 44058 (enum_type_decl::operator==): New definitions. 44059 * src/abg-reader.cc (handle_enum_type_decl): New definition. 44060 (handle_element): Handle "enum-decl" element. 44061 * src/abg-writer.cc (write_enum_type_decl): New. 44062 (write_decl): Add support to serialize enum_type_decl. 44063 * tests/test-read-write.cc: De-serialize and serialize 44064 data/test-read-write/test6.xml back. 44065 * tests/data/test-read-write/test6.xml: New test input. 44066 * tests/Makefile.am: Add it to the distribution. 44067 440682013-03-30 Dodji Seketeli <dodji@redhat.com> 44069 44070 Fix reference-type-def serialization 44071 * tests/test-read-write.cc: Really de-serialize and then serialize 44072 back data/test-read-write/test5.xml, not test4.xml. Sigh. 44073 * src/abg-writer.cc (write_reference_type_def): As a result of 44074 really trying to serialize reference type definitions fix the 44075 serialization code here. 44076 440772013-03-29 Dodji Seketeli <dodji@redhat.com> 44078 44079 Support reference types 44080 * src/abg-ir.h (class reference_type_def, struct pointer_type_def) 44081 (struct reference_type_def): New declaration. 44082 (type_base_hash::operator(), type_decl_hash::operator()) 44083 (scope_type_decl_hash::operator()) 44084 (qualified_type_def_hash::operator()): Include the typeid name in 44085 the hash. 44086 * src/abg-ir.cc (reference_type_def::reference_type_def) 44087 (reference_type_def::operator==) 44088 (reference_type_def::get_pointed_to_type) 44089 (reference_type_def::is_lvalue) 44090 (reference_type_def::~reference_type_def): New definitions. 44091 (dynamic_type_hash::operator): Hash pointer_type_def and 44092 reference_type_def instances. 44093 * src/abg-reader.cc (read_context::finish_decl_creation) 44094 (read_context::finish_type_decl_creation) 44095 (handle_reference_type_def): New definitions. 44096 (read_file): Handle "reference-type-def" elements. 44097 (handle_type_decl, handle_namespace_decl) 44098 (handle_qualified_type_decl, handle_pointer_type_def): Use the new 44099 read_context::finish_type_decl_creation or 44100 read_context::finish_decl_creation. 44101 * src/abg-writer.cc (write_reference_type_def): New definition. 44102 (write_decl): Supporting writing a pointer to an instance of 44103 reference_type_def. 44104 * tests/data/test-read-write/test5.xml: New test file. 44105 * tests/test-read-write.cc: (De)Serialize it. 44106 * tests/Makefile.am: Add it to the build system. 44107 441082013-03-28 Dodji Seketeli <dodji@redhat.com> 44109 44110 Support pointer types & Fix IR types equality 44111 * src/abg-ir.h (location::{operator==, operator<}) 44112 (decl_base::operator==, scope_decl::operator==) 44113 (type_base::operator==, struct type_shared_ptr_equal) 44114 (type_decl::operator==, scope_type::operator==) 44115 (qualified_type_def::operator==, class pointer_type_def): New 44116 declarations.. 44117 * src/abg-ir.cc (decl_base::operator==, scope_decl::operator==) 44118 (type_base::operator==, type_decl::operator==) 44119 (scope_type_decl::operator==, namespace_decl::operator==) 44120 (qualified_type_def::operator==) 44121 (pointer_type_def::pointer_type_def, pointer_type_def::operator==) 44122 (pointer_type_def::get_pointed_to_type) 44123 (pointer_type_def::~pointer_type_def): New definitions. 44124 * src/abg-reader.cc (handle_pointer_type_def): New definition. 44125 (read_input): Handle pointer-type-def 44126 elements. 44127 * src/abg-writer.cc (type_shared_ptr_map): Make this map use the 44128 use type_shared_ptr_equal predicate. 44129 (write_pointer_type_def): New definition. 44130 (write_decl): Improve logic. Support serializing a pointer to 44131 pointer_type_def. 44132 * tests/data/test-read-write/test4.xml: New test input file. 44133 * tests/Makefile.am: Add tests/data/test-read-write/test4.xml to 44134 the build system. 44135 * tests/test-read-write.cc: (De)serialize the new test file. 44136 441372013-03-27 Dodji Seketeli <dodji@seketeli.org> 44138 44139 Support qualified types & Misc ancillary fixes 44140 * src/abg-ir.h (struct type_base_hash, struct dynamic_type_hash) 44141 (struct type_shared_ptr_hash, struct scope_type_decl_hash, class 44142 qualified_type_def, struct qualified_type_def_hash): New. 44143 (decl_base_hash::operator()): Constify. Don't crash if the scope 44144 of the decl we are hashing is null. 44145 (class type_decl): Add comment at the end. 44146 (type_decl_hash::operator()): Constify. Reuse the new 44147 type_base_hash hasher. 44148 (class namespace_decl): Add comment. 44149 * src/abg-ir.cc (qualified_type_def::qualified_type_def) 44150 (qualified_type_def::~qualified_type_def) 44151 (qualified_type_def::get_cv_quals) 44152 (qualified_type_def::set_cv_quals) 44153 (qualified_type_def::get_underlying_type) 44154 (dynamic_type_hash::operator()): New function definitions. 44155 * src/abg-reader.cc (handle_qualified_type_decl): New. 44156 (read_file): Handle elements named "qualified-type-def". 44157 (read::context::add_type_decl): Assert that 44158 the type being associated to the unique ID is non-null. 44159 (handle_type_decl): Fix this in the process; don't crash if some 44160 attributes are not present. Associate the unique id present in 44161 the xml document with the type we just parsed. 44162 (handle_namespace_decl): Add some comments. Don't crash if the 44163 name attribute is not present. 44164 * src/abg-writer.cc (write_context::get_id_for_type) 44165 (write_context::m_type_id_map, write_decl_location) 44166 (write_qualified_type_def): New. 44167 (write_decl): Handle instances of qualified_type_def. 44168 (write_type_decl): Use the new write_decl_location and 44169 write_context::get_id_for_type. 44170 * tests/data/test-read-write/test0.xml: Update id format since we 44171 are now using the new write_context::get_id_for_type to generate 44172 it. 44173 * tests/data/test-read-write/test1.xml: Likewise. 44174 * tests/data/test-read-write/test2.xml: Likewise. 44175 * tests/data/test-read-write/test3.xml: New test. 44176 * tests/test-read-write.cc: Test De-serializing 44177 tests/data/test-read-write/test3.xml and serializing it back. 44178 Also don't bail out if we fail on one input. 44179 * tests/Makefile.am: Add tests/data/test-read-write/test3.xml to the 44180 distribution. 44181 441822013-03-27 Benjamin Kosnik <bkoz@redhat.com> 44183 44184 Various autotool adjustments 44185 * configure: Add. 44186 * configure.ac (AM_INIT_AUTOMAKE): Use gcc versions. 44187 (PKG_CHECK_MODULES): Re-use libjava/classpath solution, naming. 44188 * m4/pkg.m4: Add, take from classpath. 44189 * src/Makefile.am: Adjust names. 44190 441912013-03-26 Dodji Seketeli <dodji@seketeli.org> 44192 44193 Remove the 'm_kind' member from the IR 44194 * src/abg-ir.{h,cc}: Remove use of the m_kind field. We are using 44195 full blown rtti so this uselessly just clutter the code. 44196 441972013-03-26 Dodji Seketeli <dodji@seketeli.org> 44198 44199 Fix parallel build 44200 * tests/Makefile.am: Remove useless absolute reference to the 44201 current directory. 44202 442032013-03-26 Dodji Seketeli <dodji@seketeli.org> 44204 44205 Fix depth handling during the parsing 44206 * src/abg-reader.cc (read_context::get_cur_scope): Remove useless 44207 const overload. Don't make this rely on m_cur_scope. Rather, use 44208 the path to the current decl (from the root element) to compute 44209 the cur scope. 44210 (read_context::m_cur_scope, read_context::set_cur_scope): Remove 44211 these. 44212 (update_read_context): Re-think logic. 44213 * tests/data/test-read-write/test2.xml: Add new test input. 44214 * tests/Makefile.am: Add data/test-read-write/test2.xml to the 44215 distribution. 44216 * tests/test-read-write.cc: Add data/test-read-write/test2.xml to 44217 the harness. 44218 442192013-03-25 Dodji Seketeli <dodji@seketeli.org> 44220 44221 Debug read-write of a type-decl in a namespace-decl 44222 * abg-ir.{h,cc} (decl_base::decl_base, scope_decl::scope_decl) 44223 (type_decl::type_decl, namespace_decl::namespace_decl): Do not 44224 append a decl to its context from within its constructor. It's 44225 better doing that in a function that takes shared_ptrs to decl and 44226 context. That way we avoid memory management havoc. 44227 (decl_base::set_scope): New private function. 44228 (scope_decl::add_member_decl): Make this private. 44229 (add_decl_to_scope): New function, friend of decl_base and 44230 scope_decl. 44231 * abg-reader.cc (read_context::get_cur_scope): Add a non-const 44232 overload. 44233 (handle_type_decl, handle_namespace_decl): Use add_decl_to_scope. 44234 Adjust to new type_decl and namespace_decl constructor signature. 44235 * src/abg-writer.cc (write_type): Emit 'id', not 'xml:id'. 44236 (write_namespace_decl): Emit "namespace-decl", not 44237 "namespace-decl-name", as the name of namespace element. 44238 * tests/Makefile.am (test0.xml): Rename input0.xml into this. 44239 (test1.xml): New test input. 44240 * tests/data/test-read-write/test0.xml: Update to use 'id' as id 44241 attribute, rather than xml:id. 44242 * tests/data/test-read-write/test1.xml: New test. 44243 * test-read-write.cc (struct InOutSpec): New 44244 (main): Reorganize to give a list of input files to read and to 44245 write to an output file, have the test read the input files, write 44246 them, and diff the two. 44247 442482013-03-22 Dodji Seketeli <dodji@seketeli.org> 44249 44250 Update tests/data/test-read-write/input0.xml 44251 * tests/data/test-read-write/input0.xml: Make this identical to 44252 how it would look like when serialized. 44253 442542013-03-22 Dodji Seketeli <dodji@seketeli.org> 44255 44256 Debug type-decl serialization 44257 * src/abg-writer.cc (do_indent): New function. 44258 (write_corpus&): Use do_indent. Don't forget to close the 44259 abi-instr tag. 44260 (write_type_decl): Use do_indent. Handle null decls pointers. 44261 Emit the id at the end of the element. 44262 (write_namespace_decl): Use do_indent. Handle null decls 44263 pointers. 44264 * tests/test-utils.{h,cc} (get_src_dir,get_build_dir): Constify 44265 the returned reference to string. 44266 (is_dir, ensure_dir_path_created, ensure_parent_dir_created): New 44267 function definitions. 44268 * tests/test-read-write.cc (main): Augment the test to serialize 44269 the corpus too. 44270 442712013-03-21 Dodji Seketeli <dodji@seketeli.org> 44272 44273 Debugged type-decl de-serialization 44274 * src/abg-ir.cc (namespace_decl::~namespace_decl): Add this 44275 missing virtual constructor definition. 44276 * src/abg-reader.cc (read_context::{get_cur_decl,pop_decl}): 44277 Return a null pointer when the decls stack is empty. 44278 (update_read_context): Don't try to de-reference a NULL cur_decl. 44279 (read_input): Don't try to poke at file validity here. What was I 44280 thinking. Really test for advance_cursor to return 1, expressing 44281 success. 44282 * src/abg-reader.h (read_file): Fix style. 44283 * Makefile.am: Add tests sub-directory. 44284 * configure.ac: Build with debugging-friendly options if the 44285 ABIGAIL_DEBUG env variable is set. Generate tests/Makefile. 44286 * tests/Makefile.am: New file. 44287 * tests/test-read-write.cc: Likewise. 44288 * tests/test-utils.{h,cc}: Likewise. 44289 * tests/data/test-read-write/input0.xml: Likewise. 44290 442912013-03-21 Dodji Seketeli <dodji@seketeli.org> 44292 44293 Initial implementation of serialization of basic types and namespaces. 44294 * src/Makefile.am: Add abg-writer.{h,cc} and abg-config.{h,cc}. 44295 * src/abg-config.{h,cc}: New files. 44296 * src/abg-corpus.h (abi_corpus::decls_type): New typedef. 44297 (abi_corpus::{add,get_decls,get_loc_mgr}): Fix style. 44298 (abi_corpus::is_empty): Declare new function. 44299 * src/abg-corpus.cc (abi_corpus::add): really add the declaration 44300 to the corpus. 44301 (abi_corpus::is_empty): Define new function. 44302 * src/abg-ir.{h,cc} (location_manager::expand_location): Consti-fy 44303 this function. 44304 * src/abg-reader.cc (read_file): Add a corpus parameter. 44305 * src/abg-serialize.cc: Delete this file. 44306 * src/abg-writer.h (write_to_ostream): Rename write into this. 44307 Make it take a corpus and an ostream as parameters. 44308 * abg-writer.cc: New file. 44309 443102013-03-08 Dodji Seketeli <dodji@seketeli.org> 44311 44312 Parse type-decl and namespace-decl elements 44313 * configure.ac: Add libxml2 dependencies. 44314 * src/abg-corpus.{h,cc}: New files. 44315 * src/abg-hash.{h,cc}: Likewise. 44316 * src/abg-libxml-utils.{h,cc}: Likewise. 44317 * src/abg-reader.{h,cc}: Likewise. 44318 * src/abg-serialize.{h,cc}: Likewise. 44319 * src/abg-writer.h: Likewise. 44320 * src/Makefile.am: Build the new files above. 44321 * src/abg-ir.h (class location): Add public accessors for the value, and 44322 a truth operator. Make the methods be inline. 44323 (class decl_base): Renamed decl into this. Renamed what_decl_kind 44324 into what_kind. Renamed get_context into get_scope. Add virtual 44325 destructor, accessors for location and name. 44326 (class {scope_decl, type_base, type_decl} ): Add virtual dtor. 44327 Re-style. 44328 (struct {decl_base_hash, type_decl_hash}): New hashing functors. 44329 (class {scope_type_decl, namespace_decl}): Add virtual dtor. 44330 * src/abg-ir.cc (location::*): Remove location definitions. There 44331 are now inline in the header. 44332 (class decl_base): Renamed decl into this. Remove most of the 44333 definitions from here as their are now inline in the header. 44334 (scope_decl::~scope_decl, type_base::~type_base) 44335 (type_decl::~type_decl, scope_type_decl::~scope_type_decl): New 44336 definitions. 44337 443382013-03-04 Dodji Seketeli <dodji@seketeli.org> 44339 44340 Updated hierarchy up to namespace_decl 44341 * src/abg-ir.h (location): Make the default ctor public. 44342 (class decl): Declare data member and proper constructors. Make the 44343 context be a shared_ptr. Add a kind data member to avoid RTTI for 44344 now. 44345 (class scope_decl): Added protected constructor to handle the kind data 44346 member. 44347 (class type_base): Add data members proper and clean the iface up. 44348 (class type_decl, scope_type_decl, namespace_decl): Iron out 44349 constructors. 44350 * src/abg-ir.cc (class location): Fix style. 44351 (class decl, scope_decl, type_base, type_decl, scope_type_decl) 44352 (namespace_decl): Define these types. 44353 443542013-03-01 Dodji Seketeli <dodji@seketeli.org> 44355 44356 Add missing autoconfiscation files into version control 44357 * config.guess: Added to VCS. 44358 * config.sub: Likewise. 44359 * depcomp: Likewise. 44360 * install-sh: Likewise. 44361 * ltmain.sh: Likewise. 44362 * missing: Likewise 44363 443642013-03-01 Dodji Seketeli <dodji@seketeli.org> 44365 44366 Upload m4 file 44367 * m4/: Import this directory into version control. 44368 443692013-03-01 Dodji Seketeli <dodji@seketeli.org> 44370 44371 Create and expand locations 44372 * src/abg-ir.h (class {location, location_manager, decl, 44373 scoped_decl, type_base, type_decl, scope_type_decl): Declare new 44374 types. 44375 * src/abg-ir.cc (class {location, location_manager}): Define new types. 44376 443772013-03-01 Dodji Seketeli <dodji@seketeli.org> 44378 44379 Adjust src/Makefile.am after some file rename 44380 * src/Makefile.am: Update build system for renaming files from 44381 abgl-* into abg-*. 44382 443832013-03-01 Dodji Seketeli <dodji@seketeli.org> 44384 44385 Update the README file 44386 * README: Update. 44387 443882013-02-28 Dodji Seketeli <dodji@seketeli.org> 44389 44390 Initial AUTHORS and README 44391 * AUTHORS: 44392 * README: 44393 443942013-02-28 Dodji Seketeli <dodji@seketeli.org> 44395 44396 Leave license stuff for later 44397 * COPYING: 44398 443992013-02-28 Dodji Seketeli <dodji@seketeli.org> 44400 44401 Initial import Abigail 44402 * AUTHORS: 44403 * COPYING: 44404 * ChangeLog: 44405 * INSTALL: 44406 * Makefile.am: 44407 * NEWS: 44408 * README: 44409 * config.h.in: 44410 * configure.ac: 44411 * src/Makefile.am: 44412 * src/abg-ir.cc: 44413 * src/abg-ir.h: 44414 44415