+2007-08-25 Ulrich Drepper <drepper@redhat.com>
+
+ * sysdeps/x86_64/cacheinfo.c (handle_amd): Fix computation of
+ associativity for fully-associative caches.
+
+ * sysdeps/x86_64/cacheinfo.c (handle_amd): Handle L3 cache
+ requests. Fill on more associativity values for L2.
+ Patch mostly by Evandro Menezes.
+
+2007-08-24 Ulrich Drepper <drepper@redhat.com>
+
+ * sysdeps/unix/sysv/linux/x86_64/init-first.c
+ (_libc_vdso_platform_setup): Avoid using exported variable by using
+ alias.
+
+ * resolv/arpa/nameser.h (NS_OPT_DNSSEC_OK): Define.
+
+ * sysdeps/unix/sysv/linux/i386/syscalls.list: No reason to mark
+ fallocate64 as EXTRA< it is not referenced if the symbol isn't
+ defined.
+
+2007-08-23 Ulrich Drepper <drepper@redhat.com>
+
+ * sysdeps/x86_64/dl-trampoline.S (_dl_runtime_profile): Correctly
+ align stack for call if pltexit is to be used.
+
+ [BZ #3924]
+ * sysdeps/i386/dl-trampoline.S (_dl_runtime_profile): Correctly
+ align for function call in case pltexit has to be called later.
+
+ * sysdeps/i386/dl-trampoline.S (_dl_runtime_resolve): Avoid
+ implicit atomic operation when storing function pointer.
+ (_dl_runtime_profile): Likewise.
+
+2007-08-17 Jakub Jelinek <jakub@redhat.com>
+
+ * nis/nis_table.c (nis_list): Don't fail if __follow_path returned
+ NIS_NOTFOUND.
+
+2007-08-21 Ulrich Drepper <drepper@redhat.com>
+
+ [BZ #4566]
+ * string/strtok.c: Fix typo in comment.
+
+ [BZ #4582]
+ * debug/segfault.c: Fix typos in comments.
+
+ [BZ #4588]
+ * stdio-common/tempnam.c: Fix comment, it is not checked that
+ TMPDIR points to a writable directory.
+
+ [BZ #4726]
+ * resolv/res_send.c (__libc_res_nsend): Initialize all of the
+ memory allocated for the name server address.
+
+ [BZ #4946]
+ * nscd/connections.c (handle_request): Using sendfile always
+ requires that mmap is used for the database.
+ Patch by Petr Baudis <pasky@suse.cz>.
+
+ [BZ #4905]
+ * nscd/hstcache.c (cache_addhst): When reloading an entry which
+ suddenly has two or more addresses, ignore it and remove the old
+ entry.
+
+ [BZ #4814]
+ * resolv/res_hconf.c: Prepare for compiling outside libc.
+ * nscd/res_hconf.c: New file.
+ * nscd/Makefile (nscd-modules): Add res_hconf. Add rules to build
+ the new file.
+ * nscd/gethstbynm2_r.c (NEED__RES_HCONF): Define.
+ * nscd/gethstbyad_r.c (NEED__RES_HCONF): Likewise.
+
+ * nscd/hstcache.c (cache_addhst): Minimal optimization.
+
+ [BZ #4925]
+ * debug/pcprofiledump.c: Turn on internationalization by calling
+ setlocale. Patch mostly by Benno Schulenberg.
+
+ [BZ #4936]
+ * iconv/gconv.c (__gconv): If flush was successful, clear rest of
+ the state.
+ * iconvdata/Makefile: Add rules to build and run bug-iconv5.
+ * iconvdata/bug-iconv5.c: New file.
+
+2007-08-04 Carlos O'Donell <carlos@systemhalted.org>
+
+ [BZ #4896]
+ * elf/elf.h: Define R_PARISC_PLABEL21L, R_PARISC_PLABEL14R,
+ R_PARISC_GNU_VTENTRY, R_PARISC_GNU_VTINHERIT, R_PARISC_TLS_GD21L,
+ R_PARISC_TLS_GD14R, R_PARISC_TLS_GDCALL, R_PARISC_TLS_LDM21L,
+ R_PARISC_TLS_LDM14R, R_PARISC_TLS_LDMCALL, R_PARISC_TLS_LDO21L,
+ R_PARISC_TLS_LDO14R, R_PARISC_TLS_DTPMOD32, R_PARISC_TLS_DTPMOD64,
+ R_PARISC_TLS_DTPOFF32, R_PARISC_TLS_DTPOFF64, R_PARISC_TLS_LE21L,
+ R_PARISC_TLS_LE14R, R_PARISC_TLS_IE21L, R_PARISC_TLS_IE14R,
+ R_PARISC_TLS_TPREL32, R_PARISC_TLS_TPREL64.
+
+2007-08-21 Ulrich Drepper <drepper@redhat.com>
+
+ [BZ #4937]
+ * elf/do-lookup.h (do_lookup_x): Minimal improvement in hash
+ lookup loop. Suggested by John Reiser.
+
+2007-08-21 Jakub Jelinek <jakub@redhat.com>
+
+ * sysdeps/unix/sysv/linux/alpha/sysdep.h: Include tls.h.
+
+2007-08-20 Ulrich Drepper <drepper@redhat.com>
+
+ * csu/libc-start.c: Don't handle VDSO_SETUP here.
+ * sysdeps/unix/sysv/linux/init-first.c: Handle it here instead.
+ * sysdeps/unix/sysv/linux/x86_64/libc-start.c: Renamed to...
+ * sysdeps/unix/sysv/linux/x86_64/init-first.c: ...this. New file.
+ * sysdeps/unix/sysv/linux/powerpc/libc-start.c: Move VDSO_SETUP code
+ to...
+ * sysdeps/unix/sysv/linux/x86_64/init-first.c: ...here. New file.
+
+2007-08-18 Ulrich Drepper <drepper@redhat.com>
+
+ * po/nl.po: Update from translation team.
+
+2007-08-16 Andreas Jaeger <aj@suse.de>
+
+ * locale/localeinfo.h: Make _nl_category_name_idxs extern.
+ Reported by Peter Festner <peter.festner@ewetel.net>.
+
+2007-08-17 Jakub Jelinek <jakub@redhat.com>
+
+ * login/tst-grantpt.c (test_einval): Add 3rd argument to open.
+
2007-08-16 Jakub Jelinek <jakub@redhat.com>
* elf/Makefile ($(objpfx)ld.so): Use readelf -s and awk instead of nm -u
# endif
#endif
-#ifdef VDSO_SETUP
- VDSO_SETUP ();
-#endif
-
/* Register the destructor of the dynamic linker if there is any. */
if (__builtin_expect (rtld_fini != NULL, 1))
__cxa_atexit ((void (*) (void *)) rtld_fini, NULL, NULL);
/* Dump information generated by PC profiling.
- Copyright (C) 1999, 2002 Free Software Foundation, Inc.
+ Copyright (C) 1999, 2002, 2007 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1999.
#include "../version.h"
+#define PACKAGE _libc_intl_domainname
#ifndef _
# define _(Str) gettext (Str)
int
main (int argc, char *argv[])
{
- int fd;
- int remaining;
- int must_swap;
- uint32_t word;
+ /* Set locale via LC_ALL. */
+ setlocale (LC_ALL, "");
+
+ /* Set the text message domain. */
+ textdomain (PACKAGE);
/* Parse and process arguments. */
+ int remaining;
argp_parse (&argp, argc, argv, 0, &remaining, NULL);
+ int fd;
if (remaining == argc)
fd = STDIN_FILENO;
else if (remaining + 1 != argc)
/* Read the first 4-byte word. It contains the information about
the word size and the endianess. */
+ uint32_t word;
if (TEMP_FAILURE_RETRY (read (fd, &word, 4)) != 4)
error (EXIT_FAILURE, errno, _("cannot read header"));
/* Check whether we have to swap the byte order. */
- must_swap = (word & 0xfffffff0) == bswap_32 (0xdeb00000);
+ int must_swap = (word & 0xfffffff0) == bswap_32 (0xdeb00000);
if (must_swap)
word = bswap_32 (word);
/* Catch segmentation faults and print backtrace.
- Copyright (C) 1998, 1999, 2000, 2001, 2002, 2004
+ Copyright (C) 1998, 1999, 2000, 2001, 2002, 2004, 2007
Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1998.
/* Get code to possibly dump the content of all registers. */
#include <register-dump.h>
-/* We'll use tis a lot. */
+/* We'll use this a lot. */
#define WRITE_STRING(s) write (fd, s, strlen (s))
/* Name of the output file. */
/* This function is called when a segmentation fault is caught. The system
- is in an instable state now. This means especially that malloc() might
+ is in an unstable state now. This means especially that malloc() might
not work anymore. */
static void
catch_segfault (int signal, SIGCONTEXT ctx)
const Elf32_Word *hasharr = &map->l_gnu_chain_zero[bucket];
do
- if ((*hasharr & ~1u) == (new_hash & ~1u))
+ if (((*hasharr ^ new_hash) >> 1) == 0)
{
symidx = hasharr - map->l_gnu_chain_zero;
sym = check_match (&symtab[symidx]);
#define R_PARISC_LTOFF_FPTR14R 62 /* LT-rel. fct ptr, right 14 bits. */
#define R_PARISC_FPTR64 64 /* 64 bits function address. */
#define R_PARISC_PLABEL32 65 /* 32 bits function address. */
+#define R_PARISC_PLABEL21L 66 /* Left 21 bits of fdesc address. */
+#define R_PARISC_PLABEL14R 70 /* Right 14 bits of fdesc address. */
#define R_PARISC_PCREL64 72 /* 64 bits PC-rel. address. */
#define R_PARISC_PCREL22F 74 /* 22 bits PC-rel. address. */
#define R_PARISC_PCREL14WR 75 /* PC-rel. address, right 14 bits. */
#define R_PARISC_LTOFF_TP16F 229 /* 16 bits LT-TP-rel. address. */
#define R_PARISC_LTOFF_TP16WF 230 /* 16 bits LT-TP-rel. address. */
#define R_PARISC_LTOFF_TP16DF 231 /* 16 bits LT-TP-rel. address. */
+#define R_PARISC_GNU_VTENTRY 232
+#define R_PARISC_GNU_VTINHERIT 233
+#define R_PARISC_TLS_GD21L 234 /* GD 21-bit left. */
+#define R_PARISC_TLS_GD14R 235 /* GD 14-bit right. */
+#define R_PARISC_TLS_GDCALL 236 /* GD call to __t_g_a. */
+#define R_PARISC_TLS_LDM21L 237 /* LD module 21-bit left. */
+#define R_PARISC_TLS_LDM14R 238 /* LD module 14-bit right. */
+#define R_PARISC_TLS_LDMCALL 239 /* LD module call to __t_g_a. */
+#define R_PARISC_TLS_LDO21L 240 /* LD offset 21-bit left. */
+#define R_PARISC_TLS_LDO14R 241 /* LD offset 14-bit right. */
+#define R_PARISC_TLS_DTPMOD32 242 /* DTP module 32-bit. */
+#define R_PARISC_TLS_DTPMOD64 243 /* DTP module 64-bit. */
+#define R_PARISC_TLS_DTPOFF32 244 /* DTP offset 32-bit. */
+#define R_PARISC_TLS_DTPOFF64 245 /* DTP offset 32-bit. */
+#define R_PARISC_TLS_LE21L R_PARISC_TPREL21L
+#define R_PARISC_TLS_LE14R R_PARISC_TPREL14R
+#define R_PARISC_TLS_IE21L R_PARISC_LTOFF_TP21L
+#define R_PARISC_TLS_IE14R R_PARISC_LTOFF_TP14R
+#define R_PARISC_TLS_TPREL32 R_PARISC_TPREL32
+#define R_PARISC_TLS_TPREL64 R_PARISC_TPREL64
#define R_PARISC_HIRESERVE 255
/* Legal values for p_type field of Elf32_Phdr/Elf64_Phdr. */
glibc-base := HEAD
DIST_BRANCH := devel
COLLECTION := dist-f8
-fedora-sync-date := 2007-08-16 21:21 UTC
-fedora-sync-tag := fedora-glibc-20070816T2121
+fedora-sync-date := 2007-08-25 18:39 UTC
+fedora-sync-tag := fedora-glibc-20070825T1839
-%define glibcrelease 11
+%define glibcrelease 12
%define run_glibc_tests 1
%define auxarches i586 i686 athlon sparcv9v sparc64v alphaev6
%define xenarches i686 athlon
%endif
%changelog
+* Sat Aug 25 2007 Jakub Jelinek <jakub@redhat.com> 2.6.90-12
+- readd x86_64 gettimeofday stuff, initialize it earlier
+- nis_list fix (#254115)
+- misc fixes (BZ#3924, BZ#4566, BZ#4582, BZ#4588, BZ#4726, BZ#4946,
+ BZ#4905, BZ#4814, BZ#4925, BZ#4936, BZ#4896, BZ#4937, BZ#3842,
+ BZ#4554, BZ#4557, BZ#4938)
+
* Fri Aug 17 2007 Jakub Jelinek <jakub@redhat.com> 2.6.90-11
- remove __strtold_internal and __wcstold_internal from ppc*/s390*/sparc*
*-ldbl.h headers
/* Convert characters in input buffer using conversion descriptor to
output buffer.
- Copyright (C) 1997-2001, 2005 Free Software Foundation, Inc.
+ Copyright (C) 1997-2001, 2005, 2007 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
#endif
if (inbuf == NULL || *inbuf == NULL)
- /* We just flush. */
- result = DL_CALL_FCT (fct,
- (cd->__steps, cd->__data, NULL, NULL, NULL,
- irreversible,
- cd->__data[last_step].__outbuf == NULL ? 2 : 1, 0));
+ {
+ /* We just flush. */
+ result = DL_CALL_FCT (fct,
+ (cd->__steps, cd->__data, NULL, NULL, NULL,
+ irreversible,
+ cd->__data[last_step].__outbuf == NULL ? 2 : 1,
+ 0));
+
+ /* If the flush was successful clear the rest of the state. */
+ if (result == __GCONV_OK)
+ for (size_t cnt = 0; cnt <= last_step; ++cnt)
+ cd->__data[cnt].__invocation_counter = 0;
+ }
else
{
const unsigned char *last_start;
ifeq (yes,$(build-shared))
tests = bug-iconv1 bug-iconv2 tst-loading tst-e2big tst-iconv4 bug-iconv4 \
- tst-iconv6
+ tst-iconv6 bug-iconv5
ifeq ($(have-thread-library),yes)
tests += bug-iconv3
endif
$(objpfx)bug-iconv3: $(libdl)
$(objpfx)bug-iconv3.out: $(objpfx)gconv-modules \
$(addprefix $(objpfx),$(modules.so))
+$(objpfx)bug-iconv5.out: $(objpfx)gconv-modules \
+ $(addprefix $(objpfx),$(modules.so))
$(objpfx)tst-loading.out: $(objpfx)gconv-modules \
$(addprefix $(objpfx),$(modules.so))
$(objpfx)tst-iconv4.out: $(objpfx)gconv-modules \
--- /dev/null
+#include <iconv.h>
+#include <stdint.h>
+#include <stdio.h>
+
+
+static int
+do_test (void)
+{
+ iconv_t cd = iconv_open ("utf-8", "unicode");
+ if (cd == (iconv_t) -1)
+ {
+ puts ("cannot open iconv module");
+ return 1;
+ }
+
+ static const uint16_t us[] = { 0xfeff, 0x0041, 0x0042, 0x0043 };
+ char buf[100];
+
+ char *inbuf;
+ size_t inlen;
+ char *outbuf;
+ size_t outlen;
+ size_t n;
+
+ inbuf = (char *) us;
+ inlen = sizeof (us);
+ outbuf = buf;
+ outlen = sizeof (buf);
+ n = iconv (cd, &inbuf, &inlen, &outbuf, &outlen);
+ if (n == (size_t) -1 || inlen != 0 || outlen != sizeof (buf) - 3)
+ {
+ puts ("first conversion failed");
+ return 1;
+ }
+
+ iconv (cd, NULL, NULL, NULL, NULL);
+
+ inbuf = (char *) us;
+ inlen = sizeof (us);
+ outbuf = buf;
+ outlen = sizeof (buf);
+ n = iconv (cd, &inbuf, &inlen, &outbuf, &outlen);
+ if (n == (size_t) -1 || inlen != 0 || outlen != sizeof (buf) - 3)
+ {
+ puts ("second conversion failed");
+ return 1;
+ }
+
+ return 0;
+}
+
+#define TEST_FUNCTION do_test ()
+#include "../test-skeleton.c"
/* Declarations for internal libc locale interfaces
- Copyright (C) 1995-2003, 2005, 2006 Free Software Foundation, Inc.
+ Copyright (C) 1995-2003, 2005, 2006, 2007 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
};
char str[0];
} _nl_category_names attribute_hidden;
-const uint8_t _nl_category_name_idxs[__LC_LAST] attribute_hidden;
+extern const uint8_t _nl_category_name_idxs[__LC_LAST] attribute_hidden;
extern const uint8_t _nl_category_name_sizes[__LC_LAST] attribute_hidden;
/* Name of the standard locales. */
+2007-08-24 Ulrich Drepper <drepper@redhat.com>
+
+ [BZ #3842]
+ * locales/ru_RU: Use U00A0 instead of U2002 for thousands separator.
+ The latter might be more correct but usually cannot be displayed.
+
+2007-08-22 Ulrich Drepper <drepper@redhat.com>
+
+ [BZ #4554]
+ * locales/wo_SN: New file.
+ * SUPPORTED: Add wo_SN entry.
+
+ [BZ #4557]
+ * locales/as_IN: Change <UNASSIGNED-09CE> to <U09CE>.
+
2007-08-03 Jakub Jelinek <jakub@redhat.com>
* locales/translit_combining: Add U0141 and U0142.
wa_BE/ISO-8859-1 \
wa_BE@euro/ISO-8859-15 \
wa_BE.UTF-8/UTF-8 \
+wo_SN/UTF-8 \
xh_ZA.UTF-8/UTF-8 \
xh_ZA/ISO-8859-1 \
yi_US.UTF-8/UTF-8 \
<U09CC> <X689A>;<X0005>;<X0005>;IGNORE
<U09CD> <X689C>;<X0005>;<X0005>;IGNORE
<U09D7> <X689E>;<X0005>;<X0005>;IGNORE
-<UNASSIGNED-09CE> "<XE2E9><X6B20>";<X0005>;"<X0005><X00C0>";IGNORE
+<U09CE> "<XE2E9><X6B20>";<X0005>;"<X0005><X00C0>";IGNORE
UNDEFINED IGNORE;IGNORE;IGNORE;%...
order_end
int_curr_symbol "<U0052><U0055><U0042><U0020>"
currency_symbol "<U0440><U0443><U0431>"
mon_decimal_point "<U002E>"
-mon_thousands_sep "<U2002>"
+mon_thousands_sep "<U00A0>"
mon_grouping 3;3
positive_sign ""
negative_sign "<U002D>"
LC_NUMERIC
decimal_point "<U002C>"
-thousands_sep "<U2002>"
+thousands_sep "<U00A0>"
grouping 3;3
END LC_NUMERIC
--- /dev/null
+comment_char %
+escape_char /
+%
+% Wolof locale for Senegal
+% Source: The Debian Project
+% Contact: Christian Perrier/Samba Ndao Diop
+% Email: bubulle@debian.org/samba.ndao.diop@tiscali.fr
+% Tel: +33 - 130699222
+% Language: wo
+% Territory: SN
+% Revision: 1.0
+% Date: 2004-09-15
+% Users: general
+% Charset: UTF-8
+% Distribution and use is free, also
+% for commercial purposes.
+
+LC_IDENTIFICATION
+title "Wolof locale for Senegal"
+source "The Debian Project"
+address ""
+contact "Christian Perrier"
+email "bubulle@debian.org"
+tel ""
+fax ""
+language "Wolof"
+territory "Senegal"
+revision "1.0"
+date "2004-09-08"
+%
+category "mg_MG:2000";LC_IDENTIFICATION
+category "mg_MG:2000";LC_CTYPE
+category "mg_MG:2000";LC_COLLATE
+category "mg_MG:2000";LC_TIME
+category "mg_MG:2000";LC_NUMERIC
+category "mg_MG:2000";LC_MONETARY
+category "mg_MG:2000";LC_MESSAGES
+category "mg_MG:2000";LC_PAPER
+category "mg_MG:2000";LC_NAME
+category "mg_MG:2000";LC_ADDRESS
+category "mg_MG:2000";LC_TELEPHONE
+
+END LC_IDENTIFICATION
+
+LC_CTYPE
+copy "i18n"
+
+translit_start
+
+% Accents are simply omitted if they cannot be represented.
+include "translit_combining";""
+
+translit_end
+
+END LC_CTYPE
+
+LC_COLLATE
+% Copy the template from ISO/IEC 14651
+copy "iso14651_t1"
+END LC_COLLATE
+
+LC_MESSAGES
+% Yes=Waaw
+% No=Déet
+yesexpr "<U005E><U005B><U0077><U0057><U0079><U0059><U005D><U002E><U002A>"
+noexpr "<U005E><U005B><U0064><U0044><U006E><U004E><U005D><U002E><U002A>"
+END LC_MESSAGES
+
+LC_MONETARY
+int_curr_symbol "<U0058><U004F><U0046><U0020>"
+currency_symbol "<U0043><U0046><U0041>"
+mon_decimal_point "<U002C>"
+mon_thousands_sep "<U0020>"
+mon_grouping 3;3
+positive_sign ""
+negative_sign "<U002D>"
+int_frac_digits 2
+frac_digits 2
+p_cs_precedes 0
+p_sep_by_space 1
+n_cs_precedes 0
+n_sep_by_space 1
+p_sign_posn 1
+n_sign_posn 1
+END LC_MONETARY
+
+LC_NUMERIC
+decimal_point "<U002C>"
+thousands_sep ""
+grouping 0;0
+END LC_NUMERIC
+
+LC_TIME
+% dib'eer (dib), altine (alt), talaata (tal), allarba (all), alxames (alx),
+% ajjuma (ajj), gaawu (gaa)
+% Sunday, Monday....
+abday "<U0064><U0069><U0062>";"<U0061><U006C><U0074>";/
+ "<U0074><U0061><U006C>";"<U0061><U006C><U006C>";/
+ "<U0061><U006C><U0078>";"<U0061><U006A><U006A>";/
+ "<U0067><U0061><U0061>"
+day "<U0064><U0069><U0062><U0027><U0065><U0065><U0072>";/
+ "<U0061><U006C><U0074><U0069><U006E><U0065>";/
+ "<U0074><U0061><U006C><U0061><U0061><U0074><U0061>";/
+ "<U0061><U006C><U006C><U0061><U0072><U0062><U0061>";/
+ "<U0061><U006C><U0078><U0061><U006D><U0065><U0073>";/
+ "<U0061><U006A><U006A><U0075><U006D><U0061>";/
+ "<U0067><U0061><U0061><U0077><U0075>"
+% Sanwiy'e, feebriy'e, mars, awril, me, suwen, sulet, uut, septaambar,
+% oktoobar, nowaambar, desaambar.
+abmon "<U0073><U0061><U006E>";"<U0066><U0065><U0065>";/
+ "<U006D><U0061><U0072>";"<U0061><U0077><U0072>";/
+ "<U006D><U0065><U0020>";"<U0073><U0075><U0077>";/
+ "<U0073><U0075><U006C>";"<U0075><U0075><U0074>";/
+ "<U0073><U0065><U0070>";"<U006F><U006B><U0074>";/
+ "<U006E><U006F><U0077>";"<U0064><U0065><U0073>"
+mon "<U0073><U0061><U006E><U0077><U0069><U0079><U0027><U0065>";/
+ "<U0066><U0065><U0065><U0062><U0072><U0069><U0079><U0027><U0065>";/
+ "<U006D><U0061><U0072><U0073>";/
+ "<U0061><U0077><U0072><U0069><U006C>";/
+ "<U006D><U0065>";/
+ "<U0073><U0075><U0077><U0065><U006E>";/
+ "<U0073><U0075><U006C><U0065><U0074>";/
+ "<U0075><U0075><U0074>";/
+ "<U0073><U0065><U0070><U0074><U0061><U0061><U006D><U0062><U0061><U0072>";/
+ "<U006F><U006B><U0074><U006F><U006F><U0062><U0061><U0072>";/
+ "<U006E><U006F><U0077><U0061><U0061><U006D><U0062><U0061><U0072>";/
+ "<U0064><U0065><U0073><U0061><U0061><U006D><U0062><U0061><U0072>"
+% %a %d %b %Y %T %Z
+d_t_fmt "<U0025><U0061><U0020><U0025><U0064><U0020><U0025><U0062><U0020><U0025><U0059><U0020><U0025><U0054><U0020><U0025><U005A>"
+% %d.%m.%Y
+d_fmt "<U0025><U0064><U002E><U0025><U006D><U002E><U0025><U0059>"
+% %T
+t_fmt "<U0025><U0054>"
+am_pm "";""
+t_fmt_ampm ""
+% %a %b %e %H:%M:%S %Z %Y
+date_fmt "<U0025><U0061><U0020><U0025><U0062><U0020><U0025><U0065>/
+<U0020><U0025><U0048><U003A><U0025><U004D><U003A><U0025><U0053><U0020>/
+<U0025><U005A><U0020><U0025><U0059>"
+END LC_TIME
+
+LC_PAPER
+height 297
+width 210
+END LC_PAPER
+
+LC_TELEPHONE
+% +%C %a %l
+tel_int_fmt "<U002B><U0025><U0063><U0020><U0025><U0061><U0020><U0025>/
+<U006C>"
+% %a %l
+tel_dom_fmt "<U0025><U0061><U0020><U0025><U006C>"
+% 221
+int_prefix "<U0032><U0032><U0031>"
+% 00
+int_select "<U0030><U0030>"
+END LC_TELEPHONE
+
+LC_MEASUREMENT
+measurement 1
+END LC_MEASUREMENT
+
+LC_NAME
+% %d%t%g%t%m%t%f
+name_fmt "<U0025><U0064><U0025><U0074><U0025><U0067><U0025><U0074>/
+<U0025><U006D><U0025><U0074><U0025><U0066>"
+END LC_NAME
+
+LC_ADDRESS
+% %f%N%a%N%d%N%b%N%s %h %e %r%N%%z %T%N%c%N
+postal_fmt "<U0025><U0066><U0025><U004E><U0025><U0061><U0025><U004E>/
+<U0025><U0064><U0025><U004E><U0025><U0062><U0025><U004E><U0025><U0073>/
+<U0020><U0025><U0068><U0020><U0025><U0065><U0020><U0025><U0072><U0025>/
+<U004E><U0025><U0025><U007A><U0020><U0025><U0054><U0025>/
+<U004E><U0025><U0063><U0025><U004E>"
+country_ab2 "<U004D><U0047>"
+country_ab3 "<U004D><U0044><U0047>"
+country_num 450
+END LC_ADDRESS
+
int fd, ret, err;
const char file[] = "./grantpt-einval";
- fd = open (file, O_RDWR | O_CREAT);
+ fd = open (file, O_RDWR | O_CREAT, 0600);
if (fd == -1)
{
printf ("open(\"%s\", O_RDWR) failed\nerrno %d (%s)\n",
&bptr);
if (clnt_status != NIS_SUCCESS)
{
- NIS_RES_STATUS (res) = clnt_status;
+ if (clnt_status == NIS_NOMEMORY)
+ NIS_RES_STATUS (res) = clnt_status;
++done;
}
else
++done;
else
{
- NIS_RES_STATUS (res)
+ clnt_status
= __follow_path (&tablepath, &tableptr, ibreq, &bptr);
- if (NIS_RES_STATUS (res) != NIS_SUCCESS)
- ++done;
+ if (clnt_status != NIS_SUCCESS)
+ {
+ if (clnt_status == NIS_NOMEMORY)
+ NIS_RES_STATUS (res) = clnt_status;
+ ++done;
+ }
}
}
break;
+2007-08-21 Ulrich Drepper <drepper@redhat.com>
+
+ [BZ #4938]
+ * allocatestack.c (__reclaim_stacks): Clear the TSD in the
+ reclaimed stack if necessary.
+ * Makefile (tests): Add tst-tsd6.
+ * tst-tsd6.c: New file.
+
+2007-08-21 Jakub Jelinek <jakub@redhat.com>
+
+ * sysdeps/unix/sysv/linux/alpha/lowlevellock.h (lll_robust_dead):
+ Add private argument.
+
+2007-08-20 Ulrich Drepper <drepper@redhat.com>
+
+ * sysdeps/unix/sysv/linux/x86_64/pthread_cond_timedwait.S
+ (__pthread_cond_timedwait): Use clock_gettime from VDSO if possible.
+
2007-08-16 Jakub Jelinek <jakub@redhat.com>
* sysdeps/unix/sysv/linux/alpha/lowlevellock.h
tst-join1 tst-join2 tst-join3 tst-join4 tst-join5 tst-join6 \
tst-detach1 \
tst-eintr1 tst-eintr2 tst-eintr3 tst-eintr4 tst-eintr5 \
- tst-tsd1 tst-tsd2 tst-tsd3 tst-tsd4 tst-tsd5 \
+ tst-tsd1 tst-tsd2 tst-tsd3 tst-tsd4 tst-tsd5 tst-tsd6 \
tst-tls1 tst-tls2 \
tst-fork1 tst-fork2 tst-fork3 tst-fork4 \
tst-atfork1 \
/* Account for the size of the stack. */
stack_cache_actsize += curp->stackblock_size;
+
+ if (curp->specific_used)
+ {
+ /* Clear the thread-specific data. */
+ memset (curp->specific_1stblock, '\0',
+ sizeof (curp->specific_1stblock));
+
+ curp->specific_used = false;
+
+ for (size_t cnt = 1; cnt < PTHREAD_KEY_1STLEVEL_SIZE; ++cnt)
+ if (curp->specific[cnt] != NULL)
+ {
+ memset (curp->specific[cnt], '\0',
+ sizeof (curp->specific_1stblock));
+
+ /* We have allocated the block which we do not
+ free here so re-set the bit. */
+ curp->specific_used = true;
+ }
+ }
}
}
INTERNAL_SYSCALL_ERROR_P (__ret, __err)? -__ret : __ret; \
})
-#define lll_robust_dead(futexv) \
+#define lll_robust_dead(futexv, private) \
do \
{ \
int *__futexp = &(futexv); \
atomic_or (__futexp, FUTEX_OWNER_DIED); \
- lll_futex_wake (__futexp, 1, LLL_SHARED); \
+ lll_futex_wake (__futexp, 1, private); \
} \
while (0)
/* Only clocks 0 and 1 are allowed so far. Both are handled in the
kernel. */
leaq 24(%rsp), %rsi
- movl $__NR_clock_gettime, %eax
+ movq __vdso_clock_gettime@GOTPCREL(%rip), %rax
+ movq (%rax), %rax
+ PTR_DEMANGLE (%rax)
+ jz 26f
+ call *%rax
+ jmp 27f
+26: movl $__NR_clock_gettime, %eax
syscall
+27:
# ifndef __ASSUME_POSIX_TIMERS
cmpq $-ENOSYS, %rax
je 19f
--- /dev/null
+#include <errno.h>
+#include <pthread.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <unistd.h>
+#include <sys/wait.h>
+
+#define NKEYS 100
+static pthread_key_t keys[NKEYS];
+static pthread_barrier_t b;
+
+
+static void *
+tf (void *arg)
+{
+ void *res = NULL;
+ for (int i = 0; i < NKEYS; ++i)
+ {
+ void *p = pthread_getspecific (keys[i]);
+ pthread_setspecific (keys[i], (void *) 7);
+ if (p != NULL)
+ res = p;
+ }
+ if (arg != NULL)
+ {
+ pthread_barrier_wait (arg);
+ pthread_barrier_wait (arg);
+ }
+ return res;
+}
+
+
+static int
+do_test (void)
+{
+ pthread_barrier_init (&b, NULL, 2);
+
+ for (int i = 0; i < NKEYS; ++i)
+ if (pthread_key_create (&keys[i], NULL) != 0)
+ {
+ puts ("cannot create keys");
+ return 1;
+ }
+
+ pthread_t th;
+ if (pthread_create (&th, NULL, tf, &b) != 0)
+ {
+ puts ("cannot create thread in parent");
+ return 1;
+ }
+
+ pthread_barrier_wait (&b);
+
+ pid_t pid = fork ();
+ if (pid == 0)
+ {
+ if (pthread_create (&th, NULL, tf, NULL) != 0)
+ {
+ puts ("cannot create thread in child");
+ exit (1);
+ }
+
+ void *res;
+ pthread_join (th, &res);
+
+ exit (res != NULL);
+ }
+ else if (pid == -1)
+ {
+ puts ("cannot create child process");
+ return 1;
+ }
+
+ int s;
+ if (TEMP_FAILURE_RETRY (waitpid (pid, &s, 0)) != pid)
+ {
+ puts ("failing to wait for child process");
+ return 1;
+ }
+
+ pthread_barrier_wait (&b);
+ pthread_join (th, NULL);
+
+ return !WIFEXITED (s) ? 2 : WEXITSTATUS (s);
+}
+
+
+#define TEST_FUNCTION do_test ()
+#include "../test-skeleton.c"
getgrnam_r getgrgid_r hstcache gethstbyad_r gethstbynm2_r \
getsrvbynm_r getsrvbypt_r servicescache \
dbg_log nscd_conf nscd_stat cache mem nscd_setup_thread \
- xmalloc xstrdup aicache initgrcache gai
+ xmalloc xstrdup aicache initgrcache gai res_hconf
ifeq ($(have-thread-library),yes)
CFLAGS-servicescache.c += $(nscd-cflags)
CFLAGS-getsrvbynm_r.c += $(nscd-cflags)
CFLAGS-getsrvbypt_r.c += $(nscd-cflags)
+CFLAGS-res_hconf.c += $(nscd-cflags)
ifeq (yesyes,$(have-fpie)$(build-shared))
relro-LDFLAGS += -Wl,-z,now
ssize_t nwritten;
#ifdef HAVE_SENDFILE
- if (db->mmap_used || !cached->notfound)
+ if (__builtin_expect (db->mmap_used, 1))
{
assert (db->wr_fd != -1);
assert ((char *) cached->data > (char *) db->data);
-/* Copyright (C) 1996,1997,1998,1999,2000,2005 Free Software Foundation, Inc.
+/* Copyright (C) 1996-2000, 2005, 2007 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1996.
#define ADD_VARIABLES addr, len, type
#define NEED_H_ERRNO 1
#define NEED__RES 1
+#define NEED__RES_HCONF 1
#include "../nss/getXXbyYY_r.c"
-/* Copyright (C) 1996, 1997, 1998, 2000, 2005 Free Software Foundation, Inc.
+/* Copyright (C) 1996-1998, 2000, 2005, 2007 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1996.
#define ADD_PARAMS const char *name, int af
#define ADD_VARIABLES name, af
#define NEED_H_ERRNO 1
+#define NEED__RES_HCONF 1
#define HANDLE_DIGITS_DOTS 1
#define HAVE_LOOKUP_BUFFER 1
/* Determine the number of addresses. */
h_addr_list_cnt = 0;
- for (cnt = 0; hst->h_addr_list[cnt]; ++cnt)
+ while (hst->h_addr_list[h_addr_list_cnt] != NULL)
++h_addr_list_cnt;
if (h_addr_list_cnt == 0)
the current cache handling cannot handle and it is more than
questionable whether it is worthwhile complicating the cache
handling just for handling such a special case. */
- if (he == NULL && hst->h_addr_list[1] == NULL)
+ if (he == NULL && h_addr_list_cnt == 1)
{
dataset = (struct dataset *) mempool_alloc (db,
total + req->key_len);
/* The data has not changed. We will just bump the
timeout value. Note that the new record has been
allocated on the stack and need not be freed. */
+ assert (h_addr_list_cnt == 1);
dh->timeout = dataset->head.timeout;
++dh->nreloads;
}
else
{
- /* We have to create a new record. Just allocate
- appropriate memory and copy it. */
- struct dataset *newp
- = (struct dataset *) mempool_alloc (db, total + req->key_len);
- if (newp != NULL)
+ if (h_addr_list_cnt == 1)
{
- /* Adjust pointers into the memory block. */
- addresses = (char *) newp + (addresses - (char *) dataset);
- aliases = (char *) newp + (aliases - (char *) dataset);
- assert (key_copy != NULL);
- key_copy = (char *) newp + (key_copy - (char *) dataset);
-
- dataset = memcpy (newp, dataset, total + req->key_len);
- alloca_used = false;
+ /* We have to create a new record. Just allocate
+ appropriate memory and copy it. */
+ struct dataset *newp
+ = (struct dataset *) mempool_alloc (db,
+ total + req->key_len);
+ if (newp != NULL)
+ {
+ /* Adjust pointers into the memory block. */
+ addresses = (char *) newp + (addresses
+ - (char *) dataset);
+ aliases = (char *) newp + (aliases - (char *) dataset);
+ assert (key_copy != NULL);
+ key_copy = (char *) newp + (key_copy - (char *) dataset);
+
+ dataset = memcpy (newp, dataset, total + req->key_len);
+ alloca_used = false;
+ }
}
/* Mark the old record as obsolete. */
--- /dev/null
+/* Add the include here so that we can redefine __fxprintf. */
+#include <stdio.h>
+
+/* Rename symbols for protected names used in libc itself. */
+#define __ioctl ioctl
+#define __socket socket
+#define __strchrnul strchrnul
+#define __strncasecmp strncasecmp
+
+#define __fxprintf(args...) /* ignore */
+
+
+#include "../resolv/res_hconf.c"
"Project-Id-Version: libc 2.6.1\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2007-08-04 11:37+0200\n"
-"PO-Revision-Date: 2007-08-04 21:56+0200\n"
+"PO-Revision-Date: 2007-08-15 22:44+0200\n"
"Last-Translator: Benno Schulenberg <benno@vertaalt.nl>\n"
"Language-Team: Dutch <vertaling@vrijschrift.org>\n"
"MIME-Version: 1.0\n"
#: argp/argp-help.c:228
#, c-format
msgid "%.*s: ARGP_HELP_FMT parameter requires a value"
-msgstr "%.*s: Parameter van ARGP_HELP_FMT vereist een waarde"
+msgstr "%.*s: Parameter in ARGP_HELP_FMT vereist een waarde"
#: argp/argp-help.c:238
#, c-format
msgid "%.*s: Unknown ARGP_HELP_FMT parameter"
-msgstr "%.*s: Onbekende parameter van ARGP_HELP_FMT"
+msgstr "%.*s: Onbekende parameter in ARGP_HELP_FMT"
#: argp/argp-help.c:251
#, c-format
"Generate message catalog.\vIf INPUT-FILE is -, input is read from standard input. If OUTPUT-FILE\n"
"is -, output is written to standard output.\n"
msgstr ""
-"Een berichtencatalogus genereren.\n"
-"\n"
-"Als INVOERBESTAND '-' is, wordt van standaardinvoer gelezen.\n"
+" \n"
+"Een berichtencatalogus genereren.\vAls INVOERBESTAND '-' is, wordt van standaardinvoer gelezen.\n"
"Als UITVOERBESTAND '-' is, wordt naar standaarduitvoer geschreven.\n"
#: catgets/gencat.c:124
#: debug/pcprofiledump.c:57
msgid "Dump information generated by PC profiling."
-msgstr "Door prestatie-analyse gegenereerde informatie weergeven."
+msgstr ""
+" \n"
+"Door prestatie-analyse gegenereerde informatie weergeven."
#: debug/pcprofiledump.c:60
msgid "[FILE]"
"For bug reporting instructions, please see:\n"
"<http://www.gnu.org/software/libc/bugs.html>.\\n"
msgstr ""
+" \n"
"De uitvoering van een programma volgen door steeds de naam van\n"
"de uitgevoerde functie te printen.\n"
"\n"
#: elf/ldconfig.c:152
msgid "Configure Dynamic Linker Run Time Bindings."
-msgstr "Configureren van de dynamische linker."
+msgstr ""
+" \n"
+"Configureren van de dynamische linker."
#: elf/ldconfig.c:310
#, c-format
#: malloc/obstack.c:436 posix/getconf.c:985 posix/getconf.c:1163
#, c-format
msgid "memory exhausted"
-msgstr "onvoldoende geheugen"
+msgstr "onvoldoende geheugen beschikbaar"
#: elf/ldconfig.c:1144
#, c-format
"Read and display shared object profiling data.\vFor bug reporting instructions, please see:\n"
"<http://www.gnu.org/software/libc/bugs.html>.\n"
msgstr ""
+" \n"
"Gegevens van prestatie-analyse inlezen en afbeelden.\vVoor het rapporteren van fouten, zie:\n"
" <http://www.gnu.org/software/libc/bugs.html>.\n"
#: iconv/iconv_prog.c:74
msgid "Convert encoding of given files from one encoding to another."
-msgstr "Bestanden converteren van ene codering naar andere."
+msgstr ""
+" \n"
+"Bestanden converteren van ene codering naar andere."
#: iconv/iconv_prog.c:78
msgid "[FILE...]"
#: inet/ruserpass.c:170 inet/ruserpass.c:193
msgid "out of memory"
-msgstr "onvoldoende geheugen"
+msgstr "onvoldoende geheugen beschikbaar"
#: inet/ruserpass.c:184
msgid "Error: .netrc file is readable by others."
"Get locale-specific information.\vFor bug reporting instructions, please see:\n"
"<http://www.gnu.org/software/libc/bugs.html>.\n"
msgstr ""
+" \n"
"Informatie over locales weergeven.\vVoor het rapporteren van fouten, zie:\n"
" <http://www.gnu.org/software/libc/bugs.html>.\n"
#: locale/programs/localedef.c:151
msgid "Compile locale specification"
-msgstr "Een locale-specificatie compileren."
+msgstr ""
+" \n"
+"Een locale-specificatie compileren."
#: locale/programs/localedef.c:154
msgid ""
#: nis/nis_error.h:14
msgid "Server out of memory"
-msgstr "Server heeft onvoldoende geheugen"
+msgstr "Server heeft onvoldoende geheugen beschikbaar"
#: nis/nis_error.h:15
msgid "Object with same name exists"
#: nscd/mem.c:512
#, c-format
msgid "no more memory for database '%s'"
-msgstr "onvoldoende geheugen voor gegevensbank '%s'"
+msgstr "onvoldoende geheugen beschikbaar voor gegevensbank '%s'"
#: nscd/nscd.c:98
msgid "Read configuration data from NAME"
#: nscd/nscd.c:112
msgid "Name Service Cache Daemon."
-msgstr "Daemon voor namen-cache."
+msgstr ""
+" \n"
+"Daemon voor namen-cache."
#: nscd/nscd.c:144 nss/getent.c:858 nss/makedb.c:123
#, c-format
"Get entries from administrative database.\vFor bug reporting instructions, please see:\n"
"<http://www.gnu.org/software/libc/bugs.html>.\n"
msgstr ""
+" \n"
"Items uit een gegevensbank weergeven.\vVoor het rapporteren van fouten, zie:\n"
" <http://www.gnu.org/software/libc/bugs.html>.\n"
#: posix/regcomp.c:147
msgid "Trailing backslash"
-msgstr "Backslash aan einde"
+msgstr "Backslash aan het eind"
#: posix/regcomp.c:150
msgid "Invalid back reference"
#: posix/regcomp.c:168
msgid "Memory exhausted"
-msgstr "Onvoldoende geheugen"
+msgstr "Onvoldoende geheugen beschikbaar"
#: posix/regcomp.c:171
msgid "Invalid preceding regular expression"
#: sysdeps/generic/siglist.h:63 sysdeps/unix/siglist.c:38
msgid "Bad system call"
-msgstr "Ongeldige systeemaanroep"
+msgstr "Onjuiste systeemaanroep"
#: sysdeps/generic/siglist.h:66
msgid "Stack fault"
#. TRANS to manipulate.
#: sysdeps/gnu/errlist.c:126
msgid "No child processes"
-msgstr "Geen kindprocessen"
+msgstr "Geen dochterprocessen"
#. TRANS Deadlock avoided; allocating a system resource would have resulted in a
#. TRANS deadlock situation. The system does not guarantee that it will notice
#. TRANS because its capacity is full.
#: sysdeps/gnu/errlist.c:148
msgid "Cannot allocate memory"
-msgstr "Kan geen geheugen meer reserveren"
+msgstr "Onvoldoende geheugen beschikbaar"
#. TRANS Bad address; an invalid pointer was detected.
#. TRANS In the GNU system, this error never happens; you get a signal instead.
#: sysdeps/posix/gai_strerror-strs.h:4
msgid "Non-recoverable failure in name resolution"
-msgstr "Niet-herstelbare mislukking in naamsherleiding"
+msgstr "Onherstelbare mislukking in naamsherleiding"
#: sysdeps/posix/gai_strerror-strs.h:5
msgid "ai_family not supported"
#: sysdeps/posix/gai_strerror-strs.h:6
msgid "Memory allocation failure"
-msgstr "Onvoldoende geheugen"
+msgstr "Onvoldoende geheugen beschikbaar"
#: sysdeps/posix/gai_strerror-strs.h:7
msgid "No address associated with hostname"
-msgstr "Geen adres geassocieerd met hostnaam"
+msgstr "Aan hostnaam is geen adres verbonden"
#: sysdeps/posix/gai_strerror-strs.h:8
msgid "Name or service not known"
#: sysdeps/posix/gai_strerror-strs.h:17
msgid "Parameter string not correctly encoded"
-msgstr "Parameter-tekenreeks is niet juist gecodeerd"
+msgstr "Parametertekst is niet juist gecodeerd"
#: sysdeps/unix/siglist.c:26
msgid "Signal 0"
#: timezone/zic.c:392
#, c-format
msgid "%s: Memory exhausted: %s\n"
-msgstr "%s: Onvoldoende geheugen: %s\n"
+msgstr "%s: Onvoldoende geheugen beschikbaar: %s\n"
#: timezone/zic.c:451
#, c-format
#define NS_NXT_BIT_ISSET(n,p) (p[(n)/NS_NXT_BITS] & (0x80>>((n)%NS_NXT_BITS)))
#define NS_NXT_MAX 127
+/*
+ * EDNS0 extended flags, host order.
+ */
+#define NS_OPT_DNSSEC_OK 0x8000U
+
/*
* Inline versions of get/put short/long. Pointer is advanced.
*/
-/* Copyright (C) 1993, 1995-2005, 2006 Free Software Foundation, Inc.
+/* Copyright (C) 1993, 1995-2006, 2007 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by David Mosberger (davidm@azstarnet.com).
}
+#ifndef NOT_IN_libc
/* List of known interfaces. */
libc_freeres_ptr (
static struct netaddr
for (i = 0; hp->h_aliases[i]; ++i)
_res_hconf_trim_domain (hp->h_aliases[i]);
}
+#endif
EXT(statp).nsaddrs[n] =
malloc(sizeof (struct sockaddr_in6));
if (EXT(statp).nsaddrs[n] != NULL) {
- memcpy(EXT(statp).nsaddrs[n],
- &statp->nsaddr_list[ns],
- sizeof (struct sockaddr_in));
+ memset (mempcpy(EXT(statp).nsaddrs[n],
+ &statp->nsaddr_list[ns],
+ sizeof (struct sockaddr_in)),
+ '\0',
+ sizeof (struct sockaddr_in6)
+ - sizeof (struct sockaddr_in));
EXT(statp).nssocks[n] = -1;
n++;
}
#include <stdio.h>
#include <string.h>
-/* Generate a unique temporary filename using up to five characters of PFX
- if it is not NULL. The directory to put this file in is searched for
- as follows: First the environment variable "TMPDIR" is checked.
- If it contains the name of a writable directory, that directory is used.
- If not and if DIR is not NULL, that value is checked. If that fails,
- P_tmpdir is tried and finally "/tmp". The storage for the filename
- is allocated by `malloc'. */
+/* Generate a unique temporary filename using up to five characters of
+ PFX if it is not NULL. The directory to put this file in is
+ searched for as follows: First the environment variable "TMPDIR" is
+ checked. If it contains the name of a directory, that directory is
+ used. If not and if DIR is not NULL, that value is checked. If
+ that fails, P_tmpdir is tried and finally "/tmp". The storage for
+ the filename is allocated by `malloc'. */
char *
tempnam (const char *dir, const char *pfx)
{
{
int32_t j;
__random_r (&rdata, &j);
- j = j % len + 1;
+ j = j % (len - i) + i;
char c = string[i];
string[i] = string[j];
-/* Copyright (C) 1991,1996,1997,1999,2000,2001 Free Software Foundation, Inc.
+/* Copyright (C) 1991,1996,1997,1999,2000,2001,2007
+ 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
x = strtok(s, "-"); // x = "abc"
x = strtok(NULL, "-="); // x = "def"
x = strtok(NULL, "="); // x = NULL
- // s = "abc\0-def\0"
+ // s = "abc\0=-def\0"
*/
char *
strtok (s, delim)
call _dl_fixup # Call resolver.
popl %edx # Get register content back.
cfi_adjust_cfa_offset (-4)
- popl %ecx
- cfi_adjust_cfa_offset (-4)
- xchgl %eax, (%esp) # Get %eax contents end store function address.
- ret $8 # Jump to function address.
+ movl (%esp), %ecx
+ movl %eax, (%esp) # Store the function address.
+ movl 4(%esp), %eax
+ ret $12 # Jump to function address.
cfi_endproc
.size _dl_runtime_resolve, .-_dl_runtime_resolve
cfi_adjust_cfa_offset (-4)
popl %edx # Get register content back.
cfi_adjust_cfa_offset (-4)
- popl %ecx
- cfi_adjust_cfa_offset (-4)
- xchgl %eax, (%esp) # Get %eax contents end store function address.
- ret $16 # Jump to function address.
+ movl (%esp), %ecx
+ movl %eax, (%esp) # Store the function address.
+ movl 4(%esp), %eax
+ ret $20 # Jump to function address.
/*
+32 return address
cfi_rel_offset (esi, 0)
leal 44(%esp), %esi
movl %ebx, %ecx
+ orl $4, %ebx # Increase frame size if necessary to align
+ # stack for the function call
movl %esp, %edi
subl %ebx, %edi
- andl $0xfffffff0, %edi # Align stack
movl %esp, %ebx
cfi_def_cfa_register (ebx)
movl %edi, %esp
-/* Copyright (C) 1992, 1993, 1995, 1996, 1997, 2002, 2003, 2004
+/* Copyright (C) 1992, 1993, 1995, 1996, 1997, 2002, 2003, 2004, 2007
Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper, <drepper@gnu.ai.mit.edu>, August 1995.
/* There is some commonality. */
#include <sysdeps/unix/alpha/sysdep.h>
+#include <tls.h>
+
/* For Linux we can use the system call table in the header file
/usr/include/asm/unistd.h
of the kernel. But these symbols do not follow the SYS_* syntax
oldgetrlimit EXTRA getrlimit i:ip __old_getrlimit getrlimit@GLIBC_2.0
oldsetrlimit EXTRA setrlimit i:ip __old_setrlimit setrlimit@GLIBC_2.0
waitpid - waitpid Ci:ipi __waitpid waitpid __libc_waitpid
-fallocate64 EXTRA fallocate Vi:iiiiii __fallocate64
+fallocate64 - fallocate Vi:iiiiii __fallocate64
/* Initialization code run first thing by the ELF startup code. Linux version.
- Copyright (C) 1995-2004, 2005 Free Software Foundation, Inc.
+ Copyright (C) 1995-2004, 2005, 2007 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
_dl_non_dynamic_init ();
#endif
+#ifdef VDSO_SETUP
+ VDSO_SETUP ();
+#endif
+
__init_misc (argc, argv, envp);
#ifdef USE_NONOPTION_FLAGS
--- /dev/null
+/* Copyright (C) 2007 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 Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, write to the Free
+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307 USA. */
+
+#ifdef SHARED
+# include <dl-vdso.h>
+# undef __gettimeofday
+# undef __clock_gettime
+# undef __clock_getres
+# include <bits/libc-vdso.h>
+
+void *__vdso_gettimeofday attribute_hidden;
+void *__vdso_clock_gettime;
+void *__vdso_clock_getres;
+void *__vdso_get_tbfreq;
+
+
+static inline void
+_libc_vdso_platform_setup (void)
+{
+ PREPARE_VERSION (linux2615, "LINUX_2.6.15", 123718565);
+
+ __vdso_gettimeofday = _dl_vdso_vsym ("__kernel_gettimeofday", &linux2615);
+
+ __vdso_clock_gettime = _dl_vdso_vsym ("__kernel_clock_gettime", &linux2615);
+
+ __vdso_clock_getres = _dl_vdso_vsym ("__kernel_clock_getres", &linux2615);
+
+ __vdso_get_tbfreq = _dl_vdso_vsym ("__kernel_vdso_get_tbfreq", &linux2615);
+}
+
+# define VDSO_SETUP _libc_vdso_platform_setup
+#endif
+
+#include "../init-first.c"
#include <bp-sym.h>
-#ifdef SHARED
-# include <sys/time.h>
-# include <dl-vdso.h>
-# undef __gettimeofday
-# undef __clock_gettime
-# undef __clock_getres
-# include <bits/libc-vdso.h>
-
-void *__vdso_gettimeofday attribute_hidden;
-void *__vdso_clock_gettime;
-void *__vdso_clock_getres;
-void *__vdso_get_tbfreq;
-
-static inline void
-_libc_vdso_platform_setup (void)
-{
- PREPARE_VERSION (linux2615, "LINUX_2.6.15", 123718565);
-
- __vdso_gettimeofday = _dl_vdso_vsym ("__kernel_gettimeofday", &linux2615);
-
- __vdso_clock_gettime = _dl_vdso_vsym ("__kernel_clock_gettime", &linux2615);
-
- __vdso_clock_getres = _dl_vdso_vsym ("__kernel_clock_getres", &linux2615);
-
- __vdso_get_tbfreq = _dl_vdso_vsym ("__kernel_vdso_get_tbfreq", &linux2615);
-}
-
-# define VDSO_SETUP _libc_vdso_platform_setup
-#endif
-
-
int __cache_line_size attribute_hidden;
/* The main work is done in the generic function. */
#define LIBC_START_MAIN generic_start_main
/* Align stack. */
sub $0x8, %rsp
cfi_adjust_cfa_offset(8)
-#if 0 /* def SHARED */
+#ifdef SHARED
movq __vdso_gettimeofday(%rip), %rax
PTR_DEMANGLE (%rax)
#else
int (*__vdso_gettimeofday) (struct timeval *, void *) attribute_hidden;
-int (*__vdso_clock_gettime) (clockid_t, struct timespec *);
+int (*__vdso_clock_gettime) (clockid_t, struct timespec *)
+ __attribute__ ((nocommon));
+strong_alias (__vdso_clock_gettime, __GI___vdso_clock_gettime attribute_hidden)
static inline void
p = _dl_vdso_vsym ("clock_gettime", &linux26);
PTR_MANGLE (p);
- __vdso_clock_gettime = p;
+ __GI___vdso_clock_gettime = p;
}
# define VDSO_SETUP _libc_vdso_platform_setup
#endif
-#include <csu/libc-start.c>
+#include "../init-first.c"
: "=a" (eax), "=b" (ebx), "=c" (ecx), "=d" (edx)
: "0" (0x80000000));
- if (name >= _SC_LEVEL3_CACHE_SIZE)
+ /* No level 4 cache (yet). */
+ if (name > _SC_LEVEL3_CACHE_LINESIZE)
return 0;
unsigned int fn = 0x80000005 + (name >= _SC_LEVEL2_CACHE_SIZE);
{
case _SC_LEVEL1_DCACHE_SIZE:
return (ecx >> 14) & 0x3fc00;
+
case _SC_LEVEL1_DCACHE_ASSOC:
ecx >>= 16;
if ((ecx & 0xff) == 0xff)
/* Fully associative. */
return (ecx << 2) & 0x3fc00;
return ecx & 0xff;
+
case _SC_LEVEL1_DCACHE_LINESIZE:
return ecx & 0xff;
+
case _SC_LEVEL2_CACHE_SIZE:
return (ecx & 0xf000) == 0 ? 0 : (ecx >> 6) & 0x3fffc00;
+
case _SC_LEVEL2_CACHE_ASSOC:
- ecx >>= 12;
- switch (ecx & 0xf)
+ switch ((ecx >> 12) & 0xf)
{
case 0:
case 1:
case 2:
case 4:
- return ecx & 0xf;
+ return (ecx >> 12) & 0xf;
case 6:
return 8;
case 8:
return 16;
- case 0xf:
- return (ecx << 6) & 0x3fffc00;
+ case 10:
+ return 32;
+ case 11:
+ return 48;
+ case 12:
+ return 64;
+ case 13:
+ return 96;
+ case 14:
+ return 128;
+ case 15:
+ return ((ecx >> 6) & 0x3fffc00) / (ecx & 0xff);
default:
return 0;
}
+ /* NOTREACHED */
+
case _SC_LEVEL2_CACHE_LINESIZE:
return (ecx & 0xf000) == 0 ? 0 : ecx & 0xff;
+
+ case _SC_LEVEL3_CACHE_SIZE:
+ return (edx & 0xf000) == 0 ? 0 : (edx & 0x3ffc0000) << 1;
+
+ case _SC_LEVEL3_CACHE_ASSOC:
+ switch ((edx >> 12) & 0xf)
+ {
+ case 0:
+ case 1:
+ case 2:
+ case 4:
+ return (edx >> 12) & 0xf;
+ case 6:
+ return 8;
+ case 8:
+ return 16;
+ case 10:
+ return 32;
+ case 11:
+ return 48;
+ case 12:
+ return 64;
+ case 13:
+ return 96;
+ case 14:
+ return 128;
+ case 15:
+ return ((edx & 0x3ffc0000) << 1) / (edx & 0xff);
+ default:
+ return 0;
+ }
+ /* NOTREACHED */
+
+ case _SC_LEVEL3_CACHE_LINESIZE:
+ return (edx & 0xf000) == 0 ? 0 : edx & 0xff;
+
default:
assert (! "cannot happen");
}
/* PLT trampolines. x86-64 version.
- Copyright (C) 2004, 2005 Free Software Foundation, Inc.
+ Copyright (C) 2004, 2005, 2007 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
leaq 104(%rsp), %rsi
movq %rsp, %rbx
cfi_def_cfa_register (1)
+ movq %r10, %rcx
+ addq $8, %r10
+ andq $0xfffffffffffffff0, %r10
subq %r10, %rsp
movq %rsp, %rdi
- movq %r10, %rcx
shrq $3, %rcx
rep
movsq
- andq $0xfffffffffffffff0, %rsp
movq 32(%rbx), %rcx
movq 40(%rbx), %rsi
movq 48(%rbx), %rdi