public inbox for libabigail@sourceware.org
 help / color / mirror / Atom feed
* 'src/abg-dwarf-reader.cc:compare_dies_string_attribute_value' optimization
@ 2022-01-28 22:39 Thomas Schwinge
  2022-01-31 14:38 ` Thomas Schwinge
  2022-06-20 16:12 ` Dodji Seketeli
  0 siblings, 2 replies; 12+ messages in thread
From: Thomas Schwinge @ 2022-01-28 22:39 UTC (permalink / raw)
  To: libabigail; +Cc: Dodji Seketeli, Mark Wielaard

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

^ permalink raw reply	[flat|nested] 12+ messages in thread

end of thread, other threads:[~2022-06-22 13:54 UTC | newest]

Thread overview: 12+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-01-28 22:39 'src/abg-dwarf-reader.cc:compare_dies_string_attribute_value' optimization Thomas Schwinge
2022-01-31 14:38 ` Thomas Schwinge
2022-01-31 15:56   ` Giuliano Procida
2022-04-11 15:18     ` Dodji Seketeli
2022-04-12 15:20       ` Giuliano Procida
2022-04-12 16:16         ` Dodji Seketeli
2022-04-13  2:19           ` Ben Woodard
2022-04-13 18:00             ` Ben Woodard
2022-04-14  9:14             ` Dodji Seketeli
2022-04-18 16:42               ` Ben Woodard
2022-06-20 16:12 ` Dodji Seketeli
2022-06-22  8:09   ` Ben Woodard

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).