[Pkg-db-devel] Bug#257513: db4.2: problems for mips(el) fixed

Andreas Barth Andreas Barth <aba@not.so.argh.org>, 257513@bugs.debian.org
Sat, 21 Aug 2004 18:10:31 +0200


Hi,

I fixed this bug for unstable. I did only minimal changes, so that
this fix would also be ok for testing. I (or more correct: Frank)
tested this package on a mips-machine, and installation of slapd works
now. Thanks for Thiemo for the fix.



Cheers,
Andi

diff -Nur db4.2-4.2.52-prev/dbinc/mutex.h db4.2-4.2.52/dbinc/mutex.h
--- db4.2-4.2.52-prev/dbinc/mutex.h	2003-09-20 23:40:49.000000000 +0200
+++ db4.2-4.2.52/dbinc/mutex.h	2004-08-20 16:08:45.000000000 +0200
@@ -487,6 +487,48 @@
 #endif
 
 /*********************************************************************
+ * MIPS/gcc assembly.
+ *********************************************************************/
+#ifdef HAVE_MUTEX_MIPS_GCC_ASSEMBLY
+typedef u_int32_t tsl_t;
+
+#ifndef        MUTEX_ALIGN
+#define        MUTEX_ALIGN     4
+#endif
+
+#ifdef LOAD_ACTUAL_MUTEX_CODE
+/*
+ * For gcc/mips.  Should return 0 if could not acquire the lock, 1 if
+ * lock was acquired properly.
+ */
+static inline int
+MUTEX_SET(tsl_t *tsl) {
+       register tsl_t *__l = tsl;
+       register tsl_t __r;
+       asm volatile(
+               "       .set push       \n"
+               "       .set mips2      \n"
+               "       .set noreorder  \n"
+               "1:     ll      %0, %1  \n"
+               "       bnez    %0, 1f  \n"
+               "        nop            \n"
+               "       addu    %0, 1   \n"
+               "       sc      %0, %1  \n"
+               "       beqz    %0, 1b  \n"
+               "        move   %0, $0  \n"
+               "       sync            \n"
+               "1:     .set pop        \n"
+               : "=&r" (__r), "+m" (*__l)
+               : : "memory");
+       return __r ^ 1;
+}
+
+#define        MUTEX_UNSET(tsl)        (*(volatile tsl_t *)(tsl) = 0)
+#define        MUTEX_INIT(tsl)         MUTEX_UNSET(tsl)
+#endif
+#endif
+
+/*********************************************************************
  * HPPA/gcc assembly.
  *********************************************************************/
 #ifdef HAVE_MUTEX_HPPA_GCC_ASSEMBLY
diff -Nur db4.2-4.2.52-prev/debian/changelog db4.2-4.2.52/debian/changelog
--- db4.2-4.2.52-prev/debian/changelog	2004-08-20 15:00:15.000000000 +0200
+++ db4.2-4.2.52/debian/changelog	2004-08-21 05:57:19.000000000 +0200
@@ -1,3 +1,11 @@
+db4.2 (4.2.52-17) unstable; urgency=medium
+
+  * add mutex support for mips/mipsel. Closes: #257513
+  * added myself to the uploaders.
+  * add warning about configure
+
+ -- Andreas Barth <aba@not.so.argh.org>  Fri, 20 Aug 2004 16:10:43 +0200
+
 db4.2 (4.2.52-16) unstable; urgency=medium
 
   * Change maintainer address to Alioth mailing list, and add
diff -Nur db4.2-4.2.52-prev/debian/control db4.2-4.2.52/debian/control
--- db4.2-4.2.52-prev/debian/control	2004-08-20 15:00:15.000000000 +0200
+++ db4.2-4.2.52/debian/control	2004-08-20 16:09:57.000000000 +0200
@@ -2,7 +2,7 @@
 Section: libs
 Priority: standard
 Maintainer: Debian Berkeley DB Maintainers <pkg-db-devel@lists.alioth.debian.org>
-Uploaders: Clint Adams <schizo@debian.org>, Matthew Wilcox <willy@debian.org>
+Uploaders: Clint Adams <schizo@debian.org>, Matthew Wilcox <willy@debian.org>, Andreas Barth <aba@not.so.argh.org>
 Standards-Version: 3.6.1
 Build-Depends: tcl8.4-dev, procps [!hurd-i386], gcj (>= 3:3.2.2-0) [!hppa !mips !mipsel !hurd-i386], fastjar [!hppa !mips !mipsel !hurd-i386], sablevm [!hppa !mips !mipsel !hurd-i386], libgcj4-dev [!hppa !mips !mipsel !hurd-i386]
 
diff -Nur db4.2-4.2.52-prev/dist/README db4.2-4.2.52/dist/README
--- db4.2-4.2.52-prev/dist/README	1970-01-01 01:00:00.000000000 +0100
+++ db4.2-4.2.52/dist/README	2004-08-21 05:58:00.000000000 +0200
@@ -0,0 +1,2 @@
+If you want to update any of the files here, please see s_* (these are
+scripts).
diff -Nur db4.2-4.2.52-prev/dist/aclocal/mutex.ac db4.2-4.2.52/dist/aclocal/mutex.ac
--- db4.2-4.2.52-prev/dist/aclocal/mutex.ac	2003-06-16 16:54:39.000000000 +0200
+++ db4.2-4.2.52/dist/aclocal/mutex.ac	2004-08-20 16:08:45.000000000 +0200
@@ -373,6 +373,17 @@
 ], [db_cv_mutex="ARM/gcc-assembly"])
 fi
 
+# MIPS/gcc: Linux
+if test "$db_cv_mutex" = no; then
+AC_TRY_COMPILE(,[
+#if defined(__mips__) && defined(__GNUC__)
+       exit(0);
+#else
+       FAIL TO COMPILE/LINK
+#endif
+], [db_cv_mutex="MIPS/gcc-assembly"])
+fi
+
 # PaRisc/gcc: HP/UX
 if test "$db_cv_mutex" = no; then
 AC_TRY_COMPILE(,[
@@ -499,6 +510,10 @@
 			AC_DEFINE(HAVE_MUTEX_ARM_GCC_ASSEMBLY)
 			AH_TEMPLATE(HAVE_MUTEX_ARM_GCC_ASSEMBLY,
 			    [Define to 1 to use the GCC compiler and ARM assembly language mutexes.]);;
+MIPS/gcc-assembly)	ADDITIONAL_OBJS="mut_tas${o} $ADDITIONAL_OBJS"
+			AC_DEFINE(HAVE_MUTEX_MIPS_GCC_ASSEMBLY)
+			AH_TEMPLATE(HAVE_MUTEX_MIPS_GCC_ASSEMBLY,
+			    [Define to 1 to use the GCC compiler and MIPS assembly language mutexes.]);;
 HP/msem_init)		ADDITIONAL_OBJS="mut_tas${o} $ADDITIONAL_OBJS"
 			AC_DEFINE(HAVE_MUTEX_HPPA_MSEM_INIT)
 			AH_TEMPLATE(HAVE_MUTEX_HPPA_MSEM_INIT,
diff -Nur db4.2-4.2.52-prev/dist/config.hin db4.2-4.2.52/dist/config.hin
--- db4.2-4.2.52-prev/dist/config.hin	2003-12-03 22:10:00.000000000 +0100
+++ db4.2-4.2.52/dist/config.hin	2004-08-21 07:05:03.000000000 +0200
@@ -106,6 +106,9 @@
 /* Define to 1 to use the GCC compiler and ARM assembly language mutexes. */
 #undef HAVE_MUTEX_ARM_GCC_ASSEMBLY
 
+/* Define to 1 to use the GCC compiler and MIPS assembly language mutexes. */
+#undef HAVE_MUTEX_MIPS_GCC_ASSEMBLY
+
 /* Define to 1 to use the Apple/Darwin _spin_lock_try mutexes. */
 #undef HAVE_MUTEX_DARWIN_SPIN_LOCK_TRY
 
diff -Nur db4.2-4.2.52-prev/dist/configure.mutexes-disabled db4.2-4.2.52/dist/configure.mutexes-disabled
--- db4.2-4.2.52-prev/dist/configure.mutexes-disabled	2004-08-20 15:00:15.000000000 +0200
+++ db4.2-4.2.52/dist/configure.mutexes-disabled	2004-08-21 06:03:24.000000000 +0200
@@ -28427,6 +28427,51 @@
 rm -f conftest.$ac_objext conftest.$ac_ext
 fi
 
+# MIPS/gcc: Linux
+if test "$db_cv_mutex" = no; then
+cat >conftest.$ac_ext <<_ACEOF
+#line $LINENO "configure"
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+#if defined(__mips__) && defined(__GNUC__)
+	exit(0);
+#else
+	FAIL TO COMPILE/LINK
+#endif
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+         { ac_try='test -s conftest.$ac_objext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  db_cv_mutex="MIPS/gcc-assembly"
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+fi
+rm -f conftest.$ac_objext conftest.$ac_ext
+fi
+
 # PaRisc/gcc: HP/UX
 if test "$db_cv_mutex" = no; then
 cat >conftest.$ac_ext <<_ACEOF
@@ -28870,6 +28915,12 @@
 
 
 ;;
+MIPS/gcc-assembly)	ADDITIONAL_OBJS="mut_tas${o} $ADDITIONAL_OBJS"
+			cat >>confdefs.h <<\_ACEOF
+#define HAVE_MUTEX_MIPS_GCC_ASSEMBLY 1
+_ACEOF
+
+;;
 ARM/gcc-assembly)	ADDITIONAL_OBJS="mut_tas${o} $ADDITIONAL_OBJS"
 			cat >>confdefs.h <<\_ACEOF
 #define HAVE_MUTEX_ARM_GCC_ASSEMBLY 1
-- 
   http://home.arcor.de/andreas-barth/
   PGP 1024/89FB5CE5  DC F1 85 6D A6 45 9C 0F  3B BE F1 D0 C5 D1 D9 0C