diff options
author | Dodji Seketeli <dodji@redhat.com> | 2017-11-06 00:35:24 +0100 |
---|---|---|
committer | Dodji Seketeli <dodji@redhat.com> | 2017-11-08 15:37:19 +0100 |
commit | 1c7b982f6c0be66b4d5c38e205a2fea953c5bfa7 (patch) | |
tree | a1ab239bf073b6bd54a953b923a4b9672af8bd34 /ChangeLog | |
parent | Update NEWS file for 1.0 changes (diff) | |
download | libabigail-1c7b982f6c0be66b4d5c38e205a2fea953c5bfa7.tar.gz libabigail-1c7b982f6c0be66b4d5c38e205a2fea953c5bfa7.tar.bz2 libabigail-1c7b982f6c0be66b4d5c38e205a2fea953c5bfa7.tar.xz |
Automatically Update ChangeLog for 1.0
* ChangeLog: Update this file by running "make update-changelog".
Signed-off-by: Dodji Seketeli <dodji@redhat.com>
Diffstat (limited to 'ChangeLog')
-rw-r--r-- | ChangeLog | 4208 |
1 files changed, 4200 insertions, 8 deletions
@@ -1,3 +1,4203 @@ | |||
1 | 2017-11-06 Dodji Seketeli <dodji@redhat.com> | ||
2 | |||
3 | Automatically Update ChangeLog for 1.0 | ||
4 | * ChangeLog: Update this file by running "make update-changelog". | ||
5 | |||
6 | 2017-11-06 Dodji Seketeli <dodji@redhat.com> | ||
7 | |||
8 | Update NEWS file for 1.0 changes | ||
9 | * NEWS: Update for 1.0 changes | ||
10 | |||
11 | 2017-11-06 Dodji Seketeli <dodji@redhat.com> | ||
12 | |||
13 | Bump version number to 1.0 | ||
14 | * configure.ac: Bump version number to 1.0 | ||
15 | |||
16 | 2017-11-08 Dodji Seketeli <dodji@redhat.com> | ||
17 | |||
18 | Don't make system headers depend on config.h | ||
19 | * tools/abipkgdiff.cc: Include config.h after system headers and | ||
20 | before libabigail's headers. | ||
21 | |||
22 | 2017-11-02 Dodji Seketeli <dodji@redhat.com> | ||
23 | |||
24 | Wire the --no-show-locs option to abidw | ||
25 | * doc/manuals/abidw.rst: Update the documentation. | ||
26 | * tests/test-annotate.cc: Now that --no-show-locs has an effect on | ||
27 | the ABIXML output, let's not use it here, because it changes the | ||
28 | output and we don't want that. | ||
29 | * tools/abidw.cc (display_usage): Fix a typo in the help string. | ||
30 | (load_corpus_and_write_abixml): Set the "show-locs" option to the | ||
31 | write_context object that we use. | ||
32 | |||
33 | 2017-11-02 Dodji Seketeli <dodji@redhat.com> | ||
34 | |||
35 | Allow setting options to instances of xml_writer::write_context | ||
36 | * include/abg-writer.h (create_write_context, set_show_locs) | ||
37 | (set_annotate): Declare new functions. | ||
38 | (write_corpus, write_corpus_group): Remove the output stream and | ||
39 | the annotate parameters as these can be retrieved from the | ||
40 | context. | ||
41 | * src/abg-writer.cc (write_context::m_show_locs): New data member. | ||
42 | (write_context::write_context): Initialize it. | ||
43 | (write_context::{get_show_locs, set_show_locs}): Add new member | ||
44 | functions. | ||
45 | (write_location): Take a write_context, rather than an output | ||
46 | stream. From the context, we detect if the user did set the "show | ||
47 | loc" option and act accordingly. Write the second overload in | ||
48 | terms of the first one. | ||
49 | (create_write_context, set_show_locs, set_annotate): Define new | ||
50 | functions. | ||
51 | (write_type_decl, write_qualified_type_def) | ||
52 | (write_pointer_type_def, write_reference_type_def) | ||
53 | (write_array_type_def, write_enum_type_decl, write_typedef_decl) | ||
54 | (write_var_decl, write_function_decl) | ||
55 | (write_class_decl_opening_tag, write_union_decl_opening_tag) | ||
56 | (write_type_tparameter, write_non_type_tparameter) | ||
57 | (write_function_tdecl, write_class_tdecl): Adjust the invocation | ||
58 | of write_location. | ||
59 | (write_corpus, write_corpus_group): Remove the output stream and | ||
60 | the annotate parameters as these can be retrieved from the | ||
61 | context. Adjust. | ||
62 | * tools/abidw.c: (load_corpus_and_write_abixml): Create a | ||
63 | write_context object, set the 'annotate' option to it and use that | ||
64 | object to actually write out the corpus. | ||
65 | |||
66 | 2017-11-02 Dodji Seketeli <dodji@redhat.com> | ||
67 | |||
68 | Remove useless vertical space from src/abg-writer.cc | ||
69 | * src/abg-writer.cc (class write_context): Remove useless vertical | ||
70 | space near the end of the class definition. | ||
71 | |||
72 | 2017-10-16 Dodji Seketeli <dodji@redhat.com> | ||
73 | |||
74 | Add a --suppressions option to fedabipkgdiff | ||
75 | * tools/fedabipkgdiff (abipkgdiff): If a suppression file was | ||
76 | provided, pass it to the underlying abipkgdiff tool. | ||
77 | (build_commandline_args_parser): Parse the new --suppressions | ||
78 | option. | ||
79 | * docs/manuals/fedabipkgdiff.rst: Add documentation for the new | ||
80 | --suppressions option. | ||
81 | |||
82 | 2017-10-16 Dodji Seketeli <dodji@redhat.com> | ||
83 | |||
84 | Handle exceptions when global_config is not yet set in fedabipkgdiff | ||
85 | * tools/fedabipkgdiff: When handling an exception, if the | ||
86 | global_config object is not yet set then just let the exception | ||
87 | through. | ||
88 | |||
89 | 2017-10-11 Dodji Seketeli <dodji@redhat.com> | ||
90 | |||
91 | Fix a indentation warning from GCC 7.2.1 | ||
92 | * tools/abipkgdiff.cc (compare): In the overload of elf_file, fix | ||
93 | a mis-indentation pointed out by a GCC 7.2.1 warning. | ||
94 | |||
95 | 2017-10-11 Dodji Seketeli <dodji@redhat.com> | ||
96 | |||
97 | Cleanup a switch-case logic to avoid a GCC 7.2.1 warning | ||
98 | * src/abg-dwarf-reader.cc (die_qualified_type_name): Cleanup a | ||
99 | switch case to make the form support more what we meant, and shut | ||
100 | down a GCC 7.2.1 warning. | ||
101 | |||
102 | 2017-10-09 Mark Wielaard <mark@klomp.org> | ||
103 | |||
104 | Fix -Wmisleading-indentation warning in abg-leaf-reporter.cc. | ||
105 | * src/abg-leaf-reporter.cc (leaf_reporter::report): Fix misleading | ||
106 | indentation. | ||
107 | |||
108 | 2017-10-06 Dodji Seketeli <dodji@redhat.com> | ||
109 | |||
110 | Add --impacted-changes option to kmidiff | ||
111 | * doc/manuals/kmidiff.rst: Document the new --impacted-changes | ||
112 | option. | ||
113 | * tools/kmidif.cc (options::show_impacted_interfaces): Add new | ||
114 | data member. | ||
115 | (options::options): Initialize the new data member to false. | ||
116 | (display_usage): Add a description string for the new | ||
117 | --impacted-changes option. | ||
118 | (parse_command_line): Parse the new --impacted-changes option. | ||
119 | (set_diff_context): Update the 'show-impacted-interface' property | ||
120 | accordingly. | ||
121 | |||
122 | 2017-10-04 Dodji Seketeli <dodji@redhat.com> | ||
123 | |||
124 | Add --full-impact option to kmidiff | ||
125 | * doc/manuals/kmidiff.rst: Add documentation for the new | ||
126 | --full-impact|-f option. | ||
127 | * tools/kmidiff.cc (options::leaf_changes_only): Add new data | ||
128 | member. | ||
129 | (option::option): Initialize the new data member. | ||
130 | (display_usage): Add a documentation string for the new | ||
131 | --full-impact|-f option. | ||
132 | (parse_command_line): Parse the new --full-impact|-f option. | ||
133 | (set_diff_context): Set the diff context appropriately. | ||
134 | |||
135 | 2017-09-18 Dodji Seketeli <dodji@redhat.com> | ||
136 | |||
137 | Add a --leaf-changes-only option to abipkgdiff | ||
138 | * doc/manuals/abipkgdiff.rst: Add documentation for the new | ||
139 | --leaf-change-only, --impacted-interfaces and --full-impact | ||
140 | options. | ||
141 | * tools/abipkgdiff.cc (options::{leaf_changes_only, | ||
142 | show_impacted_interfaces, show_full_impact_report): Add new data | ||
143 | members. | ||
144 | (options::options): Initialize them. | ||
145 | (display_usage): Add help strings for the new --leaf-change-only, | ||
146 | --impacted-interfaces and --full-impact|-f options. | ||
147 | (set_diff_context_from_opts): Set the diff context for the | ||
148 | 'leaf-changes-only' and 'show-impacted-interfaces' flags. | ||
149 | (parse_command_line): Parse the --leaf-change-only, | ||
150 | --impacted-interfaces and --full-impact options. Handle the case | ||
151 | where the --linux-kernel-abi-whitelist|-w option is given a | ||
152 | whitelist *package*. | ||
153 | * tests/data/test-diff-pkg/spice-server-0.12.4-19.el7.x86_64-0.12.8-1.el7.x86_64-report-3.txt: | ||
154 | New test output reference. | ||
155 | * tests/test-diff-pkg.cc (in_out_spec): Compare | ||
156 | data/test-diff-pkg/spice-server-0.12.4-19.el7.x86_64.rpm and | ||
157 | data/test-diff-pkg/spice-server-0.12.8-1.el7.x86_64.rpm with the | ||
158 | new --leaf-changes-only and --impacted-interfaces options, using | ||
159 | the new output reference above. | ||
160 | * tests/data/Makefile.am: Add the new test material to source | ||
161 | distribution. | ||
162 | |||
163 | 2017-08-02 Dodji Seketeli <dodji@redhat.com> | ||
164 | |||
165 | Initial implementation of a --leaf-changes-only option to abidiff | ||
166 | * doc/manuals/abidiff.rst: Add documentation the new | ||
167 | --leaf-changes-only and --impacted-interfaces options. | ||
168 | * src/abg-leaf-reporter.cc: New file. | ||
169 | * src/Makefile.am: Add the new src/abg-leaf-reporter.cc file to | ||
170 | source distribution. | ||
171 | * include/abg-fwd.h (get_var_size_in_bits) | ||
172 | (function_decl_is_less_than): Declare new functions. | ||
173 | (get_name): Add new overload for type_or_decl_base*. | ||
174 | * include/abg-ir.h (struct type_or_decl_hash, type_or_decl_equal) | ||
175 | (type_or_decl_base_comp): Define new types. | ||
176 | (artifact_sptr_set_type, artifact_ptr_set_type): Define new | ||
177 | typedefs. | ||
178 | * include/abg-comp-filter.h: Update copyright year. | ||
179 | (has_basic_type_name_change): Add new function declaration. | ||
180 | * src/abg-comp-filter.cc (decl_name_changed): Take a | ||
181 | type_or_decl_base rather than just a decl. Add an overload for | ||
182 | diff*. | ||
183 | (has_basic_type_name_change): Define new function. | ||
184 | * include/abg-comparison.h: Update copyright year. | ||
185 | (string_diff_ptr_map): Define this new typedef. | ||
186 | (class diff_maps): Define this new class. | ||
187 | (diff_context::{set_corpora}): Remove this member function. | ||
188 | (diff_context::{set_corpus_diff, get_corpus_diff, | ||
189 | show_leaf_changes_only, show_impacted_interfaces, | ||
190 | forbid_visiting_a_node_twice_per_interface}): Declare these new | ||
191 | member functions. | ||
192 | (diff_node_visitor::priv_): Add a new pimpl data member. | ||
193 | (diff_node_visitor::{diff_node_visitor, get_visiting_kind, | ||
194 | set_visiting_kind}): Turn these into out-of-line member functions. | ||
195 | (diff_node_visitor::{set,get}_current_topmost_iface_diff): Add new | ||
196 | member functions. | ||
197 | (class {scope_diff, function_type_diff, corpus_diff}): Add class | ||
198 | leaf_reporter as a friend. | ||
199 | (corpus_diff::mark_leaf_diff_nodes, get_leaf_diffs): Declare new | ||
200 | member functions. | ||
201 | (diff::{visiting_a_node_twice_is_forbidden_per_interface, | ||
202 | parent_interface_node}): Define new member functions. | ||
203 | (is_diff_of_basic_type): Return a type_decl_diff* rather than just | ||
204 | a bool. | ||
205 | (is_enum_diff, is_array_diff, is_function_type, is_typedef_diff) | ||
206 | (is_corpus_diff): Declare new functions. | ||
207 | (corpus_diff::diff_stats::{num_leaf_changes, | ||
208 | num_leaf_changes_filtered_out, net_num_leaf_changes}): Add new | ||
209 | member functions. | ||
210 | (is_distinct_diff): Declare new function. | ||
211 | * include/abg-reporter.h: Forward-declare "class diff_maps". | ||
212 | (reporter_base::diff_to_be_reported): Declare a new virtual member | ||
213 | function. | ||
214 | (reporter_base::{report_local_typedef_changes, | ||
215 | report_local_reference_type_changes, | ||
216 | report_local_function_type_changes}): Declare new member | ||
217 | functions. | ||
218 | (class leaf_reporter): Define new type. | ||
219 | * src/abg-comparison-priv.h (struct diff_hash, diff_equal): Define | ||
220 | new types. | ||
221 | (diff_artifact_set_map_type): Define new typedef. | ||
222 | (diff_context::priv::{first_corpus_, second_corpus_}): Remove | ||
223 | these data members. | ||
224 | (diff_context::priv::{corpus_diff_, leaf_changes_only_, | ||
225 | reset_visited_diffs_for_each_interface_, | ||
226 | show_impacted_interfaces_}): Add new data members. | ||
227 | (diff_context::priv::priv): Adjust. | ||
228 | (corpus_diff::priv::{leaf_diffs_, parent_interface_}): Add new | ||
229 | data member. | ||
230 | (corpus_diff::diff_stats::priv::{num_leaf_changes, | ||
231 | num_leaf_changes_filtered_out}): Add new data members. | ||
232 | (corpus_diff::priv::count_leaf_changes): Define new member | ||
233 | function. | ||
234 | (sort_artifacts_set, get_fn_decl_or_var_decl_diff_ancestor) | ||
235 | (is_diff_of_global_decls): Declare new functions. | ||
236 | (function_comp::operator()): Factorize this out into the new | ||
237 | function abigail::ir::function_decl_is_less_than. | ||
238 | * src/abg-ir.cc (get_var_size_in_bits) | ||
239 | (function_decl_is_less_than): Define new functions. | ||
240 | (get_name): Define new overload for type_or_decl_base*. | ||
241 | * src/abg-comparison.cc (is_enum_diff, is_typedef_diff) | ||
242 | (is_array_diff, is_function_type_diff, is_corpus_diff) | ||
243 | (is_distinct_diff, sort_artifacts_set, is_diff_of_global_decls): | ||
244 | Define new functions. | ||
245 | (is_union_diff): Fix comment. | ||
246 | (diff_context::forbid_visiting_a_node_twice_per_interface): Define | ||
247 | new member functions. | ||
248 | (diff_context::set_corpus_diff, get_corpus_diff) | ||
249 | (diff_context::show_leaf_changes_only) | ||
250 | (diff_context::visiting_a_node_twice_is_forbidden_per_interface) | ||
251 | (diff_context::show_impacted_interfaces): Define new member | ||
252 | functions. | ||
253 | (diff_context::get_reporter): Create the reporter that matches | ||
254 | what diff_context::show_leaf_changes_only says. | ||
255 | (diff_node_visitor::priv): Define a new type. | ||
256 | (diff_node_visitor::{diff_node_visitor, get_visiting_kind, | ||
257 | set_visiting_kind, or_visiting_kind, | ||
258 | set_current_topmost_iface_diff, get_current_topmost_iface_diff}): | ||
259 | Define new out-of-line member functions. | ||
260 | (struct diff_maps::priv): Define new type. | ||
261 | (diff_maps::{diff_maps, get_type_decl_diff_map, | ||
262 | get_type_decl_diff_map, get_enum_diff_map, get_class_diff_map, | ||
263 | get_union_diff_map, get_typedef_diff_map, get_array_diff_map, | ||
264 | get_function_type_diff_map, get_function_decl_diff_map, | ||
265 | get_var_decl_diff_map, get_reference_diff_map, | ||
266 | get_fn_parm_diff_map, get_distinct_diff_map, insert_diff_node, | ||
267 | lookup_impacted_interfaces}): Define member functions. | ||
268 | (corpus_diff::{mark_leaf_diff_nodes, get_leaf_diffs}): Define new | ||
269 | member functions. | ||
270 | (struct leaf_diff_node_marker_visitor): Define new type. | ||
271 | (corpus_diff::apply_filters_and_suppressions_before_reporting): | ||
272 | Mark diff nodes in here. | ||
273 | (corpus_diff::traverse): Appropriately set the current topmost | ||
274 | interface into the visitor before visiting a diff node. | ||
275 | (compute_diff): In the overload for corpus_sptr, adjust to reflect | ||
276 | that we are now storing the corpus_diff in the diff context. | ||
277 | (is_diff_of_basic_type): Return a type_decl_diff*, not just a | ||
278 | bool. | ||
279 | (corpus_diff::priv::count_leaf_changes): Define a new member | ||
280 | function. | ||
281 | (corpus_diff::diff_stats::{num_leaf_changes, | ||
282 | num_leaf_changes_filtered_out, net_num_leaf_changes}): Define new | ||
283 | member functions. | ||
284 | (corpus_diff::priv::apply_filters_and_compute_diff_stats): Use the | ||
285 | new corpus_diff::priv::count_leaf_changes to compute the number of | ||
286 | leaf changes. | ||
287 | (corpus_diff::priv::emit_diff_stats): Emit the report about leaf | ||
288 | type changes when necessary. | ||
289 | * src/abg-reporter-priv.h (report_mem_header): Declare new | ||
290 | overload. | ||
291 | (maybe_show_relative_offset_change,): Pass the var_diff_sptr | ||
292 | parameter by const reference. | ||
293 | (represent): Pass the var_diff_sptr parameter by const reference | ||
294 | and take a new "local-only" flag. | ||
295 | (maybe_show_relative_size_change) | ||
296 | (maybe_report_interfaces_impacted_by_diff): Declare new functions. | ||
297 | * src/abg-default-reporter.cc: Adjust copyright year. | ||
298 | (default_reporter::{report_local_typedef_changes, | ||
299 | report_local_qualified_type_changes, | ||
300 | report_local_reference_type_changes, | ||
301 | report_local_function_type_changes}): Define new member functions. | ||
302 | (default_reporter::report): Adjust. Add an overload for | ||
303 | function_type_diff&. In the overload for qualified_type_diff, if | ||
304 | the name of the underlying type changed, do not detail the changes | ||
305 | any further. In the overload for function_decl_diff, Adjust to | ||
306 | use the new diff_context::get_{first, second}_corpus member | ||
307 | function. In the overload for enum_diff, call the new | ||
308 | maybe_report_interfaces_impacted_by_diff that is advertised below. | ||
309 | * src/abg-reporter-priv.cc (represent): Adjust the overload for | ||
310 | var_diff_sptr. | ||
311 | (report_mem_header): Define new overload. | ||
312 | (maybe_show_relative_size_change) | ||
313 | (maybe_report_interfaces_impacted_by_diff): Define new functions. | ||
314 | (reporter_base::diff_to_be_reported): Define new member function. | ||
315 | (maybe_show_relative_offset_change): Pass the var_diff_sptr | ||
316 | parameter by const reference. | ||
317 | (represent): In the overload for var_diff_sptr, pass the | ||
318 | var_diff_sptr parameter by reference. Take a 'local_only' flag. | ||
319 | Iisplay type changes only if we are not displaying "local changes | ||
320 | only". Display size changes of data members too, when in | ||
321 | "local-only" mode. | ||
322 | * src/abg-suppression.cc (sonames_of_binaries_match) | ||
323 | (names_of_binaries_match): Adjust. | ||
324 | * tools/abidiff.cc (options::{leaf_changes_only, | ||
325 | show_impacted_interfaces}): Add new data members. | ||
326 | (display_usage): Emit usage string for the new --leaf-changes-only | ||
327 | and --impacted-interfaces options. | ||
328 | (parse_command_line): Parse the new --leaf-changes-only and the | ||
329 | --impacted-interfaces options. | ||
330 | (set_diff_context_from_opts): Set the 'show-leaf-changes' and the | ||
331 | 'show-impacted-interfaces' flags. | ||
332 | * tests/data/test-diff-filter/libtest42-leaf-report-v{0,1}.so: New | ||
333 | test input. | ||
334 | * tests/data/test-diff-filter/test42-leaf-report-output-0.txt: New | ||
335 | test reference output. | ||
336 | * tests/data/test-diff-filter/test42-leaf-report-v{0,1}.cc: Source | ||
337 | code of the new test inputs. | ||
338 | * tests/test-diff-filter.cc (in_out_specs): Use the new test | ||
339 | inputs above in this harness. | ||
340 | * tests/data/test-diff-suppr/libtest35-leaf-v0.so: New test input. | ||
341 | * tests/data/test-diff-suppr/test35-leaf-report-0.txt: New test | ||
342 | reference output. | ||
343 | * tests/data/test-diff-suppr/test35-leaf-v{0,1}.cc: Source code of | ||
344 | the new test inputs. | ||
345 | * tests/data/test-diff-suppr/test35-leaf.suppr: Suppression | ||
346 | specification to use for the test35 test. | ||
347 | * tests/data/test-diff-suppr/libtest36-leaf-v0.so: New test input. | ||
348 | * tests/data/test-diff-suppr/libtest36-leaf-v1.so: Likewise. | ||
349 | * tests/data/test-diff-suppr/test36-leaf-report-0.txt: New | ||
350 | reference test output. | ||
351 | * tests/data/test-diff-suppr/test36-leaf-v0.cc: Source code of | ||
352 | test input above. | ||
353 | * tests/data/test-diff-suppr/test36-leaf-v1.cc: Likewise. | ||
354 | * tests/test-diff-suppr.cc (in_out_specs): Use the new test inputs | ||
355 | above in this harness. | ||
356 | * tests/data/Makefile.am: Add the new test inputs above to source | ||
357 | distribution. | ||
358 | |||
359 | 2017-07-17 Dodji Seketeli <dodji@redhat.com> | ||
360 | |||
361 | Allow several kinds of reports to be emitted | ||
362 | * include/Makefile.am: Add the new abg-reporter.h header file to | ||
363 | source distribution. | ||
364 | * include/abg-comparison.h: Include the new abg-reporter.h header | ||
365 | file. | ||
366 | (diff_context::{g,s}et_reporter): Declare new accessors. | ||
367 | ({type_diff_base, decl_diff_base, corpus_diff}::priv): Make this | ||
368 | be a struct rather than a class. | ||
369 | ({decl_diff_base, class_diff, scope_diff, function_type_diff, | ||
370 | corpus_diff}): Declare default_reporter a friend class of these. | ||
371 | * include/abg-reporter.h: New file. | ||
372 | * src/Makefile.am: Add abg-comparison-priv.h, | ||
373 | abg-reporter-priv.{h,cc} and abg-default-reporter.cc files to | ||
374 | source distribution. | ||
375 | * src/abg-comparison-priv.h: New file. | ||
376 | * src/abg-comparison.cc (sort_enumerators) | ||
377 | (sort_changed_enumerators, sort_data_members) | ||
378 | (sort_string_function_ptr_map) | ||
379 | (sort_string_function_decl_diff_sptr_map) | ||
380 | (sort_string_var_diff_sptr_map, sort_string_elf_symbol_map) | ||
381 | (sort_string_var_ptr_map, sort_string_data_member_diff_sptr_map) | ||
382 | (sort_unsigned_data_member_diff_sptr_map) | ||
383 | (sort_string_diff_sptr_map, sort_string_base_diff_sptr_map) | ||
384 | (sort_string_base_sptr_map, sort_string_fn_parm_diff_sptr_map) | ||
385 | (sort_string_parm_map, get_leaf_type, sort_enumerators) | ||
386 | (sort_changed_enumerators): Make these functions non-static and | ||
387 | move them at the beginning of the file. These functions are now | ||
388 | declared in abg-compared-priv.h so they can be shared privately | ||
389 | with other files in src/. | ||
390 | (diff_context::{g,s}et_reporter): Define new accessors. | ||
391 | ({diff_context, diff, type_diff_base, decl_diff_base, | ||
392 | distinct_diff, pointer_diff, array_diff, reference_diff, | ||
393 | qualified_type_diff, enum_diff, class_or_union_diff, class_diff, | ||
394 | base_diff, scope_diff, fn_parm_diff, function_type_diff, | ||
395 | function_decl_diff, type_decl_diff, typedef_diff, | ||
396 | translation_unit_diff, corpus_diff::diff_stats, | ||
397 | corpus_diff}::priv) | ||
398 | (diff_less_than_functor, enumerator_value_comp) | ||
399 | (changed_enumerator_comp, base_spec_comp, base_diff_comp) | ||
400 | (data_member_diff_comp, diff_comp, fn_parm_diff_comp, parm_comp) | ||
401 | (elf_symbol_comp, function_comp, function_decl_diff_comp) | ||
402 | (var_diff_sptr_comp): Move these type definitions to | ||
403 | abg-comparison-priv.h | ||
404 | (report_size_and_alignment_changes, report_loc_info) | ||
405 | (maybe_report_diff_for_member, maybe_report_diff_for_symbol) | ||
406 | (represent, represent_data_member) | ||
407 | (maybe_show_relative_offset_change, represent) | ||
408 | (report_size_and_alignment_changes, report_loc_info) | ||
409 | (report_name_size_and_alignment_changes, report_mem_header) | ||
410 | (maybe_report_diff_for_member, maybe_report_diff_for_symbol) | ||
411 | (show_linkage_name_and_aliases): Move these definitions to | ||
412 | abg-reporter-priv.cc. | ||
413 | ({distinct_diff, var_diff, pointer_diff, array_diff, | ||
414 | reference_diff, qualified_type_diff, enum_diff, | ||
415 | class_or_union_diff, class_diff, base_diff, union_diff, | ||
416 | scope_diff, fn_parm_diff, function_type_diff, type_decl_diff, | ||
417 | typedef_diff, corpus_diff}::report): Use the reporter object to | ||
418 | report about the changes carried by the the current diff node. | ||
419 | * src/abg-default-reporter.cc: New file. | ||
420 | * src/abg-reporter-priv.h: Likewise. | ||
421 | |||
422 | 2017-10-04 Dodji Seketeli <dodji@redhat.com> | ||
423 | |||
424 | Update copyright year to tools/abidiff.cc | ||
425 | * tools/abidiff.cc: Update copyright year. | ||
426 | |||
427 | 2017-10-04 Dodji Seketeli <dodji@redhat.com> | ||
428 | |||
429 | Add missing comment to type declaration | ||
430 | * include/abg-comparison.h (struct diff_sptr_hasher): Add missing | ||
431 | comment. | ||
432 | |||
433 | 2017-10-04 Dodji Seketeli <dodji@redhat.com> | ||
434 | |||
435 | Misc style fixes in abg-writer.cc | ||
436 | * src/abg-writer.cc (type_hasher): Add comment. | ||
437 | (write_context::record_decl_as_emitted): Remove useless newline. | ||
438 | |||
439 | 2017-10-04 Dodji Seketeli <dodji@redhat.com> | ||
440 | |||
441 | Initialize naked canonical type | ||
442 | * src/abg-ir.cc (type_base::priv::priv): Initialize the naked | ||
443 | canonical type data member. | ||
444 | |||
445 | 2017-10-04 Dodji Seketeli <dodji@redhat.com> | ||
446 | |||
447 | [abixml writer] Use an unordered set when appropriate | ||
448 | * src/abg-writer.cc (write_context::m_emitted_decl_only_set): | ||
449 | Renamed m_emitted_decl_only_map into this and make the type be a | ||
450 | set, rather than a map. | ||
451 | (write_context::{record_decl_only_type_as_emitted, | ||
452 | decl_only_type_is_emitted}): Adjust. | ||
453 | |||
454 | 2017-09-29 Dodji Seketeli <dodji@redhat.com> | ||
455 | |||
456 | [abixml writer] Store pointers to emitted types rather than type-ids | ||
457 | * src/abg-writer.cc (type_ptr_set_type): Declare new typedef. | ||
458 | (writer_context::m_emitted_type_id_map): Remove this data member. | ||
459 | (writer_context::m_emitted_type_set): Add a new data member. | ||
460 | (writer_context::{record_type_id_as_emitted, type_id_is_emitted, | ||
461 | clear_emitted_types_map}): Remove these member functions. | ||
462 | (writer_context::{record_type_as_emitted, type_is_emitted}): Use | ||
463 | the new m_emitted_type_set data member above. | ||
464 | |||
465 | 2017-09-27 Dodji Seketeli <dodji@redhat.com> | ||
466 | |||
467 | Use an unordered map for canonical DIE offsets | ||
468 | * src/abg-dwarf-reader.cc | ||
469 | (read_context::canonical_type_die_offsets_): Renamed the | ||
470 | canonical_type_die_vecs_ data member into this. | ||
471 | (read_context::canonical_decl_die_offsets_): Renamed the | ||
472 | canonical_decl_die_vecs_ data member into this. | ||
473 | (read_context::{initialize, compute_canonical_die_offset, | ||
474 | compute_canonical_die, get_canonical_die, | ||
475 | get_or_compute_canonical_die, set_canonical_die_offset, | ||
476 | get_canonical_die_offset}): Adjust. | ||
477 | |||
478 | 2017-09-27 Dodji Seketeli <dodji@redhat.com> | ||
479 | |||
480 | Bug 22190 - crash in read_context::get_or_compute_canonical_die | ||
481 | * src/abg-dwarf-reader.cc: | ||
482 | |||
483 | 2017-09-27 Dodji Seketeli <dodji@redhat.com> | ||
484 | |||
485 | Remove redundant (useless) typedef declaration | ||
486 | * src/abg-dwarf-reader.cc (dwarf_offsets_type): There are two | ||
487 | instances of this typedef declaration, remove one. | ||
488 | |||
489 | 2017-09-27 Dodji Seketeli <dodji@redhat.com> | ||
490 | |||
491 | Renamed offset_offset_map type name into offset_offset_map_type | ||
492 | * src/abg-dwarf-reader.cc (offset_offset_map_type): Renamed | ||
493 | offset_offset_map into this. | ||
494 | (read_context::{primary_die_parent_map_, | ||
495 | alternate_die_parent_map_, type_section_die_parent_map_}): Adjust | ||
496 | the type of these data members. | ||
497 | (read_context::{die_parent_map, type_section_die_parent_map}): | ||
498 | Adjust the type of these member functions. | ||
499 | (read_context::{build_die_parent_relations_under, | ||
500 | get_parent_die}): Adjust for the type name in these functions. | ||
501 | |||
502 | 2017-09-27 Dodji Seketeli <dodji@redhat.com> | ||
503 | |||
504 | Add missing newlines to kmidiff's usage strings | ||
505 | * tools/kmidiff.cc (display_usage): Add newlines after the lines | ||
506 | for --vmlinux1 and --vmlinux2. | ||
507 | |||
508 | 2017-09-21 Dodji Seketeli <dodji@redhat.com> | ||
509 | |||
510 | 22160 - Annotate state flag unitialized in abidw | ||
511 | * tools/abidw.cc (options::options): Initialize the annotate data | ||
512 | member. | ||
513 | |||
514 | 2017-09-18 Dodji Seketeli <dodji@redhat.com> | ||
515 | |||
516 | Don't crash on classes that differ in their virtual member fn count | ||
517 | * src/abg-ir.cc (equals): In the overload for class_decl, when we | ||
518 | detect that the virtual member function counts are different, get | ||
519 | out, even when we are being asked about the kind of the change. | ||
520 | |||
521 | 2017-09-18 Dodji Seketeli <dodji@redhat.com> | ||
522 | |||
523 | Avoid adding the same data member twice in the DWARF reader | ||
524 | * src/abg-dwarf-reader.cc (add_or_update_class_type): After a we | ||
525 | try to create a data member type, look *again* if the data member | ||
526 | wasn't added recursively by the creation of the data member type. | ||
527 | |||
528 | 2017-09-11 Mark Wielaard <mark@klomp.org> | ||
529 | |||
530 | Bug 22075 - data_member_diff_comp forgets data members names | ||
531 | * src/abg-comparison.cc (data_member_diff_comp): Make the | ||
532 | comparison take the qualified name of the data member into | ||
533 | account. Also, if the initial offset and qualified names of the | ||
534 | data members of the diff nodes are equal, consider the offset and | ||
535 | qualified names of the new data members. | ||
536 | |||
537 | 2017-09-11 Dodji Seketeli <dodji@redhat.com> | ||
538 | |||
539 | Bug 22122 - Fail to represent 'const array' | ||
540 | * src/abg-dwarf-reader.cc (die_is_array_type): Define new static | ||
541 | function. | ||
542 | (die_is_pointer_or_reference_type): Also test that the DIE can be | ||
543 | an array. | ||
544 | * tests/data/test-read-dwarf/PR22122-libftdc.so: New binary test input. | ||
545 | * tests/data/test-read-dwarf/PR22122-libftdc.so.abi: New reference output. | ||
546 | * tests/data/Makefile.am: Add the two new test files above to | ||
547 | source distribution. | ||
548 | * tests/test-read-dwarf.cc (in_out_specs): Run this test harness | ||
549 | over the new test input. | ||
550 | |||
551 | 2017-09-08 Dodji Seketeli <dodji@redhat.com> | ||
552 | |||
553 | Finer detection of local changes of var_decl type | ||
554 | * src/abg-ir.cc (equals): In the var_decl overload detect size | ||
555 | changes of type as being a local change. | ||
556 | |||
557 | 2017-09-08 Dodji Seketeli <dodji@redhat.com> | ||
558 | |||
559 | Misc style fixes | ||
560 | * include/abg-fwd.h (get_pretty_representation): Add missing white | ||
561 | space. | ||
562 | * src/abg-ir.cc (get_name): Fix typo in comment. | ||
563 | |||
564 | 2017-09-02 Mark Wielaard <mark@klomp.org> | ||
565 | |||
566 | readdir_r() is deprecated, use readdir(). | ||
567 | * src/abg-tools-utils.cc (dir_is_empty): Use readdir() instead | ||
568 | of readdir_r(). | ||
569 | |||
570 | 2017-09-02 Mark Wielaard <mark@klomp.org> | ||
571 | |||
572 | Declare eval_last_constant_dwarf_sub_expr with [u]int64_t not [s]size_t. | ||
573 | * src/abg-dwarf-reader.cc (eval_last_constant_dwarf_sub_expr): | ||
574 | Declare expr_len as uint64_t and value as int64_t. | ||
575 | |||
576 | 2017-08-28 Dodji Seketeli <dodji@redhat.com> | ||
577 | |||
578 | Bug 22015 - Failing to return global scope of a DIE in certain cases | ||
579 | * src/abg-dwarf-reader.cc (get_scope_for_die): If the translation | ||
580 | unit of the parent die hasn't yet been constructed, then return | ||
581 | the global scope of the current translation unit. | ||
582 | * tests/data/test-read-dwarf/PR22015-libboost_iostreams.so: New | ||
583 | binary test input. | ||
584 | * tests/data/test-read-dwarf/PR22015-libboost_iostreams.so.abi: | ||
585 | New reference test output. | ||
586 | * tests/data/Makefile.am: Add the new test materials above to | ||
587 | source distribution. | ||
588 | * tests/test-read-dwarf.cc (in_out_specs): Add the new test input | ||
589 | to the test suite. | ||
590 | |||
591 | 2017-07-17 Dodji Seketeli <dodji@redhat.com> | ||
592 | |||
593 | Fix some make distcheck failures | ||
594 | * tests/data/Makefile.am: Add | ||
595 | test-diff-dwarf/test42-PR21296-libgcc.so, | ||
596 | test-diff-dwarf/test42-PR21296-libclang.so, | ||
597 | test-diff-dwarf/test42-PR21296-clanggcc-report0.txt to the source | ||
598 | distribution. Also look for test-diff-filter/test39* tests inputs | ||
599 | in the test-diff-filter/test39/ directory. | ||
600 | |||
601 | 2017-07-17 Dodji Seketeli <dodji@redhat.com> | ||
602 | |||
603 | Avoid crashing when the elf file could not be read | ||
604 | * src/abg-dwarf-reader.cc | ||
605 | (read_context::elf_architecture_is_ppc64): Do not crash if the elf | ||
606 | handle is nil. | ||
607 | |||
608 | 2017-07-10 Dodji Seketeli <dodji@redhat.com> | ||
609 | |||
610 | Bug 21730 - Make abipkgdiff compare Linux Kernel packages as expected | ||
611 | * include/abg-tools-utils.h (get_vmlinux_path_from_kernel_dist): | ||
612 | Declare new function. | ||
613 | (get_binary_paths_from_kernel_dist): Re-organize order of | ||
614 | parameters. | ||
615 | (file_is_kernel_package, file_is_kernel_debuginfo_package): Make | ||
616 | the file_path parameter be const. | ||
617 | (build_corpus_group_from_kernel_dist_under): Take an additional | ||
618 | debug_info_root parameter. | ||
619 | * src/abg-tools-utils.cc (file_is_kernel_package) | ||
620 | (file_is_kernel_debuginfo_package): Const-ify the file_name | ||
621 | parameter. | ||
622 | (find_vmlinux_path): Define new static function. | ||
623 | (get_binary_paths_from_kernel_dist): Re-organize the order of | ||
624 | parameters. The debug_info_root_path parameter is now an input | ||
625 | parameter. | ||
626 | (get_vmlinux_path_from_kernel_dist): Define new function. | ||
627 | (get_binary_paths_from_kernel_dist): Adjust invocation of | ||
628 | get_binary_paths_from_kernel_dist. | ||
629 | (build_corpus_group_from_kernel_dist_under): Take an additional | ||
630 | debug_info_root parameter. | ||
631 | * tools/abidw.cc (load_kernel_corpus_group_and_write_abixml): | ||
632 | Adjust invocation to build_corpus_group_from_kernel_dist_under. | ||
633 | * tools/abipkgdiff.cc (create_maps_of_package_content): Don't map | ||
634 | the content of a Linux Kernel package. | ||
635 | (compare_prepared_userspace_packages) | ||
636 | (compare_prepared_linux_kernel_packages, compare_prepared): Define | ||
637 | new functions. | ||
638 | (compare): Use the new functions above here. | ||
639 | * tools/kmidiff.cc (print_kernel_dist_binary_paths_under): Adjust | ||
640 | the invocation of get_binary_paths_from_kernel_dist. | ||
641 | (main): Adjust the invocation of | ||
642 | build_corpus_group_from_kernel_dist_under. Make sure that a | ||
643 | kernel package is accompanied by a debug info package. | ||
644 | |||
645 | 2017-07-11 Dodji Seketeli <dodji@redhat.com> | ||
646 | |||
647 | Support up to two --wp options for abipkgdiff | ||
648 | * doc/manuals/abipkgdiff.rst: Update the documentation to say that | ||
649 | --wp can be provided twice, but not more than that. | ||
650 | * tools/abipkgdiff.cc (options::kabi_whitelist_packages): Rename | ||
651 | kabi_whitelist_package to this, and make be of vector<string> | ||
652 | type. | ||
653 | (package::erase_extraction_directories): Erase the white list | ||
654 | package extracted data. | ||
655 | (maybe_handle_kabi_whitelist_pkg, parse_command_line): Adjust. | ||
656 | (main): Make sure there is no more than 2 --wp on the command | ||
657 | line. Associate a white list package to each kernel package on | ||
658 | the command line. | ||
659 | |||
660 | 2017-07-11 Dodji Seketeli <dodji@redhat.com> | ||
661 | |||
662 | Fix support of the --wp option of abipkgdiff | ||
663 | * tools/abipkgdiff.cc (parse_command_line): Consider the absolute | ||
664 | path of the package given in argument to --wp. | ||
665 | |||
666 | 2017-07-11 Dodji Seketeli <dodji@redhat.com> | ||
667 | |||
668 | Use shorter lines in abipkgdiff.cc | ||
669 | * tools/abipkgdiff.cc (parse_command_line): Use shorter lines | ||
670 | here. | ||
671 | |||
672 | 2017-07-11 Dodji Seketeli <dodji@redhat.com> | ||
673 | |||
674 | Add missing space in abipkgdiff error message | ||
675 | * tools/abipkgdiff.cc (extract_package): Add missing space here. | ||
676 | |||
677 | 2017-07-11 Dodji Seketeli <dodji@redhat.com> | ||
678 | |||
679 | Replace --lkaw with -w and --lkaw-pkg with --wp | ||
680 | * doc/manuals/abipkgdiff.rst: Adjust the documentation. | ||
681 | * tools/abipkgdiff.cc (display_usage): Adjust the usage string. | ||
682 | (parse_command_line): Parse -w instead of --lkaw and --wp | ||
683 | insteadof --lkaw-pkg. | ||
684 | |||
685 | 2017-07-11 Dodji Seketeli <dodji@redhat.com> | ||
686 | |||
687 | speed up class type lookup in a corpus | ||
688 | * src/abg-ir.cc (lookup_class_type): In the overload that looks | ||
689 | for a class name denoted by an interned_string in the corpus, do | ||
690 | not look for the class in the translation units when the type | ||
691 | wasn't found in the type map of the corpus. | ||
692 | (maybe_update_types_lookup_map): Remove the | ||
693 | erase_if_exists_already parameter and the code that uses it. | ||
694 | (lookup_class_type_through_translation_units): Remove this | ||
695 | function that is now useless. | ||
696 | |||
697 | 2017-07-06 Dodji Seketeli <dodji@redhat.com> | ||
698 | |||
699 | Bug 21644 - abipkgdiff does not emit diagnostics about comparison errors | ||
700 | * include/abg-dwarf-reader.h (status_to_diagnostic_string): | ||
701 | Declare new function. | ||
702 | * src/abg-dwarf-reader.cc (status_to_diagnostic_string): Define | ||
703 | new function. | ||
704 | * tools/abipkgdiff.cc (compare): Take a new detailed_error_status | ||
705 | parameter. | ||
706 | (compare_task::perform): Get the details of the error, in case the | ||
707 | status of the comparison is ABIDIFF_ERROR. | ||
708 | |||
709 | 2017-07-05 Dodji Seketeli <dodji@redhat.com> | ||
710 | |||
711 | Bug 21153 - abipkgdiff reports undetermined interface subtype changes | ||
712 | * src/abg-ir.cc (get_name_of_qualified_type): A noop-qualified | ||
713 | type has an empty string as reprsentation for its qualifier. | ||
714 | * src/abg-dwarf-reader.cc (die_qualified_type_name): Adjust to | ||
715 | comply with what is done in get_name_of_qualified_type. Adjust | ||
716 | comment too. | ||
717 | * tests/data/test-read-dwarf/test22-pr19097-libstdc++.so.6.0.17.so.abi: | ||
718 | Adjust. | ||
719 | * tests/data/test-diff-pkg/libcdio-0.94-1.fc26.x86_64--libcdio-0.94-2.fc26.x86_64-report.1.txt: | ||
720 | New reference test output. | ||
721 | * tests/data/test-diff-pkg/libcdio-0.94-1.fc26.x86_64.rpm: New | ||
722 | test binary input. | ||
723 | * tests/data/test-diff-pkg/libcdio-0.94-2.fc26.x86_64.rpm: Likewise. | ||
724 | * tests/data/test-diff-pkg/libcdio-debuginfo-0.94-1.fc26.x86_64.rpm: Likewise. | ||
725 | * tests/data/test-diff-pkg/libcdio-debuginfo-0.94-2.fc26.x86_64.rpm Likewise. | ||
726 | * tests/data/Makefile.am: Add the new test inputs to source distribution. | ||
727 | * tests/test-diff-pkg.cc (in_out_specs): Make this test harness run on | ||
728 | the new test inputs above. | ||
729 | |||
730 | 2017-07-03 Dodji Seketeli <dodji@redhat.com> | ||
731 | |||
732 | Fix typo in comments | ||
733 | * src/abg-ir.cc (type_base::get_canonical_type_for): Fix a typo in | ||
734 | a command. | ||
735 | |||
736 | 2017-07-03 Dodji Seketeli <dodji@redhat.com> | ||
737 | |||
738 | Fix a typo when reporting size change wrt a decl-only class | ||
739 | * src/abg-comparison.cc (report_size_and_alignment_changes): Fix | ||
740 | typo. | ||
741 | |||
742 | 2017-07-03 Dodji Seketeli <dodji@redhat.com> | ||
743 | |||
744 | Better handle decl-only classes being different from their definition | ||
745 | * src/abg-comparison.cc (function_decl_diff::report): Don't report | ||
746 | possible vtable changes between a decl-only class and its | ||
747 | definition. | ||
748 | * src/abg-ir.cc (type_base::get_canonical_type_for): Consider that | ||
749 | a decl-only class is different from its definition when comparing | ||
750 | types for the purpose of type canonicalization. | ||
751 | (equals): In the class_or_union overload, only consider the global | ||
752 | decl_only_class_equals_definition() property to know when to | ||
753 | consider that a decl-only class is different from its definition | ||
754 | when comparing two classes. | ||
755 | * src/abg-reader.cc (build_class_decl): Read the size property of | ||
756 | a class, even if it's a decl-only class. | ||
757 | * src/abg-writer.cc (write_class_decl_opening_tag): Write size | ||
758 | property of types even if the types are decl-only classes. | ||
759 | * tests/data/test-annotate/test13-pr18894.so.abi: Adjust. | ||
760 | * tests/data/test-annotate/test14-pr18893.so.abi: Likewise. | ||
761 | * tests/data/test-annotate/test15-pr18892.so.abi: Likewise. | ||
762 | * tests/data/test-annotate/test17-pr19027.so.abi: Likewise. | ||
763 | * tests/data/test-annotate/test18-pr19037-libvtkRenderingLIC-6.1.so.abi: | ||
764 | Likewise. | ||
765 | * tests/data/test-annotate/test19-pr19023-libtcmalloc_and_profiler.so.abi: | ||
766 | Likewise. | ||
767 | * tests/data/test-annotate/test20-pr19025-libvtkParallelCore-6.1.so.abi: | ||
768 | Likewise. | ||
769 | * tests/data/test-annotate/test21-pr19092.so.abi: Likewise. | ||
770 | * tests/data/test-diff-dwarf-abixml/test0-pr19026-libvtkIOSQL-6.1.so.1.abi: | ||
771 | Likewise. | ||
772 | * tests/data/test-diff-filter/test31-pr18535-libstdc++-report-0.txt: | ||
773 | Likewise. | ||
774 | * tests/data/test-diff-filter/test31-pr18535-libstdc++-report-1.txt: | ||
775 | Likewise. | ||
776 | * tests/data/test-read-dwarf/test12-pr18844.so.abi: Likewise. | ||
777 | * tests/data/test-read-dwarf/test13-pr18894.so.abi: Likewise. | ||
778 | * tests/data/test-read-dwarf/test14-pr18893.so.abi: Likewise. | ||
779 | * tests/data/test-read-dwarf/test15-pr18892.so.abi: Likewise. | ||
780 | * tests/data/test-read-dwarf/test17-pr19027.so.abi: Likewise. | ||
781 | * tests/data/test-read-dwarf/test18-pr19037-libvtkRenderingLIC-6.1.so.abi: | ||
782 | Likewise. | ||
783 | * tests/data/test-read-dwarf/test19-pr19023-libtcmalloc_and_profiler.so.abi: | ||
784 | Likewise. | ||
785 | * tests/data/test-read-dwarf/test20-pr19025-libvtkParallelCore-6.1.so.abi: | ||
786 | Likewise. | ||
787 | * tests/data/test-read-dwarf/test21-pr19092.so.abi: Likewise. | ||
788 | * tests/data/test-read-dwarf/test22-pr19097-libstdc++.so.6.0.17.so.abi: | ||
789 | Likewise. | ||
790 | * tests/data/test-read-dwarf/test9-pr18818-clang.so.abi: Likewise. | ||
791 | |||
792 | 2017-06-28 Dodji Seketeli <dodji@redhat.com> | ||
793 | |||
794 | Don't add empty translation unit to corpus | ||
795 | * src/abg-dwarf-reader.cc (build_translation_unit_and_add_to_ir): | ||
796 | A translation unit DIE that has no child DIE shall not be added to | ||
797 | the current ABI corpus. | ||
798 | |||
799 | 2017-06-27 Dodji Seketeli <dodji@redhat.com> | ||
800 | |||
801 | Bug 21631 - Forgot a "break" statement in stv_to_elf_symbol_visibility | ||
802 | * src/abg-dwarf-reader.cc (stv_to_elf_symbol_visibility): Add a | ||
803 | missing break statement. | ||
804 | |||
805 | 2017-06-26 Dodji Seketeli <dodji@redhat.com> | ||
806 | |||
807 | Bug 21630 - A this pointer DIE can be const | ||
808 | * src/abg-dwarf-reader.cc (die_this_pointer_is_const): If the DIE | ||
809 | is not a DW_TAG_pointer_type then don't crash. | ||
810 | |||
811 | 2017-06-23 Dodji Seketeli <dodji@redhat.com> | ||
812 | |||
813 | Bug 21629 - equivalent DIEs must be of the same DIE source | ||
814 | * src/abg-dwarf-reader.cc (compare_dies): Don't propagate | ||
815 | a canonical DIE to a DIE that comes from a different source. | ||
816 | |||
817 | 2017-06-22 Dodji Seketeli <dodji@redhat.com> | ||
818 | |||
819 | Bug 21627 - Libabigail doesn't consider translation unit compile dir | ||
820 | *if* that translation unit has already been seen in the current | ||
821 | binary, instead of creating a new one altogether. | ||
822 | This patch doesn't carry a regression test as the problem was found | ||
823 | while running the | ||
824 | https://pagure.io/libabigail-selfcheck/blob/master/f/selfcheck.py | ||
825 | script over the Fedora 25 critpath packages. | ||
826 | The patch does however update existing reference outputs of existings | ||
827 | tests where appropriate. | ||
828 | * include/abg-ir.h (translation_unit::{get_compilation_dir_path, | ||
829 | set_compilation_dir_path, get_absolute_path}): | ||
830 | * src/abg-corpus.cc (corpus::add): Use the new | ||
831 | translation_unit::get_absolute_path() as the key for the tu path | ||
832 | -> tu map. | ||
833 | * src/abg-dwarf-reader.cc | ||
834 | (read_context::resolve_declaration_only_classes): Use the new | ||
835 | translation_unit::get_absolute_path(). | ||
836 | (build_translation_unit_and_add_to_ir): Set the compilation | ||
837 | directory of the translation unit. | ||
838 | * src/abg-ir-priv.h (translation_unit::priv::{comp_dir_path_, | ||
839 | abs_path_}): | ||
840 | * src/abg-ir.cc (translation_unit::set_path): Update comment. | ||
841 | (translation_unit::{get_compilation_dir_path, | ||
842 | set_compilation_dir_path, get_absolute_path}): Define new member | ||
843 | functions. | ||
844 | * src/abg-reader.cc (read_translation_unit): Take the new | ||
845 | 'comp-dir-path' attribute into account. | ||
846 | * src/abg-writer.cc (write_translation_unit): Emit the new | ||
847 | 'comp-dir-path' attribute. | ||
848 | * tests/data/test-annotate/libtest23.so.abi: Adjust. | ||
849 | * tests/data/test-annotate/libtest24-drop-fns-2.so.abi: Adjust. | ||
850 | * tests/data/test-annotate/libtest24-drop-fns.so.abi: Adjust. | ||
851 | * tests/data/test-annotate/test0.abi: Adjust. | ||
852 | * tests/data/test-annotate/test1.abi: Adjust. | ||
853 | * tests/data/test-annotate/test13-pr18894.so.abi: Adjust. | ||
854 | * tests/data/test-annotate/test14-pr18893.so.abi: Adjust. | ||
855 | * tests/data/test-annotate/test15-pr18892.so.abi: Adjust. | ||
856 | * tests/data/test-annotate/test17-pr19027.so.abi: Adjust. | ||
857 | * tests/data/test-annotate/test18-pr19037-libvtkRenderingLIC-6.1.so.abi: Adjust. | ||
858 | * tests/data/test-annotate/test19-pr19023-libtcmalloc_and_profiler.so.abi: Adjust. | ||
859 | * tests/data/test-annotate/test2.so.abi: Adjust. | ||
860 | * tests/data/test-annotate/test20-pr19025-libvtkParallelCore-6.1.so.abi: Adjust. | ||
861 | * tests/data/test-annotate/test21-pr19092.so.abi: Adjust. | ||
862 | * tests/data/test-annotate/test3.so.abi: Adjust. | ||
863 | * tests/data/test-annotate/test4.so.abi: Adjust. | ||
864 | * tests/data/test-annotate/test5.o.abi: Adjust. | ||
865 | * tests/data/test-annotate/test6.so.abi: Adjust. | ||
866 | * tests/data/test-annotate/test7.so.abi: Adjust. | ||
867 | * tests/data/test-annotate/test8-qualified-this-pointer.so.abi: Adjust. | ||
868 | * tests/data/test-read-dwarf/libtest23.so.abi: Adjust. | ||
869 | * tests/data/test-read-dwarf/libtest24-drop-fns-2.so.abi: Adjust. | ||
870 | * tests/data/test-read-dwarf/libtest24-drop-fns.so.abi: Adjust. | ||
871 | * tests/data/test-read-dwarf/test0.abi: Adjust. | ||
872 | * tests/data/test-read-dwarf/test1.abi: Adjust. | ||
873 | * tests/data/test-read-dwarf/test10-pr18818-gcc.so.abi: Adjust. | ||
874 | * tests/data/test-read-dwarf/test11-pr18828.so.abi: Adjust. | ||
875 | * tests/data/test-read-dwarf/test12-pr18844.so.abi: Adjust. | ||
876 | * tests/data/test-read-dwarf/test13-pr18894.so.abi: Adjust. | ||
877 | * tests/data/test-read-dwarf/test14-pr18893.so.abi: Adjust. | ||
878 | * tests/data/test-read-dwarf/test15-pr18892.so.abi: Adjust. | ||
879 | * tests/data/test-read-dwarf/test16-pr18904.so.abi: Adjust. | ||
880 | * tests/data/test-read-dwarf/test17-pr19027.so.abi: Adjust. | ||
881 | * tests/data/test-read-dwarf/test18-pr19037-libvtkRenderingLIC-6.1.so.abi: Adjust. | ||
882 | * tests/data/test-read-dwarf/test19-pr19023-libtcmalloc_and_profiler.so.abi: Adjust. | ||
883 | * tests/data/test-read-dwarf/test2.so.abi: Adjust. | ||
884 | * tests/data/test-read-dwarf/test20-pr19025-libvtkParallelCore-6.1.so.abi: Adjust. | ||
885 | * tests/data/test-read-dwarf/test21-pr19092.so.abi: Adjust. | ||
886 | * tests/data/test-read-dwarf/test22-pr19097-libstdc++.so.6.0.17.so.abi: Adjust. | ||
887 | * tests/data/test-read-dwarf/test3.so.abi: Adjust. | ||
888 | * tests/data/test-read-dwarf/test4.so.abi: Adjust. | ||
889 | * tests/data/test-read-dwarf/test5.o.abi: Adjust. | ||
890 | * tests/data/test-read-dwarf/test6.so.abi: Adjust. | ||
891 | * tests/data/test-read-dwarf/test7.so.abi: Adjust. | ||
892 | * tests/data/test-read-dwarf/test8-qualified-this-pointer.so.abi: Adjust. | ||
893 | * tests/data/test-read-dwarf/test9-pr18818-clang.so.abi: Adjust. | ||
894 | |||
895 | 2017-05-04 Dodji Seketeli <dodji@redhat.com> | ||
896 | |||
897 | Misc style fixes | ||
898 | * src/abg-dwarf-reader.cc (read_context::{die_wip_classes_map, | ||
899 | die_wip_function_types_map, types_to_canonicalize, | ||
900 | tu_die_imported_unit_points_map, die_parent_map, | ||
901 | load_kernel_symbol_table}): Add missing space to statement. | ||
902 | (get_parent_die): Likewise. | ||
903 | (build_enum_type): Fix typo in comment. | ||
904 | (e_machine_to_string, get_version_definition_for_versym) | ||
905 | (lookup_public_function_symbol_from_elf) | ||
906 | (lookup_public_variable_symbol_from_elf) | ||
907 | (lookup_data_tag_from_dynamic_segment, die_is_declaration_only) | ||
908 | (die_is_reference_type, die_function_type_is_method_type): Fix | ||
909 | indentation. | ||
910 | (read_context::{resolve_declaration_only_classes, | ||
911 | fixup_functions_with_no_symbols, | ||
912 | load_symbol_maps_from_symtab_section, load_dt_soname_and_needed, | ||
913 | load_elf_architecture, load_elf_properties, | ||
914 | maybe_adjust_address_for_exec_or_dyn, maybe_adjust_fn_sym_address, | ||
915 | address_is_in_opd_section, load_elf_architecture, | ||
916 | build_die_parent_maps}): Likewise. | ||
917 | (op_pushes_constant_value, op_manipulates_stack): Use the | ||
918 | dwarf_expr_eval_context::push method. | ||
919 | (op_is_control_flow, die_return_and_parm_names_from_fn_type_die) | ||
920 | (die_function_signature, die_pretty_print_type) | ||
921 | (get_default_array_lower_bound) | ||
922 | (build_translation_unit_and_add_to_ir, build_enum_type) | ||
923 | (add_or_update_class_type, build_function_type) | ||
924 | (build_function_decl, build_ir_node_from_die) | ||
925 | (lookup_public_function_symbol_from_elf): Fix indentation. | ||
926 | * src/abg-ir.cc (maybe_update_types_lookup_map): Remove useless space. | ||
927 | |||
928 | 2017-05-31 Dodji Seketeli <dodji@redhat.com> | ||
929 | |||
930 | Fix doc glitch in abidiff.rst | ||
931 | * doc/manuals/abidiff.rst: Fix glitch. | ||
932 | |||
933 | 2017-06-12 Dodji Seketeli <dodji@redhat.com> | ||
934 | |||
935 | Symbols with the same zero value are not aliases | ||
936 | * src/abg-dwarf-reader.cc (load_symbol_maps_from_symtab_section): | ||
937 | Do not consider symbols with zero value as being aliases. | ||
938 | * tests/data/test-diff-filter/test20-inline-report-0.txt: Adjust. | ||
939 | * tests/data/test-diff-filter/test20-inline-report-1.txt: | ||
940 | Likewise. | ||
941 | * test-diff-filter/test41-PR21486-abg-writer.gcc.o: New test | ||
942 | binary input. | ||
943 | * tests/data/test-diff-filter/test41-PR21486-abg-writer.llvm.o: | ||
944 | Likewise. | ||
945 | * tests/data/Makefile.am: Add the new test material to source | ||
946 | distribution. | ||
947 | * tests/test-diff-filter.cc (in_out_specs): Run the test harness | ||
948 | on the new test input above. | ||
949 | * tests/data/test-diff-dwarf/test5-report.txt: Adjust. | ||
950 | * tests/data/test-diff-filter/test9-report.txt: Adjust. | ||
951 | * tests/data/test-diff-filter/test20-inline-report-0.txt: Adjust. | ||
952 | * tests/data/test-diff-filter/test20-inline-report-1.txt: Adjust. | ||
953 | |||
954 | 2017-06-12 Dodji Seketeli <dodji@redhat.com> | ||
955 | |||
956 | Support ELF symbol visibility property | ||
957 | * include/abg-ir.h (enum elf_symbol::visibility): Define new enum. | ||
958 | (elf_symbol::{elf_symbol, create}): Take a visibility parameter. | ||
959 | (elf_symbol::{set, get}_visibility): Declare new accessors. | ||
960 | (string_to_elf_symbol_binding): Declare new function. | ||
961 | * src/abg-ir.cc (elf_symbol::priv::visibility_): New data member. | ||
962 | (elf_symbol::priv::priv): Adjust. | ||
963 | (elf_symbol::elf_symbol): Take a visibility parameter. | ||
964 | (elf_symbol::create): Likewise | ||
965 | (elf_symbol::{s,g}et_visibility): Define new accessors. | ||
966 | (elf_symbol::is_public): Adjust. | ||
967 | (operator<<(std::ostream&, elf_symbol::visibility)): Define new | ||
968 | operator. | ||
969 | (string_to_elf_symbol_visibility): Define new function. | ||
970 | * src/abg-dwarf-reader.cc (stv_to_elf_symbol_visibility): Define | ||
971 | new static function. | ||
972 | (lookup_symbol_from_sysv_hash_tab) | ||
973 | (lookup_symbol_from_gnu_hash_tab, lookup_symbol_from_symtab) | ||
974 | (create_default_var_sym, create_default_fn_sym): Adjust. | ||
975 | * src/abg-reader.cc (read_elf_symbol_binding): Define new | ||
976 | function. | ||
977 | (build_elf_symbol): Adjust. | ||
978 | * src/abg-writer.cc (write_elf_symbol_visibility): Define new | ||
979 | function. | ||
980 | * tests/data/test-annotate/libtest23.so.abi: Adjust. | ||
981 | * tests/data/test-annotate/libtest24-drop-fns-2.so.abi: Adjust. | ||
982 | * tests/data/test-annotate/libtest24-drop-fns.so.abi: Adjust. | ||
983 | * tests/data/test-annotate/test0.abi: Adjust. | ||
984 | * tests/data/test-annotate/test1.abi: Adjust. | ||
985 | * tests/data/test-annotate/test13-pr18894.so.abi: Adjust. | ||
986 | * tests/data/test-annotate/test14-pr18893.so.abi: Adjust. | ||
987 | * tests/data/test-annotate/test15-pr18892.so.abi: Adjust. | ||
988 | * tests/data/test-annotate/test17-pr19027.so.abi: Adjust. | ||
989 | * tests/data/test-annotate/test18-pr19037-libvtkRenderingLIC-6.1.so.abi: | ||
990 | Adjust. | ||
991 | * tests/data/test-annotate/test19-pr19023-libtcmalloc_and_profiler.so.abi: | ||
992 | Adjust. | ||
993 | * tests/data/test-annotate/test2.so.abi: Adjust. | ||
994 | * tests/data/test-annotate/test20-pr19025-libvtkParallelCore-6.1.so.abi: | ||
995 | Adjust. | ||
996 | * tests/data/test-annotate/test21-pr19092.so.abi: Adjust. | ||
997 | * tests/data/test-annotate/test3.so.abi: Adjust. | ||
998 | * tests/data/test-annotate/test4.so.abi: Adjust. | ||
999 | * tests/data/test-annotate/test5.o.abi: Adjust. | ||
1000 | * tests/data/test-annotate/test6.so.abi: Adjust. | ||
1001 | * tests/data/test-annotate/test7.so.abi: Adjust. | ||
1002 | * tests/data/test-annotate/test8-qualified-this-pointer.so.abi: | ||
1003 | Adjust. | ||
1004 | * tests/data/test-read-dwarf/libtest23.so.abi: Adjust. | ||
1005 | * tests/data/test-read-dwarf/libtest24-drop-fns-2.so.abi: Adjust. | ||
1006 | * tests/data/test-read-dwarf/libtest24-drop-fns.so.abi: Adjust. | ||
1007 | * tests/data/test-read-dwarf/test0.abi: Adjust. | ||
1008 | * tests/data/test-read-dwarf/test1.abi: Adjust. | ||
1009 | * tests/data/test-read-dwarf/test10-pr18818-gcc.so.abi: Adjust. | ||
1010 | * tests/data/test-read-dwarf/test11-pr18828.so.abi: Adjust. | ||
1011 | * tests/data/test-read-dwarf/test12-pr18844.so.abi: Adjust. | ||
1012 | * tests/data/test-read-dwarf/test13-pr18894.so.abi: Adjust. | ||
1013 | * tests/data/test-read-dwarf/test14-pr18893.so.abi: Adjust. | ||
1014 | * tests/data/test-read-dwarf/test15-pr18892.so.abi: Adjust. | ||
1015 | * tests/data/test-read-dwarf/test16-pr18904.so.abi: Adjust. | ||
1016 | * tests/data/test-read-dwarf/test17-pr19027.so.abi: Adjust. | ||
1017 | * tests/data/test-read-dwarf/test18-pr19037-libvtkRenderingLIC-6.1.so.abi: | ||
1018 | Adjust. | ||
1019 | * tests/data/test-read-dwarf/test19-pr19023-libtcmalloc_and_profiler.so.abi: | ||
1020 | Adjust. | ||
1021 | * tests/data/test-read-dwarf/test2.so.abi: Adjust. | ||
1022 | * tests/data/test-read-dwarf/test20-pr19025-libvtkParallelCore-6.1.so.abi: | ||
1023 | Adjust. | ||
1024 | * tests/data/test-read-dwarf/test21-pr19092.so.abi: Adjust. | ||
1025 | * tests/data/test-read-dwarf/test22-pr19097-libstdc++.so.6.0.17.so.abi: | ||
1026 | Adjust. | ||
1027 | * tests/data/test-read-dwarf/test3.so.abi: Adjust. | ||
1028 | * tests/data/test-read-dwarf/test4.so.abi: Adjust. | ||
1029 | * tests/data/test-read-dwarf/test5.o.abi: Adjust. | ||
1030 | * tests/data/test-read-dwarf/test6.so.abi: Adjust. | ||
1031 | * tests/data/test-read-dwarf/test7.so.abi: Adjust. | ||
1032 | * tests/data/test-read-dwarf/test8-qualified-this-pointer.so.abi: | ||
1033 | Adjust. | ||
1034 | * tests/data/test-read-dwarf/test9-pr18818-clang.so.abi: Adjust. | ||
1035 | * tests/data/test-read-write/test26.xml: Adjust. | ||
1036 | * tests/data/test-read-write/test27.xml: Adjust. | ||
1037 | * tests/data/test-read-write/test28-without-std-fns-ref.xml: | ||
1038 | Adjust. | ||
1039 | * tests/data/test-read-write/test28-without-std-vars-ref.xml: | ||
1040 | Adjust. | ||
1041 | |||
1042 | 2017-06-09 Dodji Seketeli <dodji@redhat.com> | ||
1043 | |||
1044 | Filter top cv qualifier changes on function parameter types | ||
1045 | * include/abg-comparison.h (enum diff_category): Add a new | ||
1046 | FN_PARM_TYPE_TOP_CV_CHANGE_CATEGORY enumerator. "Or" the | ||
1047 | enumerator to the EVERYTHING_CATEGORY enumerator. | ||
1048 | * src/abg-comp-filter.cc (has_fn_parm_type_cv_qual_change): Define | ||
1049 | new static function. | ||
1050 | (categorize_harmless_diff_node): Categorize changes to top cv | ||
1051 | qualifiers on function parameter types into the new | ||
1052 | FN_PARM_TYPE_TOP_CV_CHANGE_CATEGORY. | ||
1053 | * src/abg-comparison.cc (get_default_harmless_categories_bitmap): | ||
1054 | Add the new FN_PARM_TYPE_TOP_CV_CHANGE_CATEGORY category to the | ||
1055 | set of harmless categories. | ||
1056 | (operator<<(ostream&, diff_category)): Adjust to serialize | ||
1057 | the new FN_PARM_TYPE_TOP_CV_CHANGE_CATEGORY. | ||
1058 | * tests/data/test-diff-filter/libtest40-v0.so: New test input binary. | ||
1059 | * tests/data/test-diff-filter/libtest40-v1.so: Likewise. | ||
1060 | * tests/data/test-diff-filter/test40-report-0.txt: New test | ||
1061 | reference output. | ||
1062 | * tests/data/test-diff-filter/test40-v0.cc: Source code of the | ||
1063 | test binary above. | ||
1064 | * tests/data/test-diff-filter/test40-v1.cc: Likewise. | ||
1065 | * tests/data/Makefile.am: Add the new test material above to | ||
1066 | source distribution. | ||
1067 | * tests/test-diff-filter.cc (in_out_specs): Add new binaries to | ||
1068 | compare. | ||
1069 | * tests/data/test-diff-filter/test30-pr18904-rvalueref-report0.txt: | ||
1070 | Adjust. | ||
1071 | * tests/data/test-diff-filter/test30-pr18904-rvalueref-report1.txt: | ||
1072 | Likewise. | ||
1073 | * tests/data/test-diff-filter/test35-pr18754-no-added-syms-report-0.txt: | ||
1074 | Likewise. | ||
1075 | * tests/data/test-diff-filter/test35-pr18754-no-added-syms-report-1.txt: | ||
1076 | Likewise. | ||
1077 | |||
1078 | 2017-05-28 Dodji Seketeli <dodji@redhat.com> | ||
1079 | |||
1080 | Do not report about voffset when it's not set in debug info | ||
1081 | * include/abg-ir.h (mem_fn_context_rel::mem_fn_context_rel): | ||
1082 | Initialize the virtual offset to -1. | ||
1083 | * src/abg-comparison.cc (represent): In the overload to represent | ||
1084 | a method_decl, do not represent the vofffset if it's not set. | ||
1085 | * src/abg-writer.cc (write_voffset): The virtual offset is signed | ||
1086 | because if it's -1, it means no offset is set. | ||
1087 | * tests/data/test-annotate/test14-pr18893.so.abi: Adjust. | ||
1088 | * tests/data/test-annotate/test18-pr19037-libvtkRenderingLIC-6.1.so.abi: | ||
1089 | Adjust. | ||
1090 | * tests/data/test-annotate/test19-pr19023-libtcmalloc_and_profiler.so.abi: | ||
1091 | Adjust. | ||
1092 | * tests/data/test-annotate/test20-pr19025-libvtkParallelCore-6.1.so.abi: | ||
1093 | Adjust. | ||
1094 | * tests/data/test-diff-dwarf-abixml/test0-pr19026-libvtkIOSQL-6.1.so.1.abi: | ||
1095 | Adjust. | ||
1096 | * tests/data/test-diff-dwarf/test28-vtable-changes-report-0.txt: Adjust. | ||
1097 | * tests/data/test-read-dwarf/test10-pr18818-gcc.so.abi: Adjust. | ||
1098 | * tests/data/test-read-dwarf/test11-pr18828.so.abi: Adjust. | ||
1099 | * tests/data/test-read-dwarf/test14-pr18893.so.abi: Adjust. | ||
1100 | * tests/data/test-read-dwarf/test18-pr19037-libvtkRenderingLIC-6.1.so.abi: | ||
1101 | Adjust. | ||
1102 | * tests/data/test-read-dwarf/test19-pr19023-libtcmalloc_and_profiler.so.abi: | ||
1103 | Adjust. | ||
1104 | * tests/data/test-read-dwarf/test20-pr19025-libvtkParallelCore-6.1.so.abi: | ||
1105 | Adjust. | ||
1106 | * tests/data/test-read-dwarf/test22-pr19097-libstdc++.so.6.0.17.so.abi: | ||
1107 | Adjust. | ||
1108 | |||
1109 | 2017-05-17 Dodji Seketeli <dodji@redhat.com> | ||
1110 | |||
1111 | Allow selective resolution of class declaration | ||
1112 | * include/abg-fwd.h (type_base_wptrs_type) | ||
1113 | (istring_type_base_wptrs_map_type): Define new typedefs. | ||
1114 | (lookup_class_types): Declare new functions. | ||
1115 | * include/abg-ir.h | ||
1116 | (environment::decl_only_class_equals_definition): Declare new | ||
1117 | accessor. | ||
1118 | (type_maps::{*_types}): Make these accessors return | ||
1119 | istring_type_base_wptrs_map_type& instead of | ||
1120 | istring_type_base_wptr_map_type&. | ||
1121 | * src/abg-dwarf-reader.cc | ||
1122 | (read_context::resolve_declaration_only_classes): Implement the | ||
1123 | new selective declaration resolution scheme. | ||
1124 | * src/abg-ir.cc (type_maps::priv::{*_types_}): Change the type of | ||
1125 | these data members from istring_type_base_wptr_map_type to | ||
1126 | istring_type_base_wptrs_map_type. | ||
1127 | (type_maps::{*_types}): Make these accessors definitions return | ||
1128 | istring_type_base_wptrs_map_type& instead of | ||
1129 | istring_type_base_wptr_map_type&. | ||
1130 | (translation_unit::bind_function_type_life_time): Adjust. | ||
1131 | (environment::priv::decl_only_class_equals_definition_): New data | ||
1132 | member. | ||
1133 | (environment::priv::priv): Initialize it. By default, a decl-only | ||
1134 | class is now considered different from its definition. | ||
1135 | (environment::decl_only_class_equals_definition): Define new | ||
1136 | accessor. | ||
1137 | (lookup_types_in_map, lookup_class_types): Define new functions. | ||
1138 | (lookup_type_in_map, lookup_union_type_per_location) | ||
1139 | (lookup_basic_type, lookup_basic_type_per_location) | ||
1140 | (lookup_class_type, lookup_class_type_per_location) | ||
1141 | (lookup_union_type, lookup_enum_type) | ||
1142 | (lookup_enum_type_per_location, lookup_typedef_type) | ||
1143 | (lookup_typedef_type_per_location, lookup_qualified_type) | ||
1144 | (lookup_pointer_type, lookup_reference_type, lookup_array_type) | ||
1145 | (lookup_function_type, maybe_update_types_lookup_map) | ||
1146 | (maybe_update_types_lookup_map<class_decl>) | ||
1147 | (maybe_update_types_lookup_map<function_type>): Adjust. | ||
1148 | (type_base::get_canonical_type_for): When doing type comparison | ||
1149 | here, we can now consider that an unresolved class declaration | ||
1150 | compares different to an incompatible class definition of the same | ||
1151 | name. So no need to look through decl-only classes in that case. | ||
1152 | (equals): In the overload for class_or_union, if | ||
1153 | environment::decl_only_class_equals_definition() is false, then an | ||
1154 | unresolved class declaration of name "N" compares different to a | ||
1155 | class definition named "N". | ||
1156 | * tests/data/test-annotate/test15-pr18892.so.abi: Adjust. | ||
1157 | * tests/data/test-read-dwarf/test9-pr18818-clang.so.abi: Adjust | ||
1158 | * tests/data/test-read-dwarf/test12-pr18844.so.abi: Adjust. | ||
1159 | * tests/data/test-read-dwarf/test15-pr18892.so.abi: Adjust. | ||
1160 | * tests/data/test-diff-dwarf/test28-vtable-changes-report-0.txt: | ||
1161 | Adjust. | ||
1162 | * tests/data/test-diff-pkg/spice-server-0.12.4-19.el7.x86_64-0.12.8-1.el7.x86_64-report-2.txt: | ||
1163 | Adjust. | ||
1164 | * tests/data/test-diff-filter/test38/Makefile: New test material. | ||
1165 | * tests/data/test-diff-filter/test38/test38-a.c: Likewise. | ||
1166 | * tests/data/test-diff-filter/test38/test38-b.c: Likewise. | ||
1167 | * tests/data/test-diff-filter/test38/test38-c.c: Likewise. | ||
1168 | * tests/data/test-diff-filter/test38/test38-report-0.txt: Likewise. | ||
1169 | * tests/data/test-diff-filter/test38/test38-v0: Likewise. | ||
1170 | * tests/data/test-diff-filter/test38/test38-v1: Likewise. | ||
1171 | * tests/data/test-diff-filter/test38/test38.h: Likewise. | ||
1172 | * tests/data/test-diff-filter/test39/Makefile: Likewise. | ||
1173 | * tests/data/test-diff-filter/test39/test39-a-v0.c: Likewise. | ||
1174 | * tests/data/test-diff-filter/test39/test39-a-v1.c: Likewise. | ||
1175 | * tests/data/test-diff-filter/test39/test39-b-v0.c: Likewise. | ||
1176 | * tests/data/test-diff-filter/test39/test39-b-v1.c: Likewise. | ||
1177 | * tests/data/test-diff-filter/test39/test39-c-v0.c: Likewise. | ||
1178 | * tests/data/test-diff-filter/test39/test39-c-v1.c: Likewise. | ||
1179 | * tests/data/test-diff-filter/test39/test39-main.c: Likewise. | ||
1180 | * tests/data/test-diff-filter/test39/test39-report-0.txt: Likewise. | ||
1181 | * tests/data/test-diff-filter/test39/test39-v0: Likewise. | ||
1182 | * tests/data/test-diff-filter/test39/test39-v1: Likewise. | ||
1183 | * tests/data/test-diff-filter/test39/test39.h: Likewise. | ||
1184 | * tests/data/Makefile.am: Add the new test material above to the | ||
1185 | source distribution. | ||
1186 | * tests/test-diff-filter.cc (in_out_specs): Add the new test | ||
1187 | inputs above to the test harness. | ||
1188 | |||
1189 | 2017-05-31 Dodji Seketeli <dodji@redhat.com> | ||
1190 | |||
1191 | Add documentation for the kmidiff tool | ||
1192 | * doc/manuals/kmidiff.rst: New doc file. | ||
1193 | * doc/manuals/Makefile.am: Add the above file to source | ||
1194 | distribution. | ||
1195 | |||
1196 | 2017-05-31 Dodji Seketeli <dodji@redhat.com> | ||
1197 | |||
1198 | Allow re-using the ELF/DWARF read_context when loading a corpus group | ||
1199 | * include/abg-dwarf-reader.h (reset_read_context): Declare new | ||
1200 | function. | ||
1201 | * src/abg-dwarf-reader.cc (read_context::elf_paths_): Make this to | ||
1202 | be non const. | ||
1203 | (read_context::initialize): New function to initialize all data | ||
1204 | members. | ||
1205 | (read_context::read_context): Use the new read_context::initialize | ||
1206 | function, rather than initializing data members 'inline' here. | ||
1207 | (reset_read_context): Define a new function to reset a | ||
1208 | read_context so that it can be re-used to load a new corpus. | ||
1209 | |||
1210 | 2017-05-31 Dodji Seketeli <dodji@redhat.com> | ||
1211 | |||
1212 | Add --vmlinux{1,2} option to abidw and kmidiff | ||
1213 | * include/abg-tools-utils.h | ||
1214 | (build_corpus_group_from_kernel_dist_under): Add a new | ||
1215 | vmlinux_path parameter. | ||
1216 | * src/abg-tools-utils.cc (find_vmlinux_and_module_paths): Do not | ||
1217 | try to find a vmlinux binary if we already have the path to one. | ||
1218 | (build_corpus_group_from_kernel_dist_under): Add a new | ||
1219 | vmlinux_path parameter. | ||
1220 | * tools/abidw.cc (options::vmlinux): New data member. | ||
1221 | (display_usage): Add a usage string for --vmlinux | ||
1222 | (parse_command_line): Parse the new --vmlinux option. | ||
1223 | (load_kernel_corpus_group_and_write_abixml): Fix some return code | ||
1224 | when the function fails. Verify the presence of the vmlinux | ||
1225 | binary that was given. Adjust. | ||
1226 | * tools/kmidiff.cc (options::{vmlinux1, vmlinux2}): New data | ||
1227 | members. | ||
1228 | (display_usage): Add a usage string for --vmlinux1 and --vmlinux2. | ||
1229 | (parse_command_line): Parse the --vmlinux1 and --vmlinux2 | ||
1230 | options. | ||
1231 | (main): Adjust. | ||
1232 | |||
1233 | 2017-05-18 Dodji Seketeli <dodji@redhat.com> | ||
1234 | |||
1235 | Cache function type name computation results | ||
1236 | * src/abg-ir.cc (get_type_name): Cache function type names. | ||
1237 | |||
1238 | 2017-05-29 Dodji Seketeli <dodji@redhat.com> | ||
1239 | |||
1240 | Fix innacurate test condition when reading an enum type from abixml | ||
1241 | * src/abg-reader.cc (build_enum_type_decl): Do not check for | ||
1242 | errno which might have been set earlier by something else. | ||
1243 | Rather, check the returned value for overflow or underflow. | ||
1244 | |||
1245 | 2017-05-28 Dodji Seketeli <dodji@redhat.com> | ||
1246 | |||
1247 | Do not report about voffset when it's not set in debug info | ||
1248 | * include/abg-ir.h (mem_fn_context_rel::mem_fn_context_rel): | ||
1249 | Initialize the virtual offset to -1. | ||
1250 | * src/abg-comparison.cc (represent): In the overload to represent | ||
1251 | a method_decl, do not represent the vofffset if it's not set. | ||
1252 | * src/abg-writer.cc (write_voffset): The virtual offset is signed | ||
1253 | because if it's -1, it means no offset is set. | ||
1254 | * tests/data/test-annotate/test14-pr18893.so.abi: Adjust. | ||
1255 | * tests/data/test-annotate/test18-pr19037-libvtkRenderingLIC-6.1.so.abi: | ||
1256 | Adjust. | ||
1257 | * tests/data/test-annotate/test19-pr19023-libtcmalloc_and_profiler.so.abi: | ||
1258 | Adjust. | ||
1259 | * tests/data/test-annotate/test20-pr19025-libvtkParallelCore-6.1.so.abi: | ||
1260 | Adjust. | ||
1261 | * tests/data/test-diff-dwarf-abixml/test0-pr19026-libvtkIOSQL-6.1.so.1.abi: | ||
1262 | Adjust. | ||
1263 | * tests/data/test-diff-dwarf/test28-vtable-changes-report-0.txt: Adjust. | ||
1264 | * tests/data/test-read-dwarf/test10-pr18818-gcc.so.abi: Adjust. | ||
1265 | * tests/data/test-read-dwarf/test11-pr18828.so.abi: Adjust. | ||
1266 | * tests/data/test-read-dwarf/test14-pr18893.so.abi: Adjust. | ||
1267 | * tests/data/test-read-dwarf/test18-pr19037-libvtkRenderingLIC-6.1.so.abi: | ||
1268 | Adjust. | ||
1269 | * tests/data/test-read-dwarf/test19-pr19023-libtcmalloc_and_profiler.so.abi: | ||
1270 | Adjust. | ||
1271 | * tests/data/test-read-dwarf/test20-pr19025-libvtkParallelCore-6.1.so.abi: | ||
1272 | Adjust. | ||
1273 | * tests/data/test-read-dwarf/test22-pr19097-libstdc++.so.6.0.17.so.abi: | ||
1274 | Adjust. | ||
1275 | |||
1276 | 2017-05-18 Dodji Seketeli <dodji@redhat.com> | ||
1277 | |||
1278 | Speedup DIE representation computing esp function signature in C | ||
1279 | * src/abg-dwarf-reader.cc (die_function_signature): For C DIEs, | ||
1280 | just return the (linkage) name of the function. | ||
1281 | * tests/data/test-annotate/test15-pr18892.so.abi: Adjust. | ||
1282 | * tests/data/test-annotate/test21-pr19092.so.abi: Adjust. | ||
1283 | * tests/data/test-read-dwarf/test15-pr18892.so.abi: Adjust. | ||
1284 | * tests/data/test-read-dwarf/test21-pr19092.so.abi: Adjust. | ||
1285 | |||
1286 | 2017-05-17 Dodji Seketeli <dodji@redhat.com> | ||
1287 | |||
1288 | Allow selective resolution of class declaration | ||
1289 | * include/abg-fwd.h (type_base_wptrs_type) | ||
1290 | (istring_type_base_wptrs_map_type): Define new typedefs. | ||
1291 | (lookup_class_types): Declare new functions. | ||
1292 | * include/abg-ir.h | ||
1293 | (environment::decl_only_class_equals_definition): Declare new | ||
1294 | accessor. | ||
1295 | (type_maps::{*_types}): Make these accessors return | ||
1296 | istring_type_base_wptrs_map_type& instead of | ||
1297 | istring_type_base_wptr_map_type&. | ||
1298 | * src/abg-dwarf-reader.cc | ||
1299 | (read_context::resolve_declaration_only_classes): Implement the | ||
1300 | new selective declaration resolution scheme. | ||
1301 | * src/abg-ir.cc (type_maps::priv::{*_types_}): Change the type of | ||
1302 | these data members from istring_type_base_wptr_map_type to | ||
1303 | istring_type_base_wptrs_map_type. | ||
1304 | (type_maps::{*_types}): Make these accessors definitions return | ||
1305 | istring_type_base_wptrs_map_type& instead of | ||
1306 | istring_type_base_wptr_map_type&. | ||
1307 | (translation_unit::bind_function_type_life_time): Adjust. | ||
1308 | (environment::priv::decl_only_class_equals_definition_): New data | ||
1309 | member. | ||
1310 | (environment::priv::priv): Initialize it. By default, a decl-only | ||
1311 | class is now considered different from its definition. | ||
1312 | (environment::decl_only_class_equals_definition): Define new | ||
1313 | accessor. | ||
1314 | (lookup_types_in_map, lookup_class_types): Define new functions. | ||
1315 | (lookup_type_in_map, lookup_union_type_per_location) | ||
1316 | (lookup_basic_type, lookup_basic_type_per_location) | ||
1317 | (lookup_class_type, lookup_class_type_per_location) | ||
1318 | (lookup_union_type, lookup_enum_type) | ||
1319 | (lookup_enum_type_per_location, lookup_typedef_type) | ||
1320 | (lookup_typedef_type_per_location, lookup_qualified_type) | ||
1321 | (lookup_pointer_type, lookup_reference_type, lookup_array_type) | ||
1322 | (lookup_function_type, maybe_update_types_lookup_map) | ||
1323 | (maybe_update_types_lookup_map<class_decl>) | ||
1324 | (maybe_update_types_lookup_map<function_type>): Adjust. | ||
1325 | (type_base::get_canonical_type_for): When doing type comparison | ||
1326 | here, we can now consider that an unresolved class declaration | ||
1327 | compares different to an incompatible class definition of the same | ||
1328 | name. So no need to look through decl-only classes in that case. | ||
1329 | (equals): In the overload for class_or_union, if | ||
1330 | environment::decl_only_class_equals_definition() is false, then an | ||
1331 | unresolved class declaration of name "N" compares different to a | ||
1332 | class definition named "N". | ||
1333 | * tests/data/test-annotate/test15-pr18892.so.abi: Adjust. | ||
1334 | * tests/data/test-read-dwarf/test9-pr18818-clang.so.abi: Adjust | ||
1335 | * tests/data/test-read-dwarf/test12-pr18844.so.abi: Adjust. | ||
1336 | * tests/data/test-read-dwarf/test15-pr18892.so.abi: Adjust. | ||
1337 | * tests/data/test-diff-dwarf/test28-vtable-changes-report-0.txt: | ||
1338 | Adjust. | ||
1339 | * tests/data/test-diff-pkg/spice-server-0.12.4-19.el7.x86_64-0.12.8-1.el7.x86_64-report-2.txt: | ||
1340 | Adjust. | ||
1341 | * tests/data/test-diff-filter/test38/Makefile: New test material. | ||
1342 | * tests/data/test-diff-filter/test38/test38-a.c: Likewise. | ||
1343 | * tests/data/test-diff-filter/test38/test38-b.c: Likewise. | ||
1344 | * tests/data/test-diff-filter/test38/test38-c.c: Likewise. | ||
1345 | * tests/data/test-diff-filter/test38/test38-report-0.txt: Likewise. | ||
1346 | * tests/data/test-diff-filter/test38/test38-v0: Likewise. | ||
1347 | * tests/data/test-diff-filter/test38/test38-v1: Likewise. | ||
1348 | * tests/data/test-diff-filter/test38/test38.h: Likewise. | ||
1349 | * tests/data/test-diff-filter/test39/Makefile: Likewise. | ||
1350 | * tests/data/test-diff-filter/test39/test39-a-v0.c: Likewise. | ||
1351 | * tests/data/test-diff-filter/test39/test39-a-v1.c: Likewise. | ||
1352 | * tests/data/test-diff-filter/test39/test39-b-v0.c: Likewise. | ||
1353 | * tests/data/test-diff-filter/test39/test39-b-v1.c: Likewise. | ||
1354 | * tests/data/test-diff-filter/test39/test39-c-v0.c: Likewise. | ||
1355 | * tests/data/test-diff-filter/test39/test39-c-v1.c: Likewise. | ||
1356 | * tests/data/test-diff-filter/test39/test39-main.c: Likewise. | ||
1357 | * tests/data/test-diff-filter/test39/test39-report-0.txt: Likewise. | ||
1358 | * tests/data/test-diff-filter/test39/test39-v0: Likewise. | ||
1359 | * tests/data/test-diff-filter/test39/test39-v1: Likewise. | ||
1360 | * tests/data/test-diff-filter/test39/test39.h: Likewise. | ||
1361 | * tests/data/Makefile.am: Add the new test material above to the | ||
1362 | source distribution. | ||
1363 | * tests/test-diff-filter.cc (in_out_specs): Add the new test | ||
1364 | inputs above to the test harness. | ||
1365 | |||
1366 | 2017-05-04 Dodji Seketeli <dodji@redhat.com> | ||
1367 | |||
1368 | Avoid de-duplicating different C types that have identical name | ||
1369 | * src/abg-dwarf-reader.cc (die_decl_map_type, die_type_map_type): | ||
1370 | Remove these typedefs. | ||
1371 | (die_artefact_map_type, istring_dwarf_offsets_map_type): New | ||
1372 | typedefs. | ||
1373 | (die_is_at_class_scope, die_qualified_type_name) | ||
1374 | (die_qualified_decl_name, die_qualified_type_name_empty) | ||
1375 | (die_return_and_parm_names_from_fn_type_die) | ||
1376 | (die_function_type_is_method_type): | ||
1377 | Const-ify the read_context& parameter. | ||
1378 | (read_context::die_source_dependant_container_set::get_container): | ||
1379 | Likewise. | ||
1380 | (read_context::{name_artefacts_map_, per_tu_name_artefacts_map_, | ||
1381 | die_decl_map_, alternate_die_decl_map_, type_unit_die_decl_map_, | ||
1382 | die_type_map_, alternate_die_type_map_, type_unit_die_type_map_}): | ||
1383 | Remove data members. | ||
1384 | (read_context::{die_decl_map, alternate_die_decl_map, | ||
1385 | associate_die_to_decl_primary, associate_die_to_decl_alternate, | ||
1386 | associate_die_to_decl_from_type_unit, | ||
1387 | lookup_decl_from_die_offset_primary, | ||
1388 | lookup_decl_from_die_offset_alternate, | ||
1389 | lookup_decl_from_type_unit_die_offset, | ||
1390 | lookup_type_artifact_from_die_per_tu, | ||
1391 | lookup_artifact_from_per_tu_die_representation, | ||
1392 | associate_die_to_artifact_by_repr, | ||
1393 | associate_die_to_artifact_by_repr_internal, clear_die_type_maps}): | ||
1394 | Remove member functions. | ||
1395 | (read_context::{decl_die_repr_die_offsets_maps_, | ||
1396 | type_die_repr_die_offsets_maps_, decl_die_artefact_maps_, | ||
1397 | type_die_artefact_maps_, dwarf_expr_eval_context_}): Add new data | ||
1398 | members. | ||
1399 | (read_context::clear_per_translation_unit_data): Don't clear | ||
1400 | read_context::per_tu_name_artefacts_map_ data member as it's | ||
1401 | removed. | ||
1402 | (read_context::clear_per_corpus_data): Don't clear | ||
1403 | read_context::name_artefacts_map_ and all the other relevant data | ||
1404 | members that got removed. | ||
1405 | (read_context::{dwarf_per_die_source, | ||
1406 | decl_die_repr_die_offsets_maps, type_die_repr_die_offsets_maps, | ||
1407 | get_canonical_die, get_die_from_offset, decl_die_artefact_maps, | ||
1408 | type_die_artefact_maps, dwarf_expr_eval_ctxt}): Add new member | ||
1409 | functions. | ||
1410 | (compare_dies, compare_as_decl_dies) | ||
1411 | (compare_as_type_dies, maybe_finish_function_decl_reading) | ||
1412 | (die_is_anonymous): Define new functions. | ||
1413 | (read_context::associate_die_to_decl): Remove the | ||
1414 | do_associate_by_repr_per_tu parameter. Use the new | ||
1415 | read_context::{decl_die_artefact_maps_, get_canonical_die} member | ||
1416 | functions. | ||
1417 | (read_context::lookup_decl_from_die_offset): Use Dwarf_Off rather | ||
1418 | than size_t for the type of the die_offset parameter. Use the | ||
1419 | lookup_artifact_from_die_offset member function. | ||
1420 | (read_context::lookup_type_artifact_from_die): Const-ify. In one | ||
1421 | overload, take a new 'die_as_type' parameter. Use the new | ||
1422 | get_canonical_die, type_die_artefact_maps and | ||
1423 | decl_die_artefact_maps member functions. In the second overload, | ||
1424 | use the first overload. | ||
1425 | (read_context::odr_is_relevant): Add an overload that takes a DIE. | ||
1426 | (read_context::associate_die_to_type): Remove the | ||
1427 | do_associate_by_repr and do_associate_per_tu parameters. Use the | ||
1428 | new get_canonical_die and type_die_artefact_maps member functions. | ||
1429 | (read_context::lookup_type_from_die): Use the new | ||
1430 | lookup_artifact_from_die member function. | ||
1431 | (read_context::lookup_type_from_die_offset): Use the new | ||
1432 | type_die_artefact_maps member function. When the found artifact | ||
1433 | is a function_decl, return its type. | ||
1434 | (read_context::schedule_type_for_late_canonicalization): Use the | ||
1435 | new get_canonical_die and type_die_artefact_maps member functions. | ||
1436 | (die_function_signature): Const-ify. Get the scope name right | ||
1437 | even for scopes that are not types. | ||
1438 | (die_member_offset): Make eval_last_constant_dwarf_sub_expr use | ||
1439 | the new cached DWARF expression evalution context. | ||
1440 | (get_parent_die): Support where_offset equals to zero. This means | ||
1441 | we are looking at a C binary, basically. | ||
1442 | (build_enum_type) : Use the new overload of | ||
1443 | read_context::odr_is_relevant that takes a DIE. Adjust. | ||
1444 | (add_or_update_union_type, add_or_update_class_type): Don't lookup | ||
1445 | classes/unions per location anymore. Now that we can compare DIEs | ||
1446 | in a fined grain manner, the approximation of the location is not | ||
1447 | useful anymore. | ||
1448 | (build_pointer_type) | ||
1449 | (build_function_type): Associate DIE to type if we reuse an | ||
1450 | existing type. | ||
1451 | (build_or_get_fn_decl_if_not_suppressed): When re-using a | ||
1452 | function decl internal representation from an equivalent DIE that | ||
1453 | we've seen before, it can happen that we want to augment that | ||
1454 | function decl internal representation with new properties coming | ||
1455 | from the DIE we are currently looking at; do that here. | ||
1456 | (is_function_for_die_a_member_of_class): Remove the "where_offset" | ||
1457 | parameter. | ||
1458 | (add_or_update_member_function): Adjust. | ||
1459 | * tests/data/test-annotate/libtest23.so.abi: Adjust. | ||
1460 | * tests/data/test-annotate/test13-pr18894.so.abi: Adjust. | ||
1461 | * tests/data/test-annotate/test14-pr18893.so.abi: Adjust. | ||
1462 | * tests/data/test-annotate/test15-pr18892.so.abi: Adjust. | ||
1463 | * tests/data/test-annotate/test17-pr19027.so.abi: Adjust. | ||
1464 | * tests/data/test-annotate/test18-pr19037-libvtkRenderingLIC-6.1.so.abi: Adjust. | ||
1465 | * tests/data/test-annotate/test19-pr19023-libtcmalloc_and_profiler.so.abi: Adjust. | ||
1466 | * tests/data/test-annotate/test20-pr19025-libvtkParallelCore-6.1.so.abi: Adjust. | ||
1467 | * tests/data/test-annotate/test21-pr19092.so.abi: Adjust. | ||
1468 | * 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. | ||
1469 | * 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. | ||
1470 | * 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. | ||
1471 | * 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. | ||
1472 | * tests/data/test-read-dwarf/libtest23.so.abi: Adjust. | ||
1473 | * tests/data/test-read-dwarf/test10-pr18818-gcc.so.abi: Adjust. | ||
1474 | * tests/data/test-read-dwarf/test11-pr18828.so.abi: Adjust. | ||
1475 | * tests/data/test-read-dwarf/test12-pr18844.so.abi: Adjust. | ||
1476 | * tests/data/test-read-dwarf/test13-pr18894.so.abi: Adjust. | ||
1477 | * tests/data/test-read-dwarf/test14-pr18893.so.abi: Adjust. | ||
1478 | * tests/data/test-read-dwarf/test15-pr18892.so.abi: Adjust. | ||
1479 | * tests/data/test-read-dwarf/test16-pr18904.so.abi: Adjust. | ||
1480 | * tests/data/test-read-dwarf/test17-pr19027.so.abi: Adjust. | ||
1481 | * tests/data/test-read-dwarf/test18-pr19037-libvtkRenderingLIC-6.1.so.abi: Adjust. | ||
1482 | * tests/data/test-read-dwarf/test19-pr19023-libtcmalloc_and_profiler.so.abi: Adjust. | ||
1483 | * tests/data/test-read-dwarf/test20-pr19025-libvtkParallelCore-6.1.so.abi: Adjust. | ||
1484 | * tests/data/test-read-dwarf/test21-pr19092.so.abi: Adjust. | ||
1485 | * tests/data/test-read-dwarf/test22-pr19097-libstdc++.so.6.0.17.so.abi: Adjust. | ||
1486 | * tests/data/test-read-dwarf/test9-pr18818-clang.so.abi: Adjust. | ||
1487 | |||
1488 | 2017-04-14 Dodji Seketeli <dodji@redhat.com> | ||
1489 | |||
1490 | Speedup access to unreferenced symbols when loading corpus_group | ||
1491 | * src/abg-corpus.cc (corpus_group::unrefed_{fun, var}_symbol_map): | ||
1492 | New data members. | ||
1493 | (corpus_group::priv::priv): Adjust. | ||
1494 | (corpus_group::priv::add_unref_{fun,var}_symbols): Define new | ||
1495 | member functions. | ||
1496 | (corpus_group::add_corpus): Update the map of unreferenced | ||
1497 | symbols. | ||
1498 | (corpus_group::get_unreferenced_{function,variable}_symbols) | ||
1499 | Adjust logic. | ||
1500 | |||
1501 | 2017-04-07 Dodji Seketeli <dodji@redhat.com> | ||
1502 | |||
1503 | Initial support of de-serializing the KMI of a Linux Kernel Tree | ||
1504 | * include/abg-libxml-utils.h (advance_to_next_sibling_element): | ||
1505 | Declare new function. | ||
1506 | * src/abg-libxml-utils.cc (go_to_next_sibling_element_or_stay) | ||
1507 | (advance_to_next_sibling_element): Define new functions. | ||
1508 | * include/abg-reader.h (read_corpus_group_from_input) | ||
1509 | (read_corpus_group_from_native_xml) | ||
1510 | (read_corpus_group_from_native_xml_file): Declare new functions. | ||
1511 | * src/abg-reader.cc (read_context::m_corpus_group): New data | ||
1512 | member. | ||
1513 | (read_context::{get_corpus_group, set_corpus_group}): Define new | ||
1514 | member functions. | ||
1515 | (read_translation_unit_from_input): Cleanup logic. | ||
1516 | (read_corpus_from_input): Don't assume that the document is | ||
1517 | starting with an 'abi-corpus' element. Support the mode where a | ||
1518 | caller called the xmlTextReaderExpand function (and so we are | ||
1519 | given an expanded xmlNodePtr) and the mode where we need to use | ||
1520 | the xmlTextReader API to walk through the 'abi-corpus' element. | ||
1521 | Also, if we are building a corpus group, do not clear what used to | ||
1522 | be 'per-corpus' data. That data must be shared by all the corpora | ||
1523 | of a given abi-corpus-group. | ||
1524 | (read_corpus_group_from_input, read_corpus_group_from_native_xml) | ||
1525 | (read_corpus_group_from_native_xml_file): Define new functions. | ||
1526 | * include/abg-tools-utils.h (FILE_TYPE_XML_CORPUS_GROUP): New | ||
1527 | enumerator of the file_type enum. | ||
1528 | * src/abg-tools-utils.cc (operator<<): In the overload for | ||
1529 | file_type, add a case for the new FILE_TYPE_XML_CORPUS_GROUP. | ||
1530 | (guess_file_type): Dectect abi-corpus-group xml element. | ||
1531 | * tools/abidiff.cc (adjust_diff_context_for_kmidiff): Define new | ||
1532 | static function. | ||
1533 | (main): Adjust to handle the new FILE_TYPE_XML_CORPUS_GROUP. That | ||
1534 | is, compare two FILE_TYPE_XML_CORPUS_GROUP if they are present. | ||
1535 | * tools/abilint.cc (main): Likewise. | ||
1536 | * tools/kmidiff.cc (main): Detect that one of two .kmi files are | ||
1537 | passed. In that case, load the .kmi file(s), build a corpus_group | ||
1538 | of it and use it in the comparison. | ||
1539 | |||
1540 | 2017-04-06 Dodji Seketeli <dodji@redhat.com> | ||
1541 | |||
1542 | Initial support of the serialization of the KMI of a Linux Kernel Tree | ||
1543 | * include/abg-tools-utils.h (check_dir) | ||
1544 | (get_binary_paths_from_kernel_dist) | ||
1545 | (build_corpus_group_from_kernel_dist_under): Declare new | ||
1546 | functions. The last two functions are being moved from | ||
1547 | tools/kmidiff.cc so that they can be re-used. | ||
1548 | * include/abg-writer.h (write_corpus): Declare one overload that | ||
1549 | takes a write_context parameter. | ||
1550 | (write_corpus_group): Declare three overloads of this new function. | ||
1551 | * src/abg-tools-utils.cc (check_dir): Define new function. | ||
1552 | (load_generate_apply_suppressions, is_vmlinux, is_kernel_module) | ||
1553 | (find_vmlinux_and_module_paths) | ||
1554 | (get_binary_paths_from_kernel_dist) | ||
1555 | (build_corpus_group_from_kernel_dist_under): Define new functions. | ||
1556 | * src/abg-writer.cc (write_context::set_annotate): Define new | ||
1557 | member function. | ||
1558 | (write_corpus): Add an overload that takes a write_context. Adapt | ||
1559 | the existing overload to make it use this new one. | ||
1560 | (write_corpus_group): Define this new function and two additional | ||
1561 | overloads for it. | ||
1562 | * tools/kmidiff.cc (set_suppressions, is_vmlinux) | ||
1563 | (is_kernel_module, find_vmlinux_and_module_paths) | ||
1564 | (get_binary_paths_from_kernel_dist) | ||
1565 | (build_corpus_group_from_kernel_dist_under): Remove. | ||
1566 | (main): Adjust the call to | ||
1567 | build_corpus_group_from_kernel_dist_under as its arguments are now | ||
1568 | adapted since it's been factorized out into abg-tools-utils.h. | ||
1569 | * tools/abidw.cc (options::corpus_group_for_linux): Define new | ||
1570 | data member. | ||
1571 | (options::options): Adjust. | ||
1572 | (display_usage): Add help strings for the new --linux-tree option. | ||
1573 | (load_corpus_and_write_abixml): Factorize this function out of the | ||
1574 | main function. | ||
1575 | (load_kernel_corpus_group_and_write_abixml): Define new function. | ||
1576 | (main): Use the factorized load_corpus_and_write_abixml and the | ||
1577 | new load_corpus_and_write_abixml functions. | ||
1578 | * tests/test-read-write.cc: Adjust. | ||
1579 | * doc/manuals/abidw.rst: Add documentation for the new | ||
1580 | --linux-tree option. | ||
1581 | |||
1582 | 2017-04-06 Dodji Seketeli <dodji@redhat.com> | ||
1583 | |||
1584 | Adjust test reference outputs after changes in abg-writer.cc | ||
1585 | * tests/data/test-annotate/test13-pr18894.so.abi: Adjust. | ||
1586 | * tests/data/test-annotate/test14-pr18893.so.abi: Adjust. | ||
1587 | * tests/data/test-annotate/test15-pr18892.so.abi: Adjust. | ||
1588 | * tests/data/test-annotate/test17-pr19027.so.abi: Adjust. | ||
1589 | * tests/data/test-annotate/test19-pr19023-libtcmalloc_and_profiler.so.abi: Adjust. | ||
1590 | * tests/data/test-read-dwarf/test13-pr18894.so.abi: Adjust. | ||
1591 | * tests/data/test-read-dwarf/test14-pr18893.so.abi: Adjust. | ||
1592 | * tests/data/test-read-dwarf/test15-pr18892.so.abi: Adjust. | ||
1593 | * tests/data/test-read-dwarf/test16-pr18904.so.abi: Adjust. | ||
1594 | * tests/data/test-read-dwarf/test17-pr19027.so.abi: Adjust. | ||
1595 | * tests/data/test-read-dwarf/test19-pr19023-libtcmalloc_and_profiler.so.abi: | ||
1596 | Adjust. | ||
1597 | |||
1598 | 2017-04-06 Dodji Seketeli <dodji@redhat.com> | ||
1599 | |||
1600 | Fix indentation glitch before the </abi-corpus> tag in abixml | ||
1601 | * src/abg-writer.cc (write_corpus): Indent before emitting the | ||
1602 | closing </abi-corpus> tag. | ||
1603 | |||
1604 | 2017-04-06 Dodji Seketeli <dodji@redhat.com> | ||
1605 | |||
1606 | Avoid emitting some empty translation units to abixml | ||
1607 | * src/abg-writer.cc (write_corpus): Do not emit a translation | ||
1608 | unit that appears empty beforehand. | ||
1609 | |||
1610 | 2017-04-06 Dodji Seketeli <dodji@redhat.com> | ||
1611 | |||
1612 | Avoid emitting duplicated decls in abixml | ||
1613 | * src/abg-writer.cc (write_context::m_emitted_decls_map): New data | ||
1614 | member. | ||
1615 | (write_context::{decl_name_is_emitted, record_decl_as_emitted}): | ||
1616 | Define new memeber functions. | ||
1617 | (write_translation_unit): Do not emit a decl that has already been | ||
1618 | emitted. | ||
1619 | (write_var_decl, write_function): Record the decl as emitted. | ||
1620 | |||
1621 | 2017-04-04 Dodji Seketeli <dodji@redhat.com> | ||
1622 | |||
1623 | Rename write_corpus_to_native_xml into write_corpus | ||
1624 | * include/abg-writer.h (write_corpus): Rename | ||
1625 | write_corpus_to_native_xml to this. | ||
1626 | * src/abg-writer.cc (write_corpus): Rename | ||
1627 | write_corpus_to_native_xml to this. | ||
1628 | * tests/test-read-dwarf.cc (test_task::perform): Adjust. | ||
1629 | * tests/test-read-write.cc: Remove a useless "using | ||
1630 | abigail::xml_writer::write_corpus_to_native_xml". | ||
1631 | * tools/abidw.cc (main): Adjust. | ||
1632 | * tools/abilint.cc (main): Adjust. | ||
1633 | |||
1634 | 2017-04-04 Dodji Seketeli <dodji@redhat.com> | ||
1635 | |||
1636 | Update the reference output of regression tests after kabidiff work | ||
1637 | * tests/data/test-annotate/test0.abi: Adjust. | ||
1638 | * tests/data/test-annotate/test13-pr18894.so.abi: Adjust. | ||
1639 | * tests/data/test-annotate/test14-pr18893.so.abi: Adjust. | ||
1640 | * tests/data/test-annotate/test15-pr18892.so.abi: Adjust. | ||
1641 | * tests/data/test-annotate/test17-pr19027.so.abi: Adjust. | ||
1642 | * tests/data/test-annotate/test18-pr19037-libvtkRenderingLIC-6.1.so.abi: Adjust. | ||
1643 | * tests/data/test-annotate/test19-pr19023-libtcmalloc_and_profiler.so.abi: Adjust. | ||
1644 | * tests/data/test-annotate/test20-pr19025-libvtkParallelCore-6.1.so.abi: Adjust. | ||
1645 | * tests/data/test-annotate/test21-pr19092.so.abi: Adjust. | ||
1646 | * tests/data/test-diff-filter/test30-pr18904-rvalueref-report1.txt: Adjust. | ||
1647 | * 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. | ||
1648 | * 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. | ||
1649 | * 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. | ||
1650 | * 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. | ||
1651 | * 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. | ||
1652 | * tests/data/test-read-dwarf/test0.abi: Adjust. | ||
1653 | * tests/data/test-read-dwarf/test10-pr18818-gcc.so.abi: Adjust. | ||
1654 | * tests/data/test-read-dwarf/test11-pr18828.so.abi: Adjust. | ||
1655 | * tests/data/test-read-dwarf/test12-pr18844.so.abi: Adjust. | ||
1656 | * tests/data/test-read-dwarf/test13-pr18894.so.abi: Adjust. | ||
1657 | * tests/data/test-read-dwarf/test14-pr18893.so.abi: Adjust. | ||
1658 | * tests/data/test-read-dwarf/test15-pr18892.so.abi: Adjust. | ||
1659 | * tests/data/test-read-dwarf/test16-pr18904.so.abi: Adjust. | ||
1660 | * tests/data/test-read-dwarf/test17-pr19027.so.abi: Adjust. | ||
1661 | * tests/data/test-read-dwarf/test18-pr19037-libvtkRenderingLIC-6.1.so.abi: Adjust. | ||
1662 | * tests/data/test-read-dwarf/test19-pr19023-libtcmalloc_and_profiler.so.abi: Adjust. | ||
1663 | * tests/data/test-read-dwarf/test20-pr19025-libvtkParallelCore-6.1.so.abi: Adjust. | ||
1664 | * tests/data/test-read-dwarf/test21-pr19092.so.abi: Adjust. | ||
1665 | * tests/data/test-read-dwarf/test22-pr19097-libstdc++.so.6.0.17.so.abi: Adjust. | ||
1666 | * tests/data/test-read-dwarf/test9-pr18818-clang.so.abi: Adjust. | ||
1667 | |||
1668 | 2017-06-12 Dodji Seketeli <dodji@redhat.com> | ||
1669 | |||
1670 | Introduce the --kmi-whitelist option to abidiff | ||
1671 | * doc/manuals/abidiff.rst: Add documentation for the | ||
1672 | --kmi-whitelist option. | ||
1673 | * tools/abidiff.cc (display_usage): Emit help string for the | ||
1674 | --kmi-whitelist option | ||
1675 | (parse_command_line): Parse the new --kmi-whitelist option, of the | ||
1676 | -w shortcut. | ||
1677 | |||
1678 | 2017-04-04 Dodji Seketeli <dodji@redhat.com> | ||
1679 | |||
1680 | Make abidw support the --kmi-whitelist option | ||
1681 | * tools/abidw.cc (options::{kabi_whitelist_paths, | ||
1682 | kabi_whitelist_supprs}): New data members. | ||
1683 | (display_usage): Add a help string for the new --kmi-whitelist | ||
1684 | option. | ||
1685 | (parse_command_line): Parse the new --kmi-whitelist option. | ||
1686 | (maybe_check_suppression_files): Check the presence of the linux | ||
1687 | kernel abi white list passed by the option --kmi-whitelist. | ||
1688 | (main): Ignore loading the symbol table if the kernel abi white | ||
1689 | list is provided. | ||
1690 | * doc/manuals/abidw.rst: Add documentation for the new option. | ||
1691 | |||
1692 | 2017-04-03 Dodji Seketeli <dodji@redhat.com> | ||
1693 | |||
1694 | Make abipkgdiff compare two kernel packages | ||
1695 | * include/abg-suppression.h | ||
1696 | (variable_suppression::variable_suppression): Add default arguments | ||
1697 | to the parameters. | ||
1698 | * include/abg-tools-utils.h (dir_exists, dir_is_empty) | ||
1699 | (string_begins_with, get_rpm_name, get_rpm_arch, get_deb_name) | ||
1700 | (file_is_kernel_package, file_is_kernel_debuginfo_package): | ||
1701 | Declare new functions. | ||
1702 | * src/abg-tools-utils.cc (dir_exists, dir_is_empty) | ||
1703 | (string_begins_with, get_deb_name, get_rpm_name, get_rpm_arch) | ||
1704 | (file_is_kernel_package, file_is_kernel_debuginfo_package): Define | ||
1705 | new functions. | ||
1706 | (gen_suppr_spec_from_kernel_abi_whitelist): The kernel ABI | ||
1707 | whitelist is made of ELF symbols names that ought to match | ||
1708 | functions *and* variables that have ELF symbols with those names. | ||
1709 | So generate variable suppression specifications as well. Not just | ||
1710 | function suppression specifications. | ||
1711 | * tools/abipkgdiff.cc (options::{kabi_whitelist_package, | ||
1712 | show_symbols_not_referenced_by_debug_info, kabi_whitelist_paths, | ||
1713 | kabi_suppressions}): New data members. | ||
1714 | (options::options): Adjust. | ||
1715 | (package::KIND_KABI_WHITELISTS): New enumerator in the | ||
1716 | package::kind enum. | ||
1717 | (package::kabi_whitelist_package_): New data member. | ||
1718 | (package::{base_name, kabi_whitelist_package, }): New member | ||
1719 | functions. | ||
1720 | (display_usage): Add a help string to the new | ||
1721 | --linux-kernel-abi-whitelist and --no-unreferenced-symbols | ||
1722 | options. | ||
1723 | (parse_command_line): Parse the new --no-unreferenced-symbols, | ||
1724 | --linux-kernel-abi-whitelist and --lkaw-pkg options. | ||
1725 | (maybe_check_suppression_files): Check the presence of kabi | ||
1726 | whitelist files. | ||
1727 | (set_diff_context_from_opts): Consider (not) showing symbols not | ||
1728 | referenced by debug info. | ||
1729 | (compare): If we are looking at linux kernel packages, take the | ||
1730 | kernel abi whitelist into account, apply the suppressions | ||
1731 | resulting from the kabi whitelists to the ELF read context. | ||
1732 | (maybe_collect_kabi_whitelists) | ||
1733 | (get_kabi_whitelists_from_arch_under_dir) | ||
1734 | (maybe_handle_kabi_whitelist_pkg, maybe_collect_kabi_whitelists) | ||
1735 | (get_interesting_files_under_dir): Define new functions. | ||
1736 | (maybe_update_vector_of_package_content): Take a new | ||
1737 | file_name_to_look_for parameter. | ||
1738 | (create_maps_of_package_content) | ||
1739 | (extract_package_and_map_its_content): Consider the case of the | ||
1740 | package being a linux kernel package. | ||
1741 | (main): Take the potential --lkaw-pkg into account. | ||
1742 | * doc/manuals/abipkgdiff.rst: Add documentation for options | ||
1743 | --linux-kernel-abi-whitelist, --lkaw-pkg and | ||
1744 | --no-unreferenced-symbols. | ||
1745 | |||
1746 | 2017-04-03 Dodji Seketeli <dodji@redhat.com> | ||
1747 | |||
1748 | Avoid loading a translation unit twice from abixml | ||
1749 | * src/abg-reader.cc (read_translation_unit): Take (in parameter) a | ||
1750 | reference as the resulting translation unit. | ||
1751 | (get_or_read_and_add_translation_unit): Define new static | ||
1752 | function. | ||
1753 | (read_context::get_scope_for_node) | ||
1754 | (read_translation_unit_from_input): Use the new | ||
1755 | get_or_read_and_add_translation_unit. | ||
1756 | |||
1757 | 2017-04-03 Dodji Seketeli <dodji@redhat.com> | ||
1758 | |||
1759 | Support loading and comparing two kernel trees | ||
1760 | * include/abg-dwarf-reader.h (set_read_context_corpus_group) | ||
1761 | (read_and_add_corpus_to_group_from_elf, set_ignore_symbol_table) | ||
1762 | (get_ignore_symbol_table): Declare new functions. | ||
1763 | * abg-dwarf-reader.cc (read_context::options_type): Define new | ||
1764 | type. | ||
1765 | (die_dependant_container_set::clear): Define new member function. | ||
1766 | (read_context::{bss, tesxt, rodata, data, data1}_section_): Add | ||
1767 | new data members. | ||
1768 | (read_context::{symbol_versionning_sections_loaded_, | ||
1769 | symbol_versionning_sections_found_}): Likewise. | ||
1770 | (read_context::corpus_group_): Likewise. | ||
1771 | (read_context::{load_in_linux_kernel_mode, load_all_types, | ||
1772 | show_stats, do_log_}): Replace these options by .. | ||
1773 | (read_context::options_): ... this instance of the new | ||
1774 | read_context:options_type. | ||
1775 | (read_context::read_context): Adjust. | ||
1776 | (read_context::{clear_alt_debug_info_data, clear_per_corpus_data, | ||
1777 | env, get_data_section_for_variable_address, load_all_types, | ||
1778 | load_in_linux_kernel_mode, show_stats, do_log}): Adjust. | ||
1779 | (create_read_context): Adjust. | ||
1780 | (read_context::~read_context): Define destructor. | ||
1781 | (read_context::{options, bss_section, text_section, | ||
1782 | rodata_section, data_section, data1_section, current_corpus_group, | ||
1783 | has_corpus_group, main_corpus_from_current_group, | ||
1784 | main_corpus_from_current_group, | ||
1785 | current_corpus_is_main_corpus_from_current_group, | ||
1786 | should_reuse_type_from_corpus_group}): Define new member | ||
1787 | functions. | ||
1788 | (read_context::get_die_qualified_type_name): Handle the name of | ||
1789 | the current translation unit. | ||
1790 | (read_context::load_symbol_maps): Really don't load (linux kernel | ||
1791 | specific) symbol maps if we were told to ignore the ELF symbol | ||
1792 | table. | ||
1793 | (set_ignore_symbol_table, get_ignore_symbol_table) | ||
1794 | (create_default_var_sym, create_default_fn_sym, add_symbol_to_map) | ||
1795 | (set_read_context_corpus_group) | ||
1796 | (read_and_add_corpus_to_group_from_elf): Define new functions. | ||
1797 | (build_type_decl, build_typedef_type, build_enum_type) | ||
1798 | (add_or_update_class_type) | ||
1799 | (add_or_update_union_type): Reuse the type being built, from the | ||
1800 | main corpus of the corpus group. | ||
1801 | (build_qualified_type): Cleanup logic. | ||
1802 | (build_var_decl, build_function_decl): Create a default symbol for | ||
1803 | the variable or function if we are supposed to ignore the symbol | ||
1804 | table of the current binary. Add that symbol to the symbol table | ||
1805 | that is created in the read context. | ||
1806 | (read_debug_info_into_corpus): Don't load the ELF symbol table | ||
1807 | information if we are asked to ignore the symbol table. But set | ||
1808 | the symbol table that we built artificially while loading | ||
1809 | functions and variables, into the ABI corpus being built. | ||
1810 | (read_context::maybe_adjust_var_sym_address): Adjust. | ||
1811 | (build_ir_node_from_die): Add ir node to its logical scope. For | ||
1812 | the C language, the scope of a type is the global scope. | ||
1813 | (read_corpus_from_elf): Don't load ELF properties if we were asked | ||
1814 | to avoid the ELF symbol table. | ||
1815 | * include/abg-comparison.h (compute_diff): Declare ... | ||
1816 | * src/abg-comparison.cc (compute_diff): ... an overload to compare | ||
1817 | corpus_group. | ||
1818 | * tools/kmidiff.cc: New tool. | ||
1819 | |||
1820 | 2017-03-31 Dodji Seketeli <dodji@redhat.com> | ||
1821 | |||
1822 | Initial support to lookup types per location | ||
1823 | * include/abg-fwd.h (get_name_of_qualified_type) | ||
1824 | (get_name_of_reference_to_type, lookup_basic_type_per_location) | ||
1825 | (lookup_class_type_per_location, lookup_union_type_per_location) | ||
1826 | (lookup_enum_type_per_location, lookup_typedef_type) | ||
1827 | (lookup_typedef_type_per_location, lookup_pointer_type) | ||
1828 | (lookup_reference_type, lookup_type_per_location) | ||
1829 | (lookup_type_through_translation_units) | ||
1830 | (lookup_type_from_translation_unit, odr_is_relevant): Declare new | ||
1831 | functions or new function overloads. | ||
1832 | * include/abg-ir.h (location::expand): Declare new member | ||
1833 | function. | ||
1834 | (type_maps::empty): Likewise. | ||
1835 | (operator|=): Declare an overload for qualified_type_def::CV. | ||
1836 | (get_string_representation_of_cv_quals) | ||
1837 | (get_name_of_qualified_type, lookup_qualified_type): Declare new functions. | ||
1838 | * src/abg-ir.cc (location::expand): Define new member function. | ||
1839 | (type_maps::empty): Likewise. | ||
1840 | (odr_is_relevant): Likewise. | ||
1841 | (get_string_representation_of_cv_quals) | ||
1842 | (get_name_of_reference_to_type, get_name_of_qualified_type) | ||
1843 | (lookup_union_type_per_location): Define new functions or overloads. | ||
1844 | (lookup_basic_type, lookup_enum_type, lookup_typedef_type) | ||
1845 | (lookup_qualified_type, lookup_pointer_type) | ||
1846 | (lookup_reference_type, lookup_type_from_translation_unit) | ||
1847 | (lookup_basic_type_per_location, lookup_basic_type_per_location) | ||
1848 | (lookup_class_type_per_location, lookup_class_type_per_location) | ||
1849 | (lookup_enum_type_per_location, lookup_enum_type_per_location) | ||
1850 | (lookup_typedef_type_per_location) | ||
1851 | (lookup_typedef_type_per_location, lookup_type_per_location): | ||
1852 | Define new overloads. | ||
1853 | (maybe_update_types_lookup_map) | ||
1854 | (maybe_update_types_lookup_map<class_decl>) | ||
1855 | (maybe_update_types_lookup_map<function_type>): Add a new | ||
1856 | use_type_name_as_key parameter. If it's false, then associates | ||
1857 | the type to its location rather than to its name. | ||
1858 | (maybe_update_types_lookup_map): In the overloads for type_decl, | ||
1859 | class_decl, union_decl, enum_type, typedef_decl, array_type_def, | ||
1860 | record the type in the lookup map per location, in addition to the | ||
1861 | per-name recording. | ||
1862 | (qualified_type_def::build_name): Use the new | ||
1863 | get_name_of_qualified_type. | ||
1864 | (qualified_type_def::get_cv_quals_string_prefix): Use the new | ||
1865 | get_string_representation_of_cv_quals. | ||
1866 | (operator|=): Define a new overload for qualified_type_def::CV. | ||
1867 | (pointer_type_def::get_qualified_name): Use the new | ||
1868 | get_name_of_pointer_to_type. | ||
1869 | (reference_type_def::get_qualified_name): Use the new | ||
1870 | get_name_of_reference_to_type. | ||
1871 | |||
1872 | 2017-03-30 Dodji Seketeli <dodji@redhat.com> | ||
1873 | |||
1874 | Create a Corpus Group API extension | ||
1875 | * include/abg-corpus.h (corpus::{find_translation_unit, | ||
1876 | get_type_per_loc_map}): Declare new member functions. | ||
1877 | (corpus::{get_architecture_name, is_empty}): Make these member functions | ||
1878 | const. | ||
1879 | (corpus::{get_sorted_fun_symbols, get_functions, get_variables, | ||
1880 | get_unreferenced_function_symbols, | ||
1881 | get_unreferenced_variable_symbols}): Make these member functions | ||
1882 | virtual. | ||
1883 | (class corpus_group): Declare a new type. | ||
1884 | * include/abg-fwd.h (corpus_sptr, corpus_group_sptr) | ||
1885 | (string_tu_map_type, istring_var_decl_ptr_map_type) | ||
1886 | (istring_function_decl_ptr_map_type): Define new typedefs. | ||
1887 | * src/abg-corpus-priv.h (corpus_priv::{path_tu_map, | ||
1888 | type_per_loc_map_}): Add new data members. | ||
1889 | * src/abg-corpus.cc (corpus_add): Complete the function comment. | ||
1890 | Assert that at most one translation unit of a given path can be | ||
1891 | added to the corpus. | ||
1892 | (corpus::{find_translation_unit, get_type_per_loc_map}): Define | ||
1893 | new member functions. | ||
1894 | (corpus::{get_architecture_name}): Make this member function | ||
1895 | const. | ||
1896 | (struct corpus_group::priv): Define new type. | ||
1897 | (corpus_group::{corpus_group, ~corpus_group, add_corpus, | ||
1898 | get_corpora, is_empty, get_functions, get_variables, | ||
1899 | get_var_symbol_map, get_fun_symbol_map, get_sorted_fun_symbols, | ||
1900 | get_sorted_var_symbols, get_unreferenced_function_symbols, | ||
1901 | get_unreferenced_variable_symbols}): Define member functions of | ||
1902 | the new corpus_group type. | ||
1903 | |||
1904 | 2017-07-03 Dodji Seketeli <dodji@redhat.com> | ||
1905 | |||
1906 | Fix some typos in abidiff.cc | ||
1907 | * tools/abidiff.cc (main): Fix typos. | ||
1908 | |||
1909 | 2017-07-03 Dodji Seketeli <dodji@redhat.com> | ||
1910 | |||
1911 | Avoid comparing kernel.img file from the grub2 package | ||
1912 | * default.abignore: Do not compare kernel.img files. | ||
1913 | |||
1914 | 2017-06-14 Dodji Seketeli <dodji@redhat.com> | ||
1915 | |||
1916 | Bug 21567 - Fedabipkgdiff matches build distro names too tightly | ||
1917 | * tools/fedabipkgdiff (get_distro_from_string): Define new function. | ||
1918 | (Brew.get_package_latest_build): Also consider builds which distro | ||
1919 | property is less than the expected distro string that we were | ||
1920 | given. | ||
1921 | |||
1922 | 2017-06-14 Sinny Kumari <sinny@redhat.com> | ||
1923 | |||
1924 | Check if return_codes list is empty in fedabipkgdiff | ||
1925 | * tools/fedabipkgdiff (run_abipkgdiff()): Check if | ||
1926 | return_codes list is empty | ||
1927 | |||
1928 | 2017-06-13 Dodji Seketeli <dodji@redhat.com> | ||
1929 | |||
1930 | Do not forget to erase temporary directories in abipkgdiff | ||
1931 | * tools/abipkgdiff.cc (maybe_erase_temp_dirs): Define new static | ||
1932 | function. | ||
1933 | (compare): Call the new maybe_erase_temp_dirs on all return | ||
1934 | points. | ||
1935 | |||
1936 | 2017-05-11 Ben Woodard <woodard@redhat.com> | ||
1937 | |||
1938 | Fix more clang build warnings | ||
1939 | * include/abg-ini.h (config::section::priv): Make this be a class, | ||
1940 | not a struct. | ||
1941 | * src/abg-dwarf-reader.cc (build_translation_unit_and_add_to_ir) | ||
1942 | (build_ir_node_from_die): Add parenthesis around assignment | ||
1943 | expressions inside conditional expression. | ||
1944 | * src/abg-suppression.cc (read_function_suppression): Likewise. | ||
1945 | |||
1946 | 2017-05-11 Ben Woodard <woodard@redhat.com> | ||
1947 | |||
1948 | Fix some clang compile problems | ||
1949 | * include/abg-comp-filter.h (class filter_base): Declare this as a | ||
1950 | struct. | ||
1951 | * include/abg-comparison.h (class filtering::filter_base): | ||
1952 | Likewise. | ||
1953 | (struct diff_traversable_base): Declare this as a class. | ||
1954 | * include/abg-ir.h (function_decl::parameter): Declare this before | ||
1955 | using it. | ||
1956 | * src/abg-corpus.cc | ||
1957 | (corpus::priv::build_unreferenced_symbols_tables): Add missing | ||
1958 | parenthesis around assignment expressions inside conditional | ||
1959 | expressions. | ||
1960 | |||
1961 | 2017-05-21 Sinny Kumari <sinny@redhat.com> | ||
1962 | |||
1963 | Add --self-compare option in fedabipkgdiff | ||
1964 | * bash-completion/fedabipkgdiff: Add new option --self-compare | ||
1965 | * tests/data/Makefile.am: Add new test file | ||
1966 | * tests/data/test-fedabipkgdiff/test7-self-compare-from-fc23-dbus-glib-report-0.txt: | ||
1967 | New reference output for testing ABI comparison on same package | ||
1968 | * tests/runtestfedabipkgdiff.py.in (FEDABIPKGDIFF_TEST_SPECS): | ||
1969 | Add test case for --self-compare | ||
1970 | * tools/fedabipkgdiff (build_commandline_args_parser()): Add | ||
1971 | new option --self-compare | ||
1972 | (generate_comparison_halves()): Find second comparision half in same | ||
1973 | package list while doing self-compare | ||
1974 | (self_compare_rpms_from_distro()): New function to perform ABI | ||
1975 | comparision on same pacakge | ||
1976 | (main()): Add if condition when --self-compare option is enabled | ||
1977 | |||
1978 | 2017-03-31 Dodji Seketeli <dodji@redhat.com> | ||
1979 | |||
1980 | Avoid building DIE -> parent DIE map when analyzing a C binary | ||
1981 | * include/abg-ir.h (global_scope_sptr): Make this be a share_ptr | ||
1982 | of scope_decl, not of global_scope. | ||
1983 | (translation_unit::get_global_scope): Return a reference to | ||
1984 | scope_decl_sptr. | ||
1985 | * src/abg-ir.cc (translation_unit::get_global_scope): Return a | ||
1986 | scope_decl not a global_scope. | ||
1987 | * src/abg-dwarf-reader.cc (read_context::nil_scope_): Add new data | ||
1988 | member. | ||
1989 | (read_context::{global_scope, nil_scope}): Define new member functions. | ||
1990 | (read_context::build_die_parent_maps): Do not build the map if we | ||
1991 | are looking at a C (or asm) translation unit. | ||
1992 | (get_scope_die, get_scope_for_die): If we are looking at a C | ||
1993 | translation unit then do return the global scope. | ||
1994 | |||
1995 | 2017-04-06 Dodji Seketeli <dodji@redhat.com> | ||
1996 | |||
1997 | Speed up access to the definition of a class declaration-only type | ||
1998 | * include/abg-ir.h | ||
1999 | (class_or_union::get_naked_definition_of_declaration): Declare a | ||
2000 | new member function. | ||
2001 | (class_decl::get_naked_definition_of_declaration): Likewise. | ||
2002 | * src/abg-ir.cc ({type_decl, qualified_type_def, | ||
2003 | array_type_def, enum_type_decl}::operator==): Use the | ||
2004 | get_naked_canonical_type and get_naked. | ||
2005 | (class_or_union::priv::naked_definition_of_declaration_): Define | ||
2006 | new data member. | ||
2007 | (class_or_union::priv::priv): Adjust to initialize the new data | ||
2008 | member. | ||
2009 | (class_or_union::get_naked_definition_of_declaration): Define new | ||
2010 | member function. | ||
2011 | ({class_or_union, class_decl}::operator==): Use the new | ||
2012 | get_naked_definition_of_declaration instead of | ||
2013 | get_definition_of_declaration. | ||
2014 | (equals): In the overload for class_or_union, do the same. | ||
2015 | (class_decl::get_naked_definition_of_declaration): Define new | ||
2016 | member function. | ||
2017 | (hash_type_or_decl): Likewise. | ||
2018 | |||
2019 | 2017-04-06 Dodji Seketeli <dodji@redhat.com> | ||
2020 | |||
2021 | Speedup comparison of decl-only classes | ||
2022 | * src/abg-ir.cc (equals): In the overload for class_decl, if we | ||
2023 | are looking at a decl-only class, then directly call the equals | ||
2024 | function for class_or_union. That one knows how to perform the | ||
2025 | comparison without calling the | ||
2026 | class_or_union::priv_->comparison_started function, in that case. | ||
2027 | |||
2028 | 2017-04-04 Dodji Seketeli <dodji@redhat.com> | ||
2029 | |||
2030 | Update the description of what abipkgdiff does | ||
2031 | * tools/abipkgdiff.cc: Update the description of the sequence of | ||
2032 | actions performed. | ||
2033 | |||
2034 | 2017-04-06 Dodji Seketeli <dodji@redhat.com> | ||
2035 | |||
2036 | Misc cleanups in abg-writer.cc | ||
2037 | * src/abg-writer.cc (class write_context): Fix indentation. | ||
2038 | (write_location, write_visibility, write_binding) | ||
2039 | (write_array_size_and_alignment, write_size_and_alignment): Fix | ||
2040 | these declarations to use the *_sptr typedefs rather than the | ||
2041 | explicit shared_ptr<*> types. | ||
2042 | (write_translation_unit): Fix comment. | ||
2043 | |||
2044 | 2017-05-10 Dodji Seketeli <dodji@redhat.com> | ||
2045 | |||
2046 | Don't consider changes to basic types as being redundant | ||
2047 | * include/abg-comparison.h (is_diff_of_basic_type) | ||
2048 | (has_basic_type_change_only): Declare these functions ... | ||
2049 | * src/abg-comparison.cc (is_diff_of_basic_type) | ||
2050 | (has_basic_type_change_only): ... and define them. | ||
2051 | (redundancy_marking_visitor::visit_begin): Use the new | ||
2052 | has_basic_type_change_only. | ||
2053 | * tests/data/test-diff-filter/libtest37-v0.so: New binary test input. | ||
2054 | * tests/data/test-diff-filter/libtest37-v1.so: Likewise. | ||
2055 | * tests/data/test-diff-filter/test37-report-0.txt: New test | ||
2056 | reference output. | ||
2057 | * tests/data/test-diff-filter/test37-v0.cc: Source code of the new | ||
2058 | binary test input. | ||
2059 | * tests/data/test-diff-filter/test37-v1.cc: Likewise. | ||
2060 | * tests/data/Makefile.am: Update to add the new test material to | ||
2061 | the source distribution. | ||
2062 | * tests/test-diff-filter.cc (in_out_spec): Add the new test input | ||
2063 | to this test harness. | ||
2064 | |||
2065 | 2017-05-10 Dodji Seketeli <dodji@redhat.com> | ||
2066 | |||
2067 | Rename fn_parm_diff::get_type_diff into fn_parm_diff::type_diff | ||
2068 | * include/abg-comparison.h (fn_parm_diff::type_diff): Renamed | ||
2069 | fn_parm_diff::get_type_diff intot his. | ||
2070 | * src/abg-comparison.cc (fn_parm_diff::type_diff): Likewise. | ||
2071 | (fn_parm_diff::report): Adjust. | ||
2072 | (redundancy_marking_visitor::visit_begin): Likewise. | ||
2073 | (is_diff_of_variadic_parameter): Likewise. | ||
2074 | |||
2075 | 2017-05-03 Dodji Seketeli <dodji@redhat.com> | ||
2076 | |||
2077 | Invalidate function and variable ID cache when invoking ::set_symbol | ||
2078 | * src/abg-ir.cc ({function, var}_decl::set_symbol): Invalidate the | ||
2079 | ID cache. | ||
2080 | |||
2081 | 2017-05-03 Dodji Seketeli <dodji@redhat.com> | ||
2082 | |||
2083 | Remove useless overloads of is_type | ||
2084 | * include/abg-fwd.h (is_type): Remove the overloads that take | ||
2085 | decl_base and type_base types. | ||
2086 | * src/abg-ir.cc (is_type): Likewise. | ||
2087 | |||
2088 | 2017-05-04 Dodji Seketeli <dodji@redhat.com> | ||
2089 | |||
2090 | Ensure build_qualified_type can return non-qualified types | ||
2091 | * src/abg-dwarf-reader.cc (build_qualified_type): Return a | ||
2092 | type_base_sptr. | ||
2093 | (build_ir_node_from_die): Adjust the call to build_qualified_type. | ||
2094 | |||
2095 | 2017-05-04 Dodji Seketeli <dodji@redhat.com> | ||
2096 | |||
2097 | Fix array subranges (wrongly) having the same lower bound | ||
2098 | * src/abg-dwarf-reader.cc (build_subranges_from_array_type_die): | ||
2099 | Consider the 'lower_bound' parameter as the default lower bound | ||
2100 | for each sub-ranges. | ||
2101 | |||
2102 | 2017-03-31 Dodji Seketeli <dodji@redhat.com> | ||
2103 | |||
2104 | Fix buffer overrun in 'equals' function for arrays | ||
2105 | * src/abg-ir.cc (equals): In the overload for arrays, check for | ||
2106 | the end of the subranges of the two arrays, not just for the first | ||
2107 | one. | ||
2108 | |||
2109 | 2017-04-18 Dodji Seketeli <dodji@redhat.com> | ||
2110 | |||
2111 | Fix a race condition in queue::priv::do_bring_workers_down | ||
2112 | * src/abg-workers.cc (queue::priv::tasks_todo_mutex): Make this | ||
2113 | data member mutable. | ||
2114 | (more_tasks_to_execute): | ||
2115 | (queue::priv::do_bring_workers_down): Update the | ||
2116 | queue::priv::bring_workers_down only in the critical section | ||
2117 | defined by queue::priv::queue_cond_mutex. | ||
2118 | (worker::wait_to_execute_a_task): Testing for | ||
2119 | queue::priv::bring_workers_down is done in the critical section | ||
2120 | defined by queue::priv::queue_cond_mutex. The loop over waiting | ||
2121 | ont the condition is also in the critical section, as it ought to | ||
2122 | be. | ||
2123 | * tests/test-read-write.cc (struct test_task): New type. | ||
2124 | (main): Express in terms of the new test_task type. | ||
2125 | |||
2126 | 2017-04-12 Ondrej Oprala <ondrej.oprala@gmail.com> | ||
2127 | |||
2128 | cppcheck: mitigate performance warnings | ||
2129 | * include/abg-diff-utils.h (print_snake): pass argument of type | ||
2130 | snake by const reference. | ||
2131 | * include/abg-ir.h (location::operator{==,<}): Likewise. | ||
2132 | * include/abg-viz-dot.h (node_base::{node_base,parent_node,child_node}): | ||
2133 | Likewise. | ||
2134 | * include/abg-viz-svg.h (svg::svg) Likewise. | ||
2135 | * src/abg-config.cc (config::config): Member initialization in ctor body. | ||
2136 | * src/abg-dwarf-reader.cc (class_decl_sptr::add_or_update_class_type): | ||
2137 | Initial value never used. | ||
2138 | * src/abg-ir.cc: (decl_base::priv::priv) Member initialization in ctor body, | ||
2139 | pass argument of type location by const reference. | ||
2140 | (equals): Variable initial value never used. | ||
2141 | * src/abg-reader.cc (read_corpus_from_input): Initial variable | ||
2142 | value never used. | ||
2143 | (build_elf_symbol_db): Use pre-increment. | ||
2144 | * src/abg-suppression-priv.h | ||
2145 | (suppression_matches_type_location): Pass argument of type | ||
2146 | location by const reference. | ||
2147 | * src/abg-suppression.cc: Likewise. | ||
2148 | |||
2149 | 2017-04-11 Ondrej Oprala <ondrej.oprala@gmail.com> | ||
2150 | |||
2151 | Fix cppcheck error: "Same iterator is used with different containers" | ||
2152 | * src/abg-dwarf-reader.cc | ||
2153 | (type_or_decl_base_sptr::lookup_artifact_from_per_tu_die_representation): | ||
2154 | Fix an error found by cppcheck. | ||
2155 | |||
2156 | 2017-04-11 Ondrej Oprala <ondrej.oprala@gmail.com> | ||
2157 | |||
2158 | Clean up scripts/* | ||
2159 | * scripts/dot_to_png.sh: Clean up the script according to | ||
2160 | shellcheck warnings and remarks. | ||
2161 | * scripts/dot_to_svg.sh: Likewise. | ||
2162 | * scripts/svg_to_plain_svg.sh: Likewise. | ||
2163 | * scripts/svg_to_png_and_pdf.sh: Likewise. | ||
2164 | |||
2165 | 2017-04-12 Ondrej Oprala <ondrej.oprala@gmail.com> | ||
2166 | |||
2167 | Fix comparison used instead of an assignment | ||
2168 | * src/abg-ir.cc (parse_integral_type): An attempt at clang | ||
2169 | compilation has discovered there to be a comparison with | ||
2170 | unused result, that apparently should be an assignment. | ||
2171 | |||
2172 | 2017-04-12 Dodji Seketeli <dodji@redhat.com> | ||
2173 | |||
2174 | Fix some random deadlock while running fedabipkgidiff in tests | ||
2175 | * tools/fedabipkgdiff (abipkgidff): Do not use Popen.communicate() | ||
2176 | as it might hang if the data is large. Rather, busy wait for the | ||
2177 | abipkgdiff process to finish and then get its output. | ||
2178 | |||
2179 | 2017-03-22 Slava Barinov <v.barinov@samsung.com> | ||
2180 | |||
2181 | Fix types in header to meet sources | ||
2182 | * include/abg-fwd.h: Include stdint.h for uint64_t. | ||
2183 | (ir::set_data_member_offset): Take uint64_t rather than size_t. | ||
2184 | (ir::get_data_member_offset): Return uint64_t rather than size_t. | ||
2185 | |||
2186 | 2017-03-24 Dodji Seketeli <dodji@redhat.com> | ||
2187 | |||
2188 | Launch fedabipkgdiff tests first | ||
2189 | * tests/Makefile.am: Run the fedabipkgdiff test first. | ||
2190 | |||
2191 | 2017-03-24 Dodji Seketeli <dodji@redhat.com> | ||
2192 | |||
2193 | Bug 21296 - Reporting diff of const ref against non-const ref aborts | ||
2194 | * include/abg-fwd.h (look_through_no_op_qualified_type): Declare | ||
2195 | new function. | ||
2196 | * src/abg-ir.cc (look_through_no_op_qualified_type): Define it. | ||
2197 | (compute_diff_for_types): Use the new | ||
2198 | look_through_no_op_qualified_type here rather than open-coding it. | ||
2199 | (equals): In the overload for function_decl::parameter, use the | ||
2200 | new look_through_no_op_qualified_type function. | ||
2201 | * tests/data/test-diff-dwarf/test40-PR21296-clanggcc.cc: Source | ||
2202 | code of the new test inputs. | ||
2203 | * tests/data/test-diff-dwarf/test40-PR21296-clanggcc-report0.txt: | ||
2204 | New test input. | ||
2205 | * tests/data/test-diff-dwarf/test40-PR21296-libgcc.so: New binary | ||
2206 | test input. | ||
2207 | * tests/data/test-diff-dwarf/test40-PR21296-libclang.so: Likewise. | ||
2208 | * tests/test-diff-dwarf.cc (in_out_specs): Add the new test inputs to | ||
2209 | the test harness. | ||
2210 | |||
2211 | 2017-03-05 Chenxiong Qi <cqi@redhat.com> | ||
2212 | |||
2213 | Bug 20087 - Clean cache before or after ABI comparison | ||
2214 | * configure.ac: Require shutil module. | ||
2215 | * doc/manuals/fedabipkgdiff.rst: Add document for new option | ||
2216 | clean-cache, clean-cache-before, and clean-cache-after. | ||
2217 | * tools/fedabipkgdiff (build_commandline_args_parser): Add new | ||
2218 | option --clean-cache, --clean-cache-before and | ||
2219 | --clean-cache-after. | ||
2220 | (diff_local_rpm_with_latest_rpm_from_koji): Delete download | ||
2221 | cache directory before or after downloading RPMs. | ||
2222 | (diff_latest_rpms_based_on_distros): Likewise. | ||
2223 | (diff_two_nvras_from_koji): Likewise. | ||
2224 | (diff_from_two_rpm_files): Likewise. | ||
2225 | * bash-completion/fedabipkgdiff: Add new options. | ||
2226 | * tests/mockfedabipkgdiff.in (get_download_dir): Rewrite to | ||
2227 | behave just like the original get_download_dir. | ||
2228 | (mock_get_download_dir): Removed. | ||
2229 | (DOWNLOAD_CACHE_DIR): New global variable pointing directory | ||
2230 | holding packages during tests. | ||
2231 | (run_fedabipkgdiff): Mock original get_download_dir with the | ||
2232 | rewrite get_download_dir. | ||
2233 | * tests/runtestfedabipkgdiff.py.in (run_fedabipkgdiff_tests): | ||
2234 | Add --clean-cache to run tests to ensure no regression. | ||
2235 | |||
2236 | 2017-03-17 Dodji Seketeli <dodji@redhat.com> | ||
2237 | |||
2238 | Shut down a helgrind false positive in the "system" libc call | ||
2239 | * tests/test-valgrind-suppressions.supp: Add a suppression that | ||
2240 | occurs during an internal libc signal handling occasion. | ||
2241 | |||
2242 | 2017-03-15 Dodji Seketeli <dodji@redhat.com> | ||
2243 | |||
2244 | Fix data race on worker::queue::priv::bring_workers_down | ||
2245 | * src/abg-workers.cc (worker::wait_to_execute_a_task): Protect the | ||
2246 | read of the queue::priv::bring_workers_down down variable with the | ||
2247 | queue::priv::tasks_todo_mutex. | ||
2248 | |||
2249 | 2017-03-07 Dodji Seketeli <dodji@redhat.com> | ||
2250 | |||
2251 | Bug 21228 - Handle cloning union member functions | ||
2252 | * include/abg-ir.h (class_or_union::add_member_function): Move the | ||
2253 | class_decl::add_member_function overload declaration into the | ||
2254 | class class_or_union class. | ||
2255 | (class class_decl): Make the class class_or_union be a friend of | ||
2256 | class_decl. | ||
2257 | * src/abg-ir.cc (class_decl::add_member_function): Transform the | ||
2258 | definition of this overload into ... | ||
2259 | (class_or_union::add_member_function): ... this one. Make sure | ||
2260 | that when setting the virtual-ness attributes of the member | ||
2261 | function, we are effectively looking at the a function that is a | ||
2262 | member of a class. | ||
2263 | (function_decl::clone): Do not assert that a member function is | ||
2264 | necessarily a member of a class_decl. It can also a member of a | ||
2265 | union_decl!. So, rather, assert that the scope of the member | ||
2266 | function is of type class_or_union. | ||
2267 | * tests/data/test-diff-pkg/tbb-2017-8.20161128.fc26.x86_64.rpm: | ||
2268 | New test input RPM. | ||
2269 | * tests/data/test-diff-pkg/tbb-2017-9.20170118.fc27.x86_64.rpm: | ||
2270 | * tests/data/test-diff-pkg/tbb-debuginfo-2017-8.20161128.fc26.x86_64.rpm: | ||
2271 | Likewise. | ||
2272 | * tests/data/test-diff-pkg/tbb-debuginfo-2017-9.20170118.fc27.x86_64.rpm: | ||
2273 | Likewise. | ||
2274 | * tests/data/test-diff-pkg/tbb-2017-8.20161128.fc26.x86_64--tbb-2017-9.20170118.fc27.x86_64.txt: | ||
2275 | New reference test output. | ||
2276 | * tests/data/Makefile.am: Add the new test input RPMs to the | ||
2277 | source distribution. | ||
2278 | * tests/test-diff-pkg.cc (in_out_specs): Take the new input tests | ||
2279 | above into account. | ||
2280 | |||
2281 | 2017-03-03 Dodji Seketeli <dodji@redhat.com> | ||
2282 | |||
2283 | Consider file path when sorting virtual member functions | ||
2284 | * src/abg-ir.cc (virtual_member_function_less_than::operator()): | ||
2285 | Take the file path into account in the sorting. | ||
2286 | * tests/data/test-read-dwarf/test22-pr19097-libstdc++.so.6.0.17.so.abi: | ||
2287 | Adjust. | ||
2288 | |||
2289 | 2017-03-03 Dodji Seketeli <dodji@redhat.com> | ||
2290 | |||
2291 | Fix virtual members sorting to unbreak the build on EL6 | ||
2292 | * src/abg-ir.cc (virtual_member_function_less_than::operator()): | ||
2293 | Update comment. When two virtual functions have the same virtual | ||
2294 | index and one of them has no ELF symbol, then that function is | ||
2295 | less than the one with an ELF symbol. | ||
2296 | * tests/data/Makefile.am: Remove | ||
2297 | test-annotate/{test9-pr18818-clang.so.abi, test11-pr18828.so.abi, | ||
2298 | test12-pr18844.so.abi, test16-pr18904.so.abi, | ||
2299 | test22-pr19097-libstdc++.so.6.0.17.so.abi}. | ||
2300 | * tests/data/test-annotate/test10-pr18818-gcc.so.abi: Remove. | ||
2301 | * tests/data/test-annotate/test11-pr18828.so.abi: Likewise. | ||
2302 | * tests/data/test-annotate/test12-pr18844.so.abi: Likewise. | ||
2303 | * tests/data/test-annotate/test16-pr18904.so.abi: Likewise. | ||
2304 | * tests/data/test-annotate/test22-pr19097-libstdc++.so.6.0.17.so.abi: | ||
2305 | Likewise. | ||
2306 | * tests/test-annotate.cc (in_out_specs): Remove those tests above | ||
2307 | which input files have been removed. | ||
2308 | |||
2309 | 2017-03-02 Dodji Seketeli <dodji@redhat.com> | ||
2310 | |||
2311 | Make Helgrind suppressions less specific to libgcc_s version | ||
2312 | * tests/test-valgrind-suppressions.supp: Make Helgrind | ||
2313 | suppressions less specific to libgcc_s version. | ||
2314 | |||
2315 | 2017-03-02 Dodji Seketeli <dodji@redhat.com> | ||
2316 | |||
2317 | More Helgrind suppressions | ||
2318 | * tests/test-valgrind-suppressions.supp: More specific suppressions. | ||
2319 | |||
2320 | 2017-03-02 Dodji Seketeli <dodji@redhat.com> | ||
2321 | |||
2322 | Silence Helgrind reports about exception stack unwinding | ||
2323 | * tests/test-valgrind-suppressions.supp: Silence Helgrind reports | ||
2324 | about exception stack unwinding. | ||
2325 | |||
2326 | 2017-03-01 Dodji Seketeli <dodji@redhat.com> | ||
2327 | |||
2328 | Make the helgrind suppressions less specific | ||
2329 | * tests/test-valgrind-suppressions.supp: Make the ostream writting | ||
2330 | suppressions be less specific so that they can apply to all the | ||
2331 | related false positives. | ||
2332 | |||
2333 | 2017-03-01 Dodji Seketeli <dodji@redhat.com> | ||
2334 | |||
2335 | Move test-read-dwarf.cc to abigail::workers | ||
2336 | * tests/test-read-dwarf.cc (iospec, spec_lock, write_lock) | ||
2337 | (out_abi_base, in_elf_base, in_abi_base): Remove these global | ||
2338 | variables. | ||
2339 | (handle_in_out_spec): Remove this. | ||
2340 | (struct test_task): Write this task that does what | ||
2341 | handle_in_out_spec was doing. | ||
2342 | (test_task_sptr): Define new typedef. | ||
2343 | (main): Remove the pthreads artifacts. Use the new test_task type | ||
2344 | along with the abigail::workers interface. | ||
2345 | * tests/test-valgrind-suppressions.supp: Add more helgrind | ||
2346 | suppressions for ostream writting false positives. | ||
2347 | |||
2348 | 2017-02-28 Dodji Seketeli <dodji@redhat.com> | ||
2349 | |||
2350 | Display the command that failed the runtestfedabipkgdiff.py test | ||
2351 | * tests/runtestfedabipkgdiff.py.in (run_fedabipkgdiff_tests): When | ||
2352 | A test fails, display the fedabipkgdiff command that triggered the failure. | ||
2353 | |||
2354 | 2017-02-24 Dodji Seketeli <dodji@redhat.com> | ||
2355 | |||
2356 | Make abipkgdiff.cc use the abigail::workers interface | ||
2357 | * tools/abipkgdiff.cc: Remove ftw.h, pthread.h, unistd.h, add | ||
2358 | fts.h and abg-workers.h. | ||
2359 | (verbose, elf_file_paths_tls_key, reports_map, env_map, map_lock) | ||
2360 | (arg_lock, prog_options): Remove all these global variables. | ||
2361 | (struct package_descriptor): Remove this type. | ||
2362 | (pthread_routine_extract_package) | ||
2363 | (first_package_tree_walker_callback_fn) | ||
2364 | (second_package_tree_walker_callback_fn, pthread_routine_compare) | ||
2365 | (pthread_join, pthread_routine_extract_pkg_and_map_its_content): | ||
2366 | Remove these functions. | ||
2367 | (options::{num_workers, verbose}): Define new data members. | ||
2368 | (options::options): Initialize the new verbose and num_workers data members. | ||
2369 | (package::erase_extraction_directory) | ||
2370 | (erase_created_temporary_directories_parent): Take the program | ||
2371 | options in parameter. Don't use the global verbose variable | ||
2372 | anymore. | ||
2373 | (package::erase_extraction_directories) | ||
2374 | (erase_created_temporary_directories, extract_package): Take the | ||
2375 | program options in parameter. | ||
2376 | (extract_rpm, extract_deb, extract_tar): Likewise. And don't use | ||
2377 | the global verbose variable anymore. | ||
2378 | (compare): Don't use the global verbose variable anymore. Use the | ||
2379 | new compare_task type along with the abigail::workers::queue type. | ||
2380 | (pkg_extraction_task, pkg_prepare_task, compare_task) | ||
2381 | (comparison_done_notify): Define new classes. | ||
2382 | (maybe_update_vector_of_package_content): Define new static | ||
2383 | function. | ||
2384 | (create_maps_of_package_content): Don't take the ftw_cp_type | ||
2385 | anymore. Don't use the global verbose variable anymore. Use the | ||
2386 | fts_{open,read,close} functions, rather than the ftw one. | ||
2387 | (extract_package_and_map_its_content): Don't use pthreads anymore. | ||
2388 | Use the new pkg_extraction_task type created along with the | ||
2389 | abigail::workers::queue type. | ||
2390 | (prepare_packages): Don't use pthreads anymore. Use the new | ||
2391 | pkg_prepare_task type along with the abigail::workers::queue type. | ||
2392 | (elf_size_is_greater): Adjust to use | ||
2393 | abigail::workers::queue::tasks, rather than the previous | ||
2394 | compaer_args_sptr type. | ||
2395 | (parse_command_line): Adjust to stop using the global verbose | ||
2396 | variable. | ||
2397 | (main): Remove use of global variables prog_options and also the | ||
2398 | packages variable. | ||
2399 | * tests/data/test-diff-pkg/dbus-glib-0.104-3.fc23.x86_64--dbus-glib-0.104-3.fc23.armv7hl-report-0.txt: | ||
2400 | Adjust. | ||
2401 | * tests/data/test-diff-pkg/dirpkg-0-report-0.txt: Likewise. | ||
2402 | * tests/data/test-diff-pkg/test-dbus-glib-0.80-3.fc12.x86_64-report-0.txt: | ||
2403 | Likewise. | ||
2404 | * tests/data/test-diff-pkg/test-rpm-report-0.txt: Likewise. | ||
2405 | * tests/data/test-diff-pkg/test-rpm-report-1.txt: Likewise. | ||
2406 | * tests/data/test-diff-pkg/test-rpm-report-2.txt: Likewise. | ||
2407 | * tests/data/test-diff-pkg/test-rpm-report-3.txt: Likewise. | ||
2408 | * tests/data/test-fedabipkgdiff/test0-from-fc20-to-fc23-dbus-glib-report-0.txt: | ||
2409 | Likewise. | ||
2410 | * tests/data/test-fedabipkgdiff/test1-from-fc20-to-dbus-glib-0.106-1.fc23.x86_64-report-0.txt: | ||
2411 | Likewise. | ||
2412 | * tests/data/test-fedabipkgdiff/test2-dbus-glib-0.100.2-2.fc20--dbus-glib-0.106-1.fc23-report-0.txt: | ||
2413 | Likewise. | ||
2414 | * tests/data/test-fedabipkgdiff/test3-dbus-glib-0.100.2-2.fc20.i686--dbus-glib-0.106-1.fc23.i686-report-0.txt: | ||
2415 | Likewise. | ||
2416 | * 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: | ||
2417 | Likewise. | ||
2418 | |||
2419 | 2017-02-24 Dodji Seketeli <dodji@redhat.com> | ||
2420 | |||
2421 | Do not ignore valgrind checks returning an error | ||
2422 | * autoconf-archive/ax_valgrind_check.m4 (check-valgrind): Don't | ||
2423 | ignore errors. | ||
2424 | |||
2425 | 2017-02-24 Dodji Seketeli <dodji@redhat.com> | ||
2426 | |||
2427 | Add a "make check-valgrind-helgrind-recursive" target | ||
2428 | * tests/Makefile.am (check-valgrind-helgrind-recursive): New | ||
2429 | target to run the tests recursively under the control of | ||
2430 | Valgrind's Helgrind tool. | ||
2431 | * tests/test-valgrind-suppressions.supp: Update this suppression | ||
2432 | file with suppressions for Helgrind. | ||
2433 | |||
2434 | 2017-02-24 Dodji Seketeli <dodji@redhat.com> | ||
2435 | |||
2436 | Several fixes and enhancements to abigail::workers | ||
2437 | * Don't try to schedule a task if the pointer to the task is nil | ||
2438 | * Fix a data race when bringing workers (of a queue) down | ||
2439 | * Always try to wake up all waiting threads when bringing down queue | ||
2440 | workers. | ||
2441 | * Fix a data race when accessing the queue condition variable | ||
2442 | * Fix a data race when notifying listeners about the end of the job | ||
2443 | performed by the task. | ||
2444 | Enhancements | ||
2445 | ============ | ||
2446 | * Pass the "task done" notifier by reference, to the worker queue. | ||
2447 | Without this, the worker queue needs to copy the "task done" notifier | ||
2448 | by value. This implies that user code needs to provide task done | ||
2449 | notifier instances that come with potentially complicated copy | ||
2450 | constructors. By passing it by reference and by just re-using the | ||
2451 | notifier from the user code, we do away with the need for copying | ||
2452 | altogether. This also fixes some latent copying bugs. | ||
2453 | * Add a workers::queue::schedule_tasks() method | ||
2454 | This allows user code to schedule a vector of tasks at once. | ||
2455 | * make workers::queue::get_completed_tasks() return a non-const vector | ||
2456 | This enables user code to sort the completed tasks as they wish. | ||
2457 | * include/abg-workers.h (queue::tasks_type): New typedef. | ||
2458 | (queue::queue): Pass task_done_notify by reference. | ||
2459 | (queue::schedule_tasks): Declare new member function. | ||
2460 | (queue::get_completed_tasks): Return non-const vector. | ||
2461 | * src/abg-workers.cc (queue::priv::default_notify): New data | ||
2462 | member. | ||
2463 | (queue::priv::notify): Make this data member be a reference. | ||
2464 | (queue::priv::priv): Initialize the notify data member to either | ||
2465 | the new default_notify (if no notifier is provided by the | ||
2466 | constructor) or to the notifier provided by the constructor. | ||
2467 | (queue::priv::schedule_task): Do not schedule a nil task. Update | ||
2468 | comment. | ||
2469 | (queue::priv::schedule_tasks): Add a new member function. | ||
2470 | (queue::priv::do_bring_workers_down): Update comment. Protect | ||
2471 | access to "bring_workers_down" with tasks_todo_mutex to prevent a | ||
2472 | data race. Call pthread_cond_broadcast on the queue_cond | ||
2473 | unconditionaly to prevent some worker threads to keep waiting for | ||
2474 | ever. Also, protect the access to the queue_cond by the | ||
2475 | queue_cond_mutex to precent a data race. | ||
2476 | (queue::queue): Pass the notifier by reference. Update comment. | ||
2477 | (queue::schedule_task): Update comment. | ||
2478 | (queue::schedule_tasks): Define new member function. | ||
2479 | (queue::wait_for_workers_to_complete): Update comment. | ||
2480 | (queue::get_completed_tasks): Return a non-const vector. Update | ||
2481 | comment. | ||
2482 | (worker::wait_to_execute_a_task): Update several comments. Make | ||
2483 | the execution of the notification code to be synchronized (on the | ||
2484 | tasks_done_mutex). | ||
2485 | |||
2486 | 2017-02-14 Dodji Seketeli <dodji@redhat.com> | ||
2487 | |||
2488 | Fix typo in help string of abipkgdiff | ||
2489 | * tools/abipkgdiff.cc (display_usage): Remove erroneous end line. | ||
2490 | |||
2491 | 2017-01-23 Dodji Seketeli <dodji@redhat.com> | ||
2492 | |||
2493 | fedabipkgdiff refuses to compare packages with the same release number | ||
2494 | * tools/fedabipkgdiff (RPM.is_peer): Update comment. Fix logic. | ||
2495 | * tests/data/test-fedabipkgdiff/packages/vte291/0.39.1/1.fc22/x86_64/vte291-0.39.1-1.fc22.x86_64.rpm: | ||
2496 | New test input file. | ||
2497 | * tests/data/test-fedabipkgdiff/packages/vte291/0.39.1/1.fc22/x86_64/vte291-debuginfo-0.39.1-1.fc22.x86_64.rpm: Likewise. | ||
2498 | * tests/data/test-fedabipkgdiff/packages/vte291/0.39.1/1.fc22/x86_64/vte291-devel-0.39.1-1.fc22.x86_64.rpm: Likewise. | ||
2499 | * tests/data/test-fedabipkgdiff/packages/vte291/0.39.90/1.fc22/x86_64/vte291-0.39.90-1.fc22.x86_64.rpm: Likewise. | ||
2500 | * tests/data/test-fedabipkgdiff/packages/vte291/0.39.90/1.fc22/x86_64/vte291-debuginfo-0.39.90-1.fc22.x86_64.rpm: Likewise. | ||
2501 | * tests/data/test-fedabipkgdiff/packages/vte291/0.39.90/1.fc22/x86_64/vte291-devel-0.39.90-1.fc22.x86_64.rpm: | ||
2502 | Likewise. | ||
2503 | * tests/data/test-fedabipkgdiff/vte291-0.39.1-1.fc22.x86_64--vte291-0.39.90-1.fc22.x86_64-report-0.txt: Likewise. | ||
2504 | * tests/data/Makefile.am: Add the new test input data to source | ||
2505 | distribution. | ||
2506 | * tests/mockfedabipkgdiff.in: Update the package and build | ||
2507 | information to add the new vte291-0.39.1-1.fc22.x86_64.rpm and | ||
2508 | vte291-0.39.90-1.fc22.x86_64.rpm packages (as well as their devel | ||
2509 | and debuginfo packages) into the "mock" Koji build database. | ||
2510 | * tests/runtestfedabipkgdiff.py.in: Make this test harness run | ||
2511 | over the two aforementioned packages. | ||
2512 | |||
2513 | 2017-01-24 Dodji Seketeli <dodji@redhat.com> | ||
2514 | |||
2515 | Add missing tests input files to distribution files | ||
2516 | * tests/data/Makefile.am: Add three missing test input files to | ||
2517 | the source distribution tarball. Renamed | ||
2518 | 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 | ||
2519 | into | ||
2520 | 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. | ||
2521 | * tests/runtestfedabipkgdiff.py.in (FEDABIPKGDIFF_TEST_SPECS): | ||
2522 | Renamed | ||
2523 | 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 | ||
2524 | into | ||
2525 | test6-nss-util-3.12.6-1.fc14.x86_64--nss-util-3.24.0-2.0.fc25.x86_64-report-0.txt. | ||
2526 | |||
2527 | 2017-01-24 Dodji Seketeli <dodji@redhat.com> | ||
2528 | |||
2529 | Add missing new line to an error message of runtestfedabipkgdiff.py | ||
2530 | * tests/runtestfedabipkgdiff.py.in (run_fedabipkgdiff_tests): Add | ||
2531 | missing new line to an error message. | ||
2532 | |||
2533 | 2017-01-24 Dodji Seketeli <dodji@redhat.com> | ||
2534 | |||
2535 | Fix silent failure of tests/runtestfedabipkgdiff.py | ||
2536 | * tests/mockfedabipkgdiff.in (run_fedabipkgdiff): Patch | ||
2537 | fedabipkgdiff.DEFAULT_KOJI_TOPURL instead of | ||
2538 | fedabipkgdiff.DEFAULT_KOJI_TOPDIR. | ||
2539 | * tests/runtestfedabipkgdiff.py.in (main): Properly return 0 upon | ||
2540 | success, 1 otherwise. | ||
2541 | |||
2542 | 2017-01-14 Dodji Seketeli <dodji@redhat.com> | ||
2543 | |||
2544 | Misc style fixes | ||
2545 | * include/abg-ir.h (class_or_union): Fix indentation. | ||
2546 | * src/abg-dwarf-reader.cc (get_die_pretty_representation): Add new | ||
2547 | line. | ||
2548 | * src/abg-ir.cc (struct class_decl::priv): Fix indentation. | ||
2549 | (virtual_member_function_less_than::operator()): Fix a typo in a | ||
2550 | comment. | ||
2551 | |||
2552 | 2017-01-13 Dodji Seketeli <dodji@redhat.com> | ||
2553 | |||
2554 | Bug 20476 - Compare virtual member functions when comparing classes | ||
2555 | * include/abg-ir.h (class_decl::get_biggest_vtable_offset): | ||
2556 | Declare new member function. | ||
2557 | * src/abg-ir.cc (virtual_member_function_less_than::operator()): | ||
2558 | Either compare the symbol id strings if the functions have | ||
2559 | symbols or just compare their pretty representations. | ||
2560 | (class_decl::get_biggest_vtable_offset): Define new member | ||
2561 | function. | ||
2562 | (methods_equal_modulo_elf_symbol) | ||
2563 | (method_matches_at_least_one_in_vector): New static methods. | ||
2564 | (equals): In the overload for classes, compare the virtual member | ||
2565 | functions while comparing classes. | ||
2566 | * src/abg-comparison.cc (represent): In the overload for | ||
2567 | method_decl_sptr, fix the way we compute the highest vtable offset | ||
2568 | number for a give class_decl. | ||
2569 | (class_decl::ensure_lookup_tables_populated): Don't forget added | ||
2570 | and removed virtual member functions in the report for changed | ||
2571 | classes. | ||
2572 | * tests/data/test-diff-dwarf/libtest41-PR20476-hidden-old.so: New | ||
2573 | test binary input file. | ||
2574 | * tests/data/test-diff-dwarf/libtest41-PR20476-hidden-new.so: Likewise. | ||
2575 | * tests/data/test-diff-dwarf/test41-PR20476-hidden-report-0.txt: | ||
2576 | New reference output. | ||
2577 | * tests/data/Makefile.am: Add the new test material above to the | ||
2578 | source distribution. | ||
2579 | * tests/test-diff-dwarf.cc (in_out_spec): Add the new tests | ||
2580 | here. | ||
2581 | * tests/data/test-annotate/test10-pr18818-gcc.so.abi: Adjust. | ||
2582 | * tests/data/test-annotate/test11-pr18828.so.abi: Adjust. | ||
2583 | * tests/data/test-annotate/test18-pr19037-libvtkRenderingLIC-6.1.so.abi: Adjust. | ||
2584 | * tests/data/test-annotate/test20-pr19025-libvtkParallelCore-6.1.so.abi: Adjust. | ||
2585 | * tests/data/test-annotate/test22-pr19097-libstdc++.so.6.0.17.so.abi: Adjust. | ||
2586 | * tests/data/test-read-dwarf/test10-pr18818-gcc.so.abi: Adjust. | ||
2587 | * tests/data/test-read-dwarf/test11-pr18828.so.abi: Adjust. | ||
2588 | * tests/data/test-read-dwarf/test13-pr18894.so.abi: Adjust. | ||
2589 | * tests/data/test-read-dwarf/test14-pr18893.so.abi: Adjust. | ||
2590 | * tests/data/test-read-dwarf/test15-pr18892.so.abi: Adjust. | ||
2591 | * tests/data/test-read-dwarf/test18-pr19037-libvtkRenderingLIC-6.1.so.abi: | ||
2592 | Adjust. | ||
2593 | * tests/data/test-read-dwarf/test20-pr19025-libvtkParallelCore-6.1.so.abi: | ||
2594 | Adjust. | ||
2595 | * tests/data/test-read-dwarf/test21-pr19092.so.abi: Adjust. | ||
2596 | * tests/data/test-read-dwarf/test22-pr19097-libstdc++.so.6.0.17.so.abi: | ||
2597 | Adjust. | ||
2598 | |||
2599 | 2017-02-14 Dodji Seketeli <dodji@redhat.com> | ||
2600 | |||
2601 | Fix indentation in src/abg-writer.cc | ||
2602 | * src/abg-writer.cc (annotate): Fix indentation. | ||
2603 | |||
2604 | 2017-02-13 Dodji Seketeli <dodji@redhat.com> | ||
2605 | |||
2606 | Adjust reference output of test-annotate | ||
2607 | * tests/data/test-annotate/test15-pr18892.so.abi: Adjust this | ||
2608 | reference output. | ||
2609 | |||
2610 | 2017-02-13 Dodji Seketeli <dodji@redhat.com> | ||
2611 | |||
2612 | Fix help string for --header-dirs | ||
2613 | * tools/abidw.cc (display_usage): Fix patch -> path typo. | ||
2614 | |||
2615 | 2017-02-13 Dodji Seketeli <dodji@redhat.com> | ||
2616 | |||
2617 | Make abidw --headers-dir work with the --out-file option | ||
2618 | * tools/abidw.cc (parse_command_line): Don't require an empty | ||
2619 | output file when parsing the --headers-dir option. This was a | ||
2620 | thinko. | ||
2621 | |||
2622 | 2017-01-17 Ondrej Oprala <ondrej.oprala@gmail.com> | ||
2623 | |||
2624 | Bug 20970 - Add a --annotate option to abidw | ||
2625 | * doc/manuals/abidiff.rst: Document the '--no-corpus-path' | ||
2626 | option. | ||
2627 | * doc/manuals/abidw.rst: Document the '--no-corpus-path' | ||
2628 | and '--annotate' options. | ||
2629 | * include/abg-libxml-utils.h ({un,}escape_xml_comment): Add | ||
2630 | new function declarations. | ||
2631 | * include/abg-writer.h: Add new annotate functions | ||
2632 | (write_{translation_unit,corpus_to_{archive,native_xml_file}}): | ||
2633 | Add an optional "annotate" parameter defaulting to "false". | ||
2634 | * src/abg-libxml-utils.cc ({un,}escape_xml_comment): Add | ||
2635 | new function definitions. | ||
2636 | * src/abg-writer.cc (annotate): Define new templatized function | ||
2637 | and specialize it for necessary cases. | ||
2638 | * tests/Makefile.am: Add runtestannotate as a new test. | ||
2639 | * tests/data/Makefile.am: Add paths to below reference test | ||
2640 | outputs. | ||
2641 | * tests/data/test-annotate/libtest23.so.abi: New reference test | ||
2642 | output. | ||
2643 | * tests/data/test-annotate/libtest24-drop-fns-2.so.abi: Likewise. | ||
2644 | * tests/data/test-annotate/libtest24-drop-fns.so.abi: Likewise. | ||
2645 | * tests/data/test-annotate/test0.abi: Likewise. | ||
2646 | * tests/data/test-annotate/test1.abi: Likewise. | ||
2647 | * tests/data/test-annotate/test10-pr18818-gcc.so.abi: Likewise. | ||
2648 | * tests/data/test-annotate/test11-pr18828.so.abi: Likewise. | ||
2649 | * tests/data/test-annotate/test12-pr18844.so.abi: Likewise. | ||
2650 | * tests/data/test-annotate/test13-pr18894.so.abi: Likewise. | ||
2651 | * tests/data/test-annotate/test14-pr18893.so.abi: Likewise. | ||
2652 | * tests/data/test-annotate/test15-pr18892.so.abi: Likewise. | ||
2653 | * tests/data/test-annotate/test16-pr18904.so.abi: Likewise. | ||
2654 | * tests/data/test-annotate/test17-pr19027.so.abi: Likewise. | ||
2655 | * tests/data/test-annotate/test18-pr19037-libvtkRenderingLIC-6.1.so.abi: Likewise. | ||
2656 | * tests/data/test-annotate/test19-pr19023-libtcmalloc_and_profiler.so.abi: Likewise. | ||
2657 | * tests/data/test-annotate/test2.so.abi: Likewise. | ||
2658 | * tests/data/test-annotate/test20-pr19025-libvtkParallelCore-6.1.so.abi: Likewise. | ||
2659 | * tests/data/test-annotate/test21-pr19092.so.abi: Likewise. | ||
2660 | * tests/data/test-annotate/test22-pr19097-libstdc++.so.6.0.17.so.abi: Likewise. | ||
2661 | * tests/data/test-annotate/test3.so.abi: Likewise. | ||
2662 | * tests/data/test-annotate/test4.so.abi: Likewise. | ||
2663 | * tests/data/test-annotate/test5.o.abi: Likewise. | ||
2664 | * tests/data/test-annotate/test6.so.abi: Likewise. | ||
2665 | * tests/data/test-annotate/test7.so.abi: Likewise. | ||
2666 | * tests/data/test-annotate/test8-qualified-this-pointer.so.abi: Likewise. | ||
2667 | * tests/data/test-annotate/test9-pr18818-clang.so.abi: Likewise. | ||
2668 | * tests/test-annotate.cc: New test for ABIXML annotations. | ||
2669 | * tools/abidiff.cc: Add the new option '--no-corpus-path'. | ||
2670 | * tools/abidw.cc: Likewise. Also add the '--annotate' option. | ||
2671 | reviews round 1 | ||
2672 | |||
2673 | 2017-01-20 Dodji Seketeli <dodji@redhat.com> | ||
2674 | |||
2675 | Fix test-diff-pkg after commit 2dcc606 | ||
2676 | * tests/test-diff-pkg.cc (in_out_specs): Fix paths to spice-server | ||
2677 | packages. | ||
2678 | |||
2679 | 2017-01-20 Dodji Seketeli <dodji@redhat.com> | ||
2680 | |||
2681 | Add --harmless option to abipkgdiff | ||
2682 | * doc/manuals/abidiff.rst: Fix a typo. | ||
2683 | * doc/manuals/abipkgdiff.rst: Document the --harmless option. | ||
2684 | * tools/abipkgdiff.cc: Update copyright year. | ||
2685 | (options::show_harmless_changes): Add new data member. | ||
2686 | (options::options): Initialize the new data member. | ||
2687 | (display_usage): Add a help string for the new --harmless option. | ||
2688 | (parse_command_line): Parse the new --harmless option. | ||
2689 | (set_diff_context_from_opts): Configure the diff context | ||
2690 | accordingly, if the user provided the --harmless option. | ||
2691 | |||
2692 | 2017-01-20 Dodji Seketeli <dodji@redhat.com> | ||
2693 | |||
2694 | Fix suppression category propagation in diff node graph | ||
2695 | * include/abg-comparison.h (diff::get_class_of_equiv_category): | ||
2696 | Declare new member function. | ||
2697 | * src/abg-comparison.cc: Update copyright year. | ||
2698 | (diff::get_class_of_equiv_category): Define new member function. | ||
2699 | (suppression_categorization_visitor::visit_end): When considering | ||
2700 | children nodes category for propagation, consider the category of | ||
2701 | the class of equivalence of children nodes. | ||
2702 | * spice-debuginfo-0.12.4-19.el7.x86_64.rpm: New input test package. | ||
2703 | * spice-debuginfo-0.12.8-1.el7.x86_64.rpm: Likewise. | ||
2704 | * spice-server-0.12.4-19.el7.x86_64.rpm: Likewise. | ||
2705 | * spice-server-0.12.8-1.el7.x86_64.rpm: Likewise. | ||
2706 | * spice-server-devel-0.12.4-19.el7.x86_64.rpm: Likewise. | ||
2707 | * spice-server-devel-0.12.8-1.el7.x86_64.rpm: Likewise. | ||
2708 | * spice-server-0.12.4-19.el7.x86_64-0.12.8-1.el7.x86_64-report-0.txt: | ||
2709 | New reference test output. | ||
2710 | * spice-server-0.12.4-19.el7.x86_64-0.12.8-1.el7.x86_64-report-1.txt: Likewise. | ||
2711 | * spice-server-0.12.4-19.el7.x86_64-0.12.8-1.el7.x86_64-report-2.txt: Likewise. | ||
2712 | * tests/data/Makefile.am: Add the new test material above to | ||
2713 | source distribution. | ||
2714 | * tests/test-diff-pkg.cc (in_out_specs): Add the new test inputs | ||
2715 | to the list of packages to test. | ||
2716 | |||
2717 | 2017-01-18 Dodji Seketeli <dodji@redhat.com> | ||
2718 | |||
2719 | Bug 21058 - abipkgdiff wrongly drops non-public types | ||
2720 | * doc/manuals/abidiff.rst (--dont-drop-private-types): Remove documentation. | ||
2721 | (--drop-private-types): Document this new option. | ||
2722 | * src/abg-tools-utils.cc: Update copyright notice | ||
2723 | (handle_fts_entry): On the generated suppression specification, do | ||
2724 | not set the flag to drop matched types. Also, don't match types | ||
2725 | defined in files which patch start with "/usr/include/". | ||
2726 | * tools/abidiff.cc (options::options): Initialize the | ||
2727 | drop_private_types data member to false. | ||
2728 | (display_usage): Remove usage string for | ||
2729 | --dont-drop-private-types. Add a new one for | ||
2730 | --drop-private-types. | ||
2731 | (parse_command_line): Don't part --dont-drop-private-types, | ||
2732 | rather, parse --drop-private-types. | ||
2733 | (set_suppressions): When the suppression for private types is | ||
2734 | generated, if --drop-private-types was provided, then instruct the | ||
2735 | suppression to drop matched types. | ||
2736 | * tools/abipkgdiff.cc (options::drop_private_types): New option. | ||
2737 | (options::options): Initialize the new drop_private_types data | ||
2738 | member to false. | ||
2739 | (display_usage): Add a usage string for --drop-private-types. | ||
2740 | (parse_command_line): Parse the new --drop-private-types option. | ||
2741 | (maybe_create_private_types_suppressions): Don't take just a | ||
2742 | package, but a package_descriptor because the latter carries the | ||
2743 | options. So when the user used the --drop-private-types option, | ||
2744 | make the generated private types suppression to drop matched | ||
2745 | types. | ||
2746 | * tests/data/test-diff-pkg/tbb-4.1-9.20130314.fc22.x86_64--tbb-4.3-3.20141204.fc23.x86_64-report-1.txt: | ||
2747 | Adjust. | ||
2748 | * tests/test-diff-suppr.cc (in_out_specs): Likewise. | ||
2749 | |||
2750 | 2017-01-18 Dodji Seketeli <dodji@redhat.com> | ||
2751 | |||
2752 | Fix some include logic in abg-suppression.cc | ||
2753 | * src/abg-suppression.cc: Update copyright notice. Fix include | ||
2754 | files logic. | ||
2755 | |||
2756 | 2017-01-16 Dodji Seketeli <dodji@redhat.com> | ||
2757 | |||
2758 | Support virtual member functions with vtable offset not yet set | ||
2759 | * include/abg-fwd.h (member_function_has_vtable_offset): Declare | ||
2760 | new function. | ||
2761 | (get_member_function_vtable_offset): Return a ssize_t, not a | ||
2762 | size_t. | ||
2763 | (set_member_function_vtable_offset): Take a ssize_t, not a size_t. | ||
2764 | * include/abg-ir.h (class_decl::virtual_mem_fn_map_type): Adjust | ||
2765 | the map typedef to make it take ssize_t as the type of the key. | ||
2766 | (mem_fn_context_rel::vtable_offset_in_bits_): Make this data | ||
2767 | member be of ssize_t type, not size_t. | ||
2768 | (mem_fn_context_rel::mem_fn_context_rel): Initialize the | ||
2769 | vtable_offset_in_bits_ data member to -1. | ||
2770 | * src/abg-ir.cc (member_function_has_vtable_offset): Define new | ||
2771 | function. | ||
2772 | (get_member_function_vtable_offset): Return a ssize_t, not a | ||
2773 | size_t. | ||
2774 | (set_member_function_vtable_offset): Take a ssize_t, not a size_t. | ||
2775 | * src/abg-dwarf-reader.cc (die_virtual_function_index): Take an | ||
2776 | int64_t& rather than a uint64_t&. | ||
2777 | (finish_member_function_reading): Don't set the vtable offset if | ||
2778 | it's -1. | ||
2779 | * src/abg-reader.cc (build_class_decl): Likewise. | ||
2780 | |||
2781 | 2017-01-14 Dodji Seketeli <dodji@redhat.com> | ||
2782 | |||
2783 | [comparison engine] Don't crash when the context is null | ||
2784 | * src/abg-comparison.cc | ||
2785 | (RETURN_IF_BEING_REPORTED_OR_WAS_REPORTED_EARLIER): Guard against | ||
2786 | null context. | ||
2787 | (diff::is_filtered_out): Likewise. | ||
2788 | |||
2789 | 2017-01-14 Dodji Seketeli <dodji@redhat.com> | ||
2790 | |||
2791 | [dwarf reader] Don't abort when trying to canonicalize a non-type | ||
2792 | * src/abg-dwarf-reader.cc (maybe_canonicalize_type): Don't abort | ||
2793 | when trying to canonicalize a decl. | ||
2794 | |||
2795 | 2017-01-14 Dodji Seketeli <dodji@redhat.com> | ||
2796 | |||
2797 | [dwarf reader] properly separate function decls and types in lookup | ||
2798 | * src/abg-dwarf-reader.cc | ||
2799 | (read_context::associate_die_to_artifact_by_repr_internal): | ||
2800 | Choose the right type of representation depending on if we are | ||
2801 | associating a type or a decl. | ||
2802 | * tests/data/test-diff-filter/test31-pr18535-libstdc++-report-0.txt: Adjust. | ||
2803 | * tests/data/test-diff-filter/test31-pr18535-libstdc++-report-1.txt: Adjust. | ||
2804 | * tests/data/test-read-dwarf/test10-pr18818-gcc.so.abi: Adjust. | ||
2805 | * tests/data/test-read-dwarf/test11-pr18828.so.abi: Adjust. | ||
2806 | * tests/data/test-read-dwarf/test12-pr18844.so.abi: Adjust. | ||
2807 | * tests/data/test-read-dwarf/test13-pr18894.so.abi: Adjust. | ||
2808 | * tests/data/test-read-dwarf/test14-pr18893.so.abi: Adjust. | ||
2809 | * tests/data/test-read-dwarf/test15-pr18892.so.abi: Adjust. | ||
2810 | * tests/data/test-read-dwarf/test16-pr18904.so.abi: Adjust. | ||
2811 | * tests/data/test-read-dwarf/test17-pr19027.so.abi: Adjust. | ||
2812 | * tests/data/test-read-dwarf/test18-pr19037-libvtkRenderingLIC-6.1.so.abi: | ||
2813 | Adjust. | ||
2814 | * tests/data/test-read-dwarf/test19-pr19023-libtcmalloc_and_profiler.so.abi: | ||
2815 | Adjust. | ||
2816 | * tests/data/test-read-dwarf/test20-pr19025-libvtkParallelCore-6.1.so.abi: | ||
2817 | Adjust. | ||
2818 | * tests/data/test-read-dwarf/test21-pr19092.so.abi: Adjust. | ||
2819 | * tests/data/test-read-dwarf/test22-pr19097-libstdc++.so.6.0.17.so.abi: | ||
2820 | Adjust. | ||
2821 | * tests/data/test-read-dwarf/test9-pr18818-clang.so.abi: Adjust. | ||
2822 | |||
2823 | 2017-01-14 Dodji Seketeli <dodji@redhat.com> | ||
2824 | |||
2825 | [dwarf reader] Allow updating and de-duplicating member functions | ||
2826 | * src/abg-dwarf-reader.cc (add_or_update_class_type): Register | ||
2827 | member functions for lookup by member function DIE representation. | ||
2828 | |||
2829 | 2017-01-14 Dodji Seketeli <dodji@redhat.com> | ||
2830 | |||
2831 | [dwarf reader] Do not over de-duplicate function *definitions* | ||
2832 | * src/abg-dwarf-reader.cc | ||
2833 | (build_or_get_fn_decl_if_not_suppressed): Do try to de-duplicate a | ||
2834 | function if it's to be completed. | ||
2835 | |||
2836 | 2017-01-13 Dodji Seketeli <dodji@redhat.com> | ||
2837 | |||
2838 | [dwarf reader] Fix pretty printing static methods from DWARF | ||
2839 | * src/abg-dwarf-reader.cc | ||
2840 | (die_return_and_parm_names_from_fn_type_die): Take a new | ||
2841 | 'is_static' parameter. | ||
2842 | (die_qualified_type_name, die_pretty_print_type): Adjust calling | ||
2843 | die_return_and_parm_names_from_fn_type_die. | ||
2844 | (die_function_signature): Likewise. Also, do not forget to print | ||
2845 | the first parameter for a static method. | ||
2846 | |||
2847 | 2017-01-13 Dodji Seketeli <dodji@redhat.com> | ||
2848 | |||
2849 | Handle several virtual member functions having the same vtable offset | ||
2850 | * include/abg-ir.h (class_or_union::virtual_mem_fn_map_type): | ||
2851 | Define new typedef. | ||
2852 | (class_decl::get_virtual_mem_fns_map): Declare new accessor. | ||
2853 | * src/abg-ir.cc (class_decl::priv::virtual_mem_fns_map_): New data | ||
2854 | member. | ||
2855 | (class_decl::get_virtual_mem_fns_map): Define new accessor. | ||
2856 | (fixup_virtual_member_function): Populate the new virtual member | ||
2857 | functions map. | ||
2858 | (class_decl::on_canonical_type_set): Sort the virtual member | ||
2859 | function vectors stored in the new virtual member functions map. | ||
2860 | (class_decl::add_member_function): Call | ||
2861 | set_member_function_is_virtual *after* calling | ||
2862 | set_member_function_vtable_offset because the former updates the | ||
2863 | virtual function map, so it needs the vtable offset. | ||
2864 | * src/abg-dwarf-reader.cc (finish_member_function_reading): | ||
2865 | Likewise. | ||
2866 | * src/abg-reader.cc (build_class_decl): Likewise. | ||
2867 | |||
2868 | 2017-01-13 Dodji Seketeli <dodji@redhat.com> | ||
2869 | |||
2870 | Speed up pretty representing (function) types | ||
2871 | * include/abg-ir.h (type_base::get_cached_pretty_representation): | ||
2872 | Declare new function. | ||
2873 | (function_type::get_cached_name): Likewise. | ||
2874 | * src/abg-ir.cc (get_method_type_name): Use the new | ||
2875 | type_base::get_cached_pretty_representation function. | ||
2876 | (type_base::priv::{internal_cached_repr_, cached_repr_}): Add new | ||
2877 | data members. | ||
2878 | (function_type::priv::{internal_cached_name_, cached_name_}): | ||
2879 | Likewise. | ||
2880 | (type_base::get_cached_pretty_representation): Define new | ||
2881 | function. | ||
2882 | (function_type::get_cached_name): Likewise. | ||
2883 | (type_base::get_canonical_type_for): Call | ||
2884 | type_base::get_cached_pretty_representation here, so the internal | ||
2885 | representation is cached right before canonicalization. | ||
2886 | (function_type::{mark_as_being_compared, unmark_as_being_compared, | ||
2887 | comparison_started}): Uset he new type_base::get_cached_name to | ||
2888 | speed up function type name retrieval. | ||
2889 | |||
2890 | 2017-01-13 Dodji Seketeli <dodji@redhat.com> | ||
2891 | |||
2892 | Add missing deep comparison operators for {function, method}_decl_sptr | ||
2893 | * include/abg-ir.h (operator==): Declare two new overloads for | ||
2894 | function_decl_sptr an method_decl_sptr. | ||
2895 | * src/abg-ir.cc (operator==): Define two new overloads for | ||
2896 | function_decl_sptr an method_decl_sptr. | ||
2897 | |||
2898 | 2017-01-16 Dodji Seketeli <dodji@redhat.com> | ||
2899 | |||
2900 | Fix performance regression while analyzing libjvm.so | ||
2901 | * include/abg-ir.h ({type_base, | ||
2902 | class_decl}::on_canonical_type_set): Declare new virtual member | ||
2903 | function. | ||
2904 | * src/abg-ir.cc (type_base::on_canonical_type_set): Define new | ||
2905 | virtual member function that does nothing. | ||
2906 | (class_decl::on_canonical_type_set): Define new virtual member | ||
2907 | function that sorts the virtual member functions of class_decl. | ||
2908 | (canonicalize): Invoke type_base::on_canonical_type_set when the | ||
2909 | canonical type is set. | ||
2910 | (fixup_virtual_member_function): Don't sort virtual member | ||
2911 | functions here. | ||
2912 | * src/abg-dwarf-reader.cc (finish_member_function_reading): Do not | ||
2913 | sort virtual member functions here. | ||
2914 | * tests/data/test-read-dwarf/test13-pr18894.so.abi: Adjust. | ||
2915 | * tests/data/test-read-dwarf/test14-pr18893.so.abi: Adjust. | ||
2916 | * tests/data/test-read-dwarf/test15-pr18892.so.abi: Adjust. | ||
2917 | * tests/data/test-read-dwarf/test21-pr19092.so.abi: Adjust. | ||
2918 | * tests/data/test-read-dwarf/test22-pr19097-libstdc++.so.6.0.17.so.abi: Adjust. | ||
2919 | |||
2920 | 2017-01-14 Dodji Seketeli <dodji@redhat.com> | ||
2921 | |||
2922 | Update copyright notice for abg-fwd.h, abg-ir.h and test-abidiff.cc | ||
2923 | * include/abg-fwd.h: Adjust copyright. | ||
2924 | * include/abg-ir.h: Likewise. | ||
2925 | * tests/test-abidiff.cc: Likewise. | ||
2926 | |||
2927 | 2017-01-16 Dodji Seketeli <dodji@redhat.com> | ||
2928 | |||
2929 | Remove unused functions from abg-ir.cc | ||
2930 | * src/abg-ir.cc (convert_node_to_decl): Remove specializations for | ||
2931 | class_decl_sptr, type_base_sptr and var_decl_sptr. | ||
2932 | |||
2933 | 2016-11-10 Dodji Seketeli <dodji@redhat.com> | ||
2934 | |||
2935 | Support Linux Kernel ABI whitelist files | ||
2936 | * include/abg-suppression.h | ||
2937 | (function_suppression::function_suppression): Make the declaration | ||
2938 | of the default constructor public. | ||
2939 | * src/abg-suppression-priv.h (function_suppression::priv::priv): | ||
2940 | Declare a default constructor. | ||
2941 | * src/abg-suppression.cc | ||
2942 | (function_suppression::function_suppression): Define default | ||
2943 | constructor. | ||
2944 | * include/abg-tools-utils.h | ||
2945 | (gen_suppr_spec_from_kernel_abi_whitelist): Declare new function. | ||
2946 | * src/abg-tools-utils.cc | ||
2947 | (gen_suppr_spec_from_kernel_abi_whitelist): Define new function. | ||
2948 | * tools/abidiff.cc (options::kernel_abi_whitelist_paths): | ||
2949 | (display_usage): Display a help string for the new | ||
2950 | --linux-kernel-abi-whitelist option. | ||
2951 | (parse_command_line): Parse the --linux-kernel-abi-whitelist from | ||
2952 | the command line. | ||
2953 | (maybe_check_suppression_files): Check the presence of the kernel | ||
2954 | abi whitelist files. | ||
2955 | (set_suppressions): Generate suppression specifications from the | ||
2956 | whitelist files. | ||
2957 | |||
2958 | 2016-10-10 Dodji Seketeli <dodji@redhat.com> | ||
2959 | |||
2960 | Support Linux Kernel binaries | ||
2961 | * include/abg-dwarf-reader.h (create_read_context): Take a new | ||
2962 | flag to say if the context is to read an ELF binary in linux | ||
2963 | kernel mode. | ||
2964 | * src/abg-dwarf-reader.cc (typedef address_set_type) | ||
2965 | (address_set_sptr): New typedefs. | ||
2966 | (get_binary_load_address): The load address of the binary is | ||
2967 | the load address specified by the program header that is at the | ||
2968 | smallest offset; not by the program header that is at offset zero. | ||
2969 | (read_context::{ksymtab_section_, ksymtab_gpl_section_, | ||
2970 | linux_exported_fn_syms_, linux_exported_var_syms_, | ||
2971 | linux_exported_gpl_fn_syms_, linux_exported_gpl_var_syms_, | ||
2972 | load_in_linux_kernel_mode_}): New data members. | ||
2973 | (read_context::read_context): Initialize ksymtab_section_, | ||
2974 | ksymtab_gpl_section_ and load_in_linux_kernel_mode_. | ||
2975 | (read_context::{find_symbol_table_section, find_opd_section, | ||
2976 | lookup_elf_fn_symbol_from_address, | ||
2977 | lookup_elf_var_symbol_from_address, get_function_address, | ||
2978 | get_variable_address}): Make these const. | ||
2979 | (read_context::{find_ksymtab_section, find_ksymtab_gpl_section, | ||
2980 | lookup_elf_symbol_from_address, function_symbol_is_exported, | ||
2981 | variable_symbol_is_exported, linux_exported_fn_syms, | ||
2982 | create_or_get_linux_exported_fn_syms, linux_exported_var_syms, | ||
2983 | create_or_get_linux_exported_var_syms, linux_exported_gpl_fn_syms, | ||
2984 | linux_exported_gpl_var_syms, | ||
2985 | create_or_get_linux_exported_gpl_fn_syms, | ||
2986 | linux_exported_gpl_var_syms, | ||
2987 | create_or_get_linux_exported_gpl_var_syms, architecture_word_size, | ||
2988 | load_kernel_symbol_table, load_ksymtab_symbols, | ||
2989 | load_ksymtab_gpl_symbols, | ||
2990 | load_linux_specific_exported_symbol_maps, | ||
2991 | load_in_linux_kernel_mode}): New member functions. | ||
2992 | (read_context::read_int_from_array_of_bytes): Factorize this | ||
2993 | new member function out of ... | ||
2994 | (read_context::{lookup_ppc64_elf_fn_entry_point_address}): | ||
2995 | ... this. Make this function const too. | ||
2996 | (read_context::read_uint64_from_array_of_bytes): New function. | ||
2997 | Uses read_int_from_array_of_bytes above. | ||
2998 | (read_context::{fun_entry_addr_sym_map_sptr}): Try to load symbol | ||
2999 | maps only when it's necessary. | ||
3000 | (read_context::elf_architecture_is_big_endian): Fix logic. | ||
3001 | (read_context::{var_addr_sym_map}): Express the const variant in | ||
3002 | terms of the non-const one. In the non-const one, load the map | ||
3003 | only when necessary. | ||
3004 | (read_context::load_symbol_maps_from_symtab_section): Renamed | ||
3005 | load_symbol_maps into this. | ||
3006 | (read_context::is_linux_kernel_binary): Define new member | ||
3007 | function. | ||
3008 | (read_context::{function, variable}_symbol_is_exported): If we are | ||
3009 | not prevented from considering loading in linux kernel mode, then | ||
3010 | just looking at a linux kernel binary makes us consider the | ||
3011 | special kernel sections. | ||
3012 | (read_debug_info_into_corpus): Likewise. | ||
3013 | (build_ir_node_from_die): Take a new flag that says if the ir node | ||
3014 | is a declaration required by another concrete IR node. | ||
3015 | (enum read_context::kernel_symbol_table_kind): New enum. | ||
3016 | (read_context::load_symbol_maps): Support loading linux kernel | ||
3017 | specific sections too. | ||
3018 | (build_var_decl): Use the new | ||
3019 | read_context::variable_symbol_is_exported. | ||
3020 | (function_is_suppressed): Suppress non-member functions or | ||
3021 | variables that are not declarations and that have no symbol. | ||
3022 | (variable_is_suppressed, build_var_decl_if_not_suppressed): Take a | ||
3023 | new flag that says if the variable is a declaration required by a | ||
3024 | concrete variable. If non member variable that is a declaration | ||
3025 | is not the specification of another concrete variable, then it's | ||
3026 | suppressed. | ||
3027 | (add_fn_symbols_to_map, add_var_symbols_to_map): New function | ||
3028 | definitions. | ||
3029 | (read_debug_info_into_corpus): If we are reading linux kernel or | ||
3030 | linux kernel modules, only set explicitely exported symbols (in | ||
3031 | the linux kernel binary sense) as exported function or variable | ||
3032 | symbols. | ||
3033 | (create_read_context): Take a new flag to say if the context is to | ||
3034 | read an ELF binary in linux kernel mode. | ||
3035 | * tools/abidiff.cc (options::options): Initialize | ||
3036 | options::linux_kernel_mode to true. | ||
3037 | (display_usage): Display usage of the --no-linux-kernel-mode option. | ||
3038 | (parse_command_line): Parse the --no-linux-kernel-mode option. | ||
3039 | * tools/abidw.cc (options::options): Initialize | ||
3040 | options::linux_kernel_mode to true. | ||
3041 | (display_usage): Display usage of --no-linux-kernel-mode option. | ||
3042 | (parse_command_line): Parse the --no-linux-kernel-mode option. | ||
3043 | * doc/manuals/abidiff.rst: Document the new --no-linux-kernel-mode | ||
3044 | options. | ||
3045 | * doc/manuals/abidw.rst: Likewise. | ||
3046 | * tests/data/test-diff-dwarf-abixml/test0-pr19026-libvtkIOSQL-6.1.so.1.abi: | ||
3047 | Adjust. | ||
3048 | * tests/data/test-read-dwarf/test9-pr18818-clang.so.abi: Adjust. | ||
3049 | * tests/data/test-read-dwarf/test10-pr18818-gcc.so.abi: Adjust. | ||
3050 | * tests/data/test-read-dwarf/test11-pr18828.so.abi: Adjust. | ||
3051 | * tests/data/test-read-dwarf/test12-pr18844.so.abi: Likewise. | ||
3052 | * tests/data/test-read-dwarf/test13-pr18894.so.abi: Likewise. | ||
3053 | * tests/data/test-read-dwarf/test14-pr18893.so.abi: Likewise. | ||
3054 | * tests/data/test-read-dwarf/test15-pr18892.so.abi: Likewise. | ||
3055 | * tests/data/test-read-dwarf/test16-pr18904.so.abi: Likewise. | ||
3056 | * tests/data/test-read-dwarf/test17-pr19027.so.abi: Likewise. | ||
3057 | * tests/data/test-read-dwarf/test18-pr19037-libvtkRenderingLIC-6.1.so.abi: | ||
3058 | Likewise. | ||
3059 | * tests/data/test-read-dwarf/test19-pr19023-libtcmalloc_and_profiler.so.abi: | ||
3060 | Likewise. | ||
3061 | * tests/data/test-read-dwarf/test20-pr19025-libvtkParallelCore-6.1.so.abi: | ||
3062 | Likewise. | ||
3063 | * tests/data/test-read-dwarf/test21-pr19092.so.abi: Likewise. | ||
3064 | * tests/data/test-read-dwarf/test22-pr19097-libstdc++.so.6.0.17.so.abi: Likewise. | ||
3065 | * tests/data/test-read-dwarf/libtest23.so.abi: Adjust. | ||
3066 | * tests/data/test-read-dwarf/libtest24-drop-fns-2.so.abi: Adjust. | ||
3067 | * tests/data/test-read-dwarf/libtest24-drop-fns.so.abi: Adjust. | ||
3068 | |||
3069 | 2017-01-06 Dodji Seketeli <dodji@redhat.com> | ||
3070 | |||
3071 | Add debug routines to dump locations to a stream | ||
3072 | * src/abg-writer.cc (dump_location): Define new function and one | ||
3073 | overload. | ||
3074 | (dump_decl_location): Re-write in terms of the new dump_location. | ||
3075 | |||
3076 | 2017-01-06 Dodji Seketeli <dodji@redhat.com> | ||
3077 | |||
3078 | Better de-duplicate classes, unions, enums in non-odr contexts | ||
3079 | * src/abg-dwarf-reader.cc (build_enum_type) | ||
3080 | (add_or_update_class_type, add_or_update_union_type): When the ODR | ||
3081 | is not relevant, use the location of the type to detect if two | ||
3082 | enum, class or union types of the same name actually represent the | ||
3083 | same type. | ||
3084 | |||
3085 | 2017-01-06 Dodji Seketeli <dodji@redhat.com> | ||
3086 | |||
3087 | Adjust some reference outputs of the test-read-dwarf test harness | ||
3088 | * tests/data/test-read-dwarf/test12-pr18844.so.abi: Adjust. | ||
3089 | * tests/data/test-read-dwarf/test9-pr18818-clang.so.abi: Adjust. | ||
3090 | |||
3091 | 2017-01-04 Ondrej Oprala <ondrej.oprala@gmail.com> | ||
3092 | |||
3093 | Bug 18754 - Add the "--no-added-syms" option to abidiff | ||
3094 | * doc/manuals/abidiff.rst: Document the new --no-added-syms | ||
3095 | option. | ||
3096 | * tools/abidiff.cc (struct options): Add show_added_syms and | ||
3097 | set it to true by default. | ||
3098 | (display_usage): Document the new options --no-added-syms. If | ||
3099 | this is the only suppression option specified, it is equivalent | ||
3100 | to specifying --show_{changed,deleted}_{fns,vars} as arguments | ||
3101 | to abidiff. If any of those options are specified before | ||
3102 | --no-added-syms, then it has no effect. | ||
3103 | (parse_command_line): Parse the new option and set | ||
3104 | show_added_{fns,vars,syms} and show_all_{fns,vars} to false if | ||
3105 | --no-added-syms is specified. | ||
3106 | * tests/test-diff-filter.cc: Add a test for the new option. | ||
3107 | * tests/data/test-diff-filter/test35-pr18754-no-added-syms-report-0.txt: | ||
3108 | Reference results for the new test. | ||
3109 | * tests/data/test-diff-filter/test35-pr18754-no-added-syms-report-1.txt: | ||
3110 | Likewise. | ||
3111 | * tests/data/Makefile.am: Add the above test files to the list of | ||
3112 | test data. | ||
3113 | |||
3114 | 2017-01-05 Dodji Seketeli <dodji@redhat.com> | ||
3115 | |||
3116 | Update copyright year on a bunch of files | ||
3117 | * include/abg-corpus.h: Update copyright year to 2017. | ||
3118 | * src/abg-dwarf-reader.cc: Likewise. | ||
3119 | * src/abg-ir.cc: Likewise. | ||
3120 | * src/abg-reader.cc: Likewise. | ||
3121 | * src/abg-writer.cc: Likewise. | ||
3122 | * tools/abicompat.cc: Likewise. | ||
3123 | * tools/abidw.cc: Likewise. | ||
3124 | |||
3125 | 2017-01-05 Dodji Seketeli <dodji@redhat.com> | ||
3126 | |||
3127 | [apidoc] Allow brief description at the top of class description pages | ||
3128 | * doc/api/libabigail.doxy: Don't disable "brief member desc". | ||
3129 | |||
3130 | 2017-01-05 Dodji Seketeli <dodji@redhat.com> | ||
3131 | |||
3132 | Misc style fixes | ||
3133 | * include/abg-corpus.h: Remove corpus_sptr typedef. It's in | ||
3134 | abg-fwd.h now. | ||
3135 | * src/abg-ir.cc: Remove some unnecessary vertical space. | ||
3136 | * src/abg-reader.cc (build_function_decl): Cleanup some asserts. | ||
3137 | * src/abg-writer.cc (write_function_type): Each the inspection of | ||
3138 | the type id from within the debugger. | ||
3139 | |||
3140 | 2017-01-05 Dodji Seketeli <dodji@redhat.com> | ||
3141 | |||
3142 | Misc comments and apidoc fixes | ||
3143 | * src/abg-dwarf-reader.cc (lookup_symbol_from_gnu_hash_tab): Fix | ||
3144 | typo in comment. | ||
3145 | * tools/abicompat.cc (perform_compat_check_in_weak_mode): Better | ||
3146 | comments. | ||
3147 | * tools/abidw.cc (dislay_usage): Fix white spaces. | ||
3148 | Conflicts: | ||
3149 | tools/abidw.cc | ||
3150 | |||
3151 | 2017-01-05 Dodji Seketeli <dodji@redhat.com> | ||
3152 | |||
3153 | Speedup set_member_is_static | ||
3154 | * src/abg-ir.cc (set_member_is_static): When comparing data | ||
3155 | members, consider only their names. | ||
3156 | |||
3157 | 2017-01-05 Dodji Seketeli <dodji@redhat.com> | ||
3158 | |||
3159 | Avoid unnecessary updates to type lookup maps | ||
3160 | * src/abg-ir.cc (class_or_union::get_is_declaration_only): Try | ||
3161 | to update the type maps only when a declaration-only class | ||
3162 | type is now defined. | ||
3163 | |||
3164 | 2017-01-05 Dodji Seketeli <dodji@redhat.com> | ||
3165 | |||
3166 | Update tests/data/test-read-dwarf/*.abi files | ||
3167 | * tests/data/test-read-dwarf/test10-pr18818-gcc.so.abi: Adjust. | ||
3168 | * tests/data/test-read-dwarf/test11-pr18828.so.abi: Likewise. | ||
3169 | * tests/data/test-read-dwarf/test12-pr18844.so.abi: Likewise. | ||
3170 | * tests/data/test-read-dwarf/test13-pr18894.so.abi: Likewise. | ||
3171 | * tests/data/test-read-dwarf/test14-pr18893.so.abi: Likewise. | ||
3172 | * tests/data/test-read-dwarf/test15-pr18892.so.abi: Likewise. | ||
3173 | * tests/data/test-read-dwarf/test16-pr18904.so.abi: Likewise. | ||
3174 | * tests/data/test-read-dwarf/test17-pr19027.so.abi: Likewise. | ||
3175 | * tests/data/test-read-dwarf/test18-pr19037-libvtkRenderingLIC-6.1.so.abi: Likewise. | ||
3176 | * tests/data/test-read-dwarf/test19-pr19023-libtcmalloc_and_profiler.so.abi: Likewise. | ||
3177 | * tests/data/test-read-dwarf/test20-pr19025-libvtkParallelCore-6.1.so.abi: Likewise. | ||
3178 | * tests/data/test-read-dwarf/test21-pr19092.so.abi: Likewise. | ||
3179 | * tests/data/test-read-dwarf/test22-pr19097-libstdc++.so.6.0.17.so.abi: Likewise. | ||
3180 | * tests/data/test-read-dwarf/test9-pr18818-clang.so.abi: Likewise. | ||
3181 | |||
3182 | 2017-01-05 Dodji Seketeli <dodji@redhat.com> | ||
3183 | |||
3184 | Update tests/data/test-diff-dwarf-abixml/test0-pr19026-libvtkIOSQL-6.1.so.1.abi | ||
3185 | * tests/data/test-diff-dwarf-abixml/test0-pr19026-libvtkIOSQL-6.1.so.1.abi: | ||
3186 | Update. | ||
3187 | |||
3188 | 2017-01-05 Dodji Seketeli <dodji@redhat.com> | ||
3189 | |||
3190 | [abixml writer] Make sure all function types are emitted | ||
3191 | * src/abg-writer.cc (write_translation_unit): Fix logic to avoid | ||
3192 | forgetting referenced function types. | ||
3193 | |||
3194 | 2017-01-05 Dodji Seketeli <dodji@redhat.com> | ||
3195 | |||
3196 | [abixml writer] Fix comparison of pointer to types | ||
3197 | * src/abg-writer.cc (type_ptr_comp::operator()): Do not add an | ||
3198 | empty type id string to the type -> type id map when the entry for | ||
3199 | a given type is empty. | ||
3200 | |||
3201 | 2017-01-05 Dodji Seketeli <dodji@redhat.com> | ||
3202 | |||
3203 | [dwarf-reader] Don't early canonicalize function types | ||
3204 | * src/abg-dwarf-reader.cc (maybe_canonicalize_type): | ||
3205 | Late-canonicalize function types. | ||
3206 | signed-off-by: Dodji Seketeli <dodji@redhat.com> | ||
3207 | |||
3208 | 2017-01-05 Dodji Seketeli <dodji@redhat.com> | ||
3209 | |||
3210 | Fix qualified name caching for some types | ||
3211 | * src/abg-ir.cc ({qualified, pointer, | ||
3212 | array}_type_def::get_qualified_name): Don't cache internal and | ||
3213 | non-internal qualified name when the type is not canonicalized. | ||
3214 | |||
3215 | 2017-01-04 Dodji Seketeli <dodji@redhat.com> | ||
3216 | |||
3217 | Cleanup ODR-based type canonicalization optimization gating logic | ||
3218 | * src/abg-ir.cc (type_base::get_canonical_type_for): Make it clear | ||
3219 | that the ODR-based optimization is allowed only on C++ ABI | ||
3220 | corpora. | ||
3221 | |||
3222 | 2017-01-04 Dodji Seketeli <dodji@redhat.com> | ||
3223 | |||
3224 | Fix a typo in method name computation | ||
3225 | * src/abg-ir.cc (get_method_type_name): Really return the method | ||
3226 | name. | ||
3227 | |||
3228 | 2017-01-05 Dodji Seketeli <dodji@redhat.com> | ||
3229 | |||
3230 | 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 | ||
3231 | * 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. | ||
3232 | |||
3233 | 2017-01-05 Dodji Seketeli <dodji@redhat.com> | ||
3234 | |||
3235 | Update tests/data/test-read-write/test27.xml | ||
3236 | * tests/data/test-read-write/test27.xml: Adjust. | ||
3237 | |||
3238 | 2017-01-04 Dodji Seketeli <dodji@redhat.com> | ||
3239 | |||
3240 | [dwarf-reader] Handle per translation-unit type de-duplication | ||
3241 | * src/abg-dwarf-reader.cc | ||
3242 | (read_context::per_tu_name_artefacts_map_): New data member. | ||
3243 | (read_context::clear_per_translation_unit_data): Clear the new | ||
3244 | read_context::per_tu_name_artefacts_map_. | ||
3245 | (read_context::associate_die_to_decl): Take a flag to say if we | ||
3246 | should associate a DIE to its representation and another one to | ||
3247 | say if the association should be done per-tu or per-corpus. | ||
3248 | (read_context::lookup_{type_artifact, artifact}_from_die): Update | ||
3249 | apidoc. | ||
3250 | (read_context::lookup_artifact_from_die_representation): Likewise. | ||
3251 | (read_context::{associate_die_to_artifact_by_repr, | ||
3252 | associate_die_to_artifact_by_repr_internal, | ||
3253 | associate_die_to_type}): Take a flag to say if the associating | ||
3254 | should be done on a per-tu basis. | ||
3255 | (read_context::lookup_{type_artifact, artifact}_from_die_per_tu): | ||
3256 | New member functions. | ||
3257 | (read_context::{lookup_artifact_from_per_tu_die_representation, | ||
3258 | odr_is_relevant}): Likewise. | ||
3259 | (build_enum_type, add_or_update_class_type) | ||
3260 | (add_or_update_union_type): If ODR is not relevant, do not perform | ||
3261 | per-corpus de-duplication. | ||
3262 | (build_pointer_type_def, build_typedef_type): Do not associate the | ||
3263 | type to its representation as these kinds of typs are not | ||
3264 | de-duplicated. | ||
3265 | (build_function_type): If ODR is not relevant, perform per-tu | ||
3266 | de-duplication. When ODR is relevant, per-corpus de-duplication | ||
3267 | is performed. | ||
3268 | (build_or_get_fn_decl_if_not_suppressed): Function decls are | ||
3269 | always de-duplicated per-corpus. | ||
3270 | (build_ir_node_from_die): For data members, do not update the die | ||
3271 | representation map as data members are not de-duplicated. Do not | ||
3272 | do it for function decls either. | ||
3273 | [1]: https://en.wikipedia.org/wiki/One_Definition_Rule | ||
3274 | |||
3275 | 2017-01-02 Dodji Seketeli <dodji@redhat.com> | ||
3276 | |||
3277 | Handle per translation unit and per corpus types maps | ||
3278 | * include/abg-fwd.h (lookup_type_in_corpus): Remove. This is to | ||
3279 | be replaced by the new lookup_type below. | ||
3280 | (lookup_{basic, class, union, enum, typedef, qualified, pointer, | ||
3281 | reference, array, function, class_or_typedef, | ||
3282 | class_typedef_or_enum}_type): | ||
3283 | (lookup_class_type_through_scopes, lookup_type) | ||
3284 | (lookup_type_through_scopes, lookup_or_synthesize_fn_type) | ||
3285 | * src/abg-ir-priv.h (struct translation_unit::priv): Move this | ||
3286 | private type here, from abg-ir.h. | ||
3287 | (synthesize_type_from_translation_unit): Declare new functions. | ||
3288 | * include/abg-ir.h (class type_maps): Define new type. | ||
3289 | (translation_unit::get_function_types): Remove. | ||
3290 | (translation_unit::get_types): Now return a type_maps. | ||
3291 | (translation_unit::get_live_fn_types): Declare new type. | ||
3292 | (class decl_base): Make canonicalize be a friend of this class. | ||
3293 | * src/abg-ir.cc (struct translation_unit::priv): Move this to | ||
3294 | abg-ir-priv.h | ||
3295 | (struct type_maps::priv): Define new type. | ||
3296 | (type_maps::{basic, class, union, enum, typedef, qualified, | ||
3297 | pointer, reference, array, function}_types): Define new accessors. | ||
3298 | (translation_unit::bind_function_type_life_time): Adjust. | ||
3299 | (translation_unit::get_function_types): Remove accessor. | ||
3300 | (translation_unit::get_types, get_live_fn_types): Define new | ||
3301 | accessors. | ||
3302 | (lookup_type_in_translation_unit) | ||
3303 | (lookup_class_type_in_translation_unit) | ||
3304 | (lookup_function_type_in_translation_unit) | ||
3305 | (synthesize_type_from_translation_unit) | ||
3306 | (synthesize_function_type_from_translation_unit) | ||
3307 | (lookup_class_type_in_translation_unit) Remove function | ||
3308 | definitions. | ||
3309 | (lookup_type_in_map): Define function template. | ||
3310 | (lookup_{basic, class, union, typedef, class_or_typedef, | ||
3311 | class_typedef_or_enum, qualified, pointer, reference, array, | ||
3312 | function}_type): Define functions. | ||
3313 | (lookup_function_type, lookup_type_through_scopes) | ||
3314 | (lookup_class_type_through_scopes) | ||
3315 | (lookup_basic_type_through_translation_units) | ||
3316 | (lookup_union_type_through_translation_units) | ||
3317 | (lookup_enum_type_through_translation_units) | ||
3318 | (lookup_class_type_through_translation_units) | ||
3319 | (lookup_typedef_type_through_translation_units) | ||
3320 | (lookup_qualified_type_through_translation_units) | ||
3321 | (lookup_pointer_type_through_translation_units) | ||
3322 | (lookup_reference_type_through_translation_units) | ||
3323 | (lookup_array_type_through_translation_units) | ||
3324 | (lookup_function_type_through_translation_units) | ||
3325 | (lookup_type_through_translation_units) | ||
3326 | (lookup_or_synthesize_fn_type, lookup_type): Likewise. | ||
3327 | (maybe_update_types_lookup_map) | ||
3328 | (maybe_update_types_lookup_map<class_decl>) | ||
3329 | (maybe_update_types_lookup_map<function_type>): Define function | ||
3330 | template, specilizations and functions. | ||
3331 | (synthesize_type_from_translation_unit) | ||
3332 | (synthesize_function_type_from_translation_unit): Define | ||
3333 | functions. | ||
3334 | * include/abg-corpus.h (corpus::get_types): Declare new accessor. | ||
3335 | * src/abg-corpus.cc (corpus::priv::get_types): Define new | ||
3336 | accessor. | ||
3337 | (corpus::get_types): Likewise. | ||
3338 | (lookup_type_in_corpus, lookup_class_type_in_corpus) | ||
3339 | (lookup_type_in_corpus, lookup_function_type_in_corpus) | ||
3340 | (maybe_update_types_lookup_map) | ||
3341 | (maybe_update_types_lookup_map<class_decl>) | ||
3342 | (maybe_update_types_lookup_map<function_type>): Remove. | ||
3343 | (lookup_{basic, class, union, enum, typedef, qualified, pointer, | ||
3344 | reference, array, function, class_or_typedef, | ||
3345 | class_typedef_or_enum}_type): Likewise. | ||
3346 | * src/abg-corpus-priv.h (corpus::priv::{basic, class, union, | ||
3347 | typedef, qualified, pointer, reference, array, function}_types): | ||
3348 | Remove these data members. | ||
3349 | (corpus::priv::get_scopes): Remove member function. | ||
3350 | (corpus::priv::get_{basic, class, union, enum, typedef, qualified, | ||
3351 | pointer, reference, array, function}_types): Remove member | ||
3352 | function declarations. | ||
3353 | (corpus::priv::types_): New data member. | ||
3354 | (corpus::priv::get_types): Declare new member function. | ||
3355 | (lookup_{basic, class, enum, typedef, class_or_typedef, qualified, | ||
3356 | pointer, reference, array, function}_type): Declare new functions. | ||
3357 | * src/abg-dwarf-reader.cc | ||
3358 | (read_context::resolve_declaration_only_classes) | ||
3359 | (build_translation_unit_and_add_to_ir): Adjust use of | ||
3360 | lookup_class_type. | ||
3361 | * src/abg-reader.cc (read_context::type_is_from_translation_unit): | ||
3362 | Adjust to the use of lookup_function_type_in_translation_unit that | ||
3363 | got renamed into lookup_function_type. | ||
3364 | * src/abg-writer.cc (type_ptr_cmp::operator()): New operator | ||
3365 | implementation. | ||
3366 | (read_context::sort_type): Add new overloads. | ||
3367 | (write_translation_unit): Adjust to get the function types from | ||
3368 | the new translation_unit::get_live_fn_types and sort them. | ||
3369 | * tools/abicompat.cc (perform_compat_check_in_weak_mode): Adjust | ||
3370 | to use the new lookup_or_synthesize_fn_type, in lieu of | ||
3371 | lookup_function_type_in_corpus. Adjust to use lookup_type in lieu | ||
3372 | of lookup_type_in_corpus. | ||
3373 | |||
3374 | 2016-12-21 Dodji Seketeli <dodji@redhat.com> | ||
3375 | |||
3376 | Make abg-fwd.h use *_sptr typedefs | ||
3377 | * include/abg-ir.h: Move convience typedef declarations and some | ||
3378 | necessary forward declarations to ... | ||
3379 | * include/abg-fwd.h: ... here. | ||
3380 | (is_enum_type, is_var_decl): Take a pointer to type_or_decl_base. | ||
3381 | (lookup_type_in_scope): Return a type_base_sptr. | ||
3382 | (lookup_type_through_scopes): Introduce this to later replace the | ||
3383 | overload of lookup_type_in_translation_unit that takes a list of | ||
3384 | strings. | ||
3385 | (lookup_type_in_scope): Return a type_base_sptr, not a | ||
3386 | decl_base_sptr. | ||
3387 | * src/abg-ir.cc (lookup_type_in_scope, lookup_node_in_scope) | ||
3388 | (lookup_var_decl_in_scope): Adjust. | ||
3389 | (is_enum_type, is_var_decl): Take a pointer to type_or_decl_base. | ||
3390 | (lookup_node_in_scope): Return a type_or_decl_base_sptr. | ||
3391 | (lookup_type_in_scope): Return a type_base_sptr. | ||
3392 | (lookup_node_in_translation_unit): Return a | ||
3393 | type_or_decl_base_sptr. | ||
3394 | (lookup_type_through_scopes): Replace | ||
3395 | lookup_type_in_translation_unit. | ||
3396 | |||
3397 | 2016-12-18 Chenxiong Qi <cqi@redhat.com> | ||
3398 | |||
3399 | Fix wrong variable name | ||
3400 | * tools/fedabipkgdiff: (diff_latest_rpms_based_on_distros): Fix | ||
3401 | wrong variable name distro. | ||
3402 | |||
3403 | 2016-12-18 Chenxiong Qi <cqi@redhat.com> | ||
3404 | |||
3405 | Warn properly when cannot find peer RPM | ||
3406 | * tools/fedabipkgdiff: (RPMCollection.get_peer_rpm): Return None | ||
3407 | when cannot find peer RPM due to nonexistent arch. | ||
3408 | |||
3409 | 2016-12-19 Chenxiong Qi <cqi@redhat.com> | ||
3410 | |||
3411 | Read Koji config via Koji API | ||
3412 | * tools/fedabipkgdiff: Read DEFAULT_KOJI_TOPURL and | ||
3413 | DEFAULT_KOJI_SERVER from Koji config via Koji API read_config. | ||
3414 | (build_commandline_args_parser): --topdir is renamed to | ||
3415 | --topurl. | ||
3416 | * doc/manuals/fedabipkgdiff.rst: Rename --topdir to --topurl. | ||
3417 | |||
3418 | 2016-12-19 Chenxiong Qi <cqi@redhat.com> | ||
3419 | |||
3420 | Follow moved packages when download | ||
3421 | * tools/fedabipkgdiff: (download_rpm) Add --location to curl | ||
3422 | CLI. | ||
3423 | |||
3424 | 2016-12-13 Chenxiong Qi <cqi@redhat.com> | ||
3425 | |||
3426 | More document for local RPMs comparison | ||
3427 | * doc/manuals/fedabipkgdiff.rst: Add more document for local RPMs | ||
3428 | comparison. Also fixed a typo. | ||
3429 | |||
3430 | 2016-12-15 Ondrej Oprala <ondrej.oprala@gmail.com> | ||
3431 | |||
3432 | Properly report missing files for abipkgdiff | ||
3433 | * tools/abipkgdiff.cc: (class options): Add the "nonexistent_file" flag | ||
3434 | (parse_command_line): Check if the files given exist. | ||
3435 | (main): Check the nonexistent_file flag. If any of the input | ||
3436 | files don't exist, report it and exit. Also, for present and future test | ||
3437 | uniformity, only show the base names of the packages when using their | ||
3438 | names in error output. | ||
3439 | * tests/test-diff-pkg.cc: Add a new regression test. | ||
3440 | * tests/data/test-diff-pkg/test-nonexistent-report-0.txt: The | ||
3441 | expected output of the above regression test. | ||
3442 | * tests/data/Makefile.am: Add the above file to the list. | ||
3443 | |||
3444 | 2016-12-15 Dodji Seketeli <dodji@redhat.com> | ||
3445 | |||
3446 | Misc style cleanup | ||
3447 | * src/abg-dwarf-reader.cc (build_function_type): Remove | ||
3448 | unnecessary new line. | ||
3449 | |||
3450 | 2016-12-15 Dodji Seketeli <dodji@redhat.com> | ||
3451 | |||
3452 | make is_anonymous_type work for unions and classes | ||
3453 | * src/abg-ir.cc (is_anonymous_type): Make this work for class or | ||
3454 | union types, no only classes. | ||
3455 | |||
3456 | 2016-12-15 Dodji Seketeli <dodji@redhat.com> | ||
3457 | |||
3458 | Naming typedefs of classes are not read properly from abixml | ||
3459 | * src/abg-reader.cc (build_class_decl): Use | ||
3460 | read_context::build_or_get_type_decl rather than | ||
3461 | read_context::get_type_decl to build the naming typedef referred | ||
3462 | to by the class being built. Move the handling of naming typedefs | ||
3463 | after the class is marked as WIP and keyed. | ||
3464 | |||
3465 | 2016-12-15 Dodji Seketeli <dodji@redhat.com> | ||
3466 | |||
3467 | Don't early-canonicalize function types when reading abixml | ||
3468 | * src/abg-reader.cc (read_context::maybe_canonicalize_type): | ||
3469 | late-canonicalize function types too. | ||
3470 | |||
3471 | 2016-12-12 Ondrej Oprala <ondrej.oprala@gmail.com> | ||
3472 | |||
3473 | Check --enable-rpm dependencies more rigorously | ||
3474 | * configure.ac: Check if both rpm2cpio and cpio | ||
3475 | exist on the system. If not, disable the option and fail the | ||
3476 | configuration if --enable-rpm was specified explicitly. | ||
3477 | |||
3478 | 2016-12-12 Ondrej Oprala <ondrej.oprala@gmail.com> | ||
3479 | |||
3480 | abipkgdiff doesn't mention --no-default-suppression in help | ||
3481 | * tools/abipkgdiff.cc (display_usage): Mention | ||
3482 | --no-default-suppression as one of the options. | ||
3483 | |||
3484 | 2016-12-12 Ondrej Oprala <ondrej.oprala@gmail.com> | ||
3485 | |||
3486 | Fix a few remarks made by cppcheck | ||
3487 | * src/abg-comparison.cc (types_or_decls_equal::operator()): Pass | ||
3488 | arguments by reference. | ||
3489 | (class_diff::ensure_lookup_tables_populated): Expression | ||
3490 | !A || (A && B) can be reduced to !A || B. | ||
3491 | * src/abg-suppression.cc (suppression_matches_type_no_name): | ||
3492 | Likewise. | ||
3493 | |||
3494 | 2016-12-09 Ondrej Oprala <ondrej.oprala@gmail.com> | ||
3495 | |||
3496 | Bug 19272 - abipkgdiff doesn't report arch change | ||
3497 | * src/abg-comparison.cc (corpus_diff::has_incompatible_changes): | ||
3498 | The architecture change into account. | ||
3499 | (corpus_diff::has_net_changes): Take architecture and soname | ||
3500 | changes into account. | ||
3501 | * tools/abicompat.cc (perform_compat_check_in_normal_mode): Use | ||
3502 | corpus_diff::{has_net_changes, has_incompatible_changes}. | ||
3503 | * tests/data/test-diff-pkg/dbus-glib-0.104-3.fc23.armv7hl.rpm: New | ||
3504 | test input. | ||
3505 | * tests/data/test-diff-pkg/dbus-glib-0.104-3.fc23.x86_64--dbus-glib-0.104-3.fc23.armv7hl-report-0.txt: | ||
3506 | New test reference output. | ||
3507 | * tests/data/Makefile.am: Add the new test material above to | ||
3508 | source distribution. | ||
3509 | * tests/test-diff-pkg.cc (in_out_spec): Compare the new package | ||
3510 | above against an x86_64 one. | ||
3511 | |||
3512 | 2016-08-11 Chenxiong Qi <cqi@redhat.com> | ||
3513 | |||
3514 | Bug 20380 - Compare two local RPMs | ||
3515 | * configure.ac: add dependent mimetype module. | ||
3516 | * doc/manuals/fedabipkgdiff.rst: Update to add document for the | ||
3517 | new use case of comparing two local RPMs. | ||
3518 | * tests/data/Makefile.am: Include new RPMs for tests. | ||
3519 | * tests/data/test-fedabipkgdiff/dbus-glib/dbus-glib-0.100.2-2.fc20.x86_64.rpm: | ||
3520 | New RPM for running test. | ||
3521 | * tests/data/test-fedabipkgdiff/dbus-glib/dbus-glib-0.106-1.fc23.x86_64.rpm: | ||
3522 | Likewise. | ||
3523 | * tests/data/test-fedabipkgdiff/nss-util/nss-util-3.12.6-1.fc14.x86_64.rpm: | ||
3524 | Likewise. | ||
3525 | * tests/data/test-fedabipkgdiff/nss-util/nss-util-3.24.0-2.0.fc25.x86_64.rpm: | ||
3526 | Likewise. | ||
3527 | * tests/data/test-fedabipkgdiff/nss-util/nss-util-devel-3.24.0-2.0.fc25.x86_64.rpm: | ||
3528 | Likewise. | ||
3529 | * 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: | ||
3530 | Rename filename by adding .rpm extension. | ||
3531 | * 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: | ||
3532 | New reference output for testing comparing local RPMs. | ||
3533 | * 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: | ||
3534 | New reference output for testing comparison without non-existent | ||
3535 | debuginfo or development package. | ||
3536 | * tests/runtestfedabipkgdiff.py.in (FEDABIPKGDIFF_TEST_SPECS): | ||
3537 | Rename filename for test4. Add two new test cases. | ||
3538 | (run_fedabipkgdiff_tests): Remove semicolon and trailing | ||
3539 | whitespaces. | ||
3540 | (main): Likewise. | ||
3541 | (ensure_output_dir_created): Likewise. | ||
3542 | * tools/fedabipkgdiff: Require some new modules. | ||
3543 | Fix of return code. | ||
3544 | (PkgInfo): Renamed to ComparisonHalf. | ||
3545 | (match_nvr): New method to determine if a string matches format | ||
3546 | of N-V-R. | ||
3547 | (match_nvra): New method to determine if a string matches format | ||
3548 | of N-V-R.A. | ||
3549 | (is_rpm_file): New method to guess if a file is a RPM file. | ||
3550 | (RPM.is_peer): New method to determine if current RPM is a peer | ||
3551 | of another. | ||
3552 | (RPM.filename): Use Koji module API to construct the filename. | ||
3553 | (RPM.nvra): Get nvra from filename instead of constructing | ||
3554 | manually that is duplicated with Koji module API. | ||
3555 | (RPMCollection): New class to represent a set of RPMs. | ||
3556 | (generate_pkg_info_pair_for_abipkgdiff): New method working as a | ||
3557 | generator to yeild comparison halves for running abipkgdiff. | ||
3558 | (Brew.getRPM): Fix string format with incorrect argument. | ||
3559 | (Brew.select_rpms_from_a_build): Return instance of | ||
3560 | RPMCollection. | ||
3561 | (abipkgdiff): If there is no debuginfo or development package, | ||
3562 | just ignore it and leave a warning. If --error-on-warning is | ||
3563 | specified, raise an exception instead. Arguments are modified | ||
3564 | to represent the new name ComparisonHalf, and relative docstring | ||
3565 | is also updated. | ||
3566 | (magic_construct): Removed. | ||
3567 | (run_abipkgdiff): Rewrite. | ||
3568 | (make_rpms_usable_for_abipkgdiff): Removed. | ||
3569 | (diff_local_rpm_with_latest_rpm_from_koji): Rewrite by using | ||
3570 | RPMCollection. | ||
3571 | (diff_latest_rpms_based_on_distros): Likewise. | ||
3572 | (diff_two_nvras_from_koji): Likewise. | ||
3573 | (diff_from_two_rpm_files): New method to compare two local RPMs. | ||
3574 | (build_commandline_args_parser): Add new option | ||
3575 | --error-on-warning. | ||
3576 | (main): Add support to compare local RPMs. | ||
3577 | |||
3578 | 2016-12-12 Dodji Seketeli <dodji@redhat.com> | ||
3579 | |||
3580 | Fix template_decl::hash::operator() | ||
3581 | * src/abg-hash.cc (template_decl::hash::operator()): Combine the | ||
3582 | contribution of the qualified name to the contribution of the type | ||
3583 | name to the hash. | ||
3584 | |||
3585 | 2016-12-09 Dodji Seketeli <dodji@redhat.com> | ||
3586 | |||
3587 | Fix aborting when reading .foo symbols from a ppc64 binary | ||
3588 | * abg-dwarf-reader.cc (read_context::find_opd_section): Fix | ||
3589 | comment. | ||
3590 | (read_context::load_symbol_maps): If for a given function entry | ||
3591 | point (that we got by looking at the ".opd" section for a given | ||
3592 | function pointer value) we already had an entry in the | ||
3593 | function_entry_address -> symbol, maybe it means that the previous | ||
3594 | entry that we had was from an entry in the symbol table which | ||
3595 | value was directly the entry point address of a function. In that | ||
3596 | case, if the name of the symbol is "foo", the name of the symbol | ||
3597 | which value is directly the entry point address is ".foo". What | ||
3598 | we do in this case is that we just keep the reference to the "foo" | ||
3599 | symbol in the function_entry_address -> symbol map. | ||
3600 | (read_context::address_is_in_opd_section): Define new member | ||
3601 | function. | ||
3602 | * tests/data/test-diff-pkg/gmp-4.3.1-10.el6.ppc64.rpm: New test input. | ||
3603 | * tests/data/test-diff-pkg/gmp-4.3.1-7.el6_2.2.ppc64.rpm: Likewise. | ||
3604 | * tests/data/test-diff-pkg/gmp-debuginfo-4.3.1-10.el6.ppc64.rpm: Likewise. | ||
3605 | * tests/data/test-diff-pkg/gmp-debuginfo-4.3.1-7.el6_2.2.ppc64.rpm: Likewise. | ||
3606 | * tests/data/test-diff-pkg/gmp-4.3.1-7.el6_2.2.ppc64--gmp-4.3.1-10.el6.ppc64-report-0.txt: | ||
3607 | New test reference output. | ||
3608 | * tests/data/Makefile.am: Add the new test input and reference | ||
3609 | output to source distribution. | ||
3610 | * tests/test-diff-pkg.cc (in_out_specs): Add the new test inputs | ||
3611 | and reference output to the set of inputs that are compared. | ||
3612 | |||
3613 | 2016-12-05 Dodji Seketeli <dodji@redhat.com> | ||
3614 | |||
3615 | Bug 20927 - Segfault when $HOME is not set | ||
3616 | * src/abg-tools-utils.cc | ||
3617 | (get_default_user_suppression_file_path): Handle the case where | ||
3618 | the HOME environment variable is not set. | ||
3619 | * tools/abipkgdiff.cc (package::extracted_packages_parent_dir): | ||
3620 | Likewise. When $HOME is empty set then use $TMPDIR. If it's | ||
3621 | empty too then use "/tmp". | ||
3622 | |||
3623 | 2016-12-02 Dodji Seketeli <dodji@redhat.com> | ||
3624 | |||
3625 | Bug 20887 - Show relative change of offsets | ||
3626 | * doc/manuals/abidiff.rst: Document the new | ||
3627 | --no-show-relative-offset-changes. | ||
3628 | * doc/manuals/abipkgdiff.rst: Likewise. | ||
3629 | * include/abg-comparison.h | ||
3630 | (diff_context::show_relative_offset_changes): New accessors. | ||
3631 | * include/abg-ir.h ({set,get}_data_member_offset): Return uint64_t | ||
3632 | instead of the less portable size_t. | ||
3633 | * src/abg-comparison.cc | ||
3634 | (diff_context::priv::show_relative_offset_changes_): New data | ||
3635 | member. | ||
3636 | (dif_context::show_relative_offset_changes): Define accessor. | ||
3637 | (maybe_show_relative_offset_change): Define new function. | ||
3638 | (represent): In the overload for var_diff, call the new | ||
3639 | maybe_show_relative_offset_change. | ||
3640 | (report_size_and_alignment_changes): If the size of the type | ||
3641 | didn't change then say it now. | ||
3642 | * src/abg-ir.cc (set_data_member_offset, get_data_member_offset): | ||
3643 | Take or return a uint64_t instead of a size_t. | ||
3644 | * tools/abidiff.cc (options::show_relative_offset_changes): New | ||
3645 | data member. | ||
3646 | (options::options): Initialize it. | ||
3647 | (display_usage): Display help string for the new | ||
3648 | --no-show-relative-offset-changes. | ||
3649 | (parse_command_line): Parse the new | ||
3650 | --no-show-relative-offset-changes options. | ||
3651 | (set_diff_context_from_opts): Set the | ||
3652 | "show-relative-offset-changes" flag according to the new option.n | ||
3653 | * tools/abipkgdiff.cc (options::show_relative_offset_changes): New | ||
3654 | data member. | ||
3655 | (options::options): Initialize it. | ||
3656 | (display_usage): Add help string for the new | ||
3657 | --no-show-relative-offset-changes option. | ||
3658 | (set_diff_context_from_opts): Set the | ||
3659 | "show-relative-offset-changes" flag according to the new option. | ||
3660 | (parse_command_line): Parse the new command line option. | ||
3661 | * tests/data/test-diff-dwarf/test40-report-0.txt: Add new | ||
3662 | reference output. | ||
3663 | * tests/data/test-diff-dwarf/test40-v0.c: Source code of the first | ||
3664 | test binary. | ||
3665 | * tests/data/test-diff-dwarf/test40-v1.c: Source code of the | ||
3666 | second test binay. | ||
3667 | * tests/data/test-diff-dwarf/libtest40-v0.so: New first test binary. | ||
3668 | * tests/data/test-diff-dwarf/libtest40-v1.so: New second test binary. | ||
3669 | * tests/test-diff-dwarf.cc (in_out_spec): Add the new test | ||
3670 | binaries above to the set of binaries that are compared. | ||
3671 | * tests/data/Makefile.am: Add the new test material to source | ||
3672 | distribution. | ||
3673 | * tests/data/test-abicompat/test7-fn-changed-report-0.txt: Adjust. | ||
3674 | * tests/data/test-abidiff/test-PR18791-report0.txt: Likewise. | ||
3675 | * tests/data/test-abidiff/test-enum0-report.txt: Likewise. | ||
3676 | * tests/data/test-abidiff/test-enum1-report.txt: Likewise. | ||
3677 | * tests/data/test-abidiff/test-struct1-report.txt: Likewise. | ||
3678 | * tests/data/test-diff-dwarf/test0-report.txt: Likewise. | ||
3679 | * tests/data/test-diff-dwarf/test1-report.txt: Likewise. | ||
3680 | * tests/data/test-diff-dwarf/test10-report.txt: Likewise. | ||
3681 | * tests/data/test-diff-dwarf/test11-report.txt: Likewise. | ||
3682 | * tests/data/test-diff-dwarf/test13-report.txt: Likewise. | ||
3683 | * tests/data/test-diff-dwarf/test15-enum-report.txt: Likewise. | ||
3684 | * tests/data/test-diff-dwarf/test27-local-base-diff-report.txt: Likewise. | ||
3685 | * tests/data/test-diff-dwarf/test32-fnptr-changes-report-0.txt: Likewise. | ||
3686 | * tests/data/test-diff-dwarf/test33-fnref-changes-report-0.txt: Likewise. | ||
3687 | * tests/data/test-diff-dwarf/test38-union-report-0.txt: Likewise. | ||
3688 | * tests/data/test-diff-dwarf/test4-report.txt: Likewise. | ||
3689 | * tests/data/test-diff-dwarf/test5-report.txt: Likewise. | ||
3690 | * tests/data/test-diff-dwarf/test6-report.txt: Likewise. | ||
3691 | * tests/data/test-diff-dwarf/test8-report.txt: Likewise. | ||
3692 | * tests/data/test-diff-filter/test0-report.txt: Likewise. | ||
3693 | * tests/data/test-diff-filter/test01-report.txt: Likewise. | ||
3694 | * tests/data/test-diff-filter/test1-report.txt: Likewise. | ||
3695 | * tests/data/test-diff-filter/test13-report.txt: Likewise. | ||
3696 | * tests/data/test-diff-filter/test16-report-2.txt: Likewise. | ||
3697 | * tests/data/test-diff-filter/test16-report.txt: Likewise. | ||
3698 | * tests/data/test-diff-filter/test17-0-report.txt: Likewise. | ||
3699 | * tests/data/test-diff-filter/test17-1-report.txt: Likewise. | ||
3700 | * tests/data/test-diff-filter/test18-report.txt: Likewise. | ||
3701 | * tests/data/test-diff-filter/test19-enum-report-1.txt: Likewise. | ||
3702 | * tests/data/test-diff-filter/test2-report.txt: Likewise. | ||
3703 | * tests/data/test-diff-filter/test23-redundant-fn-parm-change-report-0.txt: | ||
3704 | Likewise. | ||
3705 | * tests/data/test-diff-filter/test24-compatible-vars-report-1.txt: | ||
3706 | Likewise. | ||
3707 | * tests/data/test-diff-filter/test25-cyclic-type-report-0.txt: | ||
3708 | Likewise. | ||
3709 | * tests/data/test-diff-filter/test25-cyclic-type-report-1.txt: | ||
3710 | Likewise. | ||
3711 | * tests/data/test-diff-filter/test26-qualified-redundant-node-report-0.t: | ||
3712 | Likewise.xt | ||
3713 | * tests/data/test-diff-filter/test26-qualified-redundant-node-report-1.txt: | ||
3714 | Likewise. | ||
3715 | * tests/data/test-diff-filter/test27-redundant-and-filtered-children-nodes-report-1.txt: | ||
3716 | Likewise. | ||
3717 | * tests/data/test-diff-filter/test27-redundant-and-filtered-children-nodes-report-2.txt: | ||
3718 | Likewise. | ||
3719 | * tests/data/test-diff-filter/test29-finer-redundancy-marking-report-0.txt: | ||
3720 | Likewise. | ||
3721 | * tests/data/test-diff-filter/test3-report.txt: Likewise. | ||
3722 | * tests/data/test-diff-filter/test30-pr18904-rvalueref-report0.txt: | ||
3723 | Likewise. | ||
3724 | * tests/data/test-diff-filter/test30-pr18904-rvalueref-report1.txt: | ||
3725 | Likewise. | ||
3726 | * tests/data/test-diff-filter/test31-pr18535-libstdc++-report-0.txt: | ||
3727 | Likewise. | ||
3728 | * tests/data/test-diff-filter/test31-pr18535-libstdc++-report-1.txt: | ||
3729 | Likewise. | ||
3730 | * 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. | ||
3731 | * 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. | ||
3732 | * 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. | ||
3733 | * 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. | ||
3734 | * tests/data/test-diff-suppr/test0-type-suppr-report-0.txt: Likewise. | ||
3735 | * tests/data/test-diff-suppr/test0-type-suppr-report-3.txt: Likewise. | ||
3736 | * tests/data/test-diff-suppr/test0-type-suppr-report-5.txt: Likewise. | ||
3737 | * tests/data/test-diff-suppr/test0-type-suppr-report-7.txt: Likewise. | ||
3738 | * tests/data/test-diff-suppr/test1-typedef-suppr-report-0.txt: Likewise. | ||
3739 | * tests/data/test-diff-suppr/test1-typedef-suppr-report-2.txt: Likewise. | ||
3740 | * tests/data/test-diff-suppr/test10-changed-parm-c-report-0.txt: Likewise. | ||
3741 | * tests/data/test-diff-suppr/test2-struct-suppr-report-0.txt: Likewise. | ||
3742 | * tests/data/test-diff-suppr/test23-alias-filter-report-0.txt: Likewise. | ||
3743 | * tests/data/test-diff-suppr/test23-alias-filter-report-2.txt: Likewise. | ||
3744 | * tests/data/test-diff-suppr/test3-struct-suppr-report-0.txt: Likewise. | ||
3745 | * tests/data/test-diff-suppr/test3-struct-suppr-report-1.txt: Likewise. | ||
3746 | * tests/data/test-diff-suppr/test3-struct-suppr-report-2.txt: Likewise. | ||
3747 | * tests/data/test-diff-suppr/test30-report-0.txt: Likewise. | ||
3748 | * tests/data/test-diff-suppr/test4-local-suppr-report-0.txt: Likewise. | ||
3749 | * tests/data/test-diff-suppr/test4-local-suppr-report-1.txt: Likewise. | ||
3750 | * tests/data/test-diff-suppr/test5-fn-suppr-report-0.txt: Likewise. | ||
3751 | * tests/data/test-diff-suppr/test5-fn-suppr-report-1.txt: Likewise. | ||
3752 | * tests/data/test-diff-suppr/test5-fn-suppr-report-2.txt: Likewise. | ||
3753 | * tests/data/test-diff-suppr/test5-fn-suppr-report-3.txt: Likewise. | ||
3754 | * tests/data/test-diff-suppr/test5-fn-suppr-report-4.txt: Likewise. | ||
3755 | * tests/data/test-diff-suppr/test5-fn-suppr-report-5.txt: Likewise. | ||
3756 | * tests/data/test-diff-suppr/test6-fn-suppr-report-0-1.txt: Likewise. | ||
3757 | * tests/data/test-diff-suppr/test6-fn-suppr-report-0.txt: Likewise. | ||
3758 | * tests/data/test-diff-suppr/test6-fn-suppr-report-1.txt: Likewise. | ||
3759 | * tests/data/test-diff-suppr/test6-fn-suppr-report-2.txt: Likewise. | ||
3760 | * tests/data/test-diff-suppr/test6-fn-suppr-report-3.txt: Likewise. | ||
3761 | * tests/data/test-diff-suppr/test7-var-suppr-report-0.txt: Likewise. | ||
3762 | * tests/data/test-diff-suppr/test7-var-suppr-report-1.txt: Likewise. | ||
3763 | * tests/data/test-diff-suppr/test7-var-suppr-report-2.txt: Likewise. | ||
3764 | * tests/data/test-diff-suppr/test7-var-suppr-report-3.txt: Likewise. | ||
3765 | * tests/data/test-diff-suppr/test7-var-suppr-report-4.txt: Likewise. | ||
3766 | * tests/data/test-diff-suppr/test7-var-suppr-report-7.txt: Likewise. | ||
3767 | * tests/data/test-diff-suppr/test7-var-suppr-report-8.txt: Likewise. | ||
3768 | |||
3769 | 2016-12-02 Dodji Seketeli <dodji@redhat.com> | ||
3770 | |||
3771 | Rename tests/update-test-read-dwarf-output.py | ||
3772 | * tests/update-test-output.py: renamed | ||
3773 | tests/update-test-read-dwarf-output.py into this. Update its | ||
3774 | comments. Make this script executable. | ||
3775 | |||
3776 | 2016-11-30 Dodji Seketeli <dodji@redhat.com> | ||
3777 | |||
3778 | Add tests/data/test-diff-suppr/test33-report-0.txt to tarball | ||
3779 | * tests/data/Makefile.am: Add test-diff-suppr/test33-report-0.txt. | ||
3780 | |||
3781 | 2016-11-30 Dodji Seketeli <dodji@redhat.com> | ||
3782 | |||
3783 | Bug 20670 - abipkgdiff aborts if $XDG_CACHE_HOME does not exist | ||
3784 | * tools/abipkgdiff.cc (package::extracted_packages_parent_dir): | ||
3785 | Ensure that the cache directory is created, even when | ||
3786 | XDG_CACHE_HOME is set. Also, remove the now useless "using | ||
3787 | abigail::tools_utils::get_random_number_as_string" statement. | ||
3788 | |||
3789 | 2016-11-09 Dodji Seketeli <dodji@redhat.com> | ||
3790 | |||
3791 | Very light speed improvements | ||
3792 | * include/abg-comp-filter.h (has_harmless_name_change): Pass smart | ||
3793 | pointers by reference. | ||
3794 | * src/abg-comp-filter.cc (access_changed) | ||
3795 | (function_name_changed_but_not_symbol) | ||
3796 | (non_static_data_member_type_size_changed) | ||
3797 | (static_data_member_type_size_changed, is_compatible_change) | ||
3798 | (decl_name_changed, has_harmless_name_change): Pass smart | ||
3799 | pointers by reference. | ||
3800 | * include/abg-ir.h (decl_base::set_context_rel): Take a bare | ||
3801 | pointer, not a smart pointer. | ||
3802 | * src/abg-ir.cc (decl_base::priv::context_): Make this data member | ||
3803 | be a naked pointer, not a smart pointer. | ||
3804 | (decl_base::priv::priv): Initialize it. | ||
3805 | (decl_base::priv::~priv): New constructor. | ||
3806 | (decl_base::{get_context_rel, set_scope}): Adjust. | ||
3807 | (class_decl::method_decl::{method_decl, set_scope}): Likewise. | ||
3808 | (equals): In the overload for var_decl, compare the type of the | ||
3809 | var first as that might be faster (to detect var_decls with | ||
3810 | different types) in the general case where types are | ||
3811 | canonicalized. | ||
3812 | |||
3813 | 2016-11-08 Dodji Seketeli <dodji@redhat.com> | ||
3814 | |||
3815 | Introduce on-the-fly type canonicalization | ||
3816 | * include/abg-ir.h (environment::do_on_the_fly_canonicalization): | ||
3817 | Declare new member functions. | ||
3818 | ({type_base, function_type}::priv_): Make this public so that | ||
3819 | static non-member functions defined in abg-ir.cc can access it. | ||
3820 | * src/abg-ir.cc | ||
3821 | (environment::priv::do_on_the_fly_canonicalization_): New data | ||
3822 | member. | ||
3823 | (environment::priv::priv): Initialize it. | ||
3824 | (environment::do_on_the_fly_canonicalization): Define new member | ||
3825 | functions. | ||
3826 | (type_base::get_canonical_type_for): Trigger on-the-fly | ||
3827 | canonicalization during comparison of the type being canonicalized | ||
3828 | and an already canonicalized type. | ||
3829 | (types_are_being_compared, maybe_propagate_canonical_type): Define | ||
3830 | new static functions. | ||
3831 | (equals): In overloads for class_decl and function_type, call | ||
3832 | maybe_propagate_canonical_type when the two types compare equal. | ||
3833 | * tests/data/test-diff-pkg/tbb-4.1-9.20130314.fc22.x86_64--tbb-4.3-3.20141204.fc23.x86_64-report-0.txt: | ||
3834 | Adjust. | ||
3835 | * tests/data/test-read-dwarf/test9-pr18818-clang.so.abi: Likewise. | ||
3836 | |||
3837 | 2016-11-06 Dodji Seketeli <dodji@redhat.com> | ||
3838 | |||
3839 | Fix pretty representation of array types | ||
3840 | * include/abg-ir.h (array_type_def::is_infinite): Fix indentation. | ||
3841 | * src/abg-ir.cc (qualified_type_def::build_name): An empty set of | ||
3842 | sub-ranges for a vector is represented by "[]". | ||
3843 | (array_type_def::is_infinite): If a vector has no sub-range, that | ||
3844 | means it has an infinite size. Adjust comment. | ||
3845 | * tests/data/test-diff-filter/test33-report-0.txt: Adjust. | ||
3846 | * tests/data/test-read-dwarf/libtest23.so.abi: Adjust. | ||
3847 | * tests/data/test-read-dwarf/libtest24-drop-fns-2.so.abi: Adjust. | ||
3848 | * tests/data/test-read-dwarf/libtest24-drop-fns.so.abi: Adjust. | ||
3849 | * tests/data/test-read-dwarf/test10-pr18818-gcc.so.abi: Adjust. | ||
3850 | * tests/data/test-read-dwarf/test11-pr18828.so.abi: Adjust. | ||
3851 | * tests/data/test-read-dwarf/test14-pr18893.so.abi: Adjust. | ||
3852 | * tests/data/test-read-dwarf/test19-pr19023-libtcmalloc_and_profiler.so.abi: | ||
3853 | Adjust. | ||
3854 | * tests/data/test-read-dwarf/test22-pr19097-libstdc++.so.6.0.17.so.abi: | ||
3855 | Adjust. | ||
3856 | * tests/data/test-read-dwarf/test9-pr18818-clang.so.abi: Adjust. | ||
3857 | |||
3858 | 2016-10-11 Dodji Seketeli <dodji@redhat.com> | ||
3859 | |||
3860 | Support naming typedef and use them to speed up type canonicalization | ||
3861 | * include/abg-ir.h (typedef_decl_wptr): New typedef. | ||
3862 | (class_decl::{g,s}et_naming_typedef): Declare new member | ||
3863 | functions. | ||
3864 | * src/abg-dwarf-reader.cc (build_typedef_type): When the | ||
3865 | underlying type of a typedef is an anonymous class, the class type | ||
3866 | is said to have a naming typedef. | ||
3867 | * src/abg-ir.cc (is_anonymous_type): An anonymous class that has | ||
3868 | a naming typedef is said to not be anonymous anymore. | ||
3869 | (class_decl::priv::naming_typedef): New data member. | ||
3870 | (class_decl::{g,s}et_naming_typedef): Define new member functions. | ||
3871 | (class_decl::get_pretty_representation): When called for internal | ||
3872 | purposes (e.g, for type canonicalization) compute the pretty | ||
3873 | representation of the class by using its typedef name, when class | ||
3874 | is anonymous and has a naming typedef. | ||
3875 | * src/abg-reader.cc (build_class_decl): Read the new | ||
3876 | "naming-typedef-id" attribute. | ||
3877 | * src/abg-writer.cc (write_naming_typedef): New function. | ||
3878 | (write_class_decl_opening_tag): Use the new write_naming_typedef | ||
3879 | function. | ||
3880 | * tests/data/test-read-dwarf/libtest23.so.abi: Adjust. | ||
3881 | * tests/data/test-read-dwarf/libtest24-drop-fns-2.so.abi: | ||
3882 | Likewise. | ||
3883 | * tests/data/test-read-dwarf/libtest24-drop-fns.so.abi: Likewise. | ||
3884 | * tests/data/test-read-dwarf/test10-pr18818-gcc.so.abi: Likewise. | ||
3885 | * tests/data/test-read-dwarf/test11-pr18828.so.abi: Likewise. | ||
3886 | * tests/data/test-read-dwarf/test12-pr18844.so.abi: Likewise. | ||
3887 | * tests/data/test-read-dwarf/test13-pr18894.so.abi: Likewise. | ||
3888 | * tests/data/test-read-dwarf/test14-pr18893.so.abi: Likewise. | ||
3889 | * tests/data/test-read-dwarf/test15-pr18892.so.abi: Likewise. | ||
3890 | * tests/data/test-read-dwarf/test16-pr18904.so.abi: Likewise. | ||
3891 | * tests/data/test-read-dwarf/test21-pr19092.so.abi: Likewise. | ||
3892 | * tests/data/test-read-dwarf/test22-pr19097-libstdc++.so.6.0.17.so.abi: | ||
3893 | Likewise. | ||
3894 | * tests/data/test-read-dwarf/test9-pr18818-clang.so.abi: Likewise. | ||
3895 | |||
3896 | 2016-11-02 Dodji Seketeli <dodji@redhat.com> | ||
3897 | |||
3898 | Implement de-duplication for types and decls at DWARF loading time | ||
3899 | * include/abg-ir.h (method_type::priv_): Introduce new pimpl | ||
3900 | pointer here. | ||
3901 | (method_type::class_type_): Move this into the pimpl idiom. | ||
3902 | (method_type::method_type): Take a new is_const flag. | ||
3903 | (method_type::get_class_type): Make this method out-of-line. | ||
3904 | (method_type::{s,g}et_is_const): Declare new member functions. | ||
3905 | (get_method_type_name): Declare this function as a friend of | ||
3906 | the method_type type. | ||
3907 | * src/abg-dwarf-reader.cc: Include the new abg-ir-priv.h and | ||
3908 | abg-corpus-priv.h. | ||
3909 | (typedef die_tu_map_type): Fix comment. | ||
3910 | (typedef die_istring_map_type): New typedef. | ||
3911 | (class read_context::die_source_dependant_container_set): New | ||
3912 | class template. | ||
3913 | (read_context::{die_qualified_name_maps_, die_pretty_repr_maps_, | ||
3914 | die_pretty_type_repr_maps_}): Define new data members. | ||
3915 | (read_context::{get_die_qualified_name, get_die_qualified_name, | ||
3916 | get_die_qualified_type_name, get_die_pretty_type_representation, | ||
3917 | get_die_pretty_representation, lookup_type_artifact_from_die, | ||
3918 | lookup_artifact_from_die, lookup_artifact_from_die_representation, | ||
3919 | associate_die_to_artifact_by_repr, | ||
3920 | associate_die_to_artifact_by_repr_internal, | ||
3921 | lookup_type_from_die}): Define new member functions. | ||
3922 | (read_context::lookup_type_from_die_offset): Fix comment. | ||
3923 | (get_parent_die, get_scope_die, die_is_decl) | ||
3924 | (die_is_namespace, die_is_unspecified, die_is_void_type) | ||
3925 | (die_is_pointer_type, die_is_reference_type) | ||
3926 | (die_is_pointer_or_reference_type, die_is_class_type) | ||
3927 | (die_has_object_pointer, die_this_pointer_from_object_pointer) | ||
3928 | (die_this_pointer_is_const, is_decl_tag) | ||
3929 | (die_object_pointer_is_for_const_method, die_is_at_class_scope) | ||
3930 | (die_name, die_qualified_type_name, die_qualified_decl_name) | ||
3931 | (die_qualified_name, die_qualified_type_name_empty) | ||
3932 | (die_return_and_parm_names_from_fn_type_die) | ||
3933 | (die_function_signature, die_peel_qual_ptr) | ||
3934 | (die_function_type_is_method_type, die_pretty_print_type) | ||
3935 | (die_pretty_print_decl, die_pretty_print) | ||
3936 | (build_subranges_from_array_type_die) | ||
3937 | (build_or_get_fn_decl_if_not_suppressed) | ||
3938 | (lookup_class_or_typedef_type) | ||
3939 | (lookup_class_typedef_or_enum_type_from_corpus) | ||
3940 | (is_function_for_die_a_member_of_class) | ||
3941 | (add_or_update_member_function): Define new static functions. | ||
3942 | (read_context::associate_die_to_decl): Call | ||
3943 | associate_die_to_artifact_by_repr. | ||
3944 | (read_context::{associate_die_to_type, | ||
3945 | schedule_type_for_late_canonicalization}): Take just one "die" | ||
3946 | parameter rather than taking a die offset and a die source; adjust | ||
3947 | accordingly. | ||
3948 | (maybe_canonicalize_type): Likewise. | ||
3949 | (finish_member_function_reading): Take a const reference to | ||
3950 | function_decl_sptr. | ||
3951 | (die_loc_and_name): Use the new die_name function. | ||
3952 | (die_is_type): Rename is_type_die into this. | ||
3953 | (build_type_decl): Take a new "where_offset" parameter. Adjust. | ||
3954 | If a type of the same name as the one for the current DIE is is | ||
3955 | already present, do not create a new type; just return the | ||
3956 | already-existing one. | ||