From: Dodji Seketeli Date: Mon, 15 Jul 2019 08:41:16 +0000 (+0200) Subject: Implement fast comparison of Linux Kernel types when applicable X-Git-Tag: upstream/1.7~65 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=400ac7a412631f92527a4f998a450652759fb13e;p=platform%2Fupstream%2Flibabigail.git Implement fast comparison of Linux Kernel types when applicable During type canonicalization there are observations that can speed-up type comparison significantly without impacting correctness too much. Typically, when two types are of the same name and kind, are found in the same corpus and are defined in the same translation unit, they ought to be the same type, even in C. So there is no need in this case to actually perform the structural comparison of the two types which does have a quadratic performance at best. Using this optimization made the loading of the drivers/gpu/drm/i915/i915.ko module go from a quasi inifite time (many hours on my system) to less than two minutes. I am confining this optimization to the Linux kernel case only for now, but I believe it could benefit all C programs. I am waiting for more testing before applying it more broadly. Also, while looking at this, I noticed that when loading several corpora into a given corpus group (i.e, loading several linux kernel binaries to represent a single conceptual kernel), we sometimes fail to recognize that a type defined in a header file that is included in several corpora is actually the same type, and should be re-used, rather than being re-defined in each corpus. This later adds stress (time and space) on the system as we need to canonicalize and de-duplicate these type later on. This is because the "per-corpus" type maps that we use to lookup a type by name and location when we see it (so that we know it's defined in a different corpus of our current group) should really be per-corpus-group type maps! That is a type can be defined in the corpus representing a .ko binary, and that type would be seen again in another .ko binary later. Until now, we were wrongly considering that types were to be first defined in the corpus of the vmlinux binary, and then could be re-used later. I have thus fixed the code so that whenever we add a type to its scope, the relevant per-corpus type maps are updated, as well as the per-corpus-group ones, so that we can later lookup types in those per-corpus-group type maps to know if a type is already defined in any corpus of the group. * include/abg-corpus.h (corpus::origin): Add a new LINUX_KERNEL_BINARY_ORIGIN enumerator. (corpus::{s,g}et_group): Declare new member functions. (class corpus): Make the corpus_group class friend of this one. (corpus_group::get_main_corpus): Declare new member function. * src/abg-corpus-priv.h (corpus::priv::group): Define new data member. (corpus::priv::priv): Initialize the new corpus::priv::group data member. * src/abg-corpus.cc (corpus::{g,s}et_group): Define new member functions. (corpus_group::get_main_corpus): Likewise. (corpus_group::add_corpus): Use the new corpus::set_group() here to to make the corpus be aware of the group it belongs to. * src/abg-dwarf-reader.cc (read_debug_info_into_corpus): Set the current corpus origin to the corpus::LINUX_KERNEL_BINARY_ORIGIN if we are looking at a Linux Kernel binary. (read_context::main_corpus_from_current_group): Use the corpus_group::get_main_corpus method. (should_reuse_type_from_corpus_group): Return the corpus group, rather than the main corpus. (read_debug_info_into_corpus): Add the current corpus to the current corpus group before the debug info reading is done. That way, the corpus group will be accessible from the current corpus during the construction of the internal representation. (read_and_add_corpus_to_group_from_elf): Add the corpus to the group only if it wasn't added to it before. * include/abg-ir.h (operator{==,!=}): Declare new deep equality and inequality operators for class_or_union_sptr and union_decl_sptr. * src/abg-ir.cc (types_defined_same_linux_kernel_corpus_public): Define a new static function. (type_base::get_canonical_type_for): Use the new types_defined_same_linux_kernel_corpus_public here to speed up type comparison. (equals): In the overload of class_or_union, use the new types_defined_same_linux_kernel_corpus_public as well, to speed up type comparison. (operator{==,!=}): Define new deep equality and inequality operators for class_or_union_sptr and union_decl_sptr. (maybe_update_types_lookup_map): In the overload function for type_decl_sptr, class_decl_sptr, union_decl_sptr, enum_type_decl_sptr, typedef_decl_sptr, qualified_type_def_sptr, reference_type_def_sptr, array_type_def_sptr, array_type_def::subrange_sptr, and function_type_sptr, update the type lookup maps of the containing corpus group as well, not just the ones of the current corpus. * src/abg-reader.cc (build_enum_type_decl): Forgot to set the "is-anonymous" flag. Oops, fix this. * tests/data/test-read-dwarf/PR22122-libftdc.so.abi: Adjust. * tests/data/test-read-dwarf/test10-pr18818-gcc.so.abi: Adjust. * tests/data/test-read-dwarf/test12-pr18844.so.abi: Adjust. * tests/data/test-read-dwarf/test22-pr19097-libstdc++.so.6.0.17.so.abi: Adjust. * tests/data/test-read-dwarf/test9-pr18818-clang.so.abi: Adjust. Signed-off-by: Dodji Seketeli --- diff --git a/include/abg-corpus.h b/include/abg-corpus.h index b336b93c..ac2d78b1 100644 --- a/include/abg-corpus.h +++ b/include/abg-corpus.h @@ -64,7 +64,8 @@ public: { ARTIFICIAL_ORIGIN = 0, NATIVE_XML_ORIGIN, - DWARF_ORIGIN + DWARF_ORIGIN, + LINUX_KERNEL_BINARY_ORIGIN }; private: @@ -72,6 +73,7 @@ private: void record_canonical_type(const type_base_sptr&) const; type_base_sptr lookup_canonical_type(const string& qualified_name) const; + void set_group(corpus_group*); public: shared_ptr priv_; @@ -113,6 +115,12 @@ public: const type_maps& get_type_per_loc_map() const; + const corpus_group* + get_group() const; + + corpus_group* + get_group(); + origin get_origin() const; @@ -281,6 +289,7 @@ public: get_exported_decls_builder() const; friend class type_base; + friend class corpus_group; };// end class corpus. /// Abstracts the building of the set of exported variables and @@ -364,6 +373,12 @@ public: const corpora_type& get_corpora() const; + const corpus_sptr + get_main_corpus() const; + + corpus_sptr + get_main_corpus(); + virtual bool is_empty() const; diff --git a/include/abg-ir.h b/include/abg-ir.h index 8f2209ba..170a8446 100644 --- a/include/abg-ir.h +++ b/include/abg-ir.h @@ -3863,6 +3863,12 @@ method_decl_sptr copy_member_function(const class_or_union_sptr& clazz, const method_decl* f); +bool +operator==(const class_or_union_sptr& l, const class_or_union_sptr& r); + +bool +operator!=(const class_or_union_sptr& l, const class_or_union_sptr& r); + /// Hasher for the @ref class_or_union type struct class_or_union::hash { @@ -4169,6 +4175,12 @@ method_decl_sptr copy_member_function(const union_decl_sptr& union_type, const method_decl* f); +bool +operator==(const union_decl_sptr& l, const union_decl_sptr& r); + +bool +operator!=(const union_decl_sptr& l, const union_decl_sptr& r); + /// Abstraction of a member function context relationship. This /// relates a member function to its parent class. class mem_fn_context_rel : public context_rel diff --git a/src/abg-corpus-priv.h b/src/abg-corpus-priv.h index 2bd88120..4422532e 100644 --- a/src/abg-corpus-priv.h +++ b/src/abg-corpus-priv.h @@ -678,6 +678,7 @@ struct corpus::priv { mutable unordered_map canonical_types_; environment* env; + corpus_group* group; corpus::exported_decls_builder_sptr exported_decls_builder; origin origin_; vector regex_patterns_fns_to_suppress; @@ -725,6 +726,7 @@ public: priv(const string & p, environment* e) : env(e), + group(), origin_(ARTIFICIAL_ORIGIN), path(p) {} diff --git a/src/abg-corpus.cc b/src/abg-corpus.cc index 329c03e9..486e335e 100644 --- a/src/abg-corpus.cc +++ b/src/abg-corpus.cc @@ -623,6 +623,29 @@ type_maps& corpus::get_type_per_loc_map() {return priv_->type_per_loc_map_;} +/// Getter of the group this corpus is a member of. +/// +/// @return the group this corpus is a member of, or nil if it's not +/// part of any @ref corpus_group. +const corpus_group* +corpus::get_group() const +{return priv_->group;} + +/// Getter of the group this corpus belongs to. +/// +/// @return the group this corpus belong to, or nil if it's not part +/// of any @ref corpus_group. +corpus_group* +corpus::get_group() +{return priv_->group;} + +/// Setter of the group this corpus belongs to. +/// +/// @param g the new group. +void +corpus::set_group(corpus_group* g) +{priv_->group = g;} + /// Getter for the origin of the corpus. /// /// @return the origin of the corpus. @@ -1588,6 +1611,7 @@ corpus_group::add_corpus(const corpus_sptr& corp) ABG_ASSERT(cur_arch == corp_arch); priv_->corpora.push_back(corp); + corp->set_group(this); /// Add the unreferenced function and variable symbols of this /// corpus to the unreferenced symbols of the current corpus group. @@ -1603,6 +1627,24 @@ const corpus_group::corpora_type& corpus_group::get_corpora() const {return priv_->corpora;} +/// Getter of the first corpus added to this Group. +/// +/// @return the first corpus added to this Group. +const corpus_sptr +corpus_group::get_main_corpus() const +{return const_cast(this)->get_main_corpus();} + +/// Getter of the first corpus added to this Group. +/// +/// @return the first corpus added to this Group. +corpus_sptr +corpus_group::get_main_corpus() +{ + if (!get_corpora().empty()) + return get_corpora().front(); + return corpus_sptr(); +} + /// Test if the current corpus group is empty. /// /// @return true iff the current corpus group is empty. diff --git a/src/abg-dwarf-reader.cc b/src/abg-dwarf-reader.cc index a46d25d0..f64ab9bd 100644 --- a/src/abg-dwarf-reader.cc +++ b/src/abg-dwarf-reader.cc @@ -5845,9 +5845,8 @@ public: corpus_sptr main_corpus_from_current_group() { - if (cur_corpus_group_ && !cur_corpus_group_->get_corpora().empty()) - return cur_corpus_group_->get_corpora().front(); - + if (cur_corpus_group_) + return cur_corpus_group_->get_main_corpus(); return corpus_sptr(); } @@ -5884,15 +5883,15 @@ public: /// coming from the "vmlinux" binary that is the main corpus of the /// group. /// - /// @return true if the current corpus is part of a corpus group - /// being built and if it's not the main corpus of the group. + /// @return the corpus group the current corpus belongs to, if the + /// current corpus is part of a corpus group being built. Nil otherwise. corpus_sptr should_reuse_type_from_corpus_group() const { if (has_corpus_group() && is_c_language(cur_transl_unit()->get_language())) if (corpus_sptr main_corpus = main_corpus_from_current_group()) if (!current_corpus_is_main_corpus_from_current_group()) - return main_corpus; + return current_corpus_group(); return corpus_sptr(); } @@ -16385,10 +16384,15 @@ read_debug_info_into_corpus(read_context& ctxt) // First set some mundane properties of the corpus gathered from // ELF. ctxt.current_corpus()->set_path(ctxt.elf_path()); - ctxt.current_corpus()->set_origin(corpus::DWARF_ORIGIN); + if (ctxt.is_linux_kernel_binary()) + ctxt.current_corpus()->set_origin(corpus::LINUX_KERNEL_BINARY_ORIGIN); + else + ctxt.current_corpus()->set_origin(corpus::DWARF_ORIGIN); ctxt.current_corpus()->set_soname(ctxt.dt_soname()); ctxt.current_corpus()->set_needed(ctxt.dt_needed()); ctxt.current_corpus()->set_architecture_name(ctxt.elf_architecture()); + if (corpus_group_sptr group = ctxt.current_corpus_group()) + group->add_corpus(ctxt.current_corpus()); // Set symbols information to the corpus. if (!get_ignore_symbol_table(ctxt)) @@ -16674,11 +16678,11 @@ maybe_canonicalize_type(const type_base_sptr& t, /// 2/ /// void maybe_canonicalize_type(const Dwarf_Die *die, read_context& ctxt); /// -/// So this function uses 1/ for most types and uses uses 2/ for -/// anonymous struct/classes and enum types. It also uses it for -/// function types. Using 2/ is slower and bigger than using 1/, but -/// then 1/ doesn't know how to deal with anonymous types. That's why -/// this function uses 2/ only for the types that really need it. +/// So this function uses 1/ for most types and uses uses 2/ function +/// types. Using 2/ is slower and bigger than using 1/, but then 1/ +/// deals poorly with anonymous types because of how poorly DIEs +/// canonicalization works on anonymous types. That's why this +/// function uses 2/ only for the types that really need it. /// /// @param die the DIE of the type denoted by @p t. /// @@ -16690,24 +16694,6 @@ maybe_canonicalize_type(const Dwarf_Die *die, const type_base_sptr& t, read_context& ctxt) { - if (const class_or_union_sptr cl = is_class_or_union_type(t)) - { - if (cl->get_is_anonymous()) - { - maybe_canonicalize_type(t, ctxt); - return; - } - } - - if (const enum_type_decl_sptr e = is_enum_type(t)) - { - if (e->get_is_anonymous()) - { - maybe_canonicalize_type(t, ctxt); - return ; - } - } - if (const function_type_sptr ft = is_function_type(t)) { maybe_canonicalize_type(ft, ctxt); @@ -17613,7 +17599,8 @@ read_and_add_corpus_to_group_from_elf(read_context& ctxt, corpus_sptr corp = read_corpus_from_elf(ctxt, status); if (status & STATUS_OK) { - group.add_corpus(corp); + if (!corp->get_group()) + group.add_corpus(corp); result = corp; } diff --git a/src/abg-ir.cc b/src/abg-ir.cc index 94e4ac8d..1520c184 100644 --- a/src/abg-ir.cc +++ b/src/abg-ir.cc @@ -10138,7 +10138,20 @@ maybe_update_types_lookup_map(const type_decl_sptr& basic_type) (basic_type, type_corpus->get_type_per_loc_map().basic_types(), /*use_type_name_as_key*/false); + + if (corpus *group = type_corpus->get_group()) + { + maybe_update_types_lookup_map + (basic_type, + group->priv_->get_types().basic_types()); + + maybe_update_types_lookup_map + (basic_type, + group->get_type_per_loc_map().basic_types(), + /*use_type_name_as_key*/false); + } } + } /// Update the map that associates the fully qualified name of a class @@ -10169,6 +10182,18 @@ maybe_update_types_lookup_map(const class_decl_sptr& class_type) (class_type, type_corpus->get_type_per_loc_map().class_types(), /*use_type_name_as_key*/false); + + if (corpus *group = type_corpus->get_group()) + { + maybe_update_types_lookup_map + (class_type, + group->priv_->get_types().class_types()); + + maybe_update_types_lookup_map + (class_type, + group->get_type_per_loc_map().class_types(), + /*use_type_name_as_key*/false); + } } } @@ -10200,6 +10225,18 @@ maybe_update_types_lookup_map(const union_decl_sptr& union_type) (union_type, type_corpus->get_type_per_loc_map().union_types(), /*use_type_name_as_key*/false); + + if (corpus *group = type_corpus->get_group()) + { + maybe_update_types_lookup_map + (union_type, + group->priv_->get_types().union_types()); + + maybe_update_types_lookup_map + (union_type, + group->get_type_per_loc_map().union_types(), + /*use_type_name_as_key*/false); + } } } @@ -10231,7 +10268,20 @@ maybe_update_types_lookup_map(const enum_type_decl_sptr& enum_type) (enum_type, type_corpus->get_type_per_loc_map().enum_types(), /*use_type_name_as_key*/false); + + if (corpus *group = type_corpus->get_group()) + { + maybe_update_types_lookup_map + (enum_type, + group->priv_->get_types().enum_types()); + + maybe_update_types_lookup_map + (enum_type, + group->get_type_per_loc_map().enum_types(), + /*use_type_name_as_key*/false); + } } + } /// Update the map that associates the fully qualified name of a @@ -10262,6 +10312,18 @@ maybe_update_types_lookup_map(const typedef_decl_sptr& typedef_type) (typedef_type, type_corpus->get_type_per_loc_map().typedef_types(), /*use_type_name_as_key*/false); + + if (corpus *group = type_corpus->get_group()) + { + maybe_update_types_lookup_map + (typedef_type, + group->priv_->get_types().typedef_types()); + + maybe_update_types_lookup_map + (typedef_type, + group->get_type_per_loc_map().typedef_types(), + /*use_type_name_as_key*/false); + } } } @@ -10284,9 +10346,18 @@ maybe_update_types_lookup_map(const qualified_type_def_sptr& qualified_type) (qualified_type, tu->get_types().qualified_types()); if (corpus *type_corpus = qualified_type->get_corpus()) - maybe_update_types_lookup_map - (qualified_type, - type_corpus->priv_->get_types().qualified_types()); + { + maybe_update_types_lookup_map + (qualified_type, + type_corpus->priv_->get_types().qualified_types()); + + if (corpus *group = type_corpus->get_group()) + { + maybe_update_types_lookup_map + (qualified_type, + group->priv_->get_types().qualified_types()); + } + } } /// Update the map that associates the fully qualified name of a @@ -10308,9 +10379,18 @@ maybe_update_types_lookup_map(const pointer_type_def_sptr& pointer_type) (pointer_type, tu->get_types().pointer_types()); if (corpus *type_corpus = pointer_type->get_corpus()) - maybe_update_types_lookup_map - (pointer_type, - type_corpus->priv_->get_types().pointer_types()); + { + maybe_update_types_lookup_map + (pointer_type, + type_corpus->priv_->get_types().pointer_types()); + + if (corpus *group = type_corpus->get_group()) + { + maybe_update_types_lookup_map + (pointer_type, + group->priv_->get_types().pointer_types()); + } + } } /// Update the map that associates the fully qualified name of a @@ -10332,9 +10412,18 @@ maybe_update_types_lookup_map(const reference_type_def_sptr& reference_type) (reference_type, tu->get_types().reference_types()); if (corpus *type_corpus = reference_type->get_corpus()) - maybe_update_types_lookup_map - (reference_type, - type_corpus->priv_->get_types().reference_types()); + { + maybe_update_types_lookup_map + (reference_type, + type_corpus->priv_->get_types().reference_types()); + + if (corpus *group = type_corpus->get_group()) + { + maybe_update_types_lookup_map + (reference_type, + group->priv_->get_types().reference_types()); + } + } } /// Update the map that associates the fully qualified name of a type @@ -10365,6 +10454,18 @@ maybe_update_types_lookup_map(const array_type_def_sptr& array_type) (array_type, type_corpus->get_type_per_loc_map().array_types(), /*use_type_name_as_key*/false); + + if (corpus *group = type_corpus->get_group()) + { + maybe_update_types_lookup_map + (array_type, + group->priv_->get_types().array_types()); + + maybe_update_types_lookup_map + (array_type, + group->get_type_per_loc_map().array_types(), + /*use_type_name_as_key*/false); + } } } @@ -10397,6 +10498,18 @@ maybe_update_types_lookup_map (subrange_type, type_corpus->get_type_per_loc_map().subrange_types(), /*use_type_name_as_key*/false); + + if (corpus *group = subrange_type->get_corpus()) + { + maybe_update_types_lookup_map + (subrange_type, + group->priv_->get_types().subrange_types()); + + maybe_update_types_lookup_map + (subrange_type, + group->get_type_per_loc_map().subrange_types(), + /*use_type_name_as_key*/false); + } } } @@ -10420,9 +10533,18 @@ maybe_update_types_lookup_map(const function_type_sptr& fn_type) (fn_type, tu->get_types().function_types()); if (corpus *type_corpus = fn_type->get_corpus()) - maybe_update_types_lookup_map - (fn_type, - type_corpus->priv_->get_types().function_types()); + { + maybe_update_types_lookup_map + (fn_type, + type_corpus->priv_->get_types().function_types()); + + if (corpus *group = fn_type->get_corpus()) + { + maybe_update_types_lookup_map + (fn_type, + group->priv_->get_types().function_types()); + } + } } /// Update the map that associates the fully qualified name of a type @@ -10785,6 +10907,101 @@ type_eligible_for_odr_based_comparison(const type_base_sptr& type) return false; } +/// Test if two types are eligible to the "Linux Kernel Fast Type +/// Comparison Optimization", a.k.a LKFTCO. +/// +/// Two types T1 and T2 (who are presumably of the same name and kind) +/// are eligible to the LKFTCO if they fulfill the following criteria/ +/// +/// 1/ T1 and T2 come from the same Linux Kernel Corpus and they are +/// either class, union or enums. +/// +/// 2/ They are defined in the same translation unit. +/// +/// @param t1 the first type to consider. +/// +/// @param t2 the second type to consider. +/// +/// @return true iff t1 and t2 are eligible to the LKFTCO. +static bool +types_defined_same_linux_kernel_corpus_public(const type_base& t1, + const type_base& t2) +{ + const corpus *t1_corpus = t1.get_corpus(), *t2_corpus = t2.get_corpus(); + string t1_file_path, t2_file_path; + + /// If the t1 (and t2) are classes/unions/enums from the same linux + /// kernel corpus, let's move on. Otherwise bail out. + if (!(t1_corpus && t2_corpus + && t1_corpus == t2_corpus + && (t1_corpus->get_origin() == corpus::LINUX_KERNEL_BINARY_ORIGIN) + && (is_class_or_union_type(&t1) + || is_enum_type(&t1)))) + return false; + + class_or_union *c1 = 0, *c2 = 0; + c1 = is_class_or_union_type(&t1); + c2 = is_class_or_union_type(&t2); + + if ((c1 && c1->get_is_anonymous() && !c1->get_naming_typedef()) + || (c2 && c2->get_is_anonymous() && !c2->get_naming_typedef())) + return false; + + if (const enum_type_decl *e1 = is_enum_type(&t1)) + if (const enum_type_decl *e2 = is_enum_type(&t2)) + if (e1->get_is_anonymous() || e2->get_is_anonymous()) + return false; + + if (c1 && c1->get_is_declaration_only()) + c1 = c1->get_definition_of_declaration().get(); + if (c2 && c2->get_is_declaration_only()) + c2 = c2->get_definition_of_declaration().get(); + + if (c1 && c2) + { + if (c1->get_is_declaration_only() != c2->get_is_declaration_only()) + { + if (c1->get_environment()->decl_only_class_equals_definition()) + // At least of classes/union is declaration-only. Because + // we are in a context in which a declaration-only + // class/union is equal to all definitions of that + // class/union, we can assume that the two types are + // equal. + return true; + } + } + + if (t1.get_size_in_bits() != t2.get_size_in_bits()) + return false; + + { + location l; + + if (c1) + l = c1->get_location(); + else + l = dynamic_cast(t1).get_location(); + + unsigned line = 0, col = 0; + if (l) + l.expand(t1_file_path, line, col); + if (c2) + l = c2->get_location(); + else + l = dynamic_cast(t2).get_location(); + if (l) + l.expand(t2_file_path, line, col); + } + + if (t1_file_path.empty() || t2_file_path.empty()) + return false; + + if (t1_file_path == t2_file_path) + return true; + + return false; +} + /// Compute the canonical type for a given instance of @ref type_base. /// /// Consider two types T and T'. The canonical type of T, denoted @@ -10828,7 +11045,6 @@ type_base::get_canonical_type_for(type_base_sptr t) return type_base_sptr(); else t = cl; - } class_decl_sptr is_class = is_class_type(t); @@ -10964,6 +11180,11 @@ type_base::get_canonical_type_for(type_base_sptr t) // Compare types by considering that decl-only classes don't // equal their definition. env->decl_only_class_equals_definition(false); + if (types_defined_same_linux_kernel_corpus_public(**it, *t)) + { + result = *it; + break; + } if (*it == t) { // Restore the state of the on-the-fly-canonicalization @@ -18189,6 +18410,9 @@ equals(const class_or_union& l, const class_or_union& r, change_kind* k) RETURN(false); } + if (types_defined_same_linux_kernel_corpus_public(l, r)) + return true; + if (l.priv_->comparison_started(l) || l.priv_->comparison_started(r)) return true; @@ -19849,6 +20073,37 @@ bool operator!=(const class_decl_sptr& l, const class_decl_sptr& r) {return !operator==(l, r);} +/// Turn equality of shared_ptr of class_or_union into a deep +/// equality; that is, make it compare the pointed to objects too. +/// +/// @param l the left-hand-side operand of the operator +/// +/// @param r the right-hand-side operand of the operator. +/// +/// @return true iff @p l equals @p r. +bool +operator==(const class_or_union_sptr& l, const class_or_union_sptr& r) +{ + if (l.get() == r.get()) + return true; + if (!!l != !!r) + return false; + + return *l == *r; +} + +/// Turn inequality of shared_ptr of class_or_union into a deep +/// equality; that is, make it compare the pointed to objects too. +/// +/// @param l the left-hand-side operand of the operator +/// +/// @param r the right-hand-side operand of the operator. +/// +/// @return true iff @p l is different from @p r. +bool +operator!=(const class_or_union_sptr& l, const class_or_union_sptr& r) +{return !operator==(l, r);} + /// This implements the ir_traversable_base::traverse pure virtual /// function. /// @@ -20626,6 +20881,36 @@ copy_member_function(const union_decl_sptr& union_type, return copy_member_function(t, f); } +/// Turn equality of shared_ptr of union_decl into a deep equality; +/// that is, make it compare the pointed to objects too. +/// +/// @param l the left-hand-side operand of the operator +/// +/// @param r the right-hand-side operand of the operator. +/// +/// @return true iff @p l equals @p r. +bool +operator==(const union_decl_sptr& l, const union_decl_sptr& r) +{ + if (l.get() == r.get()) + return true; + if (!!l != !!r) + return false; + + return *l == *r; +} + +/// Turn inequality of shared_ptr of union_decl into a deep equality; +/// that is, make it compare the pointed to objects too. +/// +/// @param l the left-hand-side operand of the operator +/// +/// @param r the right-hand-side operand of the operator. +/// +/// @return true iff @p l is different from @p r. +bool +operator!=(const union_decl_sptr& l, const union_decl_sptr& r) +{return !operator==(l, r);} // // diff --git a/src/abg-reader.cc b/src/abg-reader.cc index 15675180..810a65fe 100644 --- a/src/abg-reader.cc +++ b/src/abg-reader.cc @@ -4005,6 +4005,7 @@ build_enum_type_decl(read_context& ctxt, enum_type_decl_sptr t(new enum_type_decl(name, loc, underlying_type, enums, linkage_name)); + t->set_is_anonymous(is_anonymous); if (ctxt.push_and_key_type_decl(t, id, add_to_current_scope)) { ctxt.map_xml_node_to_decl(node, t); diff --git a/tests/data/test-read-dwarf/PR22122-libftdc.so.abi b/tests/data/test-read-dwarf/PR22122-libftdc.so.abi index 6b075424..2fde01b1 100644 --- a/tests/data/test-read-dwarf/PR22122-libftdc.so.abi +++ b/tests/data/test-read-dwarf/PR22122-libftdc.so.abi @@ -4780,20 +4780,20 @@ - - + + - + - - + + @@ -6388,14 +6388,14 @@ - - + + - - + + diff --git a/tests/data/test-read-dwarf/test10-pr18818-gcc.so.abi b/tests/data/test-read-dwarf/test10-pr18818-gcc.so.abi index aa054260..5eb0dd76 100644 --- a/tests/data/test-read-dwarf/test10-pr18818-gcc.so.abi +++ b/tests/data/test-read-dwarf/test10-pr18818-gcc.so.abi @@ -10220,6 +10220,24 @@ + + + + + + + + + + + + + + + + + + diff --git a/tests/data/test-read-dwarf/test12-pr18844.so.abi b/tests/data/test-read-dwarf/test12-pr18844.so.abi index a4a6863e..f47a18df 100644 --- a/tests/data/test-read-dwarf/test12-pr18844.so.abi +++ b/tests/data/test-read-dwarf/test12-pr18844.so.abi @@ -20985,71 +20985,71 @@ - + - + - + - - + + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -21078,31 +21078,31 @@ - - - + + + - - - - + + + + - - - + + + - + @@ -21113,117 +21113,117 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - - + + - + - + - - - + + + - + - + - + - + - + - + - + - + - + - + - + - + @@ -21253,30 +21253,30 @@ - - + + - - - + + + - - + + - + @@ -21290,7 +21290,7 @@ - + @@ -21304,7 +21304,7 @@ - + @@ -21312,41 +21312,41 @@ - + - + - + - + - + - + - + - - + + - + - + - - - + + + @@ -21355,17 +21355,17 @@ - + - + - + @@ -21379,7 +21379,7 @@ - + @@ -21388,27 +21388,27 @@ - + - + - + - + - + - + @@ -21417,21 +21417,21 @@ - + - + - + - - + + @@ -21441,422 +21441,422 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - - + + + - - - + + - - + + - - + + - - + + - - - + + + - + - + + - - - - + + + - - - + + + - + - + - - + + - + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - - + + + - - - - + + + + - + - - - + + + - - - + + + - - - + + + - - - - + + + + - + - - + + - - + + - - + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - + + - - + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - + - + - + - - + + - - + + @@ -21869,636 +21869,636 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - - + + - + - - + + - - - + + + - - - + + + - + - - - + + + - - + + - - + + - - + + - + - - + + - + - - + + - - + + - - + + - + + - - - + + - - + + - - + + - + - + - - + + - - - + + + - - - + + + - + - + - + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - + - - + + - - + + - - + + - - + + - - + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - + - - + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - - + + + + - - - - - + + + + + - - - - - + + + + + - - - + + + - - - - + + + + - - - - + + + + - - - - - + + + + + - - - - - + + + + + - + - - + + - + - - + + - - - - - + + + + + - - - + + + - - - + + + - - - + + + - - - - + + + + - + - - + + - - + + - - + + - - - + + + - + - - + + - - + + - + - + - + - + - + - + @@ -22510,7 +22510,7 @@ - + @@ -22524,7 +22524,7 @@ - + @@ -22538,7 +22538,7 @@ - + @@ -22551,55 +22551,55 @@ - + - + - - + + - + - - + + - + - + - + - + - + - + @@ -22609,364 +22609,364 @@ - + - - + + - - + + - - + + - - - + + + - - - + + + - - + + - - + + - + - - + + - + - - - - + + + + - - + + - + - - - - - - - + + + + + + + - - + + - + - - + + - - - + + + - + - + - + + - - + + + - - - - + + + + - - - - + + - - + + - - - + + + - - + + - + + - - - + + - + - + - + - + - + - + - - + + - - - + + + - + - + - - + + - + - + - - - + + + - - - + + + - + - - - - + + + + - + - + - - + + - - - + + + - + - + - - + + - - - + + + - + + - - - + + - + + - - + - + @@ -22986,194 +22986,194 @@ - + - - + + - - + + - - + + - - + + - + - + - - + + - + - + - + - + - + - + - + - + - + - - + + - - + + - + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - + - + - + - + - + - + @@ -23182,229 +23182,229 @@ - + - + - - + + - - + + - - + + - + - - + + - + - - - - + + + + - - + + - - - + + + - + - - - + + + - - + + - + - + - - - + + + - - - + + + - - - + + + - - - + + + - + - + - - - + + + - + - + - + - + - + - + - - - + + + - - - + + + - + - + - - - + + + - - - + + + - + - + - - - + + + - - - + + + - - + + - + - - + + @@ -23413,14 +23413,14 @@ - + - + @@ -23428,123 +23428,123 @@ - - + + - + - + - + - + - - + + - + - - + + - + - + - + - + - - + + - - - + + + - + - + - - + + - - - + + + - + - + - + - + - + - + - + - - + + @@ -23553,7 +23553,7 @@ - + @@ -23562,8 +23562,8 @@ - - + + @@ -23571,222 +23571,222 @@ - + - + - + - + - + - + - + - + - - + + - - + + - - + + - + - - + + - + - + - + - + - - + + - + - + - + - + - + - - + + - - + + - - + + - - + + - - - + + + - - - - + + + + - - - + + + - - - + + + - - - + + + - - - + + + - - + + - + @@ -23951,198 +23951,198 @@ - + - - + + - + - + - + - + - + - + - + - + - + - + - + - - + + - - + + - - + + - - + + - - - - + + + + - - - - + + + + - - - + + + - - - - + + + + - - + + - - + + - + - - + + - + - + - + - + - - + + - - + + - - + + - + @@ -24151,7 +24151,7 @@ - + @@ -24166,7 +24166,7 @@ - + @@ -24174,19 +24174,19 @@ - + - + - + @@ -24223,19 +24223,19 @@ - + - + - - + + - + @@ -24250,8 +24250,8 @@ + - @@ -24277,7 +24277,7 @@ - + @@ -24286,7 +24286,7 @@ - + @@ -24295,59 +24295,59 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - - + + @@ -24355,7 +24355,7 @@ - + @@ -24368,43 +24368,43 @@ - - + + - + + - - + - - + + - - + + - + - + @@ -24423,16 +24423,16 @@ - - + + - - - + + + @@ -24453,8 +24453,8 @@ + - @@ -24464,7 +24464,7 @@ - + @@ -24516,13 +24516,13 @@ - + - + @@ -24536,8 +24536,8 @@ - - + + @@ -24550,24 +24550,24 @@ - - + + - - - + + + - - + + @@ -24585,8 +24585,8 @@ - - + + @@ -24599,7 +24599,7 @@ - + @@ -24607,54 +24607,54 @@ - + - + - + - + - + - + - + - + @@ -24710,12 +24710,12 @@ - + - + - + @@ -24728,8 +24728,8 @@ - - + + @@ -24741,7 +24741,7 @@ - + @@ -24754,8 +24754,8 @@ - - + + @@ -24765,501 +24765,501 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + + + - - - - + + - + + + - - - + - + - + - + - + - + - + - - + + + - - + - - + + - + - + - - + + - - + + - + - + - + - + - - + + - - + + - - + + - - + + - + - + - - + + - - + + - + - + - + - + - + - - + + - - + + - - + + - - + + - - + + - - - + + + - - - + + + - - - + + + - + - + - + - + - - + + - + - + - + - + - - + + - - + + - - + + - - + + - + - + - + - - - + + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - + - + - + - + - - + + - + - + - + - - + + - - - + + + - + - + - - + + - + - + - + - - + + - - - + + + @@ -25268,229 +25268,229 @@ - - + + - + - - + + - - + + - - + + - - + + - - + + - - + + - + - + - - + + - + - - + + - + - + - - + + - + - + - + - + - + - + - + - + - + - - - + + + - + - + - + - + - + - + - + - + - - - + + + - - - + + + - - - + + + - + - + - - - + + + - + - + - - - + + + - - + + - + @@ -25498,78 +25498,78 @@ - - + + - + - + - + - - + + - - - + + + - + - + - + - + - + - + - + - + - + @@ -25582,253 +25582,253 @@ - - + + - - - + + + - + - + - + - + - + - + - + - - + + - + - + - - + + - - + + - - + + - - + + - + - + - + - - + + - - + + - - + + - - + + - + - + - - + + - + - + - + - + - + - + - + - + - + - - + + - + - + - + - + - + - + - + - + @@ -25839,7 +25839,7 @@ - + @@ -25852,343 +25852,343 @@ - + - + - + - + - + - + - + - + - + - + - - + + - + - - + + - - + + - - + + - - - + + + - + - + - - + + - - + + - - - + + + - - - - + + + + - - - + + + - - - - + + + + - - - + + + - - - - + + + + - - - + + + - - - - + + + + - - - + + + - - - - + + + + - + - + - + - + - + - - - - + + + + - - + - - + + + - - - - + + + + - - + - - + + + - - - - + + + + - - + - - + + + - - - - + + + + - - + - - + + + - - - - + + + + - - + - - + + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - + - + @@ -26198,73 +26198,73 @@ - + - + - + - - + + - - + + - - - + + + - - + + - + - - + + - - + + - + @@ -26272,8 +26272,8 @@ - - + + @@ -26282,8 +26282,8 @@ - - + + @@ -26291,466 +26291,466 @@ - - - + + + - - - + + + - + - - + + - - - + + + - - - + + + - - - + + + - + - + - - - + + + - + + - - - - + + + - + - + - - + + - - + + - - + + - - - + + + - - + + - - + + - - - + + + - - + + - + - - + + - + - - - - + + + + - + - + - + - + - + - + - + - + - + - + - + - - - + + + - - - + + + - - + + - - + + - - + + - - + + - - - + + + - - + + - - + + - - + + - - + + - - + + - + - - + + - - + + - - + + - - - + + + - + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + + - - + - + - + - + - + - + - + - + @@ -26763,166 +26763,166 @@ - + - - + + - - + + - - + + - - + + - - + + - - + + - + - + - + - - + + - + - + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - + - + - + @@ -26930,8 +26930,8 @@ - - + + @@ -26940,8 +26940,8 @@ - - + + @@ -26949,421 +26949,421 @@ - + - - + + - - - + + + - + - + - + - + - - + + - - - + + + - + - + - - + + - + - + - + - + - + - - + + - + - + - + - - + + - + - - + + - - + + - + - - + + - - + + - - + + - - + + - - + + - - + + - + - + - - + + - + - + - + - - + + - + - + - + - + - - + + - - + + - - + + - - + + - - + + - - + + - + - + - - + + - - + + - - + + - - + + - + - + - + - + - + - - + + - - + + - + - - + + - + - - + + - - + + - + @@ -27371,169 +27371,169 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - - + + - - + + - - + + - + - - + + - + - + - + - + - + - - + + - - + + - - + + - + - - + + - + - - + + @@ -27554,106 +27554,106 @@ - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - + - + - + - - + + - + - + - - + + - + - - + + - + - + - + @@ -27679,7 +27679,7 @@ - + @@ -27689,7 +27689,7 @@ - + @@ -27698,34 +27698,34 @@ - + - - + + - - + + - - + + - + @@ -27733,166 +27733,166 @@ - + - + - + - - + + - - + + - + - + - + - + - - + + - - + + - - + + - - + + - - + + - - + + - - - + + + - + - - - - - + + + + + - + - - + + - - + + - + - + - - + + - + @@ -27901,14 +27901,14 @@ - - + + - + @@ -27916,70 +27916,70 @@ - - + + - + - + - + - + - - + + - - + + - + - + - - + + - - + + - - + + - + @@ -27991,21 +27991,21 @@ - - + + - - - + + + - + @@ -28013,58 +28013,58 @@ - + - + - + - + - + - - + + - - + + - + - + @@ -28074,12 +28074,12 @@ - + - - + + @@ -28087,54 +28087,54 @@ - + - - + + - - + + - - + + - + - + - + - + - - + + @@ -28142,54 +28142,54 @@ - + - + - + - + - + - + - + - + - - + + @@ -28197,296 +28197,296 @@ - + - + - + - + - + - + - + - + - + - - + + - - - + + + - - + + - - + + - - + + - - + + - - + + - + - + - + - + - + - + - + - + - + - + - + - + - - + + - + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - + - + - + - + - + - + - + - + - + - + - + @@ -28496,14 +28496,14 @@ - + - + - + @@ -28527,14 +28527,14 @@ - - - + + + - + - + @@ -28544,13 +28544,13 @@ - + - + - + @@ -28598,69 +28598,69 @@ - + - + - + - + - + - - + + - + - - - + + + - - - + + + - + - + - - + + - + @@ -28669,82 +28669,82 @@ - + - + - + - + - + - - + + - + - - - + + + - - - + + + - + - + - - + + - + - + - + @@ -28753,220 +28753,220 @@ - + - + - + - + - + - - + + - + - - - + + + - - - + + + - + - + - - + + - + - + - + - + - + - + - - + + - + - - - + + + - - - + + + - + - + - - + + - + - + - + - + - + - + - - + + - + - - - + + + - - - + + + - + - + - - + + - + - + - + @@ -28974,82 +28974,82 @@ - + - + - + - + - + - - + + - + - - - + + + - - - + + + - + - + - - + + - + - + - + @@ -29059,75 +29059,75 @@ - + - + - + - + - + - - + + - + - - - + + + - - - + + + - + - + - - + + - + - + @@ -29135,7 +29135,7 @@ - + @@ -29143,75 +29143,75 @@ - + - + - + - + - + - - + + - + - - - + + + - - - + + + - + - + - - + + - + - + @@ -29221,7 +29221,7 @@ - + @@ -29234,109 +29234,109 @@ - + - + - + - + - + - + - + - + - + - - + + - + - - - + + + - - - + + + - + - + - - + + - + - + - + - + @@ -29349,331 +29349,331 @@ - + - + - + - - + + - + - + - + - + - + - + - + - + - + - + - + - + - - + + - + - - - + + + - - - + + + - + - + - - + + - + - + - + - + - + - + - + - - + + - + - - - + + + - - - + + + - + - + - - + + - + - + - + - + - - - - - + + + + + - - - - - + + + + + - - + + - - + + - - - + + + - - + + - - - - + + + + - - - - - - + + + + + + - + - - - - - - - - - + + + + + + + + + - - + + - - - - - + + + + + - - + + - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + - - - - - + + + + + - - + + - - + + - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + @@ -29683,2137 +29683,2137 @@ - - + + - + - + - + - + - + - + - + - + - + - + - + - - + + - - + + - + - + - - + + - - + + - + - - + + - - + + - - + + - - + + - + - + - - + + - - + + - - + + - + - - + + - - + + - - - + + + - - - + + + - - - + + + - - - + + + - + - - + + - - + + - - + + - - + + - - + + - - + + - - - - + + + + - - - - + + + + - - + - + + - - - - + + + + - - + + - - + + - - - - + + + + - - - - + + + + - - + - + + - - - - + + + + - - + + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - - + + - - + + - + - + - + - + - + - + - + - + - + - + - + - - + + - - + + - + - + - - + + - - + + - + - - + + - - + + - - + + - - + + - + - + - - + + - - + + - - + + - + - - + + - - + + - - - + + + - - - + + + - - - + + + - - - + + + - + - - + + - - + + - - + + - - + + - - + + - - + + - - - - + + + + - - - - + + + + - - - - + + + + - - - - + + + + - - + + - - + + - - - - + + + + - - - - + + + + - - - - + + + + - - - - + + + + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - - + + - - + + - + - + - + - + - + - + - + - + - + - + - + - - + + - - + + - + - + - - + + - - + + - + - - + + - - + + - - + + - - + + - + - + - - + + - - + + - - + + - + - - + + - - + + - - - + + + - - - + + + - - - + + + - - - + + + - + - - + + - - + + - - + + - - + + - - + + - - + + - - - - + + + + - - - - + + + + - - - - + + + + - - - - + + + + - - + + - - + + - - - - + + + + - - - - + + + + - - - - + + + + - - - - + + + + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - - + + - + - + - + - + - + - + - + - + - + - - + + - + - + - + - + - + - + - + - + - - + + - - + + - + - + - - + + - - + + - + - - - + + + - - - + + + - - - + + + - - - + + + - - + + - - + + - - + + - - + + - - - + + + - - - + + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - + - + - + - + - - + + - + - + - + - + - + - + - + - + - - + + - - + + - + - + - - + + - - + + - + - - - + + + - - - + + + - - - + + + - - - + + + - - + + - - + + - - + + - - + + - - - + + + - - - + + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - + - + - - + + - + - + - + - + - + - + - + - + - - + + - - + + - + - + - - + + - - + + - + - - - + + + - - - + + + - - - + + + - - - + + + - - + + - - + + - - + + - - + + - - - + + + - - - + + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - + - + - + - + - + - + - + - + - - + + - + - + - - + + - - + + - + - + - + - + - + - + - - + + - - + + - + - - + + - - - + + + - - - + + + - - - + + + - + - - + + - - + + - - + + - - + + - - + + - - + + - + - + - - + + - + - - - - - - + + + + + + - - - - + + + + - + - - - - - - + + + + + + - - - + + + - - - + + + - - + + - - + + - - - - + + + + - - + + - - + + - - + + - - - + + + - - - + + + - - - + + + - - - + + + - - + + - - + + - - - - + + + + - - + + - - + + - - + + - - - + + + - - - - - + + + + + - - + + - + - - + + - - - + + + - - + + - - + + - - + + - - + + - - + + - - + + - - - - - - - - - - + + + + + + + + + + - - + + - - + + - - + + - - + + - - - + + + - + @@ -31830,56 +31830,56 @@ - + - + - + - + - + - - + + - + - + - - + + - - + + - - + + - - + + - - + + - + - + @@ -31887,13 +31887,13 @@ - + - + - + @@ -31907,252 +31907,252 @@ - + - + - + - + - - + + - - + + - - + + - - + + - + - - - - - + + + + + - - + + - - - - - - - - + + + + + + + + - + - - - + + + - - - - - + + + + + - - - - - + + + + + - - + + - - + + - - + + - - - - - - + + + + + + - + - - + + - - - - + + + + - - - - + + + + - - + + - - + + - - + + - - - - - - - - - - + + + + + + + + + + - - + + - - + + - - + + - - - + + + - - + + - - - + + + - - - - + + + + - - - - - - - + + + + + + + - + - - - - - + + + + + - - - - - + + + + + - - + + - - + + - - + + - - - - - - + + + + + + - + - - + + - - + + - - - - + + + + - - + + - - - - - - + + + + + + - + - - + + - - + + - - - + + + @@ -32160,106 +32160,106 @@ - - - - + + + + - - + + - - + + - - - - + + + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - - - + + + + - - + + - - + + - - + + @@ -32267,137 +32267,137 @@ - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - - - + + + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + @@ -32405,222 +32405,222 @@ - - + + - - + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - + + - - + + - - + + - - - - - - + + + + + + + + + - - - - - - - - - - - - - - + + + + + + + + + + + - - + + - - - - - - - - + + + + + + + + - - - - + + + + - - + + - - + + - - + + - - + + - - + + - - + + + - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + - + - - - - - - - - - - - - - - + + + + + + + + + + + + + + - + - + - - + + - + - + - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + - + - - - + + + - + - + @@ -32628,240 +32628,240 @@ - - + + - - + + - - + + - - - - + + + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - - + + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - - + + + @@ -32869,193 +32869,193 @@ - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - + - - + + - - - + + + - - - - - - - - - - - + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + - - + + - - - - - + + + + + - - + + - - - - + + + + - - + + - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + - - - - - - + + + + + + - - + + - - + + - - + + @@ -33106,47 +33106,47 @@ - - + + - - + + - - - + + + - - + + - - + + - - - - + + + + - - + + - - + + - - + + @@ -33230,8 +33230,8 @@ - - + + @@ -33261,201 +33261,201 @@ - - + + - - + + - - - + + + - - + + - - + + - - + + - - + + - - + + - - + + - + - + - + - - - + + + - + - + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - + - + - - - + + + - + - + - + - + - - - + + + - - + + - - - - + + + + - + - - + + - - + + - - - + + + - - + + - + - - + + - - + + - - + + - + - - + + - + - + @@ -33463,73 +33463,73 @@ - + - - + + - - - - + + + + - - - - + + + + - - - - - + + + + + - - + + - + - + - - - - - + + + + + - - + + - - + + - - - + + + - - + + - - - + + + - + @@ -33543,76 +33543,76 @@ - - + + - - - + + + - - - + + + - - - - + + + + - - - + + + - - + + - - + + - + - - - - + + + + - - - + + + - - + + - - + + - - - + + + - - - + + + - + @@ -33647,180 +33647,180 @@ - - - + + + - - - - - + + + + + - - + + - - - - + + + + - - - + + + - - - - + + + + - - + + - - - - - + + + + + - - - + + + - - + + - - - + + + - - + + - - - - + + + + - - + + - - + + - - - - + + + + - + - - - + + + - - - - - - - - + + + + + + + + - - - + + + - + - + - - - + + + - - - + + + - - - + + + - - - + + + - - - - + + + + - + - - - + + + - - + + - + - - + + - + - + - - + + - + @@ -33895,7 +33895,7 @@ - + @@ -33905,27 +33905,27 @@ - - + + - - - + + + - - + + - - + + - + @@ -33937,13 +33937,13 @@ - + - + @@ -33951,38 +33951,38 @@ - + - + - + - + - - - - + + + + - - - + + + - - - + + + @@ -33994,29 +33994,29 @@ - + - - + + - - - + + + - - + + - - + + @@ -34025,14 +34025,14 @@ - - - - + + + + - - + + @@ -34040,171 +34040,171 @@ - - + + - - - + + + - + - - + + - + - - + + - + - - + + - - - + + + - - + + - + - + - + - + - + - + - - - - - - + + + + + + - - + + - + - - + + - - - + + + - - + + - + - - + + - + - - - - - + + + + + - - - - + + + + - - + + - + - - + + - - + + - + - - - - - + + + + + - + - - + + - + - + @@ -34225,246 +34225,246 @@ - + - + - - + + - - + + - + - - + + - - + + - + - - + + - + - - - + + + - - + + - - + + - - - + + + - - - + + + - - + + - - - + + + - - - + + + - - + + - - + + - - + + - - - + + + - - + + - - + + - - + + - - + + - - + + - - + + - - - + + + - + - - - + + + - + - + - - + + - - + + - + - - - + + + - - - + + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - - + + + @@ -34472,62 +34472,62 @@ - - - + + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - - + + + @@ -34535,15 +34535,15 @@ - - - + + + - - - - + + + + @@ -34552,15 +34552,15 @@ - - - - + + + + - - - + + + @@ -34568,14 +34568,14 @@ - - - + + + - - - + + + @@ -34583,14 +34583,14 @@ - - - + + + - - - + + + @@ -34598,12 +34598,12 @@ - - - + + + - + @@ -34611,83 +34611,83 @@ - + - - + + - - + + - - + + - + - - + + - - + + - + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - + @@ -34695,11 +34695,11 @@ - + - + @@ -34707,12 +34707,12 @@ - + - + @@ -34720,24 +34720,24 @@ - + - - + + - - + + - - - + + + @@ -34745,29 +34745,29 @@ - - - + + + - - - + + + - + - - - + + + - - - + + + @@ -34775,56 +34775,56 @@ - - - + + + - - - - + + + + - + - - - - + + + + - - + + - - + + - - + + - - + + - + - + @@ -34832,14 +34832,14 @@ - + - + - + - + @@ -34847,68 +34847,68 @@ - + - + - - + + - - + + - - + + - - + + - + - + - - - + + + - + - + - - - + + + @@ -34921,56 +34921,56 @@ - - - + + + - + - + - + - - - - + + + + - + - - - - + + + + - + - - - + + + - - - - + + + + @@ -34992,536 +34992,536 @@ - - + + - + - + - + - + - + - + - - + + - - + + - - + + - - + + - - + + - - - - - + + + + + - + - + - + - + - + - - + + - + - + - + - + - + - + - + - + - - - - + + + + - - - + + + - - + + - - + + - + - + - + - - + + - - - - - + + + + + - - + + - + - - + + - + - - + + - + - - + + - + - - + + - + - - + + - - - - - + + + + + - - + + - - - - - - - - - - - - - - + + + + + + + + + + + + + + - - - + + + - - + + - - + + - - + + - + - - + + - - - + + + - - + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - + + - - - + + + - - - - - + + + + + - - + + - - - + + + - - + + - - - + + + - - - - - - + + + + + + - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + - - - - + + + + - - + + - - - + + + - - + + - - - + + + - - + + - - + + - - + + - - - + + + - - - - - + + + + + - + - - + + - - - - + + + + - - + + - - - + + + - - + + - - + + - - - - + + + + - - - - + + + + - - - - - - - - - - - - - + + + + + + + + + + + + + - - + + - - + + - - - + + + - - - - - + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + - + - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + - + - + - + @@ -35547,7 +35547,7 @@ - + @@ -35555,9 +35555,9 @@ - + - + @@ -35565,12 +35565,12 @@ - + - + - + @@ -35604,47 +35604,47 @@ - + - - + + - - - + + + - + - + - + - - - + + + - - - + + + - + @@ -35660,21 +35660,21 @@ - + - + - + - + @@ -35685,75 +35685,75 @@ - + - + - - + + - + - + - - + + - + - + - - + + - - + + - - + + - - + + - + @@ -35761,52 +35761,52 @@ - - + + - + - + - - + + - - + + - - + + - - + + - + @@ -35814,534 +35814,534 @@ - - + + - + - + + - - - + + - - + + - - - + + + - - - + + + - - + + - + - - + + - - + + - + - + - + - - + + - - + + - - - + + + - - - + + + - - + + - + - + - - - - - - - + + + + + + + - - + + - - + + - - - - - - - - - + + + + + + + + + - - + + - + - + - - - - - - - - - - - - + + + + + + + + + + + + - + - + - + - + - + - - + + - - + + - + - + - - + + - - + + - - - + + + - - - + + + - - + + - + - + - + - + - + - - + + - - + + - + - + - - + + - - + + - - - + + + - - - + + + - - + + - - + + - + - + - + - - + + - - + + - + - + + - - - + + - - + + - - - + + + - - - + + + - - + + - + - - + + - - + + - + - + - + - - + + - - + + - + - + - + - - + + - - + + - - - + + + - - - + + + - - + + - + - + - + - + - + - + @@ -36350,59 +36350,59 @@ - + - + - - + + - - - + + + - - + + - + - + - + - + - + @@ -36410,13 +36410,13 @@ - + - + @@ -36424,71 +36424,71 @@ - - - - - - - - + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + - + - + - + - - + + - - + + - + @@ -36496,53 +36496,53 @@ - + - + - + - + - + - - + + - - + + - + @@ -36550,660 +36550,660 @@ - + - + - - - + + + - + - - + + - - + + - - + + - - + + - + - + + - - - + + - - + + - - - + + + - - - + + + - - + + - - - + + + - + - + - + - - + + - - + + - - + + - - + + - + - - + + - - + + - - + + - - - + + + - - - + + + - - + + - - + + - - + + - + - + - + - + - + - + - + - + - + - + - - + + - + - + - + - + - - + + - - + + - - - + + + - - - + + + - - - + + + - + - - - + + + - - - + + + - - - + + + - + - + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - + - - - - + + + + - - - - + + + + - - - - + + + + - - + + - - + + - - - + + + - - - - + + + + - - + + - + - + - + - + - + - + - - + + - + - + - + - + @@ -37211,118 +37211,118 @@ - - + + - - - + + + - - - - + + + + - - + + - - + + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + - + - + - - + + - - + + - - + + - + @@ -37330,355 +37330,355 @@ - - + + - - + + - - + + - + - + - + - - + + - - + + - - + + - - + + - + - - + + - - + + - - + + - - - + + + - - - + + + - - + + - - + + - + - + - + - + - + - + - - + + - - + + - - + + - - + + - + - + - - + + - + - + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - + + - + - + - + - + - + - + - - + + - - + + - - + + - - + + - + - + - - + + - + - + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - + + - + - - + + - + - + - + - + @@ -37686,115 +37686,115 @@ - - + + - + - + - + - + - + - + - - + + - + - + - + - + - - - - - - - - - - - - + + + + + + + + + + + + + - - - - - - - - - - - - - + + + + + + + + + + + + - + - + - + - - + + - - + + - - + + - + @@ -37802,172 +37802,172 @@ - - + + - - + + - - + + - + - - + + - + - + - + - + - - + + - - + + - - + + - + - + - + - + - - + + - - + + - - + + - + - - + + - + - + - + - - + + - - + + - - + + - + - + - + - - + + - + @@ -37975,104 +37975,104 @@ - + - + - + - + - - - - - + + + + + - + - + - + - + - + - + - - + + - + - - - + + + - - - + + + - + - + - - + + - + - - + + - - + + @@ -38080,469 +38080,469 @@ - - + + - + - + - + - + - + - + - + - + - + - + - - + + - + - + - + - + - - + + - - + + - - - + + + - - - + + + - - - + + + - + - - - + + + - - - + + + - - - + + + - + - + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - + - - - - + + + + - - - - + + + + - - - - + + + + - - + + - - + + - - - + + + - - - - + + + + - - + + - + - + - + - + - + - + - - + + - + - + - + - + @@ -38550,402 +38550,402 @@ - - + + - - - + + + - - - - + + + + - - + + - - + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - - + + - + - + - + - + - + - + - - + + - + - + - + - + - + - - + + - + - + - - + + - - + + - + - + - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + - - - - - - + + + + + - + - - + + - + - + - + - + - - + + - - + + - - + + - + - + - + - + - - + + - - + + - - + + - + - - + + - + - + - + - - + + - - + + - - + + - + - + - + - - + + - + @@ -38953,143 +38953,143 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - - + + - + - - - + + + - - - + + + - + - + - - + + - + - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + - + - + - + - + - + @@ -39097,79 +39097,79 @@ - + - + - + - + - + - + - + - - - - - - - - - + + + + + + + + + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -39202,89 +39202,89 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -39313,220 +39313,220 @@ - - - + + + - - - - + + + + - - - + + + - - + + - - + + - - + + - + - - + + - - - + + + - + - + - - + + - + - - + + - + - + - + - + - + - - + + - + - + - + - + - - - - - + + + + + - + - - - + + + - + - + - + - - + + - - + + - + - + - - + + - - + + - + - - + + - - + + - + + + + - + + - - - - - + - + - - + + - - - + + + - + - + @@ -39534,87 +39534,87 @@ - - + + - - + + - - - + + + - - - + + + - - + + - + - - + + - + - + - + - - + + - - + + - + - + @@ -39622,383 +39622,383 @@ - - + + - - + + - - - + + + - - - + + + - - + + - + - + - + - + - + - - + + - - + + - + - + - - + + - - + + - - - + + + - - - + + + - - + + - - - - + + + + - + - + - + - + - + - - + + - + - + - - + + - + - + - - + + - + - + - - + + - + - + - + - + - + - + - + - - + + - + - - - - - + + + + + - - - + + + - - + + - + - + - + - + - + - + - + - + - + - + - - + + - - + + - - + + - - + + - - + + - + - + - - + + - + - + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - - - + + + + + - - + + - - - - + + + + - - + + - + - - + + @@ -40006,281 +40006,281 @@ - + - - - + + + - - + + - + - + - + - + - - + + - + - + - + - + - - + + - - + + - + - + - - + + - + - + - + - + - - + + - + - + - - + + - + - + - - + + - + - + - - + + - + - + - - + + - + - + - - + + - + - + - - + + - + - - + + - + - + - - + + - - + + - + - + - - + + - - + + - + - + - + - - + + - + - + - - + + - + - + - - + + - + - + - - + + - + - + - - + + - + - + - - + + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -40309,122 +40309,122 @@ - - - + + + - - - - + + + + - - - + + + - - + + - - + + - + - + - + - + - + - + - - + + - + - + - + - + - - - + + + - + - + - + - + - + - - + + - - + + - + - - - - + + + + - + @@ -40434,39 +40434,39 @@ - + - - + + - + - - + + - + - + - - + + - - + + - + @@ -40476,27 +40476,27 @@ - + - - + + - + - + - - + + - - + + @@ -40507,89 +40507,89 @@ - - + + - + - + - + - + - + - + - - + + - + - - - + + + - + - - + + - + - + - + - + - + @@ -40597,54 +40597,54 @@ - - - - - - + + + + + + - - + + - - + + - - + + - + - + - + - + - + - + - - + + - - + + @@ -40679,37 +40679,37 @@ - - + + - + - + - + - + - + - + - - + + - - + + @@ -40744,77 +40744,77 @@ - - + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -40823,31 +40823,31 @@ - + - + - - + + - + - - - - - - - - - - - - + + + + + + + + + + + + diff --git a/tests/data/test-read-dwarf/test22-pr19097-libstdc++.so.6.0.17.so.abi b/tests/data/test-read-dwarf/test22-pr19097-libstdc++.so.6.0.17.so.abi index 1e3a7b10..a1e24372 100644 --- a/tests/data/test-read-dwarf/test22-pr19097-libstdc++.so.6.0.17.so.abi +++ b/tests/data/test-read-dwarf/test22-pr19097-libstdc++.so.6.0.17.so.abi @@ -33354,31 +33354,13 @@ - - - - - - - - - - - - - - - - - - - + @@ -33425,23 +33407,23 @@ - + - + - + - - + + - + @@ -33449,115 +33431,115 @@ - - + + - - + + - + - - + + - + - - + + - + - + - + - + - + - + - + - + - + - + - + - + - - + + - + - + - + - - + + - + @@ -33565,115 +33547,115 @@ - - + + - - + + - + - - + + - + - - + + - + - + - + - + - + - + - + - + - + - + - + - + - - + + - + - + - + - - + + - + @@ -33681,126 +33663,126 @@ - - + + - - + + - + - - + + - + - - + + - + - + - + - + - + - + - + - + - + - + - + - + - - + + - + - + - + - + - + - + @@ -33815,17 +33797,17 @@ - + - + - + @@ -33845,17 +33827,17 @@ - + - + - + @@ -33883,175 +33865,175 @@ - + - + - + - + - + - + - + - + - + - + - - + + - - + + - - + + - + - - - - + + + + - + - - - - + + + + - + - - + + - - + + - + - - + + - + - - + + - + - + - - + + - - - + + + - - - + + + - + - + - + - + - + @@ -34060,36 +34042,36 @@ - - + + - + - + - - + + - - + + - + @@ -34098,7 +34080,7 @@ - + @@ -34107,27 +34089,27 @@ - + - + - + - + - + @@ -34135,7 +34117,7 @@ - + @@ -34143,7 +34125,7 @@ - + @@ -34151,182 +34133,182 @@ - + - + - + - + - + - + - + - + - + - + - + - - + + - - + + - - + + - + - - - - + + + + - + - - - - + + + + - + - - + + - - + + - + - - + + - + - - + + - + - + - - + + - - - + + + - - - + + + - + - + - + - + - + @@ -34335,36 +34317,36 @@ - - + + - + - + - - + + - - + + - + @@ -34373,7 +34355,7 @@ - + @@ -34382,27 +34364,27 @@ - + - + - + - + - + @@ -34410,7 +34392,7 @@ - + @@ -34418,7 +34400,7 @@ - + @@ -34426,7 +34408,7 @@ - + @@ -34444,7 +34426,7 @@ - + @@ -34455,71 +34437,71 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + - + @@ -34527,7 +34509,7 @@ - + @@ -34535,21 +34517,21 @@ - + - + - + @@ -34563,79 +34545,79 @@ - + - - - - - - - - - - - - + + + + + + + + + + + + - + - + - + - + - - + + - - - + + + - + - - + + - - - + + + - + - + @@ -34644,7 +34626,7 @@ - + @@ -34652,13 +34634,13 @@ - + - + @@ -34666,26 +34648,26 @@ - - + + - - + + - - - + + + - + @@ -34693,54 +34675,54 @@ - - - + + + - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + - - + + - - + + - - + + - + @@ -34748,7 +34730,7 @@ - + @@ -34764,87 +34746,87 @@ - - + + - + - - + + - + - - + + - + - - + + - + - - + + - + - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + - + - - + + @@ -34855,7 +34837,7 @@ - + @@ -34902,7 +34884,7 @@ - + @@ -34923,7 +34905,7 @@ - + @@ -34935,10 +34917,10 @@ + - - + @@ -34946,7 +34928,7 @@ - + @@ -34975,69 +34957,69 @@ - + - + - - - + + + - + - + - + - + - + - - + + - - + + - - - + + + - - - + + + - + - + @@ -35046,7 +35028,7 @@ - + @@ -35054,13 +35036,13 @@ - + - + @@ -35068,26 +35050,26 @@ - - + + - - + + - - - + + + - + @@ -35095,16 +35077,16 @@ - - - + + + - + @@ -35115,58 +35097,58 @@ - + - + - + - - + + - - - + + + - + - - + + - + - - + + - + + - @@ -35176,7 +35158,7 @@ - + @@ -35184,9 +35166,9 @@ - + - + @@ -35231,7 +35213,7 @@ - + @@ -35257,12 +35239,12 @@ - - + + - + @@ -35276,361 +35258,361 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - - + + - + - + - + - + - + - - + + - + - + - + - + - + - - + + - + - + - + - + - + - - + + - + - + - + - + - + - - + + - + - + - + - + - + - - + + - + - + - + - + - + - - + + - + - + - + - + - + @@ -35639,19 +35621,19 @@ - - - - - - - - - - - - - + + + + + + + + + + + + + @@ -35661,7 +35643,7 @@ - + @@ -35680,14 +35662,14 @@ - + - + @@ -35695,7 +35677,7 @@ - + @@ -35704,25 +35686,25 @@ - - + + - + - - + + - + - + @@ -35730,15 +35712,15 @@ - - + + - + @@ -35746,54 +35728,54 @@ - + - + - + - - - + + + - - + + - + - + - + @@ -35802,7 +35784,7 @@ - + @@ -35810,14 +35792,14 @@ - + - + @@ -35825,15 +35807,15 @@ - - + + - + @@ -35841,25 +35823,25 @@ - - + + - + - - + + - + - + @@ -35868,28 +35850,28 @@ - + - + - + - + @@ -35897,7 +35879,7 @@ - + @@ -35906,7 +35888,7 @@ - + @@ -35914,31 +35896,31 @@ - + - + - + - + - + @@ -35947,7 +35929,7 @@ - + @@ -35955,7 +35937,7 @@ - + @@ -35964,7 +35946,7 @@ - + @@ -35973,7 +35955,7 @@ - + @@ -35981,7 +35963,7 @@ - + @@ -35989,7 +35971,7 @@ - + @@ -35997,7 +35979,7 @@ - + @@ -36005,7 +35987,7 @@ - + @@ -36013,21 +35995,21 @@ - + - - + + - + - + @@ -36035,7 +36017,7 @@ - + @@ -36046,32 +36028,32 @@ - - + + - + - + - + - + @@ -36079,7 +36061,7 @@ - + @@ -36087,7 +36069,7 @@ - + @@ -36098,7 +36080,7 @@ - + @@ -36109,7 +36091,7 @@ - + @@ -36117,7 +36099,7 @@ - + @@ -36125,7 +36107,7 @@ - + @@ -36133,21 +36115,21 @@ - + - + - + - + @@ -36155,7 +36137,7 @@ - + @@ -36166,32 +36148,32 @@ - - + + - + - + - + - + @@ -36199,7 +36181,7 @@ - + @@ -36207,7 +36189,7 @@ - + @@ -36218,7 +36200,7 @@ - + @@ -36229,7 +36211,7 @@ - + @@ -36237,7 +36219,7 @@ - + @@ -36245,7 +36227,7 @@ - + @@ -36253,21 +36235,21 @@ - + - + - + - + @@ -36276,7 +36258,7 @@ - + @@ -36285,7 +36267,7 @@ - + @@ -36295,7 +36277,7 @@ - + @@ -36305,19 +36287,19 @@ - - + + - + - + @@ -36326,7 +36308,7 @@ - + @@ -36335,7 +36317,7 @@ - + @@ -36344,7 +36326,7 @@ - + @@ -36353,7 +36335,7 @@ - + @@ -36363,7 +36345,7 @@ - + @@ -36373,7 +36355,7 @@ - + @@ -36383,7 +36365,7 @@ - + @@ -36393,7 +36375,7 @@ - + @@ -36401,7 +36383,7 @@ - + @@ -36409,7 +36391,7 @@ - + @@ -36417,7 +36399,7 @@ - + @@ -36427,133 +36409,133 @@ - - - - + + + + + + - - - - - - - - - - - - - - + + + + + + + + + + + + - + - - + + - + - + - + - + - + - + - + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - - + + + - - - + + + - - + + - - - - - - + + + + + + @@ -36584,13 +36566,13 @@ - + - + - - + + @@ -36617,8 +36599,8 @@ - - + + @@ -36635,8 +36617,8 @@ - - + + @@ -36645,32 +36627,32 @@ - + - + - + - + - + - + - + - + - + @@ -36682,20 +36664,20 @@ - + - + - + @@ -36703,385 +36685,385 @@ - - + + - - + + - - + + - - + + - - + + - - + + - + - - - + + + - + - + - - - + + + - - - + + + - - - + + + - - - + + + - + - + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - + + - - + + - - + + - - + + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - + - + - + - + - + - + - + - + - - - + + + - - - + + + - + @@ -37089,31 +37071,31 @@ - + - - + + - + - - - - - + + + + + @@ -37121,162 +37103,162 @@ - + - - + + - - - + + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - + - + + - - + - + - + - + - - + + - - + + - + - + @@ -37288,13 +37270,13 @@ - + - + @@ -37303,333 +37285,333 @@ - + - + - + - + - + - + - - + + - - - + + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - + - - - + + + - + - + - + - + - - + + - - - + + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - + - - + + - + - + - + - + - + - - + + - - + + - - + + - - + + - + - + - + - + - + - + - + - + - + @@ -37637,429 +37619,429 @@ - + - + - + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - + - + - + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - + + - - + + - - + + - - + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - + - + - + - + - + - + - + - + - - - + + + - - - + + + - + - - - - - - - - - - - + + + + + + + + + + + - + @@ -38067,244 +38049,244 @@ - + - + - + - + - + - - + + - + - + - + - - + + - + - + - + - - + + - - + + - + - - - + + + - + - - + + - - + + - - - - + + + + - + - + - - + + - - - + + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - + - - + + - + - + - - - - - + + + + + - + @@ -38313,9 +38295,9 @@ - - - + + + @@ -38325,22 +38307,22 @@ - + - + - - + + - + @@ -38349,10 +38331,10 @@ - + - + @@ -38360,85 +38342,85 @@ - - - + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + - + - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - + + + + + + - + - - + + - + - + @@ -38446,18 +38428,18 @@ - + - + - - + + @@ -38526,11 +38508,11 @@ - + - + @@ -38538,7 +38520,7 @@ - + @@ -38546,21 +38528,21 @@ - + - + - + @@ -38569,7 +38551,7 @@ - + @@ -38615,9 +38597,9 @@ - + - + @@ -38651,7 +38633,7 @@ - + @@ -38698,7 +38680,7 @@ - + @@ -38719,7 +38701,7 @@ - + @@ -38754,7 +38736,7 @@ - + @@ -38762,11 +38744,11 @@ - - + + - + @@ -38776,62 +38758,62 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - - - - - - - - - + + + + + + + + + @@ -38840,15 +38822,15 @@ - - + + - + - + @@ -38857,7 +38839,7 @@ - + @@ -38868,11 +38850,11 @@ - - + + + - @@ -38884,24 +38866,24 @@ - + - + - + - + @@ -38948,7 +38930,7 @@ - + @@ -38969,7 +38951,7 @@ - + @@ -38982,7 +38964,7 @@ - + @@ -39029,7 +39011,7 @@ - + @@ -39050,7 +39032,7 @@ - + @@ -39063,7 +39045,7 @@ - + @@ -39110,7 +39092,7 @@ - + @@ -39131,7 +39113,7 @@ - + @@ -39145,8 +39127,8 @@ - - + + @@ -39201,7 +39183,7 @@ - + @@ -39215,7 +39197,7 @@ - + @@ -39276,12 +39258,12 @@ - + - - + + @@ -39292,7 +39274,7 @@ - + @@ -39303,12 +39285,12 @@ - + - - + + @@ -39319,12 +39301,12 @@ - + - - + + @@ -39364,92 +39346,92 @@ - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + @@ -39546,27 +39528,27 @@ - - + + - - + + - - + + - - + + - + @@ -39620,182 +39602,182 @@ - + - + - - + + - + - + - - + + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - - + + - + - + - - + + - + - + - - + + - + - + - - + + @@ -39813,38 +39795,38 @@ - - + + - - + + - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + - + @@ -39853,215 +39835,215 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - - + + - - - + + + - + - + @@ -40077,12 +40059,12 @@ - - + + - + @@ -40090,110 +40072,110 @@ - + - + - + - + - + - + - + - + - - - + + + - - + + - + - + - + - + - + - + - - + + - - + + - - + + - + - + @@ -40213,12 +40195,12 @@ - + - + @@ -40226,12 +40208,12 @@ - + - + @@ -40239,12 +40221,12 @@ - + - + @@ -40252,63 +40234,63 @@ - + - + - - + + - + - + - + - - - - + + + + - + - - - + + + - - + + - - + + - + @@ -40321,145 +40303,145 @@ - + - + - + - - - + + + - - + + - - + + - + - + - - + + - + - + - - - + + + - - + + - - - + + + - + - + - - + + - + - - + + - + - + - + - + - + - + - + - - + + - - - + + + - + - + @@ -40475,12 +40457,12 @@ - - + + - + @@ -40488,110 +40470,110 @@ - + - + - + - + - + - + - + - + - - - + + + - - + + - + - + - + - + - + - + - - + + - - + + - - + + - + - + @@ -40611,12 +40593,12 @@ - + - + @@ -40624,12 +40606,12 @@ - + - + @@ -40637,12 +40619,12 @@ - + - + @@ -40650,63 +40632,63 @@ - + - + - - + + - + - + - + - - - - + + + + - + - - - + + + - - + + - - + + - + @@ -40719,172 +40701,172 @@ - + - + - + - - - + + + - - + + - - + + - + - + - - + + - + - + - - - + + + - - + + - - + + - - + + - - + + - - - + + + + + + - - - - - + + + + + - - - - - - + + + + + + - - - - - - - - - + + + + + + + - - - - - - - - - - - - - + + + + + + + + + + + + + + + - - - - - + + + + + - - - - - - + + + + + + - - - - - - - - - + + + + + + + - - - - - - - - + + + + + + + - + @@ -40896,7 +40878,7 @@ - + @@ -40904,7 +40886,7 @@ - + @@ -40912,7 +40894,7 @@ - + @@ -40920,7 +40902,7 @@ - + @@ -40928,43 +40910,43 @@ - + - - - - + + + + - + - + - + - + - + - + @@ -40973,7 +40955,7 @@ - + @@ -40981,7 +40963,7 @@ - + @@ -40990,7 +40972,7 @@ - + @@ -40999,7 +40981,7 @@ - + @@ -41007,7 +40989,7 @@ - + @@ -41015,7 +40997,7 @@ - + @@ -41023,7 +41005,7 @@ - + @@ -41031,7 +41013,7 @@ - + @@ -41039,7 +41021,7 @@ - + @@ -41049,7 +41031,7 @@ - + @@ -41059,13 +41041,13 @@ - + - + - + @@ -41073,7 +41055,7 @@ - + @@ -41096,77 +41078,77 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -41180,39 +41162,39 @@ - + - + - + - + - + - + - - - - + + + + @@ -41220,12 +41202,12 @@ - - - - - - + + + + + + @@ -41234,7 +41216,7 @@ - + @@ -41248,7 +41230,7 @@ - + @@ -41262,47 +41244,47 @@ - + - + - + - + - + - + - + - + - + - + - + @@ -41375,244 +41357,244 @@ - + - + - + - + - - - + + + - + - + - - - + + + - + - - - + + + - - - + + + - - + - + + - - - + + + - - + - + + - + - + - + - + - - + + - - - + + + - + - + - + - + - + - + - + - - - + + + - + - + - - - + + + - + - - - + + + - - - + + + - - + - + + - - - + + + - - + - + + - + - + - + - + - - + + - - - + + + - + - + - + @@ -41620,7 +41602,7 @@ - + @@ -41628,31 +41610,31 @@ - + - + - + - + - + @@ -41660,7 +41642,7 @@ - + @@ -41668,31 +41650,31 @@ - + - + - + - + - + @@ -41700,7 +41682,7 @@ - + @@ -41708,31 +41690,31 @@ - + - + - + - + - + @@ -41740,7 +41722,7 @@ - + @@ -41748,34 +41730,34 @@ - + - + - + - + - + @@ -41783,7 +41765,7 @@ - + @@ -41791,34 +41773,34 @@ - + - + - + - + - + @@ -41826,7 +41808,7 @@ - + @@ -41834,31 +41816,31 @@ - + - + - + - + - + @@ -41866,7 +41848,7 @@ - + @@ -41874,31 +41856,31 @@ - + - + - + - + - + @@ -41906,7 +41888,7 @@ - + @@ -41914,27 +41896,27 @@ - + - + - + - + @@ -41947,30 +41929,30 @@ - + - + - + - + - + - + - + - + - + @@ -41986,7 +41968,7 @@ - + @@ -41997,49 +41979,49 @@ - - + + - + - - - - - - - - - - - - + + + + + + + + + + + + - + + + - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + @@ -42072,8 +42054,8 @@ - - + + @@ -42115,7 +42097,7 @@ - + @@ -42133,7 +42115,7 @@ - + @@ -42159,32 +42141,32 @@ - + - + - + - + - + - + @@ -42199,7 +42181,7 @@ - + @@ -42222,32 +42204,32 @@ - + - + - + - + - + - + @@ -42274,12 +42256,12 @@ - - - - - - + + + + + + @@ -42292,20 +42274,20 @@ - - + + - + - + - + - + @@ -42314,36 +42296,36 @@ - + - + - - + + - - + + - - + + - + @@ -42352,7 +42334,7 @@ - + @@ -42361,27 +42343,27 @@ - + - + - + - + - + @@ -42389,7 +42371,7 @@ - + @@ -42397,7 +42379,7 @@ - + @@ -42405,27 +42387,27 @@ - + - + - + - + - + - + @@ -42434,36 +42416,36 @@ - + - + - - + + - - + + - - + + - + @@ -42472,7 +42454,7 @@ - + @@ -42481,27 +42463,27 @@ - + - + - + - + - + @@ -42509,7 +42491,7 @@ - + @@ -42517,7 +42499,7 @@ - + @@ -42525,27 +42507,27 @@ - + - + - + - + - + - + @@ -42554,36 +42536,36 @@ - + - + - - + + - - + + - - + + - + @@ -42592,7 +42574,7 @@ - + @@ -42601,27 +42583,27 @@ - + - + - + - + - + @@ -42629,7 +42611,7 @@ - + @@ -42637,7 +42619,7 @@ - + @@ -42645,27 +42627,27 @@ - + - - + + - + - + - + - + @@ -42674,36 +42656,36 @@ - + - + - - + + - - + + - - + + - + @@ -42712,7 +42694,7 @@ - + @@ -42721,27 +42703,27 @@ - + - + - + - + - + @@ -42749,7 +42731,7 @@ - + @@ -42757,7 +42739,7 @@ - + @@ -42765,7 +42747,7 @@ - + @@ -42775,50 +42757,50 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - + + - + @@ -42838,47 +42820,47 @@ - + - + - + - + - + - + - + - + - + - + - + @@ -42951,11 +42933,11 @@ - + - + @@ -42963,7 +42945,7 @@ - + @@ -42971,31 +42953,31 @@ - + - + - + - + - + @@ -43003,7 +42985,7 @@ - + @@ -43011,31 +42993,31 @@ - + - + - + - + - + @@ -43043,7 +43025,7 @@ - + @@ -43051,31 +43033,31 @@ - + - + - + - + - + @@ -43083,7 +43065,7 @@ - + @@ -43091,34 +43073,34 @@ - + - + - + - + - + @@ -43126,7 +43108,7 @@ - + @@ -43134,34 +43116,34 @@ - + - + - + - + - + @@ -43169,7 +43151,7 @@ - + @@ -43177,31 +43159,31 @@ - + - + - + - + - + @@ -43209,7 +43191,7 @@ - + @@ -43217,31 +43199,31 @@ - + - + - + - + - + @@ -43249,7 +43231,7 @@ - + @@ -43257,27 +43239,27 @@ - + - + - + - + @@ -43290,30 +43272,30 @@ - + - + - + - + - + - + - + - + - + @@ -43329,125 +43311,125 @@ - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -43456,19 +43438,19 @@ - + - + - + - + @@ -43480,22 +43462,22 @@ - + - + - + - + - + - + @@ -43504,16 +43486,16 @@ - + - + - + - + @@ -43528,86 +43510,86 @@ - + - + - + - + - + - + - + - + - + - + - + - + - - - - - + + + + + - + - + - + @@ -43616,28 +43598,28 @@ - + - + - + - + - + - + - - - + + + @@ -43645,10 +43627,10 @@ - + - - + + @@ -43657,7 +43639,7 @@ - + @@ -43666,52 +43648,52 @@ - + - + - - + + - - - + + + - + - + - + - + @@ -43721,236 +43703,236 @@ - - - - + + + + - + - + - + - + - + - - + + - - + + - - - + + + - - + + - + - + - - + + - - + + - + - + - - + + - + - - + + - + - + - + - + - + - + - + - + - + - + - + - - + + - + - + - - + + - - + + - - + + - - + + - + - + @@ -43959,7 +43941,7 @@ - + @@ -43971,9 +43953,9 @@ - + - + @@ -43983,9 +43965,9 @@ - + - + @@ -43996,10 +43978,10 @@ - + - + @@ -44010,7 +43992,7 @@ - + @@ -44023,7 +44005,7 @@ - + @@ -44033,7 +44015,7 @@ - + @@ -44043,34 +44025,34 @@ - + - + - + - + - + - + - + - + @@ -44078,7 +44060,7 @@ - + @@ -44086,23 +44068,23 @@ - - + + - - + + - + @@ -44114,7 +44096,7 @@ - + @@ -44136,43 +44118,43 @@ - + - + - + - + - + - + - - - + + + - + - + @@ -44180,21 +44162,21 @@ - + - + - + @@ -44202,12 +44184,12 @@ - + - + @@ -44217,7 +44199,7 @@ - + @@ -44227,7 +44209,7 @@ - + @@ -44237,7 +44219,7 @@ - + @@ -44246,7 +44228,7 @@ - + @@ -44296,179 +44278,179 @@ - - + + - + - - + + - - + + - - - + + + - - + + - + - - + + - - + + - - + + - + - + - - + + - + - + - + - + - + - - + + - - + + - - + + - - + + - - + + - + - + - + - - + + - - + + - + - + - + @@ -44477,42 +44459,42 @@ - - - + + + - - - - - - - - - + + + + + + + + + - - + + + + - - - - + + - - - - - - - - - - - - + + + + + + + + + + + + @@ -44545,7 +44527,7 @@ - + @@ -44564,127 +44546,127 @@ - + - + - + - + - + - + - + - - + + - - + + - - + + - + - - - + + + - - + + - + - + - + - - - - + + + + - + - + - + - + - + - + - + - + - - + + - + @@ -44692,221 +44674,221 @@ - + - - + + - + - + - + - - + + - - + + - - - + + + - - - + + + - - + + - - + + - + - + + - - + - - + + - + - - + + - + - + - + - - + + - - + + - - - + + + - - - + + + - - + + - - + + - + - - + + - + - - + + - + - - + + - + - - + + - - + + - + - + - + - + - - + + - + - - - + + + @@ -44951,521 +44933,521 @@ - + - + - + - + - + - + - - + + - + - + - + - + - + + - - - - + + + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - - + + - - + + - - + + - - + + - - + + - - + + - - - + + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - + - - + + - - + + - - + + - - + + - - + + - + - - + + - - + + - - + + - - + + - - - - + + + + - - + + - - - + + + - + - - - + + + - + - - - + + + - + - - - + + + - + - + - - - + + + - - + + - - + + - + - - - + + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - + - - + + - - + + - - + + - - + + - - - + + + - - - + + + - - - + + + - + - + - - - - + + + + - + @@ -45473,524 +45455,524 @@ - + - + - + - + - + - + - + - - - + + + - - - + + + - - - + + + - - - + + + - + - + - + - + - + - - + + - + - - + + - + - - + + - - + + - + - - - + + + - + - + - + - - + + - + - + - + - + - + - + - + - + - + - - + + - - + + - - + + - - + + - + - + - - + + - + - + - - + + - - + + - + - + - + - + - + - + - + - + - + - - + + - - + + - - + + - - + + - - + + - - + + - + - + - - + + - + - + - - + + - - + + - - - - - + + + + + - - + + - + - + - + - + - - + + - - + + - - + + - + - + - + - + - - + + - - + + - - + + - + - - + + - + - + - + - - + + - - + + - - + + - + - + - + - - + + - + - + - + - + - + - + - + - - + + - + - + @@ -45998,7 +45980,7 @@ - + @@ -46006,7 +45988,7 @@ - + @@ -46015,441 +45997,441 @@ - + - + - + - + - - + + - + - + - + - + - + - + - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + - - - + - + - + - + - + - + - + - + - - + + - + - - - + + + - - - + + + - - + + - + - - + + - - + + - + - + - + - + - + - + - + - - + + - + - - - + + + - - - + + + - - + + - + - - + + - - + + - - + + - + - + - + - + - + - + - + - - + + - + - - - + + + - - - + + + - - + + - + - - + + - - + + - + - + - + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + - + + - - - - + + + @@ -46459,9 +46441,9 @@ - + - + @@ -46491,58 +46473,58 @@ - + - + - + - + - + - + - + - - + + - + - + - - + + - + - + @@ -46589,7 +46571,7 @@ - + @@ -46610,10 +46592,10 @@ - + - + @@ -46660,7 +46642,7 @@ - + @@ -46681,10 +46663,10 @@ - + - + @@ -46731,7 +46713,7 @@ - + @@ -46752,10 +46734,10 @@ - + - + @@ -46802,7 +46784,7 @@ - + @@ -46823,10 +46805,10 @@ - + - + @@ -46873,7 +46855,7 @@ - + @@ -46894,10 +46876,10 @@ - + - + @@ -46944,7 +46926,7 @@ - + @@ -46965,10 +46947,10 @@ - + - + @@ -47015,7 +46997,7 @@ - + @@ -47036,10 +47018,10 @@ - + - + @@ -47086,7 +47068,7 @@ - + @@ -47107,10 +47089,10 @@ - + - + @@ -47157,7 +47139,7 @@ - + @@ -47178,10 +47160,10 @@ - + - + @@ -47228,7 +47210,7 @@ - + @@ -47249,10 +47231,10 @@ - + - + @@ -47299,7 +47281,7 @@ - + @@ -47320,10 +47302,10 @@ - + - + @@ -47370,7 +47352,7 @@ - + @@ -47391,10 +47373,10 @@ - + - + @@ -47441,7 +47423,7 @@ - + @@ -47462,10 +47444,10 @@ - + - + @@ -47512,7 +47494,7 @@ - + @@ -47533,10 +47515,10 @@ - + - + @@ -47583,7 +47565,7 @@ - + @@ -47604,10 +47586,10 @@ - + - + @@ -47654,7 +47636,7 @@ - + @@ -47675,7 +47657,7 @@ - + @@ -47698,66 +47680,67 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -47786,7 +47769,6 @@ - @@ -47797,48 +47779,48 @@ - - + + - + - - + + - - + + - - + + - + - + - + @@ -47847,40 +47829,40 @@ - - - + + + - + - + - + - + - + @@ -47888,9 +47870,9 @@ - - - + + + @@ -47925,23 +47907,23 @@ - + - + - - + + - - + + - - + + @@ -47955,7 +47937,7 @@ - + @@ -47964,19 +47946,19 @@ - + - - + + - + - + - + @@ -47984,7 +47966,7 @@ - + @@ -47994,7 +47976,7 @@ - + @@ -48004,25 +47986,25 @@ - - + + - + - + - + @@ -48030,7 +48012,7 @@ - + @@ -48038,13 +48020,13 @@ - + - + @@ -48052,7 +48034,7 @@ - + @@ -48060,7 +48042,7 @@ - + @@ -48070,7 +48052,7 @@ - + @@ -48080,7 +48062,7 @@ - + @@ -48090,7 +48072,7 @@ - + @@ -48100,7 +48082,7 @@ - + @@ -48108,7 +48090,7 @@ - + @@ -48116,7 +48098,7 @@ - + @@ -48124,24 +48106,24 @@ - + - + - + - + - + @@ -48149,7 +48131,7 @@ - + @@ -48159,7 +48141,7 @@ - + @@ -48169,25 +48151,25 @@ - - + + - + - + - + @@ -48195,7 +48177,7 @@ - + @@ -48203,13 +48185,13 @@ - + - + @@ -48217,7 +48199,7 @@ - + @@ -48225,7 +48207,7 @@ - + @@ -48235,7 +48217,7 @@ - + @@ -48245,7 +48227,7 @@ - + @@ -48255,7 +48237,7 @@ - + @@ -48265,7 +48247,7 @@ - + @@ -48273,7 +48255,7 @@ - + @@ -48281,7 +48263,7 @@ - + @@ -48289,24 +48271,24 @@ - + - + - + - + - + @@ -48314,7 +48296,7 @@ - + @@ -48324,7 +48306,7 @@ - + @@ -48334,25 +48316,25 @@ - - + + - + - + - + @@ -48360,7 +48342,7 @@ - + @@ -48368,13 +48350,13 @@ - + - + @@ -48382,7 +48364,7 @@ - + @@ -48390,7 +48372,7 @@ - + @@ -48400,7 +48382,7 @@ - + @@ -48410,7 +48392,7 @@ - + @@ -48420,7 +48402,7 @@ - + @@ -48430,7 +48412,7 @@ - + @@ -48438,7 +48420,7 @@ - + @@ -48446,7 +48428,7 @@ - + @@ -48454,24 +48436,24 @@ - + - - + + - + - + - + @@ -48479,7 +48461,7 @@ - + @@ -48489,7 +48471,7 @@ - + @@ -48499,25 +48481,25 @@ - - + + - + - + - + @@ -48525,7 +48507,7 @@ - + @@ -48533,13 +48515,13 @@ - + - + @@ -48547,7 +48529,7 @@ - + @@ -48555,7 +48537,7 @@ - + @@ -48565,7 +48547,7 @@ - + @@ -48575,7 +48557,7 @@ - + @@ -48585,7 +48567,7 @@ - + @@ -48595,7 +48577,7 @@ - + @@ -48603,7 +48585,7 @@ - + @@ -48611,7 +48593,7 @@ - + @@ -48619,24 +48601,24 @@ - + - + - + - + - + @@ -48644,7 +48626,7 @@ - + @@ -48654,7 +48636,7 @@ - + @@ -48664,25 +48646,25 @@ - - + + - + - + - + @@ -48690,7 +48672,7 @@ - + @@ -48698,13 +48680,13 @@ - + - + @@ -48712,7 +48694,7 @@ - + @@ -48720,7 +48702,7 @@ - + @@ -48730,7 +48712,7 @@ - + @@ -48740,7 +48722,7 @@ - + @@ -48750,7 +48732,7 @@ - + @@ -48760,7 +48742,7 @@ - + @@ -48768,7 +48750,7 @@ - + @@ -48776,7 +48758,7 @@ - + @@ -48784,24 +48766,24 @@ - + - + - + - + - + @@ -48809,7 +48791,7 @@ - + @@ -48819,7 +48801,7 @@ - + @@ -48829,25 +48811,25 @@ - - + + - + - + - + @@ -48855,7 +48837,7 @@ - + @@ -48863,13 +48845,13 @@ - + - + @@ -48877,7 +48859,7 @@ - + @@ -48885,7 +48867,7 @@ - + @@ -48895,7 +48877,7 @@ - + @@ -48905,7 +48887,7 @@ - + @@ -48915,7 +48897,7 @@ - + @@ -48925,7 +48907,7 @@ - + @@ -48933,7 +48915,7 @@ - + @@ -48941,7 +48923,7 @@ - + @@ -48949,7 +48931,7 @@ - + @@ -48959,34 +48941,63 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -48995,7 +49006,7 @@ - + @@ -49008,8 +49019,8 @@ - - + + @@ -49055,14 +49066,14 @@ - - + + - - - + + + @@ -49071,7 +49082,7 @@ - + @@ -49084,8 +49095,8 @@ - - + + @@ -49131,14 +49142,14 @@ - - + + - - - + + + diff --git a/tests/data/test-read-dwarf/test9-pr18818-clang.so.abi b/tests/data/test-read-dwarf/test9-pr18818-clang.so.abi index ccfdc323..6285fd86 100644 --- a/tests/data/test-read-dwarf/test9-pr18818-clang.so.abi +++ b/tests/data/test-read-dwarf/test9-pr18818-clang.so.abi @@ -7038,7 +7038,7 @@ - + @@ -7051,7 +7051,7 @@ - +