[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