aboutsummaryrefslogtreecommitdiff
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>