From: Dodji Seketeli Date: Thu, 19 Sep 2019 13:10:36 +0000 (+0200) Subject: Bug 25007 - Don't use section-relative symbol values on ET_REL binaries X-Git-Tag: upstream/1.7~56 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=01e5bfc4a4515ef321029324882560beea6e9932;p=platform%2Fupstream%2Flibabigail.git Bug 25007 - Don't use section-relative symbol values on ET_REL binaries In relocatable files, two symbols listed in the .symtab section can have the same value and yet be different. That is because those symbols can be *defined* in different sections. And the value of those symbols represent addresses (offsets) within their own respective sections (a.k.a section-relative addresses). In the same time, symbol address as referred-to in the DWARF information are *not* section-relative, rather, they are relative to the beginning of the whole binary. Until now, the DWARF-referred-to symbol addresses were translated into section-relative addresses, so that they could be compared to the other section-relative addresses we were getting from listing the symbols and their values from the .symtab section. The problem with that approach is that, during the translation from binary-relative to section-relative addresses we were wrongly assuming that all symbols referenced from the DWARF were defined in the .text section. This is wrong especially for ET_REL files because they could be defined in sections named .foo.text or .bar.text, for instance. This leads to issues where we wrongly consider that two symbols having the same value are the same. Because we wrongly assume that they are all defined in the same .text section. This patch fixes this problem by translating the section-relative addresses we see in .symtab into binary-relative addresses by adding the address of the section to the section-relative address. Those binary-addresses can thus safely be compared to the binary-relative addresses we see in the DWARF. And also, when two symbols have the same binary-relative address, we can now safely assume that they are the same -- they are aliases, basically. * src/abg-dwarf-reader.cc (read_context::{lookup_native_elf_symbol_from_index, maybe_adjust_et_rel_sym_addr_to_abs_addr}): Define new member functions. (read_context::lookup_elf_symbol_from_index): Add a new overload. Write the old overloads in terms of the new one. (read_context::{load_symbol_maps_from_symtab_section, populate_symbol_map_from_ksymtab_reloc}): Use the new maybe_adjust_et_rel_sym_addr_to_abs_addr function to translate the symbol value/address into a binary-relative address before adding it to the addr->sym maps. (read_context::maybe_adjust_{fn, var}_sym_address): Do not adjust DWARF-referred-to addresses of ET_REL symbols anymore. * tests/data/test-read-dwarf/PR25007-sdhci.ko: New binary test input. * tests/data/test-read-dwarf/PR25007-sdhci.ko.abi: ABI representation of the above. * tests/test-read-dwarf.cc: Add the new test input to the harness. * tests/data/test-diff-dwarf/test28-vtable-changes-report-0.txt: Adjust. * tests/data/test-diff-filter/test20-inline-report-0.txt: Likewise. * tests/data/test-diff-filter/test20-inline-report-1.txt: Likewise. * tests/data/test-diff-filter/test41-report-0.txt: Likewise. * tests/data/test-diff-filter/test9-report.txt: Likewise. Signed-off-by: Dodji Seketeli --- diff --git a/src/abg-dwarf-reader.cc b/src/abg-dwarf-reader.cc index 6af5fbcd..ee5d859c 100644 --- a/src/abg-dwarf-reader.cc +++ b/src/abg-dwarf-reader.cc @@ -6384,6 +6384,35 @@ public: syms); } + /// Lookup an elf symbol, referred to by its index, from the .symtab + /// section. + /// + /// The resulting symbol returned is an instance of a GElf_Sym, from + /// the libelf library. + /// + /// @param symbol_index the index of the symbol to look up. + /// + /// @param elf_sym out parameter. This is set to the resulting ELF + /// symbol iff the function returns TRUE, meaning the symbol was + /// found. + /// + /// @return TRUE iff the symbol was found. + bool + lookup_native_elf_symbol_from_index(size_t symbol_index, GElf_Sym &elf_sym) + { + Elf_Scn* symtab_section = find_symbol_table_section(); + if (!symtab_section) + return false; + + Elf_Data* symtab = elf_getdata(symtab_section, 0); + ABG_ASSERT(symtab); + + if (!gelf_getsym(symtab, symbol_index, &elf_sym)) + return false; + + return true; + } + /// Given the index of a symbol into the symbol table of an ELF /// file, look the symbol up, build an instace of @ref elf_symbol /// and return it. @@ -6391,13 +6420,37 @@ public: /// @param symbol_index the index of the symbol into the symbol /// table of the current elf file. /// - /// @param symbol the resulting instance of @ref elf_symbol, iff the - /// function returns true. - /// /// @return the elf symbol found or nil if none was found. elf_symbol_sptr lookup_elf_symbol_from_index(size_t symbol_index) { + GElf_Sym s; + elf_symbol_sptr result = + lookup_elf_symbol_from_index(symbol_index, s); + return result; + } + + /// Lookup an ELF symbol given its index into the .symtab section. + /// + /// This function returns both the native symbol (from libelf) and + /// the @p abigail::ir::elf_symbol instance, which is the + /// libabigail-specific representation of the symbol. + /// + /// @param symbol_index the index of the symbol to look for. + /// + /// @param native_sym output parameter. This is set to the native + /// ELF symbol found iff the function returns a non-nil value. + /// + /// @return an instance of libabigail::ir::elf_symbol representing + /// the ELF symbol found, iff one was found. Otherwise, returns + /// nil. + elf_symbol_sptr + lookup_elf_symbol_from_index(size_t symbol_index, + GElf_Sym &native_sym) + { + if (!lookup_native_elf_symbol_from_index(symbol_index, native_sym)) + return elf_symbol_sptr(); + Elf_Scn* symtab_section = find_symbol_table_section(); if (!symtab_section) return elf_symbol_sptr(); @@ -6409,18 +6462,13 @@ public: Elf_Data* symtab = elf_getdata(symtab_section, 0); ABG_ASSERT(symtab); - GElf_Sym* s, smem; - s = gelf_getsym(symtab, symbol_index, &smem); - if (!s) - return elf_symbol_sptr(); - - bool sym_is_defined = s->st_shndx != SHN_UNDEF; - bool sym_is_common = s->st_shndx == SHN_COMMON; // this occurs in - // relocatable - // files. + bool sym_is_defined = native_sym.st_shndx != SHN_UNDEF; + bool sym_is_common = native_sym.st_shndx == SHN_COMMON; // this occurs in + // relocatable + // files. const char* name_str = elf_strptr(elf_handle(), symtab_sheader->sh_link, - s->st_name); + native_sym.st_name); if (name_str == 0) name_str = ""; @@ -6430,7 +6478,7 @@ public: ver); elf_symbol::visibility vis = - stv_to_elf_symbol_visibility(GELF_ST_VISIBILITY(s->st_other)); + stv_to_elf_symbol_visibility(GELF_ST_VISIBILITY(native_sym.st_other)); Elf_Scn *strings_section = find_ksymtab_strings_section(); size_t strings_ndx = strings_section @@ -6438,12 +6486,14 @@ public: : 0; elf_symbol_sptr sym = - elf_symbol::create(env(), symbol_index, s->st_size, - s->st_value, name_str, - stt_to_elf_symbol_type(GELF_ST_TYPE(s->st_info)), - stb_to_elf_symbol_binding(GELF_ST_BIND(s->st_info)), + elf_symbol::create(env(), symbol_index, native_sym.st_size, + native_sym.st_value, name_str, + stt_to_elf_symbol_type + (GELF_ST_TYPE(native_sym.st_info)), + stb_to_elf_symbol_binding + (GELF_ST_BIND(native_sym.st_info)), sym_is_defined, sym_is_common, ver, vis, - s->st_shndx == strings_ndx); + native_sym.st_shndx == strings_ndx); return sym; } @@ -7319,6 +7369,9 @@ public: Elf_Data* symtab = elf_getdata(symtab_section, 0); ABG_ASSERT(symtab); + GElf_Ehdr elf_header; + ABG_ASSERT(gelf_getehdr(elf_handle(), &elf_header)); + bool is_ppc64 = elf_architecture_is_ppc64(); for (size_t i = 0; i < nb_syms; ++i) @@ -7351,11 +7404,14 @@ public: } { + GElf_Addr symbol_value = + maybe_adjust_et_rel_sym_addr_to_abs_addr(sym); + addr_elf_symbol_sptr_map_type::const_iterator it = - fun_addr_sym_map_->find(sym->st_value); + fun_addr_sym_map_->find(symbol_value); if (it == fun_addr_sym_map_->end()) - (*fun_addr_sym_map_)[sym->st_value] = symbol; - else if (sym->st_value != 0) + (*fun_addr_sym_map_)[symbol_value] = symbol; + else //if (sym->st_value != 0) it->second->get_main_symbol()->add_alias(symbol); if (is_ppc64) @@ -7505,10 +7561,12 @@ public: } else { + GElf_Addr symbol_value = + maybe_adjust_et_rel_sym_addr_to_abs_addr(sym); addr_elf_symbol_sptr_map_type::const_iterator it = - var_addr_sym_map_->find(sym->st_value); + var_addr_sym_map_->find(symbol_value); if (it == var_addr_sym_map_->end()) - (*var_addr_sym_map_)[sym->st_value] = symbol; + (*var_addr_sym_map_)[symbol_value] = symbol; else it->second->get_main_symbol()->add_alias(symbol); } @@ -7887,12 +7945,14 @@ public: address_set_sptr set; if (symbol->is_function()) { - ABG_ASSERT(lookup_elf_fn_symbol_from_address(adjusted_symbol_address)); + ABG_ASSERT(lookup_elf_fn_symbol_from_address + (adjusted_symbol_address)); set = exported_fns_set; } else if (symbol->is_variable()) { - ABG_ASSERT(lookup_elf_var_symbol_from_address(adjusted_symbol_address)); + ABG_ASSERT(lookup_elf_var_symbol_from_address + (adjusted_symbol_address)); set = exported_vars_set; } else @@ -7927,19 +7987,22 @@ public: bool is_relasec = (reloc_section_shdr->sh_type == SHT_RELA); elf_symbol_sptr symbol; + GElf_Sym native_symbol; for (unsigned int i = 0; i < reloc_count; i++) { if (is_relasec) { GElf_Rela rela; gelf_getrela(reloc_section_data, i, &rela); - symbol = lookup_elf_symbol_from_index(GELF_R_SYM(rela.r_info)); + symbol = lookup_elf_symbol_from_index(GELF_R_SYM(rela.r_info), + native_symbol); } else { GElf_Rel rel; gelf_getrel(reloc_section_data, i, &rel); - symbol = lookup_elf_symbol_from_index(GELF_R_SYM(rel.r_info)); + symbol = lookup_elf_symbol_from_index(GELF_R_SYM(rel.r_info), + native_symbol); } ABG_ASSERT(symbol); @@ -7971,20 +8034,27 @@ public: continue; } + // If we are looking at an ET_REL (relocatable) binary, then + // the symbol value of native_symbol is relative to the + // section that symbol is defined in. We need to translate it + // into an absolute (okay, binary-relative, rather) address. + GElf_Addr symbol_address = + maybe_adjust_et_rel_sym_addr_to_abs_addr (&native_symbol); + address_set_sptr set; if (symbol->is_function()) { - ABG_ASSERT(lookup_elf_fn_symbol_from_address(symbol->get_value())); + ABG_ASSERT(lookup_elf_fn_symbol_from_address(symbol_address)); set = exported_fns_set; } else if (symbol->is_variable()) { - ABG_ASSERT(lookup_elf_var_symbol_from_address(symbol->get_value())); + ABG_ASSERT(lookup_elf_var_symbol_from_address(symbol_address)); set = exported_vars_set; } else ABG_ASSERT_NOT_REACHED; - set->insert(symbol->get_value()); + set->insert(symbol_address); } return true; } @@ -8322,21 +8392,87 @@ public: GElf_Ehdr* elf_header = gelf_getehdr(elf, &eh_mem); if (elf_header->e_type == ET_REL) - { - Elf_Scn* text_section = find_text_section(elf); - ABG_ASSERT(text_section); - - GElf_Shdr sheader_mem; - GElf_Shdr* text_sheader = gelf_getshdr(text_section, &sheader_mem); - ABG_ASSERT(text_sheader); - addr = addr - text_sheader->sh_addr; - } + // We are looking at a relocatable file. In this case, we don't + // do anything because: + // + // 1/ the addresses from DWARF are absolute (relative to the + // beginning of the relocatable file) + // + // 2/ The ELF symbol addresses that we store in our lookup + // tables are translated from section-related to absolute as + // well. So we don't have anything to do at this point for + // ET_REL files. + ; else addr = maybe_adjust_address_for_exec_or_dyn(addr); return addr; } + /// Translate a section-relative symbol address (i.e, symbol value) + /// into an absolute symbol address by adding the address of the + /// section the symbol belongs to, to the address value. + /// + /// This is useful when looking at symbol values coming from + /// relocatable files (of ET_REL kind). If the binary is not + /// ET_REL, then the function does nothing and returns the input + /// address unchanged. + /// + /// @param addr the symbol address to possibly translate. + /// + /// @param section the section the symbol which value is @p addr + /// belongs to. + /// + /// @return the section-relative address, translated into an + /// absolute address, if @p section is an ET_REL binary. Otherwise, + /// return @p addr, unchanged. + GElf_Addr + maybe_adjust_et_rel_sym_addr_to_abs_addr(GElf_Addr addr, Elf_Scn *section) + { + if (section == 0) + return addr; + + Elf* elf = elf_handle(); + GElf_Ehdr elf_header; + + if (!gelf_getehdr(elf, &elf_header)) + return addr; + + if (elf_header.e_type != ET_REL) + return addr; + + GElf_Shdr section_header; + if (!gelf_getshdr(section, §ion_header)) + return addr; + + return addr + section_header.sh_addr; + } + + /// Translate a section-relative symbol address (i.e, symbol value) + /// into an absolute symbol address by adding the address of the + /// section the symbol belongs to, to the address value. + /// + /// This is useful when looking at symbol values coming from + /// relocatable files (of ET_REL kind). If the binary is not + /// ET_REL, then the function does nothing and returns the input + /// address unchanged. + /// + /// @param sym the symbol whose address to possibly needs to be + /// translated. + /// + /// @return the section-relative address, translated into an + /// absolute address, if @p sym is from an ET_REL binary. + /// Otherwise, return the address of @p sym, unchanged. + GElf_Addr + maybe_adjust_et_rel_sym_addr_to_abs_addr(GElf_Sym *sym) + { + Elf_Scn *symbol_section = elf_getscn(elf_handle(), sym->st_shndx); + ABG_ASSERT(symbol_section); + GElf_Addr result = sym->st_value; + result = maybe_adjust_et_rel_sym_addr_to_abs_addr(result, symbol_section); + return result; + } + /// Test if a given address is in a given section. /// /// @param addr the address to consider. @@ -8415,19 +8551,17 @@ public: GElf_Ehdr* elf_header = gelf_getehdr(elf, &eh_mem); if (elf_header->e_type == ET_REL) - { - Elf_Scn* data_section = get_data_section_for_variable_address(addr); - if (!data_section) - // It's likely that this address doesn't come from any - // data section. - return addr; - - GElf_Shdr sheader_mem; - GElf_Shdr* data_sheader = gelf_getshdr(data_section, &sheader_mem); - ABG_ASSERT(data_sheader); - - return addr - data_sheader->sh_addr; - } + // We are looking at a relocatable file. In this case, we don't + // do anything because: + // + // 1/ the addresses from DWARF are absolute (relative to the + // beginning of the relocatable file) + // + // 2/ The ELF symbol addresses that we store in our lookup + // tables are translated from section-related to absolute as + // well. So we don't have anything to do at this point for + // ET_REL files. + ; else addr = maybe_adjust_address_for_exec_or_dyn(addr); diff --git a/tests/data/Makefile.am b/tests/data/Makefile.am index 3474b2eb..5b52186b 100644 --- a/tests/data/Makefile.am +++ b/tests/data/Makefile.am @@ -402,6 +402,8 @@ test-read-dwarf/PR22122-libftdc.so \ test-read-dwarf/PR22122-libftdc.so.abi \ test-read-dwarf/PR24378-fn-is-not-scope.abi \ test-read-dwarf/PR24378-fn-is-not-scope.o \ +test-read-dwarf/PR25007-sdhci.ko \ +test-read-dwarf/PR25007-sdhci.ko.abi \ \ test-annotate/test0.abi \ test-annotate/test1.abi \ diff --git a/tests/data/test-diff-dwarf/test28-vtable-changes-report-0.txt b/tests/data/test-diff-dwarf/test28-vtable-changes-report-0.txt index 5ec28d83..154532fc 100644 --- a/tests/data/test-diff-dwarf/test28-vtable-changes-report-0.txt +++ b/tests/data/test-diff-dwarf/test28-vtable-changes-report-0.txt @@ -19,7 +19,7 @@ Variable symbols changes summary: 0 Removed, 3 Added variable symbols not refere 3 Added variable symbols not referenced by debug info: - _ZTI1S, aliases _ZTS1S + _ZTI1S _ZTS1S - _ZTV1S, aliases _ZTI1S, _ZTS1S + _ZTV1S diff --git a/tests/data/test-diff-filter/test20-inline-report-0.txt b/tests/data/test-diff-filter/test20-inline-report-0.txt index 9666a8fd..e69de29b 100644 --- a/tests/data/test-diff-filter/test20-inline-report-0.txt +++ b/tests/data/test-diff-filter/test20-inline-report-0.txt @@ -1,3 +0,0 @@ -Functions changes summary: 0 Removed, 0 Changed (1 filtered out), 0 Added function -Variables changes summary: 0 Removed, 0 Changed, 0 Added variable - diff --git a/tests/data/test-diff-filter/test20-inline-report-1.txt b/tests/data/test-diff-filter/test20-inline-report-1.txt index 2abdae77..e69de29b 100644 --- a/tests/data/test-diff-filter/test20-inline-report-1.txt +++ b/tests/data/test-diff-filter/test20-inline-report-1.txt @@ -1,9 +0,0 @@ -Functions changes summary: 0 Removed, 1 Changed, 0 Added function -Variables changes summary: 0 Removed, 0 Changed, 0 Added variable - -1 function with some indirect sub-type change: - - [C]'function int bar()' has some indirect sub-type changes: - 'function int bar() {_ZN1S3fooEv}' now becomes 'method int S::foo() {_ZN1S3fooEv}' - - diff --git a/tests/data/test-diff-filter/test41-report-0.txt b/tests/data/test-diff-filter/test41-report-0.txt index 0ccb2608..edeb24ea 100644 --- a/tests/data/test-diff-filter/test41-report-0.txt +++ b/tests/data/test-diff-filter/test41-report-0.txt @@ -1,42 +1,61 @@ -Functions changes summary: 0 Removed, 0 Changed (4 filtered out), 1 Added functions +Functions changes summary: 8 Removed, 2 Changed (10 filtered out), 16 Added functions Variables changes summary: 0 Removed, 0 Changed, 0 Added variable -Function symbols changes summary: 12 Removed, 15 Added function symbols not referenced by debug info +Function symbols changes summary: 1 Removed, 0 Added function symbol not referenced by debug info Variable symbols changes summary: 0 Removed, 0 Added variable symbol not referenced by debug info -1 Added function: +8 Removed functions: - 'function bool abigail::xml_writer::annotate(const abigail::ir::function_type_sptr&, abigail::xml_writer::write_context&, unsigned int)' {_ZN7abigail10xml_writer13write_context10sort_typesERKSt6vectorINSt3tr110shared_ptrINS_2ir13function_typeEEESaIS7_EERS2_INS4_INS5_9type_baseEEESaISD_EE} + 'method void abigail::xml_writer::write_context::record_decl_only_type_as_emitted(abigail::ir::type_base*)' {_ZN7abigail10xml_writer13write_context32record_decl_only_type_as_emittedEPNS_2ir9type_baseE} + 'method std::_Deque_base >::~_Deque_base(int)' {_ZNSt11_Deque_baseIjSaIjEED2Ev, aliases _ZNSt11_Deque_baseIjSaIjEED1Ev} + 'method void std::deque, std::allocator >, std::allocator, std::allocator > > >::_M_push_back_aux, std::allocator > >(std::__cxx11::basic_string, std::allocator >&&)' {_ZNSt5dequeINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE16_M_push_back_auxIJS5_EEEvDpOT_} + 'method void std::deque, std::allocator >, std::allocator, std::allocator > > >::emplace_back, std::allocator > >(std::__cxx11::basic_string, std::allocator >&&)' {_ZNSt5dequeINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE12emplace_backIJS5_EEEvDpOT_} + 'method void std::deque >::_M_push_back_aux(const unsigned int&)' {_ZNSt5dequeIjSaIjEE16_M_push_back_auxIJRKjEEEvDpOT_} + 'method void std::tr1::_Sp_counted_base<(__gnu_cxx::_Lock_policy)2u>::_M_release()' {_ZNSt3tr116_Sp_counted_baseILN9__gnu_cxx12_Lock_policyE2EE10_M_releaseEv} + 'method std::pair std::tr1::__detail::_Prime_rehash_policy::_M_need_rehash(std::size_t, std::size_t, std::size_t) const' {_ZNKSt3tr18__detail20_Prime_rehash_policy14_M_need_rehashEmmm} + 'method std::tr1::__shared_count<(__gnu_cxx::_Lock_policy)2u>& std::tr1::__shared_count<(__gnu_cxx::_Lock_policy)2u>::operator=(const std::tr1::__shared_count<(__gnu_cxx::_Lock_policy)2u>&)' {_ZNSt3tr114__shared_countILN9__gnu_cxx12_Lock_policyE2EEaSERKS3_} -12 Removed function symbols not referenced by debug info: +16 Added functions: + + 'method std::__cxx11::string abigail::xml_writer::write_context::get_id_for_class_tmpl(const abigail::ir::class_tdecl_sptr&)' {_ZN7abigail10xml_writer13write_context21get_id_for_class_tmplB5cxx11ERKNSt3tr110shared_ptrINS_2ir11class_tdeclEEE} + 'method std::__cxx11::string abigail::xml_writer::write_context::get_id_for_fn_tmpl(const abigail::ir::function_tdecl_sptr&)' {_ZN7abigail10xml_writer13write_context18get_id_for_fn_tmplB5cxx11ERKNSt3tr110shared_ptrINS_2ir14function_tdeclEEE} + 'method void abigail::xml_writer::write_context::record_type_id_as_emitted(const std::__cxx11::string&)' {_ZN7abigail10xml_writer13write_context25record_type_id_as_emittedERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE} + 'method void abigail::xml_writer::write_context::sort_types(abigail::xml_writer::type_ptr_map&, std::vector >&)' {_ZN7abigail10xml_writer13write_context10sort_typesERNSt3tr113unordered_mapIPNS_2ir9type_baseENS_15interned_stringENS0_11type_hasherENS_10diff_utils19deep_ptr_eq_functorESaISt4pairIKS6_S7_EEEERSt6vectorIS6_SaIS6_EE} + 'method void abigail::xml_writer::write_context::sort_types(const std::vector, std::allocator > >&, std::vector, std::allocator > >&)' {_ZN7abigail10xml_writer13write_context10sort_typesERKSt6vectorINSt3tr110shared_ptrINS_2ir13function_typeEEESaIS7_EERS2_INS4_INS5_9type_baseEEESaISD_EE} + 'method void std::_Deque_base, std::allocator > >::_M_create_nodes(std::_Deque_base, std::allocator > >::_Map_pointer, std::_Deque_base, std::allocator > >::_Map_pointer)' {_ZNSt11_Deque_baseINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE15_M_create_nodesEPPS5_S9_} + 'method void std::_Deque_base >::_M_create_nodes(std::_Deque_base >::_Map_pointer, std::_Deque_base >::_Map_pointer)' {_ZNSt11_Deque_baseIjSaIjEE15_M_create_nodesEPPjS3_} + 'method std::_Deque_iterator, std::__cxx11::basic_string &, std::__cxx11::basic_string *> std::__uninitialized_copy::__uninit_copy, const std::__cxx11::basic_string &, const std::__cxx11::basic_string *>, std::_Deque_iterator, std::__cxx11::basic_string &, std::__cxx11::basic_string *> >(std::_Deque_iterator, const std::__cxx11::basic_string &, const std::__cxx11::basic_string *>, std::_Deque_iterator, std::__cxx11::basic_string &, std::__cxx11::basic_string *>)' {_ZNSt20__uninitialized_copyILb0EE13__uninit_copyISt15_Deque_iteratorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKS8_PS9_ES2_IS8_RS8_PS8_EEET0_T_SH_SG_} + 'method void std::deque, std::allocator > >::_M_destroy_data_aux(std::deque, std::allocator > >::iterator, std::deque, std::allocator > >::iterator)' {_ZNSt5dequeINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE19_M_destroy_data_auxESt15_Deque_iteratorIS5_RS5_PS5_ESB_} + 'method void std::deque, std::allocator > >::_M_push_back_aux(const std::deque, std::allocator > >::value_type&)' {_ZNSt5dequeINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE16_M_push_back_auxERKS5_} + 'method void std::deque, std::allocator > >::_M_reallocate_map(size_type, bool)' {_ZNSt5dequeINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE17_M_reallocate_mapEmb} + 'method void std::deque, std::allocator > >::deque(const std::deque, std::allocator > >&)' {_ZNSt5dequeINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EEC2ERKS7_} + 'method void std::deque >::_M_reallocate_map(size_type, bool)' {_ZNSt5dequeIjSaIjEE17_M_reallocate_mapEmb} + 'method void std::stack, std::deque, std::allocator > > >::push(const std::stack, std::deque, std::allocator > > >::value_type&)' {_ZNSt5stackINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt5dequeIS5_SaIS5_EEE4pushERKS5_} + 'method virtual std::tr1::_Sp_counted_base<__gnu_cxx::_Lock_policy::_S_atomic>::~_Sp_counted_base()' {_ZNSt3tr116_Sp_counted_baseILN9__gnu_cxx12_Lock_policyE2EED2Ev} + note that this adds a new entry to the vtable of class std::tr1::_Sp_counted_base<__gnu_cxx::_Lock_policy::_S_atomic> + 'function void std::tr1::__enable_shared_from_this_helper<__gnu_cxx::_Lock_policy::_S_atomic>(const std::tr1::__shared_count<__gnu_cxx::_Lock_policy::_S_atomic>&, ...)' {_ZNSt3tr132__enable_shared_from_this_helperILN9__gnu_cxx12_Lock_policyE2EEEvRKNS_14__shared_countIXT_EEEz} + +2 functions with some indirect sub-type change: + + [C]'method void abigail::xml_writer::write_context::record_type_as_emitted(const abigail::ir::type_base_sptr&)' at abg-writer.cc:473:1 has some indirect sub-type changes: + parameter 1 of type 'const abigail::ir::type_base_sptr&' has sub-type changes: + in referenced type 'const abigail::ir::type_base_sptr': + in unqualified underlying type 'typedef abigail::ir::type_base_sptr' at abg-fwd.h:110:1: + underlying type 'class std::tr1::shared_ptr' at shared_ptr.h:983:1 changed: + type size hasn't changed + 1 base class deletion: + class std::tr1::__shared_ptr at shared_ptr.h:539:1 + 1 base class insertion: + class std::tr1::__shared_ptr at shared_ptr.h:539:1 + + [C]'method bool abigail::xml_writer::write_context::type_ptr_cmp::operator()(const abigail::ir::type_base*, const abigail::ir::type_base*) const' at abg-writer.cc:359:1 has some indirect sub-type changes: + parameter 1 of type 'const abigail::ir::type_base*' has sub-type changes: + in pointed to type 'const abigail::ir::type_base': + in unqualified underlying type 'class abigail::ir::type_base': + type size changed from 0 to 384 (in bits) + + + +1 Removed function symbol not referenced by debug info: - _ZN7abigail10xml_writer13write_context32record_decl_only_type_as_emittedEPNS_2ir9type_baseE - _ZN7abigail10xml_writer13write_contextC1EPKNS_2ir11environmentERSob _ZN7abigail10xml_writer13write_contextD1Ev - _ZNKSt3tr18__detail20_Prime_rehash_policy14_M_need_rehashEmmm - _ZNSt11_Deque_baseIjSaIjEED1Ev - _ZNSt11_Deque_baseIjSaIjEED2Ev - _ZNSt3tr114__shared_countILN9__gnu_cxx12_Lock_policyE2EEaSERKS3_ - _ZNSt3tr116_Sp_counted_baseILN9__gnu_cxx12_Lock_policyE2EE10_M_releaseEv - _ZNSt5dequeINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE12emplace_backIJS5_EEEvDpOT_ - _ZNSt5dequeINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE16_M_push_back_auxIJS5_EEEvDpOT_ - _ZNSt5dequeINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EED1Ev - _ZNSt5dequeIjSaIjEE16_M_push_back_auxIJRKjEEEvDpOT_ - -15 Added function symbols not referenced by debug info: - - _ZN7abigail10xml_writer13write_context10sort_typesERNSt3tr113unordered_mapIPNS_2ir9type_baseENS_15interned_stringENS0_11type_hasherENS_10diff_utils19deep_ptr_eq_functorESaISt4pairIKS6_S7_EEEERSt6vectorIS6_SaIS6_EE - _ZN7abigail10xml_writer13write_context18get_id_for_fn_tmplB5cxx11ERKNSt3tr110shared_ptrINS_2ir14function_tdeclEEE - _ZN7abigail10xml_writer13write_context21get_id_for_class_tmplB5cxx11ERKNSt3tr110shared_ptrINS_2ir11class_tdeclEEE - _ZN7abigail10xml_writer13write_context25record_type_id_as_emittedERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE - _ZNSt11_Deque_baseINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE15_M_create_nodesEPPS5_S9_ - _ZNSt11_Deque_baseIjSaIjEE15_M_create_nodesEPPjS3_ - _ZNSt20__uninitialized_copyILb0EE13__uninit_copyISt15_Deque_iteratorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKS8_PS9_ES2_IS8_RS8_PS8_EEET0_T_SH_SG_ - _ZNSt3tr116_Sp_counted_baseILN9__gnu_cxx12_Lock_policyE2EED2Ev - _ZNSt3tr132__enable_shared_from_this_helperILN9__gnu_cxx12_Lock_policyE2EEEvRKNS_14__shared_countIXT_EEEz - _ZNSt5dequeINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE16_M_push_back_auxERKS5_ - _ZNSt5dequeINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE17_M_reallocate_mapEmb - _ZNSt5dequeINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE19_M_destroy_data_auxESt15_Deque_iteratorIS5_RS5_PS5_ESB_ - _ZNSt5dequeINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EEC2ERKS7_ - _ZNSt5dequeIjSaIjEE17_M_reallocate_mapEmb - _ZNSt5stackINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt5dequeIS5_SaIS5_EEE4pushERKS5_ diff --git a/tests/data/test-diff-filter/test9-report.txt b/tests/data/test-diff-filter/test9-report.txt index 48d9a4cb..a67ff59e 100644 --- a/tests/data/test-diff-filter/test9-report.txt +++ b/tests/data/test-diff-filter/test9-report.txt @@ -1,7 +1,5 @@ Functions changes summary: 0 Removed, 1 Changed, 2 Added functions Variables changes summary: 0 Removed, 0 Changed, 0 Added variable -Function symbols changes summary: 0 Removed, 1 Added function symbol not referenced by debug info -Variable symbols changes summary: 0 Removed, 0 Added variable symbol not referenced by debug info 2 Added functions: @@ -18,7 +16,3 @@ Variable symbols changes summary: 0 Removed, 0 Added variable symbol not referen 'int S::m0', at offset 0 (in bits) -1 Added function symbol not referenced by debug info: - - _ZN1SC1Ev - diff --git a/tests/data/test-read-dwarf/PR25007-sdhci.ko b/tests/data/test-read-dwarf/PR25007-sdhci.ko new file mode 100644 index 00000000..a4d2af53 Binary files /dev/null and b/tests/data/test-read-dwarf/PR25007-sdhci.ko differ diff --git a/tests/data/test-read-dwarf/PR25007-sdhci.ko.abi b/tests/data/test-read-dwarf/PR25007-sdhci.ko.abi new file mode 100644 index 00000000..a6135b8c --- /dev/null +++ b/tests/data/test-read-dwarf/PR25007-sdhci.ko.abi @@ -0,0 +1,12160 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/test-read-dwarf.cc b/tests/test-read-dwarf.cc index f089f6c0..39505cb9 100644 --- a/tests/test-read-dwarf.cc +++ b/tests/test-read-dwarf.cc @@ -237,6 +237,12 @@ InOutSpec in_out_specs[] = "data/test-read-dwarf/PR24378-fn-is-not-scope.abi", "output/test-read-dwarf/PR24378-fn-is-not-scope.abi", }, + { + "data/test-read-dwarf/PR25007-sdhci.ko", + "", + "data/test-read-dwarf/PR25007-sdhci.ko.abi", + "output/test-read-dwarf/PR25007-sdhci.ko.abi", + }, // This should be the last entry. {NULL, NULL, NULL, NULL} };