Fri Apr 19 00:49:44 1996 Roland McGrath <roland@delasyd.gnu.ai.mit.edu>

* stdlib/rpmatch.c (rpmatch: try): Take new arg NOMATCH, return value
 	for nonmatching nonerror (instead of !MATCH).
	(rpmatch): Use it, so we return -1 when NOEXPR doesn't match either.

	* resolv/getnetnamadr.c (getnetbyaddr): Use u_int32_t instead of
	unsigned long for variable NET2.

	* time/etcetera, time/europe, time/solar89: Updated from ADO's 96e.

Tue Apr  9 14:37:31 1996  Ulrich Drepper  <drepper@cygnus.com>

	* catgets/Makefile, catgets/catgets.c, catgets/catgetsinfo.h,
	catgets/config.h, catgets/gencat.c, catgets/nl_types.h,
	catgets/open_catalog.c: New files.  Implementation of XPG4
	compliant catgets() function and needed tools.
	* Makefile (subdirs): Add catgets.

Thu Apr 18 23:36:11 1996  Roland McGrath  <roland@delasyd.gnu.ai.mit.edu>

	* math/Makefile (CPPFLAGS): Append -D__NO_MATH_INLINES.

Wed Apr 10 20:48:43 1996  Ulrich Drepper  <drepper@cygnus.com>

	* stdio-common/vfprintf.c: Correct some typos.

	* sysdeps/libm-ieee754/w_gammaf.c, sysdeps/libm-ieee754/w_lgamma.c,
	sysdeps/libm-ieee754/w_lgammaf.c: Reference signgam instead of
	__signgam.

Thu Apr 18 21:07:27 1996  Roland McGrath  <roland@delasyd.gnu.ai.mit.edu>

	* Makerules (no-whole-archive): New variable.
	(build-shlib): Use it.
	* elf/Makefile (libdl.so): Use it.
	* configure.in (libc_cv_ld_no_whole_archive): New check for
	--no-whole-archive.
	* config.make.in (have-no-whole-archive): New variable.

	* stdio-common/printf_fp.c: Increase fudge factor for BIGNUM_SIZE calc
	from 3 to 4.

	* Make-dist: Include version.mk.
	(version, release): Variables removed.
	* Makeconfig (version.mk): New target.

Fri Apr 19 01:42:18 1996  Ulrich Drepper  <drepper@cygnus.com>

	* locale/Makefile (headers): Add langinfo.h.
	(CPPFLAGS): Remove -Iliblib.
This commit is contained in:
Roland McGrath 1996-04-20 00:05:25 +00:00
parent f24f4dc82d
commit a641835acd
28 changed files with 1747 additions and 39 deletions

View File

@ -1,3 +1,55 @@
Fri Apr 19 00:49:44 1996 Roland McGrath <roland@delasyd.gnu.ai.mit.edu>
* stdlib/rpmatch.c (rpmatch: try): Take new arg NOMATCH, return value
for nonmatching nonerror (instead of !MATCH).
(rpmatch): Use it, so we return -1 when NOEXPR doesn't match either.
* resolv/getnetnamadr.c (getnetbyaddr): Use u_int32_t instead of
unsigned long for variable NET2.
* time/etcetera, time/europe, time/solar89: Updated from ADO's 96e.
Tue Apr 9 14:37:31 1996 Ulrich Drepper <drepper@cygnus.com>
* catgets/Makefile, catgets/catgets.c, catgets/catgetsinfo.h,
catgets/config.h, catgets/gencat.c, catgets/nl_types.h,
catgets/open_catalog.c: New files. Implementation of XPG4
compliant catgets() function and needed tools.
* Makefile (subdirs): Add catgets.
Thu Apr 18 23:36:11 1996 Roland McGrath <roland@delasyd.gnu.ai.mit.edu>
* math/Makefile (CPPFLAGS): Append -D__NO_MATH_INLINES.
Wed Apr 10 20:48:43 1996 Ulrich Drepper <drepper@cygnus.com>
* stdio-common/vfprintf.c: Correct some typos.
* sysdeps/libm-ieee754/w_gammaf.c, sysdeps/libm-ieee754/w_lgamma.c,
sysdeps/libm-ieee754/w_lgammaf.c: Reference signgam instead of
__signgam.
Thu Apr 18 21:07:27 1996 Roland McGrath <roland@delasyd.gnu.ai.mit.edu>
* Makerules (no-whole-archive): New variable.
(build-shlib): Use it.
* elf/Makefile (libdl.so): Use it.
* configure.in (libc_cv_ld_no_whole_archive): New check for
--no-whole-archive.
* config.make.in (have-no-whole-archive): New variable.
* stdio-common/printf_fp.c: Increase fudge factor for BIGNUM_SIZE calc
from 3 to 4.
* Make-dist: Include version.mk.
(version, release): Variables removed.
* Makeconfig (version.mk): New target.
Fri Apr 19 01:42:18 1996 Ulrich Drepper <drepper@cygnus.com>
* locale/Makefile (headers): Add langinfo.h.
(CPPFLAGS): Remove -Iliblib.
Mon Apr 15 16:49:04 1996 Roland McGrath <roland@whiz-bang.gnu.ai.mit.edu>
* malloc/memalign.c, malloc/malloc.h [__DJGPP__ == 1]: Elide memalign

View File

@ -105,11 +105,7 @@ foo:=$(shell echo '+tsrcs=$(+tsrcs)'>&2)
foo:=$(shell echo foobie, dammit! >&2)
ifndef tardir
rel+vers := $(shell sed -n -e 's/^.*RELEASE.*\"\([^"]*\)";$$/\1/p' \
-e 's/^.*VERSION.*\"\([^"]*\)";$$/\1/p' \
< $(..)version.h)
release := $(word 1,$(rel+vers))
version := $(word 2,$(rel+vers))
-include $(common-objpfx)version.mk
export tardir := glibc-$(version)
endif

View File

@ -468,6 +468,13 @@ cross-compiling := yes
else
cross-compiling := no
endif
# Figure out the version numbers from version.h.
$(common-objpfx)version.mk: $(..)version.h
sed -n -e 's/^.*RELEASE.*\"\([^"]*\)";$$/release=\1/p' \
-e 's/^.*VERSION.*\"\([^"]*\)";$$/version=\1/p' \
< $< > $@-new
mv -f $@-new $@
endif # Makeconfig not yet included

View File

@ -51,7 +51,7 @@ sysdep-subdirs := $(subst $(\n), ,$(sysdep-subdirs))
endif
# These are the subdirectories containing the library source.
subdirs = csu assert ctype db locale intl math setjmp signal stdlib \
subdirs = csu assert ctype db locale intl catgets math setjmp signal stdlib \
stdio-common $(stdio) malloc string wcsmbs time dirent grp pwd\
posix io termios resource misc socket sysvipc gmon gnulib \
wctype $(wildcard crypt) manual $(sysdep-subdirs) elf

View File

@ -569,12 +569,19 @@ ifeq (yes,$(build-shared))
# on other shared objects.
lib%.so: lib%_pic.a; $(build-shlib)
ifeq ($(libc_cv_ld_no_whole_archive),yes)
no-whole-archive = -Wl,--no-whole-archive
else
no-whole-archive =
endif
define build-shlib
$(LINK.o) -shared -o $@ $(sysdep-LDFLAGS) $(config-LDFLAGS) \
-Wl,-soname=lib$(libprefix)$(@F:lib%.so=%).so$($(@F)-version) \
$(LDFLAGS.so) $(LDFLAGS-$(@F:lib%.so=%).so) \
-Wl,-rpath-link=$(common-objdir) \
-Wl,--whole-archive $^ $(LDLIBS-$(@F:lib%.so=%).so)
-Wl,--whole-archive $^ $(no-whole-archive) \
$(LDLIBS-$(@F:lib%.so=%).so)
endef
# Don't try to use -lc when making libc.so itself.

41
catgets/Makefile Normal file
View File

@ -0,0 +1,41 @@
# Copyright (C) 1996 Free Software Foundation, Inc.
# 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 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.,
# 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
#
# Makefile for catgets.
#
subdir := catgets
headers = nl_types.h
distribute = catgetsinfo.h config.h
routines = catgets open_catalog
others = gencat
install-bin = gencat
gencat-modules = xmalloc
# To find xmalloc.c
vpath %.c ../locale/programs
include ../Rules
$(objpfx)gencat: $(gencat-modules:%=$(objpfx)%.o)
CPPFLAGS := -DNLSPATH='"$(localedir)/%L/%N:$(localedir)/%L/LC_MESSAGES/%N:"' \
-DHAVE_CONFIG_H $(CPPFLAGS)

163
catgets/catgets.c Normal file
View File

@ -0,0 +1,163 @@
/* Copyright (C) 1996 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper, <drepper@gnu.ai.mit.edu>.
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.
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. */
#include <alloca.h>
#include <nl_types.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <sys/mman.h>
#include "catgetsinfo.h"
/* Open the catalog and return a descriptor for the catalog. */
nl_catd
catopen (const char *cat_name, int flag)
{
__nl_catd result;
const char *env_var;
result = (__nl_catd) malloc (sizeof (__nl_catd));
if (result == NULL)
/* We cannot get enough memory. */
return (nl_catd) -1;
result->status = closed;
result->cat_name = strdup (cat_name);
if (result->cat_name == NULL)
{
free (result);
return (nl_catd) -1;
}
if (strchr (cat_name, '/') == NULL)
{
if (flag == NL_CAT_LOCALE)
{
env_var = getenv ("LC_ALL");
if (env_var == NULL)
{
env_var = getenv ("LC_MESSAGES");
if (env_var == NULL)
{
env_var = getenv ("LANG");
if (env_var == NULL)
env_var = "C";
}
}
}
else
{
env_var = getenv ("LANG");
if (env_var == NULL)
env_var = "C";
}
result->env_var = strdup (env_var);
if (result->env_var == NULL)
{
free ((void *) result->cat_name);
free ((void *) result);
return (nl_catd) -1;
}
if (getenv ("NLSPATH") != NULL)
result->nlspath = strdup (getenv ("NLSPATH"));
else
result->nlspath = strdup (NLSPATH);
if (result->nlspath == NULL)
{
free ((void *) result->cat_name);
free ((void *) result->env_var);
free ((void *) result);
return (nl_catd) -1;
}
}
else
{
result->env_var = NULL;
result->nlspath = NULL;
}
return (nl_catd) result;
}
/* Return message from message catalog. */
char *
catgets (nl_catd catalog_desc, int set, int message, const char *string)
{
__nl_catd catalog;
size_t idx;
size_t cnt;
/* Be generous if catalog which failed to be open is used. */
if (catalog_desc == (nl_catd) -1 || ++set <= 0 || message < 0)
return (char *) string;
catalog = (__nl_catd) catalog_desc;
if (catalog->status == closed)
__open_catalog (catalog, 1);
if (catalog->status == nonexisting)
return (char *) string;
idx = ((set * message) % catalog->plane_size) * 3;
cnt = 0;
do
{
if (catalog->name_ptr[idx + 0] == (u_int32_t) set
&& catalog->name_ptr[idx + 1] == (u_int32_t) message)
return (char *) &catalog->strings[catalog->name_ptr[idx + 2]];
idx += catalog->plane_size * 3;
}
while (++cnt < catalog->plane_depth);
return (char *) string;
}
/* Return resources used for loaded message catalog. */
int
catclose (nl_catd catalog_desc)
{
__nl_catd catalog;
catalog = (__nl_catd) catalog_desc;
if (catalog->status == mmaped)
munmap ((void *) catalog->file_ptr, catalog->file_size);
else if (catalog->status == malloced)
free ((void *) catalog->file_ptr);
else if (catalog->status != closed && catalog->status != nonexisting)
return -1;
if (catalog->nlspath)
free ((void *) catalog->nlspath);
if (catalog->env_var)
free ((void *) catalog->env_var);
free ((void *) catalog);
return 0;
}

59
catgets/catgetsinfo.h Normal file
View File

@ -0,0 +1,59 @@
/* Copyright (C) 1996 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper, <drepper@gnu.ai.mit.edu>.
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.
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. */
#include <sys/types.h>
struct catalog_obj
{
u_int32_t magic;
u_int32_t plane_size;
u_int32_t plane_depth;
/* This is in fact two arrays in one: always a pair of name and
pointer into the data area. */
u_int32_t name_ptr[0];
};
/* This structure will be filled after loading the catalog. */
typedef struct catalog_info
{
enum { closed, nonexisting, mmaped, malloced } status;
const char *cat_name;
const char *env_var;
const char *nlspath;
size_t plane_size;
size_t plane_depth;
u_int32_t *name_ptr;
const char *strings;
struct catalog_obj *file_ptr;
size_t file_size;
} *__nl_catd;
/* The magic number to signal we really have a catalog file. */
#define CATGETS_MAGIC 0x960408de
/* Prototypes for helper functions. */
void __open_catalog (__nl_catd __catalog, int __with_path);

14
catgets/config.h Normal file
View File

@ -0,0 +1,14 @@
#ifndef _CG_CONFIG_H
#define _CG_CONFIG_H
/* Use the internal textdomain used for libc messages. */
#define PACKAGE _libc_intl_domainname
#ifndef VERSION
/* Get libc version number. */
#include "../version.h"
#endif
#include_next <config.h>
#endif

1030
catgets/gencat.c Normal file

File diff suppressed because it is too large Load Diff

48
catgets/nl_types.h Normal file
View File

@ -0,0 +1,48 @@
/* Copyright (C) 1996 Free Software Foundation, Inc.
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 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., 59 Temple Place - Suite 330,
Boston, MA 02111-1307, USA. */
#ifndef _NL_TYPES_H
#define _NL_TYPES_H 1
#include <features.h>
/* The default message set used by the gencat program. */
#define NL_SETD 1
/* Value for FLAG parameter of `catgets' to say we want XPG4 compliance. */
#define NL_CAT_LOCALE 1
/* Message catalog descriptor type. */
typedef void *nl_catd;
__BEGIN_DECLS
/* Open message catalog for later use, returning descriptor. */
extern nl_catd catopen __P ((__const char *__cat_name, int __flag));
/* Return translation with NUMBER in SET of CATALOG; if not found
return STRING. */
extern char *catgets __P ((nl_catd __catalog, int __set, int __number,
__const char *__string));
/* Close message CATALOG. */
extern int catclose __P ((nl_catd __catalog));
__END_DECLS
#endif /* nl_types.h */

263
catgets/open_catalog.c Normal file
View File

@ -0,0 +1,263 @@
/* Copyright (C) 1996 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper, <drepper@gnu.ai.mit.edu>.
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.
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. */
#include <endian.h>
#include <fcntl.h>
#include <string.h>
#include <stdlib.h>
#include <unistd.h>
#include <sys/mman.h>
#include <sys/stat.h>
#include "catgetsinfo.h"
#define SWAPU32(w) \
(((w) << 24) | (((w) & 0xff00) << 8) | (((w) >> 8) & 0xff00) | ((w) >> 24))
void
__open_catalog (__nl_catd catalog, int with_path)
{
int fd;
struct stat st;
int swapping;
if (strchr (catalog->cat_name, '/') != NULL || !with_path)
fd = open (catalog->cat_name, O_RDONLY);
else
{
const char *run_nlspath = catalog->nlspath;
#define ENOUGH(n) \
if (bufact + (n) >=bufmax) \
{ \
char *old_buf = buf; \
bufmax += 256 + (n); \
buf = (char *) alloca (bufmax); \
memcpy (buf, old_buf, bufact); \
}
/* The RUN_NLSPATH variable contains a colon separated list of
descriptions where we expect to find catalogs. We have to
recognize certain % substitutions and stop when we found the
first existing file. */
char *buf;
size_t bufact;
size_t bufmax;
buf = NULL;
bufmax = 0;
fd = -1;
while (*run_nlspath != '\0')
{
bufact = 0;
while (*run_nlspath != ':' && *run_nlspath != '\0')
if (*run_nlspath == '%')
{
const char *tmp;
++run_nlspath; /* We have seen the `%'. */
switch (*run_nlspath++)
{
case 'N':
/* Use the catalog name. */
ENOUGH (strlen (catalog->cat_name));
bufact = stpcpy (&buf[bufact], catalog->cat_name) - buf;
break;
case 'L':
/* Use the current locale category value. */
ENOUGH (strlen (catalog->env_var));
bufact = stpcpy (&buf[bufact], catalog->env_var) - buf;
break;
case 'l':
/* Use language element of locale category value. */
tmp = catalog->env_var;
do
{
ENOUGH (1);
buf[bufact++] = *tmp++;
}
while (*tmp != '\0' && *tmp != '_' && *tmp != '.');
break;
case 't':
/* Use territory element of locale category value. */
tmp = catalog->env_var;
do
++tmp;
while (*tmp != '\0' && *tmp != '_' && *tmp != '.');
if (*tmp == '_')
{
++tmp;
do
{
ENOUGH (1);
buf[bufact++] = *tmp;
}
while (*tmp != '\0' && *tmp != '.');
}
break;
case 'c':
/* Use code set element of locale category value. */
tmp = catalog->env_var;
do
++tmp;
while (*tmp != '\0' && *tmp != '.');
if (*tmp == '.')
{
++tmp;
do
{
ENOUGH (1);
buf[bufact++] = *tmp;
}
while (*tmp != '\0');
}
break;
case '%':
ENOUGH (1);
buf[bufact++] = '%';
break;
default:
/* Unknown variable: ignore this path element. */
bufact = 0;
while (*run_nlspath != '\0' && *run_nlspath != ':')
++run_nlspath;
break;
}
}
else
{
ENOUGH (1);
buf[bufact++] = *run_nlspath++;
}
ENOUGH (1);
buf[bufact] = '\0';
if (bufact != 0)
{
fd = open (buf, O_RDONLY);
if (fd >= 0)
break;
}
++run_nlspath;
}
}
if (fd < 0 || fstat (fd, &st) < 0)
{
catalog->status = nonexisting;
return;
}
#ifndef MAP_COPY
/* Linux seems to lack read-only copy-on-write. */
#define MAP_COPY MAP_PRIVATE
#endif
#ifndef MAP_FILE
/* Some systems do not have this flag; it is superfluous. */
#define MAP_FILE 0
#endif
#ifndef MAP_INHERIT
/* Some systems might lack this; they lose. */
#define MAP_INHERIT 0
#endif
catalog->file_size = st.st_size;
catalog->file_ptr =
(struct catalog_obj *) mmap (NULL, st.st_size, PROT_READ,
MAP_FILE|MAP_COPY|MAP_INHERIT, fd, 0);
if (catalog->file_ptr != (struct catalog_obj *) -1)
/* Tell the world we managed to mmap the file. */
catalog->status = mmaped;
else
{
/* mmap failed perhaps because the system call is not
implemented. Try to load the file. */
size_t todo;
catalog->file_ptr = malloc (st.st_size);
if (catalog->file_ptr == NULL)
{
catalog->status = nonexisting;
return;
}
todo = st.st_size;
/* Save read, handle partial reads. */
do
{
size_t now = read (fd, (((char *) &catalog->file_ptr)
+ (st.st_size - todo)), todo);
if (now == 0)
{
free ((void *) catalog->file_ptr);
catalog->status = nonexisting;
return;
}
todo -= now;
}
while (todo > 0);
catalog->status = malloced;
}
/* We don't need the file anymore. */
close (fd);
/* Determine whether the file is a catalog file and if yes whether
it is written using the correct byte order. Else we have to swap
the values. */
if (catalog->file_ptr->magic == CATGETS_MAGIC)
swapping = 0;
else if (catalog->file_ptr->magic == SWAPU32 (CATGETS_MAGIC))
swapping = 1;
else
{
/* Illegal file. Free he resources and mark catalog as not
usable. */
if (catalog->status == mmaped)
munmap ((void *) catalog->file_ptr, catalog->file_size);
else
free (catalog->file_ptr);
catalog->status = nonexisting;
return;
}
#define SWAP(x) (swapping ? SWAPU32 (x) : (x))
/* Get dimensions of the used hashing table. */
catalog->plane_size = SWAP (catalog->file_ptr->plane_size);
catalog->plane_depth = SWAP (catalog->file_ptr->plane_depth);
/* The file contains two versions of the pointer tables. Pick the
right one for the local byte order. */
#if __BYTE_ORDER == __LITTLE_ENDIAN
catalog->name_ptr = &catalog->file_ptr->name_ptr[0];
#elif __BYTE_ORDER == __BIG_ENDIAN
catalog->name_ptr = &catalog->file_ptr->name_ptr[catalog->plane_size
* catalog->plane_depth
* 3];
#else
# error Cannot handle __BYTE_ORDER byte order
#endif
/* The rest of the file contains all the strings. They are
addressed relative to the position of the first string. */
catalog->strings =
(const char *) &catalog->file_ptr->name_ptr[catalog->plane_size
* catalog->plane_depth * 3 * 2];
}

View File

@ -17,6 +17,8 @@ config-defines = @DEFS@
elf = @elf@
have-initfini = @libc_cv_have_initfini@
have-no-whole-archive = @libc_cv_ld_no_whole_archive@
# Configuration options.
gnu-as = @gnu_as@
gnu-ld = @gnu_ld@

View File

@ -469,6 +469,19 @@ elif test $libc_cv_asm_weakext_directive = yes; then
AC_DEFINE(HAVE_ASM_WEAKEXT_DIRECTIVE)
fi
AC_CACHE_CHECK(for ld --no-whole-archive, libc_cv_ld_no_whole_archive, [dnl
cat > conftest.c <<\EOF
main () { exit (0); }
EOF
if ${CC-cc} $CFLAGS -Wl,--no-whole-archive \
-o conftest conftest.c 2>/dev/null; then
libc_cv_ld_no_whole_archive=yes
else
libc_cv_ld_no_whole_archive=no
fi
rm -f conftest*])
AC_SUBST(libc_cv_ld_no_whole_archive)dnl
### End of automated tests.
### Now run sysdeps configure fragments.

View File

@ -1,6 +1,6 @@
# Makefile for elf subdirectory of GNU C Library.
# Copyright (C) 1995 Free Software Foundation, Inc.
# Copyright (C) 1995, 1996 Free Software Foundation, Inc.
# This file is part of the GNU C Library.
# The GNU C Library is free software; you can redistribute it and/or
@ -80,7 +80,7 @@ $(objpfx)libdl.so: $(objpfx)libdl_pic.a $(common-objpfx)libc.so $(objpfx)ld.so
$(patsubst %/,cd %;,$(objpfx)) \
$(LINK.o) -shared -o $(@:$(objpfx)%=%) \
$(LDFLAGS.so) $(LDFLAGS-dl.so) \
-Wl,--whole-archive $(^:$(objpfx)%=%)
-Wl,--whole-archive $(^:$(objpfx)%=%) $(no-whole-archive)
$(slibdir)/$(rtld-installed-name): $(objpfx)ld.so; $(do-install-program)
$(slibdir)/ld-linux.so.1: $(objpfx)ld-linux.so.1; $(do-install-program)

View File

@ -21,7 +21,7 @@
#
subdir := locale
headers = locale.h
headers = locale.h langinfo.h
distribute = localeinfo.h categories.def \
$(localedef-modules:=.c) $(locale-modules:=.c) \
$(lib-modules:=.c) config.h simple-hash.h iso-4217.def \
@ -60,7 +60,7 @@ $(objpfx)localedef $(objpfx)locale: $(lib-modules:%=$(objpfx)%.o)
CPPFLAGS := -DLOCALE_PATH='"$(localedir)"' \
-DCHARMAP_PATH='"$(i18ndir)/charmap"' \
-DLOCSRCDIR='"$(i18ndir)/locales"' -DHAVE_CONFIG_H \
-Iliblib -Iprograms $(CPPFLAGS)
-Iprograms $(CPPFLAGS)
CFLAGS-charmap.c = -Wno-write-strings
CFLAGS-locfile.c = -Wno-write-strings

View File

@ -71,5 +71,9 @@ include ../Rules
# the error return conventions for the math functions.
CPPFLAGS-s_lib_version.c := -D_POSIX_MODE
# We don't want the fdlibm code to use the inline math functions,
# only the fdlibm code.
CPPFLAGS += -D__NO_MATH_INLINES
# The fdlibm code generates a lot of these warnings but is otherwise clean.
override CFLAGS += -Wno-uninitialized -Wno-write-strings

View File

@ -1007,7 +1007,7 @@ static const char *re_error_msgid[] =
#endif
/* Roughly the maximum number of failure points on the stack. Would be
exactly that if always used MAX_FAILURE_SPACE each time we failed.
exactly that if always used MAX_FAILURE_ITEMS items each time we failed.
This is a variable only so users of regex can assign to it; we never
change it ourselves. */
#if defined (MATCH_MAY_ALLOCATE)
@ -1224,7 +1224,10 @@ typedef struct
#endif
/* We push at most this many items on the stack. */
#define MAX_FAILURE_ITEMS ((num_regs - 1) * NUM_REG_ITEMS + NUM_NONREG_ITEMS)
/* We used to use (num_regs - 1), which is the number of registers
this regexp will save; but that was changed to 5
to avoid stack overflow for a regexp with lots of parens. */
#define MAX_FAILURE_ITEMS (5 * NUM_REG_ITEMS + NUM_NONREG_ITEMS)
/* We actually push this many items. */
#define NUM_FAILURE_ITEMS \

View File

@ -209,7 +209,7 @@ getnetbyaddr(net, net_type)
int nn, anslen;
querybuf buf;
char qbuf[MAXDNAME];
unsigned long net2;
u_int32_t net2;
struct netent *net_entry;
if (net_type != AF_INET)

View File

@ -337,7 +337,7 @@ __printf_fp (FILE *fp,
would be really big it could lead to memory problems. */
{
mp_size_t bignum_size = ((ABS (exponent) + BITS_PER_MP_LIMB - 1)
/ BITS_PER_MP_LIMB + 3) * sizeof (mp_limb);
/ BITS_PER_MP_LIMB + 4) * sizeof (mp_limb);
frac = (mp_limb *) alloca (bignum_size);
tmp = (mp_limb *) alloca (bignum_size);
scale = (mp_limb *) alloca (bignum_size);

View File

@ -895,7 +895,7 @@ vfprintf (FILE *s, const CHAR_T *format, va_list ap)
tmp = ++f;
if (ISDIGIT (*tmp) && read_int (&tmp) && *tmp == L_('$'))
/* The width comes from an positional parameter. */
/* The width comes from a positional parameter. */
goto do_positional;
width = va_arg (ap, int);
@ -914,7 +914,7 @@ vfprintf (FILE *s, const CHAR_T *format, va_list ap)
LABEL (width):
width = read_int (&f);
if (*f == L_('$'))
/* Oh, oh. The argument comes from an positional parameter. */
/* Oh, oh. The argument comes from a positional parameter. */
goto do_positional;
JUMP (*f, step1_jumps);
@ -926,7 +926,7 @@ vfprintf (FILE *s, const CHAR_T *format, va_list ap)
tmp = ++f;
if (ISDIGIT (*tmp) && read_int (&tmp) > 0 && *tmp == L_('$'))
/* The precision comes from an positional parameter. */
/* The precision comes from a positional parameter. */
goto do_positional;
prec = va_arg (ap, int);

View File

@ -30,7 +30,7 @@ rpmatch (response)
{
/* Match against one of the response patterns, compiling the pattern
first if necessary. */
inline int try (const int tag, const int match,
inline int try (const int tag, const int match, const int nomatch,
const char **lastp, regex_t *re)
{
const char *pattern = nl_langinfo (tag);
@ -50,13 +50,13 @@ rpmatch (response)
}
/* Try the pattern. */
return regexec (re, response, 0, NULL, 0) == 0 ? match : !match;
return regexec (re, response, 0, NULL, 0) == 0 ? match : nomatch;
}
/* We cache the response patterns and compiled regexps here. */
static const char *yesexpr, *noexpr;
static regex_t yesre, nore;
return (try (YESEXPR, 1, &yesexpr, &yesre) ?:
try (NOEXPR, 0, &noexpr, &nore));
return (try (YESEXPR, 1, 0, &yesexpr, &yesre) ?:
try (NOEXPR, 0, -1, &noexpr, &nore));
}

View File

@ -20,7 +20,7 @@ static char rcsid[] = "$NetBSD: w_gammaf.c,v 1.4 1995/11/20 22:06:48 jtc Exp $";
#include "math.h"
#include "math_private.h"
extern int __signgam;
extern int signgam;
#ifdef __STDC__
float __gammaf(float x)
@ -30,10 +30,10 @@ extern int __signgam;
#endif
{
#ifdef _IEEE_LIBM
return __ieee754_lgammaf_r(x,&__signgam);
return __ieee754_lgammaf_r(x,&signgam);
#else
float y;
y = __ieee754_lgammaf_r(x,&__signgam);
y = __ieee754_lgammaf_r(x,&signgam);
if(_LIB_VERSION == _IEEE_) return y;
if(!__finitef(y)&&__finitef(x)) {
if(__floorf(x)==x&&x<=(float)0.0)

View File

@ -23,7 +23,7 @@ static char rcsid[] = "$NetBSD: w_lgamma.c,v 1.6 1995/05/10 20:49:24 jtc Exp $";
#include "math.h"
#include "math_private.h"
extern int __signgam;
extern int signgam;
#ifdef __STDC__
double __lgamma(double x)
@ -33,10 +33,10 @@ extern int __signgam;
#endif
{
#ifdef _IEEE_LIBM
return __ieee754_lgamma_r(x,&__signgam);
return __ieee754_lgamma_r(x,&signgam);
#else
double y;
y = __ieee754_lgamma_r(x,&__signgam);
y = __ieee754_lgamma_r(x,&signgam);
if(_LIB_VERSION == _IEEE_) return y;
if(!__finite(y)&&__finite(x)) {
if(__floor(x)==x&&x<=0.0)

View File

@ -20,7 +20,7 @@ static char rcsid[] = "$NetBSD: w_lgammaf.c,v 1.3 1995/05/10 20:49:30 jtc Exp $"
#include "math.h"
#include "math_private.h"
extern int __signgam;
extern int signgam;
#ifdef __STDC__
float __lgammaf(float x)
@ -30,10 +30,10 @@ extern int __signgam;
#endif
{
#ifdef _IEEE_LIBM
return __ieee754_lgammaf_r(x,&__signgam);
return __ieee754_lgammaf_r(x,&signgam);
#else
float y;
y = __ieee754_lgammaf_r(x,&__signgam);
y = __ieee754_lgammaf_r(x,&signgam);
if(_LIB_VERSION == _IEEE_) return y;
if(!__finitef(y)&&__finitef(x)) {
if(__floorf(x)==x&&x<=(float)0.0)

View File

@ -1,4 +1,4 @@
# @(#)etcetera 7.4
# @(#)etcetera 7.5
# All of these are set up just so people can "zic -l" to a timezone
# that's right for their area, even if it doesn't have a name or DST rules
@ -27,7 +27,8 @@ Link Etc/GMT Etc/GMT0
# zic -l GMT-12
# so we moved the names into the Etc subdirectory.
Zone Etc/GMT-13 13 - GMT-13 # 12 hours ahead of GMT, plus DST
Zone Etc/GMT-14 14 - GMT-14 # 14 hours ahead of GMT
Zone Etc/GMT-13 13 - GMT-13
Zone Etc/GMT-12 12 - GMT-12
Zone Etc/GMT-11 11 - GMT-11
Zone Etc/GMT-10 10 - GMT-10

View File

@ -1,4 +1,4 @@
# @(#)europe 7.31
# @(#)europe 7.33
# This data is by no means authoritative; if you think you know better,
# go ahead and edit the file (and please send any changes to
@ -1644,7 +1644,12 @@ Zone Europe/Lisbon -0:36:32 - LMT 1884
# From Rui Pedro Salgueiro <rps@inescca.inescc.pt> (November 12, 1992):
# Portugal has recently (September, 27) changed timezone
# (from WET to MET or CET) to harmonize with EEC.
1:00 EC MET%s
1:00 EC MET%s 1996 Mar 31 1:00u
# Martin Bruckmann <martin@ua.pt> (1996-02-29) reports via Peter Ilieve
# that Portugal is reverting to 0:00 by not moving its clocks this spring.
# The new Prime Minister was fed up with getting up in the dark in the winter.
0:00 1:00 "WET DST" 1996 Oct 27 1:00u
0:00 EC WET%s
# We don't know what happened to Madeira or the Azores,
# so we'll just use Shanks for now.
# Zone NAME GMTOFF RULES FORMAT [UNTIL]

View File

@ -1,4 +1,4 @@
# @(#)solar89 7.3
# @(#)solar89 7.4
# Apparent noon times below are for Riyadh; they're a bit off for other places.
# Times were computed using a formula provided by the U. S. Naval Observatory:
@ -390,4 +390,4 @@ Zone Asia/Riyadh89 3:07:04 - ?? 1989
3:07:04 sol89 ?? 1990
3:07:04 - ??
# For backward compatibility...
Link Asia/Riyadh88 Mideast/Riyadh88
Link Asia/Riyadh89 Mideast/Riyadh89