Violation of ODR rule for type struct tagBlock for vtk-9.1.0
I received a bug report[1] for a violation of the C++ One Definition Rule (ODR) for type struct tagBlock during linking stage of libvtkParallel.so. A full build log is provided at the Gentoo bugzilla at [1], but if desired, I can upload it here as well. The definitons are in the header files IO/AMR/vtkAMRFlashReaderInternal.h
and IO/AMR/vtkAMRVelodyneReaderInternal.h
.
FAILED: lib64/libvtkParallel-9.1.so.9.1.0
: && /usr/bin/x86_64-pc-linux-gnu-g++ -fPIC -O2 -pipe -march=x86-64 -frecord-gcc-switches -fno-diagnostics-color -fmessage-length=0 -flto -Werror=odr -Werror=lto-type-mismatch -Werror=strict-aliasing -Wl,-lc -Wl,-O1 -Wl,--as-needed -Wl,--defsym=__gentoo_check_ldflags__=0 -shared -Wl,-soname,libvtkParallel-9.1.so.1 -o lib64/libvtkParallel-9.1.so.9.1.0 IO/ParallelXML/CMakeFiles/IOParallelXML-objects.dir/vtkXMLCompositeDataSetWriterHelper.cxx.o IO/ParallelXML/CMakeFiles/IOParallelXML-objects.dir/vtkXMLDataWriterHelper.cxx.o IO/ParallelXML/CMakeFiles/IOParallelXML-objects.dir/vtkXMLPartitionedDataSetCollectionWriter.cxx.o IO/ParallelXML/CMakeFiles/IOParallelXML-objects.dir/vtkXMLPartitionedDataSetWriter.cxx.o IO/ParallelXML/CMakeFiles/IOParallelXML-objects.dir/vtkXMLWriter2.cxx.o IO/ParallelXML/CMakeFiles/IOParallelXML-objects.dir/vtkXMLPDataObjectWriter.cxx.o IO/ParallelXML/CMakeFiles/IOParallelXML-objects.dir/vtkXMLPDataSetWriter.cxx.o IO/ParallelXML/CMakeFiles/IOParallelXML-objects.dir/vtkXMLPDataWriter.cxx.o IO/ParallelXML/CMakeFiles/IOParallelXML-objects.dir/vtkXMLPHierarchicalBoxDataWriter.cxx.o IO/ParallelXML/CMakeFiles/IOParallelXML-objects.dir/vtkXMLPHyperTreeGridWriter.cxx.o IO/ParallelXML/CMakeFiles/IOParallelXML-objects.dir/vtkXMLPImageDataWriter.cxx.o IO/ParallelXML/CMakeFiles/IOParallelXML-objects.dir/vtkXMLPMultiBlockDataWriter.cxx.o IO/ParallelXML/CMakeFiles/IOParallelXML-objects.dir/vtkXMLPPartitionedDataSetWriter.cxx.o IO/ParallelXML/CMakeFiles/IOParallelXML-objects.dir/vtkXMLPPolyDataWriter.cxx.o IO/ParallelXML/CMakeFiles/IOParallelXML-objects.dir/vtkXMLPRectilinearGridWriter.cxx.o IO/ParallelXML/CMakeFiles/IOParallelXML-objects.dir/vtkXMLPStructuredDataWriter.cxx.o IO/ParallelXML/CMakeFiles/IOParallelXML-objects.dir/vtkXMLPStructuredGridWriter.cxx.o IO/ParallelXML/CMakeFiles/IOParallelXML-objects.dir/vtkXMLPTableWriter.cxx.o IO/ParallelXML/CMakeFiles/IOParallelXML-objects.dir/vtkXMLPUniformGridAMRWriter.cxx.o IO/ParallelXML/CMakeFiles/IOParallelXML-objects.dir/vtkXMLPUnstructuredDataWriter.cxx.o IO/ParallelXML/CMakeFiles/IOParallelXML-objects.dir/vtkXMLPUnstructuredGridWriter.cxx.o IO/Parallel/CMakeFiles/IOParallel-objects.dir/vtkMultiBlockPLOT3DReaderInternals.cxx.o IO/Parallel/CMakeFiles/IOParallel-objects.dir/vtkEnSightWriter.cxx.o IO/Parallel/CMakeFiles/IOParallel-objects.dir/vtkMultiBlockPLOT3DReader.cxx.o IO/Parallel/CMakeFiles/IOParallel-objects.dir/vtkPChacoReader.cxx.o IO/Parallel/CMakeFiles/IOParallel-objects.dir/vtkPDataSetReader.cxx.o IO/Parallel/CMakeFiles/IOParallel-objects.dir/vtkPDataSetWriter.cxx.o IO/Parallel/CMakeFiles/IOParallel-objects.dir/vtkPImageWriter.cxx.o IO/Parallel/CMakeFiles/IOParallel-objects.dir/vtkPlot3DMetaReader.cxx.o IO/Parallel/CMakeFiles/IOParallel-objects.dir/vtkPOpenFOAMReader.cxx.o IO/CGNS/CMakeFiles/IOCGNSReader-objects.dir/vtkCGNSFileSeriesReader.cxx.o IO/CGNS/CMakeFiles/IOCGNSReader-objects.dir/vtkCGNSReader.cxx.o IO/CGNS/CMakeFiles/IOCGNSReader-objects.dir/cgio_helpers.cxx.o IO/CGNS/CMakeFiles/IOCGNSReader-objects.dir/vtkCGNSReaderInternal.cxx.o IO/CGNS/CMakeFiles/IOCGNSReader-objects.dir/vtkFileSeriesHelper.cxx.o IO/AMR/CMakeFiles/IOAMR-objects.dir/vtkAMRBaseParticlesReader.cxx.o IO/AMR/CMakeFiles/IOAMR-objects.dir/vtkAMRBaseReader.cxx.o IO/AMR/CMakeFiles/IOAMR-objects.dir/vtkAMRDataSetCache.cxx.o IO/AMR/CMakeFiles/IOAMR-objects.dir/vtkAMREnzoParticlesReader.cxx.o IO/AMR/CMakeFiles/IOAMR-objects.dir/vtkAMREnzoReader.cxx.o IO/AMR/CMakeFiles/IOAMR-objects.dir/vtkAMReXGridReader.cxx.o IO/AMR/CMakeFiles/IOAMR-objects.dir/vtkAMReXParticlesReader.cxx.o IO/AMR/CMakeFiles/IOAMR-objects.dir/vtkAMRFlashParticlesReader.cxx.o IO/AMR/CMakeFiles/IOAMR-objects.dir/vtkAMRFlashReader.cxx.o IO/AMR/CMakeFiles/IOAMR-objects.dir/vtkAMRVelodyneReader.cxx.o IO/AMR/CMakeFiles/IOAMR-objects.dir/vtkAMREnzoReaderInternal.cxx.o IO/AMR/CMakeFiles/IOAMR-objects.dir/vtkAMReXGridReaderInternal.cxx.o IO/AMR/CMakeFiles/IOAMR-objects.dir/vtkAMRFlashReaderInternal.cxx.o IO/AMR/CMakeFiles/IOAMR-objects.dir/vtkAMRVelodyneReaderInternal.cxx.o Filters/ParallelImaging/CMakeFiles/FiltersParallelImaging-objects.dir/vtkExtractPiece.cxx.o Filters/ParallelImaging/CMakeFiles/FiltersParallelImaging-objects.dir/vtkMemoryLimitImageDataStreamer.cxx.o Filters/ParallelImaging/CMakeFiles/FiltersParallelImaging-objects.dir/vtkPComputeHistogram2DOutliers.cxx.o Filters/ParallelImaging/CMakeFiles/FiltersParallelImaging-objects.dir/vtkPExtractHistogram2D.cxx.o Filters/ParallelImaging/CMakeFiles/FiltersParallelImaging-objects.dir/vtkPPairwiseExtractHistogram2D.cxx.o Filters/ParallelImaging/CMakeFiles/FiltersParallelImaging-objects.dir/vtkTransmitImageDataPiece.cxx.o Filters/AMR/CMakeFiles/FiltersAMR-objects.dir/vtkAMRCutPlane.cxx.o Filters/AMR/CMakeFiles/FiltersAMR-objects.dir/vtkAMRGaussianPulseSource.cxx.o Filters/AMR/CMakeFiles/FiltersAMR-objects.dir/vtkAMRResampleFilter.cxx.o Filters/AMR/CMakeFiles/FiltersAMR-objects.dir/vtkAMRSliceFilter.cxx.o Filters/AMR/CMakeFiles/FiltersAMR-objects.dir/vtkAMRToMultiBlockFilter.cxx.o Filters/AMR/CMakeFiles/FiltersAMR-objects.dir/vtkImageToAMR.cxx.o Filters/AMR/CMakeFiles/FiltersAMR-objects.dir/vtkParallelAMRUtilities.cxx.o Filters/Parallel/CMakeFiles/FiltersParallel-objects.dir/vtkFiltersParallelObjectFactory.cxx.o Filters/Parallel/CMakeFiles/FiltersParallel-objects.dir/vtkAdaptiveTemporalInterpolator.cxx.o Filters/Parallel/CMakeFiles/FiltersParallel-objects.dir/vtkAggregateDataSetFilter.cxx.o Filters/Parallel/CMakeFiles/FiltersParallel-objects.dir/vtkAngularPeriodicFilter.cxx.o Filters/Parallel/CMakeFiles/FiltersParallel-objects.dir/vtkCollectGraph.cxx.o Filters/Parallel/CMakeFiles/FiltersParallel-objects.dir/vtkCollectPolyData.cxx.o Filters/Parallel/CMakeFiles/FiltersParallel-objects.dir/vtkCollectTable.cxx.o Filters/Parallel/CMakeFiles/FiltersParallel-objects.dir/vtkCutMaterial.cxx.o Filters/Parallel/CMakeFiles/FiltersParallel-objects.dir/vtkDistributedDataFilter.cxx.o Filters/Parallel/CMakeFiles/FiltersParallel-objects.dir/vtkDuplicatePolyData.cxx.o Filters/Parallel/CMakeFiles/FiltersParallel-objects.dir/vtkExtractCTHPart.cxx.o Filters/Parallel/CMakeFiles/FiltersParallel-objects.dir/vtkExtractPolyDataPiece.cxx.o Filters/Parallel/CMakeFiles/FiltersParallel-objects.dir/vtkExtractUnstructuredGridPiece.cxx.o Filters/Parallel/CMakeFiles/FiltersParallel-objects.dir/vtkExtractUserDefinedPiece.cxx.o Filters/Parallel/CMakeFiles/FiltersParallel-objects.dir/vtkHyperTreeGridGhostCellsGenerator.cxx.o Filters/Parallel/CMakeFiles/FiltersParallel-objects.dir/vtkIntegrateAttributes.cxx.o Filters/Parallel/CMakeFiles/FiltersParallel-objects.dir/vtkPassThroughFilter.cxx.o Filters/Parallel/CMakeFiles/FiltersParallel-objects.dir/vtkPeriodicFilter.cxx.o Filters/Parallel/CMakeFiles/FiltersParallel-objects.dir/vtkPCellDataToPointData.cxx.o Filters/Parallel/CMakeFiles/FiltersParallel-objects.dir/vtkPConvertToMultiBlockDataSet.cxx.o Filters/Parallel/CMakeFiles/FiltersParallel-objects.dir/vtkPExtractDataArraysOverTime.cxx.o Filters/Parallel/CMakeFiles/FiltersParallel-objects.dir/vtkPExtractExodusGlobalTemporalVariables.cxx.o Filters/Parallel/CMakeFiles/FiltersParallel-objects.dir/vtkPExtractSelectedArraysOverTime.cxx.o Filters/Parallel/CMakeFiles/FiltersParallel-objects.dir/vtkPieceRequestFilter.cxx.o Filters/Parallel/CMakeFiles/FiltersParallel-objects.dir/vtkPieceScalars.cxx.o Filters/Parallel/CMakeFiles/FiltersParallel-objects.dir/vtkPipelineSize.cxx.o Filters/Parallel/CMakeFiles/FiltersParallel-objects.dir/vtkPKdTree.cxx.o Filters/Parallel/CMakeFiles/FiltersParallel-objects.dir/vtkPLinearExtrusionFilter.cxx.o Filters/Parallel/CMakeFiles/FiltersParallel-objects.dir/vtkPMaskPoints.cxx.o Filters/Parallel/CMakeFiles/FiltersParallel-objects.dir/vtkPMergeArrays.cxx.o Filters/Parallel/CMakeFiles/FiltersParallel-objects.dir/vtkPOutlineCornerFilter.cxx.o Filters/Parallel/CMakeFiles/FiltersParallel-objects.dir/vtkPOutlineFilter.cxx.o Filters/Parallel/CMakeFiles/FiltersParallel-objects.dir/vtkPOutlineFilterInternals.cxx.o Filters/Parallel/CMakeFiles/FiltersParallel-objects.dir/vtkPPolyDataNormals.cxx.o Filters/Parallel/CMakeFiles/FiltersParallel-objects.dir/vtkPProbeFilter.cxx.o Filters/Parallel/CMakeFiles/FiltersParallel-objects.dir/vtkPProjectSphereFilter.cxx.o Filters/Parallel/CMakeFiles/FiltersParallel-objects.dir/vtkPReflectionFilter.cxx.o Filters/Parallel/CMakeFiles/FiltersParallel-objects.dir/vtkPResampleFilter.cxx.o Filters/Parallel/CMakeFiles/FiltersParallel-objects.dir/vtkPartitionBalancer.cxx.o Filters/Parallel/CMakeFiles/FiltersParallel-objects.dir/vtkProcessIdScalars.cxx.o Filters/Parallel/CMakeFiles/FiltersParallel-objects.dir/vtkPSphereSource.cxx.o Filters/Parallel/CMakeFiles/FiltersParallel-objects.dir/vtkPTextureMapToSphere.cxx.o Filters/Parallel/CMakeFiles/FiltersParallel-objects.dir/vtkPYoungsMaterialInterface.cxx.o Filters/Parallel/CMakeFiles/FiltersParallel-objects.dir/vtkRectilinearGridOutlineFilter.cxx.o Filters/Parallel/CMakeFiles/FiltersParallel-objects.dir/vtkRemoveGhosts.cxx.o Filters/Parallel/CMakeFiles/FiltersParallel-objects.dir/vtkTransmitPolyDataPiece.cxx.o Filters/Parallel/CMakeFiles/FiltersParallel-objects.dir/vtkTransmitRectilinearGridPiece.cxx.o Filters/Parallel/CMakeFiles/FiltersParallel-objects.dir/vtkTransmitStructuredDataPiece.cxx.o Filters/Parallel/CMakeFiles/FiltersParallel-objects.dir/vtkTransmitStructuredGridPiece.cxx.o Filters/Parallel/CMakeFiles/FiltersParallel-objects.dir/vtkTransmitUnstructuredGridPiece.cxx.o Filters/Parallel/CMakeFiles/FiltersParallel-objects.dir/vtkUnstructuredGridGhostCellsGenerator.cxx.o Filters/Extraction/CMakeFiles/FiltersExtraction-objects.dir/vtkBlockSelector.cxx.o Filters/Extraction/CMakeFiles/FiltersExtraction-objects.dir/vtkConvertSelection.cxx.o Filters/Extraction/CMakeFiles/FiltersExtraction-objects.dir/vtkExpandMarkedElements.cxx.o Filters/Extraction/CMakeFiles/FiltersExtraction-objects.dir/vtkExtractBlock.cxx.o Filters/Extraction/CMakeFiles/FiltersExtraction-objects.dir/vtkExtractBlockUsingDataAssembly.cxx.o Filters/Extraction/CMakeFiles/FiltersExtraction-objects.dir/vtkExtractCells.cxx.o Filters/Extraction/CMakeFiles/FiltersExtraction-objects.dir/vtkExtractCellsByType.cxx.o Filters/Extraction/CMakeFiles/FiltersExtraction-objects.dir/vtkExtractDataArraysOverTime.cxx.o Filters/Extraction/CMakeFiles/FiltersExtraction-objects.dir/vtkExtractDataOverTime.cxx.o Filters/Extraction/CMakeFiles/FiltersExtraction-objects.dir/vtkExtractDataSets.cxx.o Filters/Extraction/CMakeFiles/FiltersExtraction-objects.dir/vtkExtractEdges.cxx.o Filters/Extraction/CMakeFiles/FiltersExtraction-objects.dir/vtkExtractExodusGlobalTemporalVariables.cxx.o Filters/Extraction/CMakeFiles/FiltersExtraction-objects.dir/vtkExtractGeometry.cxx.o Filters/Extraction/CMakeFiles/FiltersExtraction-objects.dir/vtkExtractGrid.cxx.o Filters/Extraction/CMakeFiles/FiltersExtraction-objects.dir/vtkExtractLevel.cxx.o Filters/Extraction/CMakeFiles/FiltersExtraction-objects.dir/vtkExtractPolyDataGeometry.cxx.o Filters/Extraction/CMakeFiles/FiltersExtraction-objects.dir/vtkExtractRectilinearGrid.cxx.o Filters/Extraction/CMakeFiles/FiltersExtraction-objects.dir/vtkExtractSelectedArraysOverTime.cxx.o Filters/Extraction/CMakeFiles/FiltersExtraction-objects.dir/vtkExtractSelectedBlock.cxx.o Filters/Extraction/CMakeFiles/FiltersExtraction-objects.dir/vtkExtractSelectedIds.cxx.o Filters/Extraction/CMakeFiles/FiltersExtraction-objects.dir/vtkExtractSelectedLocations.cxx.o Filters/Extraction/CMakeFiles/FiltersExtraction-objects.dir/vtkExtractSelectedPolyDataIds.cxx.o Filters/Extraction/CMakeFiles/FiltersExtraction-objects.dir/vtkExtractSelectedRows.cxx.o Filters/Extraction/CMakeFiles/FiltersExtraction-objects.dir/vtkExtractSelectedThresholds.cxx.o Filters/Extraction/CMakeFiles/FiltersExtraction-objects.dir/vtkExtractSelection.cxx.o Filters/Extraction/CMakeFiles/FiltersExtraction-objects.dir/vtkExtractTemporalFieldData.cxx.o Filters/Extraction/CMakeFiles/FiltersExtraction-objects.dir/vtkExtractTensorComponents.cxx.o Filters/Extraction/CMakeFiles/FiltersExtraction-objects.dir/vtkExtractTimeSteps.cxx.o Filters/Extraction/CMakeFiles/FiltersExtraction-objects.dir/vtkExtractUnstructuredGrid.cxx.o Filters/Extraction/CMakeFiles/FiltersExtraction-objects.dir/vtkExtractVectorComponents.cxx.o Filters/Extraction/CMakeFiles/FiltersExtraction-objects.dir/vtkFrustumSelector.cxx.o Filters/Extraction/CMakeFiles/FiltersExtraction-objects.dir/vtkHierarchicalDataExtractDataSets.cxx.o Filters/Extraction/CMakeFiles/FiltersExtraction-objects.dir/vtkHierarchicalDataExtractLevel.cxx.o Filters/Extraction/CMakeFiles/FiltersExtraction-objects.dir/vtkLocationSelector.cxx.o Filters/Extraction/CMakeFiles/FiltersExtraction-objects.dir/vtkProbeSelectedLocations.cxx.o Filters/Extraction/CMakeFiles/FiltersExtraction-objects.dir/vtkSelector.cxx.o Filters/Extraction/CMakeFiles/FiltersExtraction-objects.dir/vtkValueSelector.cxx.o Parallel/DIY/CMakeFiles/ParallelDIY-objects.dir/vtkDIYDataExchanger.cxx.o Parallel/DIY/CMakeFiles/ParallelDIY-objects.dir/vtkDIYExplicitAssigner.cxx.o Parallel/DIY/CMakeFiles/ParallelDIY-objects.dir/vtkDIYGhostUtilities.cxx.o Parallel/DIY/CMakeFiles/ParallelDIY-objects.dir/vtkDIYUtilities.cxx.o Parallel/Core/CMakeFiles/ParallelCore-objects.dir/vtkCommunicator.cxx.o Parallel/Core/CMakeFiles/ParallelCore-objects.dir/vtkDummyCommunicator.cxx.o Parallel/Core/CMakeFiles/ParallelCore-objects.dir/vtkDummyController.cxx.o Parallel/Core/CMakeFiles/ParallelCore-objects.dir/vtkFieldDataSerializer.cxx.o Parallel/Core/CMakeFiles/ParallelCore-objects.dir/vtkMultiProcessController.cxx.o Parallel/Core/CMakeFiles/ParallelCore-objects.dir/vtkMultiProcessStream.cxx.o Parallel/Core/CMakeFiles/ParallelCore-objects.dir/vtkPDirectory.cxx.o Parallel/Core/CMakeFiles/ParallelCore-objects.dir/vtkProcess.cxx.o Parallel/Core/CMakeFiles/ParallelCore-objects.dir/vtkProcessGroup.cxx.o Parallel/Core/CMakeFiles/ParallelCore-objects.dir/vtkPSystemTools.cxx.o Parallel/Core/CMakeFiles/ParallelCore-objects.dir/vtkSocketCommunicator.cxx.o Parallel/Core/CMakeFiles/ParallelCore-objects.dir/vtkSocketController.cxx.o Parallel/Core/CMakeFiles/ParallelCore-objects.dir/vtkSubCommunicator.cxx.o Parallel/Core/CMakeFiles/ParallelCore-objects.dir/vtkSubGroup.cxx.o CMakeFiles/Parallel.dir/CMakeFiles/vtk_module_kit_Parallel.c.o -Wl,-rpath,/var/tmp/portage/sci-libs/vtk-9.1.0-r2/work/vtk-9.1.0_build/lib64: lib64/libvtkcgns-9.1.so.9.1.0 lib64/libvtkRendering-9.1.so.9.1.0 /usr/lib64/libjpeg.so /usr/lib64/libpng.so /usr/lib64/libz.so /usr/lib64/libtiff.so /usr/lib64/libjsoncpp.so /usr/lib64/libhdf5.so /usr/lib64/libhdf5_hl.so /usr/lib64/libexpat.so lib64/libvtkIO-9.1.so.9.1.0 lib64/libvtkFiltersHybrid-9.1.so.9.1.0 lib64/libvtkDICOMParser-9.1.so.9.1.0 lib64/libvtkmetaio-9.1.so.9.1.0 /usr/lib64/libdouble-conversion.so /usr/lib64/liblz4.so /usr/lib64/liblzma.so /usr/lib64/libz.so lib64/libvtkFilters-9.1.so.9.1.0 lib64/libvtkfmt-9.1.so.9.1.0 lib64/libvtkImaging-9.1.so.9.1.0 /usr/lib64/libpugixml.so.1.12 lib64/libvtkCommon-9.1.so.9.1.0 lib64/libvtksys-9.1.so.9.1.0 -ldl lib64/libvtkloguru-9.1.so.9.1.0 /usr/lib/gcc/x86_64-pc-linux-gnu/12.1.1/libgomp.so /usr/lib64/libpthread.a lib64/libvtkkissfft-9.1.so.9.1.0 -Wl,-rpath-link,/var/tmp/portage/sci-libs/vtk-9.1.0-r2/work/vtk-9.1.0_build/lib64 && :
/var/tmp/portage/sci-libs/vtk-9.1.0-r2/work/VTK-9.1.0/IO/AMR/vtkAMRFlashReaderInternal.h:77:16: error: type ‘struct tagBlock’ violates the C++ One Definition Rule [-Werror=odr]
77 | typedef struct tagBlock
| ^
/var/tmp/portage/sci-libs/vtk-9.1.0-r2/work/VTK-9.1.0/IO/AMR/vtkAMRVelodyneReaderInternal.h:57:16: note: a different type is defined in another translation unit
57 | typedef struct tagBlock
| ^
/var/tmp/portage/sci-libs/vtk-9.1.0-r2/work/VTK-9.1.0/IO/AMR/vtkAMRFlashReaderInternal.h:80:7: note: the first difference of corresponding definitions is field ‘Level’
80 | int Level; // LOD level
| ^
/var/tmp/portage/sci-libs/vtk-9.1.0-r2/work/VTK-9.1.0/IO/AMR/vtkAMRVelodyneReaderInternal.h:60:7: note: a field with different name is defined in another translation unit
60 | int dSetLoc;
| ^
lto1: some warnings being treated as errors
lto-wrapper: fatal error: /usr/bin/x86_64-pc-linux-gnu-g++ returned 1 exit status
compilation terminated.
/usr/lib/gcc/x86_64-pc-linux-gnu/12.1.1/../../../../x86_64-pc-linux-gnu/bin/ld: error: lto-wrapper failed
collect2: error: ld returned 1 exit status
ninja: build stopped: subcommand failed.
Thanks for investigating!
[1] (https://bugs.gentoo.org/863038)[https://bugs.gentoo.org/863038]