Description: Fix FTBFS on sparc64 Author: Aurelien Jarno , David Mattli Forwarded: not yet Debian-Bug: 714923 Last-Update: <2016-02-08> --- opencv-2.4.9.1+dfsg.orig/modules/core/include/opencv2/core/core.hpp +++ opencv-2.4.9.1+dfsg/modules/core/include/opencv2/core/core.hpp @@ -1300,7 +1300,7 @@ public: operator const _Tp*() const; _Tp* obj; //< the object pointer. - int* refcount; //< the associated reference counter + _Atomic_word* refcount; //< the associated reference counter }; @@ -1468,9 +1468,9 @@ class CV_EXPORTS MatAllocator public: MatAllocator() {} virtual ~MatAllocator() {} - virtual void allocate(int dims, const int* sizes, int type, int*& refcount, + virtual void allocate(int dims, const int* sizes, int type, _Atomic_word*& refcount, uchar*& datastart, uchar*& data, size_t* step) = 0; - virtual void deallocate(int* refcount, uchar* datastart, uchar* data) = 0; + virtual void deallocate(_Atomic_word* refcount, uchar* datastart, uchar* data) = 0; }; /*! @@ -1965,7 +1965,7 @@ public: //! pointer to the reference counter; // when matrix points to user-allocated data, the pointer is NULL - int* refcount; + _Atomic_word* refcount; //! helper fields used in locateROI and adjustROI uchar* datastart; @@ -3384,7 +3384,7 @@ public: { Hdr(int _dims, const int* _sizes, int _type); void clear(); - int refcount; + _Atomic_word refcount; int dims; int valueOffset; size_t nodeSize; --- opencv-2.4.9.1+dfsg.orig/modules/core/include/opencv2/core/gpumat.hpp +++ opencv-2.4.9.1+dfsg/modules/core/include/opencv2/core/gpumat.hpp @@ -301,7 +301,7 @@ namespace cv { namespace gpu //! pointer to the reference counter; // when GpuMatrix points to user-allocated data, the pointer is NULL - int* refcount; + _Atomic_word* refcount; //! helper fields used in locateROI and adjustROI uchar* datastart; --- opencv-2.4.9.1+dfsg.orig/modules/core/include/opencv2/core/operations.hpp +++ opencv-2.4.9.1+dfsg/modules/core/include/opencv2/core/operations.hpp @@ -2281,7 +2281,7 @@ public: Hdr() : data(0), datastart(0), refcount(0), size(0), capacity(0) {}; _Tp* data; _Tp* datastart; - int* refcount; + _Atomic_word* refcount; size_t size; size_t capacity; }; @@ -2588,7 +2588,7 @@ template inline Ptr<_Tp>:: { if(obj) { - refcount = (int*)fastMalloc(sizeof(*refcount)); + refcount = (_Atomic_word*)fastMalloc(sizeof(*refcount)); *refcount = 1; } else @@ -2625,7 +2625,7 @@ template inline Ptr<_Tp>:: template inline Ptr<_Tp>& Ptr<_Tp>::operator = (const Ptr<_Tp>& _ptr) { - int* _refcount = _ptr.refcount; + _Atomic_word* _refcount = _ptr.refcount; if( _refcount ) CV_XADD(_refcount, 1); release(); --- opencv-2.4.9.1+dfsg.orig/modules/core/src/gpumat.cpp +++ opencv-2.4.9.1+dfsg/modules/core/src/gpumat.cpp @@ -716,7 +716,7 @@ void cv::gpu::GpuMat::create(int _rows, datastart = data = static_cast(devPtr); dataend = data + nettosize; - refcount = static_cast(fastMalloc(sizeof(*refcount))); + refcount = static_cast<_Atomic_word*>(fastMalloc(sizeof(*refcount))); *refcount = 1; } } --- opencv-2.4.9.1+dfsg.orig/modules/core/src/matrix.cpp +++ opencv-2.4.9.1+dfsg/modules/core/src/matrix.cpp @@ -213,7 +213,7 @@ void Mat::create(int d, const int* _size { size_t totalsize = alignSize(step.p[0]*size.p[0], (int)sizeof(*refcount)); data = datastart = (uchar*)fastMalloc(totalsize + (int)sizeof(*refcount)); - refcount = (int*)(data + totalsize); + refcount = (_Atomic_word*)(data + totalsize); *refcount = 1; } else --- opencv-2.4.9.1+dfsg.orig/modules/core/src/system.cpp +++ opencv-2.4.9.1+dfsg/modules/core/src/system.cpp @@ -903,7 +903,7 @@ struct Mutex::Impl void unlock() { pthread_spin_unlock(&sl); } pthread_spinlock_t sl; - int refcount; + _Atomic_word refcount; }; #else --- opencv-2.4.9.1+dfsg.orig/modules/gpu/include/opencv2/gpu/gpu.hpp +++ opencv-2.4.9.1+dfsg/modules/gpu/include/opencv2/gpu/gpu.hpp @@ -125,7 +125,7 @@ public: size_t step; uchar* data; - int* refcount; + _Atomic_word* refcount; uchar* datastart; uchar* dataend; --- opencv-2.4.9.1+dfsg.orig/modules/ocl/include/opencv2/ocl/ocl.hpp +++ opencv-2.4.9.1+dfsg/modules/ocl/include/opencv2/ocl/ocl.hpp @@ -404,7 +404,7 @@ namespace cv //! pointer to the reference counter; // when oclMatrix points to user-allocated data, the pointer is NULL - int *refcount; + _Atomic_word *refcount; //! helper fields used in locateROI and adjustROI //datastart and dataend are not used in current version --- opencv-2.4.9.1+dfsg.orig/modules/ocl/src/matrix_operations.cpp +++ opencv-2.4.9.1+dfsg/modules/ocl/src/matrix_operations.cpp @@ -591,7 +591,7 @@ void cv::ocl::oclMat::createEx(int _rows datastart = data = (uchar *)dev_ptr; dataend = data + nettosize; - refcount = (int *)fastMalloc(sizeof(*refcount)); + refcount = (_Atomic_word *)fastMalloc(sizeof(*refcount)); *refcount = 1; } } --- opencv-2.4.9.1+dfsg.orig/modules/python/src2/cv2.cpp +++ opencv-2.4.9.1+dfsg/modules/python/src2/cv2.cpp @@ -157,14 +157,14 @@ static PyObject* failmsgp(const char *fm static size_t REFCOUNT_OFFSET = (size_t)&(((PyObject*)0)->ob_refcnt) + (0x12345678 != *(const size_t*)"\x78\x56\x34\x12\0\0\0\0\0")*sizeof(int); -static inline PyObject* pyObjectFromRefcount(const int* refcount) +static inline PyObject* pyObjectFromRefcount(const _Atomic_word* refcount) { return (PyObject*)((size_t)refcount - REFCOUNT_OFFSET); } -static inline int* refcountFromPyObject(const PyObject* obj) +static inline _Atomic_word* refcountFromPyObject(const PyObject* obj) { - return (int*)((size_t)obj + REFCOUNT_OFFSET); + return (_Atomic_word*)((size_t)obj + REFCOUNT_OFFSET); } class NumpyAllocator : public MatAllocator @@ -173,7 +173,7 @@ public: NumpyAllocator() {} ~NumpyAllocator() {} - void allocate(int dims, const int* sizes, int type, int*& refcount, + void allocate(int dims, const int* sizes, int type, _Atomic_word*& refcount, uchar*& datastart, uchar*& data, size_t* step) { PyEnsureGIL gil; @@ -206,7 +206,7 @@ public: datastart = data = (uchar*)PyArray_DATA((PyArrayObject*) o); } - void deallocate(int* refcount, uchar*, uchar*) + void deallocate(_Atomic_word* refcount, uchar*, uchar*) { PyEnsureGIL gil; if( !refcount )