On 11/09/2016 04:14 PM, Even Rouault wrote:
and it builds fine. Both with gcc 4.6.0 that comes with the DVD, and 4.6.3 
after the updates.
So it would seem that it is one of the dependency that might cause the issue 
(which seems odd)
It's very strange.  It builds fine for me in the same build environment on Fedora 24, 19, 12, and 5 but not on 15.  Looking at the relevant .o files, on Fedora 24 I get:

[craig:/cw/src_3p/gdal-2.1.2/frmts/o] nm vrtfilters.o|grep RasterIOInternal
                 U _ZN16VRTComplexSource16RasterIOInternalIfEE6CPLErriiiiPvii12GDALDataTypexxP20GDALRasterIOExtraArgS3_

[craig:/cw/src_3p/gdal-2.1.2/frmts/o] nm vrtsources.o|grep RasterIOInternal
0000000000000000 W _ZN16VRTComplexSource16RasterIOInternalIdEE6CPLErriiiiPvii12GDALDataTypexxP20GDALRasterIOExtraArgS3_
0000000000000000 W _ZN16VRTComplexSource16RasterIOInternalIfEE6CPLErriiiiPvii12GDALDataTypexxP20GDALRasterIOExtraArgS3_
0000000000000000 u _ZZN16VRTComplexSource16RasterIOInternalIdEE6CPLErriiiiPvii12GDALDataTypexxP20GDALRasterIOExtraArgS3_E10bHasWarned
0000000000000000 u _ZZN16VRTComplexSource16RasterIOInternalIfEE6CPLErriiiiPvii12GDALDataTypexxP20GDALRasterIOExtraArgS3_E10bHasWarned

But on the Fedora 15 machine with GCC 4.6.3, I get:

[dev:/cw/src_3p/gdal-2.1.2/frmts/o] nm vrtfilters.o|grep RasterIOInternal
                 U _ZN16VRTComplexSource16RasterIOInternalIfEE6CPLErriiiiPvii12GDALDataTypexxP20GDALRasterIOExtraArgS3_

[dev:/cw/src_3p/gdal-2.1.2/frmts/o] nm vrtsources.o|grep RasterIOInternal
0000000000000000 u _ZZN16VRTComplexSource16RasterIOInternalIdEE6CPLErriiiiPvii12GDALDataTypexxP20GDALRasterIOExtraArgS3_E10bHasWarned
0000000000000000 u _ZZN16VRTComplexSource16RasterIOInternalIfEE6CPLErriiiiPvii12GDALDataTypexxP20GDALRasterIOExtraArgS3_E10bHasWarned

I really don't know how GCC handles C++ templates internally, but the problem machine is missing 'nm' entries of type 'W' (which apparently means "weak symbol") to bridge the gap between the "_ZN16" reference and the "_ZZN16" definition.

I worked around the problem by making a float-type-only copy of the templated function VRTComplexSource::RasterIOInternal() and calling that instead inside "vrtfilters.cpp" and GCC 4.6.3 seems to be happy with that.

--
Dr. Craig S. Bruce
Senior Software Developer
CubeWerx Inc.
http://www.cubewerx.com

_______________________________________________
gdal-dev mailing list
gdal-dev@lists.osgeo.org
http://lists.osgeo.org/mailman/listinfo/gdal-dev

Reply via email to