From kukuk@suse.de Fri Oct 1 08:33:00 2004 From: kukuk@suse.de (Thorsten Kukuk) Date: Fri, 01 Oct 2004 08:33:00 -0000 Subject: [PATCH] Add multiple inclusion guards to useldt.h In-Reply-To: <20040925081040.GR30497@sunsite.ms.mff.cuni.cz> References: <20040925081040.GR30497@sunsite.ms.mff.cuni.cz> Message-ID: <20041001083338.GA16316@suse.de> On Sat, Sep 25, Jakub Jelinek wrote: > Hi! > > >From reading the code, I believe i686 --with-tls linuxthreads > are now broken. It is still broken for me using --with-tls --without-__thread. All thread test cases will be killed. Thorsten -- Thorsten Kukuk http://www.suse.de/~kukuk/ kukuk@suse.de SuSE Linux AG Maxfeldstr. 5 D-90409 Nuernberg -------------------------------------------------------------------- Key fingerprint = A368 676B 5E1B 3E46 CFCE 2D97 F8FD 4E23 56C6 FB4B From jakub@redhat.com Fri Oct 1 08:38:00 2004 From: jakub@redhat.com (Jakub Jelinek) Date: Fri, 01 Oct 2004 08:38:00 -0000 Subject: [PATCH] Add multiple inclusion guards to useldt.h In-Reply-To: <20041001083338.GA16316@suse.de> References: <20040925081040.GR30497@sunsite.ms.mff.cuni.cz> <20041001083338.GA16316@suse.de> Message-ID: <20041001083810.GX30497@sunsite.ms.mff.cuni.cz> On Fri, Oct 01, 2004 at 10:33:39AM +0200, Thorsten Kukuk wrote: > On Sat, Sep 25, Jakub Jelinek wrote: > > > Hi! > > > > >From reading the code, I believe i686 --with-tls linuxthreads > > are now broken. > > It is still broken for me using --with-tls --without-__thread. > > All thread test cases will be killed. I know, I'm using following patch ATM, but didn't have time to figure out why exactly current CVS doesn't work, which would be good to understand so that it can be fixed for real. 2004-09-26 Jakub Jelinek * sysdeps/i386/tls.h: Only include useldt.h if THREAD_SELF is not defined. * sysdeps/i386/i686/pt-machine.h: Revert last change. --- libc/linuxthreads/sysdeps/i386/tls.h 25 Sep 2004 03:32:13 -0000 1.36 +++ libc/linuxthreads/sysdeps/i386/tls.h 26 Sep 2004 08:45:21 -0000 1.35.2.3 @@ -113,7 +113,9 @@ typedef struct # define TLS_LOAD_EBX # endif -# include "useldt.h" /* For the structure. */ +# ifndef THREAD_SELF +# include "useldt.h" /* For the structure. */ +# endif # if __ASSUME_LDT_WORKS > 0 # define TLS_DO_MODIFY_LDT_KERNEL_CHECK(doit) (doit) /* Nothing to check. */ # else --- libc/linuxthreads/sysdeps/i386/i686/pt-machine.h 25 Sep 2004 10:04:15 -0000 1.23 +++ libc/linuxthreads/sysdeps/i386/i686/pt-machine.h 26 Sep 2004 08:45:22 -0000 1.22.2.2 @@ -69,9 +69,7 @@ __compare_and_swap (long int *p, long in } #endif -/* If tls.h was included, it will include useldt.h after defining USE_TLS. - We don't want to include it here first when tls.h includes us. */ -#if __ASSUME_LDT_WORKS > 0 && !defined _TLS_H +#if __ASSUME_LDT_WORKS > 0 #include "../useldt.h" #endif Jakub From jakub@redhat.com Tue Oct 5 08:10:00 2004 From: jakub@redhat.com (Jakub Jelinek) Date: Tue, 05 Oct 2004 08:10:00 -0000 Subject: [PATCH] Return -1 for i386 sysconf (_SC_CPUTIME) if !HP_TIMING_AVAIL Message-ID: <20041005080917.GB30497@sunsite.ms.mff.cuni.cz> Hi! Even if you run say i486 or i586 glibc on i686, HP_TIMING_AVAIL is not defined and therefore sysconf (_SC_{,THREAD_}CPUTIME) should IMHO return -1 in that case. For i686 compiled glibc, it has no sense to test for i386 or i486 CPU. 2004-10-05 Jakub Jelinek * sysdeps/unix/sysv/linux/i386/sysconf.c: Include hp-timing.h. (__sysconf): Return -1 for _SC_CPUTIME or _SC_THREAD_CPUTIME if !HP_TIMING_AVAIL. --- libc/sysdeps/unix/sysv/linux/i386/sysconf.c.jj 2004-10-05 09:05:00.000000000 +0200 +++ libc/sysdeps/unix/sysv/linux/i386/sysconf.c 2004-10-05 09:37:08.686520442 +0200 @@ -21,7 +21,7 @@ #include #include #include - +#include static long int linux_sysconf (int name); @@ -347,13 +347,13 @@ __sysconf (int name) { if (name == _SC_CPUTIME || name == _SC_THREAD_CPUTIME) { - /* Check dynamically. */ - int ac = i386_i486_test (); - - /* Only i386 and i486 have no TSC. */ +#if HP_TIMING_AVAIL // XXX We can add here test for machines which cannot support a - // XXX usabel TSC. - return ac == 0 || (ac & (1 << 21)) == 0 ? -1 : 200112L; + // XXX usable TSC. + return 200112L; +#else + return -1; +#endif } /* All the remainder, except the cache information, is handled in Jakub From jakub@redhat.com Tue Oct 5 08:11:00 2004 From: jakub@redhat.com (Jakub Jelinek) Date: Tue, 05 Oct 2004 08:11:00 -0000 Subject: [PATCH] Use -Wl,-z,relro -Wl,-z,now for nscd Message-ID: <20041005081016.GC30497@sunsite.ms.mff.cuni.cz> Hi! nscd is a daemon, so -Wl,-z,now doesn't hurt that much and more protection never hurts (before this patch nscd wasn't even relro). 2004-10-05 Jakub Jelinek * nscd/Makefile (relro-LDFLAGS): Add -Wl,-z,now if have-z-relro. ($(objpfx)nscd): Add $(relro-LDFLAGS). --- libc/nscd/Makefile.jj 2004-10-05 01:26:22.000000000 +0200 +++ libc/nscd/Makefile 2004-10-05 09:49:47.410559767 +0200 @@ -94,9 +94,13 @@ CFLAGS-selinux.c += -fpie CFLAGS-initgrcache.c += -fpie CFLAGS-gai.c += -fpie +ifeq (yes,$(have-z-relro)) +relro-LDFLAGS += -Wl,-z,now +endif + $(objpfx)nscd: $(addprefix $(objpfx),$(nscd-modules:=.o)) $(LINK.o) -pie -Wl,-O1 \ - $(sysdep-LDFLAGS) $(config-LDFLAGS) \ + $(sysdep-LDFLAGS) $(config-LDFLAGS) $(relro-LDFLAGS) \ $(extra-B-$(@F:lib%.so=%).so) -B$(csu-objpfx) \ $(extra-B-$(@F:lib%.so=%).so) $(load-map-file) \ $(LDFLAGS) $(LDFLAGS-$(@F)) \ Jakub From jakub@redhat.com Tue Oct 5 08:18:00 2004 From: jakub@redhat.com (Jakub Jelinek) Date: Tue, 05 Oct 2004 08:18:00 -0000 Subject: [PATCH] -DIS_IN_nscd=1 Message-ID: <20041005081734.GD30497@sunsite.ms.mff.cuni.cz> Hi! Although no code in CVS currently uses IS_IN_nscd, I think it certainly doesn't hurt and is good for consistency (and would kill many CVS conflicts for me). 2004-10-05 Jakub Jelinek * nscd/Makefile (nscd-cflags): Set to -DIS_IN_nscd=1, plus -fpie if building PIE. (CFLAGS-*.c): Use it. --- libc/nscd/Makefile.jj 2004-10-05 10:12:18.000000000 +0200 +++ libc/nscd/Makefile 2004-10-05 10:15:06.355916326 +0200 @@ -69,31 +69,36 @@ CFLAGS-nscd_gethst_r.c = -fexceptions CFLAGS-nscd_getai.c = -fexceptions CFLAGS-nscd_initgroups.c = -fexceptions +nscd-cflags = -DIS_IN_nscd=1 ifeq (yesyes,$(have-fpie)$(build-shared)) -CFLAGS-nscd.c += -fpie -CFLAGS-connections.c += -fpie -CFLAGS-pwdcache.c += -fpie -CFLAGS-getpwnam_r.c += -fpie -CFLAGS-getpwuid_r.c += -fpie -CFLAGS-grpcache.c += -fpie -CFLAGS-getgrnam_r.c += -fpie -CFLAGS-getgrgid_r.c += -fpie -CFLAGS-hstcache.c += -fpie -CFLAGS-gethstbyad_r.c += -fpie -CFLAGS-gethstbynm2_r.c += -fpie -CFLAGS-dbg_log.c += -fpie -CFLAGS-nscd_conf.c += -fpie -CFLAGS-nscd_stat.c += -fpie -CFLAGS-cache.c += -fpie -CFLAGS-xmalloc.c += -fpie -CFLAGS-xstrdup.c += -fpie -CFLAGS-mem.c += -fpie -CFLAGS-nscd_setup_thread.c += -fpie -CFLAGS-aicache.c += -fpie -CFLAGS-selinux.c += -fpie -CFLAGS-initgrcache.c += -fpie -CFLAGS-gai.c += -fpie +nscd-cflags += -fpie +endif + +CFLAGS-nscd.c += $(nscd-cflags) +CFLAGS-connections.c += $(nscd-cflags) +CFLAGS-pwdcache.c += $(nscd-cflags) +CFLAGS-getpwnam_r.c += $(nscd-cflags) +CFLAGS-getpwuid_r.c += $(nscd-cflags) +CFLAGS-grpcache.c += $(nscd-cflags) +CFLAGS-getgrnam_r.c += $(nscd-cflags) +CFLAGS-getgrgid_r.c += $(nscd-cflags) +CFLAGS-hstcache.c += $(nscd-cflags) +CFLAGS-gethstbyad_r.c += $(nscd-cflags) +CFLAGS-gethstbynm2_r.c += $(nscd-cflags) +CFLAGS-dbg_log.c += $(nscd-cflags) +CFLAGS-nscd_conf.c += $(nscd-cflags) +CFLAGS-nscd_stat.c += $(nscd-cflags) +CFLAGS-cache.c += $(nscd-cflags) +CFLAGS-xmalloc.c += $(nscd-cflags) +CFLAGS-xstrdup.c += $(nscd-cflags) +CFLAGS-mem.c += $(nscd-cflags) +CFLAGS-nscd_setup_thread.c += $(nscd-cflags) +CFLAGS-aicache.c += $(nscd-cflags) +CFLAGS-selinux.c += $(nscd-cflags) +CFLAGS-initgrcache.c += $(nscd-cflags) +CFLAGS-gai.c += $(nscd-cflags) +ifeq (yesyes,$(have-fpie)$(build-shared)) ifeq (yes,$(have-z-relro)) relro-LDFLAGS += -Wl,-z,now endif Jakub From jakub@redhat.com Tue Oct 5 08:42:00 2004 From: jakub@redhat.com (Jakub Jelinek) Date: Tue, 05 Oct 2004 08:42:00 -0000 Subject: [PATCH] Don't assume all future x86-64's will have usable TSC Message-ID: <20041005084058.GE30497@sunsite.ms.mff.cuni.cz> Hi! 2004-10-05 Jakub Jelinek * sysdeps/unix/sysv/linux/x86_64/sysconf.c (__sysconf): Return 200112L for _SC_CPUTIME or _SC_THREAD_CPUTIME. nptl/ * sysdeps/unix/sysv/linux/x86_64/bits/posix_opt.h (_POSIX_CPUTIME, _POSIX_THREAD_CPUTIME): Define to 0. linuxthreads/ * sysdeps/unix/sysv/linux/x86_64/bits/posix_opt.h (_POSIX_CPUTIME, _POSIX_THREAD_CPUTIME): Define to 0. --- libc/sysdeps/unix/sysv/linux/x86_64/sysconf.c.jj 2004-03-15 09:13:21.000000000 +0100 +++ libc/sysdeps/unix/sysv/linux/x86_64/sysconf.c 2004-10-05 10:30:17.772272728 +0200 @@ -279,6 +279,12 @@ handle_amd (int name) long int __sysconf (int name) { + if (name == _SC_CPUTIME || name == _SC_THREAD_CPUTIME) + { + /* XXX Test whether TSC is usable. */ + return 200112L; + } + /* We only handle the cache information here (for now). */ if (name < _SC_LEVEL1_ICACHE_SIZE || name > _SC_LEVEL4_CACHE_LINESIZE) return linux_sysconf (name); --- libc/nptl/sysdeps/unix/sysv/linux/x86_64/bits/posix_opt.h.jj 2004-04-13 10:42:53.000000000 +0200 +++ libc/nptl/sysdeps/unix/sysv/linux/x86_64/bits/posix_opt.h 2004-10-05 10:30:48.001872870 +0200 @@ -103,10 +103,10 @@ #define _POSIX_SHARED_MEMORY_OBJECTS 200112L /* CPU-time clocks supported. */ -#define _POSIX_CPUTIME 200112L +#define _POSIX_CPUTIME 0 /* We support the clock also in threads. */ -#define _POSIX_THREAD_CPUTIME 200112L +#define _POSIX_THREAD_CPUTIME 0 /* GNU libc provides regular expression handling. */ #define _POSIX_REGEXP 1 --- libc/linuxthreads/sysdeps/unix/sysv/linux/x86_64/bits/posix_opt.h.jj 2004-10-05 09:04:43.000000000 +0200 +++ libc/linuxthreads/sysdeps/unix/sysv/linux/x86_64/bits/posix_opt.h 2004-10-05 10:31:37.919956531 +0200 @@ -106,10 +106,10 @@ #define _POSIX_SHARED_MEMORY_OBJECTS 200112L /* CPU-time clocks supported. */ -#define _POSIX_CPUTIME 200112L +#define _POSIX_CPUTIME 0 /* We support the clock also in threads. */ -#define _POSIX_THREAD_CPUTIME 200112L +#define _POSIX_THREAD_CPUTIME 0 /* GNU libc provides regular expression handling. */ #define _POSIX_REGEXP 1 Jakub From jakub@redhat.com Tue Oct 5 15:31:00 2004 From: jakub@redhat.com (Jakub Jelinek) Date: Tue, 05 Oct 2004 15:31:00 -0000 Subject: [PATCH] Fix s390{,x} build Message-ID: <20041005153101.GF30497@sunsite.ms.mff.cuni.cz> Hi! Without this s390{,x} ld.so doesn't link. 2004-10-05 Jakub Jelinek * sysdeps/unix/sysv/linux/s390/s390-32/sysdep.h: Include dl-sysdep.h. * sysdeps/unix/sysv/linux/s390/s390-64/sysdep.h: Likewise. --- libc/sysdeps/unix/sysv/linux/s390/s390-32/sysdep.h 4 Oct 2004 20:59:35 -0000 1.14 +++ libc/sysdeps/unix/sysv/linux/s390/s390-32/sysdep.h 5 Oct 2004 11:23:18 -0000 1.12.2.3 @@ -22,6 +22,7 @@ #include #include +#include /* For RTLD_PRIVATE_ERRNO. */ /* For Linux we can use the system call table in the header file /usr/include/asm/unistd.h --- libc/sysdeps/unix/sysv/linux/s390/s390-64/sysdep.h 4 Oct 2004 20:59:34 -0000 1.16 +++ libc/sysdeps/unix/sysv/linux/s390/s390-64/sysdep.h 5 Oct 2004 11:23:19 -0000 1.14.2.3 @@ -23,6 +23,7 @@ #include #include +#include /* For RTLD_PRIVATE_ERRNO. */ /* For Linux we can use the system call table in the header file /usr/include/asm/unistd.h Jakub From jakub@redhat.com Tue Oct 5 15:33:00 2004 From: jakub@redhat.com (Jakub Jelinek) Date: Tue, 05 Oct 2004 15:33:00 -0000 Subject: [PATCH] Fix ppc64 NPTL compilation Message-ID: <20041005153232.GG30497@sunsite.ms.mff.cuni.cz> Hi! __timer_signal_thread_pclk declaration is now guarded with #if defined _POSIX_CPUTIME && _POSIX_CPUTIME >= 0 but #ifdef CLOCK_PROCESS_CPUTIME_ID is true on wider subset of architectures. I think #if defined _POSIX_CPUTIME && _POSIX_CPUTIME >= 0 implies #ifdef CLOCK_PROCESS_CPUTIME_ID so the following patch should DTRT. 2004-10-05 Jakub Jelinek * sysdeps/pthread/timer_create.c (timer_create): Use defined _POSIX_CPUTIME && _POSIX_CPUTIME >= 0 instead of defined CLOCK_PROCESS_CPUTIME_ID #ifs and similarly for THREAD_CPUTIME. --- libc/nptl/sysdeps/pthread/timer_create.c.jj 2004-10-05 09:04:47.000000000 +0200 +++ libc/nptl/sysdeps/pthread/timer_create.c 2004-10-05 17:04:53.536976849 +0200 @@ -38,10 +38,10 @@ timer_create (clock_id, evp, timerid) struct thread_node *thread = NULL; if (0 -#ifdef CLOCK_PROCESS_CPUTIME_ID +#if defined _POSIX_CPUTIME && _POSIX_CPUTIME >= 0 || clock_id == CLOCK_PROCESS_CPUTIME_ID #endif -#ifdef CLOCK_THREAD_CPUTIME_ID +#if defined _POSIX_THREAD_CPUTIME && _POSIX_THREAD_CPUTIME >= 0 || clock_id == CLOCK_THREAD_CPUTIME_ID #endif ) @@ -100,12 +100,12 @@ timer_create (clock_id, evp, timerid) default: thread = &__timer_signal_thread_rclk; break; -#ifdef CLOCK_PROCESS_CPUTIME_ID +#if defined _POSIX_CPUTIME && _POSIX_CPUTIME >= 0 case CLOCK_PROCESS_CPUTIME_ID: thread = &__timer_signal_thread_pclk; break; #endif -#ifdef CLOCK_THREAD_CPUTIME_ID +#if defined _POSIX_THREAD_CPUTIME && _POSIX_THREAD_CPUTIME >= 0 case CLOCK_THREAD_CPUTIME_ID: thread = &__timer_signal_thread_tclk; break; Jakub From jakub@redhat.com Tue Oct 5 17:47:00 2004 From: jakub@redhat.com (Jakub Jelinek) Date: Tue, 05 Oct 2004 17:47:00 -0000 Subject: [PATCH] Fix 3 NPTL testcases Message-ID: <20041005174654.GH30497@sunsite.ms.mff.cuni.cz> Hi! 2004-10-05 Jakub Jelinek * tst-clock1.c: Change #ifdef to #if defined. * tst-clock2.c: Likewise. * tst-cond11.c: Likewise. --- libc/nptl/tst-clock1.c.jj 2004-10-05 09:04:45.000000000 +0200 +++ libc/nptl/tst-clock1.c 2004-10-05 19:45:32.300366959 +0200 @@ -27,7 +27,7 @@ int do_test (void) { -#ifdef _POSIX_THREAD_CPUTIME && _POSIX_THREAD_CPUTIME >= 0 +#if defined _POSIX_THREAD_CPUTIME && _POSIX_THREAD_CPUTIME >= 0 clockid_t cl; /* This is really only a linking-test here. */ int e = pthread_getcpuclockid (pthread_self (), &cl); --- libc/nptl/tst-cond11.c.jj 2004-10-05 09:04:45.000000000 +0200 +++ libc/nptl/tst-cond11.c 2004-10-05 19:46:08.952869926 +0200 @@ -24,7 +24,7 @@ #include -#ifdef _POSIX_CLOCK_SELECTION && _POSIX_CLOCK_SELECTION >= 0 +#if defined _POSIX_CLOCK_SELECTION && _POSIX_CLOCK_SELECTION >= 0 static int run_test (clockid_t cl) { --- libc/nptl/tst-clock2.c.jj 2004-10-05 09:04:45.000000000 +0200 +++ libc/nptl/tst-clock2.c 2004-10-05 19:45:45.224076121 +0200 @@ -25,7 +25,7 @@ #include -#ifdef _POSIX_THREAD_CPUTIME && _POSIX_THREAD_CPUTIME >= 0 +#if defined _POSIX_THREAD_CPUTIME && _POSIX_THREAD_CPUTIME >= 0 static pthread_barrier_t b2; static pthread_barrier_t bN; Jakub From jakub@redhat.com Wed Oct 6 09:00:00 2004 From: jakub@redhat.com (Jakub Jelinek) Date: Wed, 06 Oct 2004 09:00:00 -0000 Subject: [PATCH] Fix s390{,x} _JMPBUF_CFA_UNWINDS_ADJ Message-ID: <20041006085908.GI30497@sunsite.ms.mff.cuni.cz> Hi! _Unwind_GetCFA () on s390{,x} returns address 96 (resp. 160) above actual %r15 value, so with the recent stack space saving changes on s390{,x} _JMPBUF_CFA_UNWINDS_ADJ misbehaves. With this patch make check passes fully on s390 again. 2004-10-06 Jakub Jelinek * sysdeps/s390/jmpbuf-unwind.h: Include bits/wordsize.h. (JMPBUF_CFA_UNWINDS_ADJ): Subtract 96 resp. 160 bytes from CFA. --- libc/nptl/sysdeps/s390/jmpbuf-unwind.h 2004-09-02 18:46:00.000000000 -0400 +++ libc/nptl/sysdeps/s390/jmpbuf-unwind.h 2004-10-06 03:43:32.000000000 -0400 @@ -20,13 +20,18 @@ #include #include #include +#include +/* On s390{,x}, CFA is always 96 (resp. 160) bytes above actual + %r15. */ #define _JMPBUF_CFA_UNWINDS_ADJ(_jmpbuf, _context, _adj) \ - _JMPBUF_UNWINDS_ADJ (_jmpbuf, (void *) _Unwind_GetCFA (_context), _adj) + _JMPBUF_UNWINDS_ADJ (_jmpbuf, \ + (void *) (_Unwind_GetCFA (_context) \ + - 32 - 2 * __WORDSIZE), _adj) -#define _JMPBUF_UNWINDS_ADJ(_jmpbuf, _address, _adj) \ - ((uintptr_t) (_address) - (_adj) \ +#define _JMPBUF_UNWINDS_ADJ(_jmpbuf, _address, _adj) \ + ((uintptr_t) (_address) - (_adj) \ < (uintptr_t) (_jmpbuf)->__gregs[__JB_GPR15] - (_adj)) -/* We use the normal lobngjmp for unwinding. */ +/* We use the normal longjmp for unwinding. */ #define __libc_unwind_longjmp(buf, val) __libc_longjmp (buf, val) Jakub From jakub@redhat.com Wed Oct 6 11:41:00 2004 From: jakub@redhat.com (Jakub Jelinek) Date: Wed, 06 Oct 2004 11:41:00 -0000 Subject: [PATCH] Misc fixes Message-ID: <20041006114054.GK30497@sunsite.ms.mff.cuni.cz> Hi! Most of the changes don't probably need comments, they are there just to shut up warnings or fix tst-clock2 failing on i386. The __nwaiters change makes x86-64 look like the rest of arches, consistency is good and the type really should be unsigned. The allocatestack.c change is to make GCC 4 and 3.4.2-RH happy, otherwise I get: allocatestack.c:778: warning: `visibility' attribute ignored on non-class types You know the GCC PR for this already... 2004-10-06 Jakub Jelinek * posix/tst-getaddrinfo2.c: Include stdlib.h and string.h. (do_test): Use %p instead of 0x%08X to print a pointer. * malloc/malloc.c: Include stdio-common/_itoa.h. nptl/ * sysdeps/unix/sysv/linux/x86_64/bits/pthreadtypes.h (pthread_cond_t): Change __data.__nwaiters from int to unsigned int. * tst-clock2.c (do_test): Don't fail if _POSIX_THREAD_CPUTIME == 0 and sysconf (_SC_THREAD_CPUTIME) returns negative value. * allocatestack.c (__find_thread_by_id): Move attribute_hidden before return type. --- libc/posix/tst-getaddrinfo2.c.jj 2004-09-26 10:42:15.000000000 +0200 +++ libc/posix/tst-getaddrinfo2.c 2004-10-06 13:03:39.000000000 +0200 @@ -2,6 +2,8 @@ #include #include #include +#include +#include #include static int @@ -47,7 +49,7 @@ do_test (void) if (err) { printf ("FAIL getaddrinfo IPv4 socktype 0,513: " - "fam %d alen %d addr 0x%08X addr/fam %d " + "fam %d alen %d addr %p addr/fam %d " "addr/port %d H[%d]\n", pai->ai_family, pai->ai_addrlen, psin, psin ? psin->sin_family : 0, --- libc/malloc/malloc.c.jj 2004-10-05 09:04:44.000000000 +0200 +++ libc/malloc/malloc.c 2004-10-06 12:59:31.000000000 +0200 @@ -257,6 +257,10 @@ #include +#ifdef _LIBC +#include +#endif + #ifdef __cplusplus extern "C" { #endif --- libc/nptl/sysdeps/unix/sysv/linux/x86_64/bits/pthreadtypes.h.jj 2004-09-30 00:50:04.000000000 +0200 +++ libc/nptl/sysdeps/unix/sysv/linux/x86_64/bits/pthreadtypes.h 2004-10-06 12:55:33.312919606 +0200 @@ -100,7 +100,7 @@ typedef union __extension__ unsigned long long int __wakeup_seq; __extension__ unsigned long long int __woken_seq; void *__mutex; - int __nwaiters; + unsigned int __nwaiters; unsigned int __broadcast_seq; } __data; char __size[__SIZEOF_PTHREAD_COND_T]; --- libc/nptl/tst-clock2.c.jj 2004-10-06 11:04:06.000000000 +0200 +++ libc/nptl/tst-clock2.c 2004-10-06 13:21:51.000000000 +0200 @@ -58,6 +58,14 @@ do_test (void) #if defined _POSIX_THREAD_CPUTIME && _POSIX_THREAD_CPUTIME >= 0 # define N 10 +# if _POSIX_THREAD_CPUTIME == 0 + if (sysconf (_SC_THREAD_CPUTIME) < 0) + { + puts ("_POSIX_THREAD_CPUTIME option not available"); + return 0; + } +# endif + if (pthread_barrier_init (&b2, NULL, 2) != 0 || pthread_barrier_init (&bN, NULL, N + 1) != 0) { --- libc/nptl/allocatestack.c.jj 2004-10-06 13:17:51.000000000 +0200 +++ libc/nptl/allocatestack.c 2004-10-06 13:17:51.000000000 +0200 @@ -772,8 +772,8 @@ __reclaim_stacks (void) #if HP_TIMING_AVAIL /* Find a thread given the thread ID. */ -struct pthread * attribute_hidden +struct pthread * __find_thread_by_id (pid_t tid) { struct pthread *result = NULL; Jakub From jakub@redhat.com Wed Oct 6 12:23:00 2004 From: jakub@redhat.com (Jakub Jelinek) Date: Wed, 06 Oct 2004 12:23:00 -0000 Subject: [PATCH] Warning removal Message-ID: <20041006112553.GJ30497@sunsite.ms.mff.cuni.cz> Hi! In file included from ../nptl/sysdeps/unix/sysv/linux/jmp-unwind.c:22: ../nptl/sysdeps/pthread/pthread-functions.h:97: warning: "struct xid_command" declared inside parameter list ../nptl/sysdeps/pthread/pthread-functions.h:97: warning: its scope is only this definition or declaration, which is probably not what you want 2004-10-06 Jakub Jelinek * sysdeps/unix/sysv/linux/jmp-unwind.c: Include pthreadP.h instead of pthread-functions.h and pthreaddef.h. * sysdeps/unix/sysv/linux/s390/jmp-unwind.c: Likewise. --- libc/nptl/sysdeps/unix/sysv/linux/s390/jmp-unwind.c.jj 2003-07-31 21:13:08.000000000 +0200 +++ libc/nptl/sysdeps/unix/sysv/linux/s390/jmp-unwind.c 2004-10-06 11:22:57.163080123 +0200 @@ -1,5 +1,5 @@ /* Clean up stack frames unwound by longjmp. Linux/s390 version. - Copyright (C) 2003 Free Software Foundation, Inc. + Copyright (C) 2003, 2004 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 @@ -19,8 +19,7 @@ #include #include -#include -#include +#include extern void __pthread_cleanup_upto (__jmp_buf env, char *targetframe); #pragma weak __pthread_cleanup_upto --- libc/nptl/sysdeps/unix/sysv/linux/jmp-unwind.c.jj 2003-03-15 10:50:11.000000000 +0100 +++ libc/nptl/sysdeps/unix/sysv/linux/jmp-unwind.c 2004-10-06 11:20:11.786370227 +0200 @@ -19,8 +19,7 @@ #include #include -#include -#include +#include extern void __pthread_cleanup_upto (__jmp_buf env, char *targetframe); #pragma weak __pthread_cleanup_upto Jakub From schwab@suse.de Thu Oct 7 12:17:00 2004 From: schwab@suse.de (Andreas Schwab) Date: Thu, 07 Oct 2004 12:17:00 -0000 Subject: Fix conflict with altivec Message-ID: When using altivec on ppc there are additional builtin indentifiers __vector, __bool and __pixel. The first one is used in . Andreas. 2004-10-07 Andreas Schwab * misc/sys/uio.h: Change __vector to __iovec to avoid clash with altivec. --- misc/sys/uio.h 22 Apr 2003 10:02:01 +0200 1.12 +++ misc/sys/uio.h 06 Oct 2004 22:20:02 +0200 @@ -30,24 +30,24 @@ __BEGIN_DECLS /* Read data from file descriptor FD, and put the result in the - buffers described by VECTOR, which is a vector of COUNT `struct iovec's. + buffers described by IOVEC, which is a vector of COUNT `struct iovec's. The buffers are filled in the order specified. Operates just like `read' (see ) except that data are - put in VECTOR instead of a contiguous buffer. + put in IOVEC instead of a contiguous buffer. This function is a cancellation point and therefore not marked with __THROW. */ -extern ssize_t readv (int __fd, __const struct iovec *__vector, int __count); +extern ssize_t readv (int __fd, __const struct iovec *__iovec, int __count); -/* Write data pointed by the buffers described by VECTOR, which +/* Write data pointed by the buffers described by IOVEC, which is a vector of COUNT `struct iovec's, to file descriptor FD. The data is written in the order specified. Operates just like `write' (see ) except that the data - are taken from VECTOR instead of a contiguous buffer. + are taken from IOVEC instead of a contiguous buffer. This function is a cancellation point and therefore not marked with __THROW. */ -extern ssize_t writev (int __fd, __const struct iovec *__vector, int __count); +extern ssize_t writev (int __fd, __const struct iovec *__iovec, int __count); __END_DECLS -- Andreas Schwab, SuSE Labs, schwab@suse.de SuSE Linux AG, Maxfeldstra??e 5, 90409 N??rnberg, Germany Key fingerprint = 58CA 54C7 6D53 942B 1756 01D3 44D5 214B 8276 4ED5 "And now for something completely different." From jakub@redhat.com Tue Oct 12 18:28:00 2004 From: jakub@redhat.com (Jakub Jelinek) Date: Tue, 12 Oct 2004 18:28:00 -0000 Subject: [PATCH] Use backtrace(3) in libSegFault.so, register dumping on ia64 Message-ID: <20041012182701.GR30497@sunsite.ms.mff.cuni.cz> Hi! The first change is using backtrace (3) instead of doing the backtrace by hand. The disadvantage is that at most 256 frames will be printed, not more as before, the advantage is that ia64, x86-64, s390* start working. The other change is a REGISTER_DUMP implementation for ia64. I chose to print only registers that kernel actually fills in in setup_sigcontext. 2004-10-12 Jakub Jelinek * sysdeps/generic/segfault.c: Include alloca.h and stdint.h. Don't include frame.h. (CURRENT_STACK_FRAME, INNER_THAN, ADVANCE_STACK_FRAME): Remove. (catch_segfault): Use backtrace function. * sysdeps/unix/sysv/linux/ia64/bits/sigcontext.h: Fix comment. * sysdeps/unix/sysv/linux/ia64/register-dump.h: New file. * sysdeps/unix/sysv/linux/ia64/sigcontextinfo.h (GET_PC): Return sc_ip field. --- libc/sysdeps/unix/sysv/linux/ia64/bits/sigcontext.h.jj 2003-11-29 10:20:18.000000000 +0100 +++ libc/sysdeps/unix/sysv/linux/ia64/bits/sigcontext.h 2004-10-12 17:01:10.749786149 +0200 @@ -1,4 +1,5 @@ -/* Copyright (C) 1996, 1997, 1998, 2000, 2001, 2003 Free Software Foundation, Inc. +/* Copyright (C) 1996, 1997, 1998, 2000, 2001, 2003, 2004 + Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Jes Sorensen , July 2000 @@ -36,7 +37,7 @@ struct ia64_fpreg struct sigcontext { - unsigned long int sc_flags; /* see manifest constants above */ + unsigned long int sc_flags; /* see manifest constants below */ unsigned long int sc_nat; /* bit i == 1 iff scratch reg gr[i] is a NaT */ stack_t sc_stack; /* previously active stack */ --- libc/sysdeps/unix/sysv/linux/ia64/register-dump.h.jj 2004-10-12 17:08:39.000000000 +0200 +++ libc/sysdeps/unix/sysv/linux/ia64/register-dump.h 2004-10-12 20:08:16.930645446 +0200 @@ -0,0 +1,182 @@ +/* Dump registers. + Copyright (C) 2004 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Jakub Jelinek , 2004. + + 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. */ + +#include +#include +#include + +/* We will print the register dump in this format: + + GP: XXXXXXXXXXXXXXXX R2: XXXXXXXXXXXXXXXX R3: XXXXXXXXXXXXXXXX + R8: XXXXXXXXXXXXXXXX R9: XXXXXXXXXXXXXXXX R10: XXXXXXXXXXXXXXXX + R11: XXXXXXXXXXXXXXXX SP: XXXXXXXXXXXXXXXX TP: XXXXXXXXXXXXXXXX + R14: XXXXXXXXXXXXXXXX R15: XXXXXXXXXXXXXXXX R16: XXXXXXXXXXXXXXXX + R17: XXXXXXXXXXXXXXXX R18: XXXXXXXXXXXXXXXX R19: XXXXXXXXXXXXXXXX + R20: XXXXXXXXXXXXXXXX R21: XXXXXXXXXXXXXXXX R22: XXXXXXXXXXXXXXXX + R23: XXXXXXXXXXXXXXXX R24: XXXXXXXXXXXXXXXX R25: XXXXXXXXXXXXXXXX + R26: XXXXXXXXXXXXXXXX R27: XXXXXXXXXXXXXXXX R28: XXXXXXXXXXXXXXXX + R29: XXXXXXXXXXXXXXXX R30: XXXXXXXXXXXXXXXX R31: XXXXXXXXXXXXXXXX + + RP: XXXXXXXXXXXXXXXX B6: XXXXXXXXXXXXXXXX B7: XXXXXXXXXXXXXXXX + + IP: XXXXXXXXXXXXXXXX RSC: XXXXXXXXXXXXXXXX PR: XXXXXXXXXXXXXXXX + PFS: XXXXXXXXXXXXXXXX UNAT: XXXXXXXXXXXXXXXX CFM: XXXXXXXXXXXXXXXX + CCV: XXXXXXXXXXXXXXXX FPSR: XXXXXXXXXXXXXXXX + + F32: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX F33: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX + F34: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX F35: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX +... + F124: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX F125: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX + F126: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX F127: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX + */ + +static void +hexvalue (unsigned long int value, char *buf, size_t len) +{ + char *cp = _itoa_word (value, buf + len, 16, 0); + while (cp > buf) + *--cp = '0'; +} + +static void +regvalue (unsigned long int *value, char letter, int regno, char *buf) +{ + int n = regno >= 100 ? 3 : regno >= 10 ? 2 : 1; + buf[0] = ' '; + buf[1] = letter; + _itoa_word (regno, buf + 2 + n, 10, 0); + buf[2 + n] = ':'; + for (++n; n <= 4; ++n) + buf[2 + n] = ' '; + hexvalue (value[0], buf + 7, 16); + if (letter == 'F') + { + hexvalue (value[1], buf + 7 + 16, 16); + buf[7 + 32] = '\n'; + } + else + buf[7 + 16] = '\n'; +} + +static void +register_dump (int fd, struct sigcontext *ctx) +{ + char gpregs[32 - 5][8 + 16]; + char fpregs[128 - 32][8 + 32]; + char bpregs[3][8 + 16]; + char spregs[8][16]; + struct iovec iov[146]; + size_t nr = 0; + int i; + +#define ADD_STRING(str) \ + do \ + { \ + iov[nr].iov_base = (char *) str; \ + iov[nr].iov_len = strlen (str); \ + ++nr; \ + } \ + while (0) +#define ADD_MEM(str, len) \ + do \ + { \ + iov[nr].iov_base = str; \ + iov[nr].iov_len = len; \ + ++nr; \ + } \ + while (0) + + /* Generate strings of register contents. */ + for (i = 1; i < 4; ++i) + { + regvalue (&ctx->sc_gr[i], 'R', i, gpregs[i - 1]); + if (ctx->sc_nat & (1L << i)) + memcpy (gpregs[i - 1] + 7, "NaT ", 16); + } + for (i = 8; i < 32; ++i) + { + regvalue (&ctx->sc_gr[i], 'R', i, gpregs[i - 5]); + if (ctx->sc_nat & (1L << i)) + memcpy (gpregs[i - 1] + 7, "NaT ", 16); + } + memcpy (gpregs[0] + 1, "GP:", 3); + memcpy (gpregs[7] + 1, "SP: ", 4); + memcpy (gpregs[8] + 1, "TP: ", 4); + + regvalue (&ctx->sc_br[0], 'B', 0, bpregs[0]); + regvalue (&ctx->sc_br[6], 'B', 6, bpregs[1]); + regvalue (&ctx->sc_br[7], 'B', 7, bpregs[2]); + memcpy (bpregs[0] + 1, "RP:", 3); + + if (ctx->sc_flags & IA64_SC_FLAG_FPH_VALID) + for (i = 32; i < 128; ++i) + regvalue (&ctx->sc_fr[i].u.bits[0], 'F', i, fpregs[i - 32]); + + hexvalue (ctx->sc_ip, spregs[0], sizeof (spregs[0])); + hexvalue (ctx->sc_ar_rsc, spregs[1], sizeof (spregs[1])); + hexvalue (ctx->sc_pr, spregs[2], sizeof (spregs[2])); + hexvalue (ctx->sc_ar_pfs, spregs[3], sizeof (spregs[3])); + hexvalue (ctx->sc_ar_unat, spregs[4], sizeof (spregs[4])); + hexvalue (ctx->sc_cfm, spregs[5], sizeof (spregs[5])); + hexvalue (ctx->sc_ar_ccv, spregs[6], sizeof (spregs[6])); + hexvalue (ctx->sc_ar_fpsr, spregs[7], sizeof (spregs[7])); + + /* Generate the output. */ + ADD_STRING ("Register dump:\n\n"); + + for (i = 0; i < 32 - 5; ++i) + ADD_MEM (gpregs[i], sizeof (gpregs[0]) - 1 + ((i % 3) == 2)); + ADD_STRING ("\n"); + + for (i = 0; i < 3; ++i) + ADD_MEM (bpregs[i], sizeof (bpregs[0]) - 1); + + ADD_STRING ("\n\n IP: "); + ADD_MEM (spregs[0], sizeof (spregs[0])); + ADD_STRING (" RSC: "); + ADD_MEM (spregs[1], sizeof (spregs[0])); + ADD_STRING (" PR: "); + ADD_MEM (spregs[2], sizeof (spregs[0])); + ADD_STRING ("\n PFS: "); + ADD_MEM (spregs[3], sizeof (spregs[0])); + ADD_STRING (" UNAT: "); + ADD_MEM (spregs[4], sizeof (spregs[0])); + ADD_STRING (" CFM: "); + ADD_MEM (spregs[5], sizeof (spregs[0])); + ADD_STRING ("\n CCV: "); + ADD_MEM (spregs[6], sizeof (spregs[0])); + ADD_STRING (" FPSR: "); + ADD_MEM (spregs[7], sizeof (spregs[0])); + ADD_STRING ("\n"); + + if (ctx->sc_flags & IA64_SC_FLAG_FPH_VALID) + { + ADD_STRING ("\n"); + + for (i = 0; i < 128 - 32; ++i) + ADD_MEM (fpregs[i], sizeof (fpregs[0]) - 1 + (i & 1)); + } + + /* Write the stuff out. */ + writev (fd, iov, nr); +} + + +#define REGISTER_DUMP register_dump (fd, ctx) --- libc/sysdeps/unix/sysv/linux/ia64/sigcontextinfo.h.jj 2002-07-27 10:41:38.000000000 +0200 +++ libc/sysdeps/unix/sysv/linux/ia64/sigcontextinfo.h 2004-10-12 18:28:06.000000000 +0200 @@ -1,4 +1,4 @@ -/* Copyright (C) 2002 Free Software Foundation, Inc. +/* Copyright (C) 2002, 2004 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 @@ -18,7 +18,7 @@ #define SIGCONTEXT siginfo_t *_si, struct sigcontext * #define SIGCONTEXT_EXTRA_ARGS _si, -#define GET_PC(ctx) ((void *) 0) +#define GET_PC(ctx) ((ctx)->sc_ip) #define GET_FRAME(ctx) ((void *) 0) #define GET_STACK(ctx) ((void *) 0) --- libc/sysdeps/generic/segfault.c.jj 2004-01-27 15:44:25.000000000 +0100 +++ libc/sysdeps/generic/segfault.c 2004-10-12 17:07:22.000000000 +0200 @@ -19,11 +19,13 @@ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ +#include #include #include #include #include #include +#include #include #include #include @@ -33,9 +35,6 @@ #include -/* Get the definition of "struct layout". */ -#include - /* This file defines macros to access the content of the sigcontext element passed up by the signal handler. */ #include @@ -43,35 +42,6 @@ /* Get code to possibly dump the content of all registers. */ #include -/* This implementation assumes a stack layout that matches the defaults - used by gcc's `__builtin_frame_address' and `__builtin_return_address' - (FP is the frame pointer register): - - +-----------------+ +-----------------+ - FP -> | previous FP --------> | previous FP ------>... - | | | | - | return address | | return address | - +-----------------+ +-----------------+ - - */ - -/* Get some notion of the current stack. Need not be exactly the top - of the stack, just something somewhere in the current frame. */ -#ifndef CURRENT_STACK_FRAME -# define CURRENT_STACK_FRAME ({ char __csf; &__csf; }) -#endif - -/* By default we assume that the stack grows downward. */ -#ifndef INNER_THAN -# define INNER_THAN < -#endif - -/* By default assume the `next' pointer in struct layout points to the - next struct layout. */ -#ifndef ADVANCE_STACK_FRAME -# define ADVANCE_STACK_FRAME(next) BOUNDED_1 ((struct layout *) (next)) -#endif - /* We'll use tis a lot. */ #define WRITE_STRING(s) write (fd, s, strlen (s)) @@ -102,13 +72,10 @@ write_strsignal (int fd, int signal) static void catch_segfault (int signal, SIGCONTEXT ctx) { - struct layout *current; - void *__unbounded top_frame; - void *__unbounded top_stack; - int fd; + int fd, cnt, i; void **arr; - size_t cnt; struct sigaction sa; + uintptr_t pc; /* This is the name of the file we are writing to. If none is given or we cannot write to this file write to stderr. */ @@ -130,41 +97,26 @@ catch_segfault (int signal, SIGCONTEXT c WRITE_STRING ("\nBacktrace:\n"); - top_frame = GET_FRAME (ctx); - top_stack = GET_STACK (ctx); - - /* First count how many entries we'll have. */ - cnt = 1; - current = BOUNDED_1 ((struct layout *) top_frame); - while (!((void *) current INNER_THAN top_stack - || !((void *) current INNER_THAN __libc_stack_end))) - { - ++cnt; - - current = ADVANCE_STACK_FRAME (current->next); - } - - arr = alloca (cnt * sizeof (void *)); - - /* First handle the program counter from the structure. */ - arr[0] = GET_PC (ctx); - - current = BOUNDED_1 ((struct layout *) top_frame); - cnt = 1; - while (!((void *) current INNER_THAN top_stack - || !((void *) current INNER_THAN __libc_stack_end))) - { - arr[cnt++] = current->return_address; - - current = ADVANCE_STACK_FRAME (current->next); - } - - /* If the last return address was NULL, assume that it doesn't count. */ - if (arr[cnt-1] == NULL) - cnt--; + /* Get the backtrace. */ + arr = alloca (256 * sizeof (void *)); + cnt = backtrace (arr, 256); + + /* Now try to locate the PC from signal context in the backtrace. + Normally it will be found at arr[2], but it might appear later + if there were some signal handler wrappers. Allow a few bytes + difference to cope with as many arches as possible. */ + pc = (uintptr_t) GET_PC (ctx); + for (i = 0; i < cnt; ++i) + if ((uintptr_t) arr[i] >= pc - 16 && (uintptr_t) arr[i] <= pc + 16) + break; + + /* If we haven't found it, better dump full backtrace even including + the signal handler frames instead of not dumping anything. */ + if (i == cnt) + i = 0; /* Now generate nicely formatted output. */ - __backtrace_symbols_fd (arr, cnt, fd); + __backtrace_symbols_fd (arr + i, cnt - i, fd); #ifdef HAVE_PROC_SELF /* Now the link map. */ Jakub From jakub@redhat.com Thu Oct 14 09:45:00 2004 From: jakub@redhat.com (Jakub Jelinek) Date: Thu, 14 Oct 2004 09:45:00 -0000 Subject: [PATCH] Fix sparc build Message-ID: <20041014094345.GV30497@sunsite.ms.mff.cuni.cz> Hi! 1) sparc32 doesn't define __NR_setres[ug]id, only __NR_setres[ug]id32. So if the *id32 syscall fails, it should ENOSYS, but shouldn't ENOSYS always. 2) sparc mathinline.h needs __NTHification 3) on SPARC, the sequence to set up load address of rtld_errno is IMHO too long to be included in INLINE_SYSCALL, so this patch makes __errno_location () hidden within ld.so if RTLD_PRIVATE_ERRNO and return &rtld_errno. 2004-10-14 Jakub Jelinek * sysdeps/unix/sysv/linux/i386/setresuid.c: Handle defined __NR_setresuid32 && !defined __NR_setresuid. * sysdeps/unix/sysv/linux/i386/setresgid.c: Handle defined __NR_setresgid32 && !defined __NR_setresgid. * sysdeps/sparc/fpu/bits/mathinline.h (__signbitf, __signbit, __signbitl, sqrtf, sqrt, sqrtl, fdim, fdimf): Use __NTH macro. * sysdeps/generic/errno-loc.c: Don't undef #errno if RTLD_PRIVATE_ERRNO. * include/errno.h (__errno_location): If RTLD_PRIVATE_ERRNO, add attribute_hidden. linuxthreads/ * sysdeps/pthread/errno-loc.c: Don't undef #errno if RTLD_PRIVATE_ERRNO. --- libc/sysdeps/unix/sysv/linux/i386/setresuid.c.jj 2004-09-20 01:44:35.000000000 +0200 +++ libc/sysdeps/unix/sysv/linux/i386/setresuid.c 2004-10-14 11:35:54.055164737 +0200 @@ -28,7 +28,7 @@ #include -#ifdef __NR_setresuid +#if defined __NR_setresuid || defined __NR_setresuid32 # ifdef __NR_setresuid32 # if __ASSUME_32BITUIDS == 0 @@ -43,7 +43,7 @@ __setresuid (uid_t ruid, uid_t euid, uid { int result; -# if __ASSUME_32BITUIDS > 0 +# if __ASSUME_32BITUIDS > 0 || !defined __NR_setresuid result = INLINE_SYSCALL (setresuid32, 3, ruid, euid, suid); # else # ifdef __NR_setresuid32 --- libc/sysdeps/unix/sysv/linux/i386/setresgid.c.jj 2004-09-20 01:44:35.000000000 +0200 +++ libc/sysdeps/unix/sysv/linux/i386/setresgid.c 2004-10-14 11:35:54.056164558 +0200 @@ -28,7 +28,7 @@ #include -#ifdef __NR_setresgid +#if defined __NR_setresgid || defined __NR_setresgid32 # ifdef __NR_setresgid32 # if __ASSUME_32BITUIDS == 0 @@ -43,7 +43,7 @@ __setresgid (gid_t rgid, gid_t egid, gid { int result; -# if __ASSUME_32BITUIDS > 0 +# if __ASSUME_32BITUIDS > 0 || !defined __NR_setresgid result = INLINE_SYSCALL (setresgid32, 3, rgid, egid, sgid); # else # ifdef __NR_setresgid32 --- libc/sysdeps/sparc/fpu/bits/mathinline.h.jj 2004-09-30 11:04:11.000000000 +0200 +++ libc/sysdeps/sparc/fpu/bits/mathinline.h 2004-10-14 11:35:54.072161702 +0200 @@ -112,7 +112,7 @@ /* Test for negative number. Used in the signbit() macro. */ __MATH_INLINE int -__signbitf (float __x) __THROW +__NTH (__signbitf (float __x)) { __extension__ union { float __f; int __i; } __u = { __f: __x }; return __u.__i < 0; @@ -121,14 +121,14 @@ __signbitf (float __x) __THROW # if __WORDSIZE == 32 __MATH_INLINE int -__signbit (double __x) __THROW +__NTH (__signbit (double __x)) { __extension__ union { double __d; int __i[2]; } __u = { __d: __x }; return __u.__i[0] < 0; } __MATH_INLINE int -__signbitl (long double __x) __THROW +__NTH (__signbitl (long double __x)) { return __signbit ((double)__x); } @@ -136,14 +136,14 @@ __signbitl (long double __x) __THROW # else /* sparc64 */ __MATH_INLINE int -__signbit (double __x) __THROW +__NTH (__signbit (double __x)) { __extension__ union { double __d; long int __i; } __u = { __d: __x }; return __u.__i < 0; } __MATH_INLINE int -__signbitl (long double __x) __THROW +__NTH (__signbitl (long double __x)) { __extension__ union { long double __l; long int __i[2]; } __u = { __l: __x }; return __u.__i[0] < 0; @@ -156,7 +156,7 @@ __signbitl (long double __x) __THROW # if !defined __NO_MATH_INLINES && !__GNUC_PREREQ (3, 2) __MATH_INLINE double -sqrt (double __x) __THROW +__NTH (sqrt (double __x)) { register double __r; __asm ("fsqrtd %1,%0" : "=f" (__r) : "f" (__x)); @@ -164,7 +164,7 @@ sqrt (double __x) __THROW } __MATH_INLINE float -sqrtf (float __x) __THROW +__NTH (sqrtf (float __x)) { register float __r; __asm ("fsqrts %1,%0" : "=f" (__r) : "f" (__x)); @@ -173,7 +173,7 @@ sqrtf (float __x) __THROW # if __WORDSIZE == 64 __MATH_INLINE long double -sqrtl (long double __x) __THROW +__NTH (sqrtl (long double __x)) { long double __r; extern void _Qp_sqrt (long double *, __const__ long double *); @@ -219,16 +219,16 @@ __ieee754_sqrtl (long double __x) # ifndef __NO_MATH_INLINES -__MATH_INLINE double fdim (double __x, double __y) __THROW; +__MATH_INLINE double __NTH (fdim (double __x, double __y)); __MATH_INLINE double -fdim (double __x, double __y) __THROW +__NTH (fdim (double __x, double __y)) { return __x <= __y ? 0 : __x - __y; } -__MATH_INLINE float fdimf (float __x, float __y) __THROW; +__MATH_INLINE float __NTH (fdimf (float __x, float __y)); __MATH_INLINE float -fdimf (float __x, float __y) __THROW +__NTH (fdimf (float __x, float __y)) { return __x <= __y ? 0 : __x - __y; } --- libc/sysdeps/generic/errno-loc.c.jj 2002-12-31 21:39:08.000000000 +0100 +++ libc/sysdeps/generic/errno-loc.c 2004-10-14 11:25:35.632630029 +0200 @@ -1,6 +1,6 @@ /* MT support function to get address of `errno' variable, non-threaded version. - Copyright (C) 1996, 1998, 2002 Free Software Foundation, Inc. + Copyright (C) 1996, 1998, 2002, 2004 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 @@ -21,7 +21,7 @@ #include #include -#if ! USE___THREAD +#if ! USE___THREAD && !RTLD_PRIVATE_ERRNO #undef errno extern int errno; #endif --- libc/include/errno.h.jj 2004-10-05 09:48:45.000000000 +0200 +++ libc/include/errno.h 2004-10-14 11:23:41.445001098 +0200 @@ -36,7 +36,11 @@ extern __thread int errno attribute_tls_ # define __set_errno(val) (errno = (val)) # ifndef __ASSEMBLER__ -extern int *__errno_location (void) __THROW __attribute__ ((__const__)); +extern int *__errno_location (void) __THROW __attribute__ ((__const__)) +# ifdef RTLD_PRIVATE_ERRNO + attribute_hidden +# endif +; libc_hidden_proto (__errno_location) # endif --- libc/linuxthreads/sysdeps/pthread/errno-loc.c.jj 2003-04-01 02:52:40.000000000 +0200 +++ libc/linuxthreads/sysdeps/pthread/errno-loc.c 2004-10-14 11:26:39.368240356 +0200 @@ -1,6 +1,6 @@ /* MT support function to get address of `errno' variable, linuxthreads version. - Copyright (C) 1996, 1998, 2002, 2003 Free Software Foundation, Inc. + Copyright (C) 1996, 1998, 2002, 2003, 2004 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 @@ -23,7 +23,7 @@ #include #include -#if ! USE___THREAD +#if ! USE___THREAD && !RTLD_PRIVATE_ERRNO #undef errno extern int errno; #endif Jakub From roland@redhat.com Thu Oct 14 10:03:00 2004 From: roland@redhat.com (Roland McGrath) Date: Thu, 14 Oct 2004 10:03:00 -0000 Subject: [PATCH] Fix sparc build In-Reply-To: Jakub Jelinek's message of Thursday, 14 October 2004 11:43:45 +0200 <20041014094345.GV30497@sunsite.ms.mff.cuni.cz> Message-ID: <200410141003.i9EA36cQ002537@magilla.sf.frob.com> > 3) on SPARC, the sequence to set up load address of rtld_errno is IMHO too > long to be included in INLINE_SYSCALL, so this patch makes > __errno_location () hidden within ld.so if RTLD_PRIVATE_ERRNO and > return &rtld_errno. If you're going to have a call, why not just have it be call cerror mov %o7,%g1 or suchlike, and have sysdep.S define one spot that does it all? From jakub@redhat.com Thu Oct 14 10:14:00 2004 From: jakub@redhat.com (Jakub Jelinek) Date: Thu, 14 Oct 2004 10:14:00 -0000 Subject: [PATCH] Fix sparc build In-Reply-To: <200410141003.i9EA36cQ002537@magilla.sf.frob.com> References: <20041014094345.GV30497@sunsite.ms.mff.cuni.cz> <200410141003.i9EA36cQ002537@magilla.sf.frob.com> Message-ID: <20041014101252.GW30497@sunsite.ms.mff.cuni.cz> On Thu, Oct 14, 2004 at 03:03:06AM -0700, Roland McGrath wrote: > > 3) on SPARC, the sequence to set up load address of rtld_errno is IMHO too > > long to be included in INLINE_SYSCALL, so this patch makes > > __errno_location () hidden within ld.so if RTLD_PRIVATE_ERRNO and > > return &rtld_errno. > > If you're going to have a call, why not just have it be > > call cerror > mov %o7,%g1 > > or suchlike, and have sysdep.S define one spot that does it all? Ok, sure, will work on it. Still, making __errno_location available IMHO doesn't hurt (and is not linked in on arches that don't needed it). Jakub From jakub@redhat.com Thu Oct 14 15:26:00 2004 From: jakub@redhat.com (Jakub Jelinek) Date: Thu, 14 Oct 2004 15:26:00 -0000 Subject: [PATCH] Fix sparc build In-Reply-To: <20041014094345.GV30497@sunsite.ms.mff.cuni.cz> References: <20041014094345.GV30497@sunsite.ms.mff.cuni.cz> Message-ID: <20041014152455.GZ30497@sunsite.ms.mff.cuni.cz> On Thu, Oct 14, 2004 at 11:43:45AM +0200, Jakub Jelinek wrote: > Hi! > > 1) sparc32 doesn't define __NR_setres[ug]id, only __NR_setres[ug]id32. > So if the *id32 syscall fails, it should ENOSYS, but shouldn't ENOSYS > always. > 2) sparc mathinline.h needs __NTHification > 3) on SPARC, the sequence to set up load address of rtld_errno is IMHO too > long to be included in INLINE_SYSCALL, so this patch makes > __errno_location () hidden within ld.so if RTLD_PRIVATE_ERRNO and > return &rtld_errno. Actually, further testing on other arches revealed a typo, so here is a new version, this time not featuring that typo (#ifdef RTLD_PRIVATE_ERRNO instead of the desired #if RTLD_PRIVATE_ERRNO). 2004-10-14 Jakub Jelinek * sysdeps/unix/sysv/linux/i386/setresuid.c: Handle defined __NR_setresuid32 && !defined __NR_setresuid. * sysdeps/unix/sysv/linux/i386/setresgid.c: Handle defined __NR_setresgid32 && !defined __NR_setresgid. * sysdeps/sparc/fpu/bits/mathinline.h (__signbitf, __signbit, __signbitl, sqrtf, sqrt, sqrtl, fdim, fdimf): Use __NTH macro. * sysdeps/generic/errno-loc.c: Don't undef #errno if RTLD_PRIVATE_ERRNO. * include/errno.h (__errno_location): If RTLD_PRIVATE_ERRNO, add attribute_hidden. linuxthreads/ * sysdeps/pthread/errno-loc.c: Don't undef #errno if RTLD_PRIVATE_ERRNO. --- libc/sysdeps/unix/sysv/linux/i386/setresuid.c.jj 2004-09-20 01:44:35.000000000 +0200 +++ libc/sysdeps/unix/sysv/linux/i386/setresuid.c 2004-10-14 11:35:54.055164737 +0200 @@ -28,7 +28,7 @@ #include -#ifdef __NR_setresuid +#if defined __NR_setresuid || defined __NR_setresuid32 # ifdef __NR_setresuid32 # if __ASSUME_32BITUIDS == 0 @@ -43,7 +43,7 @@ __setresuid (uid_t ruid, uid_t euid, uid { int result; -# if __ASSUME_32BITUIDS > 0 +# if __ASSUME_32BITUIDS > 0 || !defined __NR_setresuid result = INLINE_SYSCALL (setresuid32, 3, ruid, euid, suid); # else # ifdef __NR_setresuid32 --- libc/sysdeps/unix/sysv/linux/i386/setresgid.c.jj 2004-09-20 01:44:35.000000000 +0200 +++ libc/sysdeps/unix/sysv/linux/i386/setresgid.c 2004-10-14 11:35:54.056164558 +0200 @@ -28,7 +28,7 @@ #include -#ifdef __NR_setresgid +#if defined __NR_setresgid || defined __NR_setresgid32 # ifdef __NR_setresgid32 # if __ASSUME_32BITUIDS == 0 @@ -43,7 +43,7 @@ __setresgid (gid_t rgid, gid_t egid, gid { int result; -# if __ASSUME_32BITUIDS > 0 +# if __ASSUME_32BITUIDS > 0 || !defined __NR_setresgid result = INLINE_SYSCALL (setresgid32, 3, rgid, egid, sgid); # else # ifdef __NR_setresgid32 --- libc/sysdeps/sparc/fpu/bits/mathinline.h.jj 2004-09-30 11:04:11.000000000 +0200 +++ libc/sysdeps/sparc/fpu/bits/mathinline.h 2004-10-14 11:35:54.072161702 +0200 @@ -112,7 +112,7 @@ /* Test for negative number. Used in the signbit() macro. */ __MATH_INLINE int -__signbitf (float __x) __THROW +__NTH (__signbitf (float __x)) { __extension__ union { float __f; int __i; } __u = { __f: __x }; return __u.__i < 0; @@ -121,14 +121,14 @@ __signbitf (float __x) __THROW # if __WORDSIZE == 32 __MATH_INLINE int -__signbit (double __x) __THROW +__NTH (__signbit (double __x)) { __extension__ union { double __d; int __i[2]; } __u = { __d: __x }; return __u.__i[0] < 0; } __MATH_INLINE int -__signbitl (long double __x) __THROW +__NTH (__signbitl (long double __x)) { return __signbit ((double)__x); } @@ -136,14 +136,14 @@ __signbitl (long double __x) __THROW # else /* sparc64 */ __MATH_INLINE int -__signbit (double __x) __THROW +__NTH (__signbit (double __x)) { __extension__ union { double __d; long int __i; } __u = { __d: __x }; return __u.__i < 0; } __MATH_INLINE int -__signbitl (long double __x) __THROW +__NTH (__signbitl (long double __x)) { __extension__ union { long double __l; long int __i[2]; } __u = { __l: __x }; return __u.__i[0] < 0; @@ -156,7 +156,7 @@ __signbitl (long double __x) __THROW # if !defined __NO_MATH_INLINES && !__GNUC_PREREQ (3, 2) __MATH_INLINE double -sqrt (double __x) __THROW +__NTH (sqrt (double __x)) { register double __r; __asm ("fsqrtd %1,%0" : "=f" (__r) : "f" (__x)); @@ -164,7 +164,7 @@ sqrt (double __x) __THROW } __MATH_INLINE float -sqrtf (float __x) __THROW +__NTH (sqrtf (float __x)) { register float __r; __asm ("fsqrts %1,%0" : "=f" (__r) : "f" (__x)); @@ -173,7 +173,7 @@ sqrtf (float __x) __THROW # if __WORDSIZE == 64 __MATH_INLINE long double -sqrtl (long double __x) __THROW +__NTH (sqrtl (long double __x)) { long double __r; extern void _Qp_sqrt (long double *, __const__ long double *); @@ -219,16 +219,16 @@ __ieee754_sqrtl (long double __x) # ifndef __NO_MATH_INLINES -__MATH_INLINE double fdim (double __x, double __y) __THROW; +__MATH_INLINE double __NTH (fdim (double __x, double __y)); __MATH_INLINE double -fdim (double __x, double __y) __THROW +__NTH (fdim (double __x, double __y)) { return __x <= __y ? 0 : __x - __y; } -__MATH_INLINE float fdimf (float __x, float __y) __THROW; +__MATH_INLINE float __NTH (fdimf (float __x, float __y)); __MATH_INLINE float -fdimf (float __x, float __y) __THROW +__NTH (fdimf (float __x, float __y)) { return __x <= __y ? 0 : __x - __y; } --- libc/sysdeps/generic/errno-loc.c.jj 2002-12-31 21:39:08.000000000 +0100 +++ libc/sysdeps/generic/errno-loc.c 2004-10-14 11:25:35.632630029 +0200 @@ -1,6 +1,6 @@ /* MT support function to get address of `errno' variable, non-threaded version. - Copyright (C) 1996, 1998, 2002 Free Software Foundation, Inc. + Copyright (C) 1996, 1998, 2002, 2004 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 @@ -21,7 +21,7 @@ #include #include -#if ! USE___THREAD +#if ! USE___THREAD && !RTLD_PRIVATE_ERRNO #undef errno extern int errno; #endif --- libc/include/errno.h.jj 2004-10-05 09:48:45.000000000 +0200 +++ libc/include/errno.h 2004-10-14 11:23:41.445001098 +0200 @@ -36,7 +36,11 @@ extern __thread int errno attribute_tls_ # define __set_errno(val) (errno = (val)) # ifndef __ASSEMBLER__ -extern int *__errno_location (void) __THROW __attribute__ ((__const__)); +extern int *__errno_location (void) __THROW __attribute__ ((__const__)) +# if RTLD_PRIVATE_ERRNO + attribute_hidden +# endif +; libc_hidden_proto (__errno_location) # endif --- libc/linuxthreads/sysdeps/pthread/errno-loc.c.jj 2003-04-01 02:52:40.000000000 +0200 +++ libc/linuxthreads/sysdeps/pthread/errno-loc.c 2004-10-14 11:26:39.368240356 +0200 @@ -1,6 +1,6 @@ /* MT support function to get address of `errno' variable, linuxthreads version. - Copyright (C) 1996, 1998, 2002, 2003 Free Software Foundation, Inc. + Copyright (C) 1996, 1998, 2002, 2003, 2004 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 @@ -23,7 +23,7 @@ #include #include -#if ! USE___THREAD +#if ! USE___THREAD && !RTLD_PRIVATE_ERRNO #undef errno extern int errno; #endif Jakub From jakub@redhat.com Thu Oct 14 15:28:00 2004 From: jakub@redhat.com (Jakub Jelinek) Date: Thu, 14 Oct 2004 15:28:00 -0000 Subject: [PATCH] Fix ppc32 (and probably mips) glibc build Message-ID: <20041014152740.GA30497@sunsite.ms.mff.cuni.cz> Hi! Grep found 3 more occurences of GL(dl_loaded), one of them killed ppc32 build. 2004-10-14 Jakub Jelinek * dlfcn/dlinfo.c (dlinfo_doit): Replace iteration over GL(dl_loaded) chain with iteration over all namespaces' _ns_loaded chains. * sysdeps/powerpc/powerpc32/dl-machine.c (__elf_preferred_address): Likewise. * sysdeps/mips/dl-machine.h (elf_machine_runtime_link_map): Likewise. --- libc/dlfcn/dlinfo.c.jj 2004-10-14 07:55:31.000000000 +0200 +++ libc/dlfcn/dlinfo.c 2004-10-14 13:48:14.802418655 +0200 @@ -39,13 +39,15 @@ dlinfo_doit (void *argsblock) #if 0 if (args->handle == RTLD_SELF) { + Lmid_t nsid; /* Find the highest-addressed object that CALLER is not below. */ - for (l = GL(dl_loaded); l != NULL; l = l->l_next) - if (caller >= l->l_map_start && caller < l->l_map_end) - /* There must be exactly one DSO for the range of the virtual - memory. Otherwise something is really broken. */ - break; + for (nsid = 0; nsid < DL_NNS; ++nsid) + for (l = GL(dl_ns)[nsid]._ns_loaded; l != NULL; l = l->l_next) + if (caller >= l->l_map_start && caller < l->l_map_end) + /* There must be exactly one DSO for the range of the virtual + memory. Otherwise something is really broken. */ + break; if (l == NULL) GLRO(dl_signal_error) (0, NULL, NULL, N_("\ --- libc/sysdeps/powerpc/powerpc32/dl-machine.c.jj 2004-03-05 11:23:44.000000000 +0100 +++ libc/sysdeps/powerpc/powerpc32/dl-machine.c 2004-10-14 13:51:26.518237404 +0200 @@ -106,6 +106,7 @@ __elf_preferred_address(struct link_map { ElfW(Addr) low, high; struct link_map *l; + Lmid_t nsid; /* If the object has a preference, load it there! */ if (mapstartpref != 0) @@ -117,29 +118,30 @@ __elf_preferred_address(struct link_map be superceded by the program's load address). */ low = 0x0003FFFF; high = 0x70000000; - for (l = GL(dl_loaded); l; l = l->l_next) - { - ElfW(Addr) mapstart, mapend; - mapstart = l->l_map_start & ~(GLRO(dl_pagesize) - 1); - mapend = l->l_map_end | (GLRO(dl_pagesize) - 1); - assert (mapend > mapstart); - - /* Prefer gaps below the main executable, note that l == - _dl_loaded does not work for static binaries loading - e.g. libnss_*.so. */ - if ((mapend >= high || l->l_type == lt_executable) - && high >= mapstart) - high = mapstart; - else if (mapend >= low && low >= mapstart) - low = mapend; - else if (high >= mapend && mapstart >= low) - { - if (high - mapend >= mapstart - low) - low = mapend; - else - high = mapstart; - } - } + for (nsid = 0; nsid < DL_NNS; ++nsid) + for (l = GL(dl_ns)[nsid]._ns_loaded; l; l = l->l_next) + { + ElfW(Addr) mapstart, mapend; + mapstart = l->l_map_start & ~(GLRO(dl_pagesize) - 1); + mapend = l->l_map_end | (GLRO(dl_pagesize) - 1); + assert (mapend > mapstart); + + /* Prefer gaps below the main executable, note that l == + _dl_loaded does not work for static binaries loading + e.g. libnss_*.so. */ + if ((mapend >= high || l->l_type == lt_executable) + && high >= mapstart) + high = mapstart; + else if (mapend >= low && low >= mapstart) + low = mapend; + else if (high >= mapend && mapstart >= low) + { + if (high - mapend >= mapstart - low) + low = mapend; + else + high = mapstart; + } + } high -= 0x10000; /* Allow some room between objects. */ maplength = (maplength | (GLRO(dl_pagesize) - 1)) + 1; --- libc/sysdeps/mips/dl-machine.h.jj 2004-08-25 07:57:35.000000000 +0200 +++ libc/sysdeps/mips/dl-machine.h 2004-10-14 14:00:13.371350396 +0200 @@ -231,10 +231,11 @@ elf_machine_runtime_link_map (ElfW(Addr) } } - { - struct link_map *l = GL(dl_loaded); + struct link_map *l; + Lmid_t nsid; - while (l) + for (nsid = 0; nsid < DL_NNS; ++nsid) + for (l = GL(dl_ns)[nsid]._ns_loaded; l != NULL; l = l->l_next) { ElfW(Addr) base, limit; const ElfW(Phdr) *p = l->l_phdr; @@ -250,9 +251,7 @@ elf_machine_runtime_link_map (ElfW(Addr) return l; } } - l = l->l_next; } - } _dl_signal_error (0, NULL, NULL, "cannot find runtime link map"); return NULL; Jakub From roland@redhat.com Thu Oct 14 20:57:00 2004 From: roland@redhat.com (Roland McGrath) Date: Thu, 14 Oct 2004 20:57:00 -0000 Subject: [PATCH] Fix sparc build In-Reply-To: Jakub Jelinek's message of Thursday, 14 October 2004 12:12:52 +0200 <20041014101252.GW30497@sunsite.ms.mff.cuni.cz> Message-ID: <200410142057.i9EKvfS6005300@magilla.sf.frob.com> > Ok, sure, will work on it. Still, making __errno_location available IMHO > doesn't hurt (and is not linked in on arches that don't needed it). Agreed. From jakub@redhat.com Fri Oct 15 21:08:00 2004 From: jakub@redhat.com (Jakub Jelinek) Date: Fri, 15 Oct 2004 21:08:00 -0000 Subject: [PATCH] Handle 6 arguments (+ SYS_name) in syscall(3) on IA-32 Message-ID: <20041015210651.GB30497@sunsite.ms.mff.cuni.cz> Hi! syscall(3) ATM only handles at most 5 argument syscalls on IA-32, while there are a couple of 6 argument ones. Although we have functions for all of them now, it is not that expensive to handle it... 2004-10-15 Jakub Jelinek * sysdeps/unix/sysv/linux/i386/sysdep.h (PUSHARGS_6, DOARGS_6, POPARGS_6, _PUSHARGS_6, _DOARGS_6, _POPARGS_6): Define. * sysdeps/unix/sysv/linux/i386/syscall.S (syscall): Handle 6 argument syscalls. --- libc/sysdeps/unix/sysv/linux/i386/sysdep.h.jj 2004-10-05 09:05:00.000000000 +0200 +++ libc/sysdeps/unix/sysv/linux/i386/sysdep.h 2004-10-15 14:22:59.714897250 +0200 @@ -297,6 +297,13 @@ __i686.get_pc_thunk.reg: \ #define _DOARGS_5(n) movl n(%esp), %edi; _DOARGS_4 (n-4) #define _POPARGS_5 _POPARGS_4; popl %edi; L(POPDI1): +#define PUSHARGS_6 _PUSHARGS_6 +#define DOARGS_6 _DOARGS_6 (36) +#define POPARGS_6 _POPARGS_6 +#define _PUSHARGS_6 pushl %ebp; L(PUSHBP1): _PUSHARGS_5 +#define _DOARGS_6(n) movl n(%esp), %ebp; _DOARGS_5 (n-4) +#define _POPARGS_6 _POPARGS_5; popl %ebp; L(POPBP1): + #else /* !__ASSEMBLER__ */ /* We need some help from the assembler to generate optimal code. We --- libc/sysdeps/unix/sysv/linux/i386/syscall.S.jj 2002-12-18 12:55:22.000000000 +0100 +++ libc/sysdeps/unix/sysv/linux/i386/syscall.S 2004-10-15 19:41:10.113099618 +0200 @@ -1,4 +1,4 @@ -/* Copyright (C) 1995, 1996, 1998, 2002 Free Software Foundation, Inc. +/* Copyright (C) 1995, 1996, 1998, 2002, 2004 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 @@ -24,11 +24,11 @@ .text ENTRY (syscall) - PUSHARGS_5 /* Save register contents. */ - _DOARGS_5(36) /* Load arguments. */ - movl 16(%esp), %eax /* Load syscall number into %eax. */ + PUSHARGS_6 /* Save register contents. */ + _DOARGS_6(44) /* Load arguments. */ + movl 20(%esp), %eax /* Load syscall number into %eax. */ ENTER_KERNEL /* Do the system call. */ - POPARGS_5 /* Restore register contents. */ + POPARGS_6 /* Restore register contents. */ cmpl $-4095, %eax /* Check %eax for error. */ jae SYSCALL_ERROR_LABEL /* Jump to error handler if error. */ L(pseudo_end): Jakub From jakub@redhat.com Mon Oct 18 09:38:00 2004 From: jakub@redhat.com (Jakub Jelinek) Date: Mon, 18 Oct 2004 09:38:00 -0000 Subject: [PATCH] Speed up generic __strcpy_chk Message-ID: <20041018093718.GC30497@sunsite.ms.mff.cuni.cz> Hi! On both AMD64 (32-bit glibc) and P4 the following patch gives up to 40% speedup on longer string copies, on really short strings it is sometimes a few ticks slower but sometimes faster too. 2004-10-18 Jakub Jelinek * sysdeps/generic/strcpy_chk.c (__strcpy_chk): Speed up by checking destlen only every 4 bytes. --- libc/sysdeps/generic/strcpy_chk.c.jj 2004-10-18 06:17:12.000000000 +0200 +++ libc/sysdeps/generic/strcpy_chk.c 2004-10-18 11:29:18.826411429 +0200 @@ -31,14 +31,36 @@ __strcpy_chk (dest, src, destlen) { reg_char c; char *s = (char *) src; - const ptrdiff_t off = dest - s - 1; + const ptrdiff_t off = dest - s; + + while (__builtin_expect (destlen >= 4, 0)) + { + c = s[0]; + s[off] = c; + if (c == '\0') + return dest; + c = s[1]; + s[off + 1] = c; + if (c == '\0') + return dest; + c = s[2]; + s[off + 2] = c; + if (c == '\0') + return dest; + c = s[3]; + s[off + 3] = c; + if (c == '\0') + return dest; + destlen -= 4; + s += 4; + } do { if (__builtin_expect (destlen-- == 0, 0)) - __chk_fail (); - c = *s++; - s[off] = c; + __chk_fail (); + c = *s; + *(s++ + off) = c; } while (c != '\0'); On AMD64 (__strcpy_chk_2 is the one with this patch, __strcpy_chk_1 is the CVS one, __strcpy_chk_3 is unrolled the same way as __strcpy_chk_2, but uses c = *s++; s[off] = c; if (c == '\0') return dest; in all cases): __strcpy_chk_3 __strcpy_chk_2 __strcpy_chk_1 normal_strcpy simple_strcpy_chk Length 0, alignment 0/ 0: 26 26 26 19 18 Length 0, alignment 0/ 0: 26 26 26 19 19 Length 0, alignment 0/ 0: 26 26 26 19 19 Length 0, alignment 0/ 0: 26 26 26 19 19 Length 1, alignment 0/ 0: 30 28 29 19 20 Length 1, alignment 0/ 0: 30 28 29 19 20 Length 1, alignment 0/ 1: 30 28 29 19 20 Length 1, alignment 1/ 0: 30 28 29 19 20 Length 2, alignment 0/ 0: 34 34 33 20 27 Length 2, alignment 0/ 0: 34 34 33 20 27 Length 2, alignment 0/ 2: 34 34 33 20 27 Length 2, alignment 2/ 0: 34 34 34 20 27 Length 3, alignment 0/ 0: 37 33 36 25 28 Length 3, alignment 0/ 0: 37 33 36 25 27 Length 3, alignment 0/ 3: 37 33 36 25 27 Length 3, alignment 3/ 0: 35 33 37 23 29 Length 4, alignment 0/ 0: 38 37 43 24 31 Length 4, alignment 0/ 0: 38 37 43 24 31 Length 4, alignment 0/ 4: 37 37 41 26 31 Length 4, alignment 4/ 0: 37 37 39 28 31 Length 5, alignment 0/ 0: 40 40 46 34 34 Length 5, alignment 0/ 0: 40 40 46 34 34 Length 5, alignment 0/ 5: 40 42 45 31 33 Length 5, alignment 5/ 0: 39 41 42 29 34 Length 6, alignment 0/ 0: 47 45 51 33 37 Length 6, alignment 0/ 0: 47 45 51 33 38 Length 6, alignment 0/ 6: 44 44 48 30 37 Length 6, alignment 6/ 0: 43 43 46 31 36 Length 7, alignment 0/ 0: 47 47 55 35 40 Length 7, alignment 0/ 0: 47 47 55 35 40 Length 7, alignment 0/ 7: 41 41 51 35 40 Length 7, alignment 7/ 0: 43 43 50 34 40 Length 8, alignment 0/ 0: 53 52 74 56 58 Length 8, alignment 0/ 0: 53 52 74 56 58 Length 8, alignment 0/ 0: 53 52 74 56 58 Length 8, alignment 0/ 0: 53 52 74 56 58 Length 9, alignment 0/ 0: 55 54 83 62 61 Length 9, alignment 0/ 0: 55 54 83 62 61 Length 9, alignment 0/ 1: 60 59 82 64 66 Length 9, alignment 1/ 0: 52 54 82 61 61 Length 10, alignment 0/ 0: 59 58 88 64 64 Length 10, alignment 0/ 0: 59 58 88 64 64 Length 10, alignment 0/ 2: 63 61 88 64 67 Length 10, alignment 2/ 0: 56 55 81 55 64 Length 11, alignment 0/ 0: 57 57 93 66 67 Length 11, alignment 0/ 0: 57 57 93 66 67 Length 11, alignment 0/ 3: 59 56 94 69 71 Length 11, alignment 3/ 0: 50 48 84 57 67 Length 12, alignment 0/ 0: 62 62 92 61 70 Length 12, alignment 0/ 0: 62 62 92 61 70 Length 12, alignment 0/ 4: 65 60 95 71 70 Length 12, alignment 4/ 0: 54 52 123 56 70 Length 13, alignment 0/ 0: 65 66 137 67 73 Length 13, alignment 0/ 0: 65 66 137 67 73 Length 13, alignment 0/ 5: 62 63 129 72 73 Length 13, alignment 5/ 0: 57 56 127 58 73 Length 14, alignment 0/ 0: 69 68 141 69 76 Length 14, alignment 0/ 0: 69 68 141 69 76 Length 14, alignment 0/ 6: 66 66 131 72 76 Length 14, alignment 6/ 0: 59 60 131 60 76 Length 15, alignment 0/ 0: 66 65 128 71 79 Length 15, alignment 0/ 0: 66 65 145 71 79 Length 15, alignment 0/ 7: 61 60 135 70 79 Length 15, alignment 7/ 0: 59 58 118 64 79 Length 16, alignment 0/ 0: 75 72 144 70 82 Length 16, alignment 7/ 2: 63 62 139 66 82 Length 32, alignment 0/ 0: 135 128 220 109 130 Length 32, alignment 6/ 4: 120 117 211 100 130 Length 64, alignment 0/ 0: 227 213 364 189 226 Length 64, alignment 5/ 6: 248 240 352 200 238 Length 128, alignment 0/ 0: 411 381 656 343 418 Length 128, alignment 4/ 0: 329 329 587 284 418 Length 256, alignment 0/ 0: 779 717 1240 653 802 Length 256, alignment 3/ 2: 652 628 1198 603 802 Length 512, alignment 0/ 0: 1515 1389 2408 1232 1570 Length 512, alignment 2/ 4: 1706 1674 2224 1431 1668 Length 1024, alignment 0/ 0: 2987 2733 4727 2385 3106 Length 1024, alignment 1/ 6: 2891 2922 4458 2121 3106 Length 16, alignment 1/ 2: 81 73 144 81 88 Length 16, alignment 2/ 1: 67 67 148 75 82 Length 16, alignment 1/ 1: 70 72 149 76 82 Length 16, alignment 1/ 1: 70 72 149 76 82 Length 32, alignment 2/ 4: 148 145 220 126 138 Length 32, alignment 4/ 2: 118 116 211 99 130 Length 32, alignment 2/ 2: 128 127 226 108 130 Length 32, alignment 2/ 2: 128 127 226 108 130 Length 64, alignment 3/ 6: 241 246 342 216 240 Length 64, alignment 6/ 3: 185 185 331 157 226 Length 64, alignment 3/ 3: 213 205 370 192 226 Length 64, alignment 3/ 3: 213 205 370 192 226 Length 128, alignment 4/ 0: 329 329 587 284 418 Length 128, alignment 0/ 4: 437 428 631 391 418 Length 128, alignment 4/ 4: 412 380 657 335 418 Length 128, alignment 4/ 4: 412 380 657 335 418 Length 256, alignment 5/ 2: 617 617 1099 541 802 Length 256, alignment 2/ 5: 861 803 1128 760 823 Length 256, alignment 5/ 5: 702 707 1248 628 802 Length 256, alignment 5/ 5: 702 707 1248 628 802 Length 512, alignment 6/ 4: 1216 1197 2258 1079 1570 Length 512, alignment 4/ 6: 1723 1733 2224 1425 1672 Length 512, alignment 6/ 6: 1397 1450 2416 1200 1570 Length 512, alignment 6/ 6: 1397 1450 2416 1200 1570 Length 1024, alignment 7/ 6: 2516 2382 4558 2299 3106 Length 1024, alignment 6/ 7: 3168 3042 4432 2656 3118 Length 1024, alignment 7/ 7: 2803 2590 4732 2512 3106 Length 1024, alignment 7/ 7: 2803 2590 4749 2512 3106 Length 0, alignment 0/ 0: 27 25 45 19 19 Length 0, alignment 0/ 0: 27 25 45 19 19 Length 0, alignment 0/ 0: 27 25 58 19 19 Length 0, alignment 0/ 0: 27 25 58 19 19 Length 1, alignment 0/ 0: 28 28 49 19 20 Length 1, alignment 0/ 0: 28 28 66 19 20 Length 1, alignment 0/ 1: 28 28 61 19 20 Length 1, alignment 1/ 0: 28 28 61 19 20 Length 2, alignment 0/ 0: 31 29 53 20 27 Length 2, alignment 0/ 0: 31 29 53 20 27 Length 2, alignment 0/ 2: 31 29 53 20 27 Length 2, alignment 2/ 0: 31 29 53 20 27 Length 3, alignment 0/ 0: 34 33 57 25 28 Length 3, alignment 0/ 0: 34 33 57 25 27 Length 3, alignment 0/ 3: 34 33 57 25 27 Length 3, alignment 3/ 0: 35 33 54 23 29 Length 4, alignment 0/ 0: 37 37 78 24 31 Length 4, alignment 0/ 0: 37 37 61 24 31 Length 4, alignment 0/ 4: 37 36 59 26 31 Length 4, alignment 4/ 0: 38 36 58 28 31 Length 5, alignment 0/ 0: 39 42 80 34 34 Length 5, alignment 0/ 0: 39 42 65 34 34 Length 5, alignment 0/ 5: 37 38 63 31 33 Length 5, alignment 5/ 0: 37 40 62 29 34 Length 6, alignment 0/ 0: 43 41 67 33 37 Length 6, alignment 0/ 0: 43 41 67 33 38 Length 6, alignment 0/ 6: 38 41 66 30 37 Length 6, alignment 6/ 0: 38 38 66 31 36 Length 7, alignment 0/ 0: 48 47 91 35 40 Length 7, alignment 0/ 0: 48 47 91 35 40 Length 7, alignment 0/ 7: 43 42 87 35 40 Length 7, alignment 7/ 0: 42 43 87 34 40 Length 8, alignment 0/ 0: 52 52 91 56 58 Length 8, alignment 0/ 0: 52 52 91 56 58 Length 8, alignment 0/ 0: 52 52 91 56 58 Length 8, alignment 0/ 0: 52 52 91 56 58 Length 9, alignment 0/ 0: 53 55 100 62 61 Length 9, alignment 0/ 0: 53 55 100 62 61 Length 9, alignment 0/ 1: 55 59 99 64 66 Length 9, alignment 1/ 0: 51 50 100 61 61 Length 10, alignment 0/ 0: 73 73 105 64 64 Length 10, alignment 0/ 0: 73 73 105 64 64 Length 10, alignment 0/ 2: 72 78 103 64 67 Length 10, alignment 2/ 0: 64 64 100 55 64 Length 11, alignment 0/ 0: 73 73 110 66 67 Length 11, alignment 0/ 0: 73 73 110 66 67 Length 11, alignment 0/ 3: 79 79 111 69 71 Length 11, alignment 3/ 0: 61 62 102 57 67 Length 12, alignment 0/ 0: 73 75 109 61 70 Length 12, alignment 0/ 0: 73 75 109 61 70 Length 12, alignment 0/ 4: 79 82 113 71 70 Length 12, alignment 4/ 0: 66 67 106 56 70 Length 13, alignment 0/ 0: 79 82 120 67 73 Length 13, alignment 0/ 0: 79 82 120 67 73 Length 13, alignment 0/ 5: 82 81 112 72 73 Length 13, alignment 5/ 0: 71 72 110 58 73 Length 14, alignment 0/ 0: 81 84 124 69 76 Length 14, alignment 0/ 0: 81 84 124 69 76 Length 14, alignment 0/ 6: 78 78 114 72 76 Length 14, alignment 6/ 0: 73 74 114 60 76 Length 15, alignment 0/ 0: 78 86 128 71 79 Length 15, alignment 0/ 0: 78 86 128 71 79 Length 15, alignment 0/ 7: 73 73 118 70 79 Length 15, alignment 7/ 0: 73 73 118 64 79 Length 16, alignment 0/ 0: 82 87 127 70 82 Length 16, alignment 7/ 2: 77 78 122 66 82 Length 32, alignment 0/ 0: 128 130 203 109 130 Length 32, alignment 6/ 4: 122 124 194 100 130 Length 64, alignment 0/ 0: 215 217 347 189 226 Length 64, alignment 5/ 6: 231 267 335 200 238 Length 128, alignment 0/ 0: 392 395 639 343 418 Length 128, alignment 4/ 0: 385 386 570 284 418 Length 256, alignment 0/ 0: 742 751 1223 653 802 Length 256, alignment 3/ 2: 738 745 1181 603 802 Length 512, alignment 0/ 0: 1450 1463 2391 1271 1570 Length 512, alignment 2/ 4: 1548 1725 2207 1431 1668 Length 1024, alignment 0/ 0: 2866 2887 4727 2509 3106 Length 1024, alignment 1/ 6: 2885 2993 4441 2744 3106 Length 16, alignment 1/ 2: 92 96 127 81 88 Length 16, alignment 2/ 1: 81 82 131 75 82 Length 16, alignment 1/ 1: 84 86 132 76 82 Length 16, alignment 1/ 1: 84 86 132 76 82 Length 32, alignment 2/ 4: 135 153 203 126 138 Length 32, alignment 4/ 2: 122 124 194 99 130 Length 32, alignment 2/ 2: 129 133 209 108 130 Length 32, alignment 2/ 2: 129 133 209 108 130 Length 64, alignment 3/ 6: 240 258 325 216 240 Length 64, alignment 6/ 3: 209 210 314 157 226 Length 64, alignment 3/ 3: 211 220 353 192 226 Length 64, alignment 3/ 3: 211 220 353 192 226 Length 128, alignment 4/ 0: 385 386 570 284 418 Length 128, alignment 0/ 4: 410 456 614 391 418 Length 128, alignment 4/ 4: 392 397 640 335 418 Length 128, alignment 4/ 4: 392 397 640 335 418 Length 256, alignment 5/ 2: 737 738 1082 541 802 Length 256, alignment 2/ 5: 866 903 1111 760 823 Length 256, alignment 5/ 5: 739 745 1231 628 802 Length 256, alignment 5/ 5: 739 745 1231 628 802 Length 512, alignment 6/ 4: 1442 1444 2241 1079 1570 Length 512, alignment 4/ 6: 1653 1723 2207 1425 1672 Length 512, alignment 6/ 6: 1449 1490 2399 1200 1570 Length 512, alignment 6/ 6: 1449 1490 2399 1200 1570 Length 1024, alignment 7/ 6: 2854 2861 4541 2299 3106 Length 1024, alignment 6/ 7: 3072 3343 4415 2634 3118 Length 1024, alignment 7/ 7: 2854 2903 4732 2359 3106 Length 1024, alignment 7/ 7: 2854 2888 4732 2361 3106 Length 0, alignment 0/ 0: 27 26 45 19 20 Length 0, alignment 0/ 0: 27 26 58 19 20 Length 0, alignment 0/ 0: 27 25 58 19 20 Length 1, alignment 0/ 0: 30 28 66 19 20 Length 1, alignment 0/ 1: 28 28 66 19 20 Length 1, alignment 1/ 0: 28 28 66 19 20 Length 2, alignment 0/ 0: 31 29 70 20 24 Length 2, alignment 0/ 2: 31 29 70 20 24 Length 2, alignment 2/ 0: 31 29 70 20 24 Length 3, alignment 0/ 0: 34 33 74 25 27 Length 3, alignment 0/ 3: 34 33 74 25 27 Length 3, alignment 3/ 0: 35 33 71 23 27 Length 4, alignment 0/ 0: 38 37 97 24 47 Length 4, alignment 0/ 4: 35 37 92 26 46 Length 4, alignment 4/ 0: 38 36 88 28 46 Length 5, alignment 0/ 0: 40 45 100 34 53 Length 5, alignment 0/ 5: 37 38 95 31 48 Length 5, alignment 5/ 0: 37 40 95 29 48 Length 6, alignment 0/ 0: 43 41 105 33 56 Length 6, alignment 0/ 6: 38 41 99 30 51 Length 6, alignment 6/ 0: 38 38 99 31 51 Length 7, alignment 0/ 0: 48 47 109 35 59 Length 7, alignment 0/ 7: 43 42 103 35 54 Length 7, alignment 7/ 0: 42 43 103 34 54 Length 8, alignment 0/ 0: 52 52 108 56 60 Length 8, alignment 0/ 0: 52 52 91 56 60 Length 8, alignment 0/ 0: 52 52 91 56 60 Length 9, alignment 0/ 0: 56 54 118 62 67 Length 9, alignment 0/ 1: 55 59 116 64 69 Length 9, alignment 1/ 0: 51 50 117 61 67 Length 10, alignment 0/ 0: 73 73 122 64 70 Length 10, alignment 0/ 2: 72 78 120 64 72 Length 10, alignment 2/ 0: 64 64 117 55 66 Length 11, alignment 0/ 0: 73 73 127 66 74 Length 11, alignment 0/ 3: 79 79 128 69 76 Length 11, alignment 3/ 0: 61 62 119 57 69 Length 12, alignment 0/ 0: 77 77 126 61 75 Length 12, alignment 0/ 4: 77 80 130 71 73 Length 12, alignment 4/ 0: 66 67 123 56 73 Length 13, alignment 0/ 0: 80 80 137 67 78 Length 13, alignment 0/ 5: 82 81 129 72 77 Length 13, alignment 5/ 0: 71 72 127 58 77 Length 14, alignment 0/ 0: 81 84 141 69 87 Length 14, alignment 0/ 6: 78 78 131 72 81 Length 14, alignment 6/ 0: 73 74 131 60 81 Length 15, alignment 0/ 0: 78 86 146 71 85 Length 15, alignment 0/ 7: 73 73 135 70 85 Length 15, alignment 7/ 0: 73 73 135 64 85 Length 16, alignment 7/ 2: 77 78 139 66 89 Length 32, alignment 6/ 4: 122 124 211 100 153 Length 64, alignment 5/ 6: 231 267 352 200 286 Length 128, alignment 4/ 0: 385 386 587 284 537 Length 256, alignment 3/ 2: 738 745 1198 603 1049 Length 512, alignment 2/ 4: 1548 1725 2224 1431 2078 Length 1024, alignment 1/ 6: 2885 2993 4458 2744 4121 Length 16, alignment 1/ 2: 92 95 144 81 95 Length 16, alignment 1/ 1: 84 87 132 76 89 Length 16, alignment 1/ 1: 84 86 132 76 89 Length 32, alignment 2/ 4: 137 152 220 126 158 Length 32, alignment 4/ 2: 124 125 211 99 153 Length 32, alignment 2/ 2: 129 133 226 108 153 Length 32, alignment 2/ 2: 129 133 226 108 153 Length 64, alignment 3/ 6: 238 258 342 216 286 Length 64, alignment 6/ 3: 211 213 331 155 281 Length 64, alignment 3/ 3: 211 220 370 192 281 Length 64, alignment 3/ 3: 211 220 370 192 281 Length 128, alignment 4/ 0: 385 386 587 284 537 Length 128, alignment 0/ 4: 412 453 631 391 537 Length 128, alignment 4/ 4: 392 397 657 335 537 Length 128, alignment 4/ 4: 392 397 657 335 537 Length 256, alignment 5/ 2: 737 738 1099 541 1049 Length 256, alignment 2/ 5: 866 903 1111 760 1055 Length 256, alignment 5/ 5: 739 745 1248 628 1049 Length 256, alignment 5/ 5: 739 745 1248 628 1049 Length 512, alignment 6/ 4: 1442 1444 2241 1079 2073 Length 512, alignment 4/ 6: 1653 1723 2207 1425 2078 Length 512, alignment 6/ 6: 1449 1490 2416 1200 2073 Length 512, alignment 6/ 6: 1449 1490 2416 1200 2073 Length 1024, alignment 7/ 6: 2854 2861 4558 2299 4121 Length 1024, alignment 6/ 7: 3072 3343 4432 2625 4126 Length 1024, alignment 7/ 7: 2854 2903 4749 2361 4121 Length 1024, alignment 7/ 7: 2854 2903 4749 2359 4121 and on P4: __strcpy_chk_3 __strcpy_chk_2 __strcpy_chk_1 normal_strcpy simple_strcpy_chk Length 0, alignment 0/ 0: 36 32 36 24 20 Length 0, alignment 0/ 0: 36 32 28 24 20 Length 0, alignment 0/ 0: 36 32 32 32 36 Length 0, alignment 0/ 0: 52 32 32 36 32 Length 1, alignment 0/ 0: 48 48 48 28 32 Length 1, alignment 0/ 0: 48 48 48 28 32 Length 1, alignment 0/ 1: 64 64 56 36 32 Length 1, alignment 1/ 0: 60 60 48 36 32 Length 2, alignment 0/ 0: 76 68 60 32 40 Length 2, alignment 0/ 0: 68 76 64 32 36 Length 2, alignment 0/ 2: 76 68 64 32 44 Length 2, alignment 2/ 0: 60 68 60 32 36 Length 3, alignment 0/ 0: 72 68 72 32 44 Length 3, alignment 0/ 0: 68 64 84 32 48 Length 3, alignment 0/ 3: 80 76 80 44 56 Length 3, alignment 3/ 0: 68 64 76 36 44 Length 4, alignment 0/ 0: 88 84 76 44 56 Length 4, alignment 0/ 0: 80 84 80 64 84 Length 4, alignment 0/ 4: 88 88 112 76 88 Length 4, alignment 4/ 0: 84 76 80 72 92 Length 5, alignment 0/ 0: 84 76 60 32 44 Length 5, alignment 0/ 0: 48 44 72 32 44 Length 5, alignment 0/ 5: 48 44 80 32 48 Length 5, alignment 5/ 0: 48 44 72 32 44 Length 6, alignment 0/ 0: 52 48 76 36 64 Length 6, alignment 0/ 0: 56 48 76 36 64 Length 6, alignment 0/ 6: 56 48 84 36 68 Length 6, alignment 6/ 0: 56 48 76 36 64 Length 7, alignment 0/ 0: 48 40 80 40 68 Length 7, alignment 0/ 0: 48 40 80 40 68 Length 7, alignment 0/ 7: 48 40 84 40 76 Length 7, alignment 7/ 0: 48 40 116 60 84 Length 8, alignment 0/ 0: 124 120 124 84 108 Length 8, alignment 0/ 0: 96 92 120 84 104 Length 8, alignment 0/ 0: 96 112 120 84 108 Length 8, alignment 0/ 0: 116 96 132 96 104 Length 9, alignment 0/ 0: 112 112 128 76 112 Length 9, alignment 0/ 0: 124 112 136 92 136 Length 9, alignment 0/ 1: 120 124 168 84 92 Length 9, alignment 1/ 0: 56 56 84 44 80 Length 10, alignment 0/ 0: 64 60 96 44 80 Length 10, alignment 0/ 0: 80 60 92 44 84 Length 10, alignment 0/ 2: 88 60 100 72 96 Length 10, alignment 2/ 0: 80 60 88 44 84 Length 11, alignment 0/ 0: 56 52 96 48 88 Length 11, alignment 0/ 0: 56 60 96 48 88 Length 11, alignment 0/ 3: 56 76 108 48 100 Length 11, alignment 3/ 0: 56 60 96 48 88 Length 12, alignment 0/ 0: 132 112 148 88 132 Length 12, alignment 0/ 0: 128 116 148 104 136 Length 12, alignment 0/ 4: 128 120 176 116 164 Length 12, alignment 4/ 0: 132 120 156 112 136 Length 13, alignment 0/ 0: 120 124 156 104 144 Length 13, alignment 0/ 0: 136 124 192 116 140 Length 13, alignment 0/ 5: 72 64 128 56 120 Length 13, alignment 5/ 0: 72 64 104 56 104 Length 14, alignment 0/ 0: 76 68 112 68 112 Length 14, alignment 0/ 0: 76 68 112 68 112 Length 14, alignment 0/ 6: 72 68 124 80 124 Length 14, alignment 6/ 0: 76 68 112 68 112 Length 15, alignment 0/ 0: 68 60 116 56 116 Length 15, alignment 0/ 0: 68 60 116 56 108 Length 15, alignment 0/ 7: 72 64 128 80 124 Length 15, alignment 7/ 0: 68 60 116 56 108 Length 16, alignment 0/ 0: 76 72 120 72 112 Length 16, alignment 7/ 2: 72 72 120 72 112 Length 32, alignment 0/ 0: 132 128 216 108 280 Length 32, alignment 6/ 4: 232 232 284 196 276 Length 64, alignment 0/ 0: 372 404 528 328 540 Length 64, alignment 5/ 6: 556 576 796 604 748 Length 128, alignment 0/ 0: 668 704 1116 760 1108 Length 128, alignment 4/ 0: 776 728 1164 800 1156 Length 256, alignment 0/ 0: 804 688 1564 780 2052 Length 256, alignment 3/ 2: 804 688 1560 780 2052 Length 512, alignment 0/ 0: 1572 1328 3092 1548 4100 Length 512, alignment 2/ 4: 2612 2616 3376 2536 3784 Length 1024, alignment 0/ 0: 5552 5580 10092 5668 6160 Length 1024, alignment 1/ 6: 4212 4080 6396 4092 6868 Length 16, alignment 1/ 2: 164 164 232 168 204 Length 16, alignment 2/ 1: 124 128 188 128 164 Length 16, alignment 1/ 1: 128 124 184 120 168 Length 16, alignment 1/ 1: 132 144 228 140 208 Length 32, alignment 2/ 4: 284 288 372 264 376 Length 32, alignment 4/ 2: 236 240 292 228 352 Length 32, alignment 2/ 2: 244 260 300 216 324 Length 32, alignment 2/ 2: 224 128 220 112 208 Length 64, alignment 3/ 6: 320 320 460 292 456 Length 64, alignment 6/ 3: 228 208 408 208 400 Length 64, alignment 3/ 3: 228 208 408 208 400 Length 64, alignment 3/ 3: 228 208 408 208 400 Length 128, alignment 4/ 0: 420 368 792 400 784 Length 128, alignment 0/ 4: 576 540 1284 836 1360 Length 128, alignment 4/ 4: 668 712 1024 624 1156 Length 128, alignment 4/ 4: 752 744 1136 652 784 Length 256, alignment 5/ 2: 688 688 1564 780 1552 Length 256, alignment 2/ 5: 1164 1136 1712 1104 1792 Length 256, alignment 5/ 5: 1368 1364 2228 1404 2408 Length 256, alignment 5/ 5: 1408 1392 1964 1292 2708 Length 512, alignment 6/ 4: 2656 1340 3100 1548 3088 Length 512, alignment 4/ 6: 2576 2600 3372 3580 5700 Length 512, alignment 6/ 6: 2728 2628 3712 2052 3088 Length 512, alignment 6/ 6: 1564 1332 3092 2052 3088 Length 1024, alignment 7/ 6: 3100 5464 8564 5808 6156 Length 1024, alignment 6/ 7: 5384 5332 8412 8888 11924 Length 1024, alignment 7/ 7: 3100 2608 6172 3596 6160 Length 1024, alignment 7/ 7: 3100 2608 6168 3084 6160 Length 0, alignment 0/ 0: 36 32 40 24 24 Length 0, alignment 0/ 0: 36 32 40 24 24 Length 0, alignment 0/ 0: 40 32 40 24 24 Length 0, alignment 0/ 0: 36 32 44 24 24 Length 1, alignment 0/ 0: 40 40 68 28 36 Length 1, alignment 0/ 0: 40 40 68 28 32 Length 1, alignment 0/ 1: 52 44 92 32 48 Length 1, alignment 1/ 0: 44 44 72 32 40 Length 2, alignment 0/ 0: 64 60 80 32 72 Length 2, alignment 0/ 0: 60 60 56 24 28 Length 2, alignment 0/ 2: 32 32 44 24 28 Length 2, alignment 2/ 0: 32 32 40 24 36 Length 3, alignment 0/ 0: 44 32 48 28 44 Length 3, alignment 0/ 0: 48 32 48 28 44 Length 3, alignment 0/ 3: 48 32 56 28 44 Length 3, alignment 3/ 0: 48 32 48 28 44 Length 4, alignment 0/ 0: 48 36 64 32 44 Length 4, alignment 0/ 0: 60 36 64 32 44 Length 4, alignment 0/ 4: 60 36 64 32 48 Length 4, alignment 4/ 0: 92 72 92 44 76 Length 5, alignment 0/ 0: 92 72 104 44 84 Length 5, alignment 0/ 0: 92 76 84 44 84 Length 5, alignment 0/ 5: 92 72 84 52 100 Length 5, alignment 5/ 0: 92 72 84 44 92 Length 6, alignment 0/ 0: 100 88 112 80 108 Length 6, alignment 0/ 0: 96 76 104 52 104 Length 6, alignment 0/ 6: 92 92 128 92 88 Length 6, alignment 6/ 0: 84 80 112 52 76 Length 7, alignment 0/ 0: 92 120 148 64 88 Length 7, alignment 0/ 0: 76 40 68 36 68 Length 7, alignment 0/ 7: 44 40 84 36 84 Length 7, alignment 7/ 0: 48 40 76 36 68 Length 8, alignment 0/ 0: 56 48 80 44 72 Length 8, alignment 0/ 0: 56 48 84 44 72 Length 8, alignment 0/ 0: 52 48 80 44 72 Length 8, alignment 0/ 0: 52 48 80 44 72 Length 9, alignment 0/ 0: 56 48 84 44 80 Length 9, alignment 0/ 0: 52 60 88 44 80 Length 9, alignment 0/ 1: 60 96 108 48 100 Length 9, alignment 1/ 0: 52 60 84 44 80 Length 10, alignment 0/ 0: 56 52 92 44 84 Length 10, alignment 0/ 0: 56 48 92 44 84 Length 10, alignment 0/ 2: 56 48 104 60 104 Length 10, alignment 2/ 0: 56 48 92 44 84 Length 11, alignment 0/ 0: 60 52 96 48 88 Length 11, alignment 0/ 0: 52 60 96 48 88 Length 11, alignment 0/ 3: 56 52 108 68 104 Length 11, alignment 3/ 0: 56 52 96 48 88 Length 12, alignment 0/ 0: 60 56 100 60 92 Length 12, alignment 0/ 0: 64 56 100 60 92 Length 12, alignment 0/ 4: 64 56 112 60 108 Length 12, alignment 4/ 0: 60 56 100 60 92 Length 13, alignment 0/ 0: 104 104 156 100 140 Length 13, alignment 0/ 0: 108 108 160 100 136 Length 13, alignment 0/ 5: 120 120 180 124 164 Length 13, alignment 5/ 0: 120 100 156 104 148 Length 14, alignment 0/ 0: 120 116 168 112 152 Length 14, alignment 0/ 0: 108 108 196 120 148 Length 14, alignment 0/ 6: 132 124 188 148 160 Length 14, alignment 6/ 0: 112 124 168 120 164 Length 15, alignment 0/ 0: 128 128 176 112 120 Length 15, alignment 0/ 0: 64 60 120 60 108 Length 15, alignment 0/ 7: 72 64 132 80 124 Length 15, alignment 7/ 0: 68 60 120 60 108 Length 16, alignment 0/ 0: 92 88 124 80 112 Length 16, alignment 7/ 2: 92 88 124 80 112 Length 32, alignment 0/ 0: 128 124 220 132 196 Length 32, alignment 6/ 4: 124 124 220 132 196 Length 64, alignment 0/ 0: 208 204 412 260 388 Length 64, alignment 5/ 6: 380 548 736 572 740 Length 128, alignment 0/ 0: 680 756 1152 700 1060 Length 128, alignment 4/ 0: 724 732 1136 788 1400 Length 256, alignment 0/ 0: 1392 1432 2668 1436 2548 Length 256, alignment 3/ 2: 1328 1224 1960 1468 2116 Length 512, alignment 0/ 0: 2656 2672 3100 1548 3088 Length 512, alignment 2/ 4: 3316 3408 3384 2536 3792 Length 1024, alignment 0/ 0: 5404 2612 6172 5500 10528 Length 1024, alignment 1/ 6: 6072 4088 6408 4092 6772 Length 16, alignment 1/ 2: 152 184 236 184 200 Length 16, alignment 2/ 1: 148 140 200 136 224 Length 16, alignment 1/ 1: 132 144 176 128 228 Length 16, alignment 1/ 1: 116 144 180 140 164 Length 32, alignment 2/ 4: 280 292 388 280 440 Length 32, alignment 4/ 2: 244 220 304 224 284 Length 32, alignment 2/ 2: 224 244 324 240 296 Length 32, alignment 2/ 2: 256 256 404 220 276 Length 64, alignment 3/ 6: 320 324 464 288 468 Length 64, alignment 6/ 3: 208 204 404 204 400 Length 64, alignment 3/ 3: 208 204 404 204 400 Length 64, alignment 3/ 3: 204 204 408 204 400 Length 128, alignment 4/ 0: 368 364 792 396 784 Length 128, alignment 0/ 4: 580 564 852 532 892 Length 128, alignment 4/ 4: 368 364 792 396 784 Length 128, alignment 4/ 4: 368 364 792 396 784 Length 256, alignment 5/ 2: 736 684 1560 784 1552 Length 256, alignment 2/ 5: 1172 1168 1708 1108 1812 Length 256, alignment 5/ 5: 736 684 1560 784 1552 Length 256, alignment 5/ 5: 736 684 1564 784 1552 Length 512, alignment 6/ 4: 1440 1324 3100 1548 3088 Length 512, alignment 4/ 6: 2596 3364 5528 3668 5904 Length 512, alignment 6/ 6: 2744 2832 4368 2944 5316 Length 512, alignment 6/ 6: 2768 2836 4312 2896 5260 Length 1024, alignment 7/ 6: 5448 5468 6172 3084 6160 Length 1024, alignment 6/ 7: 5384 5352 8404 5912 8544 Length 1024, alignment 7/ 7: 2612 2604 6168 3084 6160 Length 1024, alignment 7/ 7: 2612 2604 6168 6220 10196 Length 0, alignment 0/ 0: 56 44 52 32 24 Length 0, alignment 0/ 0: 44 64 44 48 32 Length 0, alignment 0/ 0: 48 36 40 24 32 Length 1, alignment 0/ 0: 52 48 48 28 32 Length 1, alignment 0/ 1: 44 28 40 20 28 Length 1, alignment 1/ 0: 32 28 36 20 28 Length 2, alignment 0/ 0: 36 32 44 24 28 Length 2, alignment 0/ 2: 32 40 40 24 28 Length 2, alignment 2/ 0: 32 32 40 36 40 Length 3, alignment 0/ 0: 60 92 88 36 44 Length 3, alignment 0/ 3: 72 72 108 48 76 Length 3, alignment 3/ 0: 72 72 88 32 64 Length 4, alignment 0/ 0: 92 100 92 40 56 Length 4, alignment 0/ 4: 72 88 84 56 72 Length 4, alignment 4/ 0: 68 68 56 28 40 Length 5, alignment 0/ 0: 44 44 60 32 44 Length 5, alignment 0/ 5: 40 40 56 36 52 Length 5, alignment 5/ 0: 44 36 68 32 48 Length 6, alignment 0/ 0: 44 40 64 36 48 Length 6, alignment 0/ 6: 44 40 84 36 48 Length 6, alignment 6/ 0: 44 40 76 36 48 Length 7, alignment 0/ 0: 48 40 80 36 52 Length 7, alignment 0/ 7: 48 40 88 36 52 Length 7, alignment 7/ 0: 48 40 80 36 52 Length 8, alignment 0/ 0: 56 52 84 40 60 Length 8, alignment 0/ 0: 52 108 128 60 104 Length 8, alignment 0/ 0: 80 80 124 84 104 Length 9, alignment 0/ 0: 164 100 132 68 92 Length 9, alignment 0/ 1: 104 116 160 88 136 Length 9, alignment 1/ 0: 88 88 132 80 112 Length 10, alignment 0/ 0: 96 100 144 76 124 Length 10, alignment 0/ 2: 104 168 160 116 144 Length 10, alignment 2/ 0: 104 116 132 104 124 Length 11, alignment 0/ 0: 100 116 152 104 156 Length 11, alignment 0/ 3: 128 172 196 104 160 Length 11, alignment 3/ 0: 100 140 172 92 140 Length 12, alignment 0/ 0: 112 120 160 108 148 Length 12, alignment 0/ 4: 132 124 180 136 164 Length 12, alignment 4/ 0: 108 104 152 116 136 Length 13, alignment 0/ 0: 116 132 196 116 152 Length 13, alignment 0/ 5: 140 132 192 132 140 Length 13, alignment 5/ 0: 60 56 108 52 96 Length 14, alignment 0/ 0: 60 60 116 68 100 Length 14, alignment 0/ 6: 68 60 128 80 116 Length 14, alignment 6/ 0: 60 60 116 68 100 Length 15, alignment 0/ 0: 68 60 120 72 108 Length 15, alignment 0/ 7: 72 64 132 60 124 Length 15, alignment 7/ 0: 68 60 120 56 108 Length 16, alignment 7/ 2: 92 88 124 72 116 Length 32, alignment 6/ 4: 128 124 220 108 208 Length 64, alignment 5/ 6: 380 352 552 372 512 Length 128, alignment 4/ 0: 368 364 796 396 784 Length 256, alignment 3/ 2: 688 684 1564 780 1552 Length 512, alignment 2/ 4: 2584 2620 3380 2552 3776 Length 1024, alignment 1/ 6: 6224 6288 11508 7328 11592 Length 16, alignment 1/ 2: 196 212 256 176 240 Length 16, alignment 1/ 1: 140 128 176 112 184 Length 16, alignment 1/ 1: 132 156 232 140 196 Length 32, alignment 2/ 4: 300 296 376 260 400 Length 32, alignment 4/ 2: 264 240 356 212 336 Length 32, alignment 2/ 2: 244 256 336 220 364 Length 32, alignment 2/ 2: 248 236 384 232 304 Length 64, alignment 3/ 6: 464 484 712 504 764 Length 64, alignment 6/ 3: 344 356 412 204 400 Length 64, alignment 3/ 3: 208 204 408 204 400 Length 64, alignment 3/ 3: 208 204 408 204 400 Length 128, alignment 4/ 0: 364 364 792 396 784 Length 128, alignment 0/ 4: 576 560 856 532 892 Length 128, alignment 4/ 4: 368 364 792 396 784 Length 128, alignment 4/ 4: 368 364 792 396 784 Length 256, alignment 5/ 2: 688 684 1560 780 1552 Length 256, alignment 2/ 5: 1172 1168 1720 1104 1816 Length 256, alignment 5/ 5: 688 684 1560 780 1552 Length 256, alignment 5/ 5: 684 684 1560 780 1552 Length 512, alignment 6/ 4: 1328 1324 3096 1548 3088 Length 512, alignment 4/ 6: 2588 2640 3376 2548 3776 Length 512, alignment 6/ 6: 2628 2732 3708 2888 5028 Length 512, alignment 6/ 6: 2664 2752 4688 2952 4304 Length 1024, alignment 7/ 6: 2612 2608 6172 3088 6160 Length 1024, alignment 6/ 7: 5384 5352 8384 5936 8496 Length 1024, alignment 7/ 7: 3100 2604 6168 5892 9700 Length 1024, alignment 7/ 7: 5348 5432 9428 5940 9584 Jakub From jakub@redhat.com Mon Oct 18 22:06:00 2004 From: jakub@redhat.com (Jakub Jelinek) Date: Mon, 18 Oct 2004 22:06:00 -0000 Subject: [PATCH] Handle dlopen from statically linked apps via hooks Message-ID: <20041018220456.GD30497@sunsite.ms.mff.cuni.cz> Hi! This patch makes some dlopen calls from e.g. NSS modules loaded from statically linked programs work. The usual restrictions still apply, i.e. one should only run statically linked programs that use NSS/dlopen/iconv against the glibc they were compiled/linked against, otherwise there are no guarantees plus even then one can't assume everything works as with dynamic linking (e.g. when writing tststatic2 test, I have noticed that doing printf in the dlopened module in between printf's in statically linked program will result in the text from module not being printed (there are 2 different stdout's); I have changed it so that FILE * is passed around). 2004-10-18 Jakub Jelinek * elf/dl-libc.c (__libc_dlsym_private, __libc_register_dl_open_hook): New functions. (__libc_dlopen_mode): Call __libc_register_dl_open_hook and __libc_register_dlfcn_hook. * dlfcn/Makefile (routines, elide-routines.os): Set. Add rules to build and test tststatic2. * dlfcn/tststatic2.c: New test. * dlfcn/modstatic2.c: New test module. * dlfcn/dladdr.c: Call _dlfcn_hook from libdl.so if not NULL. Define __ prefixed routine in libc.a and in libdl.a just call it. * dlfcn/dladdr1.c: Likewise. * dlfcn/dlclose.c: Likewise. * dlfcn/dlerror.c: Likewise. * dlfcn/dlinfo.c: Likewise. * dlfcn/dlmopen.c: Likewise. * dlfcn/dlopen.c: Likewise. * dlfcn/dlopenold.c: Likewise. * dlfcn/dlsym.c: Likewise. * dlfcn/dlvsym.c: Likewise. * dlfcn/sdladdr.c: New file. * dlfcn/sdladdr1.c: New file. * dlfcn/sdlclose.c: New file. * dlfcn/sdlerror.c: New file. * dlfcn/sdlinfo.c: New file. * dlfcn/sdlopen.c: New file. * dlfcn/sdlsym.c: New file. * dlfcn/sdlvsym.c: New file. * dlfcn/Versions (libdl): Export _dlfcn_hook@GLIBC_PRIVATE. * include/dlfcn.h (DL_CALLER_DECL, DL_CALLER RETURN_ADDRESS): Define. (struct dlfcn_hook): New type. (_dlfcn_hook): New extern decl. (__dlopen, __dlclose, __dlsym, __dlerror, __dladdr, __dladdr1, __dlinfo, __dlmopen, __libc_dlsym_private, __libc_register_dl_open_hook, __libc_register_dlfcn_hook): New prototypes. (__dlvsym): Use DL_CALLER_DECL. * include/libc-symbols.h: Define libdl_hidden_proto and friends. * malloc/arena.c (_dl_open_hook): Extern decl. (ptmalloc_init): Don't call _dl_addr when dlopened from statically linked programs but don't use brk for them either. --- libc/malloc/arena.c.jj 2004-10-15 23:08:34.000000000 +0200 +++ libc/malloc/arena.c 2004-10-18 16:52:30.765485691 +0200 @@ -347,6 +347,9 @@ __failing_morecore (ptrdiff_t d) { return (void *) MORECORE_FAILURE; } + +extern struct dl_open_hook *_dl_open_hook; +libc_hidden_proto (_dl_open_hook); # endif # if defined SHARED && defined USE_TLS && !USE___THREAD @@ -429,10 +432,14 @@ ptmalloc_init (void) main_arena.next = &main_arena; #if defined _LIBC && defined SHARED - /* In case this libc copy is in a non-default namespace, never use brk. */ + /* In case this libc copy is in a non-default namespace, never use brk. + Likewise if dlopened from statically linked program. */ Dl_info di; struct link_map *l; - if (_dl_addr (ptmalloc_init, &di, &l, NULL) != 0 && l->l_ns != LM_ID_BASE) + + if (_dl_open_hook != NULL + || (_dl_addr (ptmalloc_init, &di, &l, NULL) != 0 + && l->l_ns != LM_ID_BASE)) __morecore = __failing_morecore; #endif --- libc/dlfcn/sdlopen.c.jj 2004-10-18 21:20:12.848098233 +0200 +++ libc/dlfcn/sdlopen.c 2004-10-18 21:20:12.848098233 +0200 @@ -0,0 +1 @@ +#include "dlopen.c" --- libc/dlfcn/sdlinfo.c.jj 2004-10-18 21:20:12.847098412 +0200 +++ libc/dlfcn/sdlinfo.c 2004-10-18 21:20:12.848098233 +0200 @@ -0,0 +1 @@ +#include "dlinfo.c" --- libc/dlfcn/dlopen.c.jj 2004-10-15 23:08:32.000000000 +0200 +++ libc/dlfcn/dlopen.c 2004-10-18 22:09:50.189932973 +0200 @@ -20,6 +20,17 @@ #include #include +#if !defined SHARED && defined IS_IN_libdl + +void * +dlopen (const char *file, int mode) +{ + return __dlopen (file, mode, RETURN_ADDRESS (0)); +} +static_link_warning (dlopen) + +#else + struct dlopen_args { /* The arguments for dlopen_doit. */ @@ -33,11 +44,11 @@ struct dlopen_args /* Non-shared code has no support for multiple namespaces. */ -#ifdef SHARED -# define NS __LM_ID_CALLER -#else -# define NS LM_ID_BASE -#endif +# ifdef SHARED +# define NS __LM_ID_CALLER +# else +# define NS LM_ID_BASE +# endif static void @@ -50,17 +61,34 @@ dlopen_doit (void *a) } -extern void *__dlopen_check (const char *file, int mode); void * -__dlopen_check (const char *file, int mode) +__dlopen (const char *file, int mode DL_CALLER_DECL) { +# ifdef SHARED + if (__builtin_expect (_dlfcn_hook != NULL, 0)) + return _dlfcn_hook->dlopen (file, mode, DL_CALLER); +# endif + struct dlopen_args args; args.file = file; args.mode = mode; - args.caller = RETURN_ADDRESS (0); + args.caller = DL_CALLER; +# ifdef SHARED return _dlerror_run (dlopen_doit, &args) ? NULL : args.new; +# else + if (_dlerror_run (dlopen_doit, &args)) + return NULL; + + __libc_register_dl_open_hook ((struct link_map *) args.new); + __libc_register_dlfcn_hook ((struct link_map *) args.new); + + return args.new; +# endif } -#include +# ifdef SHARED +# include +strong_alias (__dlopen, __dlopen_check) versioned_symbol (libdl, __dlopen_check, dlopen, GLIBC_2_1); -static_link_warning (dlopen) +# endif +#endif --- libc/dlfcn/dladdr.c.jj 2003-03-10 10:12:11.000000000 +0100 +++ libc/dlfcn/dladdr.c 2004-10-18 20:57:04.564415633 +0200 @@ -1,5 +1,6 @@ /* Locate the shared object symbol nearest a given address. - Copyright (C) 1996, 1997, 1998, 1999, 2003 Free Software Foundation, Inc. + Copyright (C) 1996, 1997, 1998, 1999, 2003, 2004 + 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 @@ -19,8 +20,26 @@ #include +#if !defined SHARED && defined IS_IN_libdl + int dladdr (const void *address, Dl_info *info) { + return __dladdr (address, info); +} + +#else + +int +__dladdr (const void *address, Dl_info *info) +{ +# ifdef SHARED + if (__builtin_expect (_dlfcn_hook != NULL, 0)) + return _dlfcn_hook->dladdr (address, info); +# endif return _dl_addr (address, info, NULL, NULL); } +# ifdef SHARED +strong_alias (__dladdr, dladdr) +# endif +#endif --- libc/dlfcn/tststatic2.c.jj 2004-10-18 22:32:17.698823901 +0200 +++ libc/dlfcn/tststatic2.c 2004-10-18 23:57:14.970024860 +0200 @@ -0,0 +1,166 @@ +#include +#include +#include +#include +#include +#include + +int +main (void) +{ + void *handle = dlopen ("modstatic2-nonexistent.so", RTLD_LAZY); + if (handle == NULL) + printf ("nonexistent: %s\n", dlerror ()); + else + exit (1); + + handle = dlopen ("modstatic2.so", RTLD_LAZY); + if (handle == NULL) + { + printf ("%s\n", dlerror ()); + exit (1); + } + + int (*test) (FILE *, int); + test = dlsym (handle, "test"); + if (test == NULL) + { + printf ("%s\n", dlerror ()); + exit (1); + } + + Dl_info info; + int res = dladdr (test, &info); + if (res == 0) + { + puts ("dladdr returned 0"); + exit (1); + } + else + { + if (strstr (info.dli_fname, "modstatic2.so") == NULL + || strcmp (info.dli_sname, "test") != 0) + { + printf ("fname %s sname %s\n", info.dli_fname, info.dli_sname); + exit (1); + } + if (info.dli_saddr != (void *) test) + { + printf ("saddr %p != test %p\n", info.dli_saddr, test); + exit (1); + } + } + + ElfW(Sym) *sym; + void *symp; + res = dladdr1 (test, &info, &symp, RTLD_DL_SYMENT); + if (res == 0) + { + puts ("dladdr1 returned 0"); + exit (1); + } + else + { + if (strstr (info.dli_fname, "modstatic2.so") == NULL + || strcmp (info.dli_sname, "test") != 0) + { + printf ("fname %s sname %s\n", info.dli_fname, info.dli_sname); + exit (1); + } + if (info.dli_saddr != (void *) test) + { + printf ("saddr %p != test %p\n", info.dli_saddr, test); + exit (1); + } + sym = symp; + if (sym == NULL) + { + puts ("sym == NULL\n"); + exit (1); + } + if (ELF32_ST_BIND (sym->st_info) != STB_GLOBAL + || ELF32_ST_VISIBILITY (sym->st_other) != STV_DEFAULT) + { + printf ("bind %d visibility %d\n", + (int) ELF32_ST_BIND (sym->st_info), + (int) ELF32_ST_VISIBILITY (sym->st_other)); + exit (1); + } + } + + Lmid_t lmid; + res = dlinfo (handle, RTLD_DI_LMID, &lmid); + if (res != 0) + { + printf ("dlinfo returned %d %s\n", res, dlerror ()); + exit (1); + } + else if (lmid != LM_ID_BASE) + { + printf ("lmid %d != %d\n", (int) lmid, (int) LM_ID_BASE); + exit (1); + } + + res = test (stdout, 2); + if (res != 4) + { + printf ("Got %i, expected 4\n", res); + exit (1); + } + + void *handle2 = dlopen (LIBDL_SO, RTLD_LAZY); + if (handle2 == NULL) + { + printf ("libdl.so: %s\n", dlerror ()); + exit (1); + } + +#ifdef DO_VERSIONING + if (dlvsym (handle2, "_dlfcn_hook", "GLIBC_PRIVATE") == NULL) + { + printf ("dlvsym: %s\n", dlerror ()); + exit (1); + } +#endif + + void *(*dlsymfn) (void *, const char *); + dlsymfn = dlsym (handle2, "dlsym"); + if (dlsymfn == NULL) + { + printf ("dlsym \"dlsym\": %s\n", dlerror ()); + exit (1); + } + void *test2 = dlsymfn (handle, "test"); + if (test2 == NULL) + { + printf ("%s\n", dlerror ()); + exit (1); + } + else if (test2 != (void *) test) + { + printf ("test %p != test2 %p\n", test, test2); + exit (1); + } + + dlclose (handle2); + dlclose (handle); + + handle = dlmopen (LM_ID_BASE, "modstatic2.so", RTLD_LAZY); + if (handle == NULL) + { + printf ("%s\n", dlerror ()); + exit (1); + } + dlclose (handle); + + handle = dlmopen (LM_ID_NEWLM, "modstatic2.so", RTLD_LAZY); + if (handle == NULL) + printf ("LM_ID_NEWLM: %s\n", dlerror ()); + else + { + puts ("LM_ID_NEWLM unexpectedly succeeded"); + exit (1); + } + + return 0; +} --- libc/dlfcn/dlinfo.c.jj 2004-10-15 23:08:32.000000000 +0200 +++ libc/dlfcn/dlinfo.c 2004-10-18 21:03:38.718828131 +0200 @@ -22,6 +22,16 @@ #include #include +#if !defined SHARED && defined IS_IN_libdl + +int +dlinfo (void *handle, int request, void *arg) +{ + return __dlinfo (handle, request, arg, RETURN_ADDRESS (0)); +} + +#else + struct dlinfo_args { ElfW(Addr) caller; @@ -36,7 +46,7 @@ dlinfo_doit (void *argsblock) struct dlinfo_args *const args = argsblock; struct link_map *l = args->handle; -#if 0 +# if 0 if (args->handle == RTLD_SELF) { Lmid_t nsid; @@ -53,7 +63,7 @@ dlinfo_doit (void *argsblock) GLRO(dl_signal_error) (0, NULL, NULL, N_("\ RTLD_SELF used in code not dynamically loaded")); } -#endif +# endif switch (args->request) { @@ -84,9 +94,19 @@ RTLD_SELF used in code not dynamically l } int -dlinfo (void *handle, int request, void *arg) +__dlinfo (void *handle, int request, void *arg DL_CALLER_DECL) { - struct dlinfo_args args = { (ElfW(Addr)) RETURN_ADDRESS (0), +# ifdef SHARED + if (__builtin_expect (_dlfcn_hook != NULL, 0)) + return _dlfcn_hook->dlinfo (handle, request, arg, + DL_CALLER); +# endif + + struct dlinfo_args args = { (ElfW(Addr)) DL_CALLER, handle, request, arg }; return _dlerror_run (&dlinfo_doit, &args) ? -1 : 0; } +# ifdef SHARED +strong_alias (__dlinfo, dlinfo) +# endif +#endif --- libc/dlfcn/sdladdr.c.jj 2004-10-18 21:20:12.844098948 +0200 +++ libc/dlfcn/sdladdr.c 2004-10-18 21:20:12.844098948 +0200 @@ -0,0 +1 @@ +#include "dladdr.c" --- libc/dlfcn/dlerror.c.jj 2004-03-08 12:01:41.000000000 +0100 +++ libc/dlfcn/dlerror.c 2004-10-18 23:48:45.113480259 +0200 @@ -25,6 +25,16 @@ #include #include +#if !defined SHARED && defined IS_IN_libdl + +char * +dlerror (void) +{ + return __dlerror (); +} + +#else + /* Type for storing results of dynamic loading actions. */ struct dl_action_result { @@ -46,11 +56,16 @@ static void free_key_mem (void *mem); char * -dlerror (void) +__dlerror (void) { char *buf = NULL; struct dl_action_result *result; +# ifdef SHARED + if (__builtin_expect (_dlfcn_hook != NULL, 0)) + return _dlfcn_hook->dlerror (); +# endif + /* If we have not yet initialized the buffer do it now. */ __libc_once (once, init); @@ -99,6 +114,9 @@ dlerror (void) return buf; } +# ifdef SHARED +strong_alias (__dlerror, dlerror) +# endif int internal_function @@ -185,3 +203,35 @@ free_key_mem (void *mem) free (mem); __libc_setspecific (key, NULL); } + +# ifdef SHARED + +struct dlfcn_hook *_dlfcn_hook __attribute__((nocommon)); +libdl_hidden_data_def (_dlfcn_hook) + +# else + +static struct dlfcn_hook _dlfcn_hooks = + { + .dlopen = __dlopen, + .dlclose = __dlclose, + .dlsym = __dlsym, + .dlvsym = __dlvsym, + .dlerror = __dlerror, + .dladdr = __dladdr, + .dladdr1 = __dladdr1, + .dlinfo = __dlinfo, + .dlmopen = __dlmopen + }; + +void +__libc_register_dlfcn_hook (struct link_map *map) +{ + struct dlfcn_hook **hook; + + hook = (struct dlfcn_hook **) __libc_dlsym_private (map, "_dlfcn_hook"); + if (hook != NULL) + *hook = &_dlfcn_hooks; +} +# endif +#endif --- libc/dlfcn/dlvsym.c.jj 2004-02-23 09:46:13.000000000 +0100 +++ libc/dlfcn/dlvsym.c 2004-10-18 21:46:33.954859714 +0200 @@ -22,6 +22,17 @@ #include +#if !defined SHARED && defined IS_IN_libdl + +void * +weak_function +dlvsym (void *handle, const char *name, const char *version_str) +{ + return __dlvsym (handle, name, version_str, RETURN_ADDRESS (0)); +} + +#else + struct dlvsym_args { /* The arguments to dlvsym_doit. */ @@ -44,13 +55,18 @@ dlvsym_doit (void *a) } void * -__dlvsym (void *handle, const char *name, const char *version_str) +__dlvsym (void *handle, const char *name, const char *version_str + DL_CALLER_DECL) { - struct dlvsym_args args; +# ifdef SHARED + if (__builtin_expect (_dlfcn_hook != NULL, 0)) + return _dlfcn_hook->dlvsym (handle, name, version_str, DL_CALLER); +# endif + struct dlvsym_args args; args.handle = handle; args.name = name; - args.who = RETURN_ADDRESS (0); + args.who = DL_CALLER; args.version = version_str; /* Protect against concurrent loads and unloads. */ @@ -62,4 +78,7 @@ __dlvsym (void *handle, const char *name return result; } +# ifdef SHARED weak_alias (__dlvsym, dlvsym) +# endif +#endif --- libc/dlfcn/modstatic2.c.jj 2004-10-18 22:42:28.741800567 +0200 +++ libc/dlfcn/modstatic2.c 2004-10-18 23:57:24.869271016 +0200 @@ -0,0 +1,228 @@ +#include +#include +#include +#include +#include +#include + +int test (FILE *out, int a); + +int +test (FILE *out, int a) +{ + fputs ("in modstatic2.c (test)\n", out); + + void *handle = dlopen ("modstatic2-nonexistent.so", RTLD_LAZY); + if (handle == NULL) + fprintf (out, "nonexistent: %s\n", dlerror ()); + else + exit (1); + + handle = dlopen ("modstatic2.so", RTLD_LAZY); + if (handle == NULL) + { + fprintf (out, "%s\n", dlerror ()); + exit (1); + } + + int (*test2) (FILE *, int); + test2 = dlsym (handle, "test"); + if (test2 == NULL) + { + fprintf (out, "%s\n", dlerror ()); + exit (1); + } + if (test2 != test) + { + fprintf (out, "test %p != test2 %p\n", test, test2); + exit (1); + } + + Dl_info info; + int res = dladdr (test2, &info); + if (res == 0) + { + fputs ("dladdr returned 0\n", out); + exit (1); + } + else + { + if (strstr (info.dli_fname, "modstatic2.so") == NULL + || strcmp (info.dli_sname, "test") != 0) + { + fprintf (out, "fname %s sname %s\n", info.dli_fname, info.dli_sname); + exit (1); + } + if (info.dli_saddr != (void *) test2) + { + fprintf (out, "saddr %p != test %p\n", info.dli_saddr, test2); + exit (1); + } + } + + ElfW(Sym) *sym; + void *symp; + res = dladdr1 (test2, &info, &symp, RTLD_DL_SYMENT); + if (res == 0) + { + fputs ("dladdr1 returned 0\n", out); + exit (1); + } + else + { + if (strstr (info.dli_fname, "modstatic2.so") == NULL + || strcmp (info.dli_sname, "test") != 0) + { + fprintf (out, "fname %s sname %s\n", info.dli_fname, info.dli_sname); + exit (1); + } + if (info.dli_saddr != (void *) test2) + { + fprintf (out, "saddr %p != test %p\n", info.dli_saddr, test2); + exit (1); + } + sym = symp; + if (sym == NULL) + { + fputs ("sym == NULL\n", out); + exit (1); + } + if (ELF32_ST_BIND (sym->st_info) != STB_GLOBAL + || ELF32_ST_VISIBILITY (sym->st_other) != STV_DEFAULT) + { + fprintf (out, "bind %d visibility %d\n", + (int) ELF32_ST_BIND (sym->st_info), + (int) ELF32_ST_VISIBILITY (sym->st_other)); + exit (1); + } + } + + Lmid_t lmid; + res = dlinfo (handle, RTLD_DI_LMID, &lmid); + if (res != 0) + { + fprintf (out, "dlinfo returned %d %s\n", res, dlerror ()); + exit (1); + } + else if (lmid != LM_ID_BASE) + { + fprintf (out, "lmid %d != %d\n", (int) lmid, (int) LM_ID_BASE); + exit (1); + } + + void *handle2 = dlopen (LIBDL_SO, RTLD_LAZY); + if (handle2 == NULL) + { + fprintf (out, "libdl.so: %s\n", dlerror ()); + exit (1); + } + +#ifdef DO_VERSIONING + if (dlvsym (handle2, "_dlfcn_hook", "GLIBC_PRIVATE") == NULL) + { + fprintf (out, "dlvsym: %s\n", dlerror ()); + exit (1); + } +#endif + + void *(*dlsymfn) (void *, const char *); + dlsymfn = dlsym (handle2, "dlsym"); + if (dlsymfn == NULL) + { + fprintf (out, "dlsym \"dlsym\": %s\n", dlerror ()); + exit (1); + } + void *test3 = dlsymfn (handle, "test"); + if (test3 == NULL) + { + fprintf (out, "%s\n", dlerror ()); + exit (1); + } + else if (test3 != (void *) test2) + { + fprintf (out, "test2 %p != test3 %p\n", test2, test3); + exit (1); + } + + dlclose (handle2); + dlclose (handle); + + handle = dlmopen (LM_ID_BASE, "modstatic2.so", RTLD_LAZY); + if (handle == NULL) + { + fprintf (out, "%s\n", dlerror ()); + exit (1); + } + dlclose (handle); + + handle = dlmopen (LM_ID_NEWLM, "modstatic2.so", RTLD_LAZY); + if (handle == NULL) + fprintf (out, "LM_ID_NEWLM: %s\n", dlerror ()); + else + { + fputs ("LM_ID_NEWLM unexpectedly succeeded\n", out); + exit (1); + } + + handle = dlopen ("modstatic.so", RTLD_LAZY); + if (handle == NULL) + { + fprintf (out, "%s\n", dlerror ()); + exit (1); + } + + int (*test4) (int); + test4 = dlsym (handle, "test"); + if (test4 == NULL) + { + fprintf (out, "%s\n", dlerror ()); + exit (1); + } + + res = test4 (16); + if (res != 16 + 16) + { + fprintf (out, "modstatic.so (test) returned %d\n", res); + exit (1); + } + + res = dladdr1 (test4, &info, &symp, RTLD_DL_SYMENT); + if (res == 0) + { + fputs ("dladdr1 returned 0\n", out); + exit (1); + } + else + { + if (strstr (info.dli_fname, "modstatic.so") == NULL + || strcmp (info.dli_sname, "test") != 0) + { + fprintf (out, "fname %s sname %s\n", info.dli_fname, info.dli_sname); + exit (1); + } + if (info.dli_saddr != (void *) test4) + { + fprintf (out, "saddr %p != test %p\n", info.dli_saddr, test4); + exit (1); + } + sym = symp; + if (sym == NULL) + { + fputs ("sym == NULL\n", out); + exit (1); + } + if (ELF32_ST_BIND (sym->st_info) != STB_GLOBAL + || ELF32_ST_VISIBILITY (sym->st_other) != STV_DEFAULT) + { + fprintf (out, "bind %d visibility %d\n", + (int) ELF32_ST_BIND (sym->st_info), + (int) ELF32_ST_VISIBILITY (sym->st_other)); + exit (1); + } + } + + dlclose (handle); + + fputs ("leaving modstatic2.c (test)\n", out); + return a + a; +} --- libc/dlfcn/dlsym.c.jj 2004-02-23 09:46:13.000000000 +0100 +++ libc/dlfcn/dlsym.c 2004-10-18 21:15:49.789861927 +0200 @@ -22,6 +22,16 @@ #include +#if !defined SHARED && defined IS_IN_libdl + +void * +dlsym (void *handle, const char *name) +{ + return __dlsym (handle, name, RETURN_ADDRESS (0)); +} + +#else + struct dlsym_args { /* The arguments to dlsym_doit. */ @@ -43,10 +53,15 @@ dlsym_doit (void *a) void * -dlsym (void *handle, const char *name) +__dlsym (void *handle, const char *name DL_CALLER_DECL) { +# ifdef SHARED + if (__builtin_expect (_dlfcn_hook != NULL, 0)) + return _dlfcn_hook->dlsym (handle, name, DL_CALLER); +# endif + struct dlsym_args args; - args.who = RETURN_ADDRESS (0); + args.who = DL_CALLER; args.handle = handle; args.name = name; @@ -59,3 +74,7 @@ dlsym (void *handle, const char *name) return result; } +# ifdef SHARED +strong_alias (__dlsym, dlsym) +# endif +#endif --- libc/dlfcn/Makefile.jj 2004-10-15 23:08:32.000000000 +0200 +++ libc/dlfcn/Makefile 2004-10-18 23:47:11.232148304 +0200 @@ -21,9 +21,11 @@ headers := bits/dlfcn.h dlfcn.h extra-libs := libdl libdl-routines := dlopen dlclose dlsym dlvsym dlerror dladdr dladdr1 dlinfo \ dlmopen +routines := $(patsubst %,s%,$(libdl-routines)) +elide-routines.os := $(routines) distribute := dlopenold.c glreflib1.c glreflib2.c failtestmod.c \ defaultmod1.c defaultmod2.c errmsg1mod.c modatexit.c \ - modcxaatexit.c modstatic.c \ + modcxaatexit.c modstatic.c modstatic2.c \ bug-dlsym1-lib1.c bug-dlsym1-lib2.c extra-libs-others := libdl @@ -51,10 +53,11 @@ glreflib2.so-no-z-defs = yes errmsg1mod.so-no-z-defs = yes ifeq (yesyesyes,$(build-static)$(build-shared)$(elf)) -tests += tststatic -tests-static += tststatic -modules-names += modstatic +tests += tststatic tststatic2 +tests-static += tststatic tststatic2 +modules-names += modstatic modstatic2 tststatic-ENV = LD_LIBRARY_PATH=$(objpfx):$(common-objpfx):$(common-objpfx)elf +tststatic2-ENV = LD_LIBRARY_PATH=$(objpfx):$(common-objpfx):$(common-objpfx)elf endif extra-objs += $(modules-names:=.os) @@ -106,7 +109,12 @@ $(objpfx)modatexit.so: $(common-objpfx)l $(objpfx)tststatic: $(objpfx)libdl.a $(objpfx)tststatic.out: $(objpfx)tststatic $(objpfx)modstatic.so -$(objpfx)modstatic.so: $(common-objpfx)libc.so $(common-objpfx)libc_nonshared.a +$(objpfx)tststatic2: $(objpfx)libdl.a +$(objpfx)tststatic2.out: $(objpfx)tststatic2 $(objpfx)modstatic.so \ + $(objpfx)modstatic2.so + +$(objpfx)modstatic2.so: $(libdl) $(common-objpfx)libc.so \ + $(common-objpfx)libc_nonshared.a $(objpfx)bug-dlopen1: $(libdl) --- libc/dlfcn/dlopenold.c.jj 2004-10-15 23:08:32.000000000 +0200 +++ libc/dlfcn/dlopenold.c 2004-10-18 19:10:12.833804663 +0200 @@ -67,6 +67,9 @@ __dlopen_nocheck (const char *file, int mode |= RTLD_LAZY; args.mode = mode; + if (__builtin_expect (_dlfcn_hook != NULL, 0)) + return _dlfcn_hook->dlopen (file, mode, RETURN_ADDRESS (0)); + return _dlerror_run (dlopen_doit, &args) ? NULL : args.new; } compat_symbol (libdl, __dlopen_nocheck, dlopen, GLIBC_2_0); --- libc/dlfcn/sdlvsym.c.jj 2004-10-18 21:20:12.850097876 +0200 +++ libc/dlfcn/sdlvsym.c 2004-10-18 21:20:12.850097876 +0200 @@ -0,0 +1 @@ +#include "dlvsym.c" --- libc/dlfcn/dladdr1.c.jj 2003-03-10 10:12:11.000000000 +0100 +++ libc/dlfcn/dladdr1.c 2004-10-18 20:58:19.241275042 +0200 @@ -1,5 +1,5 @@ /* Locate the shared object symbol nearest a given address. - Copyright (C) 2003 Free Software Foundation, Inc. + Copyright (C) 2003, 2004 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 @@ -19,9 +19,24 @@ #include +#if !defined SHARED && defined IS_IN_libdl + int dladdr1 (const void *address, Dl_info *info, void **extra, int flags) { + return __dladdr1 (address, info, extra, flags); +} + +#else + +int +__dladdr1 (const void *address, Dl_info *info, void **extra, int flags) +{ +# ifdef SHARED + if (__builtin_expect (_dlfcn_hook != NULL, 0)) + return _dlfcn_hook->dladdr1 (address, info, extra, flags); +# endif + switch (flags) { default: /* Make this an error? */ @@ -33,3 +48,7 @@ dladdr1 (const void *address, Dl_info *i return _dl_addr (address, info, (struct link_map **) extra, NULL); } } +# ifdef SHARED +strong_alias (__dladdr1, dladdr1) +# endif +#endif --- libc/dlfcn/Versions.jj 2004-10-15 23:08:32.000000000 +0200 +++ libc/dlfcn/Versions 2004-10-18 21:40:34.580972066 +0200 @@ -11,4 +11,7 @@ libdl { GLIBC_2.3.4 { dlmopen; } + GLIBC_PRIVATE { + _dlfcn_hook; + } } --- libc/dlfcn/sdlmopen.c.jj 2004-10-18 21:20:12.000000000 +0200 +++ libc/dlfcn/sdlmopen.c 2004-10-18 23:47:35.610820109 +0200 @@ -0,0 +1 @@ +#include "dlmopen.c" --- libc/dlfcn/sdlsym.c.jj 2004-10-18 21:20:12.849098055 +0200 +++ libc/dlfcn/sdlsym.c 2004-10-18 21:20:12.849098055 +0200 @@ -0,0 +1 @@ +#include "dlsym.c" --- libc/dlfcn/sdlerror.c.jj 2004-10-18 21:20:12.847098412 +0200 +++ libc/dlfcn/sdlerror.c 2004-10-18 21:20:12.847098412 +0200 @@ -0,0 +1 @@ +#include "dlerror.c" --- libc/dlfcn/dlmopen.c.jj 2004-10-14 03:46:27.000000000 +0200 +++ libc/dlfcn/dlmopen.c 2004-10-18 23:42:29.348188934 +0200 @@ -23,6 +23,17 @@ #include #include +#if !defined SHARED && defined IS_IN_libdl + +void * +dlmopen (Lmid_t nsid, const char *file, int mode) +{ + return __dlmopen (nsid, file, mode, RETURN_ADDRESS (0)); +} +static_link_warning (dlmopen) + +#else + struct dlmopen_args { /* Namespace ID. */ @@ -43,11 +54,11 @@ dlmopen_doit (void *a) /* Non-shared code has no support for multiple namespaces. */ if (args->nsid != LM_ID_BASE) -#ifdef SHARED +# ifdef SHARED /* If trying to open the link map for the main executable the namespace must be the main one. */ if (args->file == NULL) -#endif +# endif GLRO(dl_signal_error) (EINVAL, NULL, NULL, N_("invalid namespace")); args->new = _dl_open (args->file ?: "", args->mode | __RTLD_DLOPEN, @@ -56,14 +67,32 @@ dlmopen_doit (void *a) void * -dlmopen (Lmid_t nsid, const char *file, int mode) +__dlmopen (Lmid_t nsid, const char *file, int mode DL_CALLER_DECL) { +# ifdef SHARED + if (__builtin_expect (_dlfcn_hook != NULL, 0)) + return _dlfcn_hook->dlmopen (nsid, file, mode, RETURN_ADDRESS (0)); +# endif + struct dlmopen_args args; args.nsid = nsid; args.file = file; args.mode = mode; - args.caller = RETURN_ADDRESS (0); + args.caller = DL_CALLER; +# ifdef SHARED return _dlerror_run (dlmopen_doit, &args) ? NULL : args.new; +# else + if (_dlerror_run (dlmopen_doit, &args)) + return NULL; + + __libc_register_dl_open_hook ((struct link_map *) args.new); + __libc_register_dlfcn_hook ((struct link_map *) args.new); + + return args.new; +# endif } -static_link_warning (dlmopen) +# ifdef SHARED +strong_alias (__dlmopen, dlmopen) +# endif +#endif --- libc/dlfcn/sdlclose.c.jj 2004-10-18 21:20:12.846098591 +0200 +++ libc/dlfcn/sdlclose.c 2004-10-18 21:20:12.846098591 +0200 @@ -0,0 +1 @@ +#include "dlclose.c" --- libc/dlfcn/dlclose.c.jj 2001-07-06 06:54:45.000000000 +0200 +++ libc/dlfcn/dlclose.c 2004-10-18 20:59:07.666740989 +0200 @@ -1,5 +1,6 @@ /* Close a handle opened by `dlopen'. - Copyright (C) 1995, 1996, 1997, 1998, 1999 Free Software Foundation, Inc. + Copyright (C) 1995, 1996, 1997, 1998, 1999, 2004 + 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 @@ -19,6 +20,16 @@ #include +#if !defined SHARED && defined IS_IN_libdl + +int +dlclose (void *handle) +{ + return __dlclose (handle); +} + +#else + static void dlclose_doit (void *handle) { @@ -26,7 +37,16 @@ dlclose_doit (void *handle) } int -dlclose (void *handle) +__dlclose (void *handle) { +# ifdef SHARED + if (__builtin_expect (_dlfcn_hook != NULL, 0)) + return _dlfcn_hook->dlclose (handle); +# endif + return _dlerror_run (dlclose_doit, handle) ? -1 : 0; } +# ifdef SHARED +strong_alias (__dlclose, dlclose) +# endif +#endif --- libc/dlfcn/sdladdr1.c.jj 2004-10-18 21:20:12.845098770 +0200 +++ libc/dlfcn/sdladdr1.c 2004-10-18 21:20:12.845098770 +0200 @@ -0,0 +1 @@ +#include "dladdr1.c" --- libc/elf/dl-libc.c.jj 2004-10-15 23:08:33.000000000 +0200 +++ libc/elf/dl-libc.c 2004-10-18 19:00:55.139108595 +0200 @@ -121,7 +121,6 @@ do_dlsym_private (void *ptr) vers.hidden = 1; /* vers.hash = _dl_elf_hash (version); */ vers.hash = 0x0963cf85; - /* FIXME: Shouldn't we use libc.so.6* here? */ vers.filename = NULL; struct do_dlsym_args *args = (struct do_dlsym_args *) ptr; @@ -156,23 +155,36 @@ __libc_dlopen_mode (const char *name, in if (dlerror_run (do_dlopen, &args)) return NULL; + __libc_register_dl_open_hook (args.map); + __libc_register_dlfcn_hook (args.map); + return (void *) args.map; +#endif +} +libc_hidden_def (__libc_dlopen_mode) + +#ifndef SHARED +void * +__libc_dlsym_private (struct link_map *map, const char *name) +{ struct do_dlsym_args sargs; - sargs.map = args.map; - sargs.name = "_dl_open_hook"; + sargs.map = map; + sargs.name = name; if (! dlerror_run (do_dlsym_private, &sargs)) - { - struct dl_open_hook **hook - = (struct dl_open_hook **) - (DL_SYMBOL_ADDRESS (sargs.loadbase, sargs.ref)); - if (hook != NULL) - *hook = &_dl_open_hook; - } + return DL_SYMBOL_ADDRESS (sargs.loadbase, sargs.ref); + return NULL; +} - return (void *) args.map; -#endif +void +__libc_register_dl_open_hook (struct link_map *map) +{ + struct dl_open_hook **hook; + + hook = (struct dl_open_hook **) __libc_dlsym_private (map, "_dl_open_hook"); + if (hook != NULL) + *hook = &_dl_open_hook; } -libc_hidden_def (__libc_dlopen_mode) +#endif void * __libc_dlsym (void *map, const char *name) --- libc/include/libc-symbols.h.jj 2004-10-18 10:20:44.000000000 +0200 +++ libc/include/libc-symbols.h 2004-10-18 18:16:08.989695011 +0200 @@ -762,6 +762,24 @@ for linking") # define libresolv_hidden_data_ver(local, name) #endif +#if defined NOT_IN_libc && defined IS_IN_libdl +# define libdl_hidden_proto(name, attrs...) hidden_proto (name, ##attrs) +# define libdl_hidden_def(name) hidden_def (name) +# define libdl_hidden_weak(name) hidden_weak (name) +# define libdl_hidden_ver(local, name) hidden_ver (local, name) +# define libdl_hidden_data_def(name) hidden_data_def (name) +# define libdl_hidden_data_weak(name) hidden_data_weak (name) +# define libdl_hidden_data_ver(local, name) hidden_data_ver (local, name) +#else +# define libdl_hidden_proto(name, attrs...) +# define libdl_hidden_def(name) +# define libdl_hidden_weak(name) +# define libdl_hidden_ver(local, name) +# define libdl_hidden_data_def(name) +# define libdl_hidden_data_weak(name) +# define libdl_hidden_data_ver(local, name) +#endif + #ifdef HAVE_BUILTIN_REDIRECTION # define libc_hidden_builtin_proto(name, attrs...) libc_hidden_proto (name, ##attrs) # define libc_hidden_builtin_def(name) libc_hidden_def (name) --- libc/include/dlfcn.h.jj 2004-10-15 23:08:33.000000000 +0200 +++ libc/include/dlfcn.h 2004-10-18 21:33:45.000000000 +0200 @@ -11,8 +11,6 @@ #define __LM_ID_CALLER -2 /* Now define the internal interfaces. */ -extern void *__dlvsym (void *__handle, __const char *__name, - __const char *__version); #define __libc_dlopen(name) __libc_dlopen_mode (name, RTLD_LAZY) extern void *__libc_dlopen_mode (__const char *__name, int __mode); @@ -76,4 +74,62 @@ extern int _dl_catch_error (const char * extern int _dlerror_run (void (*operate) (void *), void *args) internal_function; +#ifdef SHARED +# define DL_CALLER_DECL /* Nothing */ +# define DL_CALLER RETURN_ADDRESS (0) +#else +# define DL_CALLER_DECL , void *dl_caller +# define DL_CALLER dl_caller +#endif + +struct dlfcn_hook +{ + void *(*dlopen) (const char *file, int mode, void *dl_caller); + int (*dlclose) (void *handle); + void *(*dlsym) (void *handle, const char *name, void *dl_caller); + void *(*dlvsym) (void *handle, const char *name, const char *version, + void *dl_caller); + char *(*dlerror) (void); + int (*dladdr) (const void *address, Dl_info *info); + int (*dladdr1) (const void *address, Dl_info *info, + void **extra_info, int flags); + int (*dlinfo) (void *handle, int request, void *arg, void *dl_caller); + void *(*dlmopen) (Lmid_t nsid, const char *file, int mode, void *dl_caller); + void *pad[4]; +}; + +extern struct dlfcn_hook *_dlfcn_hook; +libdl_hidden_proto (_dlfcn_hook) + +extern void *__dlopen (const char *file, int mode DL_CALLER_DECL) + attribute_hidden; +extern void *__dlmopen (Lmid_t nsid, const char *file, int mode DL_CALLER_DECL) + attribute_hidden; +extern int __dlclose (void *handle) + attribute_hidden; +extern void *__dlsym (void *handle, const char *name DL_CALLER_DECL) + attribute_hidden; +extern void *__dlvsym (void *handle, const char *name, const char *version + DL_CALLER_DECL) + attribute_hidden; +extern char *__dlerror (void) + attribute_hidden; +extern int __dladdr (const void *address, Dl_info *info) + attribute_hidden; +extern int __dladdr1 (const void *address, Dl_info *info, + void **extra_info, int flags) + attribute_hidden; +extern int __dlinfo (void *handle, int request, void *arg DL_CALLER_DECL) + attribute_hidden; + +#ifndef SHARED +struct link_map; +extern void * __libc_dlsym_private (struct link_map *map, const char *name) + attribute_hidden; +extern void __libc_register_dl_open_hook (struct link_map *map) + attribute_hidden; +extern void __libc_register_dlfcn_hook (struct link_map *map) + attribute_hidden; +#endif + #endif Jakub From jakub@redhat.com Tue Oct 19 12:10:00 2004 From: jakub@redhat.com (Jakub Jelinek) Date: Tue, 19 Oct 2004 12:10:00 -0000 Subject: [PATCH] Fix catchsegv Message-ID: <20041019120844.GE30497@sunsite.ms.mff.cuni.cz> Hi! $LIB in LD_PRELOAD=.../$LIB/libSegFault.so needs to be escaped from shell. Either of the following patches work, I'd say adding single quotes is better in case of weirdo slibdir paths e.g. with embedded spaces and other chars (but that will not handle properly paths with embedded quotes). Jakub -------------- next part -------------- 2004-10-19 Jakub Jelinek * debug/Makefile (catchsegv): Prefix $LIB with a backslash. --- libc/debug/Makefile.jj 2004-10-19 13:45:37.000000000 +0200 +++ libc/debug/Makefile 2004-10-19 13:57:34.623059205 +0200 @@ -72,7 +72,7 @@ include ../Rules $(objpfx)catchsegv: catchsegv.sh $(common-objpfx)soversions.mk \ $(common-objpfx)config.make - slibpfx=`echo $(slibdir)|sed 's/lib\(64\|\)$$/$$LIB/'`; \ + slibpfx=`echo $(slibdir)|sed 's/lib\(64\|\)$$/\\\\\\\\$$LIB/'`; \ sed -e 's|@VERSION@|$(version)|' -e "s|@SLIB@|$$slibpfx|" $< > $@.new chmod 555 $@.new mv -f $@.new $@ -------------- next part -------------- 2004-10-19 Jakub Jelinek * debug/catchsegv.sh: Surround @SLIB@ into single quotes. --- libc/debug/catchsegv.sh.jj 2004-10-19 13:45:37.000000000 +0200 +++ libc/debug/catchsegv.sh 2004-10-19 14:02:02.468479350 +0200 @@ -54,7 +54,7 @@ segv_output=`mktemp ${TMPDIR:-/tmp}/segv # Redirect stderr to avoid termination message from shell. (exec 3>&2 2>/dev/null -LD_PRELOAD=${LD_PRELOAD:+${LD_PRELOAD}:}@SLIB@/libSegFault.so \ +LD_PRELOAD=${LD_PRELOAD:+${LD_PRELOAD}:}'@SLIB@'/libSegFault.so \ SEGFAULT_USE_ALTSTACK=1 \ SEGFAULT_OUTPUT_NAME=$segv_output \ "$prog" ${1+"$@"} 2>&3 3>&-) From jakub@redhat.com Tue Oct 19 16:20:00 2004 From: jakub@redhat.com (Jakub Jelinek) Date: Tue, 19 Oct 2004 16:20:00 -0000 Subject: [PATCH] Change dladdr to return same thing as dlsym/dlvsym in dli_saddr Message-ID: <20041019161901.GF30497@sunsite.ms.mff.cuni.cz> Hi! On most arches this means no change (well, the first hunk means that STT_TLS symbols will not be looked at, as they don't represent addresses in the shared library or binary), but on IA-64/HPPA this matters. 2004-10-19 Jakub Jelinek * elf/dl-addr.c (_dl_addr): Don't look at STT_TLS symbols. Use DL_SYMBOL_ADDRESS to set dli_saddr. --- libc/elf/dl-addr.c.jj 2004-10-15 23:08:33.000000000 +0200 +++ libc/elf/dl-addr.c 2004-10-19 10:10:31.000000000 +0200 @@ -92,6 +92,9 @@ _dl_addr (const void *address, Dl_info * dynamic symbol table!! */ for (matchsym = NULL; (void *) symtab < (void *) symtabend; ++symtab) if (addr >= match->l_addr + symtab->st_value +#if defined USE_TLS + && ELFW(ST_TYPE) (symtab->st_info) != STT_TLS +#endif && ((symtab->st_size == 0 && addr == match->l_addr + symtab->st_value) || addr < match->l_addr + symtab->st_value + symtab->st_size) @@ -110,8 +113,10 @@ _dl_addr (const void *address, Dl_info * { /* We found a symbol close by. Fill in its name and exact address. */ + lookup_t matchl = LOOKUP_VALUE (match); + info->dli_sname = strtab + matchsym->st_name; - info->dli_saddr = (void *) (match->l_addr + matchsym->st_value); + info->dli_saddr = DL_SYMBOL_ADDRESS (matchl, matchsym); } else { Jakub From jakub@redhat.com Wed Oct 20 10:05:00 2004 From: jakub@redhat.com (Jakub Jelinek) Date: Wed, 20 Oct 2004 10:05:00 -0000 Subject: [PATCH] Allow %n in -D_FORTIFY_SOURCE=2 linux programs if /proc is not mounted Message-ID: <20041020100411.GG30497@sunsite.ms.mff.cuni.cz> Hi! If /proc is not mounted, it is IMHO better to be less protected than fail on legitimate %n uses. 2004-10-20 Jakub Jelinek * sysdeps/unix/sysv/linux/readonly-area.c (__readonly_area): If /proc is not mounted, return 1. --- libc/sysdeps/unix/sysv/linux/readonly-area.c.jj 2004-10-18 06:17:11.000000000 +0200 +++ libc/sysdeps/unix/sysv/linux/readonly-area.c 2004-10-20 12:03:41.082904624 +0200 @@ -33,7 +33,10 @@ __readonly_area (const char *ptr, size_t FILE *fp = fopen ("/proc/self/maps", "rc"); if (fp == NULL) - return -1; + /* We don't know. Returning 1 here means that programs using %n + and -D_FORTIFY_SOURCE=2 will work even when /proc is not mounted, + but will allow %n even in writable areas. */ + return 1; /* We need no locking. */ __fsetlocking (fp, FSETLOCKING_BYCALLER); Jakub From drepper@redhat.com Wed Oct 20 10:22:00 2004 From: drepper@redhat.com (Ulrich Drepper) Date: Wed, 20 Oct 2004 10:22:00 -0000 Subject: [PATCH] Allow %n in -D_FORTIFY_SOURCE=2 linux programs if /proc is not mounted In-Reply-To: <20041020100411.GG30497@sunsite.ms.mff.cuni.cz> References: <20041020100411.GG30497@sunsite.ms.mff.cuni.cz> Message-ID: <41763C39.50804@redhat.com> -----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 Jakub Jelinek wrote: > If /proc is not mounted, it is IMHO better to be less protected than > fail on legitimate %n uses. I'm not sure this is such a good idea. This can potentially affect only a handful of programs, those running before /proc is mounted and those used fater it is unmounted. If insight into t hose programs is hard enough we should use your patch. I worry about an exploit where a process running as root first run umount for /proc to disable this and maybe other checks. - -- ??? Ulrich Drepper ??? Red Hat, Inc. ??? 444 Castro St ??? Mountain View, CA ??? -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.2.6 (GNU/Linux) iD8DBQFBdjw52ijCOnn/RHQRAijkAJ4jexDj8zWdoVHU3d5lzibKB9TtTwCeNhRu WvfPM+zC0fIySlUIOWYMpss= =Opea -----END PGP SIGNATURE----- From kkojima@rr.iij4u.or.jp Thu Oct 21 07:02:00 2004 From: kkojima@rr.iij4u.or.jp (Kaz Kojima) Date: Thu, 21 Oct 2004 07:02:00 -0000 Subject: [PATCH] SH: A tiny NPTL update Message-ID: <20041021.160207.35808965.kkojima@rr.iij4u.or.jp> Hi, The patch below is a similar change with that for x86 and also fixes a few silly mistakes. Regards, kaz -- 2004-10-21 Kaz Kojima * sysdeps/unix/sysv/linux/sh/lowlevellock.S (__lll_mutex_timedlock_wait): If woken but cannot get the lock, make sure 2 is stored in the futex and we looked at the old value. Fix a few other problems to return the correct value. diff -uprN ORIG/libc/nptl/sysdeps/unix/sysv/linux/sh/lowlevellock.S LOCAL/libc/nptl/sysdeps/unix/sysv/linux/sh/lowlevellock.S --- ORIG/libc/nptl/sysdeps/unix/sysv/linux/sh/lowlevellock.S Sat Mar 20 15:24:28 2004 +++ LOCAL/libc/nptl/sysdeps/unix/sysv/linux/sh/lowlevellock.S Thu Oct 21 12:51:15 2004 @@ -127,13 +127,14 @@ __lll_mutex_timedlock_wait: extu.b r3, r3 trapa #0x14 SYSCALL_INST_PAD - mov r0, r4 + mov r0, r5 -8: +8: mov #0, r3 mov #2, r4 CMPXCHG (r3, @r8, r4, r2) - bf 7f + bf/s 7f + mov #0, r0 6: add #8, r15 @@ -144,8 +145,14 @@ __lll_mutex_timedlock_wait: 7: /* Check whether the time expired. */ mov #-ETIMEDOUT, r1 - cmp/eq r4, r1 + cmp/eq r5, r1 bt 5f + + /* Make sure the current holder knows we are going to sleep. */ + XCHG (r2, @r8, r3) + tst r3, r3 + bt/s 6b + mov #0, r0 bra 1b nop 3: From drepper@redhat.com Thu Oct 21 09:00:00 2004 From: drepper@redhat.com (Ulrich Drepper) Date: Thu, 21 Oct 2004 09:00:00 -0000 Subject: [PATCH] SH: A tiny NPTL update In-Reply-To: <20041021.160207.35808965.kkojima@rr.iij4u.or.jp> References: <20041021.160207.35808965.kkojima@rr.iij4u.or.jp> Message-ID: <41777A95.9060800@redhat.com> -----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 Applied. - -- ??? Ulrich Drepper ??? Red Hat, Inc. ??? 444 Castro St ??? Mountain View, CA ??? -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.2.6 (GNU/Linux) iD8DBQFBd3qV2ijCOnn/RHQRAnsfAKCSdn05nxZ7s6gcC9TqhWLMvPi4xwCdFvio 8bP6+6PVKoJAY5xZLvdNoZg= =sv4e -----END PGP SIGNATURE----- From jakub@redhat.com Fri Oct 22 20:41:00 2004 From: jakub@redhat.com (Jakub Jelinek) Date: Fri, 22 Oct 2004 20:41:00 -0000 Subject: [PATCH] i386 backtrace () using _Unwind_Backtrace Message-ID: <20041022204000.GI30497@sunsite.ms.mff.cuni.cz> Hi! _Unwind_Backtrace with contemporary libraries (i.e. those that have PT_GNU_EH_FRAME program header and .eh_frame_hdr binary search table) doesn't use malloc, so I think it is safe to use it for backtrace (). 2004-10-22 Jakub Jelinek * sysdeps/i386/Makefile (CFLAGS-backtrace.c): Add -fexceptions. * sysdeps/i386/backtrace.c: Include , , and . Remove include. (struct trace_arg): New type. (unwind_backtrace, unwind_getip, unwind_getcfa, unwind_getgr): New fn pointers resp. macros. (init, backtrace_helper): New functions. (__backtrace): Rewritten to use _Unwind_Backtrace first and fall back to frame pointer walking. --- libc/sysdeps/i386/Makefile.jj 2003-09-17 13:42:33.000000000 +0200 +++ libc/sysdeps/i386/Makefile 2004-10-22 22:23:53.184368037 +0200 @@ -21,6 +21,10 @@ CFLAGS-dl-load.c += -Wno-unused CFLAGS-dl-reloc.c += -Wno-unused endif +ifeq ($(subdir),debug) +CFLAGS-backtrace.c += -fexceptions +endif + # Most of the glibc routines don't ever call user defined callbacks # nor use any FPU or SSE* and as such don't need bigger %esp alignment # than 4 bytes. --- libc/sysdeps/i386/backtrace.c.jj 2003-10-24 14:02:44.000000000 +0200 +++ libc/sysdeps/i386/backtrace.c 2004-10-22 22:23:00.248767985 +0200 @@ -1,5 +1,5 @@ /* Return backtrace of current program state. - Copyright (C) 1998, 2000 Free Software Foundation, Inc. + Copyright (C) 1998, 2000, 2003, 2004 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Ulrich Drepper , 1998. @@ -18,8 +18,64 @@ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ +#include +#include #include -#include +#include +#include + +struct trace_arg +{ + void **array; + int cnt, size; + void *lastebp, *lastesp; +}; + +#ifdef SHARED +static _Unwind_Reason_Code (*unwind_backtrace) (_Unwind_Trace_Fn, void *); +static _Unwind_Ptr (*unwind_getip) (struct _Unwind_Context *); +static _Unwind_Ptr (*unwind_getcfa) (struct _Unwind_Context *); +static _Unwind_Ptr (*unwind_getgr) (struct _Unwind_Context *, int); + +static void +init (void) +{ + void *handle = __libc_dlopen ("libgcc_s.so.1"); + + if (handle == NULL) + return; + + unwind_backtrace = __libc_dlsym (handle, "_Unwind_Backtrace"); + unwind_getip = __libc_dlsym (handle, "_Unwind_GetIP"); + unwind_getcfa = __libc_dlsym (handle, "_Unwind_GetCFA"); + unwind_getgr = __libc_dlsym (handle, "_Unwind_GetGR"); + if (unwind_getip == NULL || unwind_getgr == NULL || unwind_getcfa == NULL) + unwind_backtrace = NULL; +} +#else +# define unwind_backtrace _Unwind_Backtrace +# define unwind_getip _Unwind_GetIP +# define unwind_getcfa _Unwind_GetCFA +# define unwind_getgr _Unwind_GetGR +#endif + +static _Unwind_Reason_Code +backtrace_helper (struct _Unwind_Context *ctx, void *a) +{ + struct trace_arg *arg = a; + + /* We are first called with address in the __backtrace function. + Skip it. */ + if (arg->cnt != -1) + arg->array[arg->cnt] = (void *) unwind_getip (ctx); + if (++arg->cnt == arg->size) + return _URC_END_OF_STACK; + + /* %ebp is DWARF2 register 5 on IA-32. */ + arg->lastebp = (void *) unwind_getgr (ctx, 5); + arg->lastesp = (void *) unwind_getcfa (ctx); + return _URC_NO_REASON; +} /* This is a global variable set at program start time. It marks the @@ -27,46 +83,61 @@ extern void *__libc_stack_end; -/* This is the stack alyout we see with every stack frame. +/* This is the stack layout we see with every stack frame + if not compiled without frame pointer. +-----------------+ +-----------------+ %ebp -> | %ebp last frame--------> | %ebp last frame--->... | | | | | return address | | return address | +-----------------+ +-----------------+ -*/ + + First try as far to get as far as possible using + _Unwind_Backtrace which handles -fomit-frame-pointer + as well, but requires .eh_frame info. Then fall back to + walking the stack manually. */ + struct layout { - struct layout *__unbounded next; - void *__unbounded return_address; + struct layout *ebp; + void *ret; }; + int __backtrace (array, size) void **array; int size; { - /* We assume that all the code is generated with frame pointers set. */ - register void *ebp __asm__ ("ebp"); - register void *esp __asm__ ("esp"); - struct layout *current; - int cnt = 0; - - /* We skip the call to this function, it makes no sense to record it. */ - current = BOUNDED_1 ((struct layout *) ebp); - while (cnt < size) + struct trace_arg arg = { .array = array, .size = size, .cnt = -1 }; +#ifdef SHARED + __libc_once_define (static, once); + + __libc_once (once, init); + if (unwind_backtrace == NULL) + return 0; +#endif + + if (size >= 1) + unwind_backtrace (backtrace_helper, &arg); + + if (arg.cnt > 1 && arg.array[arg.cnt - 1] == NULL) + --arg.cnt; + else if (arg.cnt < size) { - if ((void *) current < esp || (void *) current > __libc_stack_end) - /* This means the address is out of range. Note that for the - toplevel we see a frame pointer with value NULL which clearly is - out of range. */ - break; + struct layout *ebp = (struct layout *) arg.lastebp; - array[cnt++] = current->return_address; - - current = current->next; + while (arg.cnt < size) + { + /* Check for out of range. */ + if ((void *) ebp < arg.lastesp || (void *) ebp > __libc_stack_end + || ((long) ebp & 3)) + break; + + array[arg.cnt++] = ebp->ret; + ebp = ebp->ebp; + } } - - return cnt; + return arg.cnt != -1 ? arg.cnt : 0; } weak_alias (__backtrace, backtrace) Jakub From drepper@redhat.com Fri Oct 22 21:08:00 2004 From: drepper@redhat.com (Ulrich Drepper) Date: Fri, 22 Oct 2004 21:08:00 -0000 Subject: [PATCH] i386 backtrace () using _Unwind_Backtrace In-Reply-To: <20041022204000.GI30497@sunsite.ms.mff.cuni.cz> References: <20041022204000.GI30497@sunsite.ms.mff.cuni.cz> Message-ID: <417976BD.2080807@redhat.com> -----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 Applied. - -- ??? Ulrich Drepper ??? Red Hat, Inc. ??? 444 Castro St ??? Mountain View, CA ??? -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.2.6 (GNU/Linux) iD8DBQFBeXa92ijCOnn/RHQRAk4yAJ0a5aqMaCySKEEg2gUdBQRw4C3uEwCdH3zG PUKZQ0G3b/liybs7mhdJYas= =87uU -----END PGP SIGNATURE----- From kkojima@rr.iij4u.or.jp Mon Oct 25 12:11:00 2004 From: kkojima@rr.iij4u.or.jp (Kaz Kojima) Date: Mon, 25 Oct 2004 12:11:00 -0000 Subject: [PATCH] SH: Fixup dl-machine.h Message-ID: <20041025.211100.22136569.kkojima@rr.iij4u.or.jp> Hi, The appended patch is mainly to compile sh port with GCC 4.0 and to add CFI derectives to ELF_MACHINE_RUNTIME_TRAMPOLINE for sh. The one line fix for _dl_start_user is to pass the correct environ to _dl_init. I thought that it was fixed in CVS already, for a long time. Sorry for my mess. Regards, kaz -- 2004-10-25 Kaz Kojima * sysdeps/sh/dl-machine.h: Include sysdep.h. (ELF_MACHINE_RUNTIME_TRAMPOLINE): Add CFI directives. (elf_machine_runtime_setup): Add always_inline attribute. (_dl_start_user): Pass the correct environ. (elf_machine_rela): Replace static inline by auto inline, add always_inline attribute. (elf_machine_rela_relative): Likewise. (elf_machine_lazy_rel): Likewise. diff -u3prN ORIG/libc/sysdeps/sh/dl-machine.h LOCAL/libc/sysdeps/sh/dl-machine.h --- ORIG/libc/sysdeps/sh/dl-machine.h Thu Jul 15 11:31:05 2004 +++ LOCAL/libc/sysdeps/sh/dl-machine.h Mon Oct 25 09:09:53 2004 @@ -26,7 +26,7 @@ #define ELF_MACHINE_NAME "SH" #include - +#include #include /* Return nonzero iff ELF header is compatible with the running host. */ @@ -72,7 +72,7 @@ elf_machine_load_address (void) /* Set up the loaded object described by L so its unrelocated PLT entries will jump to the on-demand fixup code in dl-runtime.c. */ -static inline int __attribute__ ((unused)) +static inline int __attribute__ ((unused, always_inline)) elf_machine_runtime_setup (struct link_map *l, int lazy, int profile) { Elf32_Addr *got; @@ -141,27 +141,45 @@ elf_machine_runtime_setup (struct link_m #ifdef HAVE_FPU #define FGR_SAVE "\ sts.l fpscr, @-r15\n\ + " CFI_ADJUST_CFA_OFFSET (4) "\n\ mov #8,r3\n\ swap.w r3, r3\n\ lds r3, fpscr\n\ fmov.s fr11, @-r15\n\ + " CFI_ADJUST_CFA_OFFSET (4) "\n\ fmov.s fr10, @-r15\n\ + " CFI_ADJUST_CFA_OFFSET (4) "\n\ fmov.s fr9, @-r15\n\ + " CFI_ADJUST_CFA_OFFSET (4) "\n\ fmov.s fr8, @-r15\n\ + " CFI_ADJUST_CFA_OFFSET (4) "\n\ fmov.s fr7, @-r15\n\ + " CFI_ADJUST_CFA_OFFSET (4) "\n\ fmov.s fr6, @-r15\n\ + " CFI_ADJUST_CFA_OFFSET (4) "\n\ fmov.s fr5, @-r15\n\ - fmov.s fr4, @-r15" + " CFI_ADJUST_CFA_OFFSET (4) "\n\ + fmov.s fr4, @-r15\n\ + " CFI_ADJUST_CFA_OFFSET (4) #define FGR_LOAD "\ fmov.s @r15+, fr4\n\ + " CFI_ADJUST_CFA_OFFSET (-4) "\n\ fmov.s @r15+, fr5\n\ + " CFI_ADJUST_CFA_OFFSET (-4) "\n\ fmov.s @r15+, fr6\n\ + " CFI_ADJUST_CFA_OFFSET (-4) "\n\ fmov.s @r15+, fr7\n\ + " CFI_ADJUST_CFA_OFFSET (-4) "\n\ fmov.s @r15+, fr8\n\ + " CFI_ADJUST_CFA_OFFSET (-4) "\n\ fmov.s @r15+, fr9\n\ + " CFI_ADJUST_CFA_OFFSET (-4) "\n\ fmov.s @r15+, fr10\n\ + " CFI_ADJUST_CFA_OFFSET (-4) "\n\ fmov.s @r15+, fr11\n\ - lds.l @r15+, fpscr" + " CFI_ADJUST_CFA_OFFSET (-4) "\n\ + lds.l @r15+, fpscr\n\ + " CFI_ADJUST_CFA_OFFSET (-4) #else #define FGR_SAVE "" #define FGR_LOAD "" @@ -172,19 +190,29 @@ elf_machine_runtime_setup (struct link_m .text\n\ .globl _dl_runtime_resolve\n\ .type _dl_runtime_resolve, @function\n\ + " CFI_STARTPROC "\n\ .align 5\n\ _dl_runtime_resolve:\n\ mov.l r2,@-r15\n\ + " CFI_ADJUST_CFA_OFFSET (4) "\n\ mov.l r3,@-r15\n\ + " CFI_ADJUST_CFA_OFFSET (4) "\n\ mov.l r4,@-r15\n\ + " CFI_ADJUST_CFA_OFFSET (4) "\n\ mov.l r5,@-r15\n\ + " CFI_ADJUST_CFA_OFFSET (4) "\n\ mov.l r6,@-r15\n\ + " CFI_ADJUST_CFA_OFFSET (4) "\n\ mov.l r7,@-r15\n\ + " CFI_ADJUST_CFA_OFFSET (4) "\n\ mov.l r12,@-r15\n\ + " CFI_ADJUST_CFA_OFFSET (4) "\n\ movt r3 ! Save T flag.\n\ mov.l r3,@-r15\n\ + " CFI_ADJUST_CFA_OFFSET (4) "\n\ " FGR_SAVE "\n\ sts.l pr,@-r15\n\ + " CFI_ADJUST_CFA_OFFSET (4) "\n\ tst r0,r0\n\ bt 1f\n\ mov r0,r2\n\ @@ -195,37 +223,57 @@ _dl_runtime_resolve:\n\ jsr @r0 ! Call resolver.\n\ mov r1,r6 ! reloc offset\n\ lds.l @r15+,pr ! Get register content back.\n\ + " CFI_ADJUST_CFA_OFFSET (-4) "\n\ " FGR_LOAD "\n\ mov.l @r15+,r3\n\ + " CFI_ADJUST_CFA_OFFSET (-4) "\n\ shal r3 ! Lode T flag.\n\ mov.l @r15+,r12\n\ + " CFI_ADJUST_CFA_OFFSET (-4) "\n\ mov.l @r15+,r7\n\ + " CFI_ADJUST_CFA_OFFSET (-4) "\n\ mov.l @r15+,r6\n\ + " CFI_ADJUST_CFA_OFFSET (-4) "\n\ mov.l @r15+,r5\n\ + " CFI_ADJUST_CFA_OFFSET (-4) "\n\ mov.l @r15+,r4\n\ + " CFI_ADJUST_CFA_OFFSET (-4) "\n\ mov.l @r15+,r3\n\ + " CFI_ADJUST_CFA_OFFSET (-4) "\n\ jmp @r0 ! Jump to function address.\n\ mov.l @r15+,r2\n\ + " CFI_ADJUST_CFA_OFFSET (-4) "\n\ .align 2\n\ 3:\n\ .long " GOTJMP (fixup) "\n\ + " CFI_ENDPROC "\n\ .size _dl_runtime_resolve, .-_dl_runtime_resolve\n\ \n\ .globl _dl_runtime_profile\n\ .type _dl_runtime_profile, @function\n\ + " CFI_STARTPROC "\n\ .align 5\n\ _dl_runtime_profile:\n\ mov.l r2,@-r15\n\ + " CFI_ADJUST_CFA_OFFSET (4) "\n\ mov.l r3,@-r15\n\ + " CFI_ADJUST_CFA_OFFSET (4) "\n\ mov.l r4,@-r15\n\ + " CFI_ADJUST_CFA_OFFSET (4) "\n\ mov.l r5,@-r15\n\ + " CFI_ADJUST_CFA_OFFSET (4) "\n\ mov.l r6,@-r15\n\ + " CFI_ADJUST_CFA_OFFSET (4) "\n\ mov.l r7,@-r15\n\ + " CFI_ADJUST_CFA_OFFSET (4) "\n\ mov.l r12,@-r15\n\ + " CFI_ADJUST_CFA_OFFSET (4) "\n\ movt r3 ! Save T flag.\n\ mov.l r3,@-r15\n\ + " CFI_ADJUST_CFA_OFFSET (4) "\n\ " FGR_SAVE "\n\ sts.l pr,@-r15\n\ + " CFI_ADJUST_CFA_OFFSET (4) "\n\ tst r0,r0\n\ bt 1f\n\ mov r0,r2\n\ @@ -237,20 +285,30 @@ _dl_runtime_profile:\n\ jsr @r0 ! Call resolver.\n\ mov r1,r6 ! reloc offset\n\ lds.l @r15+,pr ! Get register content back.\n\ + " CFI_ADJUST_CFA_OFFSET (-4) "\n\ " FGR_LOAD "\n\ mov.l @r15+,r3\n\ + " CFI_ADJUST_CFA_OFFSET (-4) "\n\ shal r3 ! Lode T flag.\n\ mov.l @r15+,r12\n\ + " CFI_ADJUST_CFA_OFFSET (-4) "\n\ mov.l @r15+,r7\n\ + " CFI_ADJUST_CFA_OFFSET (-4) "\n\ mov.l @r15+,r6\n\ + " CFI_ADJUST_CFA_OFFSET (-4) "\n\ mov.l @r15+,r5\n\ + " CFI_ADJUST_CFA_OFFSET (-4) "\n\ mov.l @r15+,r4\n\ + " CFI_ADJUST_CFA_OFFSET (-4) "\n\ mov.l @r15+,r3\n\ + " CFI_ADJUST_CFA_OFFSET (-4) "\n\ jmp @r0 ! Jump to function address.\n\ mov.l @r15+,r2\n\ + " CFI_ADJUST_CFA_OFFSET (-4) "\n\ .align 2\n\ 3:\n\ .long " GOTJMP (profile_fixup) "\n\ + " CFI_ENDPROC "\n\ .size _dl_runtime_profile, .-_dl_runtime_profile\n\ .previous\n\ "); @@ -265,16 +323,25 @@ _dl_runtime_profile:\n\ _dl_runtime_resolve:\n\ _dl_runtime_profile:\n\ mov.l r2,@-r15\n\ + " CFI_ADJUST_CFA_OFFSET (4) "\n\ mov.l r3,@-r15\n\ + " CFI_ADJUST_CFA_OFFSET (4) "\n\ mov.l r4,@-r15\n\ + " CFI_ADJUST_CFA_OFFSET (4) "\n\ mov.l r5,@-r15\n\ + " CFI_ADJUST_CFA_OFFSET (4) "\n\ mov.l r6,@-r15\n\ + " CFI_ADJUST_CFA_OFFSET (4) "\n\ mov.l r7,@-r15\n\ + " CFI_ADJUST_CFA_OFFSET (4) "\n\ mov.l r12,@-r15\n\ + " CFI_ADJUST_CFA_OFFSET (4) "\n\ movt r3 ! Save T flag.\n\ mov.l r3,@-r15\n\ + " CFI_ADJUST_CFA_OFFSET (4) "\n\ " FGR_SAVE "\n\ sts.l pr,@-r15\n\ + " CFI_ADJUST_CFA_OFFSET (4) "\n\ tst r0,r0\n\ bt 1f\n\ mov r0,r2\n\ @@ -286,20 +353,30 @@ _dl_runtime_profile:\n\ jsr @r0 ! Call resolver.\n\ mov r1,r6 ! reloc offset\n\ lds.l @r15+,pr ! Get register content back.\n\ + " CFI_ADJUST_CFA_OFFSET (-4) "\n\ " FGR_LOAD "\n\ mov.l @r15+,r3\n\ + " CFI_ADJUST_CFA_OFFSET (-4) "\n\ shal r3 ! Lode T flag.\n\ mov.l @r15+,r12\n\ + " CFI_ADJUST_CFA_OFFSET (-4) "\n\ mov.l @r15+,r7\n\ + " CFI_ADJUST_CFA_OFFSET (-4) "\n\ mov.l @r15+,r6\n\ + " CFI_ADJUST_CFA_OFFSET (-4) "\n\ mov.l @r15+,r5\n\ + " CFI_ADJUST_CFA_OFFSET (-4) "\n\ mov.l @r15+,r4\n\ + " CFI_ADJUST_CFA_OFFSET (-4) "\n\ mov.l @r15+,r3\n\ + " CFI_ADJUST_CFA_OFFSET (-4) "\n\ jmp @r0 ! Jump to function address.\n\ mov.l @r15+,r2\n\ + " CFI_ADJUST_CFA_OFFSET (-4) "\n\ .align 2\n\ 3:\n\ .long " GOTJMP (fixup) "\n\ + " CFI_ENDPROC "\n\ .size _dl_runtime_resolve, .-_dl_runtime_resolve\n\ .size _dl_runtime_profile, .-_dl_runtime_profile\n\ .previous\n\ @@ -355,6 +432,7 @@ _dl_start_user:\n\ mov r5,r7\n\ shll2 r7\n\ add r15,r7\n\ + add #8,r7\n\ mov.l .L_dl_loaded,r0\n\ mov.l @(r0,r12),r0\n\ mov.l @r0,r4\n\ @@ -442,7 +520,8 @@ elf_machine_plt_value (struct link_map * /* Perform the relocation specified by RELOC and SYM (which is fully resolved). MAP is the object containing the reloc. */ -static inline void +auto inline void +__attribute ((always_inline)) elf_machine_rela (struct link_map *map, const Elf32_Rela *reloc, const Elf32_Sym *sym, const struct r_found_version *version, void *const reloc_addr_arg) @@ -618,7 +697,8 @@ elf_machine_rela (struct link_map *map, } } -static inline void +auto inline void +__attribute__ ((always_inline)) elf_machine_rela_relative (Elf32_Addr l_addr, const Elf32_Rela *reloc, void *const reloc_addr_arg) { @@ -636,7 +716,8 @@ elf_machine_rela_relative (Elf32_Addr l_ #undef COPY_UNALIGNED_WORD } -static inline void +auto inline void +__attribute__ ((always_inline)) elf_machine_lazy_rel (struct link_map *map, Elf32_Addr l_addr, const Elf32_Rela *reloc) { From kkojima@rr.iij4u.or.jp Mon Oct 25 12:17:00 2004 From: kkojima@rr.iij4u.or.jp (Kaz Kojima) Date: Mon, 25 Oct 2004 12:17:00 -0000 Subject: [PATCH] SH: Fixup for NPTL Message-ID: <20041025.211648.66313060.kkojima@rr.iij4u.or.jp> The first hunk of the appended patch is to use clock_gettime syscall in pthread_cond_timedwait.S as done for the other targets. The latter is a yet another fixup of __lll_mutex_timedlock_wait. Regards, kaz -- 2004-10-25 Kaz Kojima * sysdeps/unix/sysv/linux/sh/pthread_cond_timedwait.S (__pthread_cond_timedwait): Use clock_gettime syscall if exists. * sysdeps/unix/sysv/linux/sh/lowlevellock.S (__lll_mutex_timedlock_wait): Fix a bad branch condition. diff -u3prN ORIG/libc/nptl/sysdeps/unix/sysv/linux/sh/pthread_cond_timedwait.S LOCAL/libc/nptl/sysdeps/unix/sysv/linux/sh/pthread_cond_timedwait.S --- ORIG/libc/nptl/sysdeps/unix/sysv/linux/sh/pthread_cond_timedwait.S Mon Sep 20 09:31:30 2004 +++ LOCAL/libc/nptl/sysdeps/unix/sysv/linux/sh/pthread_cond_timedwait.S Sun Oct 24 09:39:11 2004 @@ -133,6 +133,52 @@ __pthread_cond_timedwait: 8: /* Get current time. */ +#ifdef __NR_clock_gettime + /* Get the clock number. */ + mov.l @(cond_nwaiters,r8), r4 + mov #((1 << clock_bits) - 1), r0 + and r0, r4 + /* Only clocks 0 and 1 are allowed. Both are handled in the + kernel. */ + mov r15, r5 + add #16, r5 + mov.w .L__NR_clock_gettime, r3 + trapa #0x12 + SYSCALL_INST_PAD +# ifndef __ASSUME_POSIX_TIMERS + cmp/eq #-ENOSYS, r0 + bt 19f +# endif + + /* Compute relative timeout. */ + mov.l @r13, r2 + mov.l @(4,r13), r3 + mov.l @(16,r15), r0 + bra 0f + mov.l @(20,r15), r1 +.L__NR_clock_gettime: + .word __NR_clock_gettime + +# ifndef __ASSUME_POSIX_TIMERS +19: + mov r15, r4 + add #16, r4 + mov #0, r5 + mov #SYS_gettimeofday, r3 + trapa #0x12 + SYSCALL_INST_PAD + + /* Compute relative timeout. */ + mov.l @(20,r15), r0 + mov.w .L1k, r1 + dmulu.l r0, r1 /* Micro seconds to nano seconds. */ + mov.l @r13, r2 + mov.l @(4,r13), r3 + mov.l @(16,r15), r0 + sts macl, r1 +#endif +0: +#else mov r15, r4 add #16, r4 mov #0, r5 @@ -143,11 +189,12 @@ __pthread_cond_timedwait: /* Compute relative timeout. */ mov.l @(20,r15), r0 mov.w .L1k, r1 - dmulu.l r0, r1 /* Milli seconds to nano seconds. */ + dmulu.l r0, r1 /* Micro seconds to nano seconds. */ mov.l @r13, r2 mov.l @(4,r13), r3 mov.l @(16,r15), r0 sts macl, r1 +#endif sub r0, r2 clrt subc r1, r3 diff -u3prN ORIG/libc/nptl/sysdeps/unix/sysv/linux/sh/lowlevellock.S LOCAL/libc/nptl/sysdeps/unix/sysv/linux/sh/lowlevellock.S --- ORIG/libc/nptl/sysdeps/unix/sysv/linux/sh/lowlevellock.S Fri Oct 22 22:07:32 2004 +++ LOCAL/libc/nptl/sysdeps/unix/sysv/linux/sh/lowlevellock.S Sat Oct 23 10:02:23 2004 @@ -117,6 +117,7 @@ __lll_mutex_timedlock_wait: mov #1, r3 mov #2, r4 CMPXCHG (r3, @r8, r4, r2) + tst r2, r2 bt 8f mov r8, r4 From drepper@redhat.com Mon Oct 25 19:04:00 2004 From: drepper@redhat.com (Ulrich Drepper) Date: Mon, 25 Oct 2004 19:04:00 -0000 Subject: [PATCH] SH: Fixup dl-machine.h In-Reply-To: <20041025.211100.22136569.kkojima@rr.iij4u.or.jp> References: <20041025.211100.22136569.kkojima@rr.iij4u.or.jp> Message-ID: <417D4E2C.6090004@redhat.com> -----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 Applied. - -- ??? Ulrich Drepper ??? Red Hat, Inc. ??? 444 Castro St ??? Mountain View, CA ??? -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.2.6 (GNU/Linux) iD8DBQFBfU4s2ijCOnn/RHQRAsXUAKCiOdQJxn+85sFQRzg+3fEEMe2foQCfUKmJ pfp+lwUuYOmsmANeqgDZAtY= =YHAU -----END PGP SIGNATURE----- From drepper@redhat.com Mon Oct 25 19:07:00 2004 From: drepper@redhat.com (Ulrich Drepper) Date: Mon, 25 Oct 2004 19:07:00 -0000 Subject: [PATCH] SH: Fixup for NPTL In-Reply-To: <20041025.211648.66313060.kkojima@rr.iij4u.or.jp> References: <20041025.211648.66313060.kkojima@rr.iij4u.or.jp> Message-ID: <417D4ED2.1010800@redhat.com> -----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 Applied. - -- ??? Ulrich Drepper ??? Red Hat, Inc. ??? 444 Castro St ??? Mountain View, CA ??? -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.2.6 (GNU/Linux) iD8DBQFBfU7S2ijCOnn/RHQRAnpwAJ9g4TzvHKUmXV/xJY1jl7PdSWCoiQCgkyQe CN1nosclEJHCjZPqhjQcSKE= =Jp3Q -----END PGP SIGNATURE----- From jakub@redhat.com Tue Oct 26 18:09:00 2004 From: jakub@redhat.com (Jakub Jelinek) Date: Tue, 26 Oct 2004 18:09:00 -0000 Subject: [PATCH] Fix Message-ID: <20041026180718.GK30497@sunsite.ms.mff.cuni.cz> Hi! that includes only defines u_int16_t, not uint16_t (which is in stdint.h only). 2004-10-26 Jakub Jelinek * sysdeps/gnu/netinet/udp.h (struct udphdr): Use u_int16_t type instead of uint16_t. Formatting. --- libc/sysdeps/gnu/netinet/udp.h.jj 2004-08-30 12:03:35.000000000 +0200 +++ libc/sysdeps/gnu/netinet/udp.h 2004-10-26 19:53:25.561108920 +0200 @@ -54,21 +54,23 @@ /* UDP header as specified by RFC 768, August 1980. */ #ifdef __FAVOR_BSD + struct udphdr { - uint16_t uh_sport; /* source port */ - uint16_t uh_dport; /* destination port */ - uint16_t uh_ulen; /* udp length */ - uint16_t uh_sum; /* udp checksum */ + u_int16_t uh_sport; /* source port */ + u_int16_t uh_dport; /* destination port */ + u_int16_t uh_ulen; /* udp length */ + u_int16_t uh_sum; /* udp checksum */ }; + #else struct udphdr { - uint16_t source; - uint16_t dest; - uint16_t len; - uint16_t check; + u_int16_t source; + u_int16_t dest; + u_int16_t len; + u_int16_t check; }; #endif Jakub From roland@redhat.com Tue Oct 26 18:11:00 2004 From: roland@redhat.com (Roland McGrath) Date: Tue, 26 Oct 2004 18:11:00 -0000 Subject: [PATCH] Fix In-Reply-To: Jakub Jelinek's message of Tuesday, 26 October 2004 20:07:18 +0200 <20041026180718.GK30497@sunsite.ms.mff.cuni.cz> Message-ID: <200410261811.i9QIBdHO027108@magilla.sf.frob.com> > 2004-10-26 Jakub Jelinek > > * sysdeps/gnu/netinet/udp.h (struct udphdr): Use u_int16_t > type instead of uint16_t. Formatting. Applied. Thanks, Roland From jakub@redhat.com Wed Oct 27 16:25:00 2004 From: jakub@redhat.com (Jakub Jelinek) Date: Wed, 27 Oct 2004 16:25:00 -0000 Subject: [PATCH] Fix glob Message-ID: <20041027150316.GL30497@sunsite.ms.mff.cuni.cz> Hi! POSIX says: "If glob() terminates due to an error, it shall return one of the non-zero constants defined in . The arguments pglob->gl_pathc and pglob->gl_pathv are still set as defined above." My understanding is that globfree call is needed even if glob fails with non-zero return code to avoid leaks. But that can result in double free, as shown in the first part of do_test in bug-glob2.c testcase below. There is a http://sources.redhat.com/ml/libc-hacker/2002-02/msg00092.html patch that has not been applied, but it causes a memory leak, as seen by the second part of do_test in bug-glob2.c below. If we wanted to have pglob->gl_pathc != 0 check in globfree, we'd need to initialize gl_pathv = NULL for both GLOB_DOOFFS and !GLOB_DOOFFS and malloc it only when incrementing gl_pathc for the first time. But I think applications aren't supposed to modify gl_path{c,v} themselves, so this makes no difference. The side-effect of this patch is that globfree () can be called multiple times. If that is not desirable, we can instead modify all places that call globfree (pglob) as in: if (!(flags & GLOB_APPEND)) { globfree (pglob); pglob->gl_pathc = 0; + pglob->gl_pathv = NULL; } return result; 2004-10-27 Jakub Jelinek * sysdeps/generic/glob.c (globfree): Clear gl_pathv after freeing it. * posix/Makefile: Add rules to build and run bug-glob2 test. * posix/bug-glob2.c: New test. --- libc/sysdeps/generic/glob.c.jj 2004-10-01 12:05:02.000000000 +0200 +++ libc/sysdeps/generic/glob.c 2004-10-27 15:58:58.402729364 +0200 @@ -1135,6 +1135,7 @@ globfree (pglob) if (pglob->gl_pathv[pglob->gl_offs + i] != NULL) free ((__ptr_t) pglob->gl_pathv[pglob->gl_offs + i]); free ((__ptr_t) pglob->gl_pathv); + pglob->gl_pathv = NULL; } } #if defined _LIBC && !defined globfree --- libc/posix/Makefile.jj 2004-10-01 12:04:59.000000000 +0200 +++ libc/posix/Makefile 2004-10-27 16:27:03.620479730 +0200 @@ -82,7 +82,7 @@ tests := tstgetopt testfnm runtests run bug-regex21 bug-regex22 bug-regex23 tst-nice tst-nanosleep \ transbug tst-rxspencer tst-pcre tst-boost \ bug-ga1 tst-vfork1 tst-vfork2 tst-waitid \ - tst-getaddrinfo2 bug-glob1 + tst-getaddrinfo2 bug-glob1 bug-glob2 xtests := bug-ga2 ifeq (yes,$(build-shared)) test-srcs := globtest @@ -101,7 +101,7 @@ generated := $(addprefix wordexp-test-re bug-regex21-mem bug-regex21.mtrace \ tst-rxspencer-mem tst-rxspencer.mtrace tst-getconf.out \ tst-pcre-mem tst-pcre.mtrace tst-boost-mem tst-boost.mtrace \ - bug-ga2.mtrace bug-ga2-mem + bug-ga2.mtrace bug-ga2-mem bug-glob2.mtrace bug-glob2-mem include ../Rules @@ -194,7 +194,8 @@ tests: $(objpfx)annexc.out ifeq (no,$(cross-compiling)) tests: $(objpfx)bug-regex2-mem $(objpfx)bug-regex14-mem \ $(objpfx)bug-regex21-mem $(objpfx)tst-rxspencer-mem \ - $(objpfx)tst-pcre-mem $(objpfx)tst-boost-mem $(objpfx)tst-getconf.out + $(objpfx)tst-pcre-mem $(objpfx)tst-boost-mem $(objpfx)tst-getconf.out \ + $(objpfx)bug-glob2-mem xtests: $(objpfx)bug-ga2-mem endif @@ -251,3 +252,8 @@ $(objpfx)bug-ga2-mem: $(objpfx)bug-ga2.o $(common-objpfx)malloc/mtrace $(objpfx)bug-ga2.mtrace > $@ bug-ga2-ENV = MALLOC_TRACE=$(objpfx)bug-ga2.mtrace + +bug-glob2-ENV = MALLOC_TRACE=$(objpfx)bug-glob2.mtrace + +$(objpfx)bug-glob2-mem: $(objpfx)bug-glob2.out + $(common-objpfx)malloc/mtrace $(objpfx)bug-glob2.mtrace > $@ --- libc/posix/bug-glob2.c.jj 2004-10-27 15:48:21.433838016 +0200 +++ libc/posix/bug-glob2.c 2004-10-27 16:29:23.077715851 +0200 @@ -0,0 +1,303 @@ +/* Test glob memory management. + for the filesystem access functions. + Copyright (C) 2001, 2002, 2004 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. */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +// #define DEBUG +#ifdef DEBUG +# define PRINTF(fmt, args...) \ + do \ + { \ + int save_errno = errno; \ + printf (fmt, ##args); \ + errno = save_errno; \ + } while (0) +#else +# define PRINTF(fmt, args...) +#endif + + +static struct +{ + const char *name; + int level; + int type; + mode_t mode; +} filesystem[] = +{ + { ".", 1, DT_DIR, 0755 }, + { "..", 1, DT_DIR, 0755 }, + { "dir", 1, DT_DIR, 0755 }, + { ".", 2, DT_DIR, 0755 }, + { "..", 2, DT_DIR, 0755 }, + { "readable", 2, DT_DIR, 0755 }, + { ".", 3, DT_DIR, 0755 }, + { "..", 3, DT_DIR, 0755 }, + { "a", 3, DT_REG, 0644 }, + { "unreadable", 2, DT_DIR, 0111 }, + { ".", 3, DT_DIR, 0111 }, + { "..", 3, DT_DIR, 0755 }, + { "a", 3, DT_REG, 0644 }, + { "zz-readable", 2, DT_DIR, 0755 }, + { ".", 3, DT_DIR, 0755 }, + { "..", 3, DT_DIR, 0755 }, + { "a", 3, DT_REG, 0644 } +}; +#define nfiles (sizeof (filesystem) / sizeof (filesystem[0])) + + +typedef struct +{ + int level; + int idx; + struct dirent d; + char room_for_dirent[NAME_MAX]; +} my_DIR; + + +static long int +find_file (const char *s) +{ + int level = 1; + long int idx = 0; + + if (strcmp (s, ".") == 0) + return 0; + + if (s[0] == '.' && s[1] == '/') + s += 2; + + while (*s != '\0') + { + char *endp = strchrnul (s, '/'); + + PRINTF ("looking for %.*s, level %d\n", (int) (endp - s), s, level); + + while (idx < nfiles && filesystem[idx].level >= level) + { + if (filesystem[idx].level == level + && memcmp (s, filesystem[idx].name, endp - s) == 0 + && filesystem[idx].name[endp - s] == '\0') + break; + ++idx; + } + + if (idx == nfiles || filesystem[idx].level < level) + { + errno = ENOENT; + return -1; + } + + if (*endp == '\0') + return idx + 1; + + if (filesystem[idx].type != DT_DIR + && (idx + 1 >= nfiles + || filesystem[idx].level >= filesystem[idx + 1].level)) + { + errno = ENOTDIR; + return -1; + } + + ++idx; + + s = endp + 1; + ++level; + } + + errno = ENOENT; + return -1; +} + + +static void * +my_opendir (const char *s) +{ + long int idx = find_file (s); + my_DIR *dir; + + if (idx == -1) + { + PRINTF ("my_opendir(\"%s\") == NULL (%m)\n", s); + return NULL; + } + + if ((filesystem[idx].mode & 0400) == 0) + { + errno = EACCES; + PRINTF ("my_opendir(\"%s\") == NULL (%m)\n", s); + return NULL; + } + + dir = (my_DIR *) malloc (sizeof (my_DIR)); + if (dir == NULL) + { + printf ("cannot allocate directory handle: %m\n"); + exit (EXIT_FAILURE); + } + + dir->level = filesystem[idx].level; + dir->idx = idx; + + PRINTF ("my_opendir(\"%s\") == { level: %d, idx: %ld }\n", + s, filesystem[idx].level, idx); + + return dir; +} + + +static struct dirent * +my_readdir (void *gdir) +{ + my_DIR *dir = gdir; + + if (dir->idx == -1) + { + PRINTF ("my_readdir ({ level: %d, idx: %ld }) = NULL\n", + dir->level, (long int) dir->idx); + return NULL; + } + + while (dir->idx < nfiles && filesystem[dir->idx].level > dir->level) + ++dir->idx; + + if (dir->idx == nfiles || filesystem[dir->idx].level < dir->level) + { + dir->idx = -1; + PRINTF ("my_readdir ({ level: %d, idx: %ld }) = NULL\n", + dir->level, (long int) dir->idx); + return NULL; + } + + dir->d.d_ino = dir->idx; + +#ifdef _DIRENT_HAVE_D_TYPE + dir->d.d_type = filesystem[dir->idx].type; +#endif + + strcpy (dir->d.d_name, filesystem[dir->idx].name); + +#ifdef _DIRENT_HAVE_D_TYPE + PRINTF ("my_readdir ({ level: %d, idx: %ld }) = { d_ino: %ld, d_type: %d, d_name: \"%s\" }\n", + dir->level, (long int) dir->idx, dir->d.d_ino, dir->d.d_type, + dir->d.d_name); +#else + PRINTF ("my_readdir ({ level: %d, idx: %ld }) = { d_ino: %ld, d_name: \"%s\" }\n", + dir->level, (long int) dir->idx, dir->d.d_ino, + dir->d.d_name); +#endif + + ++dir->idx; + + return &dir->d; +} + + +static void +my_closedir (void *dir) +{ + PRINTF ("my_closedir ()\n"); + free (dir); +} + + +/* We use this function for lstat as well since we don't have any. */ +static int +my_stat (const char *name, struct stat *st) +{ + long int idx = find_file (name); + + if (idx == -1) + { + PRINTF ("my_stat (\"%s\", ...) = -1 (%m)\n", name); + return -1; + } + + memset (st, '\0', sizeof (*st)); + + if (filesystem[idx].type == DT_UNKNOWN) + st->st_mode = DTTOIF (idx + 1 < nfiles + && filesystem[idx].level < filesystem[idx + 1].level + ? DT_DIR : DT_REG) | filesystem[idx].mode; + else + st->st_mode = DTTOIF (filesystem[idx].type) | filesystem[idx].mode; + + PRINTF ("my_stat (\"%s\", { st_mode: %o }) = 0\n", name, st->st_mode); + + return 0; +} + + +static void +init_glob_altdirfuncs (glob_t *pglob) +{ + pglob->gl_closedir = my_closedir; + pglob->gl_readdir = my_readdir; + pglob->gl_opendir = my_opendir; + pglob->gl_lstat = my_stat; + pglob->gl_stat = my_stat; +} + + +int +do_test (void) +{ + mtrace (); + + glob_t gl; + memset (&gl, 0, sizeof (gl)); + init_glob_altdirfuncs (&gl); + + if (glob ("dir/*able/*", GLOB_ERR | GLOB_ALTDIRFUNC, NULL, &gl) + != GLOB_ABORTED) + { + puts ("glob did not fail with GLOB_ABORTED"); + exit (EXIT_FAILURE); + } + + globfree (&gl); + + memset (&gl, 0, sizeof (gl)); + init_glob_altdirfuncs (&gl); + + gl.gl_offs = 3; + if (glob ("dir2/*", GLOB_DOOFFS, NULL, &gl) != GLOB_NOMATCH) + { + puts ("glob did not fail with GLOB_NOMATCH"); + exit (EXIT_FAILURE); + } + + globfree (&gl); + + muntrace (); + + return 0; +} + +#define TEST_FUNCTION do_test () +#include "../test-skeleton.c" Jakub From jakub@redhat.com Wed Oct 27 21:09:00 2004 From: jakub@redhat.com (Jakub Jelinek) Date: Wed, 27 Oct 2004 21:09:00 -0000 Subject: [PATCH] Export _res_opcodes, __p_class_syms and __p_type_syms from libresolv.so again Message-ID: <20041027210758.GM30497@sunsite.ms.mff.cuni.cz> Hi! _res_opcodes and __p_{class,type}_syms were until the 2004-10-17 patch exported from libresolv.so. The following patch restores the exports, but given that they are const arrays and we really don't want binaries to change the values in them by declaring the arrays themselves, it is ok if libresolv.so uses always the arrays within itself. If a binary makes a copy relocation for one of these arrays, there simply will be two different read-only arrays, which will not cause problems. 2004-10-27 Jakub Jelinek * include/resolv.h (_res_opcodes): New extern. Add libresolv_hidden_proto. * resolv/res_debug.c (_res_opcodes): Remove. (__p_class_syms, __p_type_syms): Add libresolv_hidden_proto and libresolv_hidden_data_def. Remove attribute_hidden. * resolv/res_mkquery (_res_opcodes): Remove. * resolv/res_data.c (_res_opcodes): Remove attribute_hidden. Add libresolv_hidden_data_def. --- libc/include/resolv.h.jj 2004-10-18 10:20:44.000000000 +0200 +++ libc/include/resolv.h 2004-10-27 22:44:16.214535888 +0200 @@ -98,6 +98,9 @@ libresolv_hidden_proto (__ns_name_unpack libresolv_hidden_proto (__ns_get16) libresolv_hidden_proto (__ns_get32) +extern const char *_res_opcodes[]; +libresolv_hidden_proto (_res_opcodes) + #endif #endif --- libc/resolv/res_debug.c.jj 2004-10-18 10:20:56.000000000 +0200 +++ libc/resolv/res_debug.c 2004-10-27 22:56:46.937227601 +0200 @@ -118,7 +118,6 @@ static const char rcsid[] = "$BINDId: re # define SPRINTF(x) sprintf x #endif -extern const char *_res_opcodes[] attribute_hidden; extern const char *_res_sectioncodes[] attribute_hidden; /* @@ -349,7 +348,9 @@ p_fqname(const u_char *cp, const u_char * that C_ANY is a qclass but not a class. (You can ask for records of class * C_ANY, but you can't have any records of that class in the database.) */ -const struct res_sym __p_class_syms[] attribute_hidden = { +extern const struct res_sym __p_class_syms[]; +libresolv_hidden_proto (__p_class_syms) +const struct res_sym __p_class_syms[] = { {C_IN, "IN"}, {C_CHAOS, "CHAOS"}, {C_HS, "HS"}, @@ -358,6 +359,7 @@ const struct res_sym __p_class_syms[] at {C_NONE, "NONE"}, {C_IN, (char *)0} }; +libresolv_hidden_data_def (__p_class_syms) /* * Names of message sections. @@ -401,7 +403,9 @@ const struct res_sym __p_cert_syms[] att * that T_ANY is a qtype but not a type. (You can ask for records of type * T_ANY, but you can't have any records of that type in the database.) */ -const struct res_sym __p_type_syms[] attribute_hidden = { +extern const struct res_sym __p_type_syms[]; +libresolv_hidden_proto (__p_type_syms) +const struct res_sym __p_type_syms[] = { {ns_t_a, "A", "address"}, {ns_t_ns, "NS", "name server"}, {ns_t_md, "MD", "mail destination (deprecated)"}, @@ -448,6 +452,7 @@ const struct res_sym __p_type_syms[] att {ns_t_any, "ANY", "\"any\""}, {0, NULL, NULL} }; +libresolv_hidden_data_def (__p_type_syms) /* * Names of DNS rcodes. --- libc/resolv/res_mkquery.c.jj 2004-10-18 10:20:56.000000000 +0200 +++ libc/resolv/res_mkquery.c 2004-10-27 22:44:29.171235124 +0200 @@ -88,8 +88,6 @@ static const char rcsid[] = "$BINDId: re # endif #endif -extern const char *_res_opcodes[]; - /* * Form all types of queries. * Returns the size of the result or -1. --- libc/resolv/res_data.c.jj 2004-10-18 10:20:56.000000000 +0200 +++ libc/resolv/res_data.c 2004-10-27 22:45:26.053134419 +0200 @@ -39,7 +39,7 @@ static const char rcsid[] = "$BINDId: re #include #include -const char *_res_opcodes[] attribute_hidden = { +const char *_res_opcodes[] = { "QUERY", "IQUERY", "CQUERYM", @@ -57,6 +57,7 @@ const char *_res_opcodes[] attribute_hid "ZONEINIT", "ZONEREF", }; +libresolv_hidden_data_def (_res_opcodes) #ifdef BIND_UPDATE const char *_res_sectioncodes[] attribute_hidden = { Jakub From jakub@redhat.com Thu Oct 28 15:42:00 2004 From: jakub@redhat.com (Jakub Jelinek) Date: Thu, 28 Oct 2004 15:42:00 -0000 Subject: [PATCH] Fix pthread_create Message-ID: <20041028154047.GN30497@sunsite.ms.mff.cuni.cz> Hi! If if (pd->schedparam.sched_priority < minprio || pd->schedparam.sched_priority > maxprio) { err = EINVAL; goto errout; } jumps to errout, is_detached, which is not in scope at this point, will have undefined value. I guess we want to deallocate the stack always if create_thread has not been called. 2004-10-28 Jakub Jelinek * pthread_create.c (__pthread_create_2_1): Avoid leaking stacks if sched_priority is not between minprio and maxprio. --- libc/nptl/pthread_create.c.jj 2004-09-30 00:50:02.000000000 +0200 +++ libc/nptl/pthread_create.c 2004-10-28 17:31:51.016851090 +0200 @@ -459,10 +459,12 @@ __pthread_create_2_1 (newthread, attr, s err = create_thread (pd, iattr, STACK_VARIABLES_ARGS); if (err != 0) { - errout: /* Something went wrong. Free the resources. */ if (!is_detached) - __deallocate_stack (pd); + { + errout: + __deallocate_stack (pd); + } return err; } Jakub From kkojima@rr.iij4u.or.jp Fri Oct 29 09:51:00 2004 From: kkojima@rr.iij4u.or.jp (Kaz Kojima) Date: Fri, 29 Oct 2004 09:51:00 -0000 Subject: [PATCH] SH: NPTL: Fixup sem_timedwait Message-ID: <20041029.185111.48682197.kkojima@rr.iij4u.or.jp> Hi, The appended patch is to set errno correctly when sem_timedwait is timeouted. It also gets rid of an assembler warning for a too far offset for conditinal-branch. Regards, kaz -- 2004-10-29 Kaz Kojima * sysdeps/unix/sysv/linux/sh/sem_timedwait.S (sem_timedwait): Set ETIMEDOUT to errno when time is up. Tweak to avoid assembler warning. --- ORIG/libc/nptl/sysdeps/unix/sysv/linux/sh/sem_timedwait.S Mon Jul 5 11:14:05 2004 +++ LOCAL/libc/nptl/sysdeps/unix/sysv/linux/sh/sem_timedwait.S Tue Oct 26 08:01:38 2004 @@ -42,8 +42,10 @@ sem_timedwait: mov #0xf9, r1 and r1, r0 cmp/eq #8, r0 - bt 10f - + bf 0f + bra 10f + stc gbr, r0 +0: mov.l @r4, r0 2: tst r0, r0 @@ -115,7 +117,8 @@ sem_timedwait: add #-1, r2 5: cmp/pz r2 - bf 6f /* Time is already up. */ + bf/s 6f /* Time is already up. */ + mov #ETIMEDOUT, r0 /* Store relative timeout. */ mov.l r2, @r15 @@ -196,7 +199,6 @@ sem_timedwait: 10: /* Canceled. */ - stc gbr, r0 mov.w .Lresult, r1 mov #-1, r2 mov.l r2, @(r0,r1) From drepper@redhat.com Fri Oct 29 21:11:00 2004 From: drepper@redhat.com (Ulrich Drepper) Date: Fri, 29 Oct 2004 21:11:00 -0000 Subject: [PATCH] SH: NPTL: Fixup sem_timedwait In-Reply-To: <20041029.185111.48682197.kkojima@rr.iij4u.or.jp> References: <20041029.185111.48682197.kkojima@rr.iij4u.or.jp> Message-ID: <4182B1E3.3020406@redhat.com> -----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 Applied. - -- ??? Ulrich Drepper ??? Red Hat, Inc. ??? 444 Castro St ??? Mountain View, CA ??? -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.2.6 (GNU/Linux) iD8DBQFBgrHj2ijCOnn/RHQRAi4DAJ9bvhNk8NkY3Gs2i8d/sNvx3zLirACfZlDG h1x0nBr25Ekb7/iCoZ1DyQk= =O0wq -----END PGP SIGNATURE----- From schwab@suse.de Sat Oct 30 14:40:00 2004 From: schwab@suse.de (Andreas Schwab) Date: Sat, 30 Oct 2004 14:40:00 -0000 Subject: Undefined NULL in waitid.c Message-ID: 2004-10-30 Andreas Schwab * sysdeps/unix/sysv/linux/waitid.c: Include for NULL. --- sysdeps/unix/sysv/linux/waitid.c 28 Sep 2004 02:42:52 +0200 1.3 +++ sysdeps/unix/sysv/linux/waitid.c 30 Oct 2004 16:26:35 +0200 @@ -17,6 +17,7 @@ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ +#include #include #include #include Andreas. -- Andreas Schwab, SuSE Labs, schwab@suse.de SuSE Linux AG, Maxfeldstra?e 5, 90409 N?rnberg, Germany Key fingerprint = 58CA 54C7 6D53 942B 1756 01D3 44D5 214B 8276 4ED5 "And now for something completely different." From pere@hungry.com Sun Oct 31 14:03:00 2004 From: pere@hungry.com (Petter Reinholdtsen) Date: Sun, 31 Oct 2004 14:03:00 -0000 Subject: [PATCH] Corrections to the tr_TR locale [BZ #187 #421] Message-ID: <20041031140314.GA26332@saruman.uio.no> Here is a patch to fix some issues with the tr_TR locale. 2004-10-31 Petter Reinholdtsen * locales/tr_TR: Change contact address to the libc-locales mailing list. * locales/tr_TR: Add 'yY' and 'nN' to yesexpr and noexpr, to avoid surprises when using untranslated program. * locales/tr_TR: Remove trailing '.*' from yesexpr and noexpr to make it more like the structure of the POSIX locale values. * locales/tr_TR: Correct numeric decimal point to use comma, and correct grouping. Based on patch from Deniz Akkus Kanca and Patch from Nilg??n Belma Bug??ner. [BZ #187] * locales/tr_TR: Update with new currency symbol valid from 2005-01-01. Patch from Nilg??n Belma Bug??ner. [BZ #421] * locales/tr_TR: Convert UTF-8 comment to notation. Patch is attached to avoid charset problems with the UTF-8 character at the end of it. -------------- next part -------------- Index: localedata/locales/tr_TR =================================================================== RCS file: /cvs/glibc/libc/localedata/locales/tr_TR,v retrieving revision 1.18 diff -u -3 -p -u -r1.18 tr_TR --- localedata/locales/tr_TR 17 Feb 2004 02:35:12 -0000 1.18 +++ localedata/locales/tr_TR 31 Oct 2004 13:56:37 -0000 @@ -24,13 +24,17 @@ escape_char / % 1998-01-11T15:54:39 % Onur Tolga Sehitoglu , % Dept. of Comp. Eng. METU/Ankara Turkey +% 2004-05-29T15:13 +% Deniz Akkus Kanca +% 2004-10-30T10:28:35 +% Nilgn Belma Bugner LC_IDENTIFICATION title "Turkish locale for Turkey" source "RAP" address "Sankt Jrgens Alle 8, DK-1615 Kbenhavn V, Danmark" contact "" -email "bug-glibc@gnu.org" +email "libc-locales@sources.redhat.com" tel "" fax "" language "Turkish" @@ -3464,18 +3468,19 @@ class "combining_level3"; / END LC_CTYPE LC_MESSAGES -yesexpr "" -noexpr "" +yesexpr "" +noexpr "" yesstr "" nostr "" END LC_MESSAGES LC_MONETARY -int_curr_symbol "" -currency_symbol "" +% ISO-4217 (2004-10-25): TRY 949 2 +int_curr_symbol "" +currency_symbol "" mon_decimal_point "" mon_thousands_sep "" -mon_grouping 3 +mon_grouping 3;3 positive_sign "" negative_sign "" int_frac_digits 2 @@ -3489,9 +3494,9 @@ n_sign_posn 1 END LC_MONETARY LC_NUMERIC -decimal_point "" -thousands_sep "" -grouping -1 +decimal_point "" +thousands_sep "" +grouping 3;3 END LC_NUMERIC LC_TIME @@ -3553,7 +3558,7 @@ END LC_MEASUREMENT LC_NAME name_fmt "/ " -% Say.M??n +% Sayn name_gen "" % Bay name_mr "" From pere@hungry.com Sun Oct 31 16:00:00 2004 From: pere@hungry.com (Petter Reinholdtsen) Date: Sun, 31 Oct 2004 16:00:00 -0000 Subject: [PATCH] Change contact address for all locales in CVS [BZ #337] Message-ID: Here is a patch to fix the contact address of all locales in CVS. It includes the change to tr_TR submitted earlier. It is the result of running this command on all locales. sed 's/bug-glibc@gnu.org/libc-locales@sources.redhat.com/' 2004-10-31 Petter Reinholdtsen * locales/af_ZA: Change contact address from bug-glibc@gnu.org to libc-locales@sources.redhat.com. [BZ #337] * locales/an_ES: Likewise. * locales/ar_AE: Likewise. * locales/ar_BH: Likewise. * locales/ar_DZ: Likewise. * locales/ar_EG: Likewise. * locales/ar_IN: Likewise. * locales/ar_IQ: Likewise. * locales/ar_JO: Likewise. * locales/ar_KW: Likewise. * locales/ar_LB: Likewise. * locales/ar_LY: Likewise. * locales/ar_MA: Likewise. * locales/ar_OM: Likewise. * locales/ar_QA: Likewise. * locales/ar_SA: Likewise. * locales/ar_SD: Likewise. * locales/ar_SY: Likewise. * locales/ar_TN: Likewise. * locales/ar_YE: Likewise. * locales/be_BY: Likewise. * locales/bn_IN: Likewise. * locales/br_FR@euro: Likewise. * locales/ca_ES: Likewise. * locales/ca_ES@euro: Likewise. * locales/cs_CZ: Likewise. * locales/da_DK: Likewise. * locales/de_AT: Likewise. * locales/de_AT@euro: Likewise. * locales/de_BE: Likewise. * locales/de_BE@euro: Likewise. * locales/de_CH: Likewise. * locales/de_DE: Likewise. * locales/de_DE@euro: Likewise. * locales/de_LU: Likewise. * locales/de_LU@euro: Likewise. * locales/el_GR: Likewise. * locales/el_GR@euro: Likewise. * locales/en_AU: Likewise. * locales/en_BW: Likewise. * locales/en_CA: Likewise. * locales/en_DK: Likewise. * locales/en_GB: Likewise. * locales/en_HK: Likewise. * locales/en_IE: Likewise. * locales/en_IE@euro: Likewise. * locales/en_IN: Likewise. * locales/en_NZ: Likewise. * locales/en_PH: Likewise. * locales/en_SG: Likewise. * locales/en_US: Likewise. * locales/en_ZW: Likewise. * locales/es_AR: Likewise. * locales/es_BO: Likewise. * locales/es_CL: Likewise. * locales/es_CO: Likewise. * locales/es_CR: Likewise. * locales/es_DO: Likewise. * locales/es_EC: Likewise. * locales/es_ES: Likewise. * locales/es_ES@euro: Likewise. * locales/es_GT: Likewise. * locales/es_HN: Likewise. * locales/es_MX: Likewise. * locales/es_NI: Likewise. * locales/es_PA: Likewise. * locales/es_PE: Likewise. * locales/es_PR: Likewise. * locales/es_PY: Likewise. * locales/es_SV: Likewise. * locales/es_US: Likewise. * locales/es_UY: Likewise. * locales/es_VE: Likewise. * locales/et_EE: Likewise. * locales/eu_ES: Likewise. * locales/eu_ES@euro: Likewise. * locales/fi_FI: Likewise. * locales/fi_FI@euro: Likewise. * locales/fo_FO: Likewise. * locales/fr_BE: Likewise. * locales/fr_BE@euro: Likewise. * locales/fr_CA: Likewise. * locales/fr_CH: Likewise. * locales/fr_FR: Likewise. * locales/fr_FR@euro: Likewise. * locales/fr_LU: Likewise. * locales/fr_LU@euro: Likewise. * locales/ga_IE: Likewise. * locales/ga_IE@euro: Likewise. * locales/gl_ES: Likewise. * locales/gl_ES@euro: Likewise. * locales/gu_IN: Likewise. * locales/gv_GB: Likewise. * locales/he_IL: Likewise. * locales/hi_IN: Likewise. * locales/hr_HR: Likewise. * locales/hu_HU: Likewise. * locales/id_ID: Likewise. * locales/is_IS: Likewise. * locales/it_CH: Likewise. * locales/it_IT: Likewise. * locales/it_IT@euro: Likewise. * locales/iw_IL: Likewise. * locales/ja_JP: Likewise. * locales/kk_KZ: Likewise. * locales/kl_GL: Likewise. * locales/kn_IN: Likewise. * locales/ko_KR: Likewise. * locales/kw_GB: Likewise. * locales/lo_LA: Likewise. * locales/lt_LT: Likewise. * locales/lv_LV: Likewise. * locales/ml_IN: Likewise. * locales/mn_MN: Likewise. * locales/mr_IN: Likewise. * locales/ms_MY: Likewise. * locales/mt_MT: Likewise. * locales/nb_NO: Likewise. * locales/nl_BE: Likewise. * locales/nl_BE@euro: Likewise. * locales/nl_NL: Likewise. * locales/nl_NL@euro: Likewise. * locales/nn_NO: Likewise. * locales/pa_IN: Likewise. * locales/pl_PL: Likewise. * locales/pt_BR: Likewise. * locales/pt_PT: Likewise. * locales/pt_PT@euro: Likewise. * locales/ro_RO: Likewise. * locales/ru_RU: Likewise. * locales/ru_UA: Likewise. * locales/sk_SK: Likewise. * locales/sl_SI: Likewise. * locales/sq_AL: Likewise. * locales/sv_FI: Likewise. * locales/sv_FI@euro: Likewise. * locales/sv_SE: Likewise. * locales/ta_IN: Likewise. * locales/te_IN: Likewise. * locales/th_TH: Likewise. * locales/tr_TR: Likewise. * locales/uk_UA: Likewise. * locales/ur_PK: Likewise. * locales/vi_VN: Likewise. * locales/wa_BE@euro: Likewise. * locales/zh_CN: Likewise. * locales/zh_HK: Likewise. * locales/zh_SG: Likewise. * locales/zh_TW: Likewise. Index: localedata/locales/af_ZA =================================================================== RCS file: /cvs/glibc/libc/localedata/locales/af_ZA,v retrieving revision 1.8 diff -u -3 -p -u -r1.8 af_ZA --- localedata/locales/af_ZA 23 Mar 2004 07:36:58 -0000 1.8 +++ localedata/locales/af_ZA 31 Oct 2004 15:54:06 -0000 @@ -21,7 +21,7 @@ title "Afrikaans locale for South A source "RAP" address "" contact "" -email "bug-glibc@gnu.org" +email "libc-locales@sources.redhat.com" tel "" fax "" language "Afrikaans" Index: localedata/locales/an_ES =================================================================== RCS file: /cvs/glibc/libc/localedata/locales/an_ES,v retrieving revision 1.3 diff -u -3 -p -u -r1.3 an_ES --- localedata/locales/an_ES 25 Aug 2003 08:27:32 -0000 1.3 +++ localedata/locales/an_ES 31 Oct 2004 15:54:06 -0000 @@ -23,7 +23,7 @@ title "Aragonese locale for Spain" source "" address "" contact "Jordi Mallach P??rez" -email "bug-glibc@gnu.org" +email "libc-locales@sources.redhat.com" tel "" fax "" language "Aragonese" Index: localedata/locales/ar_AE =================================================================== RCS file: /cvs/glibc/libc/localedata/locales/ar_AE,v retrieving revision 1.4 diff -u -3 -p -u -r1.4 ar_AE --- localedata/locales/ar_AE 4 Dec 2003 04:49:58 -0000 1.4 +++ localedata/locales/ar_AE 31 Oct 2004 15:54:06 -0000 @@ -9,7 +9,7 @@ title "Arabic language locale for U source "IBM Globalization Center of Competency, Yamato Software Laboratory" address "1623-14, Shimotsuruma, Yamato-shi, Kanagawa-ken, 242-8502, Japan" contact "" -email "bug-glibc@gnu.org" +email "libc-locales@sources.redhat.com" tel "" fax "" language "Arabic" Index: localedata/locales/ar_BH =================================================================== RCS file: /cvs/glibc/libc/localedata/locales/ar_BH,v retrieving revision 1.6 diff -u -3 -p -u -r1.6 ar_BH --- localedata/locales/ar_BH 6 Dec 2003 07:40:37 -0000 1.6 +++ localedata/locales/ar_BH 31 Oct 2004 15:54:06 -0000 @@ -9,7 +9,7 @@ title "Arabic language locale for B source "IBM Globalization Center of Competency, Yamato Software Laboratory" address "1623-14, Shimotsuruma, Yamato-shi, Kanagawa-ken, 242-8502, Japan" contact "" -email "bug-glibc@gnu.org" +email "libc-locales@sources.redhat.com" tel "" fax "" language "Arabic" Index: localedata/locales/ar_DZ =================================================================== RCS file: /cvs/glibc/libc/localedata/locales/ar_DZ,v retrieving revision 1.5 diff -u -3 -p -u -r1.5 ar_DZ --- localedata/locales/ar_DZ 6 Dec 2003 07:40:37 -0000 1.5 +++ localedata/locales/ar_DZ 31 Oct 2004 15:54:06 -0000 @@ -9,7 +9,7 @@ title "Arabic language locale for A source "IBM Globalization Center of Competency, Yamato Software Laboratory" address "1623-14, Shimotsuruma, Yamato-shi, Kanagawa-ken, 242-8502, Japan" contact "" -email "bug-glibc@gnu.org" +email "libc-locales@sources.redhat.com" tel "" fax "" language "Arabic" Index: localedata/locales/ar_EG =================================================================== RCS file: /cvs/glibc/libc/localedata/locales/ar_EG,v retrieving revision 1.5 diff -u -3 -p -u -r1.5 ar_EG --- localedata/locales/ar_EG 6 Dec 2003 07:40:37 -0000 1.5 +++ localedata/locales/ar_EG 31 Oct 2004 15:54:07 -0000 @@ -9,7 +9,7 @@ title "Arabic language locale for E source "IBM Globalization Center of Competency, Yamato Software Laboratory" address "1623-14, Shimotsuruma, Yamato-shi, Kanagawa-ken, 242-8502, Japan" contact "" -email "bug-glibc@gnu.org" +email "libc-locales@sources.redhat.com" tel "" fax "" language "Arabic" Index: localedata/locales/ar_IN =================================================================== RCS file: /cvs/glibc/libc/localedata/locales/ar_IN,v retrieving revision 1.3 diff -u -3 -p -u -r1.3 ar_IN --- localedata/locales/ar_IN 6 Dec 2003 07:40:37 -0000 1.3 +++ localedata/locales/ar_IN 31 Oct 2004 15:54:07 -0000 @@ -9,7 +9,7 @@ title "Arabic language locale for source "IBM Globalization Center of Competency, Yamato Software Laboratory" address "1623-14, Shimotsuruma, Yamato-shi, Kanagawa-ken, 242-8502, Japan" contact "" -email "bug-glibc@gnu.org" +email "libc-locales@sources.redhat.com" tel "" fax "" language "Arabic" Index: localedata/locales/ar_IQ =================================================================== RCS file: /cvs/glibc/libc/localedata/locales/ar_IQ,v retrieving revision 1.4 diff -u -3 -p -u -r1.4 ar_IQ --- localedata/locales/ar_IQ 4 Dec 2003 04:49:58 -0000 1.4 +++ localedata/locales/ar_IQ 31 Oct 2004 15:54:07 -0000 @@ -9,7 +9,7 @@ title "Arabic language locale for I source "IBM Globalization Center of Competency, Yamato Software Laboratory" address "1623-14, Shimotsuruma, Yamato-shi, Kanagawa-ken, 242-8502, Japan" contact "" -email "bug-glibc@gnu.org" +email "libc-locales@sources.redhat.com" tel "" fax "" language "Arabic" Index: localedata/locales/ar_JO =================================================================== RCS file: /cvs/glibc/libc/localedata/locales/ar_JO,v retrieving revision 1.4 diff -u -3 -p -u -r1.4 ar_JO --- localedata/locales/ar_JO 4 Dec 2003 04:49:58 -0000 1.4 +++ localedata/locales/ar_JO 31 Oct 2004 15:54:07 -0000 @@ -9,7 +9,7 @@ title "Arabic language locale for J source "IBM Globalization Center of Competency, Yamato Software Laboratory" address "1623-14, Shimotsuruma, Yamato-shi, Kanagawa-ken, 242-8502, Japan" contact "" -email "bug-glibc@gnu.org" +email "libc-locales@sources.redhat.com" tel "" fax "" language "Arabic" Index: localedata/locales/ar_KW =================================================================== RCS file: /cvs/glibc/libc/localedata/locales/ar_KW,v retrieving revision 1.4 diff -u -3 -p -u -r1.4 ar_KW --- localedata/locales/ar_KW 4 Dec 2003 04:49:58 -0000 1.4 +++ localedata/locales/ar_KW 31 Oct 2004 15:54:07 -0000 @@ -9,7 +9,7 @@ title "Arabic language locale for K source "IBM Globalization Center of Competency, Yamato Software Laboratory" address "1623-14, Shimotsuruma, Yamato-shi, Kanagawa-ken, 242-8502, Japan" contact "" -email "bug-glibc@gnu.org" +email "libc-locales@sources.redhat.com" tel "" fax "" language "Arabic" Index: localedata/locales/ar_LB =================================================================== RCS file: /cvs/glibc/libc/localedata/locales/ar_LB,v retrieving revision 1.4 diff -u -3 -p -u -r1.4 ar_LB --- localedata/locales/ar_LB 4 Dec 2003 04:49:58 -0000 1.4 +++ localedata/locales/ar_LB 31 Oct 2004 15:54:07 -0000 @@ -9,7 +9,7 @@ title "Arabic language locale for L source "IBM Globalization Center of Competency, Yamato Software Laboratory" address "1623-14, Shimotsuruma, Yamato-shi, Kanagawa-ken, 242-8502, Japan" contact "" -email "bug-glibc@gnu.org" +email "libc-locales@sources.redhat.com" tel "" fax "" language "Arabic" Index: localedata/locales/ar_LY =================================================================== RCS file: /cvs/glibc/libc/localedata/locales/ar_LY,v retrieving revision 1.4 diff -u -3 -p -u -r1.4 ar_LY --- localedata/locales/ar_LY 4 Dec 2003 04:49:58 -0000 1.4 +++ localedata/locales/ar_LY 31 Oct 2004 15:54:07 -0000 @@ -9,7 +9,7 @@ title "Arabic language locale for L source "IBM Globalization Center of Competency, Yamato Software Laboratory" address "1623-14, Shimotsuruma, Yamato-shi, Kanagawa-ken, 242-8502, Japan" contact "" -email "bug-glibc@gnu.org" +email "libc-locales@sources.redhat.com" tel "" fax "" language "Arabic" Index: localedata/locales/ar_MA =================================================================== RCS file: /cvs/glibc/libc/localedata/locales/ar_MA,v retrieving revision 1.4 diff -u -3 -p -u -r1.4 ar_MA --- localedata/locales/ar_MA 4 Dec 2003 04:49:58 -0000 1.4 +++ localedata/locales/ar_MA 31 Oct 2004 15:54:07 -0000 @@ -9,7 +9,7 @@ title "Arabic language locale for M source "IBM Globalization Center of Competency, Yamato Software Laboratory" address "1623-14, Shimotsuruma, Yamato-shi, Kanagawa-ken, 242-8502, Japan" contact "" -email "bug-glibc@gnu.org" +email "libc-locales@sources.redhat.com" tel "" fax "" language "Arabic" Index: localedata/locales/ar_OM =================================================================== RCS file: /cvs/glibc/libc/localedata/locales/ar_OM,v retrieving revision 1.4 diff -u -3 -p -u -r1.4 ar_OM --- localedata/locales/ar_OM 4 Dec 2003 04:49:58 -0000 1.4 +++ localedata/locales/ar_OM 31 Oct 2004 15:54:07 -0000 @@ -9,7 +9,7 @@ title "Arabic language locale for O source "IBM Globalization Center of Competency, Yamato Software Laboratory" address "1623-14, Shimotsuruma, Yamato-shi, Kanagawa-ken, 242-8502, Japan" contact "" -email "bug-glibc@gnu.org" +email "libc-locales@sources.redhat.com" tel "" fax "" language "Arabic" Index: localedata/locales/ar_QA =================================================================== RCS file: /cvs/glibc/libc/localedata/locales/ar_QA,v retrieving revision 1.4 diff -u -3 -p -u -r1.4 ar_QA --- localedata/locales/ar_QA 4 Dec 2003 04:49:58 -0000 1.4 +++ localedata/locales/ar_QA 31 Oct 2004 15:54:07 -0000 @@ -9,7 +9,7 @@ title "Arabic language locale for Q source "IBM Globalization Center of Competency, Yamato Software Laboratory" address "1623-14, Shimotsuruma, Yamato-shi, Kanagawa-ken, 242-8502, Japan" contact "" -email "bug-glibc@gnu.org" +email "libc-locales@sources.redhat.com" tel "" fax "" language "Arabic" Index: localedata/locales/ar_SA =================================================================== RCS file: /cvs/glibc/libc/localedata/locales/ar_SA,v retrieving revision 1.8 diff -u -3 -p -u -r1.8 ar_SA --- localedata/locales/ar_SA 4 Dec 2003 04:49:58 -0000 1.8 +++ localedata/locales/ar_SA 31 Oct 2004 15:54:07 -0000 @@ -13,7 +13,7 @@ title "Arabic locale for Saudi Arab source "" address "" contact "" -email "bug-glibc@gnu.org" +email "libc-locales@sources.redhat.com" tel "" fax "" language "Arabic" Index: localedata/locales/ar_SD =================================================================== RCS file: /cvs/glibc/libc/localedata/locales/ar_SD,v retrieving revision 1.5 diff -u -3 -p -u -r1.5 ar_SD --- localedata/locales/ar_SD 4 Dec 2003 04:49:58 -0000 1.5 +++ localedata/locales/ar_SD 31 Oct 2004 15:54:07 -0000 @@ -9,7 +9,7 @@ title "Arabic language locale for S source "IBM Globalization Center of Competency, Yamato Software Laboratory" address "1623-14, Shimotsuruma, Yamato-shi, Kanagawa-ken, 242-8502, Japan" contact "" -email "bug-glibc@gnu.org" +email "libc-locales@sources.redhat.com" tel "" fax "" language "Arabic" Index: localedata/locales/ar_SY =================================================================== RCS file: /cvs/glibc/libc/localedata/locales/ar_SY,v retrieving revision 1.4 diff -u -3 -p -u -r1.4 ar_SY --- localedata/locales/ar_SY 4 Dec 2003 04:49:58 -0000 1.4 +++ localedata/locales/ar_SY 31 Oct 2004 15:54:07 -0000 @@ -9,7 +9,7 @@ title "Arabic language locale for S source "IBM Globalization Center of Competency, Yamato Software Laboratory" address "1623-14, Shimotsuruma, Yamato-shi, Kanagawa-ken, 242-8502, Japan" contact "" -email "bug-glibc@gnu.org" +email "libc-locales@sources.redhat.com" tel "" fax "" language "Arabic" Index: localedata/locales/ar_TN =================================================================== RCS file: /cvs/glibc/libc/localedata/locales/ar_TN,v retrieving revision 1.5 diff -u -3 -p -u -r1.5 ar_TN --- localedata/locales/ar_TN 23 Mar 2004 07:36:58 -0000 1.5 +++ localedata/locales/ar_TN 31 Oct 2004 15:54:07 -0000 @@ -9,7 +9,7 @@ title "Arabic language locale for T source "IBM Globalization Center of Competency, Yamato Software Laboratory" address "1623-14, Shimotsuruma, Yamato-shi, Kanagawa-ken, 242-8502, Japan" contact "" -email "bug-glibc@gnu.org" +email "libc-locales@sources.redhat.com" tel "" fax "" language "Arabic" Index: localedata/locales/ar_YE =================================================================== RCS file: /cvs/glibc/libc/localedata/locales/ar_YE,v retrieving revision 1.5 diff -u -3 -p -u -r1.5 ar_YE --- localedata/locales/ar_YE 23 Mar 2004 07:36:58 -0000 1.5 +++ localedata/locales/ar_YE 31 Oct 2004 15:54:07 -0000 @@ -9,7 +9,7 @@ title "Arabic language locale for Y source "IBM Globalization Center of Competency, Yamato Software Laboratory" address "1623-14, Shimotsuruma, Yamato-shi, Kanagawa-ken, 242-8502, Japan" contact "" -email "bug-glibc@gnu.org" +email "libc-locales@sources.redhat.com" tel "" fax "" language "Arabic" Index: localedata/locales/be_BY =================================================================== RCS file: /cvs/glibc/libc/localedata/locales/be_BY,v retrieving revision 1.10 diff -u -3 -p -u -r1.10 be_BY --- localedata/locales/be_BY 6 Dec 2003 07:40:37 -0000 1.10 +++ localedata/locales/be_BY 31 Oct 2004 15:54:07 -0000 @@ -20,7 +20,7 @@ title "Belarusian locale for Belaru source "" address "" contact "" -email "bug-glibc@gnu.org" +email "libc-locales@sources.redhat.com" tel "" fax "" language "Belarusian" Index: localedata/locales/bn_IN =================================================================== RCS file: /cvs/glibc/libc/localedata/locales/bn_IN,v retrieving revision 1.3 diff -u -3 -p -u -r1.3 bn_IN --- localedata/locales/bn_IN 6 Dec 2003 07:40:37 -0000 1.3 +++ localedata/locales/bn_IN 31 Oct 2004 15:54:07 -0000 @@ -8,7 +8,7 @@ LC_IDENTIFICATION title "Bengali language locale for India" source "IBM Globalization Center of Competency, Yamato Software Laboratory" address "1623-14, Shimotsuruma, Yamato-shi, Kanagawa-ken, 242-8502, Japan" -email "bug-glibc@gnu.org" +email "libc-locales@sources.redhat.com" tel "" fax "" language "Bengali" Index: localedata/locales/br_FR@euro =================================================================== RCS file: /cvs/glibc/libc/localedata/locales/br_FR@euro,v retrieving revision 1.1 diff -u -3 -p -u -r1.1 br_FR@euro --- localedata/locales/br_FR@euro 28 Feb 2002 08:52:12 -0000 1.1 +++ localedata/locales/br_FR@euro 31 Oct 2004 15:54:07 -0000 @@ -15,7 +15,7 @@ LC_IDENTIFICATION title "Breton locale for France with Euro" source "Free Software Foundation, Inc." address "59 Temple Place - Suite 330, Boston, MA 02111-1307, USA" -email "bug-glibc@gnu.org" +email "libc-locales@sources.redhat.com" tel "" fax "" language "Breton" Index: localedata/locales/ca_ES =================================================================== RCS file: /cvs/glibc/libc/localedata/locales/ca_ES,v retrieving revision 1.13 diff -u -3 -p -u -r1.13 ca_ES --- localedata/locales/ca_ES 23 Mar 2004 07:36:58 -0000 1.13 +++ localedata/locales/ca_ES 31 Oct 2004 15:54:07 -0000 @@ -23,7 +23,7 @@ title "Catalan locale for Catalonia source "RAP" address "" contact "" -email "bug-glibc@gnu.org" +email "libc-locales@sources.redhat.com" tel "" fax "" language "Catalan" Index: localedata/locales/ca_ES@euro =================================================================== RCS file: /cvs/glibc/libc/localedata/locales/ca_ES@euro,v retrieving revision 1.4 diff -u -3 -p -u -r1.4 ca_ES@euro --- localedata/locales/ca_ES@euro 28 Feb 2002 09:07:36 -0000 1.4 +++ localedata/locales/ca_ES@euro 31 Oct 2004 15:54:07 -0000 @@ -18,7 +18,7 @@ title "Catalan locale for Catalonia source "Free Software Foundation, Inc." address "59 Temple Place - Suite 330, Boston, MA 02111-1307, USA" contact "" -email "bug-glibc@gnu.org" +email "libc-locales@sources.redhat.com" tel "" fax "" language "Catalan" Index: localedata/locales/cs_CZ =================================================================== RCS file: /cvs/glibc/libc/localedata/locales/cs_CZ,v retrieving revision 1.16 diff -u -3 -p -u -r1.16 cs_CZ --- localedata/locales/cs_CZ 4 Dec 2003 04:49:58 -0000 1.16 +++ localedata/locales/cs_CZ 31 Oct 2004 15:54:07 -0000 @@ -109,7 +109,7 @@ title "Czech locale for the Czech R source "Free Software Foundation, Inc." address "59 Temple Place - Suite 330, Boston, MA 02111-1307, USA" contact "" -email "bug-glibc@gnu.org" +email "libc-locales@sources.redhat.com" tel "" fax "" language "Czech" Index: localedata/locales/da_DK =================================================================== RCS file: /cvs/glibc/libc/localedata/locales/da_DK,v retrieving revision 1.12 diff -u -3 -p -u -r1.12 da_DK --- localedata/locales/da_DK 6 Dec 2003 07:40:37 -0000 1.12 +++ localedata/locales/da_DK 31 Oct 2004 15:54:07 -0000 @@ -32,7 +32,7 @@ title "Danish locale for Denmark" source "Danish Standards Association" address "Kollegievej 6, DK-2920 Charlottenlund, Danmark" contact "" -email "bug-glibc@gnu.org" +email "libc-locales@sources.redhat.com" tel "" fax "" language "Danish" Index: localedata/locales/de_AT =================================================================== RCS file: /cvs/glibc/libc/localedata/locales/de_AT,v retrieving revision 1.9 diff -u -3 -p -u -r1.9 de_AT --- localedata/locales/de_AT 6 Dec 2003 07:40:37 -0000 1.9 +++ localedata/locales/de_AT 31 Oct 2004 15:54:07 -0000 @@ -22,7 +22,7 @@ title "German locale for Austria" source "O:sterreiches Normungsinstitut" address "Postfach 130, A-1021 Wien" contact "Gerhard Budin" -email "bug-glibc@gnu.org" +email "libc-locales@sources.redhat.com" tel "" fax "" language "German" Index: localedata/locales/de_AT@euro =================================================================== RCS file: /cvs/glibc/libc/localedata/locales/de_AT@euro,v retrieving revision 1.4 diff -u -3 -p -u -r1.4 de_AT@euro --- localedata/locales/de_AT@euro 28 Feb 2002 09:07:36 -0000 1.4 +++ localedata/locales/de_AT@euro 31 Oct 2004 15:54:07 -0000 @@ -22,7 +22,7 @@ title "German locale for Austria wi source "O:sterreiches Normungsinstitut" address "Postfach 130, A-1021 Wien" contact "Gerhard Budin" -email "bug-glibc@gnu.org" +email "libc-locales@sources.redhat.com" tel "" fax "" language "German" Index: localedata/locales/de_BE =================================================================== RCS file: /cvs/glibc/libc/localedata/locales/de_BE,v retrieving revision 1.9 diff -u -3 -p -u -r1.9 de_BE --- localedata/locales/de_BE 6 Dec 2003 07:40:37 -0000 1.9 +++ localedata/locales/de_BE 31 Oct 2004 15:54:07 -0000 @@ -24,7 +24,7 @@ title "German locale for Belgium" source "RAP" address "Sankt Jrgens Alle 8, DK-1615 Kbenhavn V, Danmark" contact "" -email "bug-glibc@gnu.org" +email "libc-locales@sources.redhat.com" tel "" fax "" language "German" Index: localedata/locales/de_BE@euro =================================================================== RCS file: /cvs/glibc/libc/localedata/locales/de_BE@euro,v retrieving revision 1.3 diff -u -3 -p -u -r1.3 de_BE@euro --- localedata/locales/de_BE@euro 28 Feb 2002 09:07:36 -0000 1.3 +++ localedata/locales/de_BE@euro 31 Oct 2004 15:54:07 -0000 @@ -16,7 +16,7 @@ title "German locale for Belgium wi source "Free Software Foundation, Inc." address "59 Temple Place - Suite 330, Boston, MA 02111-1307, USA" contact "" -email "bug-glibc@gnu.org" +email "libc-locales@sources.redhat.com" tel "" fax "" language "German" Index: localedata/locales/de_CH =================================================================== RCS file: /cvs/glibc/libc/localedata/locales/de_CH,v retrieving revision 1.8 diff -u -3 -p -u -r1.8 de_CH --- localedata/locales/de_CH 4 Dec 2003 04:49:58 -0000 1.8 +++ localedata/locales/de_CH 31 Oct 2004 15:54:07 -0000 @@ -24,7 +24,7 @@ title "German locale for Switzerlan source "RAP" address "Sankt Jrgens Alle 8, DK-1615 Kbenhavn V, Danmark" contact "" -email "bug-glibc@gnu.org" +email "libc-locales@sources.redhat.com" tel "" fax "" language "German" Index: localedata/locales/de_DE =================================================================== RCS file: /cvs/glibc/libc/localedata/locales/de_DE,v retrieving revision 1.16 diff -u -3 -p -u -r1.16 de_DE --- localedata/locales/de_DE 6 May 2003 23:41:43 -0000 1.16 +++ localedata/locales/de_DE 31 Oct 2004 15:54:07 -0000 @@ -8,7 +8,7 @@ title "German locale for Germany" source "Free Software Foundation, Inc." address "59 Temple Place - Suite 330, Boston, MA 02111-1307, USA" contact "" -email "bug-glibc@gnu.org" +email "libc-locales@sources.redhat.com" tel "" fax "" language "German" Index: localedata/locales/de_DE@euro =================================================================== RCS file: /cvs/glibc/libc/localedata/locales/de_DE@euro,v retrieving revision 1.3 diff -u -3 -p -u -r1.3 de_DE@euro --- localedata/locales/de_DE@euro 28 Feb 2002 09:07:37 -0000 1.3 +++ localedata/locales/de_DE@euro 31 Oct 2004 15:54:07 -0000 @@ -8,7 +8,7 @@ title "German locale for Germany wi source "Free Software Foundation, Inc." address "59 Temple Place - Suite 330, Boston, MA 02111-1307, USA" contact "" -email "bug-glibc@gnu.org" +email "libc-locales@sources.redhat.com" tel "" fax "" language "German" Index: localedata/locales/de_LU =================================================================== RCS file: /cvs/glibc/libc/localedata/locales/de_LU,v retrieving revision 1.8 diff -u -3 -p -u -r1.8 de_LU --- localedata/locales/de_LU 4 Dec 2003 04:49:58 -0000 1.8 +++ localedata/locales/de_LU 31 Oct 2004 15:54:07 -0000 @@ -24,7 +24,7 @@ title "German locale for Luxemburg" source "RAP" address "Sankt Jrgens Alle 8, DK-1615 Kbenhavn V, Danmark" contact "" -email "bug-glibc@gnu.org" +email "libc-locales@sources.redhat.com" tel "" fax "" language "German" Index: localedata/locales/de_LU@euro =================================================================== RCS file: /cvs/glibc/libc/localedata/locales/de_LU@euro,v retrieving revision 1.4 diff -u -3 -p -u -r1.4 de_LU@euro --- localedata/locales/de_LU@euro 28 Feb 2002 09:07:37 -0000 1.4 +++ localedata/locales/de_LU@euro 31 Oct 2004 15:54:07 -0000 @@ -16,7 +16,7 @@ title "German locale for Luxemburg source "Free Software Foundation, Inc." address "59 Temple Place - Suite 330, Boston, MA 02111-1307, USA" contact "" -email "bug-glibc@gnu.org" +email "libc-locales@sources.redhat.com" tel "" fax "" language "German" Index: localedata/locales/el_GR =================================================================== RCS file: /cvs/glibc/libc/localedata/locales/el_GR,v retrieving revision 1.17 diff -u -3 -p -u -r1.17 el_GR --- localedata/locales/el_GR 6 Dec 2003 07:40:37 -0000 1.17 +++ localedata/locales/el_GR 31 Oct 2004 15:54:07 -0000 @@ -23,7 +23,7 @@ title "Greek locale for Greece" source "RAP" address "Sankt Jorgens Alle 8, DK-1615 Kobenhavn V, Danmark" contact "" -email "bug-glibc@gnu.org" +email "libc-locales@sources.redhat.com" tel "" fax "" language "Greek" Index: localedata/locales/el_GR@euro =================================================================== RCS file: /cvs/glibc/libc/localedata/locales/el_GR@euro,v retrieving revision 1.2 diff -u -3 -p -u -r1.2 el_GR@euro --- localedata/locales/el_GR@euro 28 Feb 2002 09:07:38 -0000 1.2 +++ localedata/locales/el_GR@euro 31 Oct 2004 15:54:07 -0000 @@ -6,7 +6,7 @@ title "Greek locale for Greece with source "Free Software Foundation, Inc." address "59 Temple Place - Suite 330, Boston, MA 02111-1307, USA" contact "" -email "bug-glibc@gnu.org" +email "libc-locales@sources.redhat.com" tel "" fax "" language "Greek" Index: localedata/locales/en_AU =================================================================== RCS file: /cvs/glibc/libc/localedata/locales/en_AU,v retrieving revision 1.9 diff -u -3 -p -u -r1.9 en_AU --- localedata/locales/en_AU 6 Dec 2003 07:40:37 -0000 1.9 +++ localedata/locales/en_AU 31 Oct 2004 15:54:07 -0000 @@ -24,7 +24,7 @@ title "English locale for Australia source "RAP" address "Sankt Jrgens Alle 8, DK-1615 Kbenhavn V, Danmark" contact "" -email "bug-glibc@gnu.org" +email "libc-locales@sources.redhat.com" tel "" fax "" language "English" Index: localedata/locales/en_BW =================================================================== RCS file: /cvs/glibc/libc/localedata/locales/en_BW,v retrieving revision 1.5 diff -u -3 -p -u -r1.5 en_BW --- localedata/locales/en_BW 6 Dec 2003 07:40:37 -0000 1.5 +++ localedata/locales/en_BW 31 Oct 2004 15:54:07 -0000 @@ -21,7 +21,7 @@ title "English locale for Botswana" source "RAP" address "" contact "" -email "bug-glibc@gnu.org" +email "libc-locales@sources.redhat.com" tel "" fax "" language "English" Index: localedata/locales/en_CA =================================================================== RCS file: /cvs/glibc/libc/localedata/locales/en_CA,v retrieving revision 1.12 diff -u -3 -p -u -r1.12 en_CA --- localedata/locales/en_CA 6 Dec 2003 07:40:37 -0000 1.12 +++ localedata/locales/en_CA 31 Oct 2004 15:54:08 -0000 @@ -26,7 +26,7 @@ title "English locale for Canada" source "RAP" address "Sankt Jrgens Alle 8, DK-1615 Kbenhavn V, Danmark" contact "" -email "bug-glibc@gnu.org" +email "libc-locales@sources.redhat.com" tel "" fax "" language "English" Index: localedata/locales/en_DK =================================================================== RCS file: /cvs/glibc/libc/localedata/locales/en_DK,v retrieving revision 1.13 diff -u -3 -p -u -r1.13 en_DK --- localedata/locales/en_DK 6 Dec 2003 07:40:37 -0000 1.13 +++ localedata/locales/en_DK 31 Oct 2004 15:54:08 -0000 @@ -29,7 +29,7 @@ title "English locale for Denmark" source "Danish Standards Association" address "Kollegievej 6, DK-2920 Charlottenlund, Danmark" contact "" -email "bug-glibc@gnu.org" +email "libc-locales@sources.redhat.com" tel "" fax "" language "English" Index: localedata/locales/en_GB =================================================================== RCS file: /cvs/glibc/libc/localedata/locales/en_GB,v retrieving revision 1.10 diff -u -3 -p -u -r1.10 en_GB --- localedata/locales/en_GB 4 Dec 2003 04:49:58 -0000 1.10 +++ localedata/locales/en_GB 31 Oct 2004 15:54:08 -0000 @@ -24,7 +24,7 @@ title "English locale for Britain" source "RAP" address "Sankt Jrgens Alle 8, DK-1615 Kbenhavn V, Danmark" contact "Keld Simonsen" -email "bug-glibc@gnu.org" +email "libc-locales@sources.redhat.com" tel "" fax "" language "English" Index: localedata/locales/en_HK =================================================================== RCS file: /cvs/glibc/libc/localedata/locales/en_HK,v retrieving revision 1.3 diff -u -3 -p -u -r1.3 en_HK --- localedata/locales/en_HK 4 Dec 2003 04:49:58 -0000 1.3 +++ localedata/locales/en_HK 31 Oct 2004 15:54:08 -0000 @@ -13,7 +13,7 @@ title "English locale for Hong Kong source "IBM Globalization Center of Competency, Yamato Software Laboratory" address "1623-14, Shimotsuruma, Yamato-shi, Kanagawa-ken, 242-8502, Japan" contact "" -email "bug-glibc@gnu.org" +email "libc-locales@sources.redhat.com" tel "" fax "" language "English" Index: localedata/locales/en_IE =================================================================== RCS file: /cvs/glibc/libc/localedata/locales/en_IE,v retrieving revision 1.8 diff -u -3 -p -u -r1.8 en_IE --- localedata/locales/en_IE 4 Dec 2003 04:49:58 -0000 1.8 +++ localedata/locales/en_IE 31 Oct 2004 15:54:08 -0000 @@ -24,7 +24,7 @@ title "English locale for Ireland" source "RAP" address "Sankt Jrgens Alle 8, DK-1615 Kbenhavn V, Danmark" contact "" -email "bug-glibc@gnu.org" +email "libc-locales@sources.redhat.com" tel "" fax "" language "English" Index: localedata/locales/en_IE@euro =================================================================== RCS file: /cvs/glibc/libc/localedata/locales/en_IE@euro,v retrieving revision 1.3 diff -u -3 -p -u -r1.3 en_IE@euro --- localedata/locales/en_IE@euro 28 Feb 2002 09:07:38 -0000 1.3 +++ localedata/locales/en_IE@euro 31 Oct 2004 15:54:08 -0000 @@ -16,7 +16,7 @@ title "English locale for Ireland w source "Free Software Foundation, Inc." address "59 Temple Place - Suite 330, Boston, MA 02111-1307, USA" contact "" -email "bug-glibc@gnu.org" +email "libc-locales@sources.redhat.com" tel "" fax "" language "English" Index: localedata/locales/en_IN =================================================================== RCS file: /cvs/glibc/libc/localedata/locales/en_IN,v retrieving revision 1.4 diff -u -3 -p -u -r1.4 en_IN --- localedata/locales/en_IN 6 Dec 2003 07:40:37 -0000 1.4 +++ localedata/locales/en_IN 31 Oct 2004 15:54:08 -0000 @@ -10,7 +10,7 @@ title "English language locale for source "IBM Globalization Center of Competency, Yamato Software Laboratory" address "1623-14, Shimotsuruma, Yamato-shi, Kanagawa-ken, 242-8502, Japan" contact "" -email "bug-glibc@gnu.org" +email "libc-locales@sources.redhat.com" tel "" fax "" language "English" Index: localedata/locales/en_NZ =================================================================== RCS file: /cvs/glibc/libc/localedata/locales/en_NZ,v retrieving revision 1.7 diff -u -3 -p -u -r1.7 en_NZ --- localedata/locales/en_NZ 4 Dec 2003 04:49:58 -0000 1.7 +++ localedata/locales/en_NZ 31 Oct 2004 15:54:08 -0000 @@ -24,7 +24,7 @@ title "English locale for New Zeala source "RAP" address "Sankt Jrgens Alle 8, DK-1615 Kbenhavn V, Danmark" contact "" -email "bug-glibc@gnu.org" +email "libc-locales@sources.redhat.com" tel "" fax "" language "English" Index: localedata/locales/en_PH =================================================================== RCS file: /cvs/glibc/libc/localedata/locales/en_PH,v retrieving revision 1.2 diff -u -3 -p -u -r1.2 en_PH --- localedata/locales/en_PH 4 Dec 2003 04:49:58 -0000 1.2 +++ localedata/locales/en_PH 31 Oct 2004 15:54:08 -0000 @@ -12,7 +12,7 @@ title "English language locale for source "IBM Globalization Center of Competency, Yamato Software Laboratory" address "1623-14, Shimotsuruma, Yamato-shi, Kanagawa-ken, 242-8502, Japan" contact "" -email "bug-glibc@gnu.org" +email "libc-locales@sources.redhat.com" tel "" fax "" language "English" Index: localedata/locales/en_SG =================================================================== RCS file: /cvs/glibc/libc/localedata/locales/en_SG,v retrieving revision 1.2 diff -u -3 -p -u -r1.2 en_SG --- localedata/locales/en_SG 4 Dec 2003 04:49:58 -0000 1.2 +++ localedata/locales/en_SG 31 Oct 2004 15:54:08 -0000 @@ -10,7 +10,7 @@ title "English language locale for source "IBM Globalization Center of Competency, Yamato Software Laboratory" address "1623-14, Shimotsuruma, Yamato-shi, Kanagawa-ken, 242-8502, Japan" contact "" -email "bug-glibc@gnu.org" +email "libc-locales@sources.redhat.com" tel "" fax "" language "English" Index: localedata/locales/en_US =================================================================== RCS file: /cvs/glibc/libc/localedata/locales/en_US,v retrieving revision 1.7 diff -u -3 -p -u -r1.7 en_US --- localedata/locales/en_US 5 Dec 2003 09:48:09 -0000 1.7 +++ localedata/locales/en_US 31 Oct 2004 15:54:08 -0000 @@ -8,7 +8,7 @@ title "English locale for the USA" source "Free Software Foundation, Inc." address "59 Temple Place - Suite 330, Boston, MA 02111-1307, USA" contact "" -email "bug-glibc@gnu.org" +email "libc-locales@sources.redhat.com" tel "" fax "" language "English" Index: localedata/locales/en_ZW =================================================================== RCS file: /cvs/glibc/libc/localedata/locales/en_ZW,v retrieving revision 1.4 diff -u -3 -p -u -r1.4 en_ZW --- localedata/locales/en_ZW 4 Dec 2003 04:49:58 -0000 1.4 +++ localedata/locales/en_ZW 31 Oct 2004 15:54:08 -0000 @@ -21,7 +21,7 @@ title "English locale for Zimbabwe" source "RAP" address "" contact "" -email "bug-glibc@gnu.org" +email "libc-locales@sources.redhat.com" tel "" fax "" language "English" Index: localedata/locales/es_AR =================================================================== RCS file: /cvs/glibc/libc/localedata/locales/es_AR,v retrieving revision 1.12 diff -u -3 -p -u -r1.12 es_AR --- localedata/locales/es_AR 6 Dec 2003 07:40:37 -0000 1.12 +++ localedata/locales/es_AR 31 Oct 2004 15:54:08 -0000 @@ -25,7 +25,7 @@ title "Spanish locale for Argentina source "RAP" address "Sankt Jrgens Alle 8, DK-1615 Kbenhavn V, Danmark" contact "" -email "bug-glibc@gnu.org" +email "libc-locales@sources.redhat.com" tel "" fax "" language "Spanish" Index: localedata/locales/es_BO =================================================================== RCS file: /cvs/glibc/libc/localedata/locales/es_BO,v retrieving revision 1.12 diff -u -3 -p -u -r1.12 es_BO --- localedata/locales/es_BO 6 Dec 2003 07:40:37 -0000 1.12 +++ localedata/locales/es_BO 31 Oct 2004 15:54:08 -0000 @@ -25,7 +25,7 @@ title "Spanish locale for Bolivia" source "RAP" address "Sankt Jrgens Alle 8, DK-1615 Kbenhavn V, Danmark" contact "" -email "bug-glibc@gnu.org" +email "libc-locales@sources.redhat.com" tel "" fax "" language "Spanish" Index: localedata/locales/es_CL =================================================================== RCS file: /cvs/glibc/libc/localedata/locales/es_CL,v retrieving revision 1.12 diff -u -3 -p -u -r1.12 es_CL --- localedata/locales/es_CL 6 Dec 2003 07:40:37 -0000 1.12 +++ localedata/locales/es_CL 31 Oct 2004 15:54:08 -0000 @@ -25,7 +25,7 @@ title "Spanish locale for Chile" source "RAP" address "Sankt Jrgens Alle 8, DK-1615 Kbenhavn V, Danmark" contact "" -email "bug-glibc@gnu.org" +email "libc-locales@sources.redhat.com" tel "" fax "" language "Spanish" Index: localedata/locales/es_CO =================================================================== RCS file: /cvs/glibc/libc/localedata/locales/es_CO,v retrieving revision 1.12 diff -u -3 -p -u -r1.12 es_CO --- localedata/locales/es_CO 6 Dec 2003 07:40:37 -0000 1.12 +++ localedata/locales/es_CO 31 Oct 2004 15:54:08 -0000 @@ -25,7 +25,7 @@ title "Spanish locale for Colombia" source "RAP" address "Sankt Jrgens Alle 8, DK-1615 Kbenhavn V, Danmark" contact "" -email "bug-glibc@gnu.org" +email "libc-locales@sources.redhat.com" tel "" fax "" language "Spanish" Index: localedata/locales/es_CR =================================================================== RCS file: /cvs/glibc/libc/localedata/locales/es_CR,v retrieving revision 1.4 diff -u -3 -p -u -r1.4 es_CR --- localedata/locales/es_CR 6 Dec 2003 07:40:37 -0000 1.4 +++ localedata/locales/es_CR 31 Oct 2004 15:54:08 -0000 @@ -16,7 +16,7 @@ title "Spanish locale for Costa Ric source "Free Software Foundation, Inc." address "59 Temple Place - Suite 330, Boston, MA 02111-1307, USA" contact "" -email "bug-glibc@gnu.org" +email "libc-locales@sources.redhat.com" tel "" fax "" language "Spanish" Index: localedata/locales/es_DO =================================================================== RCS file: /cvs/glibc/libc/localedata/locales/es_DO,v retrieving revision 1.13 diff -u -3 -p -u -r1.13 es_DO --- localedata/locales/es_DO 6 Dec 2003 07:40:37 -0000 1.13 +++ localedata/locales/es_DO 31 Oct 2004 15:54:08 -0000 @@ -25,7 +25,7 @@ title "Spanish locale for Dominican source "RAP" address "Sankt Jrgens Alle 8, DK-1615 Kbenhavn V, Danmark" contact "" -email "bug-glibc@gnu.org" +email "libc-locales@sources.redhat.com" tel "" fax "" language "Spanish" Index: localedata/locales/es_EC =================================================================== RCS file: /cvs/glibc/libc/localedata/locales/es_EC,v retrieving revision 1.14 diff -u -3 -p -u -r1.14 es_EC --- localedata/locales/es_EC 6 Dec 2003 07:40:37 -0000 1.14 +++ localedata/locales/es_EC 31 Oct 2004 15:54:08 -0000 @@ -25,7 +25,7 @@ title "Spanish locale for Ecuador" source "RAP" address "Sankt Jrgens Alle 8, DK-1615 Kbenhavn V, Danmark" contact "" -email "bug-glibc@gnu.org" +email "libc-locales@sources.redhat.com" tel "" fax "" language "Spanish" Index: localedata/locales/es_ES =================================================================== RCS file: /cvs/glibc/libc/localedata/locales/es_ES,v retrieving revision 1.13 diff -u -3 -p -u -r1.13 es_ES --- localedata/locales/es_ES 4 Dec 2003 04:49:57 -0000 1.13 +++ localedata/locales/es_ES 31 Oct 2004 15:54:08 -0000 @@ -25,7 +25,7 @@ title "Spanish locale for Spain" source "RAP" address "Sankt Jrgens Alle 8, DK-1615 Kbenhavn V, Danmark" contact "" -email "bug-glibc@gnu.org" +email "libc-locales@sources.redhat.com" tel "" fax "" language "Spanish" Index: localedata/locales/es_ES@euro =================================================================== RCS file: /cvs/glibc/libc/localedata/locales/es_ES@euro,v retrieving revision 1.3 diff -u -3 -p -u -r1.3 es_ES@euro --- localedata/locales/es_ES@euro 28 Feb 2002 09:07:38 -0000 1.3 +++ localedata/locales/es_ES@euro 31 Oct 2004 15:54:08 -0000 @@ -17,7 +17,7 @@ title "Spanish locale for Spain wit source "Free Software Foundation, Inc." address "59 Temple Place - Suite 330, Boston, MA 02111-1307, USA" contact "" -email "bug-glibc@gnu.org" +email "libc-locales@sources.redhat.com" tel "" fax "" language "Spanish" Index: localedata/locales/es_GT =================================================================== RCS file: /cvs/glibc/libc/localedata/locales/es_GT,v retrieving revision 1.12 diff -u -3 -p -u -r1.12 es_GT --- localedata/locales/es_GT 6 Dec 2003 07:40:37 -0000 1.12 +++ localedata/locales/es_GT 31 Oct 2004 15:54:08 -0000 @@ -25,7 +25,7 @@ title "Spanish locale for Guatemala source "RAP" address "Sankt Jrgens Alle 8, DK-1615 Kbenhavn V, Danmark" contact "" -email "bug-glibc@gnu.org" +email "libc-locales@sources.redhat.com" tel "" fax "" language "Spanish" Index: localedata/locales/es_HN =================================================================== RCS file: /cvs/glibc/libc/localedata/locales/es_HN,v retrieving revision 1.12 diff -u -3 -p -u -r1.12 es_HN --- localedata/locales/es_HN 6 Dec 2003 07:40:37 -0000 1.12 +++ localedata/locales/es_HN 31 Oct 2004 15:54:08 -0000 @@ -25,7 +25,7 @@ title "Spanish locale for Honduras" source "RAP" address "Sankt Jrgens Alle 8, DK-1615 Kbenhavn V, Danmark" contact "" -email "bug-glibc@gnu.org" +email "libc-locales@sources.redhat.com" tel "" fax "" language "Spanish" Index: localedata/locales/es_MX =================================================================== RCS file: /cvs/glibc/libc/localedata/locales/es_MX,v retrieving revision 1.12 diff -u -3 -p -u -r1.12 es_MX --- localedata/locales/es_MX 4 Dec 2003 04:49:57 -0000 1.12 +++ localedata/locales/es_MX 31 Oct 2004 15:54:08 -0000 @@ -25,7 +25,7 @@ title "Spanish locale for Mexico" source "RAP" address "Sankt Jrgens Alle 8, DK-1615 Kbenhavn V, Danmark" contact "" -email "bug-glibc@gnu.org" +email "libc-locales@sources.redhat.com" tel "" fax "" language "Spanish" Index: localedata/locales/es_NI =================================================================== RCS file: /cvs/glibc/libc/localedata/locales/es_NI,v retrieving revision 1.3 diff -u -3 -p -u -r1.3 es_NI --- localedata/locales/es_NI 4 Dec 2003 04:49:57 -0000 1.3 +++ localedata/locales/es_NI 31 Oct 2004 15:54:08 -0000 @@ -16,7 +16,7 @@ title "Spanish locale for Nicaragua source "Free Software Foundation, Inc." address "59 Temple Place - Suite 330, Boston, MA 02111-1307, USA" contact "" -email "bug-glibc@gnu.org" +email "libc-locales@sources.redhat.com" tel "" fax "" language "Spanish" Index: localedata/locales/es_PA =================================================================== RCS file: /cvs/glibc/libc/localedata/locales/es_PA,v retrieving revision 1.11 diff -u -3 -p -u -r1.11 es_PA --- localedata/locales/es_PA 4 Dec 2003 04:49:57 -0000 1.11 +++ localedata/locales/es_PA 31 Oct 2004 15:54:08 -0000 @@ -25,7 +25,7 @@ title "Spanish locale for Panama" source "RAP" address "Sankt Jrgens Alle 8, DK-1615 Kbenhavn V, Danmark" contact "" -email "bug-glibc@gnu.org" +email "libc-locales@sources.redhat.com" tel "" fax "" language "Spanish" Index: localedata/locales/es_PE =================================================================== RCS file: /cvs/glibc/libc/localedata/locales/es_PE,v retrieving revision 1.12 diff -u -3 -p -u -r1.12 es_PE --- localedata/locales/es_PE 4 Dec 2003 04:49:57 -0000 1.12 +++ localedata/locales/es_PE 31 Oct 2004 15:54:08 -0000 @@ -25,7 +25,7 @@ title "Spanish locale for Peru" source "RAP" address "Sankt Jrgens Alle 8, DK-1615 Kbenhavn V, Danmark" contact "" -email "bug-glibc@gnu.org" +email "libc-locales@sources.redhat.com" tel "" fax "" language "Spanish" Index: localedata/locales/es_PR =================================================================== RCS file: /cvs/glibc/libc/localedata/locales/es_PR,v retrieving revision 1.4 diff -u -3 -p -u -r1.4 es_PR --- localedata/locales/es_PR 4 Dec 2003 04:49:57 -0000 1.4 +++ localedata/locales/es_PR 31 Oct 2004 15:54:08 -0000 @@ -16,7 +16,7 @@ title "Spanish locale for Puerto Ri source "Free Software Foundation, Inc." address "59 Temple Place - Suite 330, Boston, MA 02111-1307, USA" contact "" -email "bug-glibc@gnu.org" +email "libc-locales@sources.redhat.com" tel "" fax "" language "Spanish" Index: localedata/locales/es_PY =================================================================== RCS file: /cvs/glibc/libc/localedata/locales/es_PY,v retrieving revision 1.11 diff -u -3 -p -u -r1.11 es_PY --- localedata/locales/es_PY 4 Dec 2003 04:49:57 -0000 1.11 +++ localedata/locales/es_PY 31 Oct 2004 15:54:08 -0000 @@ -25,7 +25,7 @@ title "Spanish locale for Paraguay" source "RAP" address "Sankt Jrgens Alle 8, DK-1615 Kbenhavn V, Danmark" contact "" -email "bug-glibc@gnu.org" +email "libc-locales@sources.redhat.com" tel "" fax "" language "Spanish" Index: localedata/locales/es_SV =================================================================== RCS file: /cvs/glibc/libc/localedata/locales/es_SV,v retrieving revision 1.12 diff -u -3 -p -u -r1.12 es_SV --- localedata/locales/es_SV 6 Dec 2003 07:40:37 -0000 1.12 +++ localedata/locales/es_SV 31 Oct 2004 15:54:08 -0000 @@ -25,7 +25,7 @@ title "Spanish locale for El Salvad source "RAP" address "Sankt Jrgens Alle 8, DK-1615 Kbenhavn V, Danmark" contact "" -email "bug-glibc@gnu.org" +email "libc-locales@sources.redhat.com" tel "" fax "" language "Spanish" Index: localedata/locales/es_US =================================================================== RCS file: /cvs/glibc/libc/localedata/locales/es_US,v retrieving revision 1.11 diff -u -3 -p -u -r1.11 es_US --- localedata/locales/es_US 4 Dec 2003 04:49:57 -0000 1.11 +++ localedata/locales/es_US 31 Oct 2004 15:54:08 -0000 @@ -25,7 +25,7 @@ title "Spanish locale for the USA" source "RAP" address "Sankt Jrgens Alle 8, DK-1615 Kbenhavn V, Danmark" contact "" -email "bug-glibc@gnu.org" +email "libc-locales@sources.redhat.com" tel "" fax "" language "Spanish" Index: localedata/locales/es_UY =================================================================== RCS file: /cvs/glibc/libc/localedata/locales/es_UY,v retrieving revision 1.11 diff -u -3 -p -u -r1.11 es_UY --- localedata/locales/es_UY 4 Dec 2003 04:49:57 -0000 1.11 +++ localedata/locales/es_UY 31 Oct 2004 15:54:08 -0000 @@ -25,7 +25,7 @@ title "Spanish locale for Uruguay" source "RAP" address "Sankt Jrgens Alle 8, DK-1615 Kbenhavn V, Danmark" contact "" -email "bug-glibc@gnu.org" +email "libc-locales@sources.redhat.com" tel "" fax "" language "Spanish" Index: localedata/locales/es_VE =================================================================== RCS file: /cvs/glibc/libc/localedata/locales/es_VE,v retrieving revision 1.11 diff -u -3 -p -u -r1.11 es_VE --- localedata/locales/es_VE 4 Dec 2003 04:49:57 -0000 1.11 +++ localedata/locales/es_VE 31 Oct 2004 15:54:08 -0000 @@ -25,7 +25,7 @@ title "Spanish locale for Venezuela source "RAP" address "Sankt Jrgens Alle 8, DK-1615 Kbenhavn V, Danmark" contact "" -email "bug-glibc@gnu.org" +email "libc-locales@sources.redhat.com" tel "" fax "" language "Spanish" Index: localedata/locales/et_EE =================================================================== RCS file: /cvs/glibc/libc/localedata/locales/et_EE,v retrieving revision 1.12 diff -u -3 -p -u -r1.12 et_EE --- localedata/locales/et_EE 17 Apr 2004 22:19:06 -0000 1.12 +++ localedata/locales/et_EE 31 Oct 2004 15:54:09 -0000 @@ -32,7 +32,7 @@ title "Estonian locale for Estonia" source "Estonian Informatics Fund" address "To-nisma:gi 8, Tallinn, EE0100 Estonia" contact "" -email "bug-glibc@gnu.org" +email "libc-locales@sources.redhat.com" tel "" fax "" language "Estonian" Index: localedata/locales/eu_ES =================================================================== RCS file: /cvs/glibc/libc/localedata/locales/eu_ES,v retrieving revision 1.10 diff -u -3 -p -u -r1.10 eu_ES --- localedata/locales/eu_ES 4 Dec 2003 04:49:57 -0000 1.10 +++ localedata/locales/eu_ES 31 Oct 2004 15:54:09 -0000 @@ -28,7 +28,7 @@ title "Basque locale for Spain" source "RAP" address "Sankt Jrgens Alle 8, DK-1615 Kbenhavn V, Danmark" contact "" -email "bug-glibc@gnu.org" +email "libc-locales@sources.redhat.com" tel "" fax "" language "Basque" Index: localedata/locales/eu_ES@euro =================================================================== RCS file: /cvs/glibc/libc/localedata/locales/eu_ES@euro,v retrieving revision 1.1 diff -u -3 -p -u -r1.1 eu_ES@euro --- localedata/locales/eu_ES@euro 21 Aug 2000 17:59:49 -0000 1.1 +++ localedata/locales/eu_ES@euro 31 Oct 2004 15:54:09 -0000 @@ -17,7 +17,7 @@ title "Basque language locale for S source "Free Software Foundation, Inc." address "59 Temple Place - Suite 330, Boston, MA 02111-1307, USA" contact "" -email "bug-glibc@gnu.org" +email "libc-locales@sources.redhat.com" tel "" fax "" language "Basque" Index: localedata/locales/fi_FI =================================================================== RCS file: /cvs/glibc/libc/localedata/locales/fi_FI,v retrieving revision 1.16 diff -u -3 -p -u -r1.16 fi_FI --- localedata/locales/fi_FI 6 Dec 2003 07:40:37 -0000 1.16 +++ localedata/locales/fi_FI 31 Oct 2004 15:54:09 -0000 @@ -29,7 +29,7 @@ title "Finnish locale for Finland" source "RAP" address "Sankt Jrgens Alle 8, DK-1615 Kbenhavn V, Danmark" contact "" -email "bug-glibc@gnu.org" +email "libc-locales@sources.redhat.com" tel "" fax "" language "Finnish" Index: localedata/locales/fi_FI@euro =================================================================== RCS file: /cvs/glibc/libc/localedata/locales/fi_FI@euro,v retrieving revision 1.3 diff -u -3 -p -u -r1.3 fi_FI@euro --- localedata/locales/fi_FI@euro 28 Feb 2002 09:07:38 -0000 1.3 +++ localedata/locales/fi_FI@euro 31 Oct 2004 15:54:09 -0000 @@ -17,7 +17,7 @@ title "Finnish locale for Finland w source "Free Software Foundation, Inc." address "59 Temple Place - Suite 330, Boston, MA 02111-1307, USA" contact "" -email "bug-glibc@gnu.org" +email "libc-locales@sources.redhat.com" tel "" fax "" language "Finnish" Index: localedata/locales/fo_FO =================================================================== RCS file: /cvs/glibc/libc/localedata/locales/fo_FO,v retrieving revision 1.7 diff -u -3 -p -u -r1.7 fo_FO --- localedata/locales/fo_FO 4 Dec 2003 04:49:57 -0000 1.7 +++ localedata/locales/fo_FO 31 Oct 2004 15:54:09 -0000 @@ -27,7 +27,7 @@ title "Faroese locale for Faroe Isl source "Danish Standards Association" address "Kollegievej 6, DK-2920 Charlottenlund, Danmark" contact "" -email "bug-glibc@gnu.org" +email "libc-locales@sources.redhat.com" tel "" fax "" language "Faroese" Index: localedata/locales/fr_BE =================================================================== RCS file: /cvs/glibc/libc/localedata/locales/fr_BE,v retrieving revision 1.11 diff -u -3 -p -u -r1.11 fr_BE --- localedata/locales/fr_BE 6 Dec 2003 07:40:37 -0000 1.11 +++ localedata/locales/fr_BE 31 Oct 2004 15:54:09 -0000 @@ -23,7 +23,7 @@ title "French locale for Belgium" source "RAP" address "Sankt Jrgens Alle 8, DK-1615 Kbenhavn V, Danmark" contact "" -email "bug-glibc@gnu.org" +email "libc-locales@sources.redhat.com" tel "" fax "" language "French" Index: localedata/locales/fr_BE@euro =================================================================== RCS file: /cvs/glibc/libc/localedata/locales/fr_BE@euro,v retrieving revision 1.4 diff -u -3 -p -u -r1.4 fr_BE@euro --- localedata/locales/fr_BE@euro 28 Feb 2002 09:07:38 -0000 1.4 +++ localedata/locales/fr_BE@euro 31 Oct 2004 15:54:09 -0000 @@ -16,7 +16,7 @@ title "French locale for Belgium wi source "Free Software Foundation, Inc." address "59 Temple Place - Suite 330, Boston, MA 02111-1307, USA" contact "" -email "bug-glibc@gnu.org" +email "libc-locales@sources.redhat.com" tel "" fax "" language "French" Index: localedata/locales/fr_CA =================================================================== RCS file: /cvs/glibc/libc/localedata/locales/fr_CA,v retrieving revision 1.11 diff -u -3 -p -u -r1.11 fr_CA --- localedata/locales/fr_CA 6 Dec 2003 07:40:37 -0000 1.11 +++ localedata/locales/fr_CA 31 Oct 2004 15:54:09 -0000 @@ -24,7 +24,7 @@ title "French locale for Canada" source "RAP" address "Sankt Jrgens Alle 8, DK-1615 Kbenhavn V, Danmark" contact "" -email "bug-glibc@gnu.org" +email "libc-locales@sources.redhat.com" tel "" fax "" language "French" Index: localedata/locales/fr_CH =================================================================== RCS file: /cvs/glibc/libc/localedata/locales/fr_CH,v retrieving revision 1.8 diff -u -3 -p -u -r1.8 fr_CH --- localedata/locales/fr_CH 4 Dec 2003 04:49:57 -0000 1.8 +++ localedata/locales/fr_CH 31 Oct 2004 15:54:09 -0000 @@ -24,7 +24,7 @@ title "French locale for Switzerlan source "RAP" address "Sankt Jrgens Alle 8, DK-1615 Kbenhavn V, Danmark" contact "" -email "bug-glibc@gnu.org" +email "libc-locales@sources.redhat.com" tel "" fax "" language "French" Index: localedata/locales/fr_FR =================================================================== RCS file: /cvs/glibc/libc/localedata/locales/fr_FR,v retrieving revision 1.10 diff -u -3 -p -u -r1.10 fr_FR --- localedata/locales/fr_FR 6 Dec 2003 07:40:37 -0000 1.10 +++ localedata/locales/fr_FR 31 Oct 2004 15:54:09 -0000 @@ -23,7 +23,7 @@ title "French locale for France" source "RAP" address "Sankt Jrgens Alle 8, DK-1615 Kbenhavn V, Danmark" contact "Keld Simonsen" -email "bug-glibc@gnu.org" +email "libc-locales@sources.redhat.com" tel "" fax "" language "French" Index: localedata/locales/fr_FR@euro =================================================================== RCS file: /cvs/glibc/libc/localedata/locales/fr_FR@euro,v retrieving revision 1.4 diff -u -3 -p -u -r1.4 fr_FR@euro --- localedata/locales/fr_FR@euro 28 Feb 2002 09:07:38 -0000 1.4 +++ localedata/locales/fr_FR@euro 31 Oct 2004 15:54:09 -0000 @@ -15,7 +15,7 @@ LC_IDENTIFICATION title "French locale for France with Euro" source "Free Software Foundation, Inc." address "59 Temple Place - Suite 330, Boston, MA 02111-1307, USA" -email "bug-glibc@gnu.org" +email "libc-locales@sources.redhat.com" tel "" fax "" language "French" Index: localedata/locales/fr_LU =================================================================== RCS file: /cvs/glibc/libc/localedata/locales/fr_LU,v retrieving revision 1.9 diff -u -3 -p -u -r1.9 fr_LU --- localedata/locales/fr_LU 4 Dec 2003 04:49:57 -0000 1.9 +++ localedata/locales/fr_LU 31 Oct 2004 15:54:09 -0000 @@ -23,7 +23,7 @@ title "French locale for Luxemburg" source "RAP" address "Sankt Jrgens Alle 8, DK-1615 Kbenhavn V, Danmark" contact "" -email "bug-glibc@gnu.org" +email "libc-locales@sources.redhat.com" tel "" fax "" language "French" Index: localedata/locales/fr_LU@euro =================================================================== RCS file: /cvs/glibc/libc/localedata/locales/fr_LU@euro,v retrieving revision 1.4 diff -u -3 -p -u -r1.4 fr_LU@euro --- localedata/locales/fr_LU@euro 28 Feb 2002 09:07:38 -0000 1.4 +++ localedata/locales/fr_LU@euro 31 Oct 2004 15:54:09 -0000 @@ -16,7 +16,7 @@ title "French locale for Luxemburg source "Free Software Foundation, Inc." address "59 Temple Place - Suite 330, Boston, MA 02111-1307, USA" contact "" -email "bug-glibc@gnu.org" +email "libc-locales@sources.redhat.com" tel "" fax "" language "French" Index: localedata/locales/ga_IE =================================================================== RCS file: /cvs/glibc/libc/localedata/locales/ga_IE,v retrieving revision 1.8 diff -u -3 -p -u -r1.8 ga_IE --- localedata/locales/ga_IE 4 Dec 2003 04:49:57 -0000 1.8 +++ localedata/locales/ga_IE 31 Oct 2004 15:54:09 -0000 @@ -21,7 +21,7 @@ title "Irish locale for Ireland" source "NSAI" address "Glasnevin, Dublin 9, Ireland" contact "" -email "bug-glibc@gnu.org" +email "libc-locales@sources.redhat.com" tel "" fax "" language "Irish" Index: localedata/locales/ga_IE@euro =================================================================== RCS file: /cvs/glibc/libc/localedata/locales/ga_IE@euro,v retrieving revision 1.2 diff -u -3 -p -u -r1.2 ga_IE@euro --- localedata/locales/ga_IE@euro 28 Feb 2002 09:07:38 -0000 1.2 +++ localedata/locales/ga_IE@euro 31 Oct 2004 15:54:09 -0000 @@ -15,7 +15,7 @@ title "Irish locale for Ireland wit source "Free Software Foundation, Inc." address "59 Temple Place - Suite 330, Boston, MA 02111-1307, USA" contact "" -email "bug-glibc@gnu.org" +email "libc-locales@sources.redhat.com" tel "" fax "" language "Irish" Index: localedata/locales/gl_ES =================================================================== RCS file: /cvs/glibc/libc/localedata/locales/gl_ES,v retrieving revision 1.8 diff -u -3 -p -u -r1.8 gl_ES --- localedata/locales/gl_ES 4 Dec 2003 04:49:57 -0000 1.8 +++ localedata/locales/gl_ES 31 Oct 2004 15:54:09 -0000 @@ -24,7 +24,7 @@ title "Galician locale for Spain" source "GPUL" address "Facultade de Inform??tica, Campus de Elvin~a, s/n, 15071 A Corun~a, Spain" contact "" -email "bug-glibc@gnu.org" +email "libc-locales@sources.redhat.com" tel "" fax "" language "Galician" Index: localedata/locales/gl_ES@euro =================================================================== RCS file: /cvs/glibc/libc/localedata/locales/gl_ES@euro,v retrieving revision 1.2 diff -u -3 -p -u -r1.2 gl_ES@euro --- localedata/locales/gl_ES@euro 28 Feb 2002 09:07:38 -0000 1.2 +++ localedata/locales/gl_ES@euro 31 Oct 2004 15:54:09 -0000 @@ -17,7 +17,7 @@ title "Galician locale for Spain wi source "Free Software Foundation, Inc." address "59 Temple Place - Suite 330, Boston, MA 02111-1307, USA" contact "" -email "bug-glibc@gnu.org" +email "libc-locales@sources.redhat.com" tel "" fax "" language "Galician" Index: localedata/locales/gu_IN =================================================================== RCS file: /cvs/glibc/libc/localedata/locales/gu_IN,v retrieving revision 1.5 diff -u -3 -p -u -r1.5 gu_IN --- localedata/locales/gu_IN 4 Oct 2004 09:06:13 -0000 1.5 +++ localedata/locales/gu_IN 31 Oct 2004 15:54:09 -0000 @@ -10,7 +10,7 @@ title "Gujarati Language Locale For source "IndLinux.org" address "" contact "" -email "bug-glibc@gnu.org" +email "libc-locales@sources.redhat.com" tel "" fax "" language "Gujarati" Index: localedata/locales/gv_GB =================================================================== RCS file: /cvs/glibc/libc/localedata/locales/gv_GB,v retrieving revision 1.6 diff -u -3 -p -u -r1.6 gv_GB --- localedata/locales/gv_GB 23 Mar 2004 07:36:58 -0000 1.6 +++ localedata/locales/gv_GB 31 Oct 2004 15:54:09 -0000 @@ -26,7 +26,7 @@ title "Manx Gaelic locale for Brita source "Alastair McKinstry" address "Cro?? L??r, Ballinahalla, Maigh Cuilinn,, Co. Gaillimh, Ireland" contact "" -email "bug-glibc@gnu.org" +email "libc-locales@sources.redhat.com" tel "" fax "" language "Manx Gaelic" Index: localedata/locales/he_IL =================================================================== RCS file: /cvs/glibc/libc/localedata/locales/he_IL,v retrieving revision 1.8 diff -u -3 -p -u -r1.8 he_IL --- localedata/locales/he_IL 4 Dec 2003 04:49:57 -0000 1.8 +++ localedata/locales/he_IL 31 Oct 2004 15:54:09 -0000 @@ -28,7 +28,7 @@ title "Hebrew locale for Israel" source "RAP" address "Sankt Jo/rgens Alle 8, DK-1615 Ko/benhavn V, Danmark" contact "" -email "bug-glibc@gnu.org" +email "libc-locales@sources.redhat.com" tel "" fax "" language "Hebrew" Index: localedata/locales/hi_IN =================================================================== RCS file: /cvs/glibc/libc/localedata/locales/hi_IN,v retrieving revision 1.4 diff -u -3 -p -u -r1.4 hi_IN --- localedata/locales/hi_IN 6 Dec 2003 07:40:37 -0000 1.4 +++ localedata/locales/hi_IN 31 Oct 2004 15:54:09 -0000 @@ -9,7 +9,7 @@ title "Hindi language locale for In source "IBM Globalization Center of Competency, Yamato Software Laboratory" address "1623-14, Shimotsuruma, Yamato-shi, Kanagawa-ken, 242-8502, Japan" contact "" -email "bug-glibc@gnu.org" +email "libc-locales@sources.redhat.com" tel "" fax "" language "Hindi" Index: localedata/locales/hr_HR =================================================================== RCS file: /cvs/glibc/libc/localedata/locales/hr_HR,v retrieving revision 1.15 diff -u -3 -p -u -r1.15 hr_HR --- localedata/locales/hr_HR 24 Dec 2003 02:39:13 -0000 1.15 +++ localedata/locales/hr_HR 31 Oct 2004 15:54:09 -0000 @@ -25,7 +25,7 @@ title "Croatian locale for Croatia" source "CARNet/MZT" address "Josipa Marohnica bb, Zagreb, Hrvatska" contact "" -email "bug-glibc@gnu.org" +email "libc-locales@sources.redhat.com" tel "" fax "" language "Croatian" Index: localedata/locales/hu_HU =================================================================== RCS file: /cvs/glibc/libc/localedata/locales/hu_HU,v retrieving revision 1.15 diff -u -3 -p -u -r1.15 hu_HU --- localedata/locales/hu_HU 6 Dec 2003 07:40:37 -0000 1.15 +++ localedata/locales/hu_HU 31 Oct 2004 15:54:09 -0000 @@ -36,7 +36,7 @@ title "Hungarian locale for Hungary source "RAP" address "Sankt Jorgens Alle 8, DK-1615 Kobenhavn V, Danmark" contact "" -email "bug-glibc@gnu.org" +email "libc-locales@sources.redhat.com" tel "" fax "" language "Hungarian" Index: localedata/locales/id_ID =================================================================== RCS file: /cvs/glibc/libc/localedata/locales/id_ID,v retrieving revision 1.7 diff -u -3 -p -u -r1.7 id_ID --- localedata/locales/id_ID 23 Mar 2004 07:36:58 -0000 1.7 +++ localedata/locales/id_ID 31 Oct 2004 15:54:09 -0000 @@ -24,7 +24,7 @@ title "Indonesian locale for Indone source "" address "" contact "" -email "bug-glibc@gnu.org" +email "libc-locales@sources.redhat.com" tel "" fax "" language "Indonesian" Index: localedata/locales/is_IS =================================================================== RCS file: /cvs/glibc/libc/localedata/locales/is_IS,v retrieving revision 1.12 diff -u -3 -p -u -r1.12 is_IS --- localedata/locales/is_IS 6 Dec 2003 07:40:37 -0000 1.12 +++ localedata/locales/is_IS 31 Oct 2004 15:54:09 -0000 @@ -25,7 +25,7 @@ title "Icelandic locale for Iceland source "Stadlarad I'slands" address "Keldnaholt-ITI', IS-112 Reykjavi'k, Iceland" contact "" -email "bug-glibc@gnu.org" +email "libc-locales@sources.redhat.com" tel "" fax "" language "Icelandic" Index: localedata/locales/it_CH =================================================================== RCS file: /cvs/glibc/libc/localedata/locales/it_CH,v retrieving revision 1.5 diff -u -3 -p -u -r1.5 it_CH --- localedata/locales/it_CH 4 Dec 2003 04:49:57 -0000 1.5 +++ localedata/locales/it_CH 31 Oct 2004 15:54:09 -0000 @@ -17,7 +17,7 @@ title "Italian locale for Switzerla source "" address "" contact "" -email "bug-glibc@gnu.org" +email "libc-locales@sources.redhat.com" tel "" fax "" language "Italian" Index: localedata/locales/it_IT =================================================================== RCS file: /cvs/glibc/libc/localedata/locales/it_IT,v retrieving revision 1.9 diff -u -3 -p -u -r1.9 it_IT --- localedata/locales/it_IT 17 May 2004 18:04:49 -0000 1.9 +++ localedata/locales/it_IT 31 Oct 2004 15:54:09 -0000 @@ -23,7 +23,7 @@ title "Italian locale for Italy" source "RAP" address "Sankt Jrgens Alle 8, DK-1615 Kbenhavn V, Danmark" contact "" -email "bug-glibc@gnu.org" +email "libc-locales@sources.redhat.com" tel "" fax "" language "Italian" Index: localedata/locales/it_IT@euro =================================================================== RCS file: /cvs/glibc/libc/localedata/locales/it_IT@euro,v retrieving revision 1.3 diff -u -3 -p -u -r1.3 it_IT@euro --- localedata/locales/it_IT@euro 28 Feb 2002 09:07:38 -0000 1.3 +++ localedata/locales/it_IT@euro 31 Oct 2004 15:54:09 -0000 @@ -16,7 +16,7 @@ title "Italian locale for Italy wit source "Free Software Foundation, Inc." address "59 Temple Place - Suite 330, Boston, MA 02111-1307, USA" contact "" -email "bug-glibc@gnu.org" +email "libc-locales@sources.redhat.com" tel "" fax "" language "Italian" Index: localedata/locales/iw_IL =================================================================== RCS file: /cvs/glibc/libc/localedata/locales/iw_IL,v retrieving revision 1.9 diff -u -3 -p -u -r1.9 iw_IL --- localedata/locales/iw_IL 4 Dec 2003 04:49:57 -0000 1.9 +++ localedata/locales/iw_IL 31 Oct 2004 15:54:09 -0000 @@ -27,7 +27,7 @@ title "Hebrew locale for Israel" source "RAP" address "Sankt Jo/rgens Alle 8, DK-1615 Ko/benhavn V, Danmark" contact "" -email "bug-glibc@gnu.org" +email "libc-locales@sources.redhat.com" tel "" fax "" language "Hebrew" Index: localedata/locales/ja_JP =================================================================== RCS file: /cvs/glibc/libc/localedata/locales/ja_JP,v retrieving revision 1.24 diff -u -3 -p -u -r1.24 ja_JP --- localedata/locales/ja_JP 24 Dec 2003 02:39:13 -0000 1.24 +++ localedata/locales/ja_JP 31 Oct 2004 15:54:11 -0000 @@ -12,7 +12,7 @@ title "Japanese language locale for source "HANATAKA, Shinya, hanataka@abyss.rim.or.jp" address "" contact "" -email "bug-glibc@gnu.org" +email "libc-locales@sources.redhat.com" tel "" fax "" language "Japanese" Index: localedata/locales/kk_KZ =================================================================== RCS file: /cvs/glibc/libc/localedata/locales/kk_KZ,v retrieving revision 1.1 diff -u -3 -p -u -r1.1 kk_KZ --- localedata/locales/kk_KZ 17 Apr 2004 21:58:18 -0000 1.1 +++ localedata/locales/kk_KZ 31 Oct 2004 15:54:11 -0000 @@ -23,7 +23,7 @@ title "Kazakh locale for Kazakhstan source "NIPI, Kazakhstan Copper Corporation" address "" contact "" -email "bug-glibc@gnu.org" +email "libc-locales@sources.redhat.com" tel "" fax "" language "Kazakh" Index: localedata/locales/kl_GL =================================================================== RCS file: /cvs/glibc/libc/localedata/locales/kl_GL,v retrieving revision 1.7 diff -u -3 -p -u -r1.7 kl_GL --- localedata/locales/kl_GL 4 Dec 2003 04:49:57 -0000 1.7 +++ localedata/locales/kl_GL 31 Oct 2004 15:54:11 -0000 @@ -28,7 +28,7 @@ title "Greenlandic locale for Green source "Danish Standards Association" address "Kollegievej 6, DK-2920 Charlottenlund, Danmark" contact "" -email "bug-glibc@gnu.org" +email "libc-locales@sources.redhat.com" tel "" fax "" language "Greenlandic" Index: localedata/locales/kn_IN =================================================================== RCS file: /cvs/glibc/libc/localedata/locales/kn_IN,v retrieving revision 1.3 diff -u -3 -p -u -r1.3 kn_IN --- localedata/locales/kn_IN 6 Dec 2003 07:40:37 -0000 1.3 +++ localedata/locales/kn_IN 31 Oct 2004 15:54:11 -0000 @@ -11,7 +11,7 @@ title "Kannada language locale for source "IndLinux.org" address "" contact "" -email "bug-glibc@gnu.org" +email "libc-locales@sources.redhat.com" tel "" fax "" language "Kannada" Index: localedata/locales/ko_KR =================================================================== RCS file: /cvs/glibc/libc/localedata/locales/ko_KR,v retrieving revision 1.17 diff -u -3 -p -u -r1.17 ko_KR --- localedata/locales/ko_KR 23 Jul 2004 18:52:31 -0000 1.17 +++ localedata/locales/ko_KR 31 Oct 2004 15:54:11 -0000 @@ -44,7 +44,7 @@ title "Korean locale for Republic o source "" address "" contact "" -email "bug-glibc@gnu.org" +email "libc-locales@sources.redhat.com" tel "" fax "" language "Korean" Index: localedata/locales/kw_GB =================================================================== RCS file: /cvs/glibc/libc/localedata/locales/kw_GB,v retrieving revision 1.6 diff -u -3 -p -u -r1.6 kw_GB --- localedata/locales/kw_GB 23 Mar 2004 07:36:58 -0000 1.6 +++ localedata/locales/kw_GB 31 Oct 2004 15:54:11 -0000 @@ -27,7 +27,7 @@ title "Cornish locale for Britain" source "Alastair McKinstry" address "Cro?? L??r, Ballinahalla, Maigh Cuilinn,, Co. Gaillimh, Ireland" contact "" -email "bug-glibc@gnu.org" +email "libc-locales@sources.redhat.com" tel "" fax "" language "Cornish" Index: localedata/locales/lo_LA =================================================================== RCS file: /cvs/glibc/libc/localedata/locales/lo_LA,v retrieving revision 1.3 diff -u -3 -p -u -r1.3 lo_LA --- localedata/locales/lo_LA 17 Sep 2003 08:59:50 -0000 1.3 +++ localedata/locales/lo_LA 31 Oct 2004 15:54:11 -0000 @@ -47,7 +47,7 @@ title "Lao locale for Laos" source "" address "" contact "Anousak Souphavanh at: anousak@muanglao.com" -email "bug-glibc@gnu.org" +email "libc-locales@sources.redhat.com" tel "" fax "" language "Lao" Index: localedata/locales/lt_LT =================================================================== RCS file: /cvs/glibc/libc/localedata/locales/lt_LT,v retrieving revision 1.10 diff -u -3 -p -u -r1.10 lt_LT --- localedata/locales/lt_LT 4 Dec 2003 04:49:56 -0000 1.10 +++ localedata/locales/lt_LT 31 Oct 2004 15:54:11 -0000 @@ -35,7 +35,7 @@ title "Lithuanian locale for Lithua source "Lithuanian Computer Society and" address "P.O Box 1147, Donelaicio 60, 3000 Kaunas, Lithuania" contact "" -email "bug-glibc@gnu.org" +email "libc-locales@sources.redhat.com" tel "" fax "" language "Lithuanian" Index: localedata/locales/lv_LV =================================================================== RCS file: /cvs/glibc/libc/localedata/locales/lv_LV,v retrieving revision 1.10 diff -u -3 -p -u -r1.10 lv_LV --- localedata/locales/lv_LV 4 Dec 2003 04:49:56 -0000 1.10 +++ localedata/locales/lv_LV 31 Oct 2004 15:54:11 -0000 @@ -27,7 +27,7 @@ title "Latvian locale for Latvia" source "Latvian Standard LVS 24-93" address "LU MII, Rainis boul. 29, LV-1459 Riga, Latvia" contact "" -email "bug-glibc@gnu.org" +email "libc-locales@sources.redhat.com" tel "" fax "" language "Latvian" Index: localedata/locales/ml_IN =================================================================== RCS file: /cvs/glibc/libc/localedata/locales/ml_IN,v retrieving revision 1.3 diff -u -3 -p -u -r1.3 ml_IN --- localedata/locales/ml_IN 6 Dec 2003 07:40:37 -0000 1.3 +++ localedata/locales/ml_IN 31 Oct 2004 15:54:11 -0000 @@ -9,7 +9,7 @@ title " Malayalam language locale fo source "Free Software Foundation of India, Trivandrum" address "" contact "" -email "bug-glibc@gnu.org" +email "libc-locales@sources.redhat.com" tel "" fax "" language "Malayalam" Index: localedata/locales/mn_MN =================================================================== RCS file: /cvs/glibc/libc/localedata/locales/mn_MN,v retrieving revision 1.2 diff -u -3 -p -u -r1.2 mn_MN --- localedata/locales/mn_MN 14 Apr 2003 17:28:31 -0000 1.2 +++ localedata/locales/mn_MN 31 Oct 2004 15:54:11 -0000 @@ -12,7 +12,7 @@ title "Mongolian locale for Mongoli source "OPENMN" address "" contact "" -email "bug-glibc@gnu.org" +email "libc-locales@sources.redhat.com" tel "" fax "" language "Mongolian" Index: localedata/locales/mr_IN =================================================================== RCS file: /cvs/glibc/libc/localedata/locales/mr_IN,v retrieving revision 1.4 diff -u -3 -p -u -r1.4 mr_IN --- localedata/locales/mr_IN 6 Dec 2003 07:40:37 -0000 1.4 +++ localedata/locales/mr_IN 31 Oct 2004 15:54:12 -0000 @@ -9,7 +9,7 @@ title "Marathi language locale for source "IBM Globalization Center of Competency, Yamato Software Laboratory" address "1623-14, Shimotsuruma, Yamato-shi, Kanagawa-ken, 242-8502, Japan" contact "" -email "bug-glibc@gnu.org" +email "libc-locales@sources.redhat.com" tel "" fax "" language "Marathi" Index: localedata/locales/ms_MY =================================================================== RCS file: /cvs/glibc/libc/localedata/locales/ms_MY,v retrieving revision 1.5 diff -u -3 -p -u -r1.5 ms_MY --- localedata/locales/ms_MY 4 Dec 2003 04:49:56 -0000 1.5 +++ localedata/locales/ms_MY 31 Oct 2004 15:54:12 -0000 @@ -11,7 +11,7 @@ title "Malay language locale for Ma source "IBM Globalization Center of Competency, Yamato Software Laboratory" address "1623-14, Shimotsuruma, Yamato-shi, Kanagawa-ken, 242-8502, Japan" contact "" -email "bug-glibc@gnu.org, sebol@ikhlas.com" +email "libc-locales@sources.redhat.com, sebol@ikhlas.com" tel "" fax "" language "Malay" Index: localedata/locales/mt_MT =================================================================== RCS file: /cvs/glibc/libc/localedata/locales/mt_MT,v retrieving revision 1.4 diff -u -3 -p -u -r1.4 mt_MT --- localedata/locales/mt_MT 4 Dec 2003 04:49:56 -0000 1.4 +++ localedata/locales/mt_MT 31 Oct 2004 15:54:12 -0000 @@ -12,7 +12,7 @@ title "Maltese language locale for source "IBM Globalization Center of Competency, Yamato Software Laboratory" address "1623-14, Shimotsuruma, Yamato-shi, Kanagawa-ken, 242-8502, Japan" contact "" -email "bug-glibc@gnu.org" +email "libc-locales@sources.redhat.com" tel "" fax "" language "Maltese" Index: localedata/locales/nb_NO =================================================================== RCS file: /cvs/glibc/libc/localedata/locales/nb_NO,v retrieving revision 1.3 diff -u -3 -p -u -r1.3 nb_NO --- localedata/locales/nb_NO 28 Sep 2004 08:58:35 -0000 1.3 +++ localedata/locales/nb_NO 31 Oct 2004 15:54:12 -0000 @@ -25,7 +25,7 @@ title "Norwegian (Bokmal) locale fo source "Norsk Standardiseringsforbund" address "University Library,, Drammensveien 41, N-9242 Oslo, Norge" contact "" -email "bug-glibc@gnu.org" +email "libc-locales@sources.redhat.com" tel "" fax "" language "Norwegian, Bokml" Index: localedata/locales/nl_BE =================================================================== RCS file: /cvs/glibc/libc/localedata/locales/nl_BE,v retrieving revision 1.7 diff -u -3 -p -u -r1.7 nl_BE --- localedata/locales/nl_BE 6 Dec 2003 07:40:37 -0000 1.7 +++ localedata/locales/nl_BE 31 Oct 2004 15:54:12 -0000 @@ -24,7 +24,7 @@ title "Dutch locale for Belgium" source "RAP" address "Sankt Jrgens Alle 8, DK-1615 Kbenhavn V, Danmark" contact "" -email "bug-glibc@gnu.org" +email "libc-locales@sources.redhat.com" tel "" fax "" language "Dutch" Index: localedata/locales/nl_BE@euro =================================================================== RCS file: /cvs/glibc/libc/localedata/locales/nl_BE@euro,v retrieving revision 1.1 diff -u -3 -p -u -r1.1 nl_BE@euro --- localedata/locales/nl_BE@euro 21 Aug 2000 18:00:28 -0000 1.1 +++ localedata/locales/nl_BE@euro 31 Oct 2004 15:54:12 -0000 @@ -16,7 +16,7 @@ title "Dutch locale for Belgium wit source "Free Software Foundation, Inc." address "59 Temple Place - Suite 330, Boston, MA 02111-1307, USA" contact "" -email "bug-glibc@gnu.org" +email "libc-locales@sources.redhat.com" tel "" fax "" language "Dutch" Index: localedata/locales/nl_NL =================================================================== RCS file: /cvs/glibc/libc/localedata/locales/nl_NL,v retrieving revision 1.8 diff -u -3 -p -u -r1.8 nl_NL --- localedata/locales/nl_NL 4 Dec 2003 04:49:56 -0000 1.8 +++ localedata/locales/nl_NL 31 Oct 2004 15:54:12 -0000 @@ -23,7 +23,7 @@ title "Dutch locale for the Netherl source "RAP" address "Sankt Jrgens Alle 8, DK-1615 Kbenhavn V, Danmark" contact "" -email "bug-glibc@gnu.org" +email "libc-locales@sources.redhat.com" tel "" fax "" language "Dutch" Index: localedata/locales/nl_NL@euro =================================================================== RCS file: /cvs/glibc/libc/localedata/locales/nl_NL@euro,v retrieving revision 1.3 diff -u -3 -p -u -r1.3 nl_NL@euro --- localedata/locales/nl_NL@euro 28 Feb 2002 09:07:38 -0000 1.3 +++ localedata/locales/nl_NL@euro 31 Oct 2004 15:54:12 -0000 @@ -16,7 +16,7 @@ title "Dutch locale for the Netherl source "Free Software Foundation, Inc." address "59 Temple Place - Suite 330, Boston, MA 02111-1307, USA" contact "" -email "bug-glibc@gnu.org" +email "libc-locales@sources.redhat.com" tel "" fax "" language "Dutch" Index: localedata/locales/nn_NO =================================================================== RCS file: /cvs/glibc/libc/localedata/locales/nn_NO,v retrieving revision 1.4 diff -u -3 -p -u -r1.4 nn_NO --- localedata/locales/nn_NO 3 May 2004 21:35:07 -0000 1.4 +++ localedata/locales/nn_NO 31 Oct 2004 15:54:12 -0000 @@ -9,7 +9,7 @@ title "Nynorsk language locale for source "IBM Globalization Center of Competency, Yamato Software Laboratory" address "1623-14, Shimotsuruma, Yamato-shi, Kanagawa-ken, 242-8502, Japan" contact "" -email "bug-glibc@gnu.org" +email "libc-locales@sources.redhat.com" tel "" fax "" language "Norwegian, Nynorsk" Index: localedata/locales/pa_IN =================================================================== RCS file: /cvs/glibc/libc/localedata/locales/pa_IN,v retrieving revision 1.3 diff -u -3 -p -u -r1.3 pa_IN --- localedata/locales/pa_IN 6 Dec 2003 07:40:37 -0000 1.3 +++ localedata/locales/pa_IN 31 Oct 2004 15:54:12 -0000 @@ -8,7 +8,7 @@ title "Punjabi language locale for source "IndLinux.org" address "" contact "" -email "bug-glibc@gnu.org" +email "libc-locales@sources.redhat.com" tel "" fax "" language "Punjabi" Index: localedata/locales/pl_PL =================================================================== RCS file: /cvs/glibc/libc/localedata/locales/pl_PL,v retrieving revision 1.12 diff -u -3 -p -u -r1.12 pl_PL --- localedata/locales/pl_PL 4 Dec 2003 04:49:56 -0000 1.12 +++ localedata/locales/pl_PL 31 Oct 2004 15:54:12 -0000 @@ -25,7 +25,7 @@ title "Polish locale for Poland" source "RAP" address "Sankt Jo/rgens Alle 8, DK-1615 Ko/benhavn V, Danmark" contact "" -email "bug-glibc@gnu.org" +email "libc-locales@sources.redhat.com" tel "" fax "" language "Polish" Index: localedata/locales/pt_BR =================================================================== RCS file: /cvs/glibc/libc/localedata/locales/pt_BR,v retrieving revision 1.12 diff -u -3 -p -u -r1.12 pt_BR --- localedata/locales/pt_BR 6 Dec 2003 07:40:37 -0000 1.12 +++ localedata/locales/pt_BR 31 Oct 2004 15:54:12 -0000 @@ -24,7 +24,7 @@ title "Portuguese locale for Brasil source "RAP" address "Sankt Jrgens Alle 8, DK-1615 Kbenhavn V, Danmark" contact "" -email "bug-glibc@gnu.org" +email "libc-locales@sources.redhat.com" tel "" fax "" language "Portuguese" Index: localedata/locales/pt_PT =================================================================== RCS file: /cvs/glibc/libc/localedata/locales/pt_PT,v retrieving revision 1.8 diff -u -3 -p -u -r1.8 pt_PT --- localedata/locales/pt_PT 4 Dec 2003 04:49:56 -0000 1.8 +++ localedata/locales/pt_PT 31 Oct 2004 15:54:12 -0000 @@ -23,7 +23,7 @@ title "Portuguese locale for Portug source "RAP" address "Sankt Jrgens Alle 8, DK-1615 Kbenhavn V, Danmark" contact "" -email "bug-glibc@gnu.org" +email "libc-locales@sources.redhat.com" tel "" fax "" language "Portuguese" Index: localedata/locales/pt_PT@euro =================================================================== RCS file: /cvs/glibc/libc/localedata/locales/pt_PT@euro,v retrieving revision 1.3 diff -u -3 -p -u -r1.3 pt_PT@euro --- localedata/locales/pt_PT@euro 28 Feb 2002 09:07:39 -0000 1.3 +++ localedata/locales/pt_PT@euro 31 Oct 2004 15:54:12 -0000 @@ -16,7 +16,7 @@ title "Portuguese locale for Portug source "Free Software Foundation, Inc." address "59 Temple Place - Suite 330, Boston, MA 02111-1307, USA" contact "" -email "bug-glibc@gnu.org" +email "libc-locales@sources.redhat.com" tel "" fax "" language "Portuguese" Index: localedata/locales/ro_RO =================================================================== RCS file: /cvs/glibc/libc/localedata/locales/ro_RO,v retrieving revision 1.14 diff -u -3 -p -u -r1.14 ro_RO --- localedata/locales/ro_RO 4 Dec 2003 04:49:56 -0000 1.14 +++ localedata/locales/ro_RO 31 Oct 2004 15:54:12 -0000 @@ -24,7 +24,7 @@ title "Romanian locale for Romania" source "RAP" address "Sankt Jorgens Alle 8, DK-1615 Kobenhavn V, Danmark" contact "" -email "bug-glibc@gnu.org" +email "libc-locales@sources.redhat.com" tel "" fax "" language "Romanian" Index: localedata/locales/ru_RU =================================================================== RCS file: /cvs/glibc/libc/localedata/locales/ru_RU,v retrieving revision 1.23 diff -u -3 -p -u -r1.23 ru_RU --- localedata/locales/ru_RU 6 Dec 2003 07:40:37 -0000 1.23 +++ localedata/locales/ru_RU 31 Oct 2004 15:54:12 -0000 @@ -24,7 +24,7 @@ title "Russian locale for Russia" source "RAP" address "Sankt Jorgens Alle 8, DK-1615 Kobenhavn V, Danmark" contact "" -email "bug-glibc@gnu.org" +email "libc-locales@sources.redhat.com" tel "" fax "" language "Russian" Index: localedata/locales/ru_UA =================================================================== RCS file: /cvs/glibc/libc/localedata/locales/ru_UA,v retrieving revision 1.14 diff -u -3 -p -u -r1.14 ru_UA --- localedata/locales/ru_UA 23 Mar 2004 07:36:58 -0000 1.14 +++ localedata/locales/ru_UA 31 Oct 2004 15:54:12 -0000 @@ -20,7 +20,7 @@ title "Russian locale for Ukraine" source "RFC 2319" address "" contact "" -email "bug-glibc@gnu.org" +email "libc-locales@sources.redhat.com" tel "" fax "" language "Russian" Index: localedata/locales/sk_SK =================================================================== RCS file: /cvs/glibc/libc/localedata/locales/sk_SK,v retrieving revision 1.7 diff -u -3 -p -u -r1.7 sk_SK --- localedata/locales/sk_SK 23 Mar 2004 07:36:58 -0000 1.7 +++ localedata/locales/sk_SK 31 Oct 2004 15:54:12 -0000 @@ -36,7 +36,7 @@ title "Slovak locale for Slovak" source "" address "Narcisov 56, SK-821 01 Bratislava, Slovak Republic" contact "" -email "bug-glibc@gnu.org" +email "libc-locales@sources.redhat.com" tel "" fax "" language "Slovak" Index: localedata/locales/sl_SI =================================================================== RCS file: /cvs/glibc/libc/localedata/locales/sl_SI,v retrieving revision 1.12 diff -u -3 -p -u -r1.12 sl_SI --- localedata/locales/sl_SI 18 May 2004 20:18:04 -0000 1.12 +++ localedata/locales/sl_SI 31 Oct 2004 15:54:12 -0000 @@ -25,7 +25,7 @@ title "Slovenian locale for Sloveni source "USM/MZT" address "Kotnikova 6,, Ljubljana, Slovenia" contact "" -email "bug-glibc@gnu.org" +email "libc-locales@sources.redhat.com" tel "" fax "" language "Slovenian" Index: localedata/locales/sq_AL =================================================================== RCS file: /cvs/glibc/libc/localedata/locales/sq_AL,v retrieving revision 1.4 diff -u -3 -p -u -r1.4 sq_AL --- localedata/locales/sq_AL 6 Dec 2003 07:40:37 -0000 1.4 +++ localedata/locales/sq_AL 31 Oct 2004 15:54:12 -0000 @@ -9,7 +9,7 @@ title "Albanian language locale for source "IBM Globalization Center of Competency, Yamato Software Laboratory" address "1623-14, Shimotsuruma, Yamato-shi, Kanagawa-ken, 242-8502, Japan" contact "" -email "bug-glibc@gnu.org" +email "libc-locales@sources.redhat.com" tel "" fax "" language "Albanian" Index: localedata/locales/sv_FI =================================================================== RCS file: /cvs/glibc/libc/localedata/locales/sv_FI,v retrieving revision 1.7 diff -u -3 -p -u -r1.7 sv_FI --- localedata/locales/sv_FI 4 Dec 2003 04:49:56 -0000 1.7 +++ localedata/locales/sv_FI 31 Oct 2004 15:54:12 -0000 @@ -24,7 +24,7 @@ title "Swedish locale for Finland" source "RAP" address "Sankt Jrgens Alle 8, DK-1615 Kbenhavn V, Danmark" contact "" -email "bug-glibc@gnu.org" +email "libc-locales@sources.redhat.com" tel "" fax "" language "Swedish" Index: localedata/locales/sv_FI@euro =================================================================== RCS file: /cvs/glibc/libc/localedata/locales/sv_FI@euro,v retrieving revision 1.1 diff -u -3 -p -u -r1.1 sv_FI@euro --- localedata/locales/sv_FI@euro 21 Aug 2000 18:00:43 -0000 1.1 +++ localedata/locales/sv_FI@euro 31 Oct 2004 15:54:12 -0000 @@ -16,7 +16,7 @@ title "Swedish locale for Finland w source "Free Software Foundation, Inc." address "59 Temple Place - Suite 330, Boston, MA 02111-1307, USA" contact "" -email "bug-glibc@gnu.org" +email "libc-locales@sources.redhat.com" tel "" fax "" language "Swedish" Index: localedata/locales/sv_SE =================================================================== RCS file: /cvs/glibc/libc/localedata/locales/sv_SE,v retrieving revision 1.13 diff -u -3 -p -u -r1.13 sv_SE --- localedata/locales/sv_SE 4 Dec 2003 04:49:56 -0000 1.13 +++ localedata/locales/sv_SE 31 Oct 2004 15:54:12 -0000 @@ -31,7 +31,7 @@ title "Swedish locale for Sweden" source "RAP" address "Sankt Jrgens Alle 8, DK-1615 Kbenhavn V, Danmark" contact "" -email "bug-glibc@gnu.org" +email "libc-locales@sources.redhat.com" tel "" fax "" language "Swedish" Index: localedata/locales/ta_IN =================================================================== RCS file: /cvs/glibc/libc/localedata/locales/ta_IN,v retrieving revision 1.3 diff -u -3 -p -u -r1.3 ta_IN --- localedata/locales/ta_IN 6 Dec 2003 07:40:37 -0000 1.3 +++ localedata/locales/ta_IN 31 Oct 2004 15:54:12 -0000 @@ -9,7 +9,7 @@ title "Tamil language locale for In source "IBM Globalization Center of Competency, Yamato Software Laboratory" address "1623-14, Shimotsuruma, Yamato-shi, Kanagawa-ken, 242-8502, Japan" contact "" -email "bug-glibc@gnu.org" +email "libc-locales@sources.redhat.com" tel "" fax "" language "Tamil" Index: localedata/locales/te_IN =================================================================== RCS file: /cvs/glibc/libc/localedata/locales/te_IN,v retrieving revision 1.3 diff -u -3 -p -u -r1.3 te_IN --- localedata/locales/te_IN 6 Dec 2003 07:40:37 -0000 1.3 +++ localedata/locales/te_IN 31 Oct 2004 15:54:12 -0000 @@ -9,7 +9,7 @@ title "Telgu language locale for In source "IBM Globalization Center of Competency, Yamato Software Laboratory" address "1623-14, Shimotsuruma, Yamato-shi, Kanagawa-ken, 242-8502, Japan" contact "" -email "bug-glibc@gnu.org" +email "libc-locales@sources.redhat.com" tel "" fax "" language "Telgu" Index: localedata/locales/th_TH =================================================================== RCS file: /cvs/glibc/libc/localedata/locales/th_TH,v retrieving revision 1.14 diff -u -3 -p -u -r1.14 th_TH --- localedata/locales/th_TH 4 Dec 2003 04:49:56 -0000 1.14 +++ localedata/locales/th_TH 31 Oct 2004 15:54:13 -0000 @@ -49,7 +49,7 @@ title "Thai locale for Thailand" source "" address "" contact "" -email "bug-glibc@gnu.org" +email "libc-locales@sources.redhat.com" tel "" fax "" language "Thai" Index: localedata/locales/tr_TR =================================================================== RCS file: /cvs/glibc/libc/localedata/locales/tr_TR,v retrieving revision 1.18 diff -u -3 -p -u -r1.18 tr_TR --- localedata/locales/tr_TR 17 Feb 2004 02:35:12 -0000 1.18 +++ localedata/locales/tr_TR 31 Oct 2004 15:54:13 -0000 @@ -30,7 +30,7 @@ title "Turkish locale for Turkey" source "RAP" address "Sankt Jrgens Alle 8, DK-1615 Kbenhavn V, Danmark" contact "" -email "bug-glibc@gnu.org" +email "libc-locales@sources.redhat.com" tel "" fax "" language "Turkish" Index: localedata/locales/uk_UA =================================================================== RCS file: /cvs/glibc/libc/localedata/locales/uk_UA,v retrieving revision 1.15 diff -u -3 -p -u -r1.15 uk_UA --- localedata/locales/uk_UA 23 Mar 2004 07:36:58 -0000 1.15 +++ localedata/locales/uk_UA 31 Oct 2004 15:54:13 -0000 @@ -22,7 +22,7 @@ title "Ukrainian locale for Ukraine source "RFC 2319" address "" contact "" -email "bug-glibc@gnu.org" +email "libc-locales@sources.redhat.com" tel "" fax "" language "Ukrainian" Index: localedata/locales/ur_PK =================================================================== RCS file: /cvs/glibc/libc/localedata/locales/ur_PK,v retrieving revision 1.3 diff -u -3 -p -u -r1.3 ur_PK --- localedata/locales/ur_PK 23 Mar 2004 07:36:58 -0000 1.3 +++ localedata/locales/ur_PK 31 Oct 2004 15:54:13 -0000 @@ -19,7 +19,7 @@ title "Urdu Language Locale for Pak source "" address "" contact "" -email "bug-glibc@gnu.org" +email "libc-locales@sources.redhat.com" tel "" fax "" language "Urdu" Index: localedata/locales/vi_VN =================================================================== RCS file: /cvs/glibc/libc/localedata/locales/vi_VN,v retrieving revision 1.4 diff -u -3 -p -u -r1.4 vi_VN --- localedata/locales/vi_VN 4 Dec 2003 04:49:56 -0000 1.4 +++ localedata/locales/vi_VN 31 Oct 2004 15:54:13 -0000 @@ -11,7 +11,7 @@ title "Vietnamese language locale f source "IBM Globalization Center of Competency, Yamato Software Laboratory" address "1623-14, Shimotsuruma, Yamato-shi, Kanagawa-ken, 242-8502, Japan" contact "" -email "bug-glibc@gnu.org" +email "libc-locales@sources.redhat.com" tel "" fax "" language "Vietnamese" Index: localedata/locales/wa_BE@euro =================================================================== RCS file: /cvs/glibc/libc/localedata/locales/wa_BE@euro,v retrieving revision 1.1 diff -u -3 -p -u -r1.1 wa_BE@euro --- localedata/locales/wa_BE@euro 23 Feb 2002 19:29:56 -0000 1.1 +++ localedata/locales/wa_BE@euro 31 Oct 2004 15:54:13 -0000 @@ -16,7 +16,7 @@ title "Walloon locale for Belgium w source "Free Software Foundation, Inc." address "59 Temple Place - Suite 330, Boston, MA 02111-1307, USA" contact "" -email "bug-glibc@gnu.org" +email "libc-locales@sources.redhat.com" tel "" fax "" language "Walloon" Index: localedata/locales/zh_CN =================================================================== RCS file: /cvs/glibc/libc/localedata/locales/zh_CN,v retrieving revision 1.11 diff -u -3 -p -u -r1.11 zh_CN --- localedata/locales/zh_CN 6 Feb 2001 18:32:11 -0000 1.11 +++ localedata/locales/zh_CN 31 Oct 2004 15:54:13 -0000 @@ -20,7 +20,7 @@ title "Chinese locale for Peoples R source "" address "" contact "" -email "bug-glibc@gnu.org" +email "libc-locales@sources.redhat.com" tel "" fax "" language "Chinese" Index: localedata/locales/zh_HK =================================================================== RCS file: /cvs/glibc/libc/localedata/locales/zh_HK,v retrieving revision 1.7 diff -u -3 -p -u -r1.7 zh_HK --- localedata/locales/zh_HK 6 Dec 2003 07:40:37 -0000 1.7 +++ localedata/locales/zh_HK 31 Oct 2004 15:54:13 -0000 @@ -9,7 +9,7 @@ title "Chinese language locale for source "IBM Globalization Center of Competency, Yamato Software Laboratory" address "1623-14, Shimotsuruma, Yamato-shi, Kanagawa-ken, 242-8502, Japan" contact "" -email "bug-glibc@gnu.org" +email "libc-locales@sources.redhat.com" tel "" fax "" language "Chinese" Index: localedata/locales/zh_SG =================================================================== RCS file: /cvs/glibc/libc/localedata/locales/zh_SG,v retrieving revision 1.2 diff -u -3 -p -u -r1.2 zh_SG --- localedata/locales/zh_SG 4 Dec 2003 04:49:56 -0000 1.2 +++ localedata/locales/zh_SG 31 Oct 2004 15:54:13 -0000 @@ -9,7 +9,7 @@ title "Chinese language locale for source "IBM Globalization Center of Competency, Yamato Software Laboratory" address "1623-14, Shimotsuruma, Yamato-shi, Kanagawa-ken, 242-8502, Japan" contact "" -email "bug-glibc@gnu.org" +email "libc-locales@sources.redhat.com" tel "" fax "" language "Chinese" Index: localedata/locales/zh_TW =================================================================== RCS file: /cvs/glibc/libc/localedata/locales/zh_TW,v retrieving revision 1.5 diff -u -3 -p -u -r1.5 zh_TW --- localedata/locales/zh_TW 28 Sep 2002 05:25:36 -0000 1.5 +++ localedata/locales/zh_TW 31 Oct 2004 15:54:13 -0000 @@ -21,7 +21,7 @@ title "Chinese locale for Taiwan R. source "" address "" contact "" -email "bug-glibc@gnu.org" +email "libc-locales@sources.redhat.com" tel "" fax "" language "Chinese"