[SCM] givaro: library for arithmetic and algebraic computations branch, master, updated. debian/3.2.13-1.3-19-gc194a0c

Lifeng Sun lifongsun at gmail.com
Thu Jun 14 17:14:22 UTC 2012


The following commit has been merged in the master branch:
commit c194a0ccb29ef6d15da57be240919123ab874f42
Author: Lifeng Sun <lifongsun at gmail.com>
Date:   Wed Jun 13 09:14:18 2012 +0800

    Fix test-suite bus error on mipsel.
    
    The patch is expected to work on sparc as well.

diff --git a/debian/changelog b/debian/changelog
index e79d059..99cd442 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,3 +1,9 @@
+givaro (3.7.0-2) UNRELEASED; urgency=low
+
+  * Fix FTBFS on mipsel, thanks to Jean-Guillaume Dumas.
+
+ -- Lifeng Sun <lifongsun at gmail.com>  Fri, 15 Jun 2012 01:12:12 +0800
+
 givaro (3.7.0-1) unstable; urgency=low
 
   * New maintainer.
diff --git a/debian/patches/bus-error.patch b/debian/patches/bus-error.patch
new file mode 100644
index 0000000..721a730
--- /dev/null
+++ b/debian/patches/bus-error.patch
@@ -0,0 +1,152 @@
+--- a/src/kernel/memory/givaromm.C
++++ b/src/kernel/memory/givaromm.C
+@@ -29,8 +29,8 @@
+ #ifdef GIVARO_STATMEM
+ size_t& GivMMFreeList::physalloc = GivMMFreeList::info.physalloc;
+ size_t& GivMMFreeList::logalloc = GivMMFreeList::info.logalloc;
+-long*& GivMMFreeList::tablog = GivMMFreeList::info.tablog;
+-long*& GivMMFreeList::tabphy = GivMMFreeList::info.tabphy;
++size_t*& GivMMFreeList::tablog = GivMMFreeList::info.tablog;
++size_t*& GivMMFreeList::tabphy = GivMMFreeList::info.tabphy;
+ #endif
+ 
+ 
+@@ -145,8 +145,8 @@
+ }
+ 
+ 
+-// assume 4 bytes in a long:
+-#define ALIGN(s) (s>>2 + 1)  // may one more ?
++// // assume 4 bytes in a long:
++// #define ALIGN(s) (s>>2 + 1)  // may one more ?
+ 
+ BlocFreeList* GivMMFreeList::_allocate (const size_t s)
+ {
+@@ -161,7 +161,7 @@
+ 		BlocFreeList::TabFree[index] = tmp->u.nextfree;
+ 	}
+ 	else {
+-		tmp = (BlocFreeList*) malloc( (BlocFreeList::TabSize[index]+sizeof(BlocFreeList)-sizeof(long)) );
++		tmp = (BlocFreeList*) malloc( (BlocFreeList::TabSize[index]+sizeof(BlocFreeList)-sizeof(int64_t)) );
+ 
+ #ifdef GIVARO_STATMEM
+ 		tabphy[index] ++; physalloc += BlocFreeList::TabSize[index];
+@@ -182,7 +182,7 @@
+ {
+ 	if (src ==0) return _allocate(newsize) ;
+ 	if (newsize <= oldsize) return src;
+-	BlocFreeList* tmp = reinterpret_cast<BlocFreeList*>(((char*)src)-sizeof(BlocFreeList)+sizeof(long));
++	BlocFreeList* tmp = reinterpret_cast<BlocFreeList*>(((char*)src)-sizeof(BlocFreeList)+sizeof(int64_t));
+ #ifdef GIVARO_DEBUG
+ 	if ((tmp->u.index <0) || (tmp->u.index >= BlocFreeList::lenTables))
+ 		throw GivError("[GivMMFreeList::reallocate]: bad pointer 'src'");
+@@ -199,8 +199,8 @@
+ 
+ void GivMMFreeList::memcpy( void* dest, const void* src, const size_t size )
+ {
+-	BlocFreeList* tmp1 = reinterpret_cast<BlocFreeList*>(((char*)dest) - sizeof(BlocFreeList)+sizeof(long));
+-	BlocFreeList* tmp2 = reinterpret_cast<BlocFreeList*>(((char*)src) - sizeof(BlocFreeList)+sizeof(long));
++	BlocFreeList* tmp1 = reinterpret_cast<BlocFreeList*>(((char*)dest) - sizeof(BlocFreeList)+sizeof(int64_t));
++	BlocFreeList* tmp2 = reinterpret_cast<BlocFreeList*>(((char*)src) - sizeof(BlocFreeList)+sizeof(int64_t));
+ #ifdef GIVARO_DEBUG
+ 	if ((tmp1->u.index <0) || (tmp1->u.index >= BlocFreeList::lenTables))
+ 		throw GivError("[GivMMFreeList::memcpy]: bad pointer 'dest'");
+@@ -227,7 +227,7 @@
+ {
+ 
+ 	if (p ==0)
+-		return &(GivMMFreeList::_allocate(newsize+sizeof(long))->data[1]) ;
++		return &(GivMMFreeList::_allocate(newsize+sizeof(int64_t))->data[1]) ;
+ 
+ 
+ 	BlocFreeList* tmp = reinterpret_cast<BlocFreeList*>(((char*)p)-sizeof(BlocFreeList));
+@@ -241,11 +241,11 @@
+ 		memlog << "reall: in:" << (void*) tmp << ", user:" << (void*)p << std::endl;
+ #endif
+ 		int index = tmp->u.index;
+-		if (BlocFreeList::TabSize[index] >= sizeof(long)+newsize) return p;
++		if (BlocFreeList::TabSize[index] >= sizeof(int64_t)+newsize) return p;
+ 		GivMMRefCount::desallocate(p);
+ 	}
+ 	else --(tmp->data[0]);  // -- two pointer on the bloc:
+-	tmp = GivMMFreeList::_allocate( newsize+sizeof(long) );
++	tmp = GivMMFreeList::_allocate( newsize+sizeof(int64_t) );
+ 	tmp->data[0] = 1 ;
+ 	if (oldsize !=0) {
+ 		if (newsize <= oldsize) ::memcpy( &(tmp->data[1]), p, newsize );
+@@ -259,10 +259,10 @@
+ GivMMInfo::GivMMInfo()
+ {
+ 	tabbloc = ::new size_t[BlocFreeList::lenTables];
+-	tablog = ::new long[BlocFreeList::lenTables];
+-	tabphy = ::new long[BlocFreeList::lenTables];
++	tablog = ::new size_t[BlocFreeList::lenTables];
++	tabphy = ::new size_t[BlocFreeList::lenTables];
+ 	sizetab = BlocFreeList::lenTables;
+-	for (int i=0; i<sizetab; i++) {
++	for (size_t i=0; i<sizetab; i++) {
+ 		tabbloc[i] = BlocFreeList::TabSize[i];
+ 		tabphy[i] = 0;
+ 		tablog[i] = 0;
+--- a/src/kernel/memory/givaromm.h
++++ b/src/kernel/memory/givaromm.h
+@@ -31,6 +31,7 @@
+ #include "givaro/giverror.h"
+ #endif
+ 
++#include <givaro/givconfig.h>
+ namespace Givaro {
+ 
+ // ==================================================================== //
+@@ -42,10 +43,10 @@
+ 	~GivMMInfo();
+ 	size_t physalloc; // size in bytes of physical allocated bloc
+ 	size_t logalloc;  // size in bytes of "logical" allocated bloc
+-	long  sizetab;    // length of next arrays
++	size_t  sizetab;    // length of next arrays
+ 	size_t* tabbloc;  // size of all the blocs
+-	long* tablog;     // number of each logical allocated bloc
+-	long* tabphy;     // number of each physical allocated bloc
++	size_t* tablog;     // number of each logical allocated bloc
++	size_t* tabphy;     // number of each physical allocated bloc
+ 	std::ostream& print( std::ostream& so ) const;
+ };
+ 
+@@ -61,7 +62,7 @@
+ 		int index ;             // - index in free list
+ 		BlocFreeList* nextfree; // - pointer to the next free bloc (of the same size)
+ 	} u;
+-	long data[1];     // - alignement on long, may be no enough one some processor ?
++	int64_t data[1];     // - alignement on long, may be no enough one some processor ?
+ 
+ 	// -- Array of list of free bloc
+ 	static BlocFreeList* TabFree[];
+@@ -119,7 +120,7 @@
+ 	{
+ 		if (p==0) return ;
+ 		BlocFreeList* tmp = reinterpret_cast<BlocFreeList*>(((char*)p) -
+-						    (sizeof(BlocFreeList)-sizeof(long)));
++						    (sizeof(BlocFreeList)-sizeof(int64_t)));
+ 		int index = tmp->u.index;
+ #ifdef GIVARO_DEBUG
+ 		if ((index <0) || (index >= BlocFreeList::lenTables))
+@@ -144,8 +145,8 @@
+ 	friend class GivMMRefCount;
+ 	static size_t& physalloc;  // total amount of physical allocated bloc
+ 	static size_t& logalloc;   // total amoun of "logical" allocated bloc
+-	static long*& tablog;      // number of each logical allocated bloc
+-	static long*& tabphy;      // number of each physical allocated bloc
++	static size_t*& tablog;      // number of each logical allocated bloc
++	static size_t*& tabphy;      // number of each physical allocated bloc
+ #endif
+ 
+ 	// -- Initialization module
+@@ -172,7 +173,7 @@
+ #endif
+ 		int index;
+ 		BlocFreeList* tmp;
+-		size_t sz = s + sizeof(long);
++		size_t sz = s + sizeof(int64_t);
+ 		if ((sz <= 32) && ((tmp=BlocFreeList::TabFree[index =int(sz-1)]) !=0)) {
+ 			BlocFreeList::TabFree[index] = tmp->u.nextfree;
+ 			tmp->u.index = index;
diff --git a/debian/patches/series b/debian/patches/series
index 8ec0750..4f7469b 100644
--- a/debian/patches/series
+++ b/debian/patches/series
@@ -1,2 +1,3 @@
 givaro-makefile.patch
 doxygen-exclude-debian-dir.patch
+bus-error.patch

-- 
givaro: library for arithmetic and algebraic computations



More information about the debian-science-commits mailing list