summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorUlrich Drepper <drepper@redhat.com>1998-09-25 21:55:47 +0000
committerUlrich Drepper <drepper@redhat.com>1998-09-25 21:55:47 +0000
commit390a4882ffd0e4092641ffdd6c0e017e41793d0c (patch)
treee333892580057f9dc28819fe3f153e84823d8d3d
parente503270ca511dd3092c953fe5f9a178f0d04b1ad (diff)
downloadglibc-390a4882ffd0e4092641ffdd6c0e017e41793d0c.tar.gz
Update.
1998-09-25 Ulrich Drepper <drepper@cygnus.com> * math/Makefile (gmp-objs): Add mp_clz_tab. 1998-09-25 David S. Miller <davem@pierdol.cobaltmicro.com> * sysdeps/sparc/fpu/feholdexcpt.c (feholdexcept): Clear bits don't set them. * stdlib/longlong.h (sparc udiv_qrnnd): Define inline version for cpus lacking hardware multiply and divide. 1998-09-24 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de> * db/Makefile ($(inst_slibdir)/libdb.so$(libdb1.so-version)): Use $(<F), not $(^F). 1998-09-24 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de> * db/btree/bt_delete.c: Fix -Wparentheses warning. 1998-09-24 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de> * Makefile ($(inst_includedir)/gnu/lib-names.h): Use $(do-install). * time/strftime.c (f_wkday): Remove duplicate definition. * time/strftime.c (my_strftime): Don't store past the end of a
-rw-r--r--ChangeLog29
-rw-r--r--Makefile5
-rw-r--r--db/Makefile2
-rw-r--r--db/btree/bt_delete.c12
-rw-r--r--math/Makefile2
-rw-r--r--stdlib/longlong.h39
-rw-r--r--sysdeps/sparc/fpu/feholdexcpt.c4
7 files changed, 71 insertions, 22 deletions
diff --git a/ChangeLog b/ChangeLog
index c0a3218970..ffb638c4c3 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,10 +1,35 @@
+1998-09-25 Ulrich Drepper <drepper@cygnus.com>
+
+ * math/Makefile (gmp-objs): Add mp_clz_tab.
+
+1998-09-25 David S. Miller <davem@pierdol.cobaltmicro.com>
+
+ * sysdeps/sparc/fpu/feholdexcpt.c (feholdexcept): Clear bits don't
+ set them.
+ * stdlib/longlong.h (sparc udiv_qrnnd): Define inline version for
+ cpus lacking hardware multiply and divide.
+
+1998-09-24 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
+
+ * db/Makefile ($(inst_slibdir)/libdb.so$(libdb1.so-version)): Use
+ $(<F), not $(^F).
+
+1998-09-24 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
+
+ * db/btree/bt_delete.c: Fix -Wparentheses warning.
+
+1998-09-24 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
+
+ * Makefile ($(inst_includedir)/gnu/lib-names.h): Use
+ $(do-install).
+
1998-09-24 Ulrich Drepper <drepper@cygnus.com>
* debug/catchsegv.sh: Also produce output if cloned process died.
1998-09-24 Paul Eggert <eggert@twinsun.com>
- * strftime.c (f_wkday): Remove duplicate definition.
+ * time/strftime.c (f_wkday): Remove duplicate definition.
(f_wkday, f_month, a_wkday, a_month, ampm): Define as macros when
!defined _NL_CURRENT && !HAVE_STRFTIME; this propagates the
1998-09-11 fix to this case.
@@ -12,7 +37,7 @@
1998-09-24 Paul Eggert <eggert@twinsun.com>
- * strftime.c (my_strftime): Don't store past the end of a
+ * time/strftime.c (my_strftime): Don't store past the end of a
zero-sized buffer.
1998-09-24 Paul Eggert <eggert@twinsun.com>
diff --git a/Makefile b/Makefile
index 711a5ac5db..c439a29d06 100644
--- a/Makefile
+++ b/Makefile
@@ -153,10 +153,7 @@ $(inst_includedir)/gnu/stubs.h: subdir_install
ifeq (yes,$(build-shared))
$(inst_includedir)/gnu/lib-names.h: $(common-objpfx)gnu/lib-names.h $(+force)
- $(make-target-directory)
- if test -r $@ && cmp -s $< $@; \
- then echo 'gnu/lib-names.h unchanged'; \
- else $(INSTALL_DATA) $< $@; fi
+ $(do-install)
endif
# The `glibcbug' script contains the version number and it shall be rebuild
diff --git a/db/Makefile b/db/Makefile
index 039a77e961..4df6f886b9 100644
--- a/db/Makefile
+++ b/db/Makefile
@@ -34,7 +34,7 @@ install-others := $(inst_slibdir)/libdb.so$(libdb1.so-version) \
$(inst_slibdir)/libdb.so$(libdb1.so-version): $(inst_slibdir)/libdb1-$(version).so $(+force)
rm -f $@
- $(LN_S) $(^F) $@
+ $(LN_S) $(<F) $@
$(db1-headers:%=$(inst_includedir)/db1/%): $(inst_includedir)/db1/%: % $(+force)
$(do-install)
diff --git a/db/btree/bt_delete.c b/db/btree/bt_delete.c
index ece1ab656e..b654c9f1f8 100644
--- a/db/btree/bt_delete.c
+++ b/db/btree/bt_delete.c
@@ -154,7 +154,7 @@ __bt_stkacq(t, hp, c)
pgno_t pgno;
recno_t nextpg, prevpg;
int exact, level;
-
+
/*
* Find the first occurrence of the key in the tree. Toss the
* currently locked page so we don't hit an already-locked page.
@@ -270,7 +270,7 @@ __bt_stkacq(t, hp, c)
if ((h = mpool_get(t->bt_mp, prevpg, 0)) == NULL)
return (1);
}
-
+
ret: mpool_put(t->bt_mp, h, 0);
return ((*hp = mpool_get(t->bt_mp, c->pg.pgno, 0)) == NULL);
@@ -402,7 +402,7 @@ __bt_pdelete(t, h)
/* Get the parent page. */
if ((pg = mpool_get(t->bt_mp, parent->pgno, 0)) == NULL)
return (RET_ERROR);
-
+
index = parent->index;
bi = GETBINTERNAL(pg, index);
@@ -418,7 +418,7 @@ __bt_pdelete(t, h)
* root page. If it's the rootpage, turn it back into an empty
* leaf page.
*/
- if (NEXTINDEX(pg) == 1)
+ if (NEXTINDEX(pg) == 1) {
if (pg->pgno == P_ROOT) {
pg->lower = BTDATAOFF;
pg->upper = t->bt_psize;
@@ -428,7 +428,7 @@ __bt_pdelete(t, h)
return (RET_ERROR);
continue;
}
- else {
+ } else {
/* Pack remaining key items at the end of the page. */
nksize = NBINTERNAL(bi->ksize);
from = (char *)pg + pg->upper;
@@ -571,7 +571,7 @@ __bt_curdel(t, key, h, index)
key = &c->key;
}
/* Check previous key, if not at the beginning of the page. */
- if (index > 0) {
+ if (index > 0) {
e.page = h;
e.index = index - 1;
if (__bt_cmp(t, key, &e) == 0) {
diff --git a/math/Makefile b/math/Makefile
index 5110375413..9e6869a0e5 100644
--- a/math/Makefile
+++ b/math/Makefile
@@ -156,7 +156,7 @@ o = .os
endif
gmp-objs = $(patsubst %,$(common-objpfx)stdlib/%$o,\
add_n sub_n cmp addmul_1 mul_1 mul_n divmod_1 \
- lshift rshift)
+ lshift rshift mp_clz_tab)
$(objpfx)atest-exp: $(gmp-objs)
$(objpfx)atest-sincos: $(gmp-objs)
$(objpfx)atest-exp2: $(gmp-objs)
diff --git a/stdlib/longlong.h b/stdlib/longlong.h
index 197aac41da..4e41ac4a25 100644
--- a/stdlib/longlong.h
+++ b/stdlib/longlong.h
@@ -1,5 +1,5 @@
/* longlong.h -- definitions for mixed size 32/64 bit arithmetic.
- Copyright (C) 1991, 92, 93, 94, 96, 97 Free Software Foundation, Inc.
+ Copyright (C) 1991, 92, 93, 94, 96, 97, 98 Free Software Foundation, Inc.
This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or
@@ -1135,12 +1135,39 @@ extern USItype __udiv_qrnnd ();
#define UMUL_TIME 39 /* 39 instructions */
#endif
#ifndef udiv_qrnnd
-#ifndef LONGLONG_STANDALONE
+/* It's quite necessary to add this much assembler for the sparc.
+ The default udiv_qrnnd (in C) is more than 10 times slower! */
#define udiv_qrnnd(q, r, n1, n0, d) \
- do { USItype __r; \
- (q) = __udiv_qrnnd (&__r, (n1), (n0), (d)); \
- (r) = __r; \
- } while (0)
+ __asm__ ("! Inlined udiv_qrnnd
+ mov 32,%%g1
+ subcc %1,%2,%%g0
+1: bcs 5f
+ addxcc %0,%0,%0 ! shift n1n0 and a q-bit in lsb
+ sub %1,%2,%1 ! this kills msb of n
+ addx %1,%1,%1 ! so this can't give carry
+ subcc %%g1,1,%%g1
+2: bne 1b
+ subcc %1,%2,%%g0
+ bcs 3f
+ addxcc %0,%0,%0 ! shift n1n0 and a q-bit in lsb
+ b 3f
+ sub %1,%2,%1 ! this kills msb of n
+4: sub %1,%2,%1
+5: addxcc %1,%1,%1
+ bcc 2b
+ subcc %%g1,1,%%g1
+! Got carry from n. Subtract next step to cancel this carry.
+ bne 4b
+ addcc %0,%0,%0 ! shift n1n0 and a 0-bit in lsb
+ sub %1,%2,%1
+3: xnor %0,0,%0
+ ! End of inline udiv_qrnnd" \
+ : "=&r" ((USItype)(q)), \
+ "=&r" ((USItype)(r)) \
+ : "r" ((USItype)(d)), \
+ "1" ((USItype)(n1)), \
+ "0" ((USItype)(n0)) : "%g1" __AND_CLOBBER_CC)
+#define UDIV_TIME (3+7*32) /* 7 instructions/iteration. 32 iterations. */
extern USItype __udiv_qrnnd __P ((USItype *, USItype, USItype, USItype));
#define UDIV_TIME 140
#endif /* LONGLONG_STANDALONE */
diff --git a/sysdeps/sparc/fpu/feholdexcpt.c b/sysdeps/sparc/fpu/feholdexcpt.c
index 9b4c2134f7..b86671ca28 100644
--- a/sysdeps/sparc/fpu/feholdexcpt.c
+++ b/sysdeps/sparc/fpu/feholdexcpt.c
@@ -1,5 +1,5 @@
/* Store current floating-point environment and clear exceptions.
- Copyright (C) 1997 Free Software Foundation, Inc.
+ Copyright (C) 1997, 1998 Free Software Foundation, Inc.
This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or
@@ -27,7 +27,7 @@ feholdexcept (fenv_t *envp)
__fenv_stfsr (*envp);
/* Set all exceptions to non-stop. */
- tmp = *envp | (0x1f << 23);
+ tmp = *envp & ~(0x1f << 23);
__fenv_ldfsr (tmp);