From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 79368 invoked by alias); 25 Mar 2015 10:10:26 -0000 Mailing-List: contact libabigail-help@sourceware.org; run by ezmlm Precedence: bulk List-Post: List-Help: List-Subscribe: Sender: libabigail-owner@sourceware.org Received: (qmail 79342 invoked by uid 89); 25 Mar 2015 10:10:23 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Checked: by ClamAV 0.98.6 on sourceware.org X-Virus-Found: No X-Spam-SWARE-Status: No, score=-2.2 required=5.0 tests=AWL,BAYES_00,SPF_HELO_PASS,T_HDRS_LCASE,T_MANY_HDRS_LCASE,T_RP_MATCHES_RCVD autolearn=ham version=3.3.2 X-Spam-Status: No, score=-2.2 required=5.0 tests=AWL,BAYES_00,SPF_HELO_PASS,T_HDRS_LCASE,T_MANY_HDRS_LCASE,T_RP_MATCHES_RCVD autolearn=ham version=3.3.2 X-Spam-Checker-Version: SpamAssassin 3.3.2 (2011-06-06) on sourceware.org X-Spam-Level: X-HELO: mailout2.w1.samsung.com X-AuditID: cbfec7f5-b7fc86d0000066b7-a4-551289893e79 Message-id: <55128989.9060700@partner.samsung.com> Date: Thu, 01 Jan 2015 00:00:00 -0000 From: Maxim Ostapenko User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:31.0) Gecko/20100101 Thunderbird/31.5.0 MIME-version: 1.0 To: libabigail@sourceware.org, Dodji Seketeli Cc: Yury Gribov , Pavel Kopyl Subject: Abidiff caveats questions. Content-type: text/plain; charset=utf-8; format=flowed Content-transfer-encoding: 7bit X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFupmluLIzCtJLcpLzFFi42I5/e/4Fd3OTqFQg5+/JCx2rN/MZjFpfabF 3/fr2S0OfV7M5MDi8X7fVTaPvi2rGD22/3YLYI7isklJzcksSy3St0vgytj7bQ9TwSupir/T 17A3MHYJdTFyckgImEg8vbeIDcIWk7hwbz2QzcUhJLCUUeL8z1dQzidGiUl931hBqngFjCR+ X1nADGKzCKhKnHxwngnEZhMwl5ixehF7FyMHh6hAhMTty5wQ5YISPybfYwGxRQQcJN69aARb xizgKbF2yiuwVmEBZYm1czqh4mYSX14eZoWw5SU2r3nLPIGRbxaSUbOQlM1CUraAkXkVo2hq aXJBcVJ6rpFecWJucWleul5yfu4mRkgAft3BuPSY1SFGAQ5GJR7eCCWhUCHWxLLiytxDjBIc zEoivD3NQCHelMTKqtSi/Pii0pzU4kOMTBycUg2MpyyNN5imfXuaZKZSurvK3fIRp1vqjWP6 OlP8lhSU8OXPu5Qc9cAlQqFqWU8uz/z43f/cXsTF7iv74/9mdYCl0L/PvlN7K1kvmP9K3yq/ PN5qR0URS+H2+Wt/hnxaPmMi66dFZxbmRrR21P5JknNgTt0n8E2R94bY8pr9Z/fvufFA8XS+ 4fJCJZbijERDLeai4kQAZYOGlh4CAAA= X-SW-Source: 2015-q1/txt/msg00023.txt.bz2 Hi Dodji, I found abidiff tool to be very useful, thank you! But it has some limitations and I would like to ask a few questions, is this a correct place to do it? 1) Abidiff works great with different versions of one shared library (I used glibc 2.20 and glibc 2.18), but it was confused when I tried to compare libc-2.20.so with libtirpc.so to find ABI incompatibilities between Glibc and Libtirpc RPC implementations. Since Glibc has versioned symbols (for example authunix_create@@GLIBC_2.2.5) and Libtirpc has non-versioned ones (authunix_create), abidiff confuses to compare them (and their parameters types), so we have no detailed information about changes happened, only that first symbol was deleted and second was added. I think this usecase is not widely spread, but is there any way abidiff could resolve this issue (perhaps resolve versioned symbol somehow)? 2) I tried the second example from abidiff manual (https://sourceware.org/libabigail/manual/abidiff.html) with the small change: I've made function foo inline. Abidiff didn't detected any ABI changes that is expected, because G++ didn't generate corresponding symbol in .dynsym section: $ cat -n test-v0.cc 1 // Compile this with: 2 // g++ -g -Wall -shared -o libtest-v0.so test-v0.cc 3 4 struct S0 5 { 6 int m0; 7 }; 8 9 inline void 10 foo(S0& /*parameter_name*/) 11 { 12 // do something with parameter_name. 13 } $ $ cat -n test-v1.cc 1 // Compile this with: 2 // g++ -g -Wall -shared -o libtest-v1.so test-v1.cc 3 4 struct S0 5 { 6 char inserted_member; 7 int m0; 8 }; 9 10 inline void 11 foo(S0& /*parameter_name*/) 12 { 13 // do something with parameter_name. 14 } $ g++ -g -Wall -shared -o libtest-v0.so test-v0.cc $ g++ -g -Wall -shared -o libtest-v1.so test-v1.cc $ $ ../build/tools/abidiff libtest-v0.so libtest-v1.so $ $ readelf -s libtest-v0.so Symbol table '.dynsym' contains 12 entries: Num: Value Size Type Bind Vis Ndx Name 0: 0000000000000000 0 NOTYPE LOCAL DEFAULT UND 1: 0000000000000490 0 SECTION LOCAL DEFAULT 7 2: 0000000000000000 0 NOTYPE WEAK DEFAULT UND __cxa_finalize 3: 0000000000000000 0 NOTYPE WEAK DEFAULT UND _ITM_registerTMCloneTable 4: 0000000000000000 0 NOTYPE WEAK DEFAULT UND _ITM_deregisterTMCloneTab 5: 0000000000000000 0 NOTYPE WEAK DEFAULT UND _Jv_RegisterClasses 6: 0000000000000000 0 NOTYPE WEAK DEFAULT UND __gmon_start__ 7: 0000000000201030 0 NOTYPE GLOBAL DEFAULT 18 _edata 8: 0000000000201038 0 NOTYPE GLOBAL DEFAULT 19 _end 9: 0000000000000490 0 FUNC GLOBAL DEFAULT 7 _init 10: 0000000000201030 0 NOTYPE GLOBAL DEFAULT 19 __bss_start 11: 00000000000005c8 0 FUNC GLOBAL DEFAULT 10 _fini Perhaps abidiff documentation should point out that users shouldn't expect much, if they use inline functions widely? Thank you, Maxim