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