On Mon, Aug 10, 2015 at 8:27 PM, Bob Friesenhahn
<bfrie...@simple.dallas.tx.us> wrote:
> On Mon, 10 Aug 2015, Jakub Wilk wrote:
>>> Perhaps this issue is due to g++ defaulting to a newer version of the C++
>>> standard and thus it requires a new C++ ABI?
>> I don't think so. I'd rather blame:
>>
>> * Test build with QuantumDepth 16 (closes: #557879).
>>
>> But wait, isn't change of QuantumDepth an ABI breakage?
>> SONAME of the non-C++ library didn't change; it's still
>> /usr/lib/libGraphicsMagick.so.3.
 As I know it's only an internal precision change, but doesn't affect
any method or function.

> If --enable-quantum-library-names was used as an option to the configure
> script, then the shared library name would become like
> libGraphicsMagick-Q16.so so the whole run-time library name is different.
 It was not used. Should I add this? It seems it would cause more
trouble than win.

> If the QuantumDepth 8 build did not use this option, then it would be named
> as before and existing apps (compiled with QuantumDepth 8) should work with
> it.  This allows the libraries to co-exist.
 It seems you also write that the quantum depth change shouldn't be a
problem for applications.

> The package used for development needs to specify if it is for Q8 or Q16
> since (barring other factors), it is only possible to develop for one at a
> time.
 As I know, GraphicsMagick will use roughly double the memory during
image processing with the latter, but that's what the user can see
(and that the output quality is better). Am I right?

> Regardless, if GCC 5.X is now being used (is this the case?), I would
> suspect that the C++ default ABI (and libraries) have changed (to C++ 11)
> and this results in different name mangling.  Note that the linker did find
> the library but not the method.
 Yes, it's now compiled with GCC 5.2.x and the name mangling is
changed for the C++ library. There are known regressions[1] between
v4.9 and v5 , but I don't know too much details.
While you are right in #795099 that the two libgraphicsmagick++
libraries are co-installable, but I fear that the two C++ ABIs would
cause more problems. The reverse dependencies list is small, those can
be re-compiled with the new library version.
But to answer your question, the API for 1.3.21/QuantumDepth16 should
be the same as previously. I attach the symbols change between 1.3.20
and 1.3.21 ; the additions are for WebP image support and two symbols
(RegisterAVIImage, UnregisterAVIImage) are removed. As I see, a
versioned breaks is the only thing I need to add.

Regards,
Laszlo/GCS
[1] 
https://wiki.debian.org/GCC5#libstdc.2B-.2B-_c.2B-.2B-11_incompatibilities_.284.9_and_5.29
--- 1.3.20/debian/libgraphicsmagick3.symbols    2015-02-12 20:08:51.000000000 
+0100
+++ 1.3.21/debian/libgraphicsmagick3.symbols    2015-08-08 17:48:44.521870457 
+0200
@@ -75,6 +75,7 @@
  ChannelThresholdImage@Base 1.3.5
  ChannelTypeToString@Base 1.3.5
  CharcoalImage@Base 1.3.5
+ CheckImagePixelLimits@Base 1.3.21
  ChopImage@Base 1.3.5
  ClassTypeToString@Base 1.3.5
  ClipImage@Base 1.3.5
@@ -504,6 +505,7 @@
  LockSemaphoreInfo@Base 1.3.5
  LogMagickEvent@Base 1.3.5
  LogMagickEventList@Base 1.3.5
+ LogPALMHeader@Base 1.3.21
  MSBOrderLong@Base 1.3.5
  MSBOrderShort@Base 1.3.5
  MagickAllocFunctions@Base 1.3.5
@@ -570,6 +572,7 @@
  MagickSetFileSystemBlockSize@Base 1.3.8
  MagickSizeStrToInt64@Base 1.3.5
  MagickSpawnVP@Base 1.3.5
+ MagickStripSpacesFromString@Base 1.3.21
  MagickStrlCat@Base 1.3.5
  MagickStrlCpy@Base 1.3.5
  MagickStrlCpyTrunc@Base 1.3.5
@@ -704,6 +707,7 @@
  PSPageGeometry@Base 1.3.5
  PackbitsEncode2Image@Base 1.3.5
  PackbitsEncodeImage@Base 1.3.5
+ PanicDestroyMagick@Base 1.3.21
  PersistCache@Base 1.3.5
  PingBlob@Base 1.3.5
  PingImage@Base 1.3.5
@@ -719,6 +723,7 @@
  PrependImageToList@Base 1.3.5
  ProfileImage@Base 1.3.5
  PurgeTemporaryFiles@Base 1.3.15
+ PurgeTemporaryFilesAsyncSafe@Base 1.3.21
  PushImagePixels@Base 1.3.5
  QuantizeImage@Base 1.3.5
  QuantizeImages@Base 1.3.5
@@ -764,7 +769,6 @@
  ReferenceCache@Base 1.3.5
  ReferenceImage@Base 1.3.5
  RegisterARTImage@Base 1.3.5
- RegisterAVIImage@Base 1.3.5
  RegisterAVSImage@Base 1.3.5
  RegisterBMPImage@Base 1.3.5
  RegisterCALSImage@Base 1.3.8
@@ -852,6 +856,7 @@
  RegisterVIDImage@Base 1.3.5
  RegisterVIFFImage@Base 1.3.5
  RegisterWBMPImage@Base 1.3.5
+ RegisterWEBPImage@Base 1.3.21
  RegisterWMFImage@Base 1.3.5
  RegisterWPGImage@Base 1.3.5
  RegisterXBMImage@Base 1.3.5
@@ -899,6 +904,7 @@
  SetImageColor@Base 1.3.15
  SetImageColorRegion@Base 1.3.15
  SetImageDepth@Base 1.3.5
+ SetImageEx@Base 1.3.21
  SetImageInfo@Base 1.3.5
  SetImageOpacity@Base 1.3.5
  SetImagePixels@Base 1.3.5
@@ -982,7 +988,6 @@
  UnlockSemaphoreInfo@Base 1.3.5
  UnmapBlob@Base 1.3.5
  UnregisterARTImage@Base 1.3.5
- UnregisterAVIImage@Base 1.3.5
  UnregisterAVSImage@Base 1.3.5
  UnregisterBMPImage@Base 1.3.5
  UnregisterCALSImage@Base 1.3.8
@@ -1070,6 +1075,7 @@
  UnregisterVIDImage@Base 1.3.5
  UnregisterVIFFImage@Base 1.3.5
  UnregisterWBMPImage@Base 1.3.5
+ UnregisterWEBPImage@Base 1.3.21
  UnregisterWMFImage@Base 1.3.5
  UnregisterWPGImage@Base 1.3.5
  UnregisterXBMImage@Base 1.3.5

Reply via email to