[Pkg-phototools-devel] Bug#891272: libraw: FTBFS with glibc 2.27: error: call of overloaded 'powf64(int, int)' is ambiguous

Aurelien Jarno aurel32 at debian.org
Sat Feb 24 00:21:50 UTC 2018


Source: libraw
Version: 0.18.7-2
Severity: important
Tags: patch
User: debian-glibc at lists.debian.org
Usertags: 2.27

libraw 0.18.7-2 fails to build with glibc 2.27 (2.27-0experimental0 from
experimental):

| internal/dcraw_fileio.cpp: In member function 'void LibRaw::apply_profile(const char*, const char*)':
| internal/dcraw_fileio.cpp:192:11: warning: ignoring return value of 'size_t fread(void*, size_t, size_t, FILE*)', declared with attribute warn_unused_result [-Wunused-result]
|      fread (&size, 4, 1, fp);
|      ~~~~~~^~~~~~~~~~~~~~~~~
| internal/dcraw_fileio.cpp:196:11: warning: ignoring return value of 'size_t fread(void*, size_t, size_t, FILE*)', declared with attribute warn_unused_result [-Wunused-result]
|      fread (oprof, 1, size, fp);
|      ~~~~~~^~~~~~~~~~~~~~~~~~~~
| In file included from src/libraw_cxx.cpp:5472:0:
| src/../internal/libraw_x3f.cpp: In function 'void huffman_decode_row(x3f_info_t*, x3f_directory_entry_t*, int, int, int, int*)':
| src/../internal/libraw_x3f.cpp:1404:39: warning: narrowing conversion of 'offset' from 'int' to 'int16_t {aka short int}' inside { } [-Wnarrowing]
|    int16_t c[3] = {offset,offset,offset};
|                                        ^
| src/../internal/libraw_x3f.cpp:1404:39: warning: narrowing conversion of 'offset' from 'int' to 'int16_t {aka short int}' inside { } [-Wnarrowing]
| src/../internal/libraw_x3f.cpp:1404:39: warning: narrowing conversion of 'offset' from 'int' to 'int16_t {aka short int}' inside { } [-Wnarrowing]
| libtool: compile:  g++ -DPACKAGE_NAME=\"LibRaw\" -DPACKAGE_TARNAME=\"libraw\" -DPACKAGE_VERSION=\"0.18.7\" "-DPACKAGE_STRING=\"LibRaw 0.18.7\"" -DPACKAGE_BUGREPORT=\"info at libraw.org\" -DPACKAGE_URL=\"http://www.libraw.org\" -DSTDC_HEADERS=1 -DHAVE_SYS_TYPES_H=1 -DHAVE_SYS_STAT_H=1 -DHAVE_STDLIB_H=1 -DHAVE_STRING_H=1 -DHAVE_MEMORY_H=1 -DHAVE_STRINGS_H=1 -DHAVE_INTTYPES_H=1 -DHAVE_STDINT_H=1 -DHAVE_UNISTD_H=1 -DHAVE_DLFCN_H=1 -DLT_OBJDIR=\".libs/\" -DHAVE_JPEGLIB_H=1 -I. -Wdate-time -D_FORTIFY_SOURCE=2 -DUSE_JPEG -DUSE_JPEG8 -DUSE_LCMS2 -g -O2 -fdebug-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -fopenmp -c src/libraw_c_api.cpp -o src/libraw_c_api.o >/dev/null 2>&1
| internal/dcraw_common.cpp: In member function 'void LibRaw::PentaxLensInfo(unsigned int, unsigned int)':
| internal/dcraw_common.cpp:6830:80: error: call of overloaded 'powf64(int, int)' is ambiguous
|     10*(table_buf[iLensData+9]>>2) * powf64(4, (table_buf[iLensData+9] & 0x03)-2);
|                                                                                 ^
| In file included from /usr/include/c++/7/cmath:45:0,
|                  from /usr/include/c++/7/math.h:36,
|                  from internal/dcraw_common.cpp:22:
| /usr/include/x86_64-linux-gnu/bits/mathcalls.h:140:1: note: candidate: _Float64 powf64(_Float64, _Float64)
|  __MATHCALL_VEC (pow,, (_Mdouble_ __x, _Mdouble_ __y));
|  ^
| internal/dcraw_common.cpp:5852:14: note: candidate: float powf64(float, float)
|  static float powf64(float a, float b)
|               ^~~~~~
| internal/dcraw_common.cpp: In member function 'void LibRaw::process_Sony_0x9050(uchar*, unsigned int)':
| internal/dcraw_common.cpp:7352:88: warning: ISO C++ says that these are ambiguous, even though the worst conversion for the first is better than the worst conversion for the second:
|            my_roundf(powf64(2.0f, ((float)SonySubstitution[buf[0]] / 8.0 - 1.06f) / 2.0f)*10.0f) / 10.0f;
|                                                                                         ^
| In file included from /usr/include/c++/7/cmath:45:0,
|                  from /usr/include/c++/7/math.h:36,
|                  from internal/dcraw_common.cpp:22:
| /usr/include/x86_64-linux-gnu/bits/mathcalls.h:140:1: note: candidate 1: _Float64 powf64(_Float64, _Float64)
|  __MATHCALL_VEC (pow,, (_Mdouble_ __x, _Mdouble_ __y));
|  ^
| internal/dcraw_common.cpp:5852:14: note: candidate 2: float powf64(float, float)
|  static float powf64(float a, float b)
|               ^~~~~~
| internal/dcraw_common.cpp:7356:88: warning: ISO C++ says that these are ambiguous, even though the worst conversion for the first is better than the worst conversion for the second:
|            my_roundf(powf64(2.0f, ((float)SonySubstitution[buf[1]] / 8.0 - 1.06f) / 2.0f)*10.0f) / 10.0f;
|                                                                                         ^
| In file included from /usr/include/c++/7/cmath:45:0,
|                  from /usr/include/c++/7/math.h:36,
|                  from internal/dcraw_common.cpp:22:
| /usr/include/x86_64-linux-gnu/bits/mathcalls.h:140:1: note: candidate 1: _Float64 powf64(_Float64, _Float64)
|  __MATHCALL_VEC (pow,, (_Mdouble_ __x, _Mdouble_ __y));
|  ^
| internal/dcraw_common.cpp:5852:14: note: candidate 2: float powf64(float, float)
|  static float powf64(float a, float b)
|               ^~~~~~
| libtool: compile:  g++ -DPACKAGE_NAME=\"LibRaw\" -DPACKAGE_TARNAME=\"libraw\" -DPACKAGE_VERSION=\"0.18.7\" "-DPACKAGE_STRING=\"LibRaw 0.18.7\"" -DPACKAGE_BUGREPORT=\"info at libraw.org\" -DPACKAGE_URL=\"http://www.libraw.org\" -DSTDC_HEADERS=1 -DHAVE_SYS_TYPES_H=1 -DHAVE_SYS_STAT_H=1 -DHAVE_STDLIB_H=1 -DHAVE_STRING_H=1 -DHAVE_MEMORY_H=1 -DHAVE_STRINGS_H=1 -DHAVE_INTTYPES_H=1 -DHAVE_STDINT_H=1 -DHAVE_UNISTD_H=1 -DHAVE_DLFCN_H=1 -DLT_OBJDIR=\".libs/\" -DHAVE_JPEGLIB_H=1 -I. -Wdate-time -D_FORTIFY_SOURCE=2 -DUSE_JPEG -DUSE_JPEG8 -DUSE_LCMS2 -g -O2 -fdebug-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -fopenmp -c internal/dcraw_fileio.cpp -o internal/dcraw_fileio.o >/dev/null 2>&1
| internal/dcraw_common.cpp: In member function 'void LibRaw::parse_makernote_0xc634(int, int, unsigned int)':
| internal/dcraw_common.cpp:7797:71: warning: ISO C++ says that these are ambiguous, even though the worst conversion for the first is better than the worst conversion for the second:
|            imgdata.lens.makernotes.CurAp = powf64(2.0f, getreal(type)/2);
|                                                                        ^
| In file included from /usr/include/c++/7/cmath:45:0,
|                  from /usr/include/c++/7/math.h:36,
|                  from internal/dcraw_common.cpp:22:
| /usr/include/x86_64-linux-gnu/bits/mathcalls.h:140:1: note: candidate 1: _Float64 powf64(_Float64, _Float64)
|  __MATHCALL_VEC (pow,, (_Mdouble_ __x, _Mdouble_ __y));
|  ^
| internal/dcraw_common.cpp:5852:14: note: candidate 2: float powf64(float, float)
|  static float powf64(float a, float b)
|               ^~~~~~
| internal/dcraw_common.cpp: In member function 'void LibRaw::parse_makernote(int, int)':
| internal/dcraw_common.cpp:8678:71: warning: ISO C++ says that these are ambiguous, even though the worst conversion for the first is better than the worst conversion for the second:
|            imgdata.lens.makernotes.CurAp = powf64(2.0f, getreal(type)/2);

A full build log is available there:
http://aws-logs.debian.net/2018/02/07/glibc-exp/libraw_0.18.7-2_unstable_glibc-exp.log

glibc 2.27 added TS 18661-3 support which adds *f64 and *f32x function
aliases for double functions. This collide with the powf64 declared in
libraw. To avoid that, the attached patch renames it into internal_powf64.
-------------- next part --------------
diff -Nru libraw-0.18.7/debian/patches/powf64.patch libraw-0.18.7/debian/patches/powf64.patch
--- libraw-0.18.7/debian/patches/powf64.patch	1970-01-01 01:00:00.000000000 +0100
+++ libraw-0.18.7/debian/patches/powf64.patch	2018-02-24 01:06:35.000000000 +0100
@@ -0,0 +1,334 @@
+On glibc 2.27 onwards, the powf64 function is defined as part of the
+TS 18661-3 support which adds *f64 and *f32x function aliases for double
+functions. This collide with the powf64 declared in libraw. To avoid
+that, rename it into internal_powf64.
+
+--- a/internal/dcraw_common.cpp
++++ b/internal/dcraw_common.cpp
+@@ -5849,7 +5849,7 @@
+ {
+   return (b>limup || b < -limup)?0.f:powf(a,b);
+ }
+-static float powf64(float a, float b)
++static float internal_powf64(float a, float b)
+ {
+   return powf_lim(a,b,64.f);
+ }
+@@ -5873,7 +5873,7 @@
+ static float _CanonConvertAperture(ushort in)
+ {
+   if ((in == (ushort)0xffe0) || (in == (ushort)0x7fff)) return 0.0f;
+-  return powf64(2.0, in/64.0);
++  return internal_powf64(2.0, in/64.0);
+ }
+ 
+ static float _CanonConvertEV (short in)
+@@ -6336,21 +6336,21 @@
+     if (fabsf(imgdata.lens.makernotes.MinFocal) < 1.1f)
+     {
+       if ((imgdata.lens.nikon.NikonLensType ^ (uchar)0x01) || LensData[i + 2])
+-        imgdata.lens.makernotes.MinFocal = 5.0f * powf64(2.0f, (float)LensData[i + 2] / 24.0f);
++        imgdata.lens.makernotes.MinFocal = 5.0f * internal_powf64(2.0f, (float)LensData[i + 2] / 24.0f);
+       if ((imgdata.lens.nikon.NikonLensType ^ (uchar)0x01) || LensData[i + 3])
+-        imgdata.lens.makernotes.MaxFocal = 5.0f * powf64(2.0f, (float)LensData[i + 3] / 24.0f);
++        imgdata.lens.makernotes.MaxFocal = 5.0f * internal_powf64(2.0f, (float)LensData[i + 3] / 24.0f);
+       if ((imgdata.lens.nikon.NikonLensType ^ (uchar)0x01) || LensData[i + 4])
+-        imgdata.lens.makernotes.MaxAp4MinFocal = powf64(2.0f, (float)LensData[i + 4] / 24.0f);
++        imgdata.lens.makernotes.MaxAp4MinFocal = internal_powf64(2.0f, (float)LensData[i + 4] / 24.0f);
+       if ((imgdata.lens.nikon.NikonLensType ^ (uchar)0x01) || LensData[i + 5])
+-        imgdata.lens.makernotes.MaxAp4MaxFocal = powf64(2.0f, (float)LensData[i + 5] / 24.0f);
++        imgdata.lens.makernotes.MaxAp4MaxFocal = internal_powf64(2.0f, (float)LensData[i + 5] / 24.0f);
+     }
+     imgdata.lens.nikon.NikonMCUVersion = LensData[i + 6];
+     if (i != 2)
+       {
+         if ((LensData[i - 1]) &&
+             (fabsf(imgdata.lens.makernotes.CurFocal) < 1.1f))
+-          imgdata.lens.makernotes.CurFocal = 5.0f * powf64(2.0f, (float)LensData[i - 1] / 24.0f);
+-        if (LensData[i + 7]) imgdata.lens.nikon.NikonEffectiveMaxAp = powf64(2.0f, (float)LensData[i + 7] / 24.0f);
++          imgdata.lens.makernotes.CurFocal = 5.0f * internal_powf64(2.0f, (float)LensData[i - 1] / 24.0f);
++        if (LensData[i + 7]) imgdata.lens.nikon.NikonEffectiveMaxAp = internal_powf64(2.0f, (float)LensData[i + 7] / 24.0f);
+       }
+     imgdata.lens.makernotes.LensID =
+       (unsigned long long) LensData[i] << 56 |
+@@ -6827,13 +6827,13 @@
+ 		if (table_buf[iLensData+9] &&
+ 			(fabs(imgdata.lens.makernotes.CurFocal) < 0.1f))
+ 		  imgdata.lens.makernotes.CurFocal =
+-			10*(table_buf[iLensData+9]>>2) * powf64(4, (table_buf[iLensData+9] & 0x03)-2);
++			10*(table_buf[iLensData+9]>>2) * internal_powf64(4, (table_buf[iLensData+9] & 0x03)-2);
+ 		if (table_buf[iLensData+10] & 0xf0)
+ 		  imgdata.lens.makernotes.MaxAp4CurFocal =
+-			powf64(2.0f, (float)((table_buf[iLensData+10] & 0xf0) >>4)/4.0f);
++			internal_powf64(2.0f, (float)((table_buf[iLensData+10] & 0xf0) >>4)/4.0f);
+ 		if (table_buf[iLensData+10] & 0x0f)
+ 		  imgdata.lens.makernotes.MinAp4CurFocal =
+-			powf64(2.0f, (float)((table_buf[iLensData+10] & 0x0f) + 10)/4.0f);
++			internal_powf64(2.0f, (float)((table_buf[iLensData+10] & 0x0f) + 10)/4.0f);
+ 
+ 		if (iLensData != 12)
+ 		  {
+@@ -6854,14 +6854,14 @@
+ 			if ((table_buf[iLensData+14] > 1) &&
+ 				(fabs(imgdata.lens.makernotes.MaxAp4CurFocal) < 0.7f))
+ 			  imgdata.lens.makernotes.MaxAp4CurFocal =
+-				powf64(2.0f, (float)((table_buf[iLensData+14] & 0x7f) -1)/32.0f);
++				internal_powf64(2.0f, (float)((table_buf[iLensData+14] & 0x7f) -1)/32.0f);
+ 		  }
+ 		else if ((id != 0x12e76) &&	// K-5
+ 				 (table_buf[iLensData+15] > 1) &&
+ 				 (fabs(imgdata.lens.makernotes.MaxAp4CurFocal) < 0.7f))
+ 		  {
+ 			imgdata.lens.makernotes.MaxAp4CurFocal =
+-			  powf64(2.0f, (float)((table_buf[iLensData+15] & 0x7f) -1)/32.0f);
++			  internal_powf64(2.0f, (float)((table_buf[iLensData+15] & 0x7f) -1)/32.0f);
+ 		  }
+ 	  }
+ 	free(table_buf);
+@@ -7349,11 +7349,11 @@
+     {
+       if (buf[0])
+         imgdata.lens.makernotes.MaxAp4CurFocal =
+-          my_roundf(powf64(2.0f, ((float)SonySubstitution[buf[0]] / 8.0 - 1.06f) / 2.0f)*10.0f) / 10.0f;
++          my_roundf(internal_powf64(2.0f, ((float)SonySubstitution[buf[0]] / 8.0 - 1.06f) / 2.0f)*10.0f) / 10.0f;
+ 
+       if (buf[1])
+         imgdata.lens.makernotes.MinAp4CurFocal =
+-          my_roundf(powf64(2.0f, ((float)SonySubstitution[buf[1]] / 8.0 - 1.06f) / 2.0f)*10.0f) / 10.0f;
++          my_roundf(internal_powf64(2.0f, ((float)SonySubstitution[buf[1]] / 8.0 - 1.06f) / 2.0f)*10.0f) / 10.0f;
+     }
+ 
+   if (imgdata.lens.makernotes.CameraMount != LIBRAW_MOUNT_FixedLens)
+@@ -7363,7 +7363,7 @@
+           lid = SonySubstitution[buf[0x3d]] << 8 |
+             SonySubstitution[buf[0x3c]];
+           imgdata.lens.makernotes.CurAp =
+-            powf64(2.0f, ((float)lid/256.0f - 16.0f) / 2.0f);
++            internal_powf64(2.0f, ((float)lid/256.0f - 16.0f) / 2.0f);
+         }
+       if (buf[0x105] &&
+           (imgdata.lens.makernotes.LensMount != LIBRAW_MOUNT_Canon_EF) &&
+@@ -7749,7 +7749,7 @@
+           {
+             unsigned char cc;
+             fread(&cc, 1, 1, ifp);
+-            iso_speed = (int)(100.0 * powf64(2.0, (double)(cc) / 12.0 - 5.0));
++            iso_speed = (int)(100.0 * internal_powf64(2.0, (double)(cc) / 12.0 - 5.0));
+             break;
+           }
+       }
+@@ -7794,7 +7794,7 @@
+           }
+           break;
+         case 0x1002:
+-          imgdata.lens.makernotes.CurAp = powf64(2.0f, getreal(type)/2);
++          imgdata.lens.makernotes.CurAp = internal_powf64(2.0f, getreal(type)/2);
+           break;
+         case 0x20100102:
+             stmread(imgdata.shootinginfo.InternalBodySerial, len, ifp);
+@@ -7821,10 +7821,10 @@
+           stmread(imgdata.lens.makernotes.Lens,len, ifp);
+           break;
+         case 0x20100205:
+-          imgdata.lens.makernotes.MaxAp4MinFocal = powf64(sqrt(2.0f), get2() / 256.0f);
++          imgdata.lens.makernotes.MaxAp4MinFocal = internal_powf64(sqrt(2.0f), get2() / 256.0f);
+           break;
+         case 0x20100206:
+-          imgdata.lens.makernotes.MaxAp4MaxFocal = powf64(sqrt(2.0f), get2() / 256.0f);
++          imgdata.lens.makernotes.MaxAp4MaxFocal = internal_powf64(sqrt(2.0f), get2() / 256.0f);
+           break;
+         case 0x20100207:
+           imgdata.lens.makernotes.MinFocal = (float)get2();
+@@ -7835,7 +7835,7 @@
+             imgdata.lens.makernotes.MaxFocal = imgdata.lens.makernotes.MinFocal;
+           break;
+         case 0x2010020a:
+-          imgdata.lens.makernotes.MaxAp4CurFocal = powf64(sqrt(2.0f), get2() / 256.0f);
++          imgdata.lens.makernotes.MaxAp4CurFocal = internal_powf64(sqrt(2.0f), get2() / 256.0f);
+           break;
+         case 0x20100301:
+           imgdata.lens.makernotes.TeleconverterID = fgetc(ifp) << 8;
+@@ -8144,7 +8144,7 @@
+                   lid = (((ushort)table_buf[2])<<8) |
+                     ((ushort)table_buf[3]);
+                   imgdata.lens.makernotes.CurAp =
+-                    powf64(2.0f, ((float)lid/8.0f-1.0f)/2.0f);
++                    internal_powf64(2.0f, ((float)lid/8.0f-1.0f)/2.0f);
+                 }
+               break;
+             case 1536:
+@@ -8675,7 +8675,7 @@
+           }
+           break;
+         case 0x1002:
+-          imgdata.lens.makernotes.CurAp = powf64(2.0f, getreal(type)/2);
++          imgdata.lens.makernotes.CurAp = internal_powf64(2.0f, getreal(type)/2);
+           break;
+         case 0x20401112:
+           imgdata.makernotes.olympus.OlympusCropID = get2();
+@@ -8709,10 +8709,10 @@
+           stmread(imgdata.lens.makernotes.Lens, len, ifp);
+           break;
+         case 0x20100205:
+-          imgdata.lens.makernotes.MaxAp4MinFocal = powf64(sqrt(2.0f), get2() / 256.0f);
++          imgdata.lens.makernotes.MaxAp4MinFocal = internal_powf64(sqrt(2.0f), get2() / 256.0f);
+           break;
+         case 0x20100206:
+-          imgdata.lens.makernotes.MaxAp4MaxFocal = powf64(sqrt(2.0f), get2() / 256.0f);
++          imgdata.lens.makernotes.MaxAp4MaxFocal = internal_powf64(sqrt(2.0f), get2() / 256.0f);
+           break;
+         case 0x20100207:
+           imgdata.lens.makernotes.MinFocal = (float)get2();
+@@ -8723,7 +8723,7 @@
+             imgdata.lens.makernotes.MaxFocal = imgdata.lens.makernotes.MinFocal;
+           break;
+         case 0x2010020a:
+-          imgdata.lens.makernotes.MaxAp4CurFocal = powf64(sqrt(2.0f), get2() / 256.0f);
++          imgdata.lens.makernotes.MaxAp4CurFocal = internal_powf64(sqrt(2.0f), get2() / 256.0f);
+           break;
+         case 0x20100301:
+           imgdata.lens.makernotes.TeleconverterID = fgetc(ifp) << 8;
+@@ -9150,7 +9150,7 @@
+                   lid = (((ushort)table_buf[2])<<8) |
+                     ((ushort)table_buf[3]);
+                   imgdata.lens.makernotes.CurAp =
+-                    powf64(2.0f, ((float)lid/8.0f-1.0f)/2.0f);
++                    internal_powf64(2.0f, ((float)lid/8.0f-1.0f)/2.0f);
+                 }
+               break;
+             case 1536:
+@@ -9248,19 +9248,19 @@
+       {
+         unsigned char cc;
+         fread(&cc,1,1,ifp);
+-        iso_speed = int(100.0 * powf64(2.0f,float(cc)/12.0-5.0));
++        iso_speed = int(100.0 * internal_powf64(2.0f,float(cc)/12.0-5.0));
+       }
+     if (tag == 4 && len > 26 && len < 35) {
+       if ((i=(get4(),get2())) != 0x7fff && (!iso_speed || iso_speed == 65535))
+-	iso_speed = 50 * powf64(2.0, i/32.0 - 4);
++	iso_speed = 50 * internal_powf64(2.0, i/32.0 - 4);
+ #ifdef LIBRAW_LIBRARY_BUILD
+       get4();
+ #else
+       if ((i=(get2(),get2())) != 0x7fff && !aperture)
+-	aperture = powf64(2.0, i/64.0);
++	aperture = internal_powf64(2.0, i/64.0);
+ #endif
+       if ((i=get2()) != 0xffff && !shutter)
+-	shutter = powf64(2.0, (short) i/-32.0);
++	shutter = internal_powf64(2.0, (short) i/-32.0);
+       wbi = (get2(),get2());
+       shot_order = (get2(),get2());
+     }
+@@ -9854,7 +9854,7 @@
+         imgdata.lens.Lens[0] = 0;
+       break;
+     case 0x9205:
+-      imgdata.lens.EXIF_MaxAp = powf64(2.0f, (getreal(type) / 2.0f));
++      imgdata.lens.EXIF_MaxAp = internal_powf64(2.0f, (getreal(type) / 2.0f));
+       break;
+ #endif
+       case 33434:  tiff_ifd[tiff_nifds-1].t_shutter =
+@@ -9869,11 +9869,11 @@
+       case 36868:  get_timestamp(0);			break;
+       case 37377:  if ((expo = -getreal(type)) < 128 && shutter == 0.)
+ 		     tiff_ifd[tiff_nifds-1].t_shutter =
+-			shutter = powf64(2.0, expo);
++			shutter = internal_powf64(2.0, expo);
+ 		break;
+       case 37378:                                       // 0x9202 ApertureValue
+         if ((fabs(ape = getreal(type))<256.0) && (!aperture))
+-          aperture = powf64(2.0, ape/2);
++          aperture = internal_powf64(2.0, ape/2);
+         break;
+       case 37385:  flash_used = getreal(type);          break;
+       case 37386:  focal_len = getreal(type);		break;
+@@ -10769,7 +10769,7 @@
+         imgdata.lens.Lens[0] = 0;
+       break;
+     case 0x9205:
+-      imgdata.lens.EXIF_MaxAp = powf64(2.0f, (getreal(type) / 2.0f));
++      imgdata.lens.EXIF_MaxAp = internal_powf64(2.0f, (getreal(type) / 2.0f));
+       break;
+ // IB end
+ #endif
+@@ -11804,22 +11804,22 @@
+       thumb_length = len;
+     }
+     if (type == 0x1818) {
+-      shutter = powf64(2.0f, -int_to_float((get4(),get4())));
+-      aperture = powf64(2.0f, int_to_float(get4())/2);
++      shutter = internal_powf64(2.0f, -int_to_float((get4(),get4())));
++      aperture = internal_powf64(2.0f, int_to_float(get4())/2);
+ #ifdef LIBRAW_LIBRARY_BUILD
+       imgdata.lens.makernotes.CurAp = aperture;
+ #endif
+     }
+     if (type == 0x102a) {
+ //      iso_speed = pow (2.0, (get4(),get2())/32.0 - 4) * 50;
+-      iso_speed = powf64(2.0f, ((get2(),get2()) + get2())/32.0f - 5.0f) * 100.0f;
++      iso_speed = internal_powf64(2.0f, ((get2(),get2()) + get2())/32.0f - 5.0f) * 100.0f;
+ #ifdef LIBRAW_LIBRARY_BUILD
+       aperture  = _CanonConvertAperture((get2(),get2()));
+       imgdata.lens.makernotes.CurAp = aperture;
+ #else
+-      aperture  = powf64(2.0, (get2(),(short)get2())/64.0);
++      aperture  = internal_powf64(2.0, (get2(),(short)get2())/64.0);
+ #endif
+-      shutter   = powf64(2.0,-((short)get2())/32.0);
++      shutter   = internal_powf64(2.0,-((short)get2())/32.0);
+       wbi = (get2(),get2());
+       if (wbi > 17) wbi = 0;
+       fseek (ifp, 32, SEEK_CUR);
+@@ -12024,8 +12024,8 @@
+       setPhaseOneFeatures(unique_id);
+       break;
+     case 0x0401:
+-      if (type == 4) imgdata.lens.makernotes.CurAp =  powf64(2.0f, (int_to_float(data)/2.0f));
+-      else imgdata.lens.makernotes.CurAp = powf64(2.0f, (getreal(type)/2.0f));
++      if (type == 4) imgdata.lens.makernotes.CurAp =  internal_powf64(2.0f, (int_to_float(data)/2.0f));
++      else imgdata.lens.makernotes.CurAp = internal_powf64(2.0f, (getreal(type)/2.0f));
+       break;
+     case 0x0403:
+       if (type == 4) imgdata.lens.makernotes.CurFocal =  int_to_float(data);
+@@ -12039,16 +12039,16 @@
+       break;
+     case 0x0414:
+       if (type == 4) {
+-      	imgdata.lens.makernotes.MaxAp4CurFocal = powf64(2.0f, (int_to_float(data)/2.0f));
++      	imgdata.lens.makernotes.MaxAp4CurFocal = internal_powf64(2.0f, (int_to_float(data)/2.0f));
+       } else {
+-        imgdata.lens.makernotes.MaxAp4CurFocal = powf64(2.0f, (getreal(type) / 2.0f));
++        imgdata.lens.makernotes.MaxAp4CurFocal = internal_powf64(2.0f, (getreal(type) / 2.0f));
+       }
+       break;
+     case 0x0415:
+       if (type == 4) {
+-      	imgdata.lens.makernotes.MinAp4CurFocal = powf64(2.0f, (int_to_float(data)/2.0f));
++      	imgdata.lens.makernotes.MinAp4CurFocal = internal_powf64(2.0f, (int_to_float(data)/2.0f));
+       } else {
+-        imgdata.lens.makernotes.MinAp4CurFocal = powf64(2.0f, (getreal(type) / 2.0f));
++        imgdata.lens.makernotes.MinAp4CurFocal = internal_powf64(2.0f, (getreal(type) / 2.0f));
+       }
+       break;
+     case 0x0416:
+@@ -14237,15 +14237,15 @@
+       case 18: iso_speed = 320; break;
+       case 19: iso_speed = 400; break;
+     }
+-    shutter = powf64(2.0f, (((float)get4())/8.0f)) / 16000.0f;
++    shutter = internal_powf64(2.0f, (((float)get4())/8.0f)) / 16000.0f;
+     FORC4 cam_mul[c ^ (c >> 1)] = get4();
+     fseek (ifp, 88, SEEK_SET);
+-    aperture = powf64(2.0f, ((float)get4())/16.0f);
++    aperture = internal_powf64(2.0f, ((float)get4())/16.0f);
+     fseek (ifp, 112, SEEK_SET);
+     focal_len = get4();
+ #ifdef LIBRAW_LIBRARY_BUILD
+     fseek (ifp, 104, SEEK_SET);
+-    imgdata.lens.makernotes.MaxAp4CurFocal = powf64(2.0f, ((float)get4())/16.0f);
++    imgdata.lens.makernotes.MaxAp4CurFocal = internal_powf64(2.0f, ((float)get4())/16.0f);
+     fseek (ifp, 124, SEEK_SET);
+     stmread(imgdata.lens.makernotes.Lens, 32, ifp);
+     imgdata.lens.makernotes.CameraMount = LIBRAW_MOUNT_Contax_N;
diff -Nru libraw-0.18.7/debian/patches/series libraw-0.18.7/debian/patches/series
--- libraw-0.18.7/debian/patches/series	1970-01-01 01:00:00.000000000 +0100
+++ libraw-0.18.7/debian/patches/series	2018-02-24 01:06:42.000000000 +0100
@@ -0,0 +1 @@
+powf64.patch


More information about the Pkg-phototools-devel mailing list