<< fn->get_pretty_representation() << "'";
report_loc_info((*i)->second_function_decl(), *ctxt, out);
out << " has some indirect sub-type changes:\n";
- if ((fn->get_symbol()->has_aliases()
+ if (// The symbol of the function has aliases and the
+ // function is not a cdtor (yeah because c++ cdtors
+ // usually have several aliases).
+ (fn->get_symbol()->has_aliases()
&& !(is_member_function(fn)
&& get_member_function_is_ctor(fn))
&& !(is_member_function(fn)
&& get_member_function_is_dtor(fn)))
- || (is_c_language(get_translation_unit(fn)->get_language())
- && fn->get_name() != fn->get_linkage_name()))
+ || // We are in C and the name of the function is
+ // different from the symbol name -- without
+ // taking the possible symbol version into
+ // account (this usually means the programmers
+ // was playing tricks with symbol names and
+ // versions).
+ (is_c_language(get_translation_unit(fn)->get_language())
+ && fn->get_name() != fn->get_symbol()->get_name()))
{
+ // As the name of the symbol of the function doesn't
+ // seem to be obvious here, make sure to tell the
+ // user about the name of the (function) symbol she
+ // is looking at here.
int number_of_aliases =
fn->get_symbol()->get_number_of_aliases();
if (number_of_aliases == 0)
if (priv_->id_.empty())
{
const environment* env = get_type()->get_environment();
- if (!get_linkage_name().empty())
+ if (elf_symbol_sptr s = get_symbol())
+ {
+ if (s->has_aliases())
+ // The symbol has several aliases, so let's use the
+ // linkage name of the function as its ID.
+ priv_->id_ = env->intern(get_linkage_name());
+ else
+ // Let's use the full symbol name with its version as ID.
+ priv_->id_ = env->intern(s->get_id_string());
+ }
+ else if (!get_linkage_name().empty())
priv_->id_= env->intern(get_linkage_name());
- else if (elf_symbol_sptr s = get_symbol())
- priv_->id_ = env->intern(s->get_id_string());
else
priv_->id_ = env->intern(get_pretty_representation());
}
test-diff-pkg/libxfce4ui-debuginfo-4.12.1-8.fc27.ppc64.rpm \
test-diff-pkg/libxfce4ui-devel-4.12.1-8.fc27.ppc64-self-report-0.txt \
test-diff-pkg/libxfce4ui-devel-4.12.1-8.fc27.ppc64-self-report-ok-0.txt \
+test-diff-pkg/elfutils-debuginfo-0.170-4.el7.x86_64.rpm \
+test-diff-pkg/elfutils-debuginfo-0.171-1.el7.x86_64.rpm \
+test-diff-pkg/elfutils-devel-0.170-4.el7.x86_64.rpm \
+test-diff-pkg/elfutils-devel-0.171-1.el7.x86_64.rpm \
+test-diff-pkg/elfutils-libs-0.170-4.el7.x86_64.rpm \
+test-diff-pkg/elfutils-libs-0.171-1.el7.x86_64.rpm \
+test-diff-pkg/elfutils-libs-0.170-4.el7.x86_64-multiple-sym-vers-report-0.txt \
\
test-fedabipkgdiff/dbus-glib-0.104-3.fc23.x86_64.rpm \
test-fedabipkgdiff/dbus-glib-debuginfo-0.104-3.fc23.x86_64.rpm \
--- /dev/null
+================ changes of 'libdw-0.170.so'===============
+ Functions changes summary: 0 Removed, 0 Changed (175 filtered out), 4 Added functions
+ Variables changes summary: 0 Removed, 0 Changed, 0 Added variable
+
+ 4 Added functions:
+
+ 'function int dwarf_cu_info(Dwarf_CU*, Dwarf_Half*, uint8_t*, Dwarf_Die*, Dwarf_Die*, uint64_t*, uint8_t*, uint8_t*)' {dwarf_cu_info@@ELFUTILS_0.171}
+ 'function Dwarf_Die* dwarf_die_addr_die(Dwarf*, void*, Dwarf_Die*)' {dwarf_die_addr_die@@ELFUTILS_0.171}
+ 'function int dwarf_get_units(Dwarf*, Dwarf_CU*, Dwarf_CU**, Dwarf_Half*, uint8_t*, Dwarf_Die*, Dwarf_Die*)' {dwarf_get_units@@ELFUTILS_0.171}
+ 'function int dwarf_getabbrevattr_data(Dwarf_Abbrev*, size_t, unsigned int*, unsigned int*, Dwarf_Sword*, Dwarf_Off*)' {dwarf_getabbrevattr_data@@ELFUTILS_0.171}
+
+================ end of changes of 'libdw-0.170.so'===============
+
"data/test-diff-pkg/libxfce4ui-devel-4.12.1-8.fc27.ppc64-self-report-ok-0.txt",
"output/test-diff-pkg/libxfce4ui-devel-4.12.1-8.fc27.ppc64-self-report-ok-0.txt"
},
+ {
+ "data/test-diff-pkg/elfutils-libs-0.170-4.el7.x86_64.rpm",
+ "data/test-diff-pkg/elfutils-libs-0.171-1.el7.x86_64.rpm",
+ "--fail-no-dbg",
+ "",
+ "data/test-diff-pkg/elfutils-debuginfo-0.170-4.el7.x86_64.rpm",
+ "data/test-diff-pkg/elfutils-debuginfo-0.171-1.el7.x86_64.rpm",
+ "data/test-diff-pkg/elfutils-devel-0.170-4.el7.x86_64.rpm",
+ "data/test-diff-pkg/elfutils-devel-0.171-1.el7.x86_64.rpm",
+ "data/test-diff-pkg/elfutils-libs-0.170-4.el7.x86_64-multiple-sym-vers-report-0.txt",
+ "output/test-diff-pkg/elfutils-libs-0.170-4.el7.x86_64-multiple-sym-vers-report-0.txt"
+ },
#endif //WITH_RPM
#ifdef WITH_DEB