mirror of
https://sourceware.org/git/glibc.git
synced 2025-07-28 00:21:52 +03:00
Update.
1998-03-18 Andreas Jaeger <aj@arthur.rhein-neckar.de> * manual/memory.texi (Heap Consistency Checking): Document MALLOC_CHECK_. Based on a text by Wolfram Gloger. 1998-03-18 17:11 Zack Weinberg <zack@rabi.phys.columbia.edu> * manual/Makefile: Add missing rules. 1998-03-18 Ulrich Drepper <drepper@cygnus.com> * timezone/Makefile (generated): Define to remove all stamp files. * sysdeps/generic/strsep.c: Also undefine __strsep. * string/strdup.c: Undefine __strdup and strdup first. * string/strndup.c: Likewise. * string/bits/string2.h: Correct strtok_r and strsep. Add strndup optimization. * sysdeps/generic/strsep.c: Little optimization.
This commit is contained in:
23
ChangeLog
23
ChangeLog
@ -1,3 +1,26 @@
|
|||||||
|
1998-03-18 Andreas Jaeger <aj@arthur.rhein-neckar.de>
|
||||||
|
|
||||||
|
* manual/memory.texi (Heap Consistency Checking): Document
|
||||||
|
MALLOC_CHECK_. Based on a text by Wolfram Gloger.
|
||||||
|
|
||||||
|
1998-03-18 17:11 Zack Weinberg <zack@rabi.phys.columbia.edu>
|
||||||
|
|
||||||
|
* manual/Makefile: Add missing rules.
|
||||||
|
|
||||||
|
1998-03-18 Ulrich Drepper <drepper@cygnus.com>
|
||||||
|
|
||||||
|
* timezone/Makefile (generated): Define to remove all stamp files.
|
||||||
|
|
||||||
|
* sysdeps/generic/strsep.c: Also undefine __strsep.
|
||||||
|
|
||||||
|
* string/strdup.c: Undefine __strdup and strdup first.
|
||||||
|
* string/strndup.c: Likewise.
|
||||||
|
|
||||||
|
* string/bits/string2.h: Correct strtok_r and strsep.
|
||||||
|
Add strndup optimization.
|
||||||
|
|
||||||
|
* sysdeps/generic/strsep.c: Little optimization.
|
||||||
|
|
||||||
1998-03-18 14:25 Ulrich Drepper <drepper@cygnus.com>
|
1998-03-18 14:25 Ulrich Drepper <drepper@cygnus.com>
|
||||||
|
|
||||||
* string/bits/string2.h: Add optimization for strdup.
|
* string/bits/string2.h: Add optimization for strdup.
|
||||||
|
16
FAQ.in
16
FAQ.in
@ -55,9 +55,9 @@ and the many mirror sites. ftp.gnu.org is always overloaded, so try to find
|
|||||||
a local mirror first.
|
a local mirror first.
|
||||||
|
|
||||||
You always should try to use the latest official release. Older
|
You always should try to use the latest official release. Older
|
||||||
versions may not have all the features GNU libc requires. On most
|
versions may not have all the features GNU libc requires. The current
|
||||||
supported platforms (for powerpc see question ?powerpc), 2.7.2.3 is
|
releases of egcs (1.0.2) and GNU CC (2.8.1) should work with the GNU C
|
||||||
the earliest version that works at all.
|
library (for powerpc see question ?powerpc).
|
||||||
|
|
||||||
?? When I try to compile glibc I get only error messages.
|
?? When I try to compile glibc I get only error messages.
|
||||||
What's wrong?
|
What's wrong?
|
||||||
@ -83,7 +83,7 @@ Always get the newest release of GNU binutils available. Older
|
|||||||
releases are known to have bugs that prevent a successful compilation.
|
releases are known to have bugs that prevent a successful compilation.
|
||||||
|
|
||||||
{ZW} As of release 2.1 a linker supporting symbol versions is
|
{ZW} As of release 2.1 a linker supporting symbol versions is
|
||||||
required. For Linux, get binutils-2.8.1.0.17 or later. Other systems
|
required. For Linux, get binutils-2.8.1.0.23 or later. Other systems
|
||||||
may have native linker support, but it's moot right now, because glibc
|
may have native linker support, but it's moot right now, because glibc
|
||||||
has not been ported to them.
|
has not been ported to them.
|
||||||
|
|
||||||
@ -481,9 +481,9 @@ GROUP ( libc.so.6 ld-linux.so.2 libc.a )
|
|||||||
?? How can I compile gcc 2.7.2.1 from the gcc source code using
|
?? How can I compile gcc 2.7.2.1 from the gcc source code using
|
||||||
glibc 2.x?
|
glibc 2.x?
|
||||||
|
|
||||||
{AJ} There's only correct support for glibc 2.0.x in gcc 2.7.2.3
|
{AJ} There's only correct support for glibc 2.0.x in gcc 2.7.2.3 or
|
||||||
or later. You should get at least gcc 2.7.2.3. All previous versions
|
later. But you should get at least gcc 2.8.1 or egcs 1.0.2 (or later
|
||||||
had problems with glibc support.
|
versions) instead.
|
||||||
|
|
||||||
?? The `gencat' utility cannot process the catalog sources which
|
?? The `gencat' utility cannot process the catalog sources which
|
||||||
were used on my Linux libc5 based system. Why?
|
were used on my Linux libc5 based system. Why?
|
||||||
@ -620,7 +620,7 @@ problem.
|
|||||||
|
|
||||||
?? What do I need for C++ development?
|
?? What do I need for C++ development?
|
||||||
|
|
||||||
{HJ,AJ} You need either egcs 1.0.1 or gcc-2.8.1 with libstdc++
|
{HJ,AJ} You need either egcs 1.0.2 or gcc-2.8.1 with libstdc++
|
||||||
2.8.1 (or more recent versions). libg++ 2.7.2 (and the Linux Versions
|
2.8.1 (or more recent versions). libg++ 2.7.2 (and the Linux Versions
|
||||||
2.7.2.x) doesn't work very well with the GNU C library due to vtable thunks.
|
2.7.2.x) doesn't work very well with the GNU C library due to vtable thunks.
|
||||||
If you're upgrading from glibc 2.0.x to 2.1 you have to recompile
|
If you're upgrading from glibc 2.0.x to 2.1 you have to recompile
|
||||||
|
@ -69,6 +69,12 @@ endef
|
|||||||
libc.dvi libc.info: $(chapters) summary.texi $(chapters-incl)
|
libc.dvi libc.info: $(chapters) summary.texi $(chapters-incl)
|
||||||
libc.dvi: texinfo.tex
|
libc.dvi: texinfo.tex
|
||||||
|
|
||||||
|
%.info: %.texinfo
|
||||||
|
$(MAKEINFO) $<
|
||||||
|
|
||||||
|
%.dvi: %.texinfo
|
||||||
|
$(TEXI2DVI) $<
|
||||||
|
|
||||||
# Generate the summary from the Texinfo source files for each chapter.
|
# Generate the summary from the Texinfo source files for each chapter.
|
||||||
summary.texi: stamp-summary ;
|
summary.texi: stamp-summary ;
|
||||||
stamp-summary: summary.awk $(chapters) $(chapters-incl)
|
stamp-summary: summary.awk $(chapters) $(chapters-incl)
|
||||||
@ -81,7 +87,7 @@ stamp-summary: summary.awk $(chapters) $(chapters-incl)
|
|||||||
# Generate a file which can be added to the `dir' content to provide direct
|
# Generate a file which can be added to the `dir' content to provide direct
|
||||||
# access to the documentation of the function, variables, and other
|
# access to the documentation of the function, variables, and other
|
||||||
# definitions.
|
# definitions.
|
||||||
dir-add.texi: xtract-typefun.awk $(chapters) $(chapters-incl)
|
dir-add.texinfo: xtract-typefun.awk $(chapters) $(chapters-incl)
|
||||||
(echo "@dircategory GNU C library functions"; \
|
(echo "@dircategory GNU C library functions"; \
|
||||||
echo "@direntry"; \
|
echo "@direntry"; \
|
||||||
$(GAWK) -f $^ | sort; \
|
$(GAWK) -f $^ | sort; \
|
||||||
|
@ -611,6 +611,20 @@ The block was already freed.
|
|||||||
@end table
|
@end table
|
||||||
@end deftp
|
@end deftp
|
||||||
|
|
||||||
|
Another possibility to check for and guard against bugs in the use of
|
||||||
|
@code{malloc}, @code{realloc} and @code{free} is to set the environment
|
||||||
|
variable @code{MALLOC_CHECK_}. When @code{MALLOC_CHECK_} is set, a
|
||||||
|
special (less efficient) implementation is used which is designed to be
|
||||||
|
tolerant against simple errors, such as double calls of @code{free} with
|
||||||
|
the same argument, or overruns of a single byte (off-by-one bugs). Not
|
||||||
|
all such errors can be proteced against, however, and memory leaks can
|
||||||
|
result. If @code{MALLOC_CHECK_} is set to @code{0}, any detected heap
|
||||||
|
corruption is silently ignored; if set to @code{1}, a diagnostic is
|
||||||
|
printed on @code{stderr}; if set to @code{2}, @code{abort} is called
|
||||||
|
immediately. This can be useful because otherwise a crash may happen
|
||||||
|
much later, and the true cause for the problem is then very hard to
|
||||||
|
track down.
|
||||||
|
|
||||||
@node Hooks for Malloc
|
@node Hooks for Malloc
|
||||||
@subsection Storage Allocation Hooks
|
@subsection Storage Allocation Hooks
|
||||||
@cindex allocation hooks, for @code{malloc}
|
@cindex allocation hooks, for @code{malloc}
|
||||||
|
@ -710,8 +710,8 @@ strnlen (__const char *__string, size_t __maxlen)
|
|||||||
? (((__const unsigned char *) (sep))[0] != '\0' \
|
? (((__const unsigned char *) (sep))[0] != '\0' \
|
||||||
&& ((__const unsigned char *) (sep))[1] == '\0' \
|
&& ((__const unsigned char *) (sep))[1] == '\0' \
|
||||||
? __strtok_r_1c (s, ((__const char *) (sep))[0], nextp) \
|
? __strtok_r_1c (s, ((__const char *) (sep))[0], nextp) \
|
||||||
: strtok_r (s, sep, nextp)) \
|
: __strtok_r (s, sep, nextp)) \
|
||||||
: strtok_r (s, sep, nextp)))
|
: __strtok_r (s, sep, nextp)))
|
||||||
|
|
||||||
__STRING_INLINE char *__strtok_r_1c (char *__s, char __sep, char **__nextp);
|
__STRING_INLINE char *__strtok_r_1c (char *__s, char __sep, char **__nextp);
|
||||||
__STRING_INLINE char *
|
__STRING_INLINE char *
|
||||||
@ -740,7 +740,7 @@ __strtok_r_1c (char *__s, char __sep, char **__nextp)
|
|||||||
return __result;
|
return __result;
|
||||||
}
|
}
|
||||||
# if defined __USE_POSIX || defined __USE_MISC
|
# if defined __USE_POSIX || defined __USE_MISC
|
||||||
# define strtok_r(s, sep, nextp) __strtok_r (s, sep, nextp)
|
# define strtok_r(s, sep, nextp) __strtok_r ((s), (sep), (nextp))
|
||||||
# endif
|
# endif
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
@ -845,7 +845,7 @@ __strsep_g (char **__s, __const char *__reject)
|
|||||||
return __retval;
|
return __retval;
|
||||||
}
|
}
|
||||||
# ifdef __USE_BSD
|
# ifdef __USE_BSD
|
||||||
# define strsep(s, reject) __strsep (s, reject)
|
# define strsep(s, reject) __strsep ((s), (reject))
|
||||||
# endif
|
# endif
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
@ -857,15 +857,15 @@ __strsep_g (char **__s, __const char *__reject)
|
|||||||
# include <stdlib.h>
|
# include <stdlib.h>
|
||||||
|
|
||||||
# define __strdup(s) \
|
# define __strdup(s) \
|
||||||
(__extension__ (__builtin_constant_p (s) && __string2_1bptr_p (s)
|
(__extension__ (__builtin_constant_p (s) && __string2_1bptr_p (s) \
|
||||||
? (((__const unsigned char *) (s))[0] == '\0'
|
? (((__const unsigned char *) (s))[0] == '\0' \
|
||||||
? return (char *) calloc (1, 1);
|
? (char *) calloc (1, 1) \
|
||||||
: ({ size_t len = strlen (s) + 1;
|
: ({ size_t __len = strlen (s) + 1; \
|
||||||
char *retval = (char *) malloc (len);
|
char *__retval = (char *) malloc (__len); \
|
||||||
if (retval != NULL)
|
if (__retval != NULL) \
|
||||||
retval = (char *) memcpy (retval, s, len);
|
__retval = (char *) memcpy (__retval, s, __len); \
|
||||||
retval; }))
|
__retval; })) \
|
||||||
: strdup (s)))
|
: __strdup (s)))
|
||||||
|
|
||||||
# if defined __USE_SVID || defined __USE_BSD || defined __USE_XOPEN_EXTENDED
|
# if defined __USE_SVID || defined __USE_BSD || defined __USE_XOPEN_EXTENDED
|
||||||
# define strdup(s) __strdup (s)
|
# define strdup(s) __strdup (s)
|
||||||
@ -873,6 +873,37 @@ __strsep_g (char **__s, __const char *__reject)
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
#if !defined _HAVE_STRING_ARCH_strndup && !defined __STRICT_ANSI__
|
||||||
|
|
||||||
|
/* We need the memory allocation functions. Including this header is
|
||||||
|
not allowed. */
|
||||||
|
# include <stdlib.h>
|
||||||
|
|
||||||
|
# define __strndup(s, n) \
|
||||||
|
(__extension__ (__builtin_constant_p (s) && __string2_1bptr_p (s) \
|
||||||
|
? (((__const unsigned char *) (s))[0] == '\0' \
|
||||||
|
? (char *) calloc (1, 1) \
|
||||||
|
: ({ size_t __len = strlen (s) + 1; \
|
||||||
|
size_t __n = (n); \
|
||||||
|
char *__retval; \
|
||||||
|
if (__n < __len) \
|
||||||
|
__len = __n; \
|
||||||
|
__retval = (char *) malloc (__len); \
|
||||||
|
if (__retval != NULL) \
|
||||||
|
{ \
|
||||||
|
__retval[__len - 1] = '\0'; \
|
||||||
|
__retval = (char *) memcpy (__retval, s, \
|
||||||
|
__len - 1); \
|
||||||
|
} \
|
||||||
|
__retval; })) \
|
||||||
|
: __strndup ((s), (n))))
|
||||||
|
|
||||||
|
# ifdef __GNU_SOURCE
|
||||||
|
# define strndup(s, n) __strndup ((s), (n))
|
||||||
|
# endif
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
#undef __STRING_INLINE
|
#undef __STRING_INLINE
|
||||||
|
|
||||||
#endif /* No string inlines. */
|
#endif /* No string inlines. */
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
/* Copyright (C) 1991, 1996, 1997 Free Software Foundation, Inc.
|
/* Copyright (C) 1991, 1996, 1997, 1998 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
|
The GNU C Library is free software; you can redistribute it and/or
|
||||||
@ -28,6 +28,9 @@ char *malloc ();
|
|||||||
char *memcpy ();
|
char *memcpy ();
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#undef __strdup
|
||||||
|
#undef strdup
|
||||||
|
|
||||||
#ifndef weak_alias
|
#ifndef weak_alias
|
||||||
# define __strdup strdup
|
# define __strdup strdup
|
||||||
#endif
|
#endif
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
/* Copyright (C) 1996, 1997 Free Software Foundation, Inc.
|
/* Copyright (C) 1996, 1997, 1998 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
|
The GNU C Library is free software; you can redistribute it and/or
|
||||||
@ -30,6 +30,9 @@
|
|||||||
char *malloc ();
|
char *malloc ();
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#undef __strndup
|
||||||
|
#undef strndup
|
||||||
|
|
||||||
#ifndef weak_alias
|
#ifndef weak_alias
|
||||||
# define __strndup strndup
|
# define __strndup strndup
|
||||||
#endif
|
#endif
|
||||||
|
@ -18,6 +18,7 @@
|
|||||||
|
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
|
|
||||||
|
#undef __strsep
|
||||||
#undef strsep
|
#undef strsep
|
||||||
|
|
||||||
char *
|
char *
|
||||||
@ -43,7 +44,7 @@ __strsep (char **stringp, const char *delim)
|
|||||||
if (*begin == ch)
|
if (*begin == ch)
|
||||||
end = begin;
|
end = begin;
|
||||||
else
|
else
|
||||||
end = strchr (begin, delim[0]);
|
end = strchr (begin + 1, ch);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
@ -39,6 +39,7 @@ tzfiles := $(tzbases) $(tzlinks)
|
|||||||
# northamerica.
|
# northamerica.
|
||||||
distribute += $(tzfiles) leapseconds pacificnew simplebackw
|
distribute += $(tzfiles) leapseconds pacificnew simplebackw
|
||||||
|
|
||||||
|
generated := $(addprefix z.,$(tzfiles))
|
||||||
install-sbin := zic zdump
|
install-sbin := zic zdump
|
||||||
|
|
||||||
generated-dirs = testdata
|
generated-dirs = testdata
|
||||||
|
Reference in New Issue
Block a user