diff options
author | Dodji Seketeli <dodji@redhat.com> | 2015-06-07 11:58:17 +0200 |
---|---|---|
committer | Dodji Seketeli <dodji@redhat.com> | 2015-06-07 14:34:25 +0200 |
commit | 616d9af75167bfd283d89e39e9bd99d619945a2d (patch) | |
tree | becd165f342a74d4427093964d80149143163a29 /ChangeLog | |
parent | Avoid infinite loop in elf_symbol::get_alias_from_name() (diff) | |
download | libabigail-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-- | ChangeLog | 3766 |
1 files changed, 3766 insertions, 0 deletions
@@ -1,3 +1,3747 @@ | |||
1 | 2015-06-07 Dodji Seketeli <dodji@redhat.com> | ||
2 | |||
3 | Update ChangeLog file. | ||
4 | * ChangeLog: Update this automatically by typing make | ||
5 | update-changelog. | ||
6 | |||
7 | 2015-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 | |||
14 | 2015-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 | |||
27 | 2015-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 | |||
35 | 2015-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 | |||
44 | 2015-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 | |||
52 | 2015-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 | |||
62 | 2015-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 | |||
69 | 2015-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 | |||
85 | 2015-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 | |||
142 | 2015-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 | |||
179 | 2015-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 | |||
194 | 2015-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 | |||
255 | 2015-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 | |||
374 | 2015-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 | |||
450 | 2015-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 | |||
455 | 2015-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 | |||
487 | 2015-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 | |||
493 | 2015-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 | |||
505 | 2015-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 | |||
512 | 2015-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 | |||
521 | 2015-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 | |||
527 | 2015-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 | |||
536 | 2015-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 | |||
543 | 2015-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 | |||
580 | 2015-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 | |||
593 | 2015-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 | |||
598 | 2015-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 | |||
606 | 2015-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 | |||
635 | 2015-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 | |||
741 | 2015-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 | |||
773 | 2015-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 | |||
990 | 2015-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 | |||
998 | 2015-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 | |||
1011 | 2015-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 | |||
1021 | 2015-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 | |||
1036 | 2015-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 | |||
1042 | 2015-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 | |||
1079 | 2015-03-19 Dodji Seketeli <dodji@redhat.com> | ||
1080 | |||
1081 | Update the CONTRIBUTING file | ||
1082 | * CONTRIBUTING: How to check out the web pages. | ||
1083 | |||
1084 | 2015-03-19 Dodji Seketeli <dodji@redhat.com> | ||
1085 | |||
1086 | Update website documentation | ||
1087 | * doc/website/mainpage.txt: Update the web page. | ||
1088 | |||
1089 | 2015-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 | |||
1096 | 2015-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 | |||
1136 | 2015-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 | |||
1146 | 2015-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 | |||
1152 | 2015-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 | |||
1160 | 2015-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 | |||
1170 | 2015-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 | |||
1176 | 2015-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 | |||
1183 | 2015-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 | |||
1248 | 2015-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 | |||
1259 | 2015-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 | |||
1266 | 2015-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 | |||
1274 | 2015-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 | |||
1291 | 2015-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 | |||
1307 | 2015-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 | |||
1312 | 2015-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 | |||
1330 | 2015-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 | |||
1337 | 2015-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 | |||
1342 | 2015-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 | |||
1347 | 2015-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 | |||
1353 | 2015-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 | |||
1359 | 2015-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 | |||
1385 | 2015-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 | |||
1425 | 2015-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 | |||
1462 | 2015-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 | |||
1468 | 2015-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 | |||
1487 | 2015-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 | |||
1494 | 2015-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 | |||
1544 | 2015-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 | |||
1575 | 2015-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 | |||
1598 | 2015-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 | |||
1605 | 2015-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 | |||
1615 | 2015-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 | |||
1621 | 2015-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 | |||
1629 | 2015-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 | |||
1638 | 2015-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 | |||
1648 | 2015-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 | |||
1656 | 2015-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 | |||
1663 | 2015-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 | |||
1671 | 2015-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 | |||
1680 | 2015-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 | |||
1688 | 2015-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 | |||
1695 | 2015-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 | |||
1712 | 2015-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 | |||
1728 | 2015-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 | |||
1735 | 2015-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 | |||
1752 | 2015-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 | |||
1762 | 2015-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 | |||
1783 | 2015-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 | |||
1790 | 2015-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 | |||
1800 | 2015-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 | |||
1942 | 2015-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 | |||
1950 | 2015-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 | |||
1957 | 2015-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 | |||
1964 | 2015-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 | |||
1989 | 2015-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 | |||
1996 | 2015-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 | |||
2010 | 2015-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 | |||
2016 | 2015-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 | |||
2047 | 2015-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 | |||
2054 | 2015-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 | |||
2062 | 2015-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 | |||
2086 | 2015-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 | |||
2103 | 2015-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 | |||
2113 | 2015-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 | |||
2205 | 2015-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 | |||
2219 | 2015-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 | |||
2249 | 2015-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 | |||
2319 | 2015-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 | |||
2327 | 2015-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 | |||
2341 | 2015-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 | |||
2347 | 2015-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 | |||
2353 | 2015-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 | |||
2358 | 2015-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 | |||
2364 | 2015-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 | |||
2373 | 2015-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 | |||
2379 | 2015-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 | |||
2384 | 2015-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 | |||
2390 | 2015-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 | |||
2397 | 2015-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 | |||
2403 | 2015-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 | |||
2456 | 2015-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 | |||
2464 | 2015-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 | |||
2469 | 2015-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 | |||
2479 | 2015-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 | |||
2519 | 2015-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 | |||
2582 | 2015-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 | |||
2639 | 2015-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 | |||
2645 | 2015-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 | |||
2651 | 2014-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 | |||
2657 | 2014-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 | |||
2693 | 2014-12-27 Dodji Seketeli <dodji@redhat.com> | ||
2694 | |||
2695 | Fix typos in the abicompat manual | ||
2696 | * doc/manuals/abicompat.rst: Fix typos. | ||
2697 | |||
2698 | 2014-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 | |||
2703 | 2014-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 | |||
2709 | 2014-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 | |||
2716 | 2014-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 | |||
2722 | 2014-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 | |||
2728 | 2014-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 | |||
2738 | 2014-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 | |||
2765 | 2014-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 | |||
2997 | 2014-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 | |||
3004 | 2014-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 | |||
3010 | 2014-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 | |||
3024 | 2014-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 | |||
3032 | 2014-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 | |||
3062 | 2014-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 | |||
3068 | 2014-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 | |||
3080 | 2014-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 | |||
3088 | 2014-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 | |||
3095 | 2014-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 | |||
3104 | 2014-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 | |||
3142 | 2014-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 | |||
3152 | 2014-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 | |||
3222 | 2014-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 | |||
3242 | 2014-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 | |||
3269 | 2014-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 | |||
3282 | 2014-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 | |||
3340 | 2014-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 | |||
3347 | 2014-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 | |||
3361 | 2014-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 | |||
3367 | 2014-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 | |||
3491 | 2014-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 | |||
3536 | 2014-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 | |||
3542 | 2014-11-30 Dodji Seketeli <dodji@redhat.com> | ||
3543 | |||
3544 | Fix status checking in abidw | ||
3545 | * tools/abidw.cc (main): Fix successful status checking. | ||
3546 | |||
3547 | 2014-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 | |||
3560 | 2014-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 | |||
3565 | 2014-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 | |||
3574 | 2014-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 | |||
3579 | 2014-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 | |||
3584 | 2014-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 | |||
3591 | 2014-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 | |||
3596 | 2014-11-19 Dodji Seketeli <dodji@redhat.com> | ||
3597 | |||
3598 | Cleanup of configure.ac | ||
3599 | * configure.ac: Remove useless variables and fix a typo. | ||
3600 | |||
3601 | 2014-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 | |||
3608 | 2014-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 | |||
3614 | 2014-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 | |||
3620 | 2014-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 | |||
3626 | 2014-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 | |||
3640 | 2014-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 | |||
3651 | 2014-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 | |||
3660 | 2014-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 | |||
3672 | 2014-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 | |||
3678 | 2014-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 | |||
3684 | 2014-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 | |||
3699 | 2014-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 | |||
3712 | 2014-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 | |||
3720 | 2014-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 | |||
3725 | 2014-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 | |||
3731 | 2014-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 | |||
3737 | 2014-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 | |||
1 | 2014-11-18 Dodji Seketeli <dodji@redhat.com> | 3745 | 2014-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 | ||
3764 | 2014-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 | |||
3771 | 2014-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 | |||
3780 | 2014-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 | |||
20 | 2014-11-10 Dodji Seketeli <dodji@redhat.com> | 3786 | 2014-11-10 Dodji Seketeli <dodji@redhat.com> |
21 | 3787 | ||
22 | Cleanup of the web page | 3788 | Cleanup of the web page |