public inbox for libabigail@sourceware.org
 help / color / mirror / Atom feed
From: Dodji Seketeli <dodji@seketeli.org>
To: Thomas Schwinge <thomas@codesourcery.com>
Cc: <libabigail@sourceware.org>,  Mark Wielaard <mark@klomp.org>
Subject: Re: 'src/abg-dwarf-reader.cc:compare_dies_string_attribute_value' optimization
Date: Mon, 20 Jun 2022 18:12:31 +0200	[thread overview]
Message-ID: <87edzjgvps.fsf@seketeli.org> (raw)
In-Reply-To: <87wnijv616.fsf@dirichlet.schwinge.homeip.net> (Thomas Schwinge's message of "Fri, 28 Jan 2022 23:39:49 +0100")

Hello Thomas et al.,

I have finally applied a fix for this issue that you reported.

It can be read at https://sourceware.org/git/?p=libabigail.git;a=commit;h=0529e3b9ee09c29137952b3a5d4a7cc10484649a.

Thanks for reporting this and sorry for the inconvenience.

Cheers,

Thomas Schwinge <thomas@codesourcery.com> a écrit:

> 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

-- 
		Dodji

  parent reply	other threads:[~2022-06-20 16:12 UTC|newest]

Thread overview: 12+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-01-28 22:39 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 [this message]
2022-06-22  8:09   ` Ben Woodard

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=87edzjgvps.fsf@seketeli.org \
    --to=dodji@seketeli.org \
    --cc=libabigail@sourceware.org \
    --cc=mark@klomp.org \
    --cc=thomas@codesourcery.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
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).