portversion/portupgrade

Thomas Moestl t.moestl at tu-bs.de
Thu May 29 18:24:24 PDT 2003


On Thu, 2003/05/29 at 01:49:14 +0200, Thomas Moestl wrote:
> On Wed, 2003/05/28 at 15:22:44 -0700, Kris Kennaway wrote:
> > On Thu, May 29, 2003 at 12:21:44AM +0200, Thomas Moestl wrote:
> > > On Wed, 2003/05/28 at 15:02:15 -0700, Kris Kennaway wrote:
> > > > On Wed, May 28, 2003 at 05:55:09PM -0400, Garance A Drosihn wrote:
> > > > > Do you know if this a bug in ruby itself, or is it only in
> > > > > portversion && portupgrade?  Is it only happening on sparc64?
> > > > 
> > > > It's apparently a bug in ruby on sparc64.  I don't think the bug
> > > > exists on other 64-bit platforms, so it might be an endianness bug.
> > > 
> > > I believe that this is fixed in ruby-devel.
> > 
> > Hmm, I thought knu made a change to bsd.ruby.mk some time ago that
> > switched sparc64 over to using ruby-devel, but the problem persists
> > with freshly-built ports.
> 
> Hmmm, yes, I must have misremebered that.
> The bug really seems to be in ruby-bdb1, which is also marked
> NOT_FOR_ARCHS=sparc64.

To follow up on this, it seems that ruby_bdb1 is not at fault; the
error is in our libc db code. The attached patch should fix it.

I'll try to get approval to commit it.

	- Thomas

-- 
Thomas Moestl <t.moestl at tu-bs.de>	http://www.tu-bs.de/~y0015675/
              <tmm at FreeBSD.org>		http://people.FreeBSD.org/~tmm/
PGP fingerprint: 1C97 A604 2BD0 E492 51D0  9C0F 1FE6 4F1D 419C 776C
-------------- next part --------------
Index: lib/libc/db/btree/bt_put.c
===================================================================
RCS file: /vol/ncvs/src/lib/libc/db/btree/bt_put.c,v
retrieving revision 1.3
diff -u -r1.3 bt_put.c
--- lib/libc/db/btree/bt_put.c	16 Feb 2003 17:29:09 -0000	1.3
+++ lib/libc/db/btree/bt_put.c	30 May 2003 00:10:25 -0000
@@ -78,7 +78,7 @@
 	PAGE *h;
 	indx_t index, nxtindex;
 	pgno_t pg;
-	u_int32_t nbytes;
+	u_int32_t nbytes, tmp;
 	int dflags, exact, status;
 	char *dest, db[NOVFLSIZE], kb[NOVFLSIZE];
 
@@ -131,8 +131,9 @@
 			tkey.data = kb;
 			tkey.size = NOVFLSIZE;
 			memmove(kb, &pg, sizeof(pgno_t));
+			tmp = key->size;
 			memmove(kb + sizeof(pgno_t),
-			    &key->size, sizeof(u_int32_t));
+			    &tmp, sizeof(u_int32_t));
 			dflags |= P_BIGKEY;
 			key = &tkey;
 		}
@@ -142,8 +143,9 @@
 			tdata.data = db;
 			tdata.size = NOVFLSIZE;
 			memmove(db, &pg, sizeof(pgno_t));
+			tmp = data->size;
 			memmove(db + sizeof(pgno_t),
-			    &data->size, sizeof(u_int32_t));
+			    &tmp, sizeof(u_int32_t));
 			dflags |= P_BIGDATA;
 			data = &tdata;
 		}


More information about the freebsd-sparc64 mailing list