From cbc85992cd683cbadbf2ed2011cad1ee04aa42b5 Mon Sep 17 00:00:00 2001 From: Ulrich Drepper Date: Tue, 4 Jan 2000 17:51:12 +0000 Subject: Update. 2000-01-04 Andreas Jaeger * nss/nss_db/dummy-db.h (struct db24): Add missing field flags. (struct db27): Add missing fields byteswapped, join and flags; remove wrong member handleq. (struct dbc27): Correct lock field. * nss/makedb.c: Remove __P. 2000-01-04 Andreas Jaeger * nss/nss_db/db-open.c (internal_setent): Check for db_open for success, fix a memory leak and clean up function. 2000-01-04 Ulrich Drepper * Makefile (install): Pass $(install_root) to ldconfig. Patch by Akira YOSHIYAMA . 2000-01-03 Jakub Jelinek * soft-fp/op-1.h: Fix division for machines using not normalizing version of udiv_qrnnd in longlong.h. * soft-fp/sysdeps/mips/sfp-machine.h: Likewise. * soft-fp/sysdeps/mips/mips64/sfp-machine.h: Likewise. * soft-fp/sysdeps/sparc/sparc64/sfp-machine.h: Likewise. Patch by Eddie C. Dost . * soft-fp/soft-fp.h (QItype, UQItype): New types used by longlong.h. 2000-01-03 Andreas Schwab * sysdeps/generic/dl-sysdep.c: Initialize __libc_multiple_libcs, needed for change in common symbol handing in newer binutils. --- ChangeLog | 35 +++++++++ Makefile | 2 +- nss/makedb.c | 15 ++-- nss/nss_db/db-open.c | 111 ++++++++++++++-------------- nss/nss_db/dummy-db.h | 12 ++- soft-fp/op-1.h | 12 +-- soft-fp/soft-fp.h | 2 + soft-fp/sysdeps/mips/mips64/sfp-machine.h | 2 +- soft-fp/sysdeps/mips/sfp-machine.h | 2 +- soft-fp/sysdeps/sparc/sparc64/sfp-machine.h | 2 +- sysdeps/generic/dl-sysdep.c | 2 +- 11 files changed, 116 insertions(+), 81 deletions(-) diff --git a/ChangeLog b/ChangeLog index df09e6b07e..79cdb1b225 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,38 @@ +2000-01-04 Andreas Jaeger + + * nss/nss_db/dummy-db.h (struct db24): Add missing field flags. + (struct db27): Add missing fields byteswapped, join and flags; + remove wrong member handleq. + (struct dbc27): Correct lock field. + + * nss/makedb.c: Remove __P. + +2000-01-04 Andreas Jaeger + + * nss/nss_db/db-open.c (internal_setent): Check for db_open for + success, fix a memory leak and clean up function. + +2000-01-04 Ulrich Drepper + + * Makefile (install): Pass $(install_root) to ldconfig. + Patch by Akira YOSHIYAMA . + +2000-01-03 Jakub Jelinek + + * soft-fp/op-1.h: Fix division for machines using not normalizing + version of udiv_qrnnd in longlong.h. + * soft-fp/sysdeps/mips/sfp-machine.h: Likewise. + * soft-fp/sysdeps/mips/mips64/sfp-machine.h: Likewise. + * soft-fp/sysdeps/sparc/sparc64/sfp-machine.h: Likewise. + Patch by Eddie C. Dost . + + * soft-fp/soft-fp.h (QItype, UQItype): New types used by longlong.h. + +2000-01-03 Andreas Schwab + + * sysdeps/generic/dl-sysdep.c: Initialize __libc_multiple_libcs, + needed for change in common symbol handing in newer binutils. + 2000-01-03 Ulrich Drepper * sysdeps/unix/sysv/linux/i386/mmap64.S: Fix code for running on diff --git a/Makefile b/Makefile index de8507864d..73812e18e1 100644 --- a/Makefile +++ b/Makefile @@ -106,7 +106,7 @@ install-symbolic-link: subdir_install install: -test ! -x $(common-objpfx)elf/ldconfig || \ - $(common-objpfx)elf/ldconfig $(inst_slibdir) $(inst_libdir) + $(common-objpfx)elf/ldconfig -r $(install_root) $(inst_slibdir) $(inst_libdir) ifneq (no,$(PERL)) ifeq (/usr,$(prefix)) ifeq (,$(install_root)) diff --git a/nss/makedb.c b/nss/makedb.c index d7662585e2..62bea5c63d 100644 --- a/nss/makedb.c +++ b/nss/makedb.c @@ -91,10 +91,10 @@ static const char args_doc[] = N_("\ INPUT-FILE OUTPUT-FILE\n-o OUTPUT-FILE INPUT-FILE\n-u INPUT-FILE"); /* Prototype for option handler. */ -static error_t parse_opt __P ((int key, char *arg, struct argp_state *state)); +static error_t parse_opt (int key, char *arg, struct argp_state *state); /* Function to print some extra text in the help message. */ -static char *more_help __P ((int key, const char *text, void *input)); +static char *more_help (int key, const char *text, void *input); /* Data structure to communicate with argp functions. */ static struct argp argp = @@ -104,17 +104,14 @@ static struct argp argp = /* Prototypes for local functions. */ -static int process_input __P ((FILE *input, const char *inname, NSS_DB *output, - int to_lowercase, int be_quiet)); -static int print_database __P ((NSS_DB *db)); +static int process_input (FILE *input, const char *inname, NSS_DB *output, + int to_lowercase, int be_quiet); +static int print_database (NSS_DB *db); static NSS_DB *dbopen (const char *fname, int oper, int mode); -int main __P ((int argc, char *argv[])); int -main (argc, argv) - int argc; - char *argv[]; +main (int argc, char *argv[]) { const char *input_name; FILE *input_file; diff --git a/nss/nss_db/db-open.c b/nss/nss_db/db-open.c index c3a0679485..75d39efaf6 100644 --- a/nss/nss_db/db-open.c +++ b/nss/nss_db/db-open.c @@ -118,6 +118,9 @@ internal_setent (const char *file, NSS_DB **dbp) enum nss_status status = NSS_STATUS_SUCCESS; int err; void *db; + int fd; + int result; + if (*dbp == NULL) { @@ -138,77 +141,71 @@ internal_setent (const char *file, NSS_DB **dbp) err = DL_CALL_FCT (libdb_db_open, (file, DB_BTREE, DB_RDONLY, 0, NULL, NULL, &db)); + if (err != 0) + { + __set_errno (err); + *dbp = NULL; + return err == EAGAIN ? NSS_STATUS_TRYAGAIN : NSS_STATUS_UNAVAIL; + } + /* Construct the object we pass up. */ *dbp = (NSS_DB *) malloc (sizeof (NSS_DB)); - if (*dbp != NULL) + if (*dbp == NULL) + return NSS_STATUS_UNAVAIL; + + (*dbp)->db = db; + + /* The functions are at different positions for the different + versions. Sigh. */ + switch (libdb_version) { - (*dbp)->db = db; - - /* The functions are at different positions for the different - versions. Sigh. */ - switch (libdb_version) - { - case db24: - (*dbp)->close = - (int (*) (void *, uint32_t)) ((struct db24 *) db)->close; - (*dbp)->fd = - (int (*) (void *, int *)) ((struct db24 *) db)->fd; - (*dbp)->get = - (int (*) (void *, void *, void *, void *, uint32_t)) - ((struct db24 *) db)->get; - break; - case db27: - (*dbp)->close = - (int (*) (void *, uint32_t)) ((struct db27 *) db)->close; - (*dbp)->fd = - (int (*) (void *, int *)) ((struct db27 *) db)->fd; - (*dbp)->get = - (int (*) (void *, void *, void *, void *, uint32_t)) - ((struct db27 *) db)->get; - break; - default: - abort (); - } + case db24: + (*dbp)->close = + (int (*) (void *, uint32_t)) ((struct db24 *) db)->close; + (*dbp)->fd = + (int (*) (void *, int *)) ((struct db24 *) db)->fd; + (*dbp)->get = + (int (*) (void *, void *, void *, void *, uint32_t)) + ((struct db24 *) db)->get; + break; + case db27: + (*dbp)->close = + (int (*) (void *, uint32_t)) ((struct db27 *) db)->close; + (*dbp)->fd = + (int (*) (void *, int *)) ((struct db27 *) db)->fd; + (*dbp)->get = + (int (*) (void *, void *, void *, void *, uint32_t)) + ((struct db27 *) db)->get; + break; + default: + abort (); } + /* We have to make sure the file is `closed on exec'. */ + err = DL_CALL_FCT ((*dbp)->fd, (db, &fd)); if (err != 0) { __set_errno (err); - *dbp = NULL; - status = err == EAGAIN ? NSS_STATUS_TRYAGAIN : NSS_STATUS_UNAVAIL; + result = -1; } else { - /* We have to make sure the file is `closed on exec'. */ - int fd; - int result; - - err = DL_CALL_FCT ((*dbp)->fd, (db, &fd)); - if (err != 0) - { - __set_errno (err); - result = -1; - } - else - { - int flags = result = fcntl (fd, F_GETFD, 0); + int flags = result = fcntl (fd, F_GETFD, 0); - if (result >= 0) - { - flags |= FD_CLOEXEC; - result = fcntl (fd, F_SETFD, flags); - } - } - if (result < 0) + if (result >= 0) { - /* Something went wrong. Close the stream and return a - failure. */ - DL_CALL_FCT ((*dbp)->close, (db, 0)); - status = NSS_STATUS_UNAVAIL; + flags |= FD_CLOEXEC; + result = fcntl (fd, F_SETFD, flags); } - - if (result < 0) - *dbp = NULL; + } + if (result < 0) + { + /* Something went wrong. Close the stream and return a + failure. */ + DL_CALL_FCT ((*dbp)->close, (db, 0)); + status = NSS_STATUS_UNAVAIL; + free (*dbp); + *dbp = NULL; } } diff --git a/nss/nss_db/dummy-db.h b/nss/nss_db/dummy-db.h index 600d51d984..6ac8b77bb1 100644 --- a/nss/nss_db/dummy-db.h +++ b/nss/nss_db/dummy-db.h @@ -70,6 +70,7 @@ struct db24 int (*put) (void *, void *, DBT *, DBT *, uint32_t); int (*stat) (void *, void *, void *(*)(size_t), uint32_t); int (*sync) (void *, uint32_t); + uint32_t flags; }; @@ -99,6 +100,7 @@ struct db27 void *mutexp; enum { dummy27 } type; int byteswapped; + int saved_open_fd; void *dbenv; void *mp_dbenv; void *internal; @@ -114,9 +116,6 @@ struct db27 void *tqh_first; void **tqh_last; } active_queue; - struct { - void *lh_first; - } handleq; uint8_t fileid[20]; uint32_t log_fileid; size_t pgsize; @@ -130,9 +129,11 @@ struct db27 int (*del) (void *, void *, DBT *, uint32_t); int (*fd) (void *, int *); int (*get) (void *, void *, DBT *, DBT *, uint32_t); + int (*join) (void *, void **, uint32_t, void **); int (*put) (void *, void *, DBT *, DBT *, uint32_t); int (*stat) (void *, void *, void *(*)(size_t), uint32_t); int (*sync) (void *, uint32_t); + uint32_t flags; }; @@ -148,7 +149,10 @@ struct dbc27 uint32_t lid; uint32_t locker; DBT lock_dbt; - uint32_t lock[14]; + struct{ + uint32_t pgno; + uint8_t fileid[20]; + } lock; size_t mylock; DBT rkey; DBT rdata; diff --git a/soft-fp/op-1.h b/soft-fp/op-1.h index 48bf4ce7e2..53e0fce1b1 100644 --- a/soft-fp/op-1.h +++ b/soft-fp/op-1.h @@ -199,25 +199,25 @@ #define _FP_DIV_MEAT_1_udiv_norm(fs, R, X, Y) \ do { \ - _FP_W_TYPE _nh, _nl, _q, _r; \ + _FP_W_TYPE _nh, _nl, _q, _r, _y; \ \ /* Normalize Y -- i.e. make the most significant bit set. */ \ - Y##_f <<= _FP_WFRACXBITS_##fs - 1; \ + _y = Y##_f << _FP_WFRACXBITS_##fs; \ \ /* Shift X op correspondingly high, that is, up one full word. */ \ - if (X##_f <= Y##_f) \ + if (X##_f < Y##_f) \ { \ + R##_e--; \ _nl = 0; \ _nh = X##_f; \ } \ else \ { \ - R##_e++; \ - _nl = X##_f << (_FP_W_TYPE_SIZE-1); \ + _nl = X##_f << (_FP_W_TYPE_SIZE - 1); \ _nh = X##_f >> 1; \ } \ \ - udiv_qrnnd(_q, _r, _nh, _nl, Y##_f); \ + udiv_qrnnd(_q, _r, _nh, _nl, _y); \ R##_f = _q | (_r != 0); \ } while (0) diff --git a/soft-fp/soft-fp.h b/soft-fp/soft-fp.h index 3c5072e516..26798ecf25 100644 --- a/soft-fp/soft-fp.h +++ b/soft-fp/soft-fp.h @@ -159,8 +159,10 @@ do { \ #define UWtype _FP_W_TYPE #define W_TYPE_SIZE _FP_W_TYPE_SIZE +typedef int QItype __attribute__((mode(QI))); typedef int SItype __attribute__((mode(SI))); typedef int DItype __attribute__((mode(DI))); +typedef unsigned int UQItype __attribute__((mode(QI))); typedef unsigned int USItype __attribute__((mode(SI))); typedef unsigned int UDItype __attribute__((mode(DI))); #if _FP_W_TYPE_SIZE == 32 diff --git a/soft-fp/sysdeps/mips/mips64/sfp-machine.h b/soft-fp/sysdeps/mips/mips64/sfp-machine.h index 3f9d3abb8c..730deae872 100644 --- a/soft-fp/sysdeps/mips/mips64/sfp-machine.h +++ b/soft-fp/sysdeps/mips/mips64/sfp-machine.h @@ -11,7 +11,7 @@ _FP_MUL_MEAT_2_wide_3mul(_FP_WFRACBITS_Q,R,X,Y,umul_ppmm) #define _FP_DIV_MEAT_S(R,X,Y) _FP_DIV_MEAT_1_imm(S,R,X,Y,_FP_DIV_HELP_imm) -#define _FP_DIV_MEAT_D(R,X,Y) _FP_DIV_MEAT_1_udiv(D,R,X,Y) +#define _FP_DIV_MEAT_D(R,X,Y) _FP_DIV_MEAT_1_udiv_norm(D,R,X,Y) #define _FP_DIV_MEAT_Q(R,X,Y) _FP_DIV_MEAT_2_udiv(Q,R,X,Y) #define _FP_NANFRAC_S ((_FP_QNANBIT_S << 1) - 1) diff --git a/soft-fp/sysdeps/mips/sfp-machine.h b/soft-fp/sysdeps/mips/sfp-machine.h index 575225a69b..3b2a40f0e2 100644 --- a/soft-fp/sysdeps/mips/sfp-machine.h +++ b/soft-fp/sysdeps/mips/sfp-machine.h @@ -10,7 +10,7 @@ #define _FP_MUL_MEAT_Q(R,X,Y) \ _FP_MUL_MEAT_4_wide(_FP_WFRACBITS_Q,R,X,Y,umul_ppmm) -#define _FP_DIV_MEAT_S(R,X,Y) _FP_DIV_MEAT_1_udiv(S,R,X,Y) +#define _FP_DIV_MEAT_S(R,X,Y) _FP_DIV_MEAT_1_udiv_norm(S,R,X,Y) #define _FP_DIV_MEAT_D(R,X,Y) _FP_DIV_MEAT_2_udiv(D,R,X,Y) #define _FP_DIV_MEAT_Q(R,X,Y) _FP_DIV_MEAT_4_udiv(Q,R,X,Y) diff --git a/soft-fp/sysdeps/sparc/sparc64/sfp-machine.h b/soft-fp/sysdeps/sparc/sparc64/sfp-machine.h index 0d82c60a30..4703dd070e 100644 --- a/soft-fp/sysdeps/sparc/sparc64/sfp-machine.h +++ b/soft-fp/sysdeps/sparc/sparc64/sfp-machine.h @@ -49,7 +49,7 @@ do { \ _FP_MUL_MEAT_RESET_FE) #define _FP_DIV_MEAT_S(R,X,Y) _FP_DIV_MEAT_1_imm(S,R,X,Y,_FP_DIV_HELP_imm) -#define _FP_DIV_MEAT_D(R,X,Y) _FP_DIV_MEAT_1_udiv(D,R,X,Y) +#define _FP_DIV_MEAT_D(R,X,Y) _FP_DIV_MEAT_1_udiv_norm(D,R,X,Y) #define _FP_DIV_MEAT_Q(R,X,Y) _FP_DIV_MEAT_2_udiv(Q,R,X,Y) #define _FP_NANFRAC_S ((_FP_QNANBIT_S << 1) - 1) diff --git a/sysdeps/generic/dl-sysdep.c b/sysdeps/generic/dl-sysdep.c index 4f2a2f6da3..784e7adb5e 100644 --- a/sysdeps/generic/dl-sysdep.c +++ b/sysdeps/generic/dl-sysdep.c @@ -47,7 +47,7 @@ extern void ENTRY_POINT (void); ElfW(Addr) _dl_base_addr; int __libc_enable_secure; -int __libc_multiple_libcs; /* Defining this here avoids the inclusion +int __libc_multiple_libcs = 0; /* Defining this here avoids the inclusion of init-first. */ /* This variable contains the lowest stack address ever used. */ void *__libc_stack_end; -- cgit v1.2.3