summaryrefslogtreecommitdiffstats
path: root/ChangeLog
diff options
context:
space:
mode:
authorDodji Seketeli <dodji@redhat.com>2015-06-07 11:58:17 +0200
committerDodji Seketeli <dodji@redhat.com>2015-06-07 14:34:25 +0200
commit616d9af75167bfd283d89e39e9bd99d619945a2d (patch)
treebecd165f342a74d4427093964d80149143163a29 /ChangeLog
parentAvoid infinite loop in elf_symbol::get_alias_from_name() (diff)
downloadlibabigail-616d9af75167bfd283d89e39e9bd99d619945a2d.tar.gz
libabigail-616d9af75167bfd283d89e39e9bd99d619945a2d.tar.bz2
libabigail-616d9af75167bfd283d89e39e9bd99d619945a2d.tar.xz
Update ChangeLog file
* ChangeLog: Update this automatically by typing make update-changelog. Signed-off-by: Dodji Seketeli <dodji@redhat.com>
Diffstat (limited to 'ChangeLog')
-rw-r--r--ChangeLog3766
1 files changed, 3766 insertions, 0 deletions
diff --git a/ChangeLog b/ChangeLog
index 1be7cf7e..ea9f508f 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,3747 @@
12015-06-07 Dodji Seketeli <dodji@redhat.com>
2
3 Update ChangeLog file.
4 * ChangeLog: Update this automatically by typing make
5 update-changelog.
6
72015-06-07 Dodji Seketeli <dodji@redhat.com>
8
9 Avoid infinite loop in elf_symbol::get_alias_from_name()
10 * src/abg-ir.cc (elf_symbol::get_alias_from_name)
11 (elf_symbol::get_alias_which_equals): Test for the next alias
12 pointing to the main symbol, in the loop exit condition.
13
142015-06-04 Dodji Seketeli <dodji@redhat.com>
15
16 Change the linkage name only when necessary
17 * include/abg-ir.h (elf_symbol::get_alias_from_name): Declare new
18 member function.
19 * src/abg-ir.cc (elf_symbol::get_alias_from_name): Define it.
20 * src/abg-dwarf-reader.cc (build_var_decl, build_function_decl):
21 Once the linkage name is supposed to contain the value of the
22 DW_AT_linkage_name attribute, set it the name of the underlying
23 symbol only if value of DW_At_linkage_name is missing or different
24 from the names of all the aliases of the underlying symbol.
25 * tests/data/test-read-dwarf/test2.so.abi: Adjust.
26
272015-06-04 Dodji Seketeli <dodji@redhat.com>
28
29 Various white space cleanups
30 * include/abg-comparison.h: Remove various useless vertical white
31 spaces.
32 * tests/test-diff-dwarf.cc (in_out_spec): Fix indentation of some
33 entries.
34
352015-06-04 Dodji Seketeli <dodji@redhat.com>
36
37 Fix various comments here and there
38 * src/abg-comparison.cc
39 (diff_context::set_or_get_canonical_diff_for, compute_diff)
40 (redundancy_marking_visitor::visit_begin): Fix comment in these
41 functions.
42 * src/abg-ir.cc (elf_symbol::is_variable): Likewise.
43
442015-06-04 Dodji Seketeli <dodji@redhat.com>
45
46 Add missing apidoc to elf_symbol type
47 * src/abg-ir.cc (elf_symbol::{elf_symbol, get_name, set_name,
48 get_type, set_type, get_binding, set_binding, get_version,
49 is_defined, is_public, is_function, is_variable}): Add missing
50 apidoc to these member functions.
51
522015-06-04 Dodji Seketeli <dodji@redhat.com>
53
54 Cleanup logic in class_diff::ensure_lookup_tables_populated()
55 * src/abg-comparison.cc
56 (class_diff::ensure_lookup_tables_populated): Remove the code that
57 tries to lookup allegedly added functions from the set of deleted
58 ones, by using the pretty printed name of the function. Handling
59 the case of a function decl not correctly tied to it symbol is
60 handled my generically a bit later in this function.
61
622015-06-04 Dodji Seketeli <dodji@redhat.com>
63
64 Report possible changes in the set of aliases of a symbol.
65 * src/abg-comparison.cc (function_decl_diff::report): Report
66 a change in the aliases of the symbols of a function; note that
67 everything else but have stayed equal in the function.
68
692015-06-04 Dodji Seketeli <dodji@redhat.com>
70
71 Report vtable changes in top-level function change reports
72 * src/abg-comparison.cc (function_decl_diff::report): Report about
73 virtual-ness and vtable offset changes.
74 * tests/data/test-diff-dwarf/test28-vtable-changes-report-0.txt:
75 New test input file.
76 * tests/data/test-diff-dwarf/test28-vtable-changes-v{0,1}.o: New
77 test input binaries.
78 * tests/data/test-diff-dwarf/test28-vtable-changes-v{0,1}.cc:
79 Source code of the input binaries above.
80 * tests/data/Makefile.am: Add the new test input above to source
81 distribution.
82 * tests/test-diff-dwarf.cc (in_out_specs): Add the new test input
83 above to the list of input this test harness has to run over.
84
852015-06-03 Dodji Seketeli <dodji@redhat.com>
86
87 Support new 'accessed_through' suppression property
88 * include/abg-comparison.h (enum type_suppression::reach_kind):
89 Define new enum.
90 (type_suppression::{get_consider_reach_kind,
91 set_consider_reach_kind, get_reach_kind,
92 mark_last_diff_visited_per_class_of_equivalence,
93 clear_last_diffs_visited_per_class_of_equivalence,
94 get_last_visited_diff_of_class_of_equivalence}): Declare new
95 member functions.
96 * src/abg-comparison.cc (diff_has_ancestor_filtered_out)
97 (read_suppression_reach_kind): Define static function.
98 (type_suppression::priv::{consider_reach_kind_, reach_kind_}):
99 Define new data members.
100 (type_suppression::priv::priv): Take a new reach_kind parameter.
101 (type_suppression::type_suppression): Adjust to new prototype of
102 priv constructor.
103 (type_suppression::{get_consider_reach_kind,
104 set_consider_reach_kind, get_reach_kind, set_reach_kind}): Define
105 new member functions.
106 (type_suppression::suppresses_diff): Interpret the result of
107 type_suppression::get_reach_kind() to determine if the suppression
108 specification suppresses a given diff node.
109 (read_type_suppression): Support reading the content of the
110 "accessed_through" property.
111 (diff_context::priv::last_visited_diff_node_): New data member.
112 (diff_context::{mark_last_diff_visited_per_class_of_equivalence,
113 clear_last_diffs_visited_per_class_of_equivalence,
114 get_last_visited_diff_of_class_of_equivalence}): Define new data
115 members.
116 (redundancy_marking_visitor::visit_begin): So if the current diff
117 node has already been visited, but if the previously visited node
118 has been filtered out, then do not mark this node as being
119 redundant. And mark the current diff node as being the last
120 visited one in its class of equivalence.
121 (categorize_redundancy): Clear the map of diff nodes visited per
122 class of equivalence.
123 * doc/manuals/libabigail-concepts.rst: Document the new
124 'accessed_through' property.
125 * tests/data/test-diff-suppr/test13-suppr-through-pointer-0.suppr:
126 New test input data.
127 * tests/data/test-diff-suppr/test13-suppr-through-pointer-report-{0,1}.txt:
128 Likewise.
129 * tests/data/test-diff-suppr/libtest13-suppr-through-pointer-v{0,1}.so:
130 New test input binaries.
131 * tests/data/test-diff-suppr/test13-suppr-through-pointer-v{0,1}.cc:
132 Source code of the test input binaries above.
133 * tests/data/test-diff-suppr/test14-suppr-non-redundant-0.suppr:
134 New test input data.
135 * tests/data/test-diff-suppr/test14-suppr-non-redundant-report-0.txt:
136 Likewise.
137 * tests/data/test-diff-suppr/test14-suppr-non-redundant-v{0,1}.o:
138 New test input binaries.
139 * tests/data/test-diff-suppr/test14-suppr-non-redundant-v{0,1}.cc:
140 Source code of the binaries above.
141
1422015-06-03 Dodji Seketeli <dodji@redhat.com>
143
144 Fix redundancy marking for change of types used directly
145 * include/abg-comparison.h (pointer_map): Make this be a map of
146 {size_t, size_t} pairs, rather than {size_t, bool}, so that each
147 pointer in the map can be associated to another one.
148 (diff_context::diff_has_been_visited): Return the pointer to the
149 first diff node of the equivalence class that has been visited.
150 * src/abg-comparison.cc (is_pointer_diff, is_reference_diff)
151 (is_reference_or_pointer_diff, is_fn_parm_diff, is_base_diff)
152 (is_child_node_of_function_parm_diff, is_child_node_of_base_diff):
153 Define new static functions.
154 (diff_context::diff_has_been_visited): Return the pointer to the
155 first diff node of the equivalence class that has been visited.
156 (diff_context::mark_diff_as_visited): Save the pointer to the
157 first diff node of a given class of equivalence that has been
158 visited.
159 (redundancy_marking_visitor::visit_begin): If a diff node is a
160 child node of a function parameter diff or base diff node and if
161 it's not a pointer or reference diff node, then do not mark it as
162 redundant. Also, make sure to not mark the first diff node of a
163 given class of equivalence that has been visited, as redundant;
164 only the other subsequent nodes should be marked redundant; we
165 were hitting this case because of an optimization that makes
166 equivalent class diff nodes to share their private (pimpl) data.
167 * tests/data/test-diff-filter/test29-finer-redundancy-marking-v{0,1}.o:
168 New test input binaries.
169 * tests/data/test-diff-filter/test29-finer-redundancy-marking-v{0,1}.cc:
170 Source code of the new test input binaries above.
171 * tests/data/test-diff-filter/test29-finer-redundancy-marking-report-0.txt:
172 New test input.
173 * tests/data/Makefile.am: Add the new test material above to the
174 source distribution.
175 * tests/test-diff-filter.cc (in_out_specs): Make this test harness
176 run over the additional test input above.
177 * tests/data/test-diff-suppr/test5-fn-suppr-report-0.txt: Adjust.
178
1792015-06-02 Dodji Seketeli <dodji@redhat.com>
180
181 Fix detection of local changes in base classes
182 * abg-ir.cc (equals): In the overload of class_decl::base_spec, if
183 the underlying class carries changes, then do not flag these
184 changes as local for the class_decl::base_spec.
185 * tests/data/test-diff-dwarf/test27-local-base-diff-v{0,1}.o: New
186 test input binaries.
187 * tests/data/test-diff-dwarf/test27-local-base-diff-v{0,1}.cc: Source
188 code for the test input binaries above.
189 * tests/data/test-diff-dwarf/test27-local-base-diff-report.txt:
190 New test input.
191 * tests/data/Makefile.am: Add the test inputs above to source
192 distribution.
193
1942015-06-02 Dodji Seketeli <dodji@redhat.com>
195
196 Fix symbols comparison
197 * include/abg-ir.h (elf_symbol_wptr): New typedef.
198 (elf_symbol): Make the constructors and assignment operator
199 private. The type can neither be copied nor created with the new
200 operator.
201 (elf_symbol::create): New static member function.
202 (elf_symbol::{get_main_symbol, get_next_alias, add_alias}):
203 Adjust.
204 ( compute_aliases_for_elf_symbol): Likewise.
205 (elf_symbol::operator=): Make this private.
206 (elf_symbol::get_alias_which_equals): Declare new member function.
207 * src/abg-comp-filter.cc (function_name_changed_but_not_symbol):
208 Adjust.
209 * src/abg-comparison.cc
210 (class_diff::ensure_lookup_tables_populated): Adjust.
211 * src/abg-corpus.cc
212 (corpus::priv::build_unreferenced_symbols_tables): Likewise.
213 * include/abg-dwarf-reader.h (lookup_symbol_from_elf)
214 (lookup_public_function_symbol_from_elf): Adjust.
215 * src/abg-dwarf-reader.cc (lookup_symbol_from_sysv_hash_tab)
216 (lookup_symbol_from_gnu_hash_tab, lookup_symbol_from_elf_hash_tab)
217 (lookup_symbol_from_symtab, lookup_symbol_from_elf)
218 (lookup_public_function_symbol_from_elf)
219 (lookup_public_variable_symbol_from_elf): Adjust.
220 (read_context::lookup_elf_symbol_from_index): Likewise.
221 (read_context::lookup_elf_fn_symbol_from_address): Likewise.
222 (read_context::lookup_elf_var_symbol_from_address): Likewise.
223 (read_context::lookup_public_function_symbol_from_elf): Likewise.
224 (read_context::lookup_public_variable_symbol_from_elf): Likewise.
225 (read_context::load_symbol_maps): Likewise.
226 (build_var_decl, build_function_decl): Likewise.
227 * src/abg-ir.cc (elf_symbol::priv::{main_symbol_, next_alias_}):
228 Change the type of these from elf_symbol* to elf_symbol_wptr.
229 (elf_symbol::priv::priv): Adjust.
230 (elf_symbol::{create, get_alias_which_equals}): Define new functions.
231 (textually_equals): Likewise.
232 (elf_symbol::{get_main_symbol, is_main_symbol, get_next_alias,
233 add_alias}): Adjust to return or take elf_symbol_sptr type, rather
234 than a elf_symbol* one.
235 (elf_symbol::{get_aliases_id_string, does_alias}): Adjust.
236 (compute_alias_for_elf_symbol): Likewise.
237 (elf_symbol::operator==): Two symbols A and B are now equal if A
238 has at least one alias that is textually equal to B.
239 (equals): In the overload for function_decls, in the part where we
240 compare the decl_base part of the functions without considering
241 their decl names, we now also omit considering their linkage
242 names, because we compared they symbols before.
243 * tools/abisym.cc (main): Adjust.
244 * tests/data/test-diff-dwarf/test12-report.txt: Adjust.
245 * tests/data/test-diff-dwarf/test12-report.txt: Adjust.
246 * tests/data/test-diff-dwarf/test18-alias-sym-report-0.txt: Adjust.
247 * tests/data/test-diff-dwarf/test8-report.txt: Adjust.
248 * tests/data/test-diff-filter/test10-report.txt: Adjust.
249 * tests/data/test-diff-filter/test13-report.txt: Adjust.
250 * tests/data/test-diff-filter/test2-report.txt: Adjust.
251 * tests/data/test-diff-filter/test20-inline-report-0.txt: Adjust.
252 * tests/data/test-diff-filter/test20-inline-report-1.txt: Adjust.
253 * tests/data/test-diff-filter/test9-report.txt: Adjust.
254
2552015-04-22 Dodji Seketeli <dodji@redhat.com>
256
257 Support specifying data member insertion in suppressions
258 * include/abg-comparison.h (type_suppression::insertion_range):
259 Declare new type.
260 (type_suppression::insertion_ranges): Declare new typedef.
261 (type_suppression::{s,g}et_data_member_insertion_ranges): Declare
262 new member functions.
263 (is_integer_boundary, is_fn_call_expr_boundary): Declare new
264 functions.
265 (type_suppression::insertion_range::{boundary, integer_boundary,
266 fn_call_expr_boundary}): Define new types.
267 * src/abg-comparison.cc:
268 (struct type_suppression::insertion_range::priv): New type.
269 (type_suppression::insertion_range::{insertion_range, begin,
270 end}): Define new member functions.
271 (type_suppression::priv::insertion_ranges_): Add data member.
272 (type_suppression::{s,g}et_data_member_insertion_ranges): Define
273 new member functions.
274 (type_suppression::insertion_range::boundary::priv): Define new
275 type.
276 (type_suppression::insertion_range::boundary::{boundary,
277 ~boundary}): Define new member functions.
278 (type_suppression::insertion_range::integer_boundary::priv):
279 Define new type.
280 (type_suppression::insertion_range::integer_boundary::{integer_boundary,
281 as_integer, operator int, ~integer_boundary}): Define member
282 functions.
283 (type_suppression::insertion_range::fn_call_expr_boundary::priv):
284 Define new type.
285 (type_suppression::insertion_range::fn_call_expr_boundary::{fn_call_expr_boundary,
286 as_function_call_expr, operator ini::function_call_expr_sptr}):
287 Define new member functions.
288 (type_suppression::insertion_range::{create_integer_boundary,
289 type_suppression::insertion_range::create_fn_call_expr_boundary,
290 type_suppression::insertion_range::eval_boundary}): Define new
291 member functions.
292 (is_integer_boundary, is_fn_call_expr_boundary): Define new
293 functions.
294 (read_type_suppression, read_function_suppression)
295 (read_variable_suppression): Support the new kinds of
296 property-related types. Aslo, in read_type_suppression, support
297 the new properties has_data_member_inserted_at,
298 has_data_member_inserted_between and
299 has_data_members_inserted_between.
300 (type_suppression::suppresses_diff): If we are looking at a type
301 diff node that has inserted data members, evaluate the insertion
302 ranges of the current type_suppression and see if they match the
303 inserted data members.
304 * include/abg-ini.h (property, simple_property, property_value)
305 (string_property_value, tuple_property_value, function_call_expr):
306 Declare new types.
307 (property_sptr, property_value_sptr, string_property_value_sptr)
308 (tuple_property_value_sptr): Declare new typedefs.
309 (is_string_property_value, is_tuple_property_value)
310 (is_simple_property, is_tuple_property, read_function_call_expr):
311 Declare new functions.
312 * src/abg-ini.cc (char_is_white_space, char_is_comment_start)
313 (char_is_delimiter, char_is_property_value_char)
314 (char_is_section_name_char, char_is_property_name_char)
315 (char_is_comment_start, char_is_white_space)
316 (remove_trailing_white_spaces, is_string_property_value)
317 (is_tuple_property_value, is_simple_property, is_tuple_property)
318 (write_property_value, char_is_function_name_char)
319 (char_is_function_argument_char): Define new functions.
320 (property::priv, tuple_property_value::priv)
321 (simple_property::priv, tuple_property::priv): Define new types.
322 (property::{property, get_name, set_name, ~property}): Define new
323 member functions.
324 (struct property_value::priv): Define new type.
325 (property_value::{property_value, get_kind, operator const
326 string&(), ~property_value}): Define new member functions.
327 (struct string_property_value::priv): Define new type.
328 (string_property_value::{string_property_value, set_content,
329 as_string, operator string()}, ~string_property_value): Define new
330 member functions.
331 (tuple_property_value::{tuple_property_value, get_value_items,
332 ~tuple_property_value, as_string}): Likewise.
333 (simple_property::{simple_property, get_value, set_value,
334 ~simple_property}): Likewise.
335 (tuple_property::{tuple_property, set_value, get_value}):
336 Likewise.
337 (config::section::find_property): Adjust return type.
338 (read_context::{char_is_delimiter, char_is_property_value_char,
339 char_is_section_name_char, char_is_property_name_char,
340 char_is_comment_start, char_is_white_space}): Remove these from
341 here as they got moved them to be non-member functions above.
342 (read_context::read_property_value): Return a property_value_sptr
343 and do not take any parameter anymore.
344 (read_context::{read_string_property_value,
345 read_tuple_property_value, read_function_name,
346 read_function_argument, read_function_call_expr}): Define new
347 member functions.
348 (read_context::read_property): Adjust return type. Also, change to read
349 the different new kinds of properties values.
350 (function_call_expr::priv): Define new type.
351 (function_call_expr::{function_call_expr, get_name,
352 get_arguments}): New member functions.
353 (read_context::read_section): Adjust.
354 (write_property, write_section): Adjust.
355 * tests/data/test-diff-suppr/libtest{11,12}-add-data-member-v{0,1}.so:
356 New test input binaries.
357 * tests/data/test-diff-suppr/test{11,12}-add-data-member-{0,1}.suppr:
358 New input suppression files.
359 * tests/data/test-diff-suppr/test11-add-data-member-{2,3,4}.suppr:
360 Add new test input files.
361 * tests/data/test-diff-suppr/test{11,12}-add-data-member-report-{0,1}.txt:
362 New reference output files.
363 * tests/data/test-diff-suppr/test12-add-data-member-report-2.txt:
364 Likewise.
365 * tests/data/test-diff-suppr/test{11,12}-add-data-member-v{0,1}.cc:
366 Source code for the new binaries above.
367 * tests/test-diff-suppr.cc (in_out_specs): Add new test inputs.
368 * tests/data/Makefile.am: Add the new test related files above to
369 source distribution.
370 * doc/manuals/libabigail-concepts.rst: Document the new properties
371 has_data_member_inserted_at, has_data_member_inserted_between and
372 has_data_members_inserted_between.
373
3742015-05-24 Dodji Seketeli <dodji@redhat.com>
375
376 Make indexes of function parameters start at 1
377 * src/abg-ir.cc (function_type::function_type): Starts the index
378 of the parameters at 1, unless the firs parameter is an artificial
379 one, in which case it starts at 0.
380 * tests/data/test-abicompat/test5-fn-changed-report-0.txt: Adjust.
381 * tests/data/test-diff-dwarf/test0-report.txt: Adjust.
382 * tests/data/test-diff-dwarf/test1-report.txt: Adjust.
383 * tests/data/test-diff-dwarf/test10-report.txt: Adjust.
384 * tests/data/test-diff-dwarf/test11-report.txt: Adjust.
385 * tests/data/test-diff-dwarf/test13-report.txt: Adjust.
386 * tests/data/test-diff-dwarf/test15-enum-report.txt: Adjust.
387 * tests/data/test-diff-dwarf/test2-report.txt: Adjust.
388 * tests/data/test-diff-dwarf/test20-add-fn-parm-report-0.txt: Adjust.
389 * tests/data/test-diff-dwarf/test21-redundant-fn-report-0.txt: Adjust.
390 * tests/data/test-diff-dwarf/test22-changed-parm-c-report-0.txt: Adjust.
391 * tests/data/test-diff-dwarf/test24-added-fn-parms-report-0.txt: Adjust.
392 * tests/data/test-diff-dwarf/test25-removed-fn-parms-report-0.txt: Adjust.
393 * tests/data/test-diff-dwarf/test26-added-parms-before-variadic-report.txt: Adjust.
394 * tests/data/test-diff-dwarf/test4-report.txt: Adjust.
395 * tests/data/test-diff-dwarf/test6-report.txt: Adjust.
396 * tests/data/test-diff-dwarf/test7-report.txt: Adjust.
397 * tests/data/test-diff-dwarf/test8-report.txt: Adjust.
398 * tests/data/test-diff-filter/test0-report.txt: Adjust.
399 * tests/data/test-diff-filter/test01-report.txt: Adjust.
400 * tests/data/test-diff-filter/test1-report.txt: Adjust.
401 * tests/data/test-diff-filter/test10-report.txt: Adjust.
402 * tests/data/test-diff-filter/test13-report.txt: Adjust.
403 * tests/data/test-diff-filter/test14-0-report.txt: Adjust.
404 * tests/data/test-diff-filter/test14-1-report.txt: Adjust.
405 * tests/data/test-diff-filter/test16-report-2.txt: Adjust.
406 * tests/data/test-diff-filter/test16-report.txt: Adjust.
407 * tests/data/test-diff-filter/test17-0-report.txt: Adjust.
408 * tests/data/test-diff-filter/test17-1-report.txt: Adjust.
409 * tests/data/test-diff-filter/test18-report.txt: Adjust.
410 * tests/data/test-diff-filter/test19-enum-report-1.txt: Adjust.
411 * tests/data/test-diff-filter/test2-report.txt: Adjust.
412 * tests/data/test-diff-filter/test22-compatible-fns-report-0.txt: Adjust.
413 * tests/data/test-diff-filter/test23-redundant-fn-parm-change-report-0.txt: Adjust.
414 * tests/data/test-diff-filter/test25-cyclic-type-report-0.txt: Adjust.
415 * tests/data/test-diff-filter/test25-cyclic-type-report-1.txt: Adjust.
416 * tests/data/test-diff-filter/test26-qualified-redundant-node-report-0.txt: Adjust.
417 * tests/data/test-diff-filter/test26-qualified-redundant-node-report-1.txt: Adjust.
418 * tests/data/test-diff-filter/test27-redundant-and-filtered-children-nodes-report-1.txt: Adjust.
419 * tests/data/test-diff-filter/test27-redundant-and-filtered-children-nodes-report-2.txt: Adjust.
420 * tests/data/test-diff-filter/test28-redundant-and-filtered-children-nodes-report-0.txt: Adjust.
421 * tests/data/test-diff-filter/test28-redundant-and-filtered-children-nodes-report-1.txt: Adjust.
422 * tests/data/test-diff-filter/test3-report.txt: Adjust.
423 * tests/data/test-diff-filter/test9-report.txt: Adjust.
424 * tests/data/test-diff-suppr/test0-type-suppr-report-0.txt: Adjust.
425 * tests/data/test-diff-suppr/test0-type-suppr-report-3.txt: Adjust.
426 * tests/data/test-diff-suppr/test1-typedef-suppr-report-0.txt: Adjust.
427 * tests/data/test-diff-suppr/test1-typedef-suppr-report-2.txt: Adjust.
428 * tests/data/test-diff-suppr/test10-changed-parm-c-report-0.txt: Adjust.
429 * tests/data/test-diff-suppr/test2-struct-suppr-report-0.txt: Adjust.
430 * tests/data/test-diff-suppr/test3-struct-suppr-report-0.txt: Adjust.
431 * tests/data/test-diff-suppr/test3-struct-suppr-report-1.txt: Adjust.
432 * tests/data/test-diff-suppr/test3-struct-suppr-report-2.txt: Adjust.
433 * tests/data/test-diff-suppr/test4-local-suppr-report-0.txt: Adjust.
434 * tests/data/test-diff-suppr/test4-local-suppr-report-1.txt: Adjust.
435 * tests/data/test-diff-suppr/test5-fn-suppr-report-0.txt: Adjust.
436 * tests/data/test-diff-suppr/test5-fn-suppr-report-1.txt: Adjust.
437 * tests/data/test-diff-suppr/test5-fn-suppr-report-2.txt: Adjust.
438 * tests/data/test-diff-suppr/test5-fn-suppr-report-3.txt: Adjust.
439 * tests/data/test-diff-suppr/test5-fn-suppr-report-4.txt: Adjust.
440 * tests/data/test-diff-suppr/test5-fn-suppr-report-5.txt: Adjust.
441 * tests/data/test-diff-suppr/test6-fn-suppr-report-0.txt: Adjust.
442 * tests/data/test-diff-suppr/test6-fn-suppr-report-1.txt: Adjust.
443 * tests/data/test-diff-suppr/test6-fn-suppr-report-2.txt: Adjust.
444 * tests/data/test-diff-suppr/test6-fn-suppr-report-3.txt: Adjust.
445 * tests/data/test-diff-suppr/test8-redundant-fn-report-0.txt: Adjust.
446 * tests/data/test-diff-suppr/test8-redundant-fn-report-1.txt: Adjust.
447 * tests/data/test-diff-suppr/test9-changed-parm-c-report-0.txt: Adjust.
448 * tests/data/test-diff-suppr/test9-changed-parm-c-report-1.txt: Adjust.
449
4502015-05-22 Dodji Seketeli <dodji@redhat.com>
451
452 Some wording fixes to doc/manuals/libabigail-concepts.rst
453 * doc/manuals/libabigail-concepts.rst: Some light wording fixes.
454
4552015-05-24 Dodji Seketeli <dodji@redhat.com>
456
457 Type read from DWARF don't have alignment information
458 * src/abg-dwarf-reader.cc (build_type_decl)
459 (build_class_type_and_add_to_ir, build_pointer_type_def)
460 (build_reference_type, build_function_decl): Set the alignment for
461 native types, class, reference and function type to zero,
462 effectively meaning that they don't have alignment information.
463 * src/abg-hash.cc (var_decl::hash::operator): Take the hash value
464 of the data member context in account when computing the hash
465 value of a given data member.
466 * tests/data/test-diff-dwarf/test-23-diff-arch-report-0.txt:
467 Adjust.
468 * tests/data/test-diff-dwarf/test10-report.txt: Likewise.
469 * tests/data/test-diff-dwarf/test13-report.txt: Likewise.
470 * tests/data/test-diff-dwarf/test22-changed-parm-c-report-0.txt: Likewise.
471 * tests/data/test-diff-dwarf/test26-added-parms-before-variadic-report.txt: Likewise.
472 * tests/data/test-diff-dwarf/test8-report.txt: Likewise.
473 * tests/data/test-diff-dwarf/test9-report.txt: Likewise.
474 * tests/data/test-diff-filter/test13-report.txt: Likewise.
475 * tests/data/test-diff-filter/test6-report.txt: Likewise.
476 * tests/data/test-diff-suppr/test9-changed-parm-c-report-0.txt: Likewise.
477 * tests/data/test-read-dwarf/test0.abi: Likewise.
478 * tests/data/test-read-dwarf/test1.abi: Likewise.
479 * tests/data/test-read-dwarf/test2.so.abi: Likewise.
480 * tests/data/test-read-dwarf/test3.so.abi: Likewise.
481 * tests/data/test-read-dwarf/test4.so.abi: Likewise.
482 * tests/data/test-read-dwarf/test5.o.abi: Likewise.
483 * tests/data/test-read-dwarf/test6.so.abi: Likewise.
484 * tests/data/test-read-dwarf/test7.so.abi: Likewise.
485 * tests/data/test-read-dwarf/test8-qualified-this-pointer.so.abi: Likewise.
486
4872015-05-06 Dodji Seketeli <dodji@redhat.com>
488
489 Better name ID function parameters
490 * src/abg-ir.cc (function_decl::parameter::get_name_id): Make this
491 be "parameter-<index>".
492
4932015-05-06 Dodji Seketeli <dodji@redhat.com>
494
495 Better detection of parameter sub-type changes
496 * include/abg-fwd.h (type_has_sub_type_changes): Declare new
497 function.
498 * src/abg-ir.cc (type_has_sub_type_changes): Define it.
499 * src/abg-comparison.cc (fn_parm_diff::report): Use the new
500 function type_has_sub_type_changes() instead of just looking at
501 name changes.
502 * tests/data/test-diff-dwarf/test4-report.txt: Adjust this
503 reference test output.
504
5052015-05-06 Dodji Seketeli <dodji@redhat.com>
506
507 Fix a potential crash when comparing variadic parameters again
508 * src/abg-comparison.cc (redundancy_marking_visitor::visit_begin):
509 Avoid flagging diffs of variadic parameter *types* as redundant as
510 well.
511
5122015-05-06 Dodji Seketeli <dodji@redhat.com>
513
514 Add debugging function for function parameters
515 * include/abg-ir.h
516 (function_decl::parameter::get_pretty_representation): Declare new
517 virtual member function.
518 * src/abg-ir.cc
519 (function_decl::parameter::get_pretty_representation): Define it.
520
5212015-05-06 Dodji Seketeli <dodji@redhat.com>
522
523 Add comments
524 * src/abg-dwarf-reader.cc (build_function_decl): Add comments when
525 building the function parameters.
526
5272015-05-06 Dodji Seketeli <dodji@redhat.com>
528
529 Add a debugging function for type_or_decl_base*
530 * include/abg-fwd.h (get_pretty_representation): Declare new
531 overload for type_or_decl_base*.
532 * src/abg-ir.cc (get_pretty_representation): Define it and express
533 the previous overload for type_or_decl_base_sptr in terms of this
534 new one.
535
5362015-05-05 Dodji Seketeli <dodji@redhat.com>
537
538 Return a reference to smart pointer for the void type node
539 * src/abg-ir.h (type_decl::get_void_type_decl): Return a reference
540 to the smart pointer initially returned.
541 * src/abg-ir.cc (type_decl::get_void_type_decl): Likewise.
542
5432015-05-05 Dodji Seketeli <dodji@redhat.com>
544
545 Bug 18342 - Segmentation fault while comparing functions with variadic parameters
546 * include/abg-fwd.h (is_array_type): New overload for a naked
547 pointer.
548 * include/abg-ir.h (type_decl::get_variadic_parameter_type_decl): Declare new
549 static function.
550 * src/abg-ir.cc (is_array_type): Define new function overload for
551 naked pointers
552 (type_decl::get_variadic_parameter_type_decl): Define new static
553 function.
554 * src/abg-dwarf-reader.cc (build_function_decl): The type of
555 variadic parameter is now a special type_decl.
556 * include/abg-comparison.h (is_diff_of_variadic_parameter_type)
557 (is_diff_of_variadic_parameter): New function declarations.
558 * src/abg-comparison.cc (is_diff_of_variadic_parameter_type)
559 (is_diff_of_variadic_parameter): Define new functions.
560 (compute_diff): Refuse to return a NULL
561 diff for types. Assert that the parameters are non-NULL.
562 (report_size_and_alignment_changes): We are comparing arrays only
563 if the two parameters are arrays.
564 (fn_parm_diff::fn_parm_diff): Refuse that type diff for this diff
565 node is non empty.
566 (fn_parm_diff::report): Strengthen an assert. Cleanup a comment.
567 (redundancy_marking_visitor::visit_begin): Do not mark function
568 type and variadic parms diff nodes as redundant for local changes.
569 * tests/data/test-diff-dwarf/libtest26-added-parms-before-variadic-v{0,1}.so:
570 New test input binaries.
571 * tests/data/test-diff-dwarf/test26-added-parms-before-variadic-report.txt:
572 New test output reference.
573 * tests/data/test-diff-dwarf/test26-added-parms-before-variadic-v{0,1}.c:
574 Source code of the new test input binaries above.
575 * tests/data/Makefile.am: Add the new test stuff to source
576 distribution.
577 * tests/test-diff-dwarf.cc (in_out_specs): Add the new test inputs
578 above to the set of input to run this test harness over.
579
5802015-04-24 Dodji Seketeli <dodji@redhat.com>
581
582 Fix archive writing support
583 * configure.ac: Require libzip 0.10.1 at least.
584 * src/abg-writer.cc (archive_write_ctxt::serialized_tus): Make
585 this be a list<string>, rather than a vector<string>.
586 (create_archive_write_context): Truncate the archive if it exists
587 already.
588 (write_translation_unit_to_archive): Do not use the deprecated
589 zip_add() function anymore. Rather, use zip_file_add().
590 * tests/test-write-read-archive.cc (main): Double check if the
591 translation unit we read is empty or not.
592
5932015-04-22 Dodji Seketeli <dodji@redhat.com>
594
595 Use a better wording for the COPYING file
596 * COPYING: Update to a more complete description.
597
5982015-04-20 Dodji Seketeli <dodji@redhat.com>
599
600 Update licence texts
601 * COPYING: Of course we know the licence we want to use now :-)
602 * COPYING-GPLV3: Add the text of GPLv3.
603 * Makefile.am: Add the file COPYING-GPLV3 above to source
604 distribution.
605
6062015-04-15 Dodji Seketeli <dodji@redhat.com>
607
608 18252 - Added parameters are not properly sorted
609 * src/abg-comparison.cc (sort_string_parm_map): Define new static
610 function.
611 (struct parm_comp): Define new type.
612 (function_type_diff::priv::{sorted_deleted_parms_,
613 sorted_added_parms_}): New data members that hold sorted
614 deleted/added parameters.
615 (function_type_diff::ensure_lookup_tables_populated): Initialize
616 the two new data members above.
617 (function_type_diff::report): For the report of parameters that
618 got added/removed, use the sorted set of added/removed parameters
619 above.
620 * tests/data/test-diff-dwarf/test24-added-fn-parms-report-0.txt:
621 New test input.
622 * tests/data/test-diff-dwarf/libtest24-added-fn-parms-v{0,1}.so:
623 Likewise.
624 * tests/data/test-diff-dwarf/test25-removed-fn-parms-report-0.txt:
625 Likewise.
626 * tests/data/test-diff-dwarf/libtest25-removed-fn-parms-v{0,1}.so:
627 Likewise.
628 * tests/data/test-diff-dwarf/test24-added-fn-parms-v{0,1}.c:
629 Likewise.
630 * tests/data/test-diff-dwarf/test25-removed-fn-parms-v{0,1}.c:
631 Likewise.
632 * tests/data/Makefile.am: Add the new test material above to the
633 source distribution.
634
6352015-04-14 Dodji Seketeli <dodji@redhat.com>
636
637 Misc reporting fixes/improvements
638 * src/abg-comparison.cc (distinct_diff::report): Remove spurious
639 vertical space before reporting size and alignment changes here.
640 (represent): In the variables/data member overload, report type
641 changes first. Then the other changes.
642 (report_size_and_alignment_changes): Make this report array size
643 changes too. Also, make some small adjustments about how type
644 size/alignment changes are introduced.
645 (array_diff::report): Now that report_size_and_alignment_changes()
646 supports size change reporting, just use that function rather than
647 doing it here.
648 (corpus_diff::report): Consistently add a space between each
649 changed function report. Prefix changed variables with a [C],
650 just like for functions.
651 * tests/data/test-abicompat/test0-fn-changed-report-0.txt: Adjust.
652 * tests/data/test-abicompat/test5-fn-changed-report-0.txt: Likewise.
653 * tests/data/test-abicompat/test6-var-changed-report-0.txt: Likewise.
654 * tests/data/test-abidiff/test-qual-type0-report.txt: Likewise.
655 * tests/data/test-abidiff/test-struct0-report.txt: Likewise.
656 * tests/data/test-abidiff/test-struct1-report.txt: Likewise.
657 * tests/data/test-abidiff/test-var0-report.txt: Likewise.
658 * tests/data/test-diff-dwarf/test-23-diff-arch-report-0.txt: Likewise.
659 * tests/data/test-diff-dwarf/test0-report.txt: Likewise.
660 * tests/data/test-diff-dwarf/test1-report.txt: Likewise.
661 * tests/data/test-diff-dwarf/test10-report.txt: Likewise.
662 * tests/data/test-diff-dwarf/test11-report.txt: Likewise.
663 * tests/data/test-diff-dwarf/test13-report.txt: Likewise.
664 * tests/data/test-diff-dwarf/test15-enum-report.txt: Likewise.
665 * tests/data/test-diff-dwarf/test2-report.txt: Likewise.
666 * tests/data/test-diff-dwarf/test20-add-fn-parm-report-0.txt: Likewise.
667 * tests/data/test-diff-dwarf/test21-redundant-fn-report-0.txt: Likewise.
668 * tests/data/test-diff-dwarf/test22-changed-parm-c-report-0.txt: Likewise.
669 * tests/data/test-diff-dwarf/test3-report.txt: Likewise.
670 * tests/data/test-diff-dwarf/test6-report.txt: Likewise.
671 * tests/data/test-diff-dwarf/test7-report.txt: Likewise.
672 * tests/data/test-diff-dwarf/test8-report.txt: Likewise.
673 * tests/data/test-diff-dwarf/test9-report.txt: Likewise.
674 * tests/data/test-diff-filter/test0-report.txt: Likewise.
675 * tests/data/test-diff-filter/test01-report.txt: Likewise.
676 * tests/data/test-diff-filter/test1-report.txt: Likewise.
677 * tests/data/test-diff-filter/test10-report.txt: Likewise.
678 * tests/data/test-diff-filter/test11-report.txt: Likewise.
679 * tests/data/test-diff-filter/test13-report.txt: Likewise.
680 * tests/data/test-diff-filter/test14-0-report.txt: Likewise.
681 * tests/data/test-diff-filter/test14-1-report.txt: Likewise.
682 * tests/data/test-diff-filter/test15-0-report.txt: Likewise.
683 * tests/data/test-diff-filter/test15-1-report.txt: Likewise.
684 * tests/data/test-diff-filter/test16-report-2.txt: Likewise.
685 * tests/data/test-diff-filter/test16-report.txt: Likewise.
686 * tests/data/test-diff-filter/test17-0-report.txt: Likewise.
687 * tests/data/test-diff-filter/test17-1-report.txt: Likewise.
688 * tests/data/test-diff-filter/test18-report.txt: Likewise.
689 * tests/data/test-diff-filter/test19-enum-report-1.txt: Likewise.
690 * tests/data/test-diff-filter/test2-report.txt: Likewise.
691 * tests/data/test-diff-filter/test20-inline-report-1.txt: Likewise.
692 * tests/data/test-diff-filter/test21-compatible-vars-report-0.txt: Likewise.
693 * tests/data/test-diff-filter/test22-compatible-fns-report-0.txt: Likewise.
694 * tests/data/test-diff-filter/test23-redundant-fn-parm-change-report-0.txt: Likewise.
695 * tests/data/test-diff-filter/test24-compatible-vars-report-1.txt: Likewise.
696 * tests/data/test-diff-filter/test25-cyclic-type-report-0.txt: Likewise.
697 * tests/data/test-diff-filter/test25-cyclic-type-report-1.txt: Likewise.
698 * tests/data/test-diff-filter/test26-qualified-redundant-node-report-0.txt: Likewise.
699 * tests/data/test-diff-filter/test26-qualified-redundant-node-report-1.txt: Likewise.
700 * tests/data/test-diff-filter/test27-redundant-and-filtered-children-nodes-report-0.txt: Likewise.
701 * tests/data/test-diff-filter/test27-redundant-and-filtered-children-nodes-report-1.txt: Likewise.
702 * tests/data/test-diff-filter/test27-redundant-and-filtered-children-nodes-report-2.txt: Likewise.
703 * tests/data/test-diff-filter/test28-redundant-and-filtered-children-nodes-report-0.txt: Likewise.
704 * tests/data/test-diff-filter/test28-redundant-and-filtered-children-nodes-report-1.txt: Likewise.
705 * tests/data/test-diff-filter/test3-report.txt: Likewise.
706 * tests/data/test-diff-filter/test6-report.txt: Likewise.
707 * tests/data/test-diff-filter/test9-report.txt: Likewise.
708 * tests/data/test-diff-suppr/test0-type-suppr-report-0.txt: Likewise.
709 * tests/data/test-diff-suppr/test0-type-suppr-report-3.txt: Likewise.
710 * tests/data/test-diff-suppr/test1-typedef-suppr-report-0.txt: Likewise.
711 * tests/data/test-diff-suppr/test1-typedef-suppr-report-2.txt: Likewise.
712 * tests/data/test-diff-suppr/test10-changed-parm-c-report-0.txt: Likewise.
713 * tests/data/test-diff-suppr/test2-struct-suppr-report-0.txt: Likewise.
714 * tests/data/test-diff-suppr/test3-struct-suppr-report-0.txt: Likewise.
715 * tests/data/test-diff-suppr/test3-struct-suppr-report-1.txt: Likewise.
716 * tests/data/test-diff-suppr/test3-struct-suppr-report-2.txt: Likewise.
717 * tests/data/test-diff-suppr/test4-local-suppr-report-0.txt: Likewise.
718 * tests/data/test-diff-suppr/test4-local-suppr-report-1.txt: Likewise.
719 * tests/data/test-diff-suppr/test5-fn-suppr-report-0.txt: Likewise.
720 * tests/data/test-diff-suppr/test5-fn-suppr-report-1.txt: Likewise.
721 * tests/data/test-diff-suppr/test5-fn-suppr-report-2.txt: Likewise.
722 * tests/data/test-diff-suppr/test5-fn-suppr-report-3.txt: Likewise.
723 * tests/data/test-diff-suppr/test5-fn-suppr-report-4.txt: Likewise.
724 * tests/data/test-diff-suppr/test5-fn-suppr-report-5.txt: Likewise.
725 * tests/data/test-diff-suppr/test6-fn-suppr-report-0.txt: Likewise.
726 * tests/data/test-diff-suppr/test6-fn-suppr-report-1.txt: Likewise.
727 * tests/data/test-diff-suppr/test6-fn-suppr-report-2.txt: Likewise.
728 * tests/data/test-diff-suppr/test6-fn-suppr-report-3.txt: Likewise.
729 * tests/data/test-diff-suppr/test7-var-suppr-report-0.txt: Likewise.
730 * tests/data/test-diff-suppr/test7-var-suppr-report-1.txt: Likewise.
731 * tests/data/test-diff-suppr/test7-var-suppr-report-2.txt: Likewise.
732 * tests/data/test-diff-suppr/test7-var-suppr-report-3.txt: Likewise.
733 * tests/data/test-diff-suppr/test7-var-suppr-report-4.txt: Likewise.
734 * tests/data/test-diff-suppr/test7-var-suppr-report-7.txt: Likewise.
735 * tests/data/test-diff-suppr/test7-var-suppr-report-8.txt: Likewise.
736 * tests/data/test-diff-suppr/test8-redundant-fn-report-0.txt: Likewise.
737 * tests/data/test-diff-suppr/test8-redundant-fn-report-1.txt: Likewise.
738 * tests/data/test-diff-suppr/test9-changed-parm-c-report-0.txt: Likewise.
739 * tests/data/test-diff-suppr/test9-changed-parm-c-report-1.txt: Likewise.
740
7412015-04-10 Dodji Seketeli <dodji@redhat.com>
742
743 Make abidiff and abicompat return meaningful exit codes
744 * doc/manuals/abicompat.rst: Update documentation for abicompat
745 exit codes.
746 * doc/manuals/abidiff.rst: Likewise for abidiff exit codes.
747 * include/abg-tools-utils.h (enum abidiff_status): Declare new
748 enum.
749 (operator{|,&,|=}): Declare new operators for the new enum
750 abidiff_status.
751 (abidiff_status_has_error, abidiff_status_has_abi_change)
752 (abidiff_status_has_incompatible_abi_change): Declare new
753 functions.
754 * src/abg-tools-utils.cc (operator{|,&,|=}): Define these new
755 operators.
756 (abidiff_status_has_error, abidiff_status_has_abi_change)
757 (abidiff_status_has_incompatible_abi_change): Define new
758 functions.
759 * tests/test-diff-filter.cc (main): Adjust for the new exit code
760 of abidiff.
761 * tests/test-diff-suppr.cc (main): Likewise.
762 * tests/test-abicompat.cc (main): Likewise.
763 * tools/abicompat.cc (enum abicompat_status): Remove.
764 (operator{|,&,|=}): Remove these operators for enum
765 abicompat_status.
766 (perform_compat_check_in_normal_mode)
767 (perform_compat_check_in_weak_mode): Return abidiff_status instead
768 of abicompat_status. Adjust therefore.
769 (main): Adjust to return abidiff_status now, instead of a just
770 zero for all non-error cases.
771 * tools/abidiff.cc (main): Likewise.
772
7732015-04-01 Dodji Seketeli <dodji@redhat.com>
774
775 Add support for abicompat weak mode
776 * include/abg-fwd.h (class type_or_decl_base): Forward declare
777 this.
778 (is_decl, is_type, is_function_type, get_name, get_type_name)
779 (get_function_type_name, get_pretty_representation)
780 (lookup_function_type_in_corpus, lookup_type_in_translation_unit)
781 (lookup_function_type_in_translation_unit)
782 (synthesize_function_type_from_translation_unit)
783 (hash_type_or_decl): New function declarations.
784 * src/abg-corpus.cc (lookup_type_in_corpus)
785 (lookup_function_type_in_corpus): Define new functions.
786 * include/abg-ir.h
787 (translation_unit::lookup_function_type_in_translation_unit):
788 Declare new friend function.
789 (class type_or_decl_base): Declare this.
790 (operator==(const type_or_decl_base&, const type_or_decl_base&)):
791 Declare new operator.
792 (operator==(const type_or_decl_base_sptr&, const
793 type_or_decl_base_sptr&)): Likewise.
794 (class {decl_base, type_base}): Make these class inherit
795 type_or_decl_base.
796 (decl_base::get_member_scopes): New const overload.
797 (bool operator==(const function_decl::parameter_sptr&,
798 const function_decl::parameter_sptr&)): New operator.
799 (function_type::get_parameters): Remove the non-const overload.
800 (function_type::get_pretty_representation): Declare new member
801 function.
802 (method_type::get_pretty_representation): Likewise.
803 * src/abg-ir.cc (bool operator==(const type_or_decl_base&, const
804 type_or_decl_base&)): Define new equality operator.
805 (bool operator==(const type_or_decl_base_sptr&, const
806 type_or_decl_base_sptr&)): Likewise.
807 (strip_typedef): Do not expect canonicalized types anymore. Now
808 the system accepts (and expects) canonicalized types in certain
809 cases. For instance, non-complete types and aggregated types that
810 contain non-complete sub-types.
811 (get_name, get_function_type_name, get_type_name)
812 (get_pretty_representation, is_decl, is_type, is_function_type)
813 (lookup_function_type_in_translation_unit)
814 (synthesize_function_type_from_translation_unit)
815 (lookup_type_in_scope, lookup_type_in_translation_unit): Define
816 new functions or new overloads.
817 (bool operator==(const function_decl::parameter_sptr&,
818 const function_decl::parameter_sptr& r)): Define
819 new operator.
820 (function_type::get_parameters): Remove non-const overload.
821 (function_type::get_pretty_representation): Define new function.
822 (function_type::traverse): Adjust.
823 (method_type::get_pretty_representation): Likewise.
824 (function_decl::get_pretty_representation): Avoid emitting the
825 type of cdtors.
826 (hash_type_or_decl): Define new function.
827 * include/abg-dwarf-reader.h (create_read_context)
828 (read_corpus_from_elf): Take a new 'read_all_types' flag.
829 * src/abg-dwarf-reader.cc (read_context::load_all_types_): New
830 flag.
831 (read_context::read_context): Initialize it.
832 (read_context::canonical_types_scheduled): If some types still
833 have non-canonicalized sub-types, then do not canonicalize them.
834 (read_context::load_all_types): New member functions.
835 (build_function_decl): Do not represent void return type like
836 empty type anymore, rather, represent it like a void type node.
837 (build_ir_node_from_die): When asked, load all types
838 including those that are not reachable from an exported
839 declaration.
840 (create_read_context, read_corpus_from_elf): Take a new
841 'load_all_types' flag and honour it.
842 * src/abg-reader.cc (read_context::type_is_from_translation_unit):
843 Support looking up function types in the current translation unit,
844 now that we now how to lookup function types.
845 * include/abg-comparison.h (diff_context::{has_diff_for, add_diff,
846 set_canonical_diff_for, set_or_get_canonical_diff_for,
847 get_canonical_diff_for}): Make these take instances of
848 type_or_decl_base_sptr, instead of decl_base_sptr.
849 (diff::diff): Likewise.
850 (diff::{first_subject, second_subject}): Make these return
851 type_or_decl_base_sptr instead of decl_base_sptr.
852 (type_diff_base::type_diff_base): Make these take instances of
853 type_or_decl_base_sptr instead of decl_base_sptr.
854 (distinct_diff::distinct_diff): Likewise.
855 (distinct_diff::{first, second}): Make these return
856 type_or_decl_base_sptr instead of decl_base_sptr.
857 (distinct_diff::entities_are_of_distinct_kinds): Make these take
858 instances of type_or_decl_base_sptr instead of decl_base_sptr.
859 (class function_type_diff): Create this new type. It's a
860 factorization of the function_decl_diff type.
861 * src/abg-comparison.cc ():
862 * src/abg-comp-filter.cc ({harmless, harmful}_filter::visit):
863 Adjust as diff::{first,second}_subject() now returns a
864 type_or_decl_base_sptr, no more a decl_base_sptr.
865 (decls_type, decls_diff_map_type): Remove these typedefs and replace it with ...
866 (types_or_decls_type, types_or_decls_diff_map_type): ... these.
867 (struct {decls_hash, decls_equals): Remove these type sand replace them with ...
868 (struct {types_or_decls_hash, types_or_decls_equals}): ... these.
869 ({type_suppression, variable_suppression}::suppresses_diff):
870 Adjust.
871 (diff_context::priv::decls_diff_map): Replace this with ...
872 (diff_context::priv::types_or_decls_diff_map): ... this.
873 (diff_context::{has_diff_for, add_diff, get_canonical_diff_for,
874 set_canonical_diff_for, set_or_get_canonical_diff_for}): Take
875 type_or_decl_base_sptr instead of decl_base_sptr.
876 (diff::priv::{first, second}_subject): Make the type of these be
877 type_or_decl_base_sptr, no more decl_base_sptr.
878 (diff::priv::priv): Adjust for the subjects of the diff being of
879 type type_or_decl_sptr now, no more decl_base_sptr.
880 (diff_less_than_functor::operator()(const diff_sptr, const
881 diff_sptr) const): Adjust.
882 (diff::diff): djust for the subjects of the diff being of type
883 type_or_decl_sptr now, no more decl_base_sptr.
884 (diff::{first,second}_subject): Make the type of these be
885 type_or_decl_base_sptr, no more decl_base_sptr.
886 (report_size_and_alignment_changes): Likewise.
887 (type_diff_base::type_diff_base): Make the type of this be
888 type_or_decl_base_sptr instead of type_base_sptr.
889 (distinct_diff::distinct_diff): Make this take instances of
890 type_or_decl_base_sptr instead of decl_base_sptr.
891 (distinct_diff::{first, second, entities_are_of_distinct_kinds}):
892 Likewise.
893 (distinct_diff::has_changes): Simplify logic.
894 (distinct_diff::report): Adjust.
895 (compute_diff_for_types): Add an additional case to support the
896 new function_type.
897 (report_size_and_alignment_changes): Make this take instances of
898 type_or_decl_base_sptr instead of decl_base_sptr.
899 (class_diff::priv::member_type_has_changed): Return an instance of
900 type_or_decl_base_sptr rather than a decl_base_sptr.
901 (class_diff::report): Adjust.
902 (diff_comp::operator()(const diff&, diff&) const): Adjust.
903 (enum function_decl_diff::priv::Flags): Remove.
904 (function_decl_diff::priv::{first_fn_flags_, second_fn_flags_,
905 fn_flags_changes_}): Remove.
906 (function_decl_diff::priv::{fn_is_declared_inline_to_flag,
907 fn_binding_to_flag}): Remove.
908 (function_decl_diff::{deleted_parameter_at,
909 inserted_parameter_at}): Remove.
910 (function_decl_diff::ensure_lookup_tables_populated): Empty this.
911 (function_decl_diff::chain_into_hierarchy): Adjust.
912 (function_decl_diff::function_decl_diff): This now only takes the
913 subjects. It's body is now empty.
914 (function_decl_diff::{return_type_diff, subtype_changed_parms,
915 removed_parms, added_parms, type_diff}): Remove these member
916 functions.
917 (function_decl_diff::type_diff): Define new member function.
918 (function_decl_diff::report): Simplify logic by using the
919 reporting of the child type diff node.
920 (compute_diff): Likewise, in the overload for function_decl_sptr
921 simplify logic by using the child type diff object.
922 (function_type_diff::priv): Define new type.
923 (function_type_diff::{function_type_diff,
924 ensure_lookup_tables_populated, deleted_parameter_at,
925 inserted_parameter_at, finish_diff_type, first_function_type,
926 second_function_type, return_type_diff, subtype_changed_parms,
927 removed_parms, added_parms, get_pretty_representation,
928 has_changes, has_local_changes, report, chain_into_hierarchy}):
929 Define new functions.
930 (compute_diff): Define new overload for function_type_sptr.
931 * tools/abicompat.cc (options::weak_mode): New data member.
932 (options::options): Initialize it.
933 (enum abicompat_status): New enum
934 (abicompat_status operator|(abicompat_status, abicompat_status))
935 (abicompat_status& operator|=(abicompat_status &, abicompat_status))
936 (abicompat_status operator&(abicompat_status, abicompat_status)):
937 New operators to manipulate the abicompat_status enum.
938 (display_usage): Add help string for the new --weak-mode option.
939 (parse_command_line): Add the new --weak-mode command line
940 argument. If the tool is called with just the application and one
941 library then assume that we are in the weak mode.
942 (perform_compat_check_in_normal_mode): Define new function, factorized
943 from what was in the main function.
944 (perform_compat_check_in_weak_mode): Define new function.
945 (struct {fn,var}_change): Define new types.
946 (main): Use perform_compat_check_in_weak_mode() and
947 perform_compat_check_in_normal_mode().
948 * tools/abidiff.cc (main): Adjust.
949 * tools/abidw.cc: (options::load_all_types): Add new data member.
950 (options::options): Initialize it.
951 (display_usage): New help string for --load-all-types.
952 (parse_command_line): Support the new --load-all-types option.
953 (main): Adjust and honour the --load-all-types option.
954 * tools/abilint.cc (main): Adjust.
955 * doc/manuals/abicompat.rst: Update documentation for the new weak
956 mode. Also provide stuff that was missing from the examples
957 provided.
958 * doc/manuals/abidw.rst: Update documentation for the new
959 --load-all-types option.
960 * tests/print-diff-tree.cc (main): Adjust.
961 * tests/test-diff-dwarf.cc (main): Likewise.
962 * tests/test-read-dwarf.cc (main): Likewise.
963 * tests/data/test-abicompat/test0-fn-changed-app: Recompile this.
964 * tests/data/test-abicompat/libtest5-fn-changed-libapp-v{0,1}.so:
965 New new test input binaries
966 * tests/data/test-abicompat/test5-fn-changed-app: Likewise.
967 * tests/data/test-abicompat/test6-var-changed-app: Likewise.
968 * tests/data/test-abicompat/libtest6-var-changed-libapp-v{0,1}.so:
969 Likewise.
970 * tests/data/test-abicompat/test5-fn-changed-report-0.txt:
971 Reference output for one test above.
972 * tests/data/test-abicompat/test6-var-changed-report-0.txt:
973 Likewise.
974 * tests/data/test-abicompat/test5-fn-changed-app.cc: Source file
975 for a binary above.
976 * tests/data/test-abicompat/test5-fn-changed-libapp-v{0,1}.{h,cc}:
977 Likewise.
978 * tests/data/test-abicompat/test6-var-changed-libapp-v{0,1}.{cc,h}:
979 Likewise.
980 * tests/data/test-abicompat/test6-var-changed-app.cc: Likewise.
981 * tests/data/Makefile.am: Add the test related files above to the
982 source distribution.
983 * tests/test-abicompat.cc (in_out_spec): Add the new test input
984 above to the list of inputs to feed to this test harness.
985 (main): Support taking just the app and one library.
986 * tests/data/test-read-dwarf/test{0, 1, 2.so, 3.so, 5.o,
987 8-qualified-this-pointer.so,}.abi: Adjust for void type being
988 really emitted now, as opposed to just being an empty type.
989
9902015-04-01 Dodji Seketeli <dodji@redhat.com>
991
992 18186 - Assertion in abigail::ir::class_decl::hash::operator()
993 * src/abg-dwarf-reader.cc (build_class_type_and_add_to_ir): When
994 the size of the class is provided then the class is complete, no
995 matter if this function called to update the class or to build it
996 for the first time.
997
9982015-03-31 Sinny Kumari <sinny@redhat.com>
999
1000 Check if EM_AARCH64, EM_TILEPRO and EM_TILEGX macros are defined in elf.h
1001 * config.h.in: Generated autoheader by configure.ac
1002 for added macros
1003 * configure.ac: Defining HAVE_EM_AARCH64_MACRO,
1004 HAVE_EM_TILEPRO_MACRO and HAVE_EM_TILEGX_MACRO to check
1005 whether EM_AARCH64, EM_TILEPRO and EM_TILEGX macros are defined
1006 in elf.h or not
1007 * src/abg-dwarf-reader.cc (e_machine_to_string): Look for
1008 EM_AARCH64, EM_TILEPRO and EM_TILEGX macros only
1009 if they are defined in elf.h
1010
10112015-03-30 Dodji <dodji@ks305400.kimsufi.com>
1012
1013 PR libabigail/18180
1014 * src/abg-hash.cc (class_decl::hash::operator()(const class_decl&)
1015 const): Return zero only for class declarations that are not
1016 resolved.
1017 * tests/data/test-read-write/test20.xml: Fix the output to make a
1018 class definition to reference its declaration, when there was a
1019 forward declaration for it.
1020
10212015-03-30 Dodji Seketeli <dodji@redhat.com>
1022
1023 18179 - abidiff crashes on libcangjie
1024 * include/abg-fwd.h (lookup_class_type_in_corpus)
1025 (lookup_class_type_in_translation_unit): Declare new functions.
1026 * src/abg-ir.cc (lookup_class_type_in_translation_unit): Define
1027 new function.
1028 (get_node, convert_node_to_decl): Define new specializations for
1029 the class_decl type.
1030 * src/abg-corpus.cc (lookup_class_type_in_corpus): Define new
1031 function.
1032 * src/abg-dwarf-reader.cc
1033 (read_context::resolve_declaration_only_classes): Lookup class
1034 types specifically.
1035
10362015-03-30 Dodji Seketeli <dodji@redhat.com>
1037
1038 Forgot to initialize a data member
1039 * src/abg-reader.cc (read_context::read_context): Initialize the
1040 new m_exported_decls_builder_ data member.
1041
10422015-03-30 Dodji Seketeli <dodji@redhat.com>
1043
1044 18166 - Abidiff fails with internal on Libtirpc ABI in XML format
1045 * src/abg-reader.cc (read_context::m_exported_decls_builder_): New
1046 data member.
1047 (read_context::read_context): Initialize it.
1048 (read_context::{type_is_from_translation_unit,
1049 get_exported_decls_builder, set_exported_decls_builder,
1050 maybe_add_fn_to_exported_decls, maybe_add_fn_to_exported_decls,
1051 type_id_new_in_translation_unit}): New member functions.
1052 (read_context::clear_per_translation_unit_data): Clear id->xml
1053 node map here ...
1054 (read_context::clear_per_corpus_data): ... not here.
1055 (read_context::walk_xml_node_to_map_type_ids): Only walk the
1056 sub-tree we are asked to walk.
1057 (read_translation_unit_from_input): Cleanup.
1058 (read_corpus_from_input): Wire populating of exported declarations
1059 of the current corpus.
1060 (build_function_decl, build_var_decl): Populate exported
1061 declarations of the current corpus here.
1062 (build_type_decl, build_qualified_type_decl)
1063 (build_pointer_type_def, build_reference_type_def)
1064 (build_array_type_def, build_enum_type_decl, build_type_decl)
1065 (build_template_tparameter): Adjust assert on ID to make sure
1066 it's the first type it's being defined in the current translation
1067 unit.
1068 * tests/data/test-abidiff/test-corpus0-report0.txt: New test
1069 reference output.
1070 * tests/data/test-abidiff/test-corpus0-v{0,1}.so.abi: New test
1071 input.
1072 * tests/test-abidiff.cc (specs): Add the test inputs above to the
1073 list of inputs over which to run the test harness.
1074 (main): Support reading corpora too, as this test harness was
1075 reading just translation units before.
1076 (tests/data/Makefile.am): Add test material above to source
1077 distribution.
1078
10792015-03-19 Dodji Seketeli <dodji@redhat.com>
1080
1081 Update the CONTRIBUTING file
1082 * CONTRIBUTING: How to check out the web pages.
1083
10842015-03-19 Dodji Seketeli <dodji@redhat.com>
1085
1086 Update website documentation
1087 * doc/website/mainpage.txt: Update the web page.
1088
10892015-03-18 Dodji Seketeli <dodji@redhat.com>
1090
1091 Cleanup type canonicalizing logic
1092 * src/abg-ir.cc (type_base::get_canonical_type_for): Cleanup the
1093 logic here. Basically since we are not trying to cache the result
1094 of type hashing anymore, this can be simpler.
1095
10962015-03-18 Dodji Seketeli <dodji@redhat.com>
1097
1098 Fix redundancy propagation on node with filtered local changes
1099 *NOT* take in account the categories inherited from its children
1100 nodes. That way, it's possible to know if the *local changes* of a
1101 given node have been filtered out.
1102 * include/abg-comparison.h (diff::{get_local_category,
1103 add_to_local_category, add_to_local_and_inherited_categories,
1104 remove_from_local_category, set_local_category,
1105 is_filtered_out_wrt_non_inherited_categories,
1106 has_local_changes_to_be_reported}): Declare new member functions.
1107 * src/abg-comp-filter.cc ({harmless, harmful}_filter::{visit,
1108 visit_end}): Update local category too.
1109 * src/abg-comparison.cc (diff::priv::local_category_): Add new
1110 data member.
1111 (diff::priv::priv): Initialize it.
1112 (diff::priv::is_filtered_out): Add new member function. This is
1113 factorized out of diff::is_filtered_out().
1114 (diff::is_filtered_out): Re-write in terms of
1115 diff::priv::is_filtered_out().
1116 (diff::{get_local_category, add_to_local_category,
1117 add_to_local_and_inherited_categories, remove_from_local_category,
1118 set_local_category, is_filtered_out_wrt_non_inherited_categories,
1119 has_local_changes_to_be_reported}): Define new member functions.
1120 (suppression_categorization_visitor::visit_begin): Update local
1121 categories too.
1122 (redundancy_marking_visitor::visit_end): If all of the children
1123 nodes of the a diff node N are redundant and if N has filtered-out
1124 local changes, then N is redundant too.
1125 * tests/data/test-diff-filter/libtest28-redundant-and-filtered-children-nodes-v{1,2}.so:
1126 New binary test inputs.
1127 * tests/data/test-diff-filter/test28-redundant-and-filtered-children-nodes-v{0,1}.cc:
1128 Source code for the binary test inputs above.
1129 * tests/data/test-diff-filter/test28-redundant-and-filtered-children-nodes-report-{0,1}.txt:
1130 New test output references.
1131 * tests/test-diff-filter.cc (in_out_specs): Add the test inputs
1132 above to the set of inputs this test harness has to run over.
1133 * tests/data/Makefile.am: Add the test materials above to the
1134 source distribution.
1135
11362015-03-17 Dodji Seketeli <dodji@redhat.com>
1137
1138 Various style cleanups
1139 * src/abg-hash.cc (class_decl::hash::operator()(const class_decl&
1140 t) const): Fix comment.
1141 * src/abg-ir.cc (lookup_node_in_scope): Likewise.
1142 (class_decl::add_base_specifier): Use base_spec_sptr rather than
1143 shared_ptr<base_spec>.
1144 (class non_canonicalized_subtype_detector): Fix comment.
1145
11462015-03-17 Dodji Seketeli <dodji@redhat.com>
1147
1148 Make is_global_scope() return a pointer to the global scope
1149 * include/abg-fwd.h (is_global_scope): Return a global_scope*.
1150 * src/abg-ir.cc (is_global_scope): Likewise.
1151
11522015-03-17 Dodji Seketeli <dodji@redhat.com>
1153
1154 Add a useful assert in the comparison engine
1155 * src/abg-comparison.cc (qualified_type_diff::report): Assert that
1156 if the qualified type diff node has changes to be reported and no
1157 local change, then its child node must have changes to be
1158 reported.
1159
11602015-03-17 Dodji Seketeli <dodji@redhat.com>
1161
1162 Fix diff report about non-static data members.
1163 * src/abg-comparison.cc
1164 (class_diff::priv::{get_deleted_non_static_data_members_number,
1165 get_inserted_non_static_data_members_number}): Define new member
1166 functions.
1167 (class_diff::reports): Use the new functions above. Also, add
1168 forgotten new lines where they belong.
1169
11702015-03-17 Dodji Seketeli <dodji@redhat.com>
1171
1172 Do not cache hash values in decl_base::get_hash
1173 * src/abg-ir.cc (decl_base::get_hash): Do not cache the hash
1174 value.
1175
11762015-03-17 Dodji Seketeli <dodji@redhat.com>
1177
1178 Do not miss early non-complete type resolution when it's possible
1179 * src/abg-dwarf-reader.cc (build_class_type_and_add_to_ir): A type
1180 that has its size defined is not non-complete. Same if it has a
1181 method or a member type.
1182
11832015-03-17 Dodji Seketeli <dodji@redhat.com>
1184
1185 Delay non-complete class type resolution up to end of corpus reading
1186 * include/abg-fwd.h (lookup_type_in_corpus): Declare new function.
1187 * src/abg-corpus.cc (lookup_type_in_corpus): Define new function
1188 here.
1189 * include/abg-ir.h (function_types_type): Declare new typedef.
1190 (translation_unit::get_canonical_function_type): Remove member function.
1191 (translation_unit::bind_function_type_life_time): Declare new
1192 member function.
1193 (classes_type): New typedef.
1194 * src/abg-ir.cc
1195 (translation_unit::priv::canonical_function_types_): Remove data
1196 member.
1197 (translation_unit::priv::function_types): New data member.
1198 (translation_unit::get_canonical_function_type): Remove this
1199 function definition.
1200 (translation_unit::bind_function_type_life_time): New function
1201 definition.
1202 (lookup_node_in_scope): Ensure that the type returned is
1203 complete.
1204 * src/abg-dwarf-reader.cc (string_classes_map): New typedef.
1205 (read_context::decl_only_classes_map_): New data member.
1206 (read_context::declaration_only_classes): New accessor.
1207 (read_context::{maybe_schedule_declaration_only_class_for_resolution,
1208 is_decl_only_class_scheduled_for_resolution,
1209 resolve_declaration_only_classes, current_elf_file_is_executable,
1210 current_elf_file_is_dso}): Define new member functions.
1211 (read_context::clear_per_translation_unit_data): Do not clear the
1212 data structures that associate DIEs to decls/types or that contain
1213 the types to canonicalize here. Rather, clear them ...
1214 (read_context::clear_per_corpus_data): ... here instead.
1215 (read_context::build_translation_unit_and_add_to_ir): Do not
1216 perform late type canonicalizing here. Rather, do it ...
1217 (read_debug_info_into_corpus): ... here instead. And before that,
1218 call read_context::clear_per_corpus_data() and the new
1219 read_context::resolve_declaration_only_classes() here.
1220 (build_class_type_and_add_to_ir): Schedule the non-complete types
1221 for resolution to complete types. Assert that base classes that
1222 are non-complete are scheduled to be completed.
1223 (build_function_decl): Do not try to canonicalize function types
1224 this early, systematically. Now, all the non-complete types needs
1225 to be completed before starting canonicalizing. So let function
1226 types go through the normal processes of deciding when to
1227 canonicalize them. But then, bind the life time of the function
1228 type to the life time of the current translation unit.
1229 (maybe_canonicalize_type): If a class type is non-complete,
1230 schedule it for late canonicalizing.
1231 * src/abg-hash.cc (class_decl::hash::operator()(const class_decl&)
1232 const): During hashing, a base class should be complete.
1233 * src/abg-reader.cc
1234 (read_context::clear_per_translation_unit_data): Do not clear
1235 id/xml node, and type maps here. Rather, clear it ...
1236 (read_context::clear_per_corpus_data): ... here instead.
1237 (read_translation_unit_from_input): Do not perform late
1238 canonicalizing here. Rather, do it ...
1239 (read_corpus_from_input): ... here. Also, call the new
1240 read_context::clear_per_corpus_data() here.
1241 (build_function_decl): Do not canonicalize function types here so
1242 early. Rather, bind the life time of the function type to the
1243 life time of the translation unit.
1244 * src/abg-writer.cc (write_translation_unit): Do not clear the
1245 type/ID map here.
1246 * tests/data/test-read-dwarf/test2.so.abi: Adjust test input.
1247
12482015-03-17 Dodji Seketeli <dodji@redhat.com>
1249
1250 Add --no-architecture option to abidw
1251 * tools/abidw.cc (options::write_architecture): New flag.
1252 (options::options): Initialize it.
1253 (display_usage): Add usage string for the new --no-architecture
1254 option.
1255 (parse_command): Parse the new --no-architecture command line
1256 option.
1257 (main): Ignore the architecture name if required by the user.
1258
12592015-03-13 Dodji Seketeli <dodji@redhat.com>
1260
1261 We shouldn't build qualified types with empty underlying type
1262 * src/abg-ir.cc (qualified_type_def::qualified_type_def): Assert
1263 that we shouldn't build qualified types with empty underlying
1264 type.
1265
12662015-03-13 Dodji Seketeli <dodji@redhat.com>
1267
1268 Add an overload for is_type() that takes naked pointers
1269 * include/abg-fwd.h (is_type): Declare new overload that takes a
1270 naked pointer.
1271 * src/abg-ir.cc (is_type): Define new overload that takes a naked
1272 pointer.
1273
12742015-03-13 Dodji Seketeli <dodji@redhat.com>
1275
1276 Declaration-only classes shouldn't have canonical types
1277 * include/abg-fwd.h (keep_type_alive): Declare new function.
1278 * src/abg-ir.cc (strip_typedef): Simplify logic. Support types
1279 that are not canonicalized.
1280 (type_base::get_canonical_type_for): For declaration-only classes,
1281 return an empty canonical class, forcing the class to be compared
1282 structurally.
1283 (keep_type_alive): Define new function.
1284 * src/abg-hash.cc ({decl_base, type_decl, scope_type_decl,
1285 qualified_type_def, pointer_type_def, reference_type_def,
1286 array_type_def, enum_type_decl, typedef_decl,
1287 class_decl::member_class_template, class_decl, type_tparameter,
1288 template_tparameter, }::hash::operator()): Do not cache the
1289 computed hash.
1290
12912015-03-13 Dodji Seketeli <dodji@redhat.com>
1292
1293 Fix redundancy categorization propagation
1294 * src/abg-comparison.cc (redundancy_marking_visitor::visit_end):
1295 Consider the cases of changes that are a filtered out.
1296 * tests/data/test-diff-filter/libtest27-redundant-and-filtered-children-nodes-v{0,1}.so:
1297 New test binaries to use as test input.
1298 * tests/data/test-diff-filter/test27-redundant-and-filtered-children-nodes-report-{0,1,2}.txt:
1299 New test result baselines.
1300 * tests/data/test-diff-filter/test27-redundant-and-filtered-children-nodes-v{0,1}.cc:
1301 Source code for the test input binaries above.
1302 * tests/test-diff-filter.cc (in_out_spec): Add the binaries to the
1303 test inputs used for this test harness.
1304 * tests/data/Makefile.am: Add the new test material above to the
1305 distribution.
1306
13072015-03-13 Dodji Seketeli <dodji@redhat.com>
1308
1309 Fix thinko in has_virtual_mem_fn_change().
1310 * src/abg-comp-filter.cc (has_virtual_mem_fn_change): Fix thinko.
1311
13122015-03-13 Dodji Seketeli <dodji@redhat.com>
1313
1314 From inside the comparison engine re-use IR's equality operators
1315 * include/abg-ir.h (operator==(scope_decl_sptr, scope_decl_sptr)):
1316 Declare.
1317 (operator==(type_decl_sptr, type_decl_sptr)): Likewise.
1318 (operator==(enum_type_decl_sptr, enum_type_decl_sptr)): Likewise.
1319 * src/abg-comparison.cc (diff_length_of_decl_bases)
1320 (diff_length_of_type_bases): Remove these static functions.
1321 (class_diff::has_changes): Re-use the comparison operator for
1322 class_decl_sptr.
1323 (type_decl_diff::has_changes): Re-use the comparison operator for
1324 type_decl_sptr.
1325 * src/abg-ir.cc (operator==(scope_decl_sptr, scope_decl_sptr)):
1326 Define.
1327 (operator==(type_decl_sptr, type_decl_sptr)): Likewise.
1328 (operator==(enum_type_decl_sptr, enum_type_decl_sptr)): Likewise.
1329
13302015-03-11 Dodji Seketeli <dodji@redhat.com>
1331
1332 Remove unnecessary vertical white space from diff report
1333 * src/abg-comparison.cc (class_diff::report): When reporting
1334 virtual member functions make sure to emit the newline only if one
1335 report for member function has already been emitted.
1336
13372015-03-10 Dodji Seketeli <dodji@redhat.com>
1338
1339 Cleanup array_type_def::is_infinite
1340 * src/abg-ir.cc (array_type_def::is_infinite): Style cleanup.
1341
13422015-03-10 Dodji Seketeli <dodji@redhat.com>
1343
1344 Make a function static as it oughts to be
1345 * src/abg-ir.cc (get_type_representation): Make this static.
1346
13472015-03-10 Dodji Seketeli <dodji@redhat.com>
1348
1349 Canonicalize function types
1350 * src/abg-dwarf-reader.cc (build_function_decl): Call
1351 maybe_canonicalize_type to canonicalize the function type.
1352
13532015-03-10 Dodji Seketeli <dodji@redhat.com>
1354
1355 Use more naked pointers when comparing function types
1356 * src/abg-ir.cc (equals): In the overload for function types, use
1357 more naked pointers, less smart pointers.
1358
13592015-03-10 Dodji Seketeli <dodji@redhat.com>
1360
1361 Pass a bunch of smart pointers by reference
1362 * include/abg-fwd.h (get_member_is_static, is_member_function)
1363 (get_member_function_is_ctor, set_member_function_is_ctor)
1364 (get_member_function_is_dtor, set_member_function_is_dtor)
1365 (get_member_function_is_const, set_member_function_is_const)
1366 (get_member_function_vtable_offset)
1367 (set_member_function_vtable_offset)
1368 (get_member_function_is_virtual): Declare the smart pointer
1369 parameter of these as being passed by reference.
1370 * include/abg-ir.h (get_member_access_specifier)
1371 (get_member_is_static, get_member_access_specifier)
1372 (set_member_function_is_ctor, set_member_function_is_const)
1373 (set_member_function_vtable_offset): Likewise, for these friend
1374 declarations to the decl_base type.
1375 * src/abg-ir.cc (get_member_access_specifier)
1376 (get_member_is_static, is_member_function)
1377 (get_member_function_is_ctor, set_member_function_is_ctor)
1378 (get_member_function_is_dtor, set_member_function_is_dtor)
1379 (get_member_function_is_const, set_member_function_is_const)
1380 (get_member_function_vtable_offset)
1381 (set_member_function_vtable_offset)
1382 (get_member_function_is_virtual): In these definitions, the smart
1383 pointer parameter is passed by reference.
1384
13852015-03-10 Dodji Seketeli <dodji@redhat.com>
1386
1387 Make decl_base::get_context_rel() return a naked pointer
1388 * include/abg-fwd.h (set_member_is_static): Add an overload that
1389 takes the member as a reference to a smart pointer.
1390 (set_member_function_{is_dtor, is_ctor, is_const, vtable_offset,
1391 is_virtual}): Pass the member function as a reference.
1392 (set_member_function_is_const, set_member_function_is_virtual):
1393 Pass the member function as a non-const reference.
1394 * include/abg-ir.h (decl_base::get_context_rel): Return a naked
1395 pointer.
1396 (set_member_is_static, set_member_function_is_virtual): Adjust
1397 this friend declaration.
1398 (set_member_access_specifier): Add an overload that takes a
1399 reference to the member. Pass a reference to smart pointer to the
1400 other overload.
1401 (set_member_function_is_{is_ctor,is_dtor,is_const,is_virtual,vtable_offset}):
1402 Take a non-const reference to function_decl.
1403 * src/abg-ir.cc (decl_base::get_context_rel): Likewise.
1404 (equals(const decl_base&, const decl_base&, change_kind*)):
1405 Adjust.
1406 (equals(const var_decl&, const var_decl&, change_kind*)):
1407 Likewise.
1408 (get_member_access_specifier, get_member_is_static)
1409 (set_data_member_offset, get_data_member_offset)
1410 (set_data_member_is_laid_out, get_data_member_is_laid_out)
1411 (get_member_function_is_ctor, set_member_function_is_ctor)
1412 (get_member_function_is_dtor, set_member_function_is_dtor)
1413 (get_member_function_is_const, set_member_function_is_const)
1414 (get_member_function_vtable_offset)
1415 (set_member_function_vtable_offset)
1416 (get_member_function_is_virtual, set_member_function_is_virtual):
1417 Likewise.
1418 (set_member_access_specifier): Add an overload that takes a
1419 reference to decl_base.
1420 (set_member_is_static, set_member_function_{is_dtor, is_ctor,
1421 is_const, vtable_offset, is_virtual}): Pass the member function as
1422 a reference.): Add an overload that takes the member as a
1423 reference, and write the older overload in terms of the new one.
1424
14252015-03-09 Dodji Seketeli <dodji@redhat.com>
1426
1427 Make overloads of decl_base::get_qualified_name() return a reference
1428 * incude/abg-ir.h (decl::get_{qualified_name,
1429 qualified_parent_name}): Return a reference to a string rather
1430 than a copy of a string.
1431 (qualified_type_def::get_qualified_name): Likewise.
1432 (reference_type_def::get_qualified_name): Likewise.
1433 (array_type_def::get_qualified_name): Likewise.
1434 (class enum_type_decl::enumerator): Make this is an out-of-line
1435 pimpled class implementation.
1436 (enum_type_decl::enumerator::{get, set}_enum_type): Declare new
1437 method.
1438 (enum_type_decl::enumerator::get_qualified_name): Change this so
1439 that it doesn't take the name of the enum type anymore.
1440 * src/abg-comparison.cc (enum_diff::report): Adjust for
1441 enum_type_decl::enumerator::get_qualified_name() not taking the
1442 name of the enum type anymore.
1443 * src/abg-ir.cc (decl_base::get_qualified_parent_name): Return a
1444 reference to string.
1445 (decl_base::get_qualified_name): Likewise.
1446 (decl_base::get_qualified_name(string&)): Use the new verson of
1447 decl_base::get_qualified_name() that returns a reference.
1448 ({qualified_type_def, pointer_type_def, reference_type_def,
1449 array_type_def}::get_qualified_name()): Return a string reference.
1450 ({qualified_type_def, pointer_type_def, reference_type_def,
1451 array_type_def}::get_qualified_name(string& qualified_name)
1452 const): Use the new qualified_type_def::get_qualified_name() that
1453 returns a string reference.
1454 (class enum_type_decl::priv): New type.
1455 (enum_type_decl::{get_underlying_type, get_enumerators}): Adjust.
1456 (enum_type_decl::{enumerator::enumerator, enumerator::operator==,
1457 enumerator::get_name, enumerator::get_qualified_name,
1458 enumerator::set_name, enumerator::get_value,
1459 enumerator::set_value, enumerator::get_enum_type,
1460 enumerator::set_enum_type}): Define methodes out-of-line here.
1461
14622015-02-24 Dodji Seketeli <dodji@redhat.com>
1463
1464 Harden strip_typedef
1465 * src/abg-ir.cc (strip_typedef): Consider that the underlying type
1466 can be void.
1467
14682015-02-24 Dodji Seketeli <dodji@redhat.com>
1469
1470 When reading DWARF set member type access where the type is built
1471 * include/abg-fwd.h (is_class(decl_base*)): Return a class_decl*
1472 rather than just a bool.
1473 * abg-ir.cc (is_class(decl_base*)): Return a class_decl* rather
1474 than just a bool. Simplify the implementation.
1475 * src/abg-dwarf-reader.cc
1476 (maybe_set_member_type_access_specifier): Define new static
1477 function.
1478 (build_ir_node_from_die): Remove the is_member_type flag. When
1479 building member types set their access specifier. Simplify the
1480 logic of detecting that a type is a member type; basically
1481 delegate taht to the new maybe_set_member_type_access_specifier().
1482 (build_class_type_and_add_to_ir): Do not try to set the member
1483 type access specifiers anymore.
1484 (build_qualified_type, build_pointer_type, build_reference_type)
1485 (build_typedef_type, build_var_decl, build_function_decl): Adjust.
1486
14872015-02-24 Dodji Seketeli <dodji@redhat.com>
1488
1489 Fix enum_diff::has_changes()
1490 * src/abg-comparison.cc (enum_diff::has_changes): Just use the
1491 normal comparison operator to compare the two enums here. It's
1492 fast now.
1493
14942015-02-23 Dodji Seketeli <dodji@redhat.com>
1495
1496 Build the set of exported decls directly during DWARF loading
1497 * include/abg-ir.h ({var,function}_decl::get_id): Return a
1498 reference.
1499 * src/abg-ir.cc ({var,function}_decl::get_id): Return a reference
1500 to the string rather than copying it over.
1501 * include/abg-corpus.h (class corpus::exported_decls_builder):
1502 Declare new type.
1503 (corpus::{sort_functions, sort_variables,
1504 maybe_drop_some_exported_decls, get_exported_decls_builder}):
1505 Declare new methods.
1506 * src/abg-corpus.h (corpus::exported_decls_builder::priv): Define
1507 new type.
1508 (class symtab_build_visitor_type): Remove this type that is
1509 useless now.
1510 (corpus::exported_decls_builder::{exported_decls_builder,
1511 exported_functions, exported_variables,
1512 maybe_add_fn_to_exported_fns, maybe_add_var_to_exported_vars}):
1513 Define new functions.
1514 (corpus::priv::is_public_decl_table_built): Remove this data
1515 member. It's now useless.
1516 (corpus::priv::priv): Adjust.
1517 (corpus::priv::build_public_decl_table): Remove this member
1518 function. It's now useless.
1519 (corpus::{priv::build_unreferenced_symbols_tables, get_functions,
1520 get_variables}): No need to build the public decls table here.
1521 It's already built by the time the corpus is read from DWARF now.
1522 (corpus::{sort_functions, sort_variables,
1523 maybe_drop_some_exported_decls, get_exported_decls_builder}):
1524 Define new member functions.
1525 * src/abg-dwarf-reader.cc (read_context::exported_decls_builder):
1526 New data member.
1527 (read_context::read_context): Initialize it.
1528 (read_context::{exported_decls_builder,
1529 maybe_add_fn_to_exported_fns, maybe_add_var_to_exported_vars}):
1530 Define new member functions.
1531 (read_debug_info_into_corpus): Get the the new
1532 'exported_decls_builder' object from the corpus and stick it into
1533 the read context so the DWARF reading code can use it to build the
1534 exported decls set. When the DWARF reading is done, sort the set
1535 of exported functions and variables that was built.
1536 (build_ir_node_from_die): When a function or variable is built,
1537 consider putting it into the set of exported decls.
1538 * tools/abicompat.cc (main): Now that the exported decls is built
1539 *before* we had a chance to stick the list of symbol IDs to keep,
1540 call corpus::maybe_drop_some_exported_decls() to update the set of
1541 exported decls we should consider for the corpus.
1542 was applied to that list and the final
1543
15442015-02-22 Dodji Seketeli <dodji@redhat.com>
1545
1546 Fix canonicalizing of member types ... *AGAIN*
1547 * src/abg-dwarf-reader.cc (build_ir_node_from_die): For typedefs,
1548 we don't need to test that the current scope is a class to know
1549 that we are looking at a member type. Just looking at the
1550 is_member flag is enough.
1551 So the issue arises when for instance, we are reading a class that
1552 defines a member typedef (or enum) and uses that enum as the type of a
1553 data member. When reading that data member (before reading the
1554 definition of the typedef), we read the type of the data member; so we
1555 hit the typedef. But build_ir_node_from_die() cannot fully construct
1556 the scope of the typedef before handing off the typedef because we are
1557 currently building it! So it hands out a non-complete version of the
1558 class that is being built; 'is_member' is not set to 'true' because
1559 we are getting the type of the data member; it's not *necessarily* a
1560 member type. So we need to check !is_class_type(scope) to know if we
1561 are given a member type. I am now thinking that the "is_member" flag
1562 is actually useless. I think I'll remove it in a later patch.
1563 Anyway, this fixes 'abidiff libabigail.so libabigail.so' again. I
1564 have some stashed patches that brings it's time down to ~ 45 seconds.
1565 So we are getting close to being able to include that *ultimate* test in
1566 regression test suite. Oh well.
1567 * src/abg-dwarf-reader.cc (build_ir_node_from_die): When building
1568 typedefs, enum and memeber classes, check that the scope is a
1569 member class to detect if we are building a member type. In which
1570 case the caller is going to handle the canonicalizing of the
1571 member type *after* it's access specification has been adjusted.
1572 Otherwise, that adjustments happens after the type has been
1573 canonicalized and bad things happen at comparison type.
1574
15752015-02-21 Dodji Seketeli <dodji@redhat.com>
1576
1577 Bug 17649 Avoid endless looping on diff graph with cycles
1578 * include/abg-comp-filter.h (harm{less,ful}_filter::visit_end):
1579 Declare new methods.
1580 * include/abg-comparison.h (diff_context::maybe_apply_filters):
1581 Remove the traverse_nodes_once flag.
1582 * src/abg-comp-filter.cc (apply_filter): Force the traversing to
1583 operate in cycle avoidance mode.
1584 (harm{less,ful}_filter::visit): Update the category of the
1585 canonical node too.
1586 (harm{less,ful}_filter::visit_end): Define new method.
1587 * src/abg-comparison.cc (diff_context::maybe_apply_filters):
1588 Remove the traverse_nodes_once flag. Adjust. Simplify logic.
1589 (diff::traverse): Always call diff_node_visitor::{begin,end}. If
1590 the node has already been visited previously then do not call
1591 diff_node_visitor::visit() and do not visit the children nodes.
1592 (category_propagation_visitor::visit_end): If the node has
1593 already been visited, then propagate the category from the
1594 canonical nodes of the children nodes.
1595 (propagate_categories): Force the traversing to operate in cycle
1596 avoidance mode.
1597
15982015-02-20 Dodji Seketeli <dodji@redhat.com>
1599
1600 Add missing new line after reporting alignment changes
1601 * src/abg-comparison.cc (distinct_diff::report): After calling
1602 report_size_and_alignment_changes, one needs to add a new line if
1603 some stuff got emitted out the output stream.
1604
16052015-02-20 Dodji Seketeli <dodji@redhat.com>
1606
1607 Add type checking overloads that ease their calling from GDB
1608 * include/abg-fwd.h (is_class_type, is_pointer, is_reference_type)
1609 (is_qualified_type): Declare overloads that take naked (non-smart)
1610 pointers.
1611 * src/abg-ir.cc (is_class_type, is_pointer, is_reference_type)
1612 (is_qualified_type): Define overloads that take naked (non-smart)
1613 pointers.
1614
16152015-02-20 Dodji Seketeli <dodji@redhat.com>
1616
1617 Remove overly eager assert in distinct_diff::report
1618 * src/abg-comparison.cc (distinct_diff::report): Remove over-eager
1619 assert.
1620
16212015-02-20 Dodji Seketeli <dodji@redhat.com>
1622
1623 Factorize late canonicalizing code in the dwarf reader
1624 * src/abg-dwarf-reader.cc
1625 (read_context::{canonicalize_types_scheduled,
1626 perform_late_type_canonicalizing}): Factorize these from ...
1627 (build_translation_unit_and_add_to_ir): ... here.
1628
16292015-02-20 Dodji Seketeli <dodji@redhat.com>
1630
1631 Rename schedule_type_for_canonicalization -> schedule_type_for_late_canonicalization
1632 * src/abg-dwarf-reader.cc
1633 (read_context::schedule_type_for_late_canonicalization): Renamed
1634 read_context::schedule_type_for_canonicalization into this. Also,
1635 add some sanity checking code in there.
1636 (build_class_type_and_add_to_ir, maybe_canonicalize_type): Adjust.
1637
16382015-02-20 Dodji Seketeli <dodji@redhat.com>
1639
1640 Adjust semantics of the 'is_member' flag of build_ir_node_from_die()
1641 * src/abg-dwarf-reader.cc (build_ir_node_from_die): Rename
1642 is_member into is_member_type. Adjust.
1643 (get_scope_for_die, build_translation_unit_and_add_to_ir)
1644 (build_namespace_decl_and_add_to_ir): Adjust.
1645 (build_class_type_and_add_to_ir): Adjust. Adjust set to false
1646 when calling build_ir_node_from_die() to build a function_decl.
1647
16482015-02-20 Dodji Seketeli <dodji@redhat.com>
1649
1650 Simplify canonicalizing handling for typedefs
1651 * src/abg-dwarf-reader.cc (build_ir_node_from_die): For typedefs,
1652 we don't need to test that the current scope is a class to know
1653 that we are looking at a member type. Just looking at the
1654 is_member flag is enough.
1655
16562015-02-20 Dodji Seketeli <dodji@redhat.com>
1657
1658 Do not miss canonicalizing opportunities on non-member class types
1659 * src/abg-dwarf-reader.cc (build_ir_node_from_die): When a class
1660 is not a member type, then it at least ought to be scheduled for
1661 late canonicalizing.
1662
16632015-02-20 Dodji Seketeli <dodji@redhat.com>
1664
1665 Fix handling of canonicalizing of member enum types
1666 * src/abg-dwarf-reader.cc (build_ir_node_from_die): Once we've
1667 built the enum type by calling build_enum_type(), do not try to
1668 canonicalize it here if it's a member type. The calling
1669 build_class_type_and_add_to_ir() must deal with it already.
1670
16712015-02-20 Dodji Seketeli <dodji@redhat.com>
1672
1673 Stick qualified, pointer, reference and array types into the global scope
1674 * src/abg-dwarf-reader.cc (build_class_type_and_add_to_ir): Do not
1675 consider qualified, pointer, reference and array types as member
1676 types. Only typedef, class and enum types are.
1677 (build_ir_node_from_die): Stick base, pointer, reference,
1678 qualified and array types into the global scope.
1679
16802015-02-20 Dodji Seketeli <dodji@redhat.com>
1681
1682 Avoid creating multiple versions of certain composite types
1683 * src/abg-dwarf-reader.cc (build_qualified_type)
1684 (build_pointer_type_def, build_reference_type, build_array_type)
1685 (build_typedef_type): If the composite type we are about to create
1686 was already created, just return the one that exists already.
1687
16882015-02-20 Dodji Seketeli <dodji@redhat.com>
1689
1690 Do not forget to canonicalize enum underlying type and void type
1691 * src/abg-dwarf-reader.cc (build_enum_type): Canoncialize the
1692 underlying type of the enum type.
1693 (build_ir_node_for_void_type): Canonicalize the void type.
1694
16952015-02-20 Dodji Seketeli <dodji@redhat.com>
1696
1697 Do not forget to associate DIE to the types they represent
1698 * src/abg-dwarf-reader.cc (build_type_decl, build_enum_type)
1699 (build_qualified_type, build_pointer_type_def)
1700 (build_reference_type, build_typedef_type)
1701 (build_class_type_and_add_to_ir): Take a new flag that says if the
1702 DIE is from the alternate debug info section or not. Perform the
1703 DIE->type association in these functions. Note that in
1704 build_class_type_and_add_to_ir we are now doing the DIE->type
1705 association even for declaration-only classes. And for member
1706 types, do not bother doing the association because it's already
1707 been done by build_ir_node_from_die().
1708 (build_ir_node_from_die): Do not do the DIE->type association here
1709 anymore. Adjust to the new signature of the build_* functions
1710 above that actually build the types.
1711
17122015-02-20 Dodji Seketeli <dodji@redhat.com>
1713
1714 Clear per-TU data before reading debub info for a TU
1715 * src/abg-dwarf-reader.cc
1716 (read_context::die_type_map): New accessor for the two DIE->Type
1717 maps we have; the one of the main debug info section and the one
1718 of the alternate debug info section.
1719 (read_context::{associate_die_to_type,
1720 lookup_type_from_die_offset}): use the new die_type_map()
1721 accessor.
1722 (read_context::clear_per_translation_unit_data): Factorize this
1723 from build_translation_unit_and_add_to_ir(). Also, add code to
1724 clear the DIE->type map as well as the vectors of offsets of the
1725 types of the DIEs to canonicalize after the translation unit has
1726 been read.
1727
17282015-02-19 Dodji Seketeli <dodji@redhat.com>
1729
1730 Fix the new regression test for type canonicalizing
1731 * tests/runtestcanonicalizetypes.sh.in (binaries): Refer to
1732 abg-tools-utils, not abg-tools-utils.o; the extension is computed
1733 automatically, depending on the underlying platform.
1734
17352015-02-19 Dodji Seketeli <dodji@redhat.com>
1736
1737 Make strip_typedef() act on canonical types only
1738 * include/abg-fwd.h (is_compatible_with_class_type): Declare new
1739 function.
1740 (canonicalize): Move the declaration here, from ...
1741 * include/abg-ir.h (canonicalize): ... here.
1742 * src/abg-ir.cc (strip_typedef): Assert that the input type is
1743 canonicalized. Make sure that weak references are on
1744 canonicalized types. Make sure that the returned type is a
1745 canonical one.
1746 (canonicalize): Make this return the canonical type that it has
1747 computed.
1748 * src/abg-comp-filter.cc (type_size_changed): Use the new
1749 is_compatible_with_class_type() function, instead of
1750 is_class_type().
1751
17522015-02-18 Dodji Seketeli <dodji@redhat.com>
1753
1754 Speed up function_decl::get_id() and var_decl::get_id()
1755 * src/abg-ir.cc (var_decl::priv::id_): New data member.
1756 (var_decl::get_id): Cache the result on the first invocation and
1757 and returns it on subsequent invocations.
1758 (function_dec::priv::id_): New data member.
1759 (function_decl::get_id): Cache the result on the first invocation
1760 and and returns it on subsequent invocations.
1761
17622015-02-18 Dodji Seketeli <dodji@redhat.com>
1763
1764 Speed up symbol version reading
1765 * src/abg-dwarf-reader.cc (find_symbol_table_section)
1766 (get_symbol_versionning_sections): Forward declare these existing
1767 static functions.
1768 (read_context::{symtab_section_,
1769 symbol_versionning_sections_loaded_,
1770 symbol_versionning_sections_found_, versym_section_
1771 verdef_section, verneed_section}): New data members.
1772 (read_context::read_context): Initialize them.
1773 (read_context::{find_symbol_table_section,
1774 get_symbol_versionning_sections, get_version_for_symbol}):
1775 Implement a caching version of their exisiting non-caching
1776 counterpart.
1777 (read_context::lookup_elf_symbol_from_index): Use the new caching
1778 functions read_context::find_symbol_table_section and
1779 read_context::get_version_for_symbol.
1780 (read_context::load_symbol_maps): Likewise, use the new caching
1781 function read_context::find_symbol_table_section.
1782
17832015-02-17 Dodji Seketeli <dodji@redhat.com>
1784
1785 Stop traversing function/variable node when added to symbol table
1786 * src/abg-corpus.cc (symtab_build_visitor_type::visit_begin):
1787 Replace symtab_build_visitor_type::visit_end with this and return
1788 false.
1789
17902015-02-13 Dodji Seketeli <dodji@redhat.com>
1791
1792 Do not apply diff filters sub-tree not carrying changes
1793 * src/abg-comp-filter.cc ({harmless, harmful}_filter::visit): Do
1794 not try to do the categorizing on a diff sub-tree that does
1795 not carry any change.
1796 * src/abg-comparison.cc (diff_context::maybe_apply_filters): Do
1797 not bother trying to apply the filters on a diff sub-tree that
1798 does not carry any change.
1799
18002015-02-13 Dodji Seketeli <dodji@redhat.com>
1801
1802 Canonicalize types either early or late after TU reading
1803 * include/abg-fwd.h (is_class_type)
1804 (type_has_non_canonicalized_subtype): Declare new functions.
1805 (is_member_type): Remove the overload that takes a decl_base_sptr.
1806 It's superfluous. We just need the one that takes a
1807 type_base_sptr.
1808 * include/abg-ir.h (translation_unit::{is_constructed,
1809 set_is_constructed}): Add new methods.
1810 (class_decl::has_virtual_member_functions): Likewise.
1811 (class decl_base): Makes it virtually inherit ir_traversable_base.
1812 (class type_base): Make this virtually inherit traversable_base
1813 too.
1814 (type_base::canonicalize): Renamed enable_canonical_equality
1815 into this.
1816 (type_base::traverse): Declare new virtual method.
1817 (canonicalize): Renamed enable_canonical_equality into this.
1818 (scope_type_decl::traverse): Declare new virtual method.
1819 (namespace_decl::get_pretty_representation): Declare new virtual
1820 method.
1821 (function_type::traverse): Likewise.
1822 (class_decl::base_spec::traverse): Likewise.
1823 (ir_node_visitor::visit): Remove the overloads and replace each of
1824 them with a pair of ...
1825 (ir_node_visitor::{visit_begin, visit_end}): ... of these.
1826 * include/abg-traverse.h (traversable_base::visiting): New
1827 method.
1828 (traversable_base::visiting_): New data member.
1829 (traversable_base::traversable_base): New constructor.
1830 * src/abg-ir.cc ({scope_decl, type_decl, namespace_decl,
1831 qualified_type_def, pointer_type_def, reference_type_def,
1832 array_type_def, enum_type_decl, typedef_decl, var_decl,
1833 function_decl, function_decl::parameter, class_decl,
1834 class_decl::member_function_template,
1835 class_decl::member_class_template, function_tdecl,
1836 class_tdecl}::traverse): Fix this to properly set the
1837 traversable_base::visiting_ flag and to reflect the new signatures
1838 of the ir_node_visitor methods.
1839 ({type_base, scope_type_decl, function_type,
1840 class_decl::base_spec}::traverse): New method.
1841 (type_base::get_canonical_type_for): Handle the case of the type
1842 already having a canonical type. Properly hash the type using the
1843 dynamic type hasher. Look through declaration-only classes to
1844 consider the definition of the class instead. Fix logic to have a
1845 single pointer of return, to ease debugging.
1846 (canonicalize): Renamed enable_canonical_equality into this.
1847 (namespace_decl::get_pretty_representation): Define new method.
1848 (ir_node_visitor::visit): Replace each of these overloads with a
1849 pair of visit_begin/visit_end ones.
1850 (translation_unit::priv::is_constructed_): New data member.
1851 (translation_unit::priv::priv): Initialize it.
1852 (translation_unit::{is_constructed, set_is_constructed}): Define
1853 new methods.
1854 (is_member_type(const decl_base_sptr)): Remove.
1855 (is_class_type(decl_base *d)): Define new function.
1856 (class_decl::has_virtual_member_functions): Define new method.
1857 (equals(const class_decl&, const class_decl&, change_kind*)): If
1858 the containing translation unit is not constructed yet, do not
1859 take virtual member functions in account when comparing the
1860 classes. This is because when reading from DWARF, there can be
1861 DIEs that change the number of virtual member functions after the
1862 DIE of the class. So one needs to start taking virtual members
1863 into account only after the translation unit has been constructed.
1864 (class non_canonicalized_subtype_detector): Define new type.
1865 (type_has_non_canonicalized_subtype): Define new function.
1866 * src/abg-corpus.cc (symtab_build_visitor_type::visit): Renamed
1867 this into symtab_build_visitor_type::visit_end.
1868 * src/abg-dwarf-reader.cc (die_type_map_type): New typedef.
1869 (die_class_map_type): This is now a typedef on a map of
1870 Dwarf_Off/class_decl_sptr.
1871 (read_context::{die_type_map_, alternate_die_type_map_,
1872 types_to_canonicalize_, alt_types_to_canonicalize_}): New data
1873 members.
1874 (read_context::{associate_die_to_decl,
1875 associate_die_to_decl_primary}): Make these methods public.
1876 (read_context::{associate_die_to_type,
1877 lookup_type_from_die_offset, is_wip_class_die_offset,
1878 types_to_canonicalize, schedule_type_for_canonicalization}):
1879 Define new methods.
1880 (build_type_decl, build_enum_type)
1881 (build_class_type_and_add_to_ir, build_qualified_type)
1882 (build_pointer_type_def, build_reference_type, build_array_type)
1883 (build_typedef_type, build_function_decl): Do not canonicalize
1884 types here.
1885 (maybe_canonicalize_type): Define new function.
1886 (build_ir_node_from_die): Take a new flag that says if the ir node
1887 is a member type/function or not. Early-canonicalize base types.
1888 Canonicalize composite types that have only canonicalized
1889 sub-types. Schedule the other types for late canonicalizing. For
1890 class types, early canonicalize those that are non-member types,
1891 that are fully constructed and that have only canonicalized
1892 sub-types. Adjust to the new signature of build_ir_node_from_die.
1893 (get_scope_for_die, build_namespace_decl_and_add_to_ir)
1894 (build_qualified_type, build_pointer_type_def)
1895 (build_reference_type, build_array_type, build_typedef_type)
1896 (build_var_decl, build_function_decl): Adjust for the new
1897 signature of build_ir_node_from_die.
1898 (build_translation_unit_and_add_to_ir): Likewise. Perform the
1899 late canonicalizing of the types that have been scheduled for
1900 that.
1901 (build_class_type_and_add_to_ir): Return a class_decl_sptr, not a
1902 decl_base_sptr. Adjust for the new signature of
1903 build_ir_node_from_die. Early canonicalize member types that are
1904 created and added to a given class, or schedule them for late
1905 canonicalizing.
1906 * src/abg-reader.cc (class read_context::{m_wip_classes_map,
1907 m_types_to_canonicalize}): New data members.
1908 (read_context::{clear_types_to_canonicalize,
1909 clear_wip_classes_map, mark_class_as_wip, unmark_class_as_wip,
1910 is_wip_class, maybe_canonicalize_type,
1911 schedule_type_for_late_canonicalizing,
1912 perform_late_type_canonicalizing}): Add new method definitions.
1913 (read_context::clear_per_translation_unit_data): Call
1914 read_context::clear_types_to_canonicalize().
1915 (read_translation_unit_from_input): Call
1916 read_context::perform_late_type_canonicalizing() at the end of the
1917 function.
1918 (build_function_decl): Fix the function type canonicalizing (per
1919 translation) that was already in place. Do the canonicalizing of
1920 these only when the type is fully built. Oops. This was really
1921 brokend. Also, when the function type is constructed, consider it
1922 for type canonicalizing.
1923 (build_type_decl): Early canonicalize basic types.
1924 (build_qualified_type_decl, build_pointer_type_def)
1925 (build_pointer_type_def, build_reference_type_def)
1926 (build_array_type_def, build_enum_type_decl, build_typedef_decl):
1927 Handle the canonicalizing for these composite types: either early
1928 or late.
1929 (build_class_decl): Likewise. Also, mark this class a 'being
1930 built' until it's fully built. This helps the canonicalizing code
1931 to know that it should leave a class alone until it's fully built.
1932 * tests/test-ir-walker.cc (struct name_printing_visitor): Adjust
1933 to the visitor methods naming change.
1934 * configure.ac: Generate the tests/runtestcanonicalizetypes.sh
1935 testing script from tests/runtestcanonicalizetypes.sh.in.
1936 * tests/runtestcanonicalizetypes.sh.in: Add the template for the
1937 new runtestcanonicalizetypes.sh script that test for type
1938 canonicalizing.
1939 * tests/Makefile.am: Add the new runtestcanonicalizetypes.sh
1940 regression testing script to the build system.
1941
19422015-02-18 Dodji Seketeli <dodji@redhat.com>
1943
1944 Factorize per TU data clearing in the xml-abi reader
1945 * src/abg-reader.cc
1946 (read_context::clear_per_translation_unit_data): Factorize this
1947 function out of ...
1948 (read_context::read_translation_unit_from_input): ... this one.
1949
19502015-02-13 Dodji Seketeli <dodji@redhat.com>
1951
1952 Use the deep type sptr equality operator when possible
1953 * src/abg-ir.cc (equals): On function_decl overload, use the deep
1954 sptr type equality operator when comparing types.
1955 (non_type_tparameter::operator==): Likewise.
1956
19572015-02-18 Dodji Seketeli <dodji@redhat.com>
1958
1959 Properly compare virtualness of member functions
1960 * src/abg-ir.cc (equals(const function_decl&, const
1961 function_decl&, change_kind*)): Compare virtualness of member
1962 function before comparing their vtable offsets.
1963
19642015-02-13 Dodji Seketeli <dodji@redhat.com>
1965
1966 Misc style fixes
1967 * include/abg-ir.h (reference_type_def::get_pointed_to_type): use
1968 type_base_sptr, rather than shared_ptr<type_base>
1969 (typdef_decl::get_underlying_type): Likewise.
1970 (function_decl::get_return_type): Likewise.
1971 (function_decl::set_type): Likewise.
1972 (class_decl::member_class_template::as_class_tdecl): Likewise.
1973 * src/abg-comparison.cc (compute_diff): Remove useless vertical
1974 space.
1975 (corpus_diff::traverse): Add a vertical space after this.
1976 * src/abg-dwarf-reader.cc (type_ptr_map): Remove this unused
1977 typedef.
1978 (get_version_for_symbol)
1979 (finish_member_function_reading): Fix the comments of these
1980 functions.
1981 * src/abg-reader.cc (build_function_decl): Return a
1982 function_decl_sptr rather than a shared_ptr<function_decl>.
1983 (build_qualified_type_decl)
1984 (build_pointer_type_def, build_reference_type_def)
1985 (build_array_type_def, build_typedef_decl, build_class_decl): Use
1986 the is_<someking_of_type> functions here, rather than using the
1987 dynamic cast. This increases maintainability.
1988
19892015-02-11 Dodji Seketeli <dodji@redhat.com>
1990
1991 Optimize compressed debug info reading for speed
1992 * src/abg-dwarf-reader.cc
1993 (find_last_import_unit_point_before_die): Look for the inclusion
1994 point of the partial unit in reverse topological order.
1995
19962015-02-10 Dodji Seketeli <dodji@redhat.com>
1997
1998 Share private data of class_diff nodes
1999 * src/abg-comparison.cc (class_diff::class_diff): Do not
2000 initialize the private data of class_diff here.
2001 (compute_diff): In the overload for class_diff, initialize the
2002 private data of the new instance of class_diff to the private data
2003 of its canonical instance.
2004 (redundancy_marking_visitor::visit_begin): If a node is marked
2005 redundant, do not dare visit its children. In cases of classes
2006 that have members that reference themselves, this prevents us from
2007 wrongly marking some of the data member changes as being
2008 redundant.
2009
20102015-02-10 Dodji Seketeli <dodji@redhat.com>
2011
2012 Do not crash when applying filters to a NULL diff
2013 * src/abg-comparison.cc (diff_context::maybe_apply_filters): Do
2014 not crash when called with a NULL diff.
2015
20162015-02-09 Dodji Seketeli <dodji@redhat.com>
2017
2018 Initial implementation of canonical type comparison in the IR
2019 * include/abg-ir.h (class type_base): Pimplify this class.
2020 (type_base::canonical_types_map_type): New typedef.
2021 (type_base::{get_canonical_types_map, get_canonical_type_for,
2022 get_canonical_type}): Declare new member functions.
2023 (enable_canonical_equality): Declare new function.
2024 (struct type_base::hash): Declare this functor here.
2025 * src/abg-ir.cc ():
2026 * src/abg-dwarf-reader.cc (build_type_decl, build_enum_type)
2027 (build_class_type_and_add_to_ir, build_qualified_type)
2028 (build_pointer_type_def, build_reference_type, build_array_type)
2029 (build_typedef_type, build_function_decl): Enable canonical
2030 equality for the resulting type returned by these functions.
2031 * src/abg-hash.cc (type_base::hash::operator()(const type_base&)):
2032 Adjust as this is now out-of-line. Also, add two overloads for
2033 type_base* and type_base_sptr.
2034 (struct type_base::priv): Define new type for private data of
2035 type_base.
2036 (type_base::{get_canonical_types_map, get_canonical_type_for,
2037 get_canonical_type}): Define new member functions.
2038 (enable_canonical_equality): Define new function
2039 (type_base::{type_base, set_size_in_bits, get_size_in_bits,
2040 set_alignment_in_bits, get_alignment_in_bits}): Adjust.
2041 ({type_decl, scope_type_decl, qualified_type_def,
2042 pointer_type_def, reference_type_def, array_type_def,
2043 enum_type_decl, typedef_decl, function_type,
2044 class_decl}::operator==): If the types being compared have
2045 canonical type then use them for comparison.
2046
20472015-02-07 Dodji Seketeli <dodji@redhat.com>
2048
2049 Don't walk the diff tree when there are no suppressions
2050 * src/abg-comparison.cc (apply_suppressions): Do not walk the diff
2051 tree to apply suppressions when there are no suppressions to
2052 apply.
2053
20542015-02-07 Dodji Seketeli <dodji@redhat.com>
2055
2056 Speedup some diff::has_changes() implementations
2057 * src/abg-comparison.cc ({distinct_diff, var_diff,
2058 class_diff}::has_changes): Use the hash value of the diff subjects
2059 to detect quickly if they differ. If they don't, then go the slow
2060 path of comparing the types.
2061
20622015-02-05 Dodji Seketeli <dodji@redhat.com>
2063
2064 Get out as early as possible when comparing different ABI artefacts
2065 * include/abg-ir.h (equal): Turn the last parameter of type
2066 change_kind& into a change_kind*. Do this on all the overloads'
2067 declarations.
2068 * src/abg-ir.cc (equal): Do the same for the definitions of the
2069 overloads and adapt them to report about the kind of changes makes
2070 the two ABI artifact different -- only if the change_kind pointer
2071 is non-null. That way, callers have a way to choose if they want
2072 to go the expensive route of knowing what kind of changes there
2073 are.
2074 ({decl_base, scope_decl, type_base, scope_type_decl,
2075 qualified_type_def, pointer_type_def, pointer_type_def,
2076 reference_type_def, array_type_def, enum_type_decl, typedef_decl,
2077 var_decl, function_type, function_decl, function_decl::parameter,
2078 class_decl::base_spec, class_decl}::operator==): Adjust to the new
2079 signature of equals; call it with the change_kind* parameter set
2080 to NULL.
2081 * src/abg-comparison.cc ({var_diff, pointer_diff, array_diff,
2082 reference_diff, qualified_type_diff, enum_diff, class_diff,
2083 base_diff, scope_diff, fn_parm_diff, function_decl_diff,
2084 type_decl_diff, typedef_diff}::has_local_changes): Adjust.
2085
20862015-02-05 Dodji Seketeli <dodji@redhat.com>
2087
2088 Rename diff::length() into diff::has_changes()
2089 * include/abg-comparison.h (*::has_changes): Rename the ::length()
2090 method of all the diff types that inherit the diff class into
2091 this, in the class declarations.
2092 * src/abg-comparison.cc (*::has_changes): Do the same as in the
2093 declarations, in the definitions.
2094 (diff::to_be_reported, distinct_diff::has_local_changes)
2095 (distinct_diff::report, distinct_diff::, array_diff::has_changes)
2096 (reference_diff::has_changes, qualified_type_diff::has_changes)
2097 (enum_diff::has_changes, translation_unit_diff::has_changes)
2098 (suppression_categorization_visitor::visit_end)
2099 (redundancy_marking_visitor::visit_begin): Adjust.
2100 * tests/test-diff-dwarf.cc (main): Adjust.
2101 * tools/abidiff.cc (main): Likewise.
2102
21032015-01-27 Dodji Seketeli <dodji@redhat.com>
2104
2105 Add a method to diff_context to dump a diff tree to error output
2106 * include/abg-comparison.h (diff_context::error_output_stream):
2107 Make this function const.
2108 (diff_context::{do_dump_diff_tree}): Declare new methods.
2109 * src/abg-comparison.cc (diff_context::error_output_stream): Make
2110 this function const.
2111 (diff_context::do_dump_diff_tree): Define new methods.
2112
21132015-01-27 Dodji Seketeli <dodji@redhat.com>
2114
2115 Keep children nodes of class_diff and scope_diff sorted
2116 * include/abg-comparison.h (decl_diff_base, type_diff_base):
2117 Forward declare these types.
2118 (diff_sptrs_type, decl_diff_base_sptr, decl_diff_base_sptrs_type)
2119 (type_diff_base_sptr, type_diff_base_sptrs_type)
2120 (base_diff_sptrs_type, string_type_diff_base_sptr_map)
2121 (string_decl_diff_base_sptr_map, string_diff_sptr_map): New
2122 typedefs.
2123 (changed_type_or_decl, changed_parm, changed_parms_type)
2124 (string_changed_type_or_decl_map)
2125 (unsigned_changed_type_or_decl_map, changed_type_or_decl_vector):
2126 Remove typedefs.
2127 (class_diff::changed_base): Make this return a
2128 base_diff_sptrs_type now. No more a string_base_diff_sptr_map.
2129 (class_diff::changed_member_fns): Make this return a
2130 function_decl_diff_sptrs_type, no more a
2131 string_changed_member_function_sptr_map.
2132 (class_diff::changed_types): Make this return a diff_sptrs_type,
2133 not a string_changed_type_or_decl_map anymore.
2134 (class_diff::changed_decls): Make this return a diff_sptrs_type,
2135 not a string_changed_type_or_decl_map anymore.
2136 * src/abg-comp-filter.cc (has_virtual_mem_fn_change)
2137 (has_non_virtual_mem_fn_change): Adjust.
2138 * src/abg-comparison.cc (compute_diff): For the decl_base_sptr and
2139 type_base_sptr overloads, assert that the resulting diff is
2140 non-null.
2141 (class_diff::priv::{sorted_changed_base_,
2142 sorted_changed_member_types_, sorted_subtype_changed_dm_,
2143 sorted_changed_dm_, sorted_changed_member_functions_,
2144 sorted_changed_member_class_tmpls_}): New data members.
2145 (class_diff::priv::changed_member_types_): Changed the type of
2146 this from string_changed_type_or_decl_map to string_diff_sptr_map.
2147 (class_diff::priv::changed_member_functions_): Changed the type of
2148 this from string_changed_member_function_sptr_map to
2149 string_function_decl_diff_sptr_map.
2150 (class_diff::priv::changed_member_class_tmpls_): Changed the type
2151 of this from string_changed_type_or_decl_map to
2152 string_diff_sptr_map.
2153 (class_diff::ensure_lookup_tables_populated): Adjust. Initialize
2154 the new sorted members class_diff::priv::{sorted_changed_bases_,
2155 sorted_subtype_changed_dm_, sorted_changed_dm_,
2156 sorted_changed_member_functions_, sorted_changed_member_types_}.
2157 (class_diff::priv::{member_type_has_changed,
2158 member_class_tmpl_has_changed, count_filtered_bases,
2159 count_filtered_subtype_changed_dm, count_filtered_changed_mem_fns,
2160 }): Adjust.
2161 (class_diff::chain_into_hierarchy): Adjust: The children nodes of
2162 class_diff are now laid out in a sorted way.
2163 (class_diff::{changed_bases, changed_member_fns}): Adjust.
2164 (base_diff_comp, virtual_member_function_diff_comp): New types.
2165 (sort_string_base_diff_sptr_map)
2166 (sort_string_virtual_member_function_diff_sptr_map): New static
2167 functions.
2168 (data_member_diff_comp): Renamed var_diff_comp into this.
2169 (sort_unsigned_data_member_diff_sptr_map): Renamed sort_var_diffs
2170 into this and adjust.
2171 (class_diff::report): Do not sort the nodes we are about to emit
2172 here. Just use the natural order of the nodes in their parent
2173 tree as they should now be sorted.
2174 (scope_diff::priv::{changed_types_, changed_decls_}): Change the
2175 type of these from string_changed_type_or_decl_map to
2176 string_diff_sptr_map.
2177 (scope_diff::priv::{sorted_changed_types_,
2178 sorted_changed_decls_}): New data members.
2179 (scope_diff::ensure_lookup_tables_populated): Adjust. Initialize
2180 the new scope_diff::priv::sorted_changed_{types_, decls_}.
2181 (scope_diff::chain_into_hierarchy): Adjust. The children of
2182 scope_diff are now sorted.
2183 (scope_diff::changed_{types, decls}): Return the sorted vectors of
2184 children nodes.
2185 (struct changed_type_or_decl_comp): Remove.
2186 (struct diff_comp): New type.
2187 (sort_changed_type_or_decl): Remove.
2188 (sort_string_diff_sptr_map): New static function.
2189 (scope_diff::report): Adjust. Do not sort children nodes here
2190 ourselves before reporting about them. Rather, use the natural
2191 topological order of the children as they are now sorted.
2192 (corpus_diff::priv::sorted_changed_vars_): Renamed
2193 corpus_diff::priv::changed_vars_ into this to make it more
2194 explicit that the things it holds are sorted.
2195 (corpus_diff::changed_variables_sorted): Adjust.
2196 (corpus_diff::priv::ensure_lookup_tables_populated): Likewise.
2197 (corpus_diff::priv::apply_filters_and_compute_diff_stats):
2198 Likewise.
2199 (corpus_diff::priv::categorize_redundant_changed_sub_nodes):
2200 Likewise.
2201 (corpus_diff::priv::clear_redundancy_categorization): Likewise.
2202 (corpus_diff::priv::maybe_dump_diff_tree): Likewise.
2203 (corpus_diff::report): Likewise.
2204
22052015-01-26 Dodji Seketeli <dodji@redhat.com>
2206
2207 Hand-code the string representation of GElf_Ehdr::e_machine
2208 * configure.ac: Do not check for elfutils/libebl.h and libebl.a
2209 anymore.
2210 * src/abg-dwarf-reader.cc: Do not include elfutils/libebl.h
2211 anymore.
2212 (e_machine_to_string): Define new static
2213 function.
2214 (read_context::::load_elf_architecture): Use the new
2215 e_machine_to_string() function rather than ebl_backend_name() and
2216 ebl_openbackend().
2217 * tests/data/test-diff-dwarf/test-23-diff-arch-report-0.txt: Adjust.
2218
22192015-01-26 Dodji Seketeli <dodji@redhat.com>
2220
2221 Fix chaining of descendant node of qualified type diff node
2222 * include/abg-comparison.h
2223 (qualified_type_diff::leaf_underlying_type_diff): Declare new
2224 accessor.
2225 * src/abg-comparison.cc (get_leaf_type): Forward declare this
2226 static function.
2227 (qualified_type_diff::priv::leaf_underlying_type_diff): Define new
2228 data member.
2229 (qualified_type_diff::leaf_underlying_type_diff): Define this new
2230 accessor.
2231 (qualified_type_diff::chain_into_hierarchy): Call
2232 leaf_underlying_type_diff() here rather than
2233 underlying_type_diff().
2234 (qualified_type_diff::report): Use leaf_underlying_type_diff()
2235 rather than re-computing the diff between the two leaf underlying
2236 type diff nodes.
2237 * libtest26-qualified-redundant-node-v{0,1}.so: New binary test
2238 input files.
2239 * tests/data/test-diff-filter/test26-qualified-redundant-node-v{0,1}.cc:
2240 Source code for the binary test inputs above.
2241 * tests/test-diff-filter.cc (int_out_spec): Add the new test input
2242 to the vector of test input data over which to run this test
2243 harness.
2244 * tests/data/test-diff-filter/test26-qualified-redundant-node-report-{0,1.txt:
2245 New test input file.
2246 * tests/data/Makefile.am: Add the new test input data to the
2247 source distribution.
2248
22492015-01-24 Dodji Seketeli <dodji@redhat.com>
2250
2251 Recognize cyclic diff tree nodes as being redundant
2252 * include/abg-comparison.h (enum visiting_kind): Rename
2253 enumerator DO_NOT_MARK_VISITED_NODES_AS_TRAVERSED into
2254 DO_NOT_MARK_VISITED_NODES_AS_VISITED.
2255 (diff_context::diff_has_been_visited): Rename
2256 diff_context::diff_has_been_traversed into this.
2257 (diff_context::mark_diff_as_visited): Rename
2258 diff_context::mark_diff_as_traversed into this.
2259 (diff_context::forget_visited_diffs): Rename
2260 diff_context::forget_traversed_diffs into this.
2261 (diff_context::forbid_visiting_a_node_twice): Rename
2262 diff_context::forbid_traversing_a_node_twice into this.
2263 (diff_context::visiting_a_node_twice_is_forbidden): Rename
2264 diff_context::traversing_a_node_twice_is_forbidden into this.
2265 (diff::is_traversing): Move this from protected to public.
2266 * src/abg-comparison.cc (diff_context::priv::visited_diff_nodes_):
2267 Rename diff_context::priv::traversed_diff_nodes_ into this.
2268 (diff_context::priv::forbid_visiting_a_node_twice_): Rename
2269 diff_context::priv::forbid_traversing_a_node_twice_ into this.
2270 (diff_context::priv::priv): Adjust.
2271 (diff_context::diff_has_been_visited): Rename
2272 diff_context::diff_has_been_traversed into this. Adjust.
2273 (diff_context::mark_diff_as_visited): Rename
2274 diff_context::mark_diff_as_traversed into this. Adjust.
2275 (diff_context::forget_visited_diffs): Rename
2276 diff_context::forget_traversed_diffs into this. Adjust.
2277 (diff_context::forbid_visiting_a_node_twice): Rename
2278 diff_context::forbid_traversing_a_node_twice into this.
2279 (diff_context::visiting_a_node_twice_is_forbidden): Rename
2280 diff_context::traversing_a_node_twice_is_forbidden into this.
2281 (diff_context::maybe_apply_filters): Adjust.
2282 (diff::end_traversing): Remove the 'mark_as_traversed' parameter
2283 of this. Remove the visited-marking code.
2284 (diff::traverse): This is the crux of the changes of this patch.
2285 Avoid traversing a node that is being traversed, but one can visit
2286 a node being visited. Also, traversing a node means visiting it
2287 and visiting its children nodes.
2288 (diff::is_filtered_out): Simplify logic for filtering redundant
2289 code. Basically all nodes that are redundant are filtered. All
2290 the complicated logic that was due when diff nodes were shared is
2291 not relevant anymore.
2292 (corpus_diff::priv::categorize_redundant_changed_sub_nodes)
2293 (propagate_categories, apply_suppressions)
2294 (diff_node_printer::diff_node_printer, print_diff_tree)
2295 (categorize_redundant_changed_sub_nodes)
2296 (clear_redundancy_categorization)
2297 (clear_redundancy_categorization): Adjust.
2298 (redundancy_marking_visitor::visit_begin): Adjust. Also, if the
2299 current diff node is already being traversed (that's a clyclic
2300 node) then mark it as redundant.
2301 * src/abg-comp-filter.cc (apply_filter): Adjust.
2302 * tests/data/test-diff-filter/test16-report-2.txt: New test input data.
2303 * tests/data/test-diff-filter/libtest25-cyclic-type-v{0,1}.so: New
2304 test input binaries.
2305 * tests/data/test-diff-filter/test25-cyclic-type-v{0,1}.cc: Source
2306 code for the test input binaries.
2307 * tests/data/test-diff-filter/test25-cyclic-type-report-0.txt: New
2308 test input data.
2309 * tests/data/test-diff-filter/test25-cyclic-type-report-1.txt:
2310 Likewise.
2311 * tests/test-diff-filter.cc (in_out_specs): Add the new test
2312 inputs above to the list of test input data over which to run this
2313 test harness.
2314 * tests/data/Makefile.am: Add the new test files above to source
2315 distribution.
2316 * tests/data/test-diff-filter/test16-report.txt: Adjust.
2317 * tests/data/test-diff-filter/test17-0-report.txt: Likewise.
2318
23192015-01-20 Dodji Seketeli <dodji@redhat.com>
2320
2321 Tighten the condition for creating a cloned function from DWARF
2322 * src/abg-dwarf-reader.cc (build_ir_node): Re-indent. Also,
2323 consider that when a DIE C refers to a DIE A via the
2324 DW_abstract_origin attribute, C represents a clone of A, only if C
2325 and A have *different* linkage names.
2326
23272015-01-19 Dodji Seketeli <dodji@redhat.com>
2328
2329 Fix the output of the array diff report
2330 * src/abg-comparison.cc (array_diff::report): Refer to the pretty
2331 representation of the array when talking about changes of the
2332 array element type.
2333 * src/abg-ir.cc (equals): In the overload for array_type, use the
2334 equality operator that knows how to handle null pointers to
2335 element type. This avoids crashes when the pointer to element
2336 type is null.
2337 * tests/data/test-diff-dwarf/test10-report.txt: Adjust.
2338 * tests/data/test-diff-filter/test24-compatible-vars-report-1.txt:
2339 Likewise.
2340
23412015-01-14 Dodji Seketeli <dodji@redhat.com>
2342
2343 Do not install the generated documentation by default
2344 * doc/manuals/Makefile.am: Do not install the generated
2345 documentation by default
2346
23472015-01-14 Dodji Seketeli <dodji@redhat.com>
2348
2349 Make sure to install html docs & gziped info on make install
2350 * doc/manuals/Makefile.am: Make sure Make sure to install html
2351 docs & gziped info on make install
2352
23532015-01-14 Dodji Seketeli <dodji@redhat.com>
2354
2355 Do not install the abinilint program
2356 * tools/Makefile.am: Add abinilint to the noinst_PROGRAMS primary.
2357
23582015-01-13 Dodji Seketeli <dodji@redhat.com>
2359
2360 Small grammar fix in a manpage title
2361 * doc/manuals/conf.py: Fix the grammar of the title of the abidiff
2362 man page.
2363
23642015-01-13 Dodji Seketeli <dodji@redhat.com>
2365
2366 Generate texinfo documentation properly
2367 * doc/manuals/Makefile.am: Generate texinfo doc, install it and
2368 uninstall it.
2369 * doc/manuals/libabigail-tools.rst: Do not use the :doc: syntax to
2370 refer to documents because it doesn't seem to work with sphinx
2371 right now. Rather, use a table of content.
2372
23732015-01-13 Dodji Seketeli <dodji@redhat.com>
2374
2375 Fix man pages installation
2376 * doc/manuals/Makefile.am: Install the man pages only if they are
2377 generated.
2378
23792015-01-13 Dodji Seketeli <dodji@redhat.com>
2380
2381 Bump the candidate version of the library to 1.0
2382 * configure.ac: Bump version to 1.0.0
2383
23842015-01-13 Dodji Seketeli <dodji@redhat.com>
2385
2386 Do not forget to install the Manpages
2387 * doc/manuals/Makefile.am: Add the man pages to the man7_MANS
2388 automake primary.
2389
23902015-01-13 Dodji Seketeli <dodji@redhat.com>
2391
2392 Adjust archive-related code for the recent addition of tools_utils::*
2393 * tests/Makefile.am: tools/libtoolsutils.la is no more.
2394 * tests/test-write-read-archive.cc (main): Adjust.
2395 * tools/abiar.cc (extract_tus_from_archive): Likewise.
2396
23972015-01-13 Dodji Seketeli <dodji@redhat.com>
2398
2399 Generate Manpages for abidiff, abidw, abilint
2400 * doc/manuals/conf.py: Define man pages for abidiff, abidw,
2401 abilint and an introductory one for libabigail.
2402
24032015-01-09 Dodji Seketeli <dodji@redhat.com>
2404
2405 Sort functions & variables diff nodes in the diff tree
2406 * include/abg-comparison.h (function_decl_diff_sptrs_type)
2407 (var_diff_sptrs_type): New typedefs.
2408 (corpus_diff::{changed_functions, changed_variables}): Declare new
2409 methods.
2410 * src/abg-comparison.cc (sort_string_function_decl_diff_sptr_map)
2411 (sort_string_var_diff_sptr_map): Forward declare these static
2412 functions there were already defined later.
2413 (struct diff_less_than_functor): Define new comparison functor.
2414 (diff::append_child_node): Sort the children diff nodes of a given
2415 diff node.
2416 (corpus_diff::priv::changed_fns_map_): Renamed the data member
2417 corpus_diff::priv::changed_fns_ into this.
2418 (corpus_diff::priv::changed_fns_): New data member that is a
2419 sorted vector of changed functions.
2420 (corpus_diff::priv::{lookup_tables_empty, clear_lookup_tables}):
2421 Adjust changed_fns_ -> changed_fns_map_ and changed_vars_ ->
2422 changed_vars_map_.
2423 (corpus_diff::priv::ensure_lookup_tables_populated): Likewise.
2424 Sort the changed functions and changed variables.
2425 (corpus_diff::priv::apply_filters_and_compute_diff_stats): Adjust
2426 changed_fns_ -> changed_fns_map_ and changed_vars_ ->
2427 changed_vars_map_. Also, walk the changed functions and variables
2428 diff nodes in their sorted order.
2429 (corpus_diff::priv::{categorize_redundant_changed_sub_nodes,
2430 clear_redundancy_categorization, maybe_dump_diff_tree}): Walk the
2431 changed functions and variables diff nodes in their sorted order.
2432 * include/abg-ir.h
2433 (function_decl::get_pretty_representation_of_declarator):
2434 Declarenew method.
2435 * src/abg-ir.cc
2436 (function_decl::get_pretty_representation_of_declarator): Define
2437 new function. Its content got split out of ...
2438 (function_decl::get_pretty_representation): ... this one.
2439 * src/abg-comparison.cc (corpus_diff::chain_into_hierarchy):
2440 Consider the sorted the children nodes of a diff tree node.
2441 (corpus_diff::append_child_node): Keep the children nodes of a
2442 diff tree node sorted.
2443 (corpus_diff::{changed_functions, changed_variables, length,
2444 report}): Adjust.
2445 (corpus_diff::{changed_functions_sorted,
2446 changed_variables_sorted}): Define new functions.
2447 (function_comp::operator()): First compare the qualified function
2448 names along with the parameter declarations, then the rest.
2449 (sort_string_function_decl_diff_sptr_map)
2450 (sort_string_var_diff_sptr_map): Adjust.
2451 * tests/data/test-abicompat/test0-fn-changed-report-0.txt: Adjust.
2452 * tests/data/test-diff-suppr/test5-fn-suppr-report-0.txt: Adjust.
2453 * tests/data/test-diff-suppr/test8-redundant-fn-report-0.txt:
2454 Adjust.
2455
24562015-01-09 Dodji Seketeli <dodji@redhat.com>
2457
2458 Fix logic of function parmeters diff redundancy detection
2459 * src/abg-comparison.cc (redundancy_marking_visitor::visit_begin):
2460 For a given function parameter diff node N, we were comparing it
2461 against the other parmeter diff nodes of the function. This
2462 change ensures that we do not compare N against itself.
2463
24642015-01-09 Dodji Seketeli <dodji@redhat.com>
2465
2466 Update copyright year for tests/test-abicompat.cc
2467 * tests/test-abicompat.cc: Update copyright year.
2468
24692015-01-09 Dodji Seketeli <dodji@redhat.com>
2470
2471 Enhance the format of the diff tree dumping report
2472 * src/abg-comparison.cc (diff_node_printer::do_indent): New
2473 method.
2474 (diff_node_printer::visit): Use diff_node_printer::do_indent().
2475 Print the addresses of the diff tree node and its canonical node.
2476 Add some vertical spaces and some indenting to make the report
2477 more readable.
2478
24792015-01-08 Dodji Seketeli <dodji@redhat.com>
2480
2481 Expose a new libabigail::tools_utils namespace
2482 * include/abg-tools-utils.h: Moved tools/abg-tools-utils.h in
2483 here. Renamed the namespace tools into tools_utils. Inject
2484 std::ostream, std::istream, std::ifstream, and std::string types
2485 into the tools_utils namespace. Adjust the function declarations
2486 accordingly. Remove the useless dirname() function declaration.
2487 * include/Makefile.am: Add abg-tools-utils.h to the list of
2488 exported headers.
2489 * src/abg-tools-utils.cc: Moved tools/abg-tools-utils.cc in here.
2490 Renamed the namespace tools into tools_utils.
2491 (get_stat): Add apidoc.
2492 (is_dir): Cleanup apidoc.
2493 (dir_name); Cleanup parameter name.
2494 (guess_file_type): Cleanup parameter type.
2495 * src/Makefile.am: Add abg-tools-utils.cc to the list of exported
2496 headers.
2497 * tools/Makefile.am: Do not build the temporary library
2498 libtoolsutils.la anymore as abg-tools-utils.{h,cc} have moved out
2499 of this directory.
2500 * tools/abicompat.cc (parse_command_line, main): Adjust for tools
2501 -> tools_utils namespace change.
2502 * tools/abidiff.cc (parse_command_line, main): Likewise.
2503 * tools/abidw.cc (parse_command_line, main): Likewise.
2504 * tools/abilint.cc (parse_command_line, main): Likewise.
2505 * tests/test-abicompat.cc (main): Adjust for tools -> tools_utils
2506 namespace change.
2507 * tests/test-abidiff.cc (main): Likewise.
2508 * tests/test-alt-dwarf-file.cc (main): Likewise.
2509 * tests/test-core-diff.cc (main): Likewise.
2510 * tests/test-diff-dwarf.cc (main): Likewise.
2511 * tests/test-diff-filter.cc (main): Likewise.
2512 * tests/test-diff-suppr.cc (main): Likewise.
2513 * tests/test-lookup-syms.cc (main): Likewise.
2514 * tests/test-read-dwarf.cc (main): Likewise.
2515 * tests/test-read-write.cc (main): Likewise.
2516 * tests/Makefile.am: Do not reference the libtoolsutils.la private
2517 library anymore.
2518
25192015-01-07 Dodji Seketeli <dodji@redhat.com>
2520
2521 Update copyright years
2522 * include/abg-comp-filter.h: Update copyright years.
2523 * include/abg-comparison.h: Likewise.
2524 * include/abg-config.h: Likewise.
2525 * include/abg-corpus.h: Likewise.
2526 * include/abg-diff-utils.h: Likewise.
2527 * include/abg-dwarf-reader.h: Likewise.
2528 * include/abg-fwd.h: Likewise.
2529 * include/abg-hash.h: Likewise.
2530 * include/abg-ini.h: Likewise.
2531 * include/abg-ir.h: Likewise.
2532 * include/abg-libxml-utils.h: Likewise.
2533 * include/abg-libzip-utils.h: Likewise.
2534 * include/abg-reader.h: Likewise.
2535 * include/abg-sptr-utils.h: Likewise.
2536 * include/abg-traverse.h: Likewise.
2537 * include/abg-viz-common.h: Likewise.
2538 * include/abg-viz-dot.h: Likewise.
2539 * include/abg-viz-svg.h: Likewise.
2540 * include/abg-writer.h: Likewise.
2541 * src/abg-comp-filter.cc: Likewise.
2542 * src/abg-comparison.cc: Likewise.
2543 * src/abg-config.cc: Likewise.
2544 * src/abg-corpus.cc: Likewise.
2545 * src/abg-diff-utils.cc: Likewise.
2546 * src/abg-dwarf-reader.cc: Likewise.
2547 * src/abg-hash.cc: Likewise.
2548 * src/abg-ini.cc: Likewise.
2549 * src/abg-ir.cc: Likewise.
2550 * src/abg-libxml-utils.cc: Likewise.
2551 * src/abg-libzip-utils.cc: Likewise.
2552 * src/abg-reader.cc: Likewise.
2553 * src/abg-traverse.cc: Likewise.
2554 * src/abg-viz-common.cc: Likewise.
2555 * src/abg-viz-dot.cc: Likewise.
2556 * src/abg-viz-svg.cc: Likewise.
2557 * src/abg-writer.cc: Likewise.
2558 * tests/print-diff-tree.cc: Likewise.
2559 * tests/test-abidiff.cc: Likewise.
2560 * tests/test-alt-dwarf-file.cc: Likewise.
2561 * tests/test-core-diff.cc: Likewise.
2562 * tests/test-diff-dwarf.cc: Likewise.
2563 * tests/test-diff-filter.cc: Likewise.
2564 * tests/test-diff-suppr.cc: Likewise.
2565 * tests/test-diff2.cc: Likewise.
2566 * tests/test-ir-walker.cc: Likewise.
2567 * tests/test-lookup-syms.cc: Likewise.
2568 * tests/test-read-dwarf.cc: Likewise.
2569 * tests/test-read-write.cc: Likewise.
2570 * tests/test-utils.cc: Likewise.
2571 * tests/test-utils.h: Likewise.
2572 * tests/test-write-read-archive.cc: Likewise.
2573 * tools/abg-tools-utils.cc: Likewise.
2574 * tools/abg-tools-utils.h: Likewise.
2575 * tools/abiar.cc: Likewise.
2576 * tools/abidiff.cc: Likewise.
2577 * tools/abidw.cc: Likewise.
2578 * tools/abilint.cc: Likewise.
2579 * tools/abisym.cc: Likewise.
2580 * tools/binilint.cc: Likewise.
2581
25822015-01-07 Dodji Seketeli <dodji@redhat.com>
2583
2584 Detect and report changes in ELF architecture
2585 * configure.ac: Detect the presence of libebl.a and add it to the
2586 list of library we depend on to build libabigail. Report when
2587 libelf.so is not found.
2588 * include/abg-comparison.h:
2589 (diff_context::show_architecture_change): Declare new accessors.
2590 (corpus_diff::architecture_changed): Declare new method.
2591 * include/abg-corpus.h (corpus::{get,set}_architecture_name):
2592 Declare new accessors.
2593 * src/abg-comparison.cc
2594 (diff_context::priv::show_architecture_change_): New data member.
2595 (diff_context::priv::priv): Initialize it.
2596 (diff_context::show_architecture_change): Define new accessors.
2597 (function_decl_diff::report): Report when the size/alignment of
2598 the function address changes.
2599 (corpus_diff::priv::architectures_equal_): New data member.
2600 (corpus_diff::priv::priv): Initialize it.
2601 (corpus_diff::priv::emit_diff_stats): Take in account changes of
2602 architecture.
2603 (corpus_diff::architecture_changed): Define new method.
2604 (corpus_diff::length): Take in account changes of architecture.
2605 (corpus_diff::report): Report about changes of architecture.
2606 (compute_diff): In the overload for corpus_diff_sptr, detect
2607 changes fo architecture.
2608 * src/abg-corpus.cc (corpus_priv::architecture_name): Define new
2609 data member.
2610 (corpus::{get,set}_architecture_name): Define new method.
2611 * src/abg-dwarf-reader.cc: Include elfutils/libebl.h to use
2612 ebl_openbackend() and ebl_backend_name()
2613 (read_context::elf_architecture_): Define new data member.
2614 (read_context::elf_architecture): Define new accessor.
2615 (read_context::{load_elf_architecture, load_remaining_elf_data}):
2616 Define new methods.
2617 (read_corpus_from_elf): Use ctxt.load_remaining_elf_data() in lieu
2618 of ctxt.load_dt_soname_and_needed. Stick the architecture into
2619 the corpus.
2620 * src/abg-reader.cc (read_corpus_from_input): Read the
2621 'architecture' XML property.
2622 * src/abg-writer.cc (write_corpus_to_native_xml): Write the
2623 'architecture' XML property.
2624 * tests/data/test-diff-dwarf/libtest-23-diff-arch-v0-32.so: New
2625 test input file.
2626 * tests/data/test-diff-dwarf/libtest-23-diff-arch-v0-64.so:
2627 Likewise.
2628 * tests/data/test-diff-dwarf/test-23-diff-arch-report-0.txt:
2629 Likewise.
2630 * tests/data/test-diff-dwarf/test-23-diff-arch-v0.cc: Source code
2631 for the binary test input files above.
2632 * tests/data/Makefile.am: Add the new test input files to the
2633 source distribution.
2634 * tests/test-diff-dwarf.cc (in_out_specs): Add the new test input
2635 data to the set of input data to run this test harness over.
2636 * tests/test-read-dwarf.cc (main): Do not take the architecture in
2637 account during comparisons.
2638
26392015-01-05 Sinny Kumari <skumari@redhat.com>
2640
2641 Include libabigail-website.doxy file in EXTRA_DIST
2642 * doc/Makefile.am: Include website/libabigail-website.doxy
2643 file in EXTRA_DIST
2644
26452015-01-06 Dodji Seketeli <dodji@redhat.com>
2646
2647 Delete ltsugar.m4 and pkg.m4 files from m4/
2648 * m4/ltsugar.m4: Removed.
2649 * m4/pkg.m4: Likewise.
2650
26512014-12-27 Dodji Seketeli <dodji@redhat.com>
2652
2653 Enable parallel tests
2654 * configure.ac (AM_INIT_AUTOMAKE): Enable parallel tests by
2655 switching on the parallel-tests option.
2656
26572014-12-27 Dodji Seketeli <dodji@redhat.com>
2658
2659 Add a --dump-diff-tree to abidiff for debugging purposes
2660 * include/abg-comparison.h (enum visiting_kind): Add new
2661 DO_NOT_MARK_VISITED_NODES_AS_TRAVERSED enumerator.
2662 (diff_context::{default_output_stream, error_output_stream,
2663 dump_diff_tree}): Declare new accessors.
2664 (diff::end_traversing): Take a new boolean flag.
2665 (print_diff_tree): Add new overload for diff_sptr.
2666 * src/abg-comparison.cc
2667 (diff_context::priv::{default_output_stream_,
2668 error_output_stream_, dump_diff_tree_}): New data members.
2669 (priv::priv): Initialize them.
2670 (diff_context::{default_output_stream_, error_output_stream_,
2671 dump_diff_tree, dump_diff_tree}): Define new accessors.
2672 (diff::end_traversing): Take a new flag that control whether or
2673 not to mark the current diff node as having been traversed.
2674 (diff::traverse): Take in account the visiting kind carried by the
2675 visitor to determine if the visited node should be marked as being
2676 traversed.
2677 (corpus_diff::priv::maybe_dump_diff_tree): Define new member
2678 function.
2679 (corpus_diff::report): Call it.
2680 (diff_node_printer::visit): Pretty print the diff node just once.
2681 (print_diff_tree): Define a new overload for diff_sptr.
2682 * tools/abidiff.cc (options::dump_diff_tree): New data member.
2683 (options::options): Initialize it.
2684 (display_usage): Add a help string for the new --dump-diff-tree
2685 command line switch.
2686 (parse_command_line): Parse the new --dump-diff-tree command line
2687 switch.
2688 (set_diff_context_from_opts): Set the diff context according to
2689 the --dump-diff-tree presence.
2690 * doc/manuals/abidiff.rst: Add a bullet point for the new
2691 --dump-diff-tree command line switch.
2692
26932014-12-27 Dodji Seketeli <dodji@redhat.com>
2694
2695 Fix typos in the abicompat manual
2696 * doc/manuals/abicompat.rst: Fix typos.
2697
26982014-12-27 Dodji Seketeli <dodji@redhat.com>
2699
2700 Fix a typo in the abidiff manual
2701 * doc/manuals/abidiff.rst: Fix a typo.
2702
27032014-12-27 Dodji Seketeli <dodji@redhat.com>
2704
2705 Fix redundancy in abidiff manual
2706 * doc/manuals/abidiff.rst: Remove the redundant bullet point about
2707 the --drop-fn command line switch.
2708
27092014-12-26 Dodji Seketeli <dodji@redhat.com>
2710
2711 Fix the doc string of the CanonicalDiff section of the apidoc
2712 * src/abg-comparison.cc: The summary of the CanonicalDiff should
2713 not be a @par directive, otherwise it won't show up in the summary
2714 field on the html-genereated page.
2715
27162014-12-26 Dodji Seketeli <dodji@redhat.com>
2717
2718 Update doc string for new --no-redundant option of abidiff
2719 * doc/manuals/abidiff.rst: Update the documentation string for the
2720 --no-redundant option of abidiff.
2721
27222014-12-26 Dodji Seketeli <dodji@redhat.com>
2723
2724 Make abidiff *NOT* show redundant changes by default
2725 * tools/abidiff.cc (options::options): Initialize
2726 options::show_redundant_changes to false.
2727
27282014-12-26 Dodji Seketeli <dodji@redhat.com>
2729
2730 Try harder to handle pointer/reference to void
2731 * include/abg-fwd.h (type_or_void): Declare new function.
2732 * src/abg-ir.cc (type_or_void): Define it.
2733 (pointer_type_def::pointer_type_def)
2734 (reference_type_def::reference_type_def)
2735 (reference_type_def::get_qualified_name, strip_typedef): Use it to
2736 ensure that empty pointed-to-type is considered as a void type.
2737
27382014-12-26 Dodji Seketeli <dodji@redhat.com>
2739
2740 Do not mark sibling structurally identical nodes as redundant
2741 * include/abg-comparison.h (diff::parent_node): Declare new
2742 accessor.
2743 * src/abg-comparison.cc (diff::priv::parent_): New data member.
2744 (diff::priv::priv): Initialize it.
2745 (diff::parent_node): Define new accessor.
2746 (diff::append_child_node): Set the diff::priv::parent_ data member
2747 of the added child node.
2748 (redundancy_marking_visitor::visit_begin): If two (logical)
2749 sibbling nodes are structurally equivalent, do not mark them as
2750 being redundant.
2751 * tests/data/test-diff-suppr/libtest10-changed-parm-c-v0.so: New
2752 test input binary.
2753 * tests/data/test-diff-suppr/libtest10-changed-parm-c-v1.so:
2754 Likewise.
2755 * tests/data/test-diff-suppr/test10-changed-parm-c-report-0.txt:
2756 New test input data.
2757 * tests/data/test-diff-suppr/test10-changed-parm-c-v0.c: Source
2758 code for the binary input above.
2759 * tests/data/test-diff-suppr/test10-changed-parm-c-v1.c: Likewise.
2760 * tests/data/Makefile.am: Add the new test files to source
2761 distribution.
2762 * tests/test-diff-suppr.cc (in_out_specs): Add the new test input
2763 to the vector of test inputs to run this harness over.
2764
27652014-12-26 Dodji Seketeli <dodji@redhat.com>
2766
2767 Un-share diff nodes in the comparison IR
2768 * include/abg-ir.h: Prefix the doc string with "///", rather than
2769 writing it inside a /**/ comment.
2770 * include/abg-comparison.h (function_decl_diff)
2771 (function_decl_diff_sptr, fn_parm_diff, fn_parm_diff_sptr)
2772 (var_diff_sptr, base_diff, class_diff, class_diff_sptr): Move
2773 these class & typedef decls to the top of the file.
2774 (string_changed_base_map, string_changed_parm_map)
2775 (unsigned_changed_parm_map, changed_function_ptr)
2776 (string_changed_function_ptr_map): Remove these typedefs.
2777 (string_base_diff_sptr_map, string_fn_parm_diff_sptr_map)
2778 (unsigned_fn_parm_diff_sptr_map, string_var_diff_sptr_map)
2779 (unsigned_var_diff_sptr_map, string_function_decl_diff_sptr_map)
2780 (string_var_diff_ptr_map): New typedefs.
2781 (diff_context::{has_diff_for,add_diff}): Make these member
2782 functions private.
2783 (diff_context::{set_canonical_diff_for,
2784 set_or_get_canonical_diff_for}): Declare new private member
2785 functions.
2786 (diff_context::{get_canonical_diff_for,
2787 initialize_canonical_diff}): New public member functions.
2788 (diff_context::maybe_apply_filters): Set the default value of the
2789 'traverse_nodes_once' parameter to false.
2790 (compute_diff): Make the overload for class_decl_sptr friend of
2791 the diff_context class.
2792 (class diff): Make the diff_context class a friend of this one.
2793 (diff::set_canonical_diff): Declare new private member function.
2794 (diff::get_canonical_diff): Declare new public member function.
2795 (diff::children_nodes): Make this return a vector<diff_sptr>, rather
2796 than a vector<diff*>.
2797 (diff::append_child_node): Make this take a diff_sptr rather than
2798 a diff*.
2799 (class fn_parm_diff): Declare new type.
2800 (compute_diff): Declare new overload for the new
2801 function_decl::parameter_sptr.
2802 (function_decl_diff::subtype_changed_parms): Return a
2803 string_fn_parm_diff_sptr_map rather than a string_changed_parm.
2804 (function_decl_diff::children_nodes): Return a vector<diff_sptr>.
2805 (function_decl_diff::append_child_node): Take a diff_sptr.
2806 (function_decl_diff::changed_functions): Return a
2807 string_function_decl_diff_sptr_map.
2808 (function_decl_diff::changed_variables): Return a
2809 string_var_diff_sptr.
2810 (class function_decl::parameter): Make this a pimpled class.
2811 Also, make it inherit decl_base.
2812 (equals): New overload for function_decl::parameter.
2813 (struct function_decl::parameter::hash): Declare this.
2814 (ir_node_visitor::visit): Declare new overload for
2815 function_decl::parameter.
2816 * src/abg-comparison.cc: Add doc-string about the internal
2817 representation of the comparison engine and also about the concept
2818 of canonical diff of the comparison engine.
2819 (RETURN_IF_BEING_REPORTED_OR_WAS_REPORTED_EARLIER)
2820 (RETURN_IF_BEING_REPORTED_OR_WAS_REPORTED_EARLIER2)
2821 (RETURN_IF_BEING_REPORTED_OR_WAS_REPORTED_EARLIER3): Consider the
2822 canonical diff when trying to know if the current node was
2823 reported earlier.
2824 (diff_context::priv::canonical_diffs): New data member.
2825 (diff_context::{get_canonical_diff_for, set_canonical_diff_for,
2826 set_or_get_canonical_diff_for, initialize_canonical_diff}): Define
2827 new member functions.
2828 (diff_context::{diff_has_been_traversed, mark_diff_as_traversed):
2829 Consider canonical diff for these tests and actions.
2830 (diff::priv::children_): Change the type of this to
2831 vector<diff_sptr>.
2832 (diff::canonical_diff_): New data member.
2833 (diff::diff): Initialize the diff::canonical_diff_ data member.
2834 (diff::begin_traversing): Mark the canonical diff node too.
2835 (diff::is_traversing): Consider the canonical diff node in this
2836 test.
2837 (diff::end_traversing): Make the canonical diff node too. Also
2838 mark the current node as having been traversed.
2839 (diff::children_nodes): Return a vector<diff_sptr> type.
2840 (diff::{get_canonical_diff, set_canonical_diff}): Define new
2841 member functions.
2842 (diff::append_child_node): Take a diff_sptr type parameter.
2843 (diff::{reported_once, currently_reporting}): Flag the canonical
2844 diff node too. And consider the canonical diff node when checking
2845 the flag.
2846 (diff::traverse): No need to mark the node as being traversed
2847 because the diff::end_traversing() function does it now. Adjust
2848 the code because diff::children_nodes() now returns
2849 vector<diff_sptr>.
2850 ({distinct_diff, var_diff, pointer_diff, array_diff,
2851 reference_diff, qualified_type_diff, enum_diff, class_diff,
2852 base_diff, scope_diff, function_decl_diff, typedef_diff,
2853 corpus_diff}::chain_into_hierarchy): Adjust to the new type that
2854 diff::append_child_node() takes. Also, take into account that the
2855 diff nodes are now un-shared.
2856 (compute_diff_for_distinct_kinds, compute_diff_for_types)
2857 (compute_diff): Do not share diff nodes anymore. Initialize the
2858 canonical diff node for the new created node.
2859 (represent): Take a var_diff_sptr rather than two var_decl_sptr.
2860 Adjust. Also take in account the fact that diff nodes are not
2861 shared anymore, and that they do have canonical diffs.
2862 (var_diff::type_diff): Make the computation of the type_diff of
2863 the var_diff be lazy. This avoids infinite (recursive) creation
2864 of diff nodes when a class diff node has a sub-type of data member
2865 that is a class diff node too.
2866 (var_diff::report): Detect redundant reporting of this kind of
2867 diff node.
2868 (class_diff::priv::changed_bases_): Change the type of this to
2869 string_base_diff_sptr_map.
2870 (class_diff::priv::subtype_changed_dm_): Change the type of this
2871 to string_var_diff_sptr_map.
2872 (class_diff::priv::changed_dm_): Change the type of this to
2873 unsigned_var_diff_sptr_map.
2874 (class_diff::priv::{count_filtered_subtype_changed_dm,
2875 count_filtered_bases}): Do not take a diff_context_sptr anymore.
2876 (class_diff::ensure_lookup_tables_populated): changed_bases_
2877 subtype_changed_dm_ and changed_dm_ are now *NOT* shared diff
2878 nodes anymore.
2879 (class_diff::priv::base_has_changed): Adjust.
2880 (class_diff::priv::subtype_changed_dm): Adjust.
2881 (class_diff::priv::count_filtered_bases): Adjust as changed_bases_
2882 is now a map of un-shared diff nodes.
2883 (class_diff::priv::count_filtered_subtype_changed_dm): Adjust as
2884 subtype_changed_dm_ is now a map of un-shared diff nodes.
2885 (class_diff::priv::{count_filtered_changed_mem_fns,
2886 count_filtered_inserted_mem_fns, count_filtered_deleted_mem_fns,
2887 }): Adjust for change of the default parameter value of
2888 diff_context::maybe_apply_filters().
2889 (class_diff::~class_diff): New destructor.
2890 (class_diff::changed_bases): Return a string_base_diff_sptr_map&
2891 type.
2892 (class_diff::{inserted_data_members, deleted_data_members,
2893 changed_member_fns}): Add doc strings.
2894 (struct changed_data_member_comp): Remove.
2895 (struct var_diff_comp): New comparison functor.
2896 (sort_changed_data_members): Remove.
2897 (sort_var_diffs): Define new sorting function.
2898 (class_diff::report): Adjust.
2899 (fn_parm_diff::*): Define member types and functions of the new
2900 fn_parm_diff type.
2901 (function_decl_diff::priv::{subtype_changed_parms_,
2902 changed_parms_by_id_}): Make these take a map of fn_parm_diff_sptr
2903 nodes.
2904 (function_decl_diff::ensure_lookup_tables_populated): Adjust to
2905 the fact that priv_->subtype_changed_parms_ and
2906 priv_->priv_->changed_parms_by_id_ now are maps of un-shared
2907 fn_parm_diff_sptr nodes.
2908 (function_decl_diff::subtype_changed_parms): Adjust.
2909 (struct changed_parm_comp): Remove.
2910 (struct fn_parm_diff_comp): New comparison functor.
2911 (sort_changed_parm_map): Remove.
2912 (sort_string_fn_parm_diff_sptr_map): New sorting function.
2913 (function_decl_diff::report): Adjust.
2914 (corpus_diff::priv::children_): Change the type of this to
2915 vector<diff_sptr>.
2916 (corpus_diff::priv::changed_fns_): Changed the type of this to
2917 string_function_decl_diff_sptr_map.
2918 (corpus_diff::priv::changed_vars_): Changed the type of this to
2919 string_var_diff_sptr_map.
2920 (corpus_diff::priv::ensure_lookup_tables_populated): Adjust.
2921 (corpus_diff::priv::apply_filters_and_compute_diff_stats}):
2922 Adjust. Do not need to clear redundancy categorization anymore
2923 because the diff nodes are not shared anymore.
2924 (corpus_diff::priv::categorize_redundant_changed_sub_nodes):
2925 Adjust.
2926 (corpus_diff::priv::clear_redundancy_categorization): Adjust.
2927 (corpus_diff::changed_variables): Adjust.
2928 (struct changed_function_ptr_comp): Remove.
2929 (struct function_decl_diff_comp): New comparison functor.
2930 (sort_string_changed_function_ptr_map): Remove.
2931 (sort_string_function_decl_diff_sptr_map): Define new sorting
2932 function.
2933 (struct changed_vars_comp): Remove.
2934 (struct var_diff_sptr_comp): New comparison functor.
2935 (sort_changed_vars): Remove.
2936 (sort_string_var_diff_sptr_map): Define new sorting function.
2937 (corpus_diff::report): Adjust.
2938 (corpus_diff::traverse): Adjust.
2939 ({category_propagation_visitor,
2940 suppression_categorization_visitor}::visit_end): Adjust.
2941 (clear_redundancy_categorization): Adjust.
2942 * src/abg-hash.cc (function_decl::parameter::hash::operator):
2943 Adjust.
2944 * src/abg-ir.cc (struct function_decl::parameter::priv): Define
2945 here as part of pimpl-ifying the function_decl::parameter type.
2946 (function_decl::parameter::*): Define here the member functions as
2947 part of pimpl-ifying the function_decl::parameter type.
2948 (equals): Define the overload for function_decl::parameter here
2949 too.
2950 (ir_node_visitor::visit(function_decl::parameter*)): Define this.
2951 * tests/data/test-abicompat/test0-fn-changed-report-0.txt: Adjust.
2952 * tests/data/test-diff-suppr/test5-fn-suppr-report-0.txt: Adjust.
2953 * tests/data/test-diff-dwarf/libtest21-redundant-fn-v0.so: New
2954 test input data.
2955 * tests/data/test-diff-dwarf/libtest21-redundant-fn-v1.so:
2956 Likewise.
2957 * tests/data/test-diff-dwarf/test21-redundant-fn-v0.cc: Source
2958 code for test input binary above.
2959 * tests/data/test-diff-dwarf/test21-redundant-fn-v1.cc: Likewise.
2960 * tests/data/test-diff-dwarf/test21-redundant-fn-report-0.txt: New
2961 test input data.
2962 * tests/data/test-diff-dwarf/libtest22-changed-parm-c-v0.so: New
2963 test input data.
2964 * tests/data/test-diff-dwarf/libtest22-changed-parm-c-v1.so:
2965 Likewise.
2966 * tests/data/test-diff-dwarf/test22-changed-parm-c-v0.c: Source
2967 code for test input binary above.
2968 * tests/data/test-diff-dwarf/test22-changed-parm-c-v1.c: Likewise.
2969 * tests/test-diff-dwarf.cc (in_out_spec): Add the new test input
2970 data to the vector the test inputs to run this harness over.
2971 * tests/data/test-diff-suppr/test8-redundant-fn-report-0.txt: New
2972 test input data.
2973 * tests/data/test-diff-suppr/test8-redundant-fn-report-1.txt:
2974 Likewise.
2975 * tests/data/test-diff-suppr/libtest8-redundant-fn-v0.so: New test
2976 input binary.
2977 * tests/data/test-diff-suppr/libtest8-redundant-fn-v1.so: Likewise.
2978 * tests/data/test-diff-suppr/test8-redundant-fn-v0.cc: Source code
2979 code for binary test input above.
2980 * tests/data/test-diff-suppr/test8-redundant-fn-v1.cc: Likewise.
2981 * tests/data/test-diff-suppr/test9-changed-parm-c-report-0.txt:
2982 New test input data.
2983 * tests/data/test-diff-suppr/test9-changed-parm-c-report-1.txt:
2984 Likewise.
2985 * tests/data/test-diff-suppr/libtest9-changed-parm-c-v0.so: New
2986 test input binary.
2987 * tests/data/test-diff-suppr/libtest9-changed-parm-c-v1.so: New
2988 test input binary.
2989 * tests/data/test-diff-suppr/test9-changed-parm-c-v0.c: Source
2990 code for binary test input above.
2991 * tests/data/test-diff-suppr/test9-changed-parm-c-v1.c: Likewise.
2992 * tests/test-diff-suppr.cc (in_out_specs): Add the new test input
2993 data to the vector the test inputs to run this harness over.
2994 * tests/data/Makefile.am: Add the new files to the source
2995 distribution.
2996
29972014-12-26 Dodji Seketeli <dodji@redhat.com>
2998
2999 Style fix
3000 * src/abg-ir.cc (reference_type_def::get_pointed_to_type): Return
3001 a type_base_sptr.
3002 * src/abg-comparison.cc (diff::is_filtered_out): Fix a comment.
3003
30042014-12-25 Dodji Seketeli <dodji@redhat.com>
3005
3006 Fix pretty printing of pointer_diff node
3007 * src/abg-comparison.cc (pointer_diff::get_pretty_representation):
3008 Add the missing opening square bracket.
3009
30102014-12-17 Sinny Kumari <skumari@redhat.com>
3011
3012 Add new methods in corpus_diff class
3013 * include/abg-comparison.h
3014 (corpus_diff::added_unrefed_function_symbols):
3015 Declare new member function
3016 (corpus_diff::added_unrefed_variable_symbols):
3017 Declare new member function
3018 * src/abg-comparison.cc
3019 (corpus_diff::added_unrefed_function_symbols):
3020 Define new member function
3021 (corpus_diff::added_unrefed_variable_symbols):
3022 Define new member function
3023
30242014-12-15 Sinny Kumari <sinny@redhat.com>
3025
3026 Add new corpus_diff::added_variables() method
3027 * include/abg-comparison.h (corpus_diff::added_variables):
3028 Declare new member function
3029 * src/abg-comparison.cc (corpus_diff::added_variables):
3030 Define new member function
3031
30322014-12-12 Dodji Seketeli <dodji@redhat.com>
3033
3034 Extend detection of compatible types to arrays
3035 * include/abg-fwd.h (is_array_type): Renamed is_array_type_def()
3036 into this for consistency.
3037 * src/abg-comparison.cc (type_suppression::suppresses_diff):
3038 Adjust.
3039 * src/abg-dwarf-reader.cc (build_array_type): Remove useless code
3040 that was trying to read a DW_AT_byte_size attribute from the DIE
3041 of the array, but then wasn't doing anything with the value. But
3042 then if the attribute was not present, the array type wouldn't be
3043 built.
3044 * src/abg-ir.cc (strip_typedef): Strip typedefs from sub-types of
3045 array types too.
3046 (is_array_type): Rename is_array_def() to this, for consistency.
3047 (var_decl::get_pretty_representation): Adjust.
3048 * tests/data/test-diff-filter/libtest24-compatible-vars-v0.so: New
3049 test input data.
3050 * tests/data/test-diff-filter/libtest24-compatible-vars-v1.so: Likewise.
3051 * tests/data/test-diff-filter/test24-compatible-vars-report-0.txt:
3052 Likewise.
3053 * tests/data/test-diff-filter/test24-compatible-vars-v0.c: Source
3054 code for the first binary above.
3055 * tests/data/test-diff-filter/test24-compatible-vars-v1.c: Source
3056 code for the second binary above.
3057 * tests/data/Makefile.am: Add the new test input data to source
3058 distribution.
3059 * tests/test-diff-filter.cc (in_out_specs): Add the new test input
3060 data to the list of input to run this test harness over.
3061
30622014-12-12 Dodji Seketeli <dodji@redhat.com>
3063
3064 Improve the doc string for the elf_symbol::get_id_string() method
3065 * src/abg-ir.cc (elf_symbol::get_id_string): Improve doc string.
3066 Talk about the content of the id string of an elf symbol.
3067
30682014-12-11 Dodji Seketeli <dodji@redhat.com>
3069
3070 Better handle pointer-to-void in various places of the pipeline
3071 * src/abg-comparison.cc (pointer_diff::report): Handle the case of
3072 pointer to void.
3073 * src/abg-dwarf-reader.cc (build_pointer_type_def): Assert that
3074 the underlying pointer is non-null.
3075 * src/abg-ir.cc (pointer_type_def::pointer_type_def): Handle the
3076 case of pointer to void.
3077 (equals): Likewise in the overload for const pointer_type_def.
3078 (pointer_type_def::get_qualified_name): Likewise.
3079
30802014-12-11 Dodji Seketeli <dodji@redhat.com>
3081
3082 Try harder to detect a DWARF attribute pointing into alternate DWARF section
3083 * src/abg-dwarf-reader.cc
3084 (is_die_attribute_resolved_through_gnu_ref_alt): Support the case
3085 of the origin function itself having a specification function
3086 link.
3087
30882014-12-11 Dodji Seketeli <dodji@redhat.com>
3089
3090 Fix accidentally removing the scope of variables when fixing them up
3091 * src/abg-dwarf-reader.cc (build_translation_unit_and_add_to_ir):
3092 During var decl fixup, remove the scope of a variable only when we
3093 are sure that we want to re-scope it.
3094
30952014-12-11 Dodji Seketeli <dodji@redhat.com>
3096
3097 Fix several aborts while diffing libdw.so
3098 * src/abg-corpus.cc
3099 (corpus::priv::build_unreferenced_symbols_tables): Fix wrong
3100 guestimation of the size of the map of unreferenced symbol table.
3101 * src/abg-dwarf-reader.cc (get_version_needed_for_versym): Honour
3102 the conditions of breaking out from walking the verneed table.
3103
31042014-12-10 Dodji Seketeli <dodji@redhat.com>
3105
3106 Temporarily disable redundant diff report elimination
3107 * src/abg-comparison.cc
3108 (diff_context::priv::priv): Show redundant changes by default.
3109 (categorize_redundancy): Do not categorize redundancy if the
3110 diff_context says that we shouldn't.
3111 * tools/abicompat.cc (options::show_redundant): New data member.
3112 (options::options): Initialize to true.
3113 (display_usage): Add new help string for new --no-redundant and
3114 --redundant options.
3115 (parse_command_line): Parse new --no-redundant and --redundant
3116 command line options.
3117 (main): Initialize the diff context with respect to the
3118 options::show_redundant property.
3119 * tools/abidiff.cc (options::options): Initialize the
3120 show_redundant_changes data member to true.
3121 (display_usage): Show new help string for the new --no-redundant
3122 command line option.
3123 (parse_command_line): Parse the new --no-redundant command line
3124 option.
3125 * tests/data/test-diff-filter/libtest23-redundant-fn-parm-change-v0.so:
3126 New test data input.
3127 * tests/data/test-diff-filter/libtest23-redundant-fn-parm-change-v1.so:
3128 Likewise.
3129 * tests/data/test-diff-filter/test23-redundant-fn-parm-change-report-0.txt:
3130 Likewise.
3131 * tests/data/test-diff-filter/test23-redundant-fn-parm-change-v0.c:
3132 Source code for the first binary above.
3133 * tests/data/test-diff-filter/test23-redundant-fn-parm-change-v1.c:
3134 Source code for the second binary above.
3135 * tests/data/Makefile.am: Add the new test data input to source
3136 distribution.
3137 * tests/test-abicompat.cc (in_out_specs): Add --no-redundant to
3138 abicompat when we don't want it to show redundant diff reports.
3139 * test-diff-filter.cc (in_out_specs): Likewise for abidiff.
3140 * test-diff-suppr.cc (in_out_specs): Likewise.
3141
31422014-12-10 Jan Engelhardt <jengelh@inai.de>
3143
3144 Fix conditional build wrt zip archives and cx11
3145 * configure.ac: remove (broken) assignment to the
3146 ENABLE_ZIP_ARCHIVE_AND_CXX11 variable
3147 * Makefile.am: replace variable assignments to
3148 ZIP_ARCHIVE_TESTS_FIRST_PART, ZIP_ARCHIVE_TESTS_SECOND_PART
3149 by ZIP_ARCHIVE_TESTS using the "+=" automake operator.
3150 Likewise for CXX11_TESTS.
3151
31522014-12-10 Dodji Seketeli <dodji@redhat.com>
3153
3154 Make determining of compatible types complete
3155 * include/abg-fwd.h (is_reference_type, is_function_type)
3156 (is_method_type): Declare new predicates.
3157 * include/abg-ir.h (class qualified_type_def): Pimpl this class.
3158 (qualified_type_def::qualified_type_def): Use the convenience
3159 type_base_sptr typedef.
3160 (qualified_type_def::{get_cv_quals, set_cv_quals}): Use the
3161 qualified_type_def::CV type rather than char.
3162 (qualified_type_def::get_underlying_type): Use the convenience
3163 type_base_sptr typedef.
3164 (pointer_type_def::pointer_type_def): Likewise.
3165 (function_decl::parameter::parameter): Add a new constructor.
3166 * src/abg-ir.cc (is_reference_type, is_function_type)
3167 (is_method_type): Define new predicates.
3168 (class qualified_type_def::priv): Define this new private type,
3169 for the purpose of Pimpl-ifying the qualified_type_def class.
3170 (qualified_type_def::{qualified_type_def, build_name,
3171 get_cv_quals_string_prefix, get_underlying_type}): Adjust for the
3172 purpose of Pimpl-ifying the qualified_type_def class.
3173 (equals): In the qualified_type_def, reference_type_def overloads,
3174 trust the fact that we have operator== overload for the
3175 type_base_sptr. This avoids crashes for when the (possible)
3176 underlying type is null.
3177 (pointer_type_def::operator==): Likewise.
3178 (strip_typedef): Make this recursively strip
3179 typedefs from sub-types.
3180 (types_are_compatible): Handle null types.
3181 (qualified_type_def::{get_cv_quals, set_cv_quals}): Handle
3182 qualified_type_def::CV rather than char.
3183 (pointer_type_def::pointer_type_def): Use the convenience
3184 type_base_sptr typedef.
3185 * include/abg-comparison.h (distinct_diff::compatible_child_diff):
3186 Declare new member function.
3187 * src/abg-comparison.cc (distinct_diff::compatible_child_diff):
3188 Define new member function.
3189 (distinct_diff::chain_into_hierarchy):
3190 Chain the compatible child diff node that might be present.
3191 (distinct_diff::report): Now when a distinct diff carries a
3192 compatible change, mention it in the report.
3193 * src/abg-comp-filter.cc (is_compatible_change): A compatible
3194 change can now involve types that are not typedefs. Only their
3195 sub-types need to be involved with typedef-ness.
3196 * tests/data/test-diff-dwarf/test{2,4,5}-report.txt: Adjust.
3197 * tests/data/test-diff-filter/libtest21-compatible-vars-v0.so: New
3198 test data input.
3199 * tests/data/test-diff-filter/libtest21-compatible-vars-v1.so: Likewise.
3200 * tests/data/test-diff-filter/test21-compatible-vars-report-0.txt Likewise.
3201 * tests/data/test-diff-filter/test21-compatible-vars-report-1.txt Likewise.
3202 * tests/data/test-diff-filter/test21-compatible-vars-v0.cc: Source
3203 code for the first data input binary above.
3204 * tests/data/test-diff-filter/test21-compatible-vars-v1.cc: Source
3205 code for the second data input binary above.
3206 * tests/data/test-diff-filter/libtest22-compatible-fns-v0.so: New
3207 test data input.
3208 * tests/data/test-diff-filter/libtest22-compatible-fns-v1.so Likewise.
3209 * tests/data/test-diff-filter/test22-compatible-fns-report-0.txt:
3210 New test data input.
3211 * tests/data/test-diff-filter/test22-compatible-fns-report-1.txt: Likewise.
3212 * tests/data/test-diff-filter/test22-compatible-fns-v0.c: Source
3213 code for the first test data input binary above.
3214 * tests/data/test-diff-filter/test22-compatible-fns-v1.c: Source
3215 code for the second test data input binary above.
3216 * tests/data/Makefile.am: Add the new test input data to source
3217 distribution.
3218 * tests/test-diff-filter.cc (in_out_specs): Add the new test data
3219 input above to the list of test data this harness has to be run
3220 over.
3221
32222014-12-09 Dodji Seketeli <dodji@redhat.com>
3223
3224 Fix classification of parameter addition in C
3225 * src/abg-comp-filter.cc (function_name_changed_but_not_symbol):
3226 Compare the fully qualified name of the functions; not their
3227 pretty representation.
3228 * tests/data/test-diff-dwarf/libtest20-add-fn-parm-v0.so: New test
3229 data intput.
3230 * tests/data/test-diff-dwarf/libtest20-add-fn-parm-v1.so:
3231 Likewise.
3232 * tests/data/test-diff-dwarf/test20-add-fn-parm-report-0.txt:
3233 Likewise.
3234 * tests/data/test-diff-dwarf/test20-add-fn-parm-v0.c: Source code
3235 for the first shared library above.
3236 * tests/data/test-diff-dwarf/test20-add-fn-parm-v1.c: Source code
3237 for the second shared library above.
3238 * tests/test-diff-dwarf.cc (in_out_specs): Add the test input data
3239 above to the list of test input the harness must run over.
3240 * Makefile.am: Add the new files above to source distribution.
3241
32422014-12-08 Dodji Seketeli <dodji@redhat.com>
3243
3244 Wire the soname check into abicompat
3245 * include/abg-comparison.h (corpus_diff::soname_changed): Declare
3246 new member function.
3247 * src/abg-comparison.cc (corpus_diff::soname_changed): Define new
3248 member function.
3249 (corpus_diff::length): Use the new corpus_diff::soname_changed()
3250 method.
3251 * tests/data/test-abicompat/libtest4-soname-changed-v0.so: New
3252 test input data.
3253 * tests/data/test-abicompat/libtest4-soname-changed-v1.so:
3254 Likewise.
3255 * tests/data/test-abicompat/test4-soname-changed-app: Likewise.
3256 * tests/data/test-abicompat/test4-soname-changed-report-0.txt:
3257 Likewise.
3258 * tests/data/test-abicompat/test4-soname-changed-app.cc: Source
3259 code for one of the binaries above.
3260 * tests/data/test-abicompat/test4-soname-changed-v0.cc: Likewise.
3261 * tests/data/test-abicompat/test4-soname-changed-v1.cc: Likewise.
3262 * tests/test-abicompat.cc (in_out_specs): Add the new test input
3263 data to the list of input data to run this harness over.
3264 (main): Take the soname change in account to determine if the
3265 change is ABI incompatible.
3266 * tests/data/Makefile.am: Add the new test input data above to source
3267 distribution.
3268
32692014-12-07 Dodji Seketeli <dodji@redhat.com>
3270
3271 Fixup messed up old runtestdiffdwarf input tests
3272 * tests/data/test-diff-dwarf/test17-non-refed-syms-report-0.txt:
3273 Add this missing reference test output.
3274 * tests/data/Makefile.am: Add the new reference test output to
3275 source distribution.
3276 * tests/data/test-diff-dwarf/test18-alias-sym-report-0.txt: Fix
3277 this output to avoid emitting symbol alias information in it.
3278 * tests/test-diff-dwarf.cc (in_out_specs): Add two missing test
3279 input data to the list of input data this harness is supposed to
3280 run over.
3281
32822014-12-07 Dodji Seketeli <dodji@redhat.com>
3283
3284 Support reading and comparing soname from ELF files
3285 * include/abg-corpus.h (corpus::{get_needed, set_needed,
3286 get_soname, set_soname}): Declare new accessors.
3287 * src/abg-corpus.cc (corpus::priv::{needed, soname}): New data
3288 members.
3289 (corpus::{get_needed, set_needed, get_soname, set_soname}): Define
3290 new accessors.
3291 (corpus::is_empty): Take dt_needed and dt_soname in account in
3292 computing empty-ness.
3293 * src/abg-dwarf-reader.cc (read_context::{dt_needed_,
3294 dt_soname_}): New data members.
3295 (read_context::{dt_needed, dt_soname}): New accessors.
3296 (read_context::load_dt_soname_and_needed): New member function.
3297 (read_corpus_from_elf): Call the new
3298 read_context::load_dt_soname_and_needed() to read the dt_soname
3299 and dt_needed tags. Set them to the corpus.
3300 * include/abg-comparison.h (diff_context::show_soname_change):
3301 Declare new accessors.
3302 * src/abg-comparison.cc (diff_context::priv::show_soname_change_):
3303 New data member.
3304 (diff_context::priv::priv): Initialize the new data member
3305 diff_context::priv::show_soname_change_.
3306 (diff_context::show_soname_change): Define new accessors.
3307 (corpus_diff::priv::sonames_equal_): New data member.
3308 (corpus_diff::priv::priv): Initialize the new data member
3309 corpus_diff::priv::sonames_equal_.
3310 (corpus_diff::length): Take the new priv_->sonames_equals_ data
3311 member in account.
3312 (corpus_diff::{report, priv::emit_diff_stats}): If the sonames
3313 changed and we are allowed to report it, then report it.
3314 (compute_diff): In the variant for corpus_diff, do not forget to
3315 compare the sonames.
3316 * src/abg-reader.cc (build_needed, read_elf_needed_from_input):
3317 Define new static functions.
3318 (read_corpus_from_input): Read the 'soname' attribute from the
3319 'abi-corpus' xml element node.
3320 * src/abg-writer.cc (write_elf_needed): Define new static
3321 function.
3322 (write_corpus_to_native_xml): Write a new 'elf-needed' xml element
3323 node that contains one xml 'dependency' element node per
3324 dependency to emit. This uses the new write_elf_needed() function
3325 above.
3326 * tests/data/test-diff-dwarf/libtest19-soname-v0.so: New test
3327 input data.
3328 * tests/data/test-diff-dwarf/libtest19-soname-v1.so: Likewise.
3329 * tests/data/test-diff-dwarf/test19-soname-report-0.txt: Likewise.
3330 * tests/data/test-diff-dwarf/test19-soname-v0.c: Source code of
3331 the first binary above.
3332 * tests/data/test-diff-dwarf/test19-soname-v1.c: Source code of
3333 the second binary above.
3334 * tests/test-diff-dwarf.cc (in_out_specs): Add the test input
3335 above to the list of test input to run this harness on.
3336 * tests/data/Makefile.am: Add the new test input data above.
3337 * tests/data/test-read-dwarf/test{0,1}.abi: Adjust.
3338 * tests/data/test-read-dwarf/test{2,3,4,6,}.so.abi: Adjust.
3339
33402014-12-07 Dodji Seketeli <dodji@redhat.com>
3341
3342 Fix some style nits in the native reader and writer
3343 * src/abg-reader.cc (read_symbol_db_from_input): Align parameter
3344 names. Fix indentation of the first line of the function.
3345 * src/abg-writer.cc (write_elf_symbols_table): Align parameter names.
3346
33472014-12-07 Dodji Seketeli <dodji@redhat.com>
3348
3349 Fix a crash while writing symbol information
3350 * src/abg-corpus.cc (corpus::{get_fun_symbol_map_sptr,
3351 get_var_symbol_map_sptr}): Make sure the symbol map is always
3352 constructed, even if it's empty.
3353 * tests/data/test-read-write/test26.xml: New test input data.
3354 * tests/test-read-write.cc (in_out_spec): Add this new test input
3355 data to the list of input data to run the harness on.
3356 (main): Support reading and writing corpus files alongside
3357 translation unit files that we were handling already.
3358 * tests/data/Makefile.am: Add the new test input data to source
3359 distribution.
3360
33612014-12-05 Dodji Seketeli <dodji@redhat.com>
3362
3363 Avoid showing ugly version info in the libabigail online manual
3364 * doc/manuals/conf.py: Update copyright mention. Do not show ugly
3365 version information.
3366
33672014-11-30 Dodji Seketeli <dodji@redhat.com>
3368
3369 Initial implementation of the abicompat tool
3370 * include/abg-comparison.h
3371 (diff_context::show_added_symbols_unreferenced_by_debug_info):
3372 Declare new accessors.
3373 (corpus_diff::{deleted_variables,
3374 deleted_unrefed_function_symbols,
3375 deleted_unrefed_variable_symbols,
3376 apply_filters_and_suppressions_before_reporting}): Declare new
3377 methods.
3378 (corpus_diff::diff_stats): Declare this new type. Actually this
3379 was previously corpus_diff::priv::diff_stats, which was a hidden
3380 internal type.. We are moving it here, in the external API so
3381 that client code can have more information about changes
3382 statistics. Change all the previously publicly accessible data
3383 members into accessor functions.
3384 * src/abg-comparison.cc (class corpus_diff::diff_stats::priv): New
3385 type.
3386 (diff_context::priv::show_added_syms_unreferenced_by_di_): New
3387 data member.
3388 (diff_context::priv::priv): Adjust.
3389 (diff_context::show_added_symbols_unreferenced_by_debug_info):
3390 Define this new method.
3391 (corpus_diff::priv::emit_diff_stats): Do not show the diff stat
3392 if the only changes is added function or variables symbols and if
3393 we were instructed to not show added symbols.
3394 (corpus_diff::priv::{diff_stats_, filters_and_suppr_applied_}):
3395 New data members.
3396 (corpus_diff::priv::priv): Initialize the
3397 filters_and_suppr_applied_ data member.
3398 (corpus_diff::priv::diff_stats): Move this type to
3399 corpus_diff::diff_stats.
3400 (corpus_diff::priv::{apply_filters_and_compute_diff_stats,
3401 emit_diff_stats}): Adjust.
3402 (corpus_diff::apply_filters_and_suppressions_before_reporting):
3403 Define new member function.
3404 (corpus_diff::report): Use the new
3405 apply_filters_and_suppressions_before_reporting() function, rather
3406 than applying the filters and suppressions by ourselves. Also
3407 adjust to the use the accessors of the new corpus_diff::diff_stats
3408 type.
3409 (corpus_diff::{deleted_variables,
3410 deleted_unrefed_function_symbols,
3411 deleted_unrefed_variable_symbols}): Define new accessors.
3412 (corpus_diff::diff_stats::{diff_stats, num_func_removed,
3413 num_func_added, num_func_changed, num_func_filtered_out,
3414 net_num_func_changed, num_vars_removed, num_vars_added,
3415 num_vars_changed, num_vars_filtered_out, net_num_vars_changed,
3416 num_func_sym_removed, num_func_syms_added, num_var_syms_removed,
3417 num_var_syms_added}): Define new member functions.
3418 * include/abg-corpus.h (corpus::{get_sym_ids_of_fns_to_keep,
3419 get_sym_ids_of_vars_to_keep}): Declare new methods.
3420 * src/abg-corpus.cc (corpus::priv::{sym_id_fns_to_keep,
3421 sym_id_vars_to_keep}): Added data members.
3422 (symtab_build_visitor_type::{unrefed_fun_symbols,
3423 unrefed_var_symbols, sym_id_fns_to_keep, sym_id_vars_to_keep}):
3424 Added new data members.
3425 (symtab_build_visitor_type::symtab_build_visitor_type): Take two
3426 additional parameters for the function and variable symbol ids to
3427 keep.
3428 (symtab_build_visitor_type::add_fn_to_wip_fns): Take the function
3429 symbols to keep in account when building the exported symbol
3430 table.
3431 (symtab_build_visitor_type::add_var_to_wip_vars): Likewise, take
3432 the variable symbols to keep in account when building the exported
3433 symbol table.
3434 (corpus::priv::build_public_decl_table): Adjust the initialization
3435 of the visitor that walks the ABI artifacts to build the exported
3436 symbol table to know take a list of function/variable symbols to
3437 keep.
3438 (corpus::priv::build_unreferenced_symbols_tables): Ensure that the
3439 public table of functions/variables is built before doing the work
3440 of this function. Also, if a list of variable/function symbols to
3441 keep is given, drop all symbols that are not in that list on the
3442 floor.
3443 (corpus::{get_sym_ids_of_fns_to_keep,
3444 get_sym_ids_of_vars_to_keep}): Define new accessors.
3445 * tools/abicompat.cc: New abicompat tool.
3446 * doc/manuals/abicompat.rst: New documentation source for
3447 abicompat.
3448 * doc/manuals/libabigail-tools.rst: Add an entry for the abicompat
3449 doc.
3450 * tests/test-abicompat.cc: New test harness for the 'abicompat'
3451 tool.
3452 * tests/Makefile.am: Build the runtestabicompat test harness and
3453 add it to the list of tests harnesses that are run by make check.
3454 * tests/data/test-abicompat/libtest0-fn-changed-libapp-v0.so: New
3455 test input.
3456 * tests/data/test-abicompat/libtest0-fn-changed-libapp-v1.so: Likewise.
3457 * tests/data/test-abicompat/test0-fn-changed-app: Likewise.
3458 * tests/data/test-abicompat/test0-fn-changed-0.suppr: Likewise
3459 * tests/data/test-abicompat/test0-fn-changed-report-0.txt: Likewise.
3460 * tests/data/test-abicompat/test0-fn-changed-report-1.txt: Likewise.
3461 * tests/data/test-abicompat/test0-fn-changed-app.cc: Likewise.
3462 * tests/data/test-abicompat/test0-fn-changed-libapp.h: Likewise.
3463 * tests/data/test-abicompat/test0-fn-changed-libapp-v0.cc: Likewise.
3464 * tests/data/test-abicompat/test0-fn-changed-libapp-v1.cc: Likewise.
3465 * tests/data/test-abicompat/libtest1-fn-removed-v0.so: Likewise.
3466 * tests/data/test-abicompat/libtest1-fn-removed-v1.so: Likewise.
3467 * tests/data/test-abicompat/test1-fn-removed-app: Likewise.
3468 * tests/data/test-abicompat/test1-fn-removed-app.cc: Likewise.
3469 * tests/data/test-abicompat/test1-fn-removed-report-0.txt: Likewise.
3470 * tests/data/test-abicompat/test1-fn-removed-v0.cc: Likewise.
3471 * tests/data/test-abicompat/test1-fn-removed-v1.cc: Likewise.
3472 * tests/data/test-abicompat/libtest2-var-removed-v0.so: Likewise.
3473 * tests/data/test-abicompat/libtest2-var-removed-v1.so: Likewise.
3474 * tests/data/test-abicompat/test2-var-removed-app: Likewise.
3475 * tests/data/test-abicompat/test2-var-removed-app.cc: Likewise.
3476 * tests/data/test-abicompat/test2-var-removed-report-0.txt: Likewise.
3477 * tests/data/test-abicompat/test2-var-removed-v0.cc: Likewise.
3478 * tests/data/test-abicompat/test2-var-removed-v1.cc: Likewise.
3479 * tests/data/test-abicompat/libtest3-fn-removed-v0.so: Likewise.
3480 * tests/data/test-abicompat/libtest3-fn-removed-v1.so: Likewise.
3481 * tests/data/test-abicompat/test3-fn-removed-app: Likewise.
3482 * tests/data/test-abicompat/test3-fn-removed-app.cc: Likewise.
3483 * tests/data/test-abicompat/test3-fn-removed-report-0.txt: Likewise.
3484 * tests/data/test-abicompat/test3-fn-removed-v0.cc: Likewise.
3485 * tests/data/test-abicompat/test3-fn-removed-v1.cc: Likewise.
3486 * tests/data/test-abicompat/test3-fn-removed-version-script-0 Likewise.:
3487 * tests/data/test-abicompat/test3-fn-removed-version-script-1: Likewise.
3488 * tests/data/Makefile.am: Add the new test inputs above to the
3489 source distribution.
3490
34912014-11-30 Dodji Seketeli <dodji@redhat.com>
3492
3493 Support reading undefined symbols from an ELF file
3494 * include/abg-corpus.h (corpus::{set_undefined_fun_symbol_map,
3495 set_undefined_var_symbol_map, get_undefined_fun_symbol_map_sptr,
3496 get_undefined_fun_symbol_map, get_sorted_undefined_fun_symbols,
3497 get_undefined_var_symbol_map_sptr, get_undefined_var_symbol_map,
3498 get_sorted_undefined_var_symbols}): Declare new methods ...
3499 * src/abg-corpus.cc (corpus::{set_undefined_fun_symbol_map,
3500 set_undefined_var_symbol_map, get_undefined_fun_symbol_map_sptr,
3501 get_undefined_fun_symbol_map, get_sorted_undefined_fun_symbols,
3502 get_undefined_var_symbol_map_sptr, get_undefined_var_symbol_map,
3503 get_sorted_undefined_var_symbols}): ... and define them.
3504 (struct corpus::priv::{undefined_var_symbol_map,
3505 sorted_undefined_var_symbols, undefined_fun_symbol_map,
3506 sorted_undefined_fun_symbols}): New data members.
3507 * src/abg-dwarf-reader.cc (get_symbol_versionning_sections): Also
3508 return the SHT_GNU_verneed section.
3509 (get_version_needed_for_versym): New static function.
3510 (get_version_definition_for_versym): Factorize this function out
3511 of ..
3512 (get_version_for_symbol): ... this one. Take a flag that says if
3513 we want the definition version or the needed version of a symbol.
3514 Extend the implementation using the two new function
3515 get_version_needed_for_versym() and
3516 get_version_definition_for_versym() above. This function now
3517 returns the version either for a defined & exported symbol, or for
3518 an undefined symbol.
3519 (lookup_symbol_from_sysv_hash_tab)
3520 (lookup_symbol_from_gnu_hash_tab, lookup_symbol_from_symtab):
3521 Adjust for the change of signature of get_version_for_symbol().
3522 (read_context::{undefined_fun_syms_, undefined_var_syms_}): New
3523 data members.
3524 (read_context::lookup_elf_symbol_from_index): Adjust for
3525 invocation of the new signature of get_version_for_symbol().
3526 (read_context::{undefined_fun_syms_sptr, undefined_fun_syms,
3527 undefined_var_syms_sptr, undefined_var_syms}): Define new methods.
3528 (read_context::load_symbol_maps): Add support for loading
3529 undefined symbols and their versions.
3530 (read_context::maybe_load_symbol_maps): Take in account the need
3531 to load undefined symbols as well.
3532 (read_corpus_from_elf): Once the undefined symbols have been read
3533 from the ELF file, stuff them into the resulting ABI corpus that
3534 has been built.
3535
35362014-11-30 Dodji Seketeli <dodji@redhat.com>
3537
3538 Show the pretty representation of deleted variables in the diff output
3539 * src/abg-comparison.cc (corpus_diff::report): Show the pretty
3540 representation of deleted variables in all cases.
3541
35422014-11-30 Dodji Seketeli <dodji@redhat.com>
3543
3544 Fix status checking in abidw
3545 * tools/abidw.cc (main): Fix successful status checking.
3546
35472014-11-30 Dodji Seketeli <dodji@redhat.com>
3548
3549 Rename elf_symbol::get_is_defined() to elf_symbol::is_defined()
3550 * include/abg-ir.h (elf_symbol::get_is_defined): Rename into
3551 elf_symbol::is_defined.
3552 (elf_symbol::set_is_defined): Rename into elf_symbol::is_defined.
3553 * src/abg-ir.cc (elf_symbol::get_is_defined): Likewise, rename
3554 this into elf_symbol::is_defined.
3555 (elf_symbol::set_is_defined): Likewise, rename this into
3556 elf_symbol::is_defined.
3557 (elf_symbol::{elf_symbol, is_public}): Adjust.
3558 * src/abg-writer.cc (write_elf_symbol): Adjust.
3559
35602014-11-30 Dodji Seketeli <dodji@redhat.com>
3561
3562 Update the copyright years of include/abg-corpus.h
3563 * include/abg-corpus.h: Update the copyright years of this file.
3564
35652014-11-20 Dodji Seketeli <dodji@redhat.com>
3566
3567 Make tests/data directory have its own Makefile
3568 * configure.ac(AC_CONFIG_FILE): Generate a new tests/data/Makefile
3569 file.
3570 * tests/Makefile.am: Link the data/ sub-directory from here. Move
3571 the EXTRA_DIST definition to ...
3572 * tests/data/Makefile.am: ... this new file here.
3573
35742014-11-20 Dodji Seketeli <dodji@redhat.com>
3575
3576 Hmh, finally EXTRA_DIST was just fine
3577 * tests/Makefile.am: Put EXTRA_DIST back.
3578
35792014-11-19 Dodji Seketeli <dodji@redhat.com>
3580
3581 Make sure we don't try to build test data
3582 * tests/Makefile.am: Replace EXTRA_DIST with noinst_DATA.
3583
35842014-11-19 Dodji Seketeli <dodji@redhat.com>
3585
3586 Fix manual documentation generation
3587 * doc/manuals/Makefile.am: Trigger the manual generation from the
3588 html-doc target. Add the source files to the distribution. Fix
3589 the clean target.
3590
35912014-11-19 Dodji Seketeli <dodji@redhat.com>
3592
3593 Fix apidoc building
3594 * doc/Makefile.am: Trigger the building frm the html-doc target.
3595
35962014-11-19 Dodji Seketeli <dodji@redhat.com>
3597
3598 Cleanup of configure.ac
3599 * configure.ac: Remove useless variables and fix a typo.
3600
36012014-11-19 Dodji Seketeli <dodji@redhat.com>
3602
3603 Add loads of forgotten test data files to source distribution
3604 * tests/Makefile.am: Add lots of test data file that were
3605 forgotten and then revealed by running make distcheck. Also fix
3606 some wrong paths to test data files.
3607
36082014-11-19 Dodji Seketeli <dodji@redhat.com>
3609
3610 Use DESTDIR in doc/manuals/Makefile.am when creating the manuals
3611 * doc/manuals/Makefile.am: Use the DESTDIR variable when
3612 addressing the destination directory of the created manuals.
3613
36142014-11-19 Dodji Seketeli <dodji@redhat.com>
3615
3616 Fix a thinko in doc/Makefile.am
3617 * apidoc-install-html-doxygen: Make sure that the directory
3618 $(DESTDIR)$(docdir) does not exist, before trying to create it.
3619
36202014-11-19 Dodji Seketeli <dodji@redhat.com>
3621
3622 Add doc/api/libabigail.doxy to source distribution
3623 * doc/Makefile.am: Add the file api/libabigail.doxy to source
3624 distribution.
3625
36262014-11-19 Dodji Seketeli <dodji@redhat.com>
3627
3628 Make the install-html target of apidoc/manual be conditional
3629 * configure.ac: add --enable-apidoc and --enable-manual. Add the
3630 two ENABLE_APIDOC and ENABLE_MANUAL automake conditional
3631 variables. Add the activation of the apidoc and manual into the
3632 final package configuration report.
3633 * doc/Makefile.am: Make the install-html, install-data-local and
3634 uninstall-local targets conditional on the ENABLE_APIDOC
3635 conditional variable.
3636 * doc/manuals/Makefile.am: Likewise, make the install-html,
3637 install-data-local and uninstall-data-local conditional on the
3638 ENABLE_MANUAL conditional variable.
3639
36402014-11-19 Dodji Seketeli <dodji@redhat.com>
3641
3642 Make the alt dwarf debug file *not* be a symlink
3643 * tests/data/test-alt-dwarf-file/test0-debug-dir/.build-id/16/7088580c513b439c9ed95fe6a8b29496495f26.debug:
3644 Make this be a real file, no more a symlink to
3645 ../../../test0-common-dwz.debug.
3646 * tests/data/test-alt-dwarf-file/test0-report.txt: Now that the
3647 file above is no more a symlink the message emitted by the test
3648 changes. It now says that the file found is the base name of the
3649 real file. So change the reference report accordingly.
3650
36512014-11-19 Dodji Seketeli <dodji@redhat.com>
3652
3653 Use the POSIX 1003.1-1988 tar format for dist tar
3654 * configure.ac: For the tar invocation made by make dist, make
3655 sure to use the POSIX 1003.1-1988 tar format that can support file
3656 names of more than 99 characters. This is useful for the
3657 test-alt-dwarf-file test that has data made of a file which patch
3658 has more than 99 characters.
3659
36602014-11-19 Dodji Seketeli <dodji@redhat.com>
3661
3662 Nested automake conditionals don't work
3663 * configure.ac (ENABLE_ZIP_ARCHIVE_AND_CXX11): Define this
3664 automake condition variable that is true if both the zip archive
3665 and c++11 features are enabled. This is important to know if the
3666 test runtestdot is going to be compiled. That test needs both
3667 c++11 and the zip archive features.
3668 * tests/Makefile.am: Do not nest automake conditional statements.
3669 It does not work. Rather, use the new
3670 ENABLE_ZIP_ARCHIVE_AND_CXX11 condition variable.
3671
36722014-11-19 Dodji Seketeli <dodji@redhat.com>
3673
3674 INSTALL file is not yet in the distribution
3675 * Makefile.am: Do not say that INSTALL file is in the distribution
3676 while it is not.
3677
36782014-11-19 Dodji Seketeli <dodji@redhat.com>
3679
3680 If c++11 is disable do not execute the runtestdot test
3681 * tests/Makefile.am: runtestdot should not be executed if c++11 is
3682 disabled.
3683
36842014-11-18 Dodji Seketeli <dodji@redhat.com>
3685
3686 make html now generates the apidoc, manual and web site
3687 * doc/Makefile.am (html-local): Make the html file generation be
3688 triggered by the html-local target, not the html target. The html
3689 target is a recursive target that calls the the html-local targets
3690 under each directory.
3691 (apidoc-html-doxygen): Rename the doc-html-doxygen target into
3692 (apidoc-install-html-doxygen): Rename doc-install-html-doxygen
3693 into this. this.
3694 (DO_HTML, DO_INSTALL_HTML): Adjust.
3695 (install-data-local): New target.
3696 * doc/manuals/Makefile.am (install-html, install-data-local): New
3697 targets.
3698
36992014-11-18 Dodji Seketeli <dodji@redhat.com>
3700
3701 Generate the manual html documentation in the proper build directory
3702 * doc/manuals/Makefile.am: Renamed doc/manuals/Makefile into this.
3703 (BUILDDIR): Make this variable point to $(builddir)/_build as
3704 opposed to just _build previously.
3705 (SOURCEDIR): New variable that points to the source dir as known
3706 by the autotools magic.
3707 (ALLSPHINXOPTS): Make the source dir refer to the new
3708 $(SOURCEDIR), rather than just '.' as previously.
3709 * configure.ac (doc/manuals/Makefile): Generate this now.
3710 * doc/Makefile.am: Link the sub-directory doc/manuals.
3711
37122014-11-18 Dodji Seketeli <dodji@redhat.com>
3713
3714 Update Makefile.am after the additions related to gen-changelog.py
3715 * Makefile.am: Add ChangeLog and COPYING-LGPLV2 to the source
3716 distribution.
3717 (update-changelog, tag-release-only tag-release): New Makefile
3718 targets.
3719
37202014-11-18 Dodji Seketeli <dodji@redhat.com>
3721
3722 Added a ChangeLog that is auto-generated by gen-changelog.py
3723 * ChangeLog: Add this auto-generated file.
3724
37252014-11-18 Dodji Seketeli <dodji@redhat.com>
3726
3727 [gen-changelog] Make subject line always come first
3728 * gen-changelog.py (process_commit): In changelog entries with an
3729 empty body, make sure the subject line comes first.
3730
37312014-11-18 Dodji Seketeli <dodji@redhat.com>
3732
3733 Try harder to remove timezone info from the date
3734 * gen-changelog.py (process_commit): The timezone shit can start
3735 either with a '+' or a '-'.
3736
37372014-11-18 Dodji Seketeli <dodji@redhat.com>
3738
3739 Not all ChangeLog file lines end up with a ':'
3740 * gen-changelog.py (process_commit): When trying to recognize the
3741 beginning of a ChangeLog entry body, do not expect a line that
3742 starts with a '*' to end with a ':' because there can be long file
3743 names that end on the next line.
3744
12014-11-18 Dodji Seketeli <dodji@redhat.com> 37452014-11-18 Dodji Seketeli <dodji@redhat.com>
2 3746
3 Allow introductory text in commit log and ignore it when generating ChangeLog 3747 Allow introductory text in commit log and ignore it when generating ChangeLog
@@ -17,6 +3761,28 @@
17 License it under LGPLV v2+ after asking Edward Hervey's kind 3761 License it under LGPLV v2+ after asking Edward Hervey's kind
18 permission. Ain't Free Software really great? 3762 permission. Ain't Free Software really great?
19 3763
37642014-11-18 Dodji Seketeli <dodji@redhat.com>
3765
3766 Fix the reference to the IRC channel on the web page
3767 * doc/website/mainpage.txt: The IRC server address is
3768 irc.oftc.net, not just oftc.net.
3769 * include/abg-fwd.h: Likewise.
3770
37712014-11-10 Dodji Seketeli <dodji@redhat.com>
3772
3773 Consider enclosing template when comparing template parameters
3774 * src/abg-ir.cc (template_parameter::priv::comparison_started_):
3775 New data member.
3776 (template_parameter::priv::priv): Initialize it.
3777 (template_parameter::operator==): Compare the enclosing template
3778 too. And avoid infinite recursion.
3779
37802014-11-10 Dodji Seketeli <dodji@redhat.com>
3781
3782 Remove mention of libzip from the web page
3783 * doc/website/mainpage.txt: Remove mention of libzip from the list
3784 of dependencies.
3785
202014-11-10 Dodji Seketeli <dodji@redhat.com> 37862014-11-10 Dodji Seketeli <dodji@redhat.com>
21 3787
22 Cleanup of the web page 3788 Cleanup of the web page