'src/abg-dwarf-reader.cc:compare_dies_string_attribute_value' optimization
Thomas Schwinge
thomas@codesourcery.com
Fri Jan 28 22:39:49 GMT 2022
Hi!
It's late on a Friday evening, and very well this may just be me not
understanding libabigail/DWARF ;-) -- in context of
<https://sourceware.org/bugzilla/show_bug.cgi?id=21023#c10> or
<https://sourceware.org/bugzilla/show_bug.cgi?id=25042#c4>, I did a
simple experiment to disable the
'src/abg-dwarf-reader.cc:compare_dies_string_attribute_value'
optimization:
--- src/abg-dwarf-reader.cc
+++ src/abg-dwarf-reader.cc
[...]
/// This function is a fast routine (optimization) to compare the
/// values of two string attributes of two DIEs.
///
/// @param l the first DIE to consider.
///
/// @param r the second DIE to consider.
///
/// @param attr_name the name of the attribute to compare, on the two
/// DIEs above.
///
/// @param result out parameter. This is set to the result of the
/// comparison. If the value of attribute @p attr_name on DIE @p l
/// equals the value of attribute @p attr_name on DIE @p r, then the
/// the argument of this parameter is set to true. Otherwise, it's
/// set to false. Note that the argument of this parameter is set iff
/// the function returned true.
///
/// @return true iff the comparison could be performed. There are
/// cases in which the comparison cannot be performed. For instance,
/// if one of the DIEs does not have the attribute @p attr_name. In
/// any case, if this function returns true, then the parameter @p
/// result is set to the result of the comparison.
static bool
compare_dies_string_attribute_value(const Dwarf_Die *l, const Dwarf_Die *r,
unsigned attr_name,
bool &result)
{
Dwarf_Attribute l_attr, r_attr;
if (!dwarf_attr_integrate(const_cast<Dwarf_Die*>(l), attr_name, &l_attr)
|| !dwarf_attr_integrate(const_cast<Dwarf_Die*>(r), attr_name, &r_attr))
return false;
ABG_ASSERT(l_attr.form == DW_FORM_strp
|| l_attr.form == DW_FORM_string
|| l_attr.form == DW_FORM_GNU_strp_alt
|| form_is_DW_FORM_strx(l_attr.form)
|| form_is_DW_FORM_line_strp(l_attr.form));
ABG_ASSERT(r_attr.form == DW_FORM_strp
|| r_attr.form == DW_FORM_string
|| r_attr.form == DW_FORM_GNU_strp_alt
|| form_is_DW_FORM_strx(r_attr.form)
|| form_is_DW_FORM_line_strp(r_attr.form));
+#if 0
if ((l_attr.form == DW_FORM_strp
&& r_attr.form == DW_FORM_strp)
|| (l_attr.form == DW_FORM_GNU_strp_alt
&& r_attr.form == DW_FORM_GNU_strp_alt)
|| (form_is_DW_FORM_strx(l_attr.form)
&& form_is_DW_FORM_strx(r_attr.form))
|| (form_is_DW_FORM_line_strp(l_attr.form)
&& form_is_DW_FORM_line_strp(r_attr.form)))
{
// So these string attributes are actually pointers into a
// string table. The string table is most likely de-duplicated
// so comparing the *values* of the pointers should be enough.
//
// This is the fast path.
if (l_attr.valp == r_attr.valp)
result = true;
else if (l_attr.valp && r_attr.valp)
result = *l_attr.valp == *r_attr.valp;
else
result = false;
return true;
}
+#endif
// If we reached this point it means we couldn't use the fast path
// because the string atttributes are strings that are "inline" in
// the debug info section. Let's just compare them the slow and
// obvious way.
string l_str = die_string_attribute(l, attr_name),
r_str = die_string_attribute(r, attr_name);
result = l_str == r_str;
return true;
}
My assumption was that this shouldn't change anything other than possibly
regress performance. However:
[-PASS:-]{+FAIL:+} runtestreaddwarf
--- build-libabigail/tests/runtestreaddwarf.log
+++ build-libabigail/tests/runtestreaddwarf.log
[...]
-PASS runtestreaddwarf (exit status: 0)
+--- [...]/source-libabigail/tests/data/test-read-dwarf/PR25007-sdhci.ko.abi 2022-01-28 22:48:07.049805043 +0100
++++ [...]/build-libabigail/tests/output/test-read-dwarf/PR25007-sdhci.ko.abi 2022-01-28 23:15:30.261483063 +0100
+@@ -10107,10 +10107,19 @@
+ <parameter type-id='type-id-1183'/>
+ <return type-id='type-id-165'/>
+ </function-type>
++ <function-type size-in-bits='64' id='type-id-1112'>
++ <parameter type-id='type-id-614'/>
++ <parameter type-id='type-id-279'/>
++ <return type-id='type-id-165'/>
++ </function-type>
+ <function-type size-in-bits='64' id='type-id-1114'>
+ <parameter type-id='type-id-125'/>
+ <return type-id='type-id-165'/>
+ </function-type>
++ <function-type size-in-bits='64' id='type-id-1153'>
++ <parameter type-id='type-id-279'/>
++ <return type-id='type-id-282'/>
++ </function-type>
+ <function-type size-in-bits='64' id='type-id-1184'>
+ <parameter type-id='type-id-238'/>
+ <parameter type-id='type-id-1138'/>
+@@ -10138,6 +10147,10 @@
+ <parameter type-id='type-id-51'/>
+ <return type-id='type-id-1195'/>
+ </function-type>
++ <function-type size-in-bits='64' id='type-id-1198'>
++ <parameter type-id='type-id-538'/>
++ <return type-id='type-id-530'/>
++ </function-type>
+ <function-type size-in-bits='64' id='type-id-1199'>
+ <parameter type-id='type-id-1357'/>
+ <return type-id='type-id-635'/>
+@@ -10181,6 +10194,16 @@
+ <parameter type-id='type-id-1553'/>
+ <return type-id='type-id-53'/>
+ </function-type>
++ <function-type size-in-bits='64' id='type-id-1224'>
++ <parameter type-id='type-id-24'/>
++ <parameter type-id='type-id-1143'/>
++ <return type-id='type-id-53'/>
++ </function-type>
++ <function-type size-in-bits='64' id='type-id-1225'>
++ <parameter type-id='type-id-165'/>
++ <parameter type-id='type-id-1143'/>
++ <return type-id='type-id-53'/>
++ </function-type>
+ <function-type size-in-bits='64' id='type-id-1226'>
+ <parameter type-id='type-id-1118'/>
+ <return type-id='type-id-53'/>
+@@ -10370,6 +10393,13 @@
+ <parameter type-id='type-id-411'/>
+ <return type-id='type-id-53'/>
+ </function-type>
++ <function-type size-in-bits='64' id='type-id-1256'>
++ <parameter type-id='type-id-335'/>
++ <parameter type-id='type-id-279'/>
++ <parameter type-id='type-id-1093'/>
++ <parameter type-id='type-id-125'/>
++ <return type-id='type-id-53'/>
++ </function-type>
+ <function-type size-in-bits='64' id='type-id-1257'>
+ <parameter type-id='type-id-335'/>
+ <parameter type-id='type-id-67'/>
+@@ -10519,6 +10549,31 @@
+ <parameter type-id='type-id-53'/>
+ <return type-id='type-id-53'/>
+ </function-type>
++ <function-type size-in-bits='64' id='type-id-1283'>
++ <parameter type-id='type-id-559'/>
++ <return type-id='type-id-53'/>
++ </function-type>
++ <function-type size-in-bits='64' id='type-id-1284'>
++ <parameter type-id='type-id-559'/>
++ <parameter type-id='type-id-165'/>
++ <parameter type-id='type-id-332'/>
++ <return type-id='type-id-53'/>
++ </function-type>
++ <function-type size-in-bits='64' id='type-id-1285'>
++ <parameter type-id='type-id-559'/>
++ <parameter type-id='type-id-559'/>
++ <parameter type-id='type-id-165'/>
++ <return type-id='type-id-53'/>
++ </function-type>
++ <function-type size-in-bits='64' id='type-id-1286'>
++ <parameter type-id='type-id-1343'/>
++ <return type-id='type-id-53'/>
++ </function-type>
++ <function-type size-in-bits='64' id='type-id-1287'>
++ <parameter type-id='type-id-1343'/>
++ <parameter type-id='type-id-125'/>
++ <return type-id='type-id-53'/>
++ </function-type>
+ <function-type size-in-bits='64' id='type-id-1288'>
+ <parameter type-id='type-id-225'/>
+ <parameter type-id='type-id-1151'/>
+@@ -10531,6 +10586,17 @@
+ <parameter type-id='type-id-172'/>
+ <return type-id='type-id-53'/>
+ </function-type>
++ <function-type size-in-bits='64' id='type-id-1290'>
++ <parameter type-id='type-id-614'/>
++ <parameter type-id='type-id-279'/>
++ <return type-id='type-id-53'/>
++ </function-type>
++ <function-type size-in-bits='64' id='type-id-1292'>
++ <parameter type-id='type-id-614'/>
++ <parameter type-id='type-id-279'/>
++ <parameter type-id='type-id-1350'/>
++ <return type-id='type-id-53'/>
++ </function-type>
+ <function-type size-in-bits='64' id='type-id-1294'>
+ <parameter type-id='type-id-1357'/>
+ <return type-id='type-id-53'/>
+@@ -10591,6 +10657,10 @@
+ <parameter type-id='type-id-100'/>
+ <return type-id='type-id-53'/>
+ </function-type>
++ <function-type size-in-bits='64' id='type-id-1305'>
++ <parameter type-id='type-id-274'/>
++ <return type-id='type-id-53'/>
++ </function-type>
+ <function-type size-in-bits='64' id='type-id-1306'>
+ <parameter type-id='type-id-826'/>
+ <parameter type-id='type-id-114'/>
+@@ -10631,6 +10701,22 @@
+ <parameter type-id='type-id-238'/>
+ <return type-id='type-id-53'/>
+ </function-type>
++ <function-type size-in-bits='64' id='type-id-1314'>
++ <parameter type-id='type-id-577'/>
++ <parameter type-id='type-id-559'/>
++ <parameter type-id='type-id-557'/>
++ <return type-id='type-id-53'/>
++ </function-type>
++ <function-type size-in-bits='64' id='type-id-1315'>
++ <parameter type-id='type-id-577'/>
++ <parameter type-id='type-id-557'/>
++ <return type-id='type-id-53'/>
++ </function-type>
++ <function-type size-in-bits='64' id='type-id-1316'>
++ <parameter type-id='type-id-577'/>
++ <parameter type-id='type-id-127'/>
++ <return type-id='type-id-53'/>
++ </function-type>
+ <function-type size-in-bits='64' id='type-id-1317'>
+ <parameter type-id='type-id-241'/>
+ <return type-id='type-id-53'/>
+@@ -10746,6 +10832,10 @@
+ <parameter type-id='type-id-114'/>
+ <return type-id='type-id-67'/>
+ </function-type>
++ <function-type size-in-bits='64' id='type-id-1363'>
++ <parameter type-id='type-id-1398'/>
++ <return type-id='type-id-67'/>
++ </function-type>
+ <function-type size-in-bits='64' id='type-id-1364'>
+ <parameter type-id='type-id-241'/>
+ <parameter type-id='type-id-1409'/>
+@@ -10770,6 +10860,14 @@
+ <parameter type-id='type-id-1384'/>
+ <return type-id='type-id-1085'/>
+ </function-type>
++ <function-type size-in-bits='64' id='type-id-1427'>
++ <parameter type-id='type-id-1343'/>
++ <parameter type-id='type-id-1384'/>
++ <return type-id='type-id-1085'/>
++ </function-type>
++ <function-type size-in-bits='64' id='type-id-1428'>
++ <return type-id='type-id-172'/>
++ </function-type>
+ <function-type size-in-bits='64' id='type-id-1429'>
+ <parameter type-id='type-id-515'/>
+ <return type-id='type-id-172'/>
+@@ -10815,6 +10913,9 @@
+ <parameter type-id='type-id-399'/>
+ <return type-id='type-id-399'/>
+ </function-type>
++ <function-type size-in-bits='64' id='type-id-1437'>
++ <return type-id='type-id-533'/>
++ </function-type>
+ <function-type size-in-bits='64' id='type-id-1438'>
+ <parameter type-id='type-id-335'/>
+ <parameter type-id='type-id-333'/>
+@@ -10859,6 +10960,15 @@
+ <parameter type-id='type-id-1360'/>
+ <return type-id='type-id-1027'/>
+ </function-type>
++ <function-type size-in-bits='64' id='type-id-1445'>
++ <parameter type-id='type-id-335'/>
++ <parameter type-id='type-id-279'/>
++ <parameter type-id='type-id-1093'/>
++ <parameter type-id='type-id-24'/>
++ <parameter type-id='type-id-333'/>
++ <parameter type-id='type-id-176'/>
++ <return type-id='type-id-1027'/>
++ </function-type>
+ <function-type size-in-bits='64' id='type-id-1446'>
+ <parameter type-id='type-id-335'/>
+ <parameter type-id='type-id-1360'/>
+@@ -10885,11 +10995,44 @@
+ <parameter type-id='type-id-113'/>
+ <return type-id='type-id-1027'/>
+ </function-type>
++ <function-type size-in-bits='64' id='type-id-1449'>
++ <parameter type-id='type-id-1343'/>
++ <parameter type-id='type-id-24'/>
++ <parameter type-id='type-id-176'/>
++ <parameter type-id='type-id-333'/>
++ <return type-id='type-id-1027'/>
++ </function-type>
+ <function-type size-in-bits='64' id='type-id-1450'>
+ <parameter type-id='type-id-1347'/>
+ <parameter type-id='type-id-1339'/>
+ <return type-id='type-id-1027'/>
+ </function-type>
++ <function-type size-in-bits='64' id='type-id-1451'>
++ <parameter type-id='type-id-279'/>
++ <parameter type-id='type-id-1088'/>
++ <parameter type-id='type-id-24'/>
++ <return type-id='type-id-1027'/>
++ </function-type>
++ <function-type size-in-bits='64' id='type-id-1452'>
++ <parameter type-id='type-id-279'/>
++ <parameter type-id='type-id-1088'/>
++ <parameter type-id='type-id-165'/>
++ <parameter type-id='type-id-176'/>
++ <return type-id='type-id-1027'/>
++ </function-type>
++ <function-type size-in-bits='64' id='type-id-1453'>
++ <parameter type-id='type-id-790'/>
++ <parameter type-id='type-id-1369'/>
++ <parameter type-id='type-id-24'/>
++ <return type-id='type-id-1027'/>
++ </function-type>
++ <function-type size-in-bits='64' id='type-id-1454'>
++ <parameter type-id='type-id-790'/>
++ <parameter type-id='type-id-1369'/>
++ <parameter type-id='type-id-165'/>
++ <parameter type-id='type-id-176'/>
++ <return type-id='type-id-1027'/>
++ </function-type>
+ <function-type size-in-bits='64' id='type-id-1455'>
+ <parameter type-id='type-id-387'/>
+ <parameter type-id='type-id-335'/>
+@@ -10923,6 +11066,18 @@
+ <parameter type-id='type-id-261'/>
+ <return type-id='type-id-104'/>
+ </function-type>
++ <function-type size-in-bits='64' id='type-id-1460'>
++ <parameter type-id='type-id-279'/>
++ <parameter type-id='type-id-1088'/>
++ <parameter type-id='type-id-53'/>
++ <return type-id='type-id-332'/>
++ </function-type>
++ <function-type size-in-bits='64' id='type-id-1461'>
++ <parameter type-id='type-id-279'/>
++ <parameter type-id='type-id-1093'/>
++ <parameter type-id='type-id-53'/>
++ <return type-id='type-id-332'/>
++ </function-type>
+ <function-type size-in-bits='64' id='type-id-1462'>
+ <parameter type-id='type-id-1476'/>
+ <return type-id='type-id-718'/>
+@@ -10936,6 +11091,14 @@
+ <parameter type-id='type-id-1402'/>
+ <return type-id='type-id-113'/>
+ </function-type>
++ <function-type size-in-bits='64' id='type-id-1468'>
++ <parameter type-id='type-id-335'/>
++ <parameter type-id='type-id-114'/>
++ <parameter type-id='type-id-114'/>
++ <parameter type-id='type-id-114'/>
++ <parameter type-id='type-id-114'/>
++ <return type-id='type-id-114'/>
++ </function-type>
+ <function-type size-in-bits='64' id='type-id-1469'>
+ <parameter type-id='type-id-1410'/>
+ <parameter type-id='type-id-1409'/>
+@@ -10949,6 +11112,10 @@
+ <parameter type-id='type-id-1379'/>
+ <return type-id='type-id-841'/>
+ </function-type>
++ <function-type size-in-bits='64' id='type-id-1477'>
++ <parameter type-id='type-id-899'/>
++ <return type-id='type-id-1538'/>
++ </function-type>
+ <function-type size-in-bits='64' id='type-id-1478'>
+ <parameter type-id='type-id-308'/>
+ <return type-id='type-id-1538'/>
+@@ -11075,12 +11242,26 @@
+ <parameter type-id='type-id-53'/>
+ <return type-id='type-id-1538'/>
+ </function-type>
++ <function-type size-in-bits='64' id='type-id-1501'>
++ <parameter type-id='type-id-1343'/>
++ <return type-id='type-id-1538'/>
++ </function-type>
+ <function-type size-in-bits='64' id='type-id-1502'>
+ <parameter type-id='type-id-1347'/>
+ <parameter type-id='type-id-67'/>
+ <parameter type-id='type-id-67'/>
+ <return type-id='type-id-1538'/>
+ </function-type>
++ <function-type size-in-bits='64' id='type-id-1503'>
++ <parameter type-id='type-id-279'/>
++ <return type-id='type-id-1538'/>
++ </function-type>
++ <function-type size-in-bits='64' id='type-id-1504'>
++ <parameter type-id='type-id-279'/>
++ <parameter type-id='type-id-1356'/>
++ <parameter type-id='type-id-1346'/>
++ <return type-id='type-id-1538'/>
++ </function-type>
+ <function-type size-in-bits='64' id='type-id-1505'>
+ <parameter type-id='type-id-1357'/>
+ <return type-id='type-id-1538'/>
+@@ -11124,6 +11305,15 @@
+ <parameter type-id='type-id-75'/>
+ <return type-id='type-id-1538'/>
+ </function-type>
++ <function-type size-in-bits='64' id='type-id-1514'>
++ <parameter type-id='type-id-274'/>
++ <return type-id='type-id-1538'/>
++ </function-type>
++ <function-type size-in-bits='64' id='type-id-1515'>
++ <parameter type-id='type-id-274'/>
++ <parameter type-id='type-id-165'/>
++ <return type-id='type-id-1538'/>
++ </function-type>
+ <function-type size-in-bits='64' id='type-id-1516'>
+ <parameter type-id='type-id-139'/>
+ <return type-id='type-id-1538'/>
+@@ -11192,10 +11382,19 @@
+ <parameter type-id='type-id-335'/>
+ <return type-id='type-id-1538'/>
+ </function-type>
++ <function-type size-in-bits='64' id='type-id-1528'>
++ <parameter type-id='type-id-577'/>
++ <parameter type-id='type-id-127'/>
++ <return type-id='type-id-1538'/>
++ </function-type>
+ <function-type size-in-bits='64' id='type-id-1529'>
+ <parameter type-id='type-id-241'/>
+ <return type-id='type-id-1538'/>
+ </function-type>
++ <function-type size-in-bits='64' id='type-id-1530'>
++ <parameter type-id='type-id-1418'/>
++ <return type-id='type-id-1538'/>
++ </function-type>
+ <function-type size-in-bits='64' id='type-id-1531'>
+ <parameter type-id='type-id-399'/>
+ <return type-id='type-id-1538'/>
+@@ -11210,6 +11409,10 @@
+ <parameter type-id='type-id-114'/>
+ <return type-id='type-id-1538'/>
+ </function-type>
++ <function-type size-in-bits='64' id='type-id-1534'>
++ <parameter type-id='type-id-127'/>
++ <return type-id='type-id-1538'/>
++ </function-type>
+ <function-type size-in-bits='64' id='type-id-1535'>
+ <parameter type-id='type-id-127'/>
+ <parameter type-id='type-id-1204'/>
+@@ -11224,6 +11427,9 @@
+ <parameter type-id='type-id-1550'/>
+ <return type-id='type-id-1538'/>
+ </function-type>
++ <function-type size-in-bits='64' id='type-id-1539'>
++ <return type-id='type-id-127'/>
++ </function-type>
+ <function-type size-in-bits='64' id='type-id-1540'>
+ <parameter type-id='type-id-515'/>
+ <parameter type-id='type-id-1123'/>
+@@ -11241,223 +11447,6 @@
+ <parameter type-id='type-id-114'/>
+ <return type-id='type-id-127'/>
+ </function-type>
+- <function-type size-in-bits='64' id='type-id-1547'>
+- <parameter type-id='type-id-127'/>
+- <return type-id='type-id-127'/>
+- </function-type>
+- <type-decl name='void' id='type-id-1538'/>
+- <function-type size-in-bits='64' id='type-id-1112'>
+- <parameter type-id='type-id-614'/>
+- <parameter type-id='type-id-279'/>
+- <return type-id='type-id-165'/>
+- </function-type>
+- <function-type size-in-bits='64' id='type-id-1153'>
+- <parameter type-id='type-id-279'/>
+- <return type-id='type-id-282'/>
+- </function-type>
+- <function-type size-in-bits='64' id='type-id-1198'>
+- <parameter type-id='type-id-538'/>
+- <return type-id='type-id-530'/>
+- </function-type>
+- <function-type size-in-bits='64' id='type-id-1220'>
+- <return type-id='type-id-53'/>
+- </function-type>
+- <function-type size-in-bits='64' id='type-id-1224'>
+- <parameter type-id='type-id-24'/>
+- <parameter type-id='type-id-1143'/>
+- <return type-id='type-id-53'/>
+- </function-type>
+- <function-type size-in-bits='64' id='type-id-1225'>
+- <parameter type-id='type-id-165'/>
+- <parameter type-id='type-id-1143'/>
+- <return type-id='type-id-53'/>
+- </function-type>
+- <function-type size-in-bits='64' id='type-id-1256'>
+- <parameter type-id='type-id-335'/>
+- <parameter type-id='type-id-279'/>
+- <parameter type-id='type-id-1093'/>
+- <parameter type-id='type-id-125'/>
+- <return type-id='type-id-53'/>
+- </function-type>
+- <function-type size-in-bits='64' id='type-id-1283'>
+- <parameter type-id='type-id-559'/>
+- <return type-id='type-id-53'/>
+- </function-type>
+- <function-type size-in-bits='64' id='type-id-1284'>
+- <parameter type-id='type-id-559'/>
+- <parameter type-id='type-id-165'/>
+- <parameter type-id='type-id-332'/>
+- <return type-id='type-id-53'/>
+- </function-type>
+- <function-type size-in-bits='64' id='type-id-1285'>
+- <parameter type-id='type-id-559'/>
+- <parameter type-id='type-id-559'/>
+- <parameter type-id='type-id-165'/>
+- <return type-id='type-id-53'/>
+- </function-type>
+- <function-type size-in-bits='64' id='type-id-1286'>
+- <parameter type-id='type-id-1343'/>
+- <return type-id='type-id-53'/>
+- </function-type>
+- <function-type size-in-bits='64' id='type-id-1287'>
+- <parameter type-id='type-id-1343'/>
+- <parameter type-id='type-id-125'/>
+- <return type-id='type-id-53'/>
+- </function-type>
+- <function-type size-in-bits='64' id='type-id-1290'>
+- <parameter type-id='type-id-614'/>
+- <parameter type-id='type-id-279'/>
+- <return type-id='type-id-53'/>
+- </function-type>
+- <function-type size-in-bits='64' id='type-id-1292'>
+- <parameter type-id='type-id-614'/>
+- <parameter type-id='type-id-279'/>
+- <parameter type-id='type-id-1350'/>
+- <return type-id='type-id-53'/>
+- </function-type>
+- <function-type size-in-bits='64' id='type-id-1305'>
+- <parameter type-id='type-id-274'/>
+- <return type-id='type-id-53'/>
+- </function-type>
+- <function-type size-in-bits='64' id='type-id-1314'>
+- <parameter type-id='type-id-577'/>
+- <parameter type-id='type-id-559'/>
+- <parameter type-id='type-id-557'/>
+- <return type-id='type-id-53'/>
+- </function-type>
+- <function-type size-in-bits='64' id='type-id-1315'>
+- <parameter type-id='type-id-577'/>
+- <parameter type-id='type-id-557'/>
+- <return type-id='type-id-53'/>
+- </function-type>
+- <function-type size-in-bits='64' id='type-id-1316'>
+- <parameter type-id='type-id-577'/>
+- <parameter type-id='type-id-127'/>
+- <return type-id='type-id-53'/>
+- </function-type>
+- <function-type size-in-bits='64' id='type-id-1363'>
+- <parameter type-id='type-id-1398'/>
+- <return type-id='type-id-67'/>
+- </function-type>
+- <function-type size-in-bits='64' id='type-id-1427'>
+- <parameter type-id='type-id-1343'/>
+- <parameter type-id='type-id-1384'/>
+- <return type-id='type-id-1085'/>
+- </function-type>
+- <function-type size-in-bits='64' id='type-id-1428'>
+- <return type-id='type-id-172'/>
+- </function-type>
+- <function-type size-in-bits='64' id='type-id-1437'>
+- <return type-id='type-id-533'/>
+- </function-type>
+- <function-type size-in-bits='64' id='type-id-1445'>
+- <parameter type-id='type-id-335'/>
+- <parameter type-id='type-id-279'/>
+- <parameter type-id='type-id-1093'/>
+- <parameter type-id='type-id-24'/>
+- <parameter type-id='type-id-333'/>
+- <parameter type-id='type-id-176'/>
+- <return type-id='type-id-1027'/>
+- </function-type>
+- <function-type size-in-bits='64' id='type-id-1449'>
+- <parameter type-id='type-id-1343'/>
+- <parameter type-id='type-id-24'/>
+- <parameter type-id='type-id-176'/>
+- <parameter type-id='type-id-333'/>
+- <return type-id='type-id-1027'/>
+- </function-type>
+- <function-type size-in-bits='64' id='type-id-1451'>
+- <parameter type-id='type-id-279'/>
+- <parameter type-id='type-id-1088'/>
+- <parameter type-id='type-id-24'/>
+- <return type-id='type-id-1027'/>
+- </function-type>
+- <function-type size-in-bits='64' id='type-id-1452'>
+- <parameter type-id='type-id-279'/>
+- <parameter type-id='type-id-1088'/>
+- <parameter type-id='type-id-165'/>
+- <parameter type-id='type-id-176'/>
+- <return type-id='type-id-1027'/>
+- </function-type>
+- <function-type size-in-bits='64' id='type-id-1453'>
+- <parameter type-id='type-id-790'/>
+- <parameter type-id='type-id-1369'/>
+- <parameter type-id='type-id-24'/>
+- <return type-id='type-id-1027'/>
+- </function-type>
+- <function-type size-in-bits='64' id='type-id-1454'>
+- <parameter type-id='type-id-790'/>
+- <parameter type-id='type-id-1369'/>
+- <parameter type-id='type-id-165'/>
+- <parameter type-id='type-id-176'/>
+- <return type-id='type-id-1027'/>
+- </function-type>
+- <function-type size-in-bits='64' id='type-id-1460'>
+- <parameter type-id='type-id-279'/>
+- <parameter type-id='type-id-1088'/>
+- <parameter type-id='type-id-53'/>
+- <return type-id='type-id-332'/>
+- </function-type>
+- <function-type size-in-bits='64' id='type-id-1461'>
+- <parameter type-id='type-id-279'/>
+- <parameter type-id='type-id-1093'/>
+- <parameter type-id='type-id-53'/>
+- <return type-id='type-id-332'/>
+- </function-type>
+- <function-type size-in-bits='64' id='type-id-1468'>
+- <parameter type-id='type-id-335'/>
+- <parameter type-id='type-id-114'/>
+- <parameter type-id='type-id-114'/>
+- <parameter type-id='type-id-114'/>
+- <parameter type-id='type-id-114'/>
+- <return type-id='type-id-114'/>
+- </function-type>
+- <function-type size-in-bits='64' id='type-id-1073'>
+- <return type-id='type-id-1538'/>
+- </function-type>
+- <function-type size-in-bits='64' id='type-id-1477'>
+- <parameter type-id='type-id-899'/>
+- <return type-id='type-id-1538'/>
+- </function-type>
+- <function-type size-in-bits='64' id='type-id-1501'>
+- <parameter type-id='type-id-1343'/>
+- <return type-id='type-id-1538'/>
+- </function-type>
+- <function-type size-in-bits='64' id='type-id-1503'>
+- <parameter type-id='type-id-279'/>
+- <return type-id='type-id-1538'/>
+- </function-type>
+- <function-type size-in-bits='64' id='type-id-1504'>
+- <parameter type-id='type-id-279'/>
+- <parameter type-id='type-id-1356'/>
+- <parameter type-id='type-id-1346'/>
+- <return type-id='type-id-1538'/>
+- </function-type>
+- <function-type size-in-bits='64' id='type-id-1514'>
+- <parameter type-id='type-id-274'/>
+- <return type-id='type-id-1538'/>
+- </function-type>
+- <function-type size-in-bits='64' id='type-id-1515'>
+- <parameter type-id='type-id-274'/>
+- <parameter type-id='type-id-165'/>
+- <return type-id='type-id-1538'/>
+- </function-type>
+- <function-type size-in-bits='64' id='type-id-1528'>
+- <parameter type-id='type-id-577'/>
+- <parameter type-id='type-id-127'/>
+- <return type-id='type-id-1538'/>
+- </function-type>
+- <function-type size-in-bits='64' id='type-id-1530'>
+- <parameter type-id='type-id-1418'/>
+- <return type-id='type-id-1538'/>
+- </function-type>
+- <function-type size-in-bits='64' id='type-id-1534'>
+- <parameter type-id='type-id-127'/>
+- <return type-id='type-id-1538'/>
+- </function-type>
+- <function-type size-in-bits='64' id='type-id-1539'>
+- <return type-id='type-id-127'/>
+- </function-type>
+ <function-type size-in-bits='64' id='type-id-1543'>
+ <parameter type-id='type-id-279'/>
+ <return type-id='type-id-127'/>
+@@ -11477,48 +11466,19 @@
+ <parameter type-id='type-id-1412'/>
+ <return type-id='type-id-127'/>
+ </function-type>
++ <function-type size-in-bits='64' id='type-id-1547'>
++ <parameter type-id='type-id-127'/>
++ <return type-id='type-id-127'/>
++ </function-type>
++ <type-decl name='void' id='type-id-1538'/>
++ <function-type size-in-bits='64' id='type-id-1220'>
++ <return type-id='type-id-53'/>
++ </function-type>
++ <function-type size-in-bits='64' id='type-id-1073'>
++ <return type-id='type-id-1538'/>
++ </function-type>
+ </abi-instr>
+ <abi-instr address-size='64' path='drivers/mmc/host/sdhci.mod.c' comp-dir-path='/ws/android/kernel/aosp/common-mainline/out/android-mainline/common' language='LANG_C89'>
+- <class-decl name='anon_vma' is-struct='yes' visibility='default' is-declaration-only='yes' id='type-id-1555'/>
+- <class-decl name='audit_context' is-struct='yes' visibility='default' is-declaration-only='yes' id='type-id-1556'/>
+- <class-decl name='backing_dev_info' is-struct='yes' visibility='default' is-declaration-only='yes' id='type-id-1557'/>
+- <class-decl name='bio_list' is-struct='yes' visibility='default' is-declaration-only='yes' id='type-id-1558'/>
+- <class-decl name='blk_plug' is-struct='yes' visibility='default' is-declaration-only='yes' id='type-id-1559'/>
+- <class-decl name='capture_control' is-struct='yes' visibility='default' is-declaration-only='yes' id='type-id-1560'/>
+- <class-decl name='cfs_rq' is-struct='yes' visibility='default' is-declaration-only='yes' id='type-id-1561'/>
+- <class-decl name='files_struct' is-struct='yes' visibility='default' is-declaration-only='yes' id='type-id-1562'/>
+- <class-decl name='fs_struct' is-struct='yes' visibility='default' is-declaration-only='yes' id='type-id-1563'/>
+- <class-decl name='ftrace_ret_stack' is-struct='yes' visibility='default' is-declaration-only='yes' id='type-id-1564'/>
+- <class-decl name='kernfs_iattrs' is-struct='yes' visibility='default' is-declaration-only='yes' id='type-id-1565'/>
+- <class-decl name='kernfs_open_node' is-struct='yes' visibility='default' is-declaration-only='yes' id='type-id-1566'/>
+- <class-decl name='kioctx_table' is-struct='yes' visibility='default' is-declaration-only='yes' id='type-id-1567'/>
+- <class-decl name='kmem_cache' is-struct='yes' visibility='default' is-declaration-only='yes' id='type-id-1568'/>
+- <class-decl name='linux_binfmt' is-struct='yes' visibility='default' is-declaration-only='yes' id='type-id-1569'/>
+- <class-decl name='mem_cgroup' is-struct='yes' visibility='default' is-declaration-only='yes' id='type-id-1570'/>
+- <class-decl name='module_notes_attrs' is-struct='yes' visibility='default' is-declaration-only='yes' id='type-id-1571'/>
+- <class-decl name='module_param_attrs' is-struct='yes' visibility='default' is-declaration-only='yes' id='type-id-1572'/>
+- <class-decl name='module_sect_attrs' is-struct='yes' visibility='default' is-declaration-only='yes' id='type-id-1573'/>
+- <class-decl name='nameidata' is-struct='yes' visibility='default' is-declaration-only='yes' id='type-id-1574'/>
+- <class-decl name='perf_event' is-struct='yes' visibility='default' is-declaration-only='yes' id='type-id-1575'/>
+- <class-decl name='pipe_inode_info' is-struct='yes' visibility='default' is-declaration-only='yes' id='type-id-1576'/>
+- <class-decl name='poll_table_struct' is-struct='yes' visibility='default' is-declaration-only='yes' id='type-id-1577'/>
+- <class-decl name='pollfd' is-struct='yes' visibility='default' is-declaration-only='yes' id='type-id-1578'/>
+- <class-decl name='rcu_node' is-struct='yes' visibility='default' is-declaration-only='yes' id='type-id-1579'/>
+- <class-decl name='reclaim_state' is-struct='yes' visibility='default' is-declaration-only='yes' id='type-id-1580'/>
+- <class-decl name='request_queue' is-struct='yes' visibility='default' is-declaration-only='yes' id='type-id-1581'/>
+- <class-decl name='rt_mutex_waiter' is-struct='yes' visibility='default' is-declaration-only='yes' id='type-id-1582'/>
+- <class-decl name='rt_rq' is-struct='yes' visibility='default' is-declaration-only='yes' id='type-id-1583'/>
+- <class-decl name='sched_class' is-struct='yes' visibility='default' is-declaration-only='yes' id='type-id-1584'/>
+- <class-decl name='seccomp_filter' is-struct='yes' visibility='default' is-declaration-only='yes' id='type-id-1585'/>
+- <class-decl name='seq_file' is-struct='yes' visibility='default' is-declaration-only='yes' id='type-id-1586'/>
+- <class-decl name='sock' is-struct='yes' visibility='default' is-declaration-only='yes' id='type-id-1587'/>
+- <class-decl name='task_group' is-struct='yes' visibility='default' is-declaration-only='yes' id='type-id-1588'/>
+- <class-decl name='trace_eval_map' is-struct='yes' visibility='default' is-declaration-only='yes' id='type-id-1589'/>
+- <class-decl name='trace_event_call' is-struct='yes' visibility='default' is-declaration-only='yes' id='type-id-1590'/>
+- <class-decl name='uprobe' is-struct='yes' visibility='default' is-declaration-only='yes' id='type-id-1591'/>
+- <class-decl name='user_namespace' is-struct='yes' visibility='default' is-declaration-only='yes' id='type-id-1592'/>
+- <class-decl name='workqueue_struct' is-struct='yes' visibility='default' is-declaration-only='yes' id='type-id-1593'/>
+- <class-decl name='xol_area' is-struct='yes' visibility='default' is-declaration-only='yes' id='type-id-1594'/>
+ <var-decl name='__this_module' type-id='type-id-789' mangled-name='__this_module' visibility='default' filepath='/ws/android/kernel/aosp/common-mainline/out/android-mainline/common/drivers/mmc/host/sdhci.mod.c' line='11' column='1' elf-symbol-id='__this_module'/>
+ </abi-instr>
+ </abi-corpus>
+ABIs differ:
+[...]/source-libabigail/tests/data/test-read-dwarf/PR25007-sdhci.ko.abi
+and:
+[...]/build-libabigail/tests/output/test-read-dwarf/PR25007-sdhci.ko.abi
+
+FAIL runtestreaddwarf (exit status: 1)
Only that one test case.
The reordered 'function-type's -- but I've not yet verified whether
they're really just reordered -- may hint towards a sorting stability
issue, but there are also the disappearing 'class-decl's.
Unless somebody points out any misunderstanding on my side, I suppose I
shall try to figure out what's going wrong.
Grüße
Thomas
-----------------
Siemens Electronic Design Automation GmbH; Anschrift: Arnulfstraße 201, 80634 München; Gesellschaft mit beschränkter Haftung; Geschäftsführer: Thomas Heurung, Frank Thürauf; Sitz der Gesellschaft: München; Registergericht München, HRB 106955
More information about the Libabigail
mailing list