about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog63
-rw-r--r--db/btree/bt_open.c2
-rw-r--r--elf/dynamic-link.h5
-rw-r--r--elf/rtld.c10
-rw-r--r--linewrap.h1
-rw-r--r--manual/stdio.texi28
-rw-r--r--nis/nss_nis/nis-ethers.c2
-rw-r--r--nis/nss_nis/nis-grp.c4
-rw-r--r--nis/nss_nis/nis-hosts.c6
-rw-r--r--nis/nss_nis/nis-network.c4
-rw-r--r--nis/nss_nis/nis-proto.c24
-rw-r--r--nis/nss_nis/nis-pwd.c4
-rw-r--r--nis/nss_nis/nis-rpc.c20
-rw-r--r--nis/nss_nis/nis-spwd.c4
-rw-r--r--sysdeps/i386/dl-machine.h3
-rw-r--r--sysdeps/i386/fpu/__math.h2
-rw-r--r--sysdeps/m68k/dl-machine.h3
-rw-r--r--sysdeps/powerpc/dl-machine.h5
-rw-r--r--sysdeps/sparc/dl-machine.h3
-rw-r--r--sysdeps/standalone/arm/errnos.h27
-rw-r--r--sysdeps/stub/start.c2
-rw-r--r--sysdeps/unix/sysv/sysd-stdio.c2
-rw-r--r--time/strftime.c36
-rw-r--r--wcsmbs/wcscoll.c2
-rw-r--r--wcsmbs/wcstod.c2
-rw-r--r--wcsmbs/wcstof.c2
-rw-r--r--wcsmbs/wcstol.c2
-rw-r--r--wcsmbs/wcstold.c2
-rw-r--r--wcsmbs/wcsxfrm.c2
29 files changed, 192 insertions, 80 deletions
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  <drepper@cygnus.com>
+
+	* 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 <zack@rabi.phys.columbia.edu>.
+
+	* 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 <gildea@intouchsys.com>.
+
+1997-05-25 00:44  Ulrich Drepper  <drepper@cygnus.com>
+
+	* sysdeps/i386/fpu/__math.h (logb): Fix thinko, reverse output
+	values.
+	Reported by Andreas Jaeger <aj@arthur.rhein-neckar.de>.
+
+1997-05-24 21:03  Philip Blundell  <pjb27@cam.ac.uk>
+
+	* 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  <pjb27@cam.ac.uk>
+
+	* sysdeps/standalone/arm/errnos.h: Add EPERM.
+
+1997-05-23 16:28  Philip Blundell  <phil@kings-cross.london.uk.eu.org>
+
+	* linewrap.h: New file, needed to compile argp without libio.
+
+1997-05-24 11:59  Andreas Jaeger  <aj@arthur.rhein-neckar.de>
+
+	* manual/stdio.texi (Formatted Messages): Corrected some typos.
+
+1997-05-24 11:58  Philip Blundell  <pjb27@cam.ac.uk>
+
+	* sysdeps/stub/start.c: Fix typo.
+
 1997-05-21 17:53  Miles Bader  <miles@gnu.ai.mit.edu>
 
 	* 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 <assert.h>
 
 
+/* 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 <nss/nss_files/files-parse.c>
 
 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 <kukuk@vt.uni-paderborn.de>, 1996.
 
@@ -32,7 +32,7 @@
 #define ENTNAME grent
 #define STRUCTURE group
 #define EXTERN_PARSER
-#include "../nss/nss_files/files-parse.c"
+#include <nss/nss_files/files-parse.c>
 
 /* 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 <resolv/mapv4v6addr.h>
+#include <resolv/mapv4v6hostent.h>
 
 #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 <nss/nss_files/files-parse.c>
 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 <kukuk@vt.uni-paderborn.de>, 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 <nss/nss_files/files-parse.c>
 
 __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 <nss/nss_files/files-parse.c>
 
 __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 <kukuk@vt.uni-paderborn.de>, 1996.
 
@@ -32,7 +32,7 @@
 #define ENTNAME pwent
 #define STRUCTURE passwd
 #define EXTERN_PARSER
-#include "../nss/nss_files/files-parse.c"
+#include <nss/nss_files/files-parse.c>
 
 /* 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 <nss/nss_files/files-parse.c>
 
 __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 <kukuk@vt.uni-paderborn.de>, 1996.
 
@@ -32,7 +32,7 @@
 #define ENTNAME spent
 #define STRUCTURE spwd
 #define EXTERN_PARSER
-#include "../nss/nss_files/files-parse.c"
+#include <nss/nss_files/files-parse.c>
 
 /* 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 <sysdeps/generic/sysd-stdio.c>
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 <string/strcoll.c>
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 <stdlib/strtod.c>
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 <stdlib/strtod.c>
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 <stdlib/strtol.c>
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 <stdlib/strtod.c>
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 <string/strxfrm.c>