Hi, On 28/08/17 13:58, Mattia Rizzolo wrote: > On Sun, 27 Aug 2017, 8:37 p.m. Anton Gladky <gl...@debian.org> wrote: > >> Hi Mattia, >> >> thanks for the tip! I have recompiled both libs with the same >> current gcc-7.2. And it looks like there are no dropped symbols >> (see file old-gcc7_new-gcc7.diff in attachment). >> >> But if I compare new so-file with the one shipped with Stretch >> (compiled with gcc6) >> the diff contains some missing symbols (see file old-gcc6_new-gcc7.diff). >> > > Oh! That's interesting... > > What is the best practice for such kind of libs? Provide symbol-files? > > Not sure. I'd suggest to try to ask to -mentors@ or -devel@, or perhaps to > James Cowgirl (CCed now) who helped with gcc-7 related stuff :)
These appear to be the 4 symbols which have disappeared after compiling with GCC-7: 469: 00000000000cce10 430 FUNC WEAK DEFAULT 12 _ZNK16CoinPackedMatrix14getVectorFirstEi 614: 00000000000ccfc0 437 FUNC WEAK DEFAULT 12 _ZNK16CoinPackedMatrix13getVectorLastEi 1119: 00000000000fc710 120 FUNC WEAK DEFAULT 12 _Z26presolve_delete_from_majoriiPKiPiS1_Pd 1198: 0000000000043f80 566 FUNC WEAK DEFAULT 12 _Z9CoinFillNItEvPT_iS0_ As you can see all of these symbols are declared as weak. GCC will often do this for inline functions which it has decided not to inline for some reason. To satisfy the ODR, GCC will export all these symbols as weak from any object (including executables) which use them so that the same function is used throughout the entire application. Because consumers are supposed to generate their own versions of these functions, they do not form a part of the ABI and can safely be removed. In this case, GCC-7 simply decided that these functions should be inlined and therefore didn't generate symbols for them. I think it's more likely these ABI issues are caused by changes in the class layout (but I have not investigated this much). You can see a few cases of new fields being added if you diff the headers from the old and new packages. Generally, any issues with symbols would be found by the dynamic linker before an application has a chance to segfault. Thanks, James
signature.asc
Description: OpenPGP digital signature