From cf29ffbef960c4c454d94919c6f27206f77961ff Mon Sep 17 00:00:00 2001 From: Ulrich Drepper Date: Sun, 25 May 1997 01:12:55 +0000 Subject: [PATCH] Update. 1997-05-25 03:00 Ulrich Drepper * elf/dynamic-link.h (_dl_verbose): New variable, declare. * elf/rtld.c (_dl_verbose): New variable, define. (dl_main): Define _dl-verbose based on DL_WARN environment variable. * sysdeps/i386/dl-machine.h (elf_machine_rel): Print warning about changed size in copy relocation only if symbol in shared object is larger or _dl_verbose is nonzero. * sysdeps/m68k/dl-machine.h (elf_machine_rel): Likewise. * sysdeps/powerpc/dl-machine.h (elf_machine_rel): Likewise. * sysdeps/sparc/dl-machine.h (elf_machine_rel): Likewise. * nis/nss_nis/nis-ethers.c: Don't use relative include paths, use <...>. * nis/nss_nis/nis-grp.c: Likewise. * nis/nss_nis/nis-hosts.c: Likewise. * nis/nss_nis/nis-network.c: Likewise. * nis/nss_nis/nis-proto.c: Likewise. * nis/nss_nis/nis-pwd.c: Likewise. * nis/nss_nis/nis-rpc.c: Likewise. * nis/nss_nis/nis-spwd.c: Likewise. * sysdeps/unix/sysv/sysd-stdio.c: Likewise. * wcsmbs/wcscoll.c: Likewise. * wcsmbs/wcstod.c: Likewise. * wcsmbs/wcstof.c: Likewise. * wcsmbs/wcstol.c: Likewise. * wcsmbs/wcstold.c: Likewise. * wcsmbs/wcsxfrm.c: Likewise. Reported by Zack Weinberg . * time/strftime.c: Implement # flag which changes case of output for %a, %b, %B, %p, and %Z format. When printing numbers, the given field width is always respected. This means that padding happens only up to the given width. Proposed by Stephen Gildea . 1997-05-25 00:44 Ulrich Drepper * sysdeps/i386/fpu/__math.h (logb): Fix thinko, reverse output values. Reported by Andreas Jaeger . 1997-05-24 21:03 Philip Blundell * db/btree/bt_open.c (__bt_open): Only try to use st_blksize (from struct stat) if it exists for this port. 1997-05-24 20:34 Philip Blundell * sysdeps/standalone/arm/errnos.h: Add EPERM. 1997-05-23 16:28 Philip Blundell * linewrap.h: New file, needed to compile argp without libio. 1997-05-24 11:59 Andreas Jaeger * manual/stdio.texi (Formatted Messages): Corrected some typos. 1997-05-24 11:58 Philip Blundell * sysdeps/stub/start.c: Fix typo. --- ChangeLog | 63 +++++++++++++++++++++++++++++++++ db/btree/bt_open.c | 2 ++ elf/dynamic-link.h | 5 +++ elf/rtld.c | 10 +++--- linewrap.h | 1 + manual/stdio.texi | 28 ++++++++------- nis/nss_nis/nis-ethers.c | 2 +- nis/nss_nis/nis-grp.c | 4 +-- nis/nss_nis/nis-hosts.c | 6 ++-- nis/nss_nis/nis-network.c | 4 +-- nis/nss_nis/nis-proto.c | 24 ++++++------- nis/nss_nis/nis-pwd.c | 4 +-- nis/nss_nis/nis-rpc.c | 20 +++++------ nis/nss_nis/nis-spwd.c | 4 +-- sysdeps/i386/dl-machine.h | 3 +- sysdeps/i386/fpu/__math.h | 2 +- sysdeps/m68k/dl-machine.h | 3 +- sysdeps/powerpc/dl-machine.h | 5 ++- sysdeps/sparc/dl-machine.h | 3 +- sysdeps/standalone/arm/errnos.h | 27 +++++++------- sysdeps/stub/start.c | 2 +- sysdeps/unix/sysv/sysd-stdio.c | 2 +- time/strftime.c | 36 +++++++++++++++++-- wcsmbs/wcscoll.c | 2 +- wcsmbs/wcstod.c | 2 +- wcsmbs/wcstof.c | 2 +- wcsmbs/wcstol.c | 2 +- wcsmbs/wcstold.c | 2 +- wcsmbs/wcsxfrm.c | 2 +- 29 files changed, 192 insertions(+), 80 deletions(-) create mode 100644 linewrap.h diff --git a/ChangeLog b/ChangeLog index 65709ad8bd..2d6539c859 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,66 @@ +1997-05-25 03:00 Ulrich Drepper + + * elf/dynamic-link.h (_dl_verbose): New variable, declare. + * elf/rtld.c (_dl_verbose): New variable, define. + (dl_main): Define _dl-verbose based on DL_WARN environment variable. + * sysdeps/i386/dl-machine.h (elf_machine_rel): Print warning about + changed size in copy relocation only if symbol in shared object + is larger or _dl_verbose is nonzero. + * sysdeps/m68k/dl-machine.h (elf_machine_rel): Likewise. + * sysdeps/powerpc/dl-machine.h (elf_machine_rel): Likewise. + * sysdeps/sparc/dl-machine.h (elf_machine_rel): Likewise. + + * nis/nss_nis/nis-ethers.c: Don't use relative include paths, use + <...>. + * nis/nss_nis/nis-grp.c: Likewise. + * nis/nss_nis/nis-hosts.c: Likewise. + * nis/nss_nis/nis-network.c: Likewise. + * nis/nss_nis/nis-proto.c: Likewise. + * nis/nss_nis/nis-pwd.c: Likewise. + * nis/nss_nis/nis-rpc.c: Likewise. + * nis/nss_nis/nis-spwd.c: Likewise. + * sysdeps/unix/sysv/sysd-stdio.c: Likewise. + * wcsmbs/wcscoll.c: Likewise. + * wcsmbs/wcstod.c: Likewise. + * wcsmbs/wcstof.c: Likewise. + * wcsmbs/wcstol.c: Likewise. + * wcsmbs/wcstold.c: Likewise. + * wcsmbs/wcsxfrm.c: Likewise. + Reported by Zack Weinberg . + + * time/strftime.c: Implement # flag which changes case of output for + %a, %b, %B, %p, and %Z format. + When printing numbers, the given field width is always respected. + This means that padding happens only up to the given width. + Proposed by Stephen Gildea . + +1997-05-25 00:44 Ulrich Drepper + + * sysdeps/i386/fpu/__math.h (logb): Fix thinko, reverse output + values. + Reported by Andreas Jaeger . + +1997-05-24 21:03 Philip Blundell + + * db/btree/bt_open.c (__bt_open): Only try to use st_blksize (from + struct stat) if it exists for this port. + +1997-05-24 20:34 Philip Blundell + + * sysdeps/standalone/arm/errnos.h: Add EPERM. + +1997-05-23 16:28 Philip Blundell + + * linewrap.h: New file, needed to compile argp without libio. + +1997-05-24 11:59 Andreas Jaeger + + * manual/stdio.texi (Formatted Messages): Corrected some typos. + +1997-05-24 11:58 Philip Blundell + + * sysdeps/stub/start.c: Fix typo. + 1997-05-21 17:53 Miles Bader * argp-help.c (hol_add_cluster): Initialize CL->depth. diff --git a/db/btree/bt_open.c b/db/btree/bt_open.c index 503db85274..1396f3a255 100644 --- a/db/btree/bt_open.c +++ b/db/btree/bt_open.c @@ -259,7 +259,9 @@ __bt_open(fname, flags, mode, openinfo, dflags) * Don't overflow the page offset type. */ if (b.psize == 0) { +#ifdef _STATBUF_ST_BLKSIZE b.psize = sb.st_blksize; +#endif if (b.psize < MINPSIZE) b.psize = MINPSIZE; if (b.psize > MAX_PAGE_OFFSET + 1) diff --git a/elf/dynamic-link.h b/elf/dynamic-link.h index da63633361..3377ee7ff6 100644 --- a/elf/dynamic-link.h +++ b/elf/dynamic-link.h @@ -22,6 +22,11 @@ #include +/* Global read-only variable defined in rtld.c which is nonzero if we + shall give more warning messages. */ +extern int _dl_verbose __attribute__ ((unused)); + + /* Read the dynamic section at DYN and fill in INFO with indices DT_*. */ static inline void __attribute__ ((unused)) diff --git a/elf/rtld.c b/elf/rtld.c index bad01a8844..ffa569e729 100644 --- a/elf/rtld.c +++ b/elf/rtld.c @@ -56,6 +56,7 @@ static void print_missing_version (int errcode, const char *objname, int _dl_argc; char **_dl_argv; const char *_dl_rpath; +int _dl_verbose; /* Set nonzero during loading and initialization of executable and libraries, cleared before the executable's entry point runs. This @@ -206,12 +207,13 @@ dl_main (const ElfW(Phdr) *phdr, int has_interp = 0; mode = getenv ("LD_TRACE_LOADED_OBJECTS") != NULL ? trace : normal; + _dl_verbose = *(getenv ("LD_WARN") ?: "") == '\0' ? 0 : 1; - /* LAZY is determined by the parameters --datadeps and --function-deps - if we trace the binary. */ + /* LAZY is determined by the environment variable LD_WARN and + LD_BIND_NOW if we trace the binary. */ if (mode == trace) - lazy = (*(getenv ("LD_WARN") ?: "") == '\0' ? -1 - : (*(getenv ("LD_BIND_NOW") ?: "") == '\0' ? 1 : 0)); + lazy = (_dl_verbose + ? (*(getenv ("LD_BIND_NOW") ?: "") == '\0' ? 1 : 0) : -1); else lazy = !__libc_enable_secure && *(getenv ("LD_BIND_NOW") ?: "") == '\0'; diff --git a/linewrap.h b/linewrap.h new file mode 100644 index 0000000000..03ca090301 --- /dev/null +++ b/linewrap.h @@ -0,0 +1 @@ +#include "stdio/linewrap.h" diff --git a/manual/stdio.texi b/manual/stdio.texi index 3d6a6c1f2f..085a1c95a8 100644 --- a/manual/stdio.texi +++ b/manual/stdio.texi @@ -3825,7 +3825,7 @@ wait until the rest of the manual is more done and polished. On systems which are based on System V messages of programs (especially the system tools) are printed in a strict form using the @code{fmtmsg} function. The uniformity sometimes helps the user to interpret messages -and the strictness tests of the @code{fmtmsg} function ensures that the +and the strictness tests of the @code{fmtmsg} function ensure that the programmer follows some minimal requirements. @menu @@ -3839,7 +3839,7 @@ programmer follows some minimal requirements. @subsection Printing Formatted Messages Messages can be printed to standard error and/or to the console. To -select the destination the programmer can use the following to values, +select the destination the programmer can use the following two values, bitwise OR combined if wanted, for the @var{classification} parameter of @code{fmtmsg}: @@ -3850,7 +3850,7 @@ Display the message in standard error. Display the message on the system console. @end vtable -The errorneous piece of the system can be signal by exactly one of the +The errorneous piece of the system can be signalled by exactly one of the following values which also is bitwise ORed with the @var{classification} parameter to @code{fmtmsg}: @@ -3900,7 +3900,7 @@ reference to the online documentation where more information can be found. It should contain the @var{label} value and a unique identification number. -Each of the parameters can be of a special value which means this value +Each of the parameters can be a special value which means this value is to be omitted. The symbolic names for these values are: @vtable @code @@ -3919,7 +3919,7 @@ Ignore @var{action} parameter. Ignore @var{tag} parameter. @end vtable -There is another way certain fields can be omitted from the output the +There is another way certain fields can be omitted from the output to standard error. This is described below in the description of environment variables influencing the behaviour. @@ -3961,10 +3961,10 @@ ignored. This function is specified in the X/Open Portability Guide. It is also available on all system derived from System V. -The function return the value @code{MM_OK} if no error occurred. If +The function returns the value @code{MM_OK} if no error occurred. If only the printing to standard error failed, it returns @code{MM_NOMSG}. If printing to the console fails, it returns @code{MM_NOCON}. If -nothing is printed @code{MM_NOTOK} is returned. Among situation where +nothing is printed @code{MM_NOTOK} is returned. Among situations where all outputs fail this last value is also returned if a parameter value is incorrect. @end deftypefun @@ -3974,7 +3974,7 @@ There are two environment variables which influence the behaviour of output actually happening on standard error (@emph{not} the console output). Each of the five fields can explicitely be enabled. To do this the user has to put the @code{MSGVERB} variable with a format like -following in the environment before calling the @code{fmtmsg} function +the following in the environment before calling the @code{fmtmsg} function the first time: @smallexample @@ -3990,7 +3990,7 @@ The second environment variable which influences the behaviour of @code{fmtmsg} is @code{SEV_LEVEL}. This variable and the change in the behaviour of @code{fmtmsg} is not specified in the X/Open Portability Guide. It is available in System V systems, though. It can be used to -introduce no severity levels. By default, only the five severity levels +introduce new severity levels. By default, only the five severity levels described above are available. Any other numeric value would make @code{fmtmsg} print nothing. @@ -4026,7 +4026,7 @@ There is another possibility to introduce severity classes beside using the environment variable @code{SEV_LEVEL}. This simplifies the task of introducing new classes in a running program. One could use the @code{setenv} or @code{putenv} function to set the environment variable, -but this toilsome. +but this is toilsome. @deftypefun int addseverity (int @var{severity}, const char *@var{string}) This function allows to introduce new severity classes which can be @@ -4039,13 +4039,17 @@ value. If @var{string} is @code{NULL} the severity class with the numeric value according to @var{severity} is removed. +It is not possible to overwrite or remove one of the default severity +classes. All calls to @code{addseverity} with @var{severity} set to one +of the values for the default classes will fail. + The return value is @code{MM_OK} if the task was successfully performed. If the return value is @code{MM_NOTOK} something went wrong. This could mean that no more memory is available or a class is not available when it has to be removed. This function is not specified in the X/Open Portability Guide although -the @code{fmtsmg} is. It is available on System V systems. +the @code{fmtsmg} function is. It is available on System V systems. @end deftypefun @@ -4120,7 +4124,7 @@ TO FIX: action @noindent I.e., the output produced by the @var{text} and the @var{tag} parameters -to @code{fmtmsg} vanished. Please also note the now there is no colon +to @code{fmtmsg} vanished. Please also note that now there is no colon after the @code{NOTE} and @code{NOTE2} strings in the output. This is not necessary since there is no more output on this line since the text is missing. diff --git a/nis/nss_nis/nis-ethers.c b/nis/nss_nis/nis-ethers.c index 2d08be7967..a9730a3744 100644 --- a/nis/nss_nis/nis-ethers.c +++ b/nis/nss_nis/nis-ethers.c @@ -41,7 +41,7 @@ struct ether #define ENTNAME etherent #define STRUCTURE ether #define EXTERN_PARSER -#include "../nss/nss_files/files-parse.c" +#include struct response { diff --git a/nis/nss_nis/nis-grp.c b/nis/nss_nis/nis-grp.c index 139edf2dd8..cbe4d35555 100644 --- a/nis/nss_nis/nis-grp.c +++ b/nis/nss_nis/nis-grp.c @@ -1,4 +1,4 @@ -/* Copyright (C) 1996 Free Software Foundation, Inc. +/* Copyright (C) 1996, 1997 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Thorsten Kukuk , 1996. @@ -32,7 +32,7 @@ #define ENTNAME grent #define STRUCTURE group #define EXTERN_PARSER -#include "../nss/nss_files/files-parse.c" +#include /* Protect global state against multiple changers */ __libc_lock_define_initialized (static, lock) diff --git a/nis/nss_nis/nis-hosts.c b/nis/nss_nis/nis-hosts.c index 42fc5aeac7..5ca24c7625 100644 --- a/nis/nss_nis/nis-hosts.c +++ b/nis/nss_nis/nis-hosts.c @@ -31,8 +31,8 @@ #include "nss-nis.h" /* Get implementation for some internal functions. */ -#include "../../resolv/mapv4v6addr.h" -#include "../../resolv/mapv4v6hostent.h" +#include +#include #define ENTNAME hostent #define DATABASE "hosts" @@ -47,7 +47,7 @@ struct hostent_data #define TRAILING_LIST_MEMBER h_aliases #define TRAILING_LIST_SEPARATOR_P isspace -#include "../../nss/nss_files/files-parse.c" +#include LINE_PARSER ("#", { diff --git a/nis/nss_nis/nis-network.c b/nis/nss_nis/nis-network.c index 391f4c5895..0253ac8453 100644 --- a/nis/nss_nis/nis-network.c +++ b/nis/nss_nis/nis-network.c @@ -1,4 +1,4 @@ -/* Copyright (C) 1996 Free Software Foundation, Inc. +/* Copyright (C) 1996, 1997 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Thorsten Kukuk , 1996. @@ -33,7 +33,7 @@ /* Get the declaration of the parser function. */ #define ENTNAME netent #define EXTERN_PARSER -#include "../nss/nss_files/files-parse.c" +#include __libc_lock_define_initialized (static, lock) diff --git a/nis/nss_nis/nis-proto.c b/nis/nss_nis/nis-proto.c index 92ef1c0010..d939c9d5c7 100644 --- a/nis/nss_nis/nis-proto.c +++ b/nis/nss_nis/nis-proto.c @@ -31,7 +31,7 @@ /* Get the declaration of the parser function. */ #define ENTNAME protoent #define EXTERN_PARSER -#include "../nss/nss_files/files-parse.c" +#include __libc_lock_define_initialized (static, lock) @@ -45,7 +45,7 @@ static struct response *start = NULL; static struct response *next = NULL; static int -saveit (int instatus, char *inkey, int inkeylen, char *inval, +saveit (int instatus, char *inkey, int inkeylen, char *inval, int invallen, char *indata) { if (instatus != YP_TRUE) @@ -68,7 +68,7 @@ saveit (int instatus, char *inkey, int inkeylen, char *inval, strncpy (next->val, inval, invallen); next->val[invallen] = '\0'; } - + return 0; } @@ -78,9 +78,9 @@ internal_nis_setprotoent (void) char *domainname; struct ypall_callback ypcb; enum nss_status status; - + yp_get_default_domain (&domainname); - + while (start != NULL) { if (start->val != NULL) @@ -90,12 +90,12 @@ internal_nis_setprotoent (void) free (next); } start = NULL; - + ypcb.foreach = saveit; ypcb.data = NULL; status = yperr2nss (yp_all (domainname, "protocols.bynumber", &ypcb)); next = start; - + return status; } @@ -128,9 +128,9 @@ _nss_nis_endprotoent (void) } start = NULL; next = NULL; - + __libc_lock_unlock (lock); - + return NSS_STATUS_SUCCESS; } @@ -148,12 +148,12 @@ internal_nis_getprotoent_r (struct protoent *proto, do { char *p; - + if (next == NULL) return NSS_STATUS_NOTFOUND; p = strcpy (buffer, next->val); next = next->next; - + while (isspace (*p)) ++p; @@ -162,7 +162,7 @@ internal_nis_getprotoent_r (struct protoent *proto, return NSS_STATUS_TRYAGAIN; } while (!parse_res); - + return NSS_STATUS_SUCCESS; } diff --git a/nis/nss_nis/nis-pwd.c b/nis/nss_nis/nis-pwd.c index 60a59fe4a8..b273332d03 100644 --- a/nis/nss_nis/nis-pwd.c +++ b/nis/nss_nis/nis-pwd.c @@ -1,4 +1,4 @@ -/* Copyright (C) 1996 Free Software Foundation, Inc. +/* Copyright (C) 1996, 1997 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Thorsten Kukuk , 1996. @@ -32,7 +32,7 @@ #define ENTNAME pwent #define STRUCTURE passwd #define EXTERN_PARSER -#include "../nss/nss_files/files-parse.c" +#include /* Protect global state against multiple changers */ __libc_lock_define_initialized (static, lock) diff --git a/nis/nss_nis/nis-rpc.c b/nis/nss_nis/nis-rpc.c index c4c9135e3f..c20988312a 100644 --- a/nis/nss_nis/nis-rpc.c +++ b/nis/nss_nis/nis-rpc.c @@ -31,7 +31,7 @@ /* Get the declaration of the parser function. */ #define ENTNAME rpcent #define EXTERN_PARSER -#include "../nss/nss_files/files-parse.c" +#include __libc_lock_define_initialized (static, lock) @@ -51,7 +51,7 @@ typedef struct intern_t intern_t; static intern_t intern = {NULL, NULL}; static int -saveit (int instatus, char *inkey, int inkeylen, char *inval, +saveit (int instatus, char *inkey, int inkeylen, char *inval, int invallen, char *indata) { intern_t *intern = (intern_t *)indata; @@ -76,7 +76,7 @@ saveit (int instatus, char *inkey, int inkeylen, char *inval, strncpy (intern->next->val, inval, invallen); intern->next->val[invallen] = '\0'; } - + return 0; } @@ -86,10 +86,10 @@ internal_nis_setrpcent (intern_t *intern) char *domainname; struct ypall_callback ypcb; enum nss_status status; - + if (yp_get_default_domain (&domainname)) return NSS_STATUS_UNAVAIL; - + while (intern->start != NULL) { if (intern->start->val != NULL) @@ -134,7 +134,7 @@ internal_nis_endrpcent (intern_t *intern) free (intern->next); } intern->start = NULL; - + return NSS_STATUS_SUCCESS; } @@ -159,10 +159,10 @@ internal_nis_getrpcent_r (struct rpcent *rpc, char *buffer, size_t buflen, struct parser_data *pdata = (void *) buffer; int parse_res; char *p; - + if (data->start == NULL) internal_nis_setrpcent (data); - + /* Get the next entry until we found a correct one. */ do { @@ -172,13 +172,13 @@ internal_nis_getrpcent_r (struct rpcent *rpc, char *buffer, size_t buflen, data->next = data->next->next; while (isspace (*p)) ++p; - + parse_res = _nss_files_parse_rpcent (p, rpc, pdata, buflen); if (!parse_res && errno == ERANGE) return NSS_STATUS_TRYAGAIN; } while (!parse_res); - + return NSS_STATUS_SUCCESS; } diff --git a/nis/nss_nis/nis-spwd.c b/nis/nss_nis/nis-spwd.c index 193cd7190c..cc4cf3a0ba 100644 --- a/nis/nss_nis/nis-spwd.c +++ b/nis/nss_nis/nis-spwd.c @@ -1,4 +1,4 @@ -/* Copyright (C) 1996 Free Software Foundation, Inc. +/* Copyright (C) 1996, 1997 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Thorsten Kukuk , 1996. @@ -32,7 +32,7 @@ #define ENTNAME spent #define STRUCTURE spwd #define EXTERN_PARSER -#include "../nss/nss_files/files-parse.c" +#include /* Protect global state against multiple changers */ __libc_lock_define_initialized (static, lock) diff --git a/sysdeps/i386/dl-machine.h b/sysdeps/i386/dl-machine.h index ea938c3b88..3e0f9b126c 100644 --- a/sysdeps/i386/dl-machine.h +++ b/sysdeps/i386/dl-machine.h @@ -263,7 +263,8 @@ elf_machine_rel (struct link_map *map, const Elf32_Rel *reloc, switch (ELF32_R_TYPE (reloc->r_info)) { case R_386_COPY: - if (sym->st_size != refsym->st_size) + if (sym->st_size > refsym->st_size + || (_dl_verbose && sym->st_size < refsym->st_size)) { const char *strtab; diff --git a/sysdeps/i386/fpu/__math.h b/sysdeps/i386/fpu/__math.h index e6f5a31581..d5945e8ca2 100644 --- a/sysdeps/i386/fpu/__math.h +++ b/sysdeps/i386/fpu/__math.h @@ -433,7 +433,7 @@ logb (double __x) register double __value, __junk; __asm __volatile__ ("fxtract\n\t" - : "=t" (__value), "=u" (__junk) : "0" (__x)); + : "=t" (__junk), "=u" (__value) : "0" (__x)); return __value; } diff --git a/sysdeps/m68k/dl-machine.h b/sysdeps/m68k/dl-machine.h index dee2a4653b..1523ddb1c6 100644 --- a/sysdeps/m68k/dl-machine.h +++ b/sysdeps/m68k/dl-machine.h @@ -227,7 +227,8 @@ elf_machine_rela (struct link_map *map, const Elf32_Rela *reloc, switch (ELF32_R_TYPE (reloc->r_info)) { case R_68K_COPY: - if (sym->st_size != refsym->st_size) + if (sym->st_size > refsym->st_size + || (_dl_verbose && sym->st_size < refsym->st_size)) { const char *strtab; diff --git a/sysdeps/powerpc/dl-machine.h b/sysdeps/powerpc/dl-machine.h index 64ca7b4b69..17e8d9a12d 100644 --- a/sysdeps/powerpc/dl-machine.h +++ b/sysdeps/powerpc/dl-machine.h @@ -591,7 +591,8 @@ elf_machine_rela (struct link_map *map, const Elf32_Rela *reloc, } else if (rinfo == R_PPC_COPY) { - if (sym->st_size != refsym->st_size) + if (sym->st_size > refsym->st_size + || (_dl_verbose && sym->st_size < refsym->st_size)) { const char *strtab; @@ -666,5 +667,3 @@ elf_machine_rela (struct link_map *map, const Elf32_Rela *reloc, #define ELF_MACHINE_NO_REL 1 #endif - - diff --git a/sysdeps/sparc/dl-machine.h b/sysdeps/sparc/dl-machine.h index accd3a1682..20def2c5b7 100644 --- a/sysdeps/sparc/dl-machine.h +++ b/sysdeps/sparc/dl-machine.h @@ -130,7 +130,8 @@ elf_machine_rela (struct link_map *map, const Elf32_Rela *reloc, switch (ELF32_R_TYPE (reloc->r_info)) { case R_SPARC_COPY: - if (sym->st_size != refsym->st_size) + if (sym->st_size > refsym->st_size + || (_dl_verbose && sym->st_size < refsym->st_size)) { const char *strtab; diff --git a/sysdeps/standalone/arm/errnos.h b/sysdeps/standalone/arm/errnos.h index 428fe9eb77..8090a8074d 100644 --- a/sysdeps/standalone/arm/errnos.h +++ b/sysdeps/standalone/arm/errnos.h @@ -1,20 +1,20 @@ /* Copyright (C) 1991, 1994, 1996, 1997 Free Software Foundation, Inc. -This file is part of the GNU C Library. + This file is part of the GNU C Library. -The GNU C Library is free software; you can redistribute it and/or -modify it under the terms of the GNU Library General Public License as -published by the Free Software Foundation; either version 2 of the -License, or (at your option) any later version. + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Library General Public License as + published by the Free Software Foundation; either version 2 of the + License, or (at your option) any later version. -The GNU C Library is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -Library General Public License for more details. + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Library General Public License for more details. -You should have received a copy of the GNU Library General Public -License along with the GNU C Library; see the file COPYING.LIB. If -not, write to the Free Software Foundation, Inc., 675 Mass Ave, -Cambridge, MA 02139, USA. */ + You should have received a copy of the GNU Library General Public + License along with the GNU C Library; see the file COPYING.LIB. If not, + write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, + Boston, MA 02111-1307, USA. */ /* This file defines the `errno' constants for standalone ARM machines. These constants are essentially arbitrary. */ @@ -46,6 +46,7 @@ Cambridge, MA 02139, USA. */ #define ENOENT 18 #define EPROTOTYPE 19 #define ESRCH 20 +#define EPERM 21 #endif #define __set_errno(val) errno = (val) diff --git a/sysdeps/stub/start.c b/sysdeps/stub/start.c index c16582d9b3..cf7efc931a 100644 --- a/sysdeps/stub/start.c +++ b/sysdeps/stub/start.c @@ -13,4 +13,4 @@ weak_alias (__data_start, data_start) #endif volatile int __errno; -string_alias (__errno, errno) +strong_alias (__errno, errno) diff --git a/sysdeps/unix/sysv/sysd-stdio.c b/sysdeps/unix/sysv/sysd-stdio.c index 35dae27a37..7f82340201 100644 --- a/sysdeps/unix/sysv/sysd-stdio.c +++ b/sysdeps/unix/sysv/sysd-stdio.c @@ -1,2 +1,2 @@ #define EINTR_REPEAT -#include <../sysdeps/generic/sysd-stdio.c> +#include diff --git a/time/strftime.c b/time/strftime.c index 4cb6c9e260..040b787558 100644 --- a/time/strftime.c +++ b/time/strftime.c @@ -282,6 +282,7 @@ memcpy_uppcase (dest, src, len) return dest; } + #if ! HAVE_TM_GMTOFF /* Yield the difference between *A and *B, measured in seconds, ignoring leap seconds. */ @@ -464,6 +465,7 @@ strftime (s, maxsize, format, tp) int width = -1; int to_lowcase = 0; int to_uppcase = 0; + int change_case = 0; #if DO_MULTIBYTE @@ -555,6 +557,9 @@ strftime (s, maxsize, format, tp) case '^': to_uppcase = 1; continue; + case '#': + change_case = 1; + continue; default: break; @@ -592,9 +597,11 @@ strftime (s, maxsize, format, tp) switch (*f) { #define DO_NUMBER(d, v) \ - digits = d; number_value = v; goto do_number + digits = width == -1 ? d : width; \ + number_value = v; goto do_number #define DO_NUMBER_SPACEPAD(d, v) \ - digits = d; number_value = v; goto do_number_spacepad + digits = width == -1 ? d : width; \ + number_value = v; goto do_number_spacepad case '%': if (modifier != 0) @@ -605,12 +612,22 @@ strftime (s, maxsize, format, tp) case 'a': if (modifier != 0) goto bad_format; + if (change_case) + { + to_uppcase = 1; + to_lowcase = 0; + } cpy (aw_len, a_wkday); break; case 'A': if (modifier != 0) goto bad_format; + if (change_case) + { + to_uppcase = 1; + to_lowcase = 0; + } cpy (wkday_len, f_wkday); break; @@ -624,6 +641,11 @@ strftime (s, maxsize, format, tp) case 'B': if (modifier != 0) goto bad_format; + if (change_case) + { + to_uppcase = 1; + to_lowcase = 0; + } cpy (month_len, f_month); break; @@ -824,6 +846,11 @@ strftime (s, maxsize, format, tp) /* FALLTHROUGH */ case 'p': + if (change_case) + { + to_uppcase = 0; + to_lowcase = 1; + } cpy (ap_len, ampm); break; @@ -996,6 +1023,11 @@ strftime (s, maxsize, format, tp) DO_NUMBER (2, (tp->tm_year % 100 + 100) % 100); case 'Z': + if (change_case) + { + to_uppcase = 0; + to_lowcase = 1; + } cpy (zonelen, zone); break; diff --git a/wcsmbs/wcscoll.c b/wcsmbs/wcscoll.c index 9b1a8a4d38..27031786cd 100644 --- a/wcsmbs/wcscoll.c +++ b/wcsmbs/wcscoll.c @@ -28,4 +28,4 @@ #endif #define STRCMP wcscmp -#include "../string/strcoll.c" +#include diff --git a/wcsmbs/wcstod.c b/wcsmbs/wcstod.c index 6996c950bd..1c149874a8 100644 --- a/wcsmbs/wcstod.c +++ b/wcsmbs/wcstod.c @@ -22,4 +22,4 @@ #define USE_WIDE_CHAR 1 -#include "../stdlib/strtod.c" +#include diff --git a/wcsmbs/wcstof.c b/wcsmbs/wcstof.c index 38cd95a4e1..82a634a3d3 100644 --- a/wcsmbs/wcstof.c +++ b/wcsmbs/wcstof.c @@ -40,4 +40,4 @@ (flt) = u.f; \ } while (0) -#include "../stdlib/strtod.c" +#include diff --git a/wcsmbs/wcstol.c b/wcsmbs/wcstol.c index aef2e2bf03..2f7d144255 100644 --- a/wcsmbs/wcstol.c +++ b/wcsmbs/wcstol.c @@ -20,4 +20,4 @@ #define USE_WIDE_CHAR 1 -#include "../stdlib/strtol.c" +#include diff --git a/wcsmbs/wcstold.c b/wcsmbs/wcstold.c index 1c7cc6527f..fc8c010bec 100644 --- a/wcsmbs/wcstold.c +++ b/wcsmbs/wcstold.c @@ -41,4 +41,4 @@ (flt) = u.d; \ } while (0) -#include "../stdlib/strtod.c" +#include diff --git a/wcsmbs/wcsxfrm.c b/wcsmbs/wcsxfrm.c index b899185aa5..d3687c37e1 100644 --- a/wcsmbs/wcsxfrm.c +++ b/wcsmbs/wcsxfrm.c @@ -31,4 +31,4 @@ #define STRLEN wcslen #define STPNCPY __wcpncpy -#include "../string/strxfrm.c" +#include