SHA256
1
0
forked from pool/glibc
Adrian Schröter 2009-02-20 07:46:43 +00:00 committed by Git OBS Bridge
commit a51dfad3e2
76 changed files with 17636 additions and 0 deletions

23
.gitattributes vendored Normal file
View File

@ -0,0 +1,23 @@
## Default LFS
*.7z filter=lfs diff=lfs merge=lfs -text
*.bsp filter=lfs diff=lfs merge=lfs -text
*.bz2 filter=lfs diff=lfs merge=lfs -text
*.gem filter=lfs diff=lfs merge=lfs -text
*.gz filter=lfs diff=lfs merge=lfs -text
*.jar filter=lfs diff=lfs merge=lfs -text
*.lz filter=lfs diff=lfs merge=lfs -text
*.lzma filter=lfs diff=lfs merge=lfs -text
*.obscpio filter=lfs diff=lfs merge=lfs -text
*.oxt filter=lfs diff=lfs merge=lfs -text
*.pdf filter=lfs diff=lfs merge=lfs -text
*.png filter=lfs diff=lfs merge=lfs -text
*.rpm filter=lfs diff=lfs merge=lfs -text
*.tbz filter=lfs diff=lfs merge=lfs -text
*.tbz2 filter=lfs diff=lfs merge=lfs -text
*.tgz filter=lfs diff=lfs merge=lfs -text
*.ttf filter=lfs diff=lfs merge=lfs -text
*.txz filter=lfs diff=lfs merge=lfs -text
*.whl filter=lfs diff=lfs merge=lfs -text
*.xz filter=lfs diff=lfs merge=lfs -text
*.zip filter=lfs diff=lfs merge=lfs -text
*.zst filter=lfs diff=lfs merge=lfs -text

1
.gitignore vendored Normal file
View File

@ -0,0 +1 @@
.osc

17
baselibs.conf Normal file
View File

@ -0,0 +1,17 @@
glibc
arch i586 block!
targettype x86 +/etc/ld.so.conf
targettype x86 "/lib/ld-linux.so.2 -> <prefix>/lib/ld-linux.so.2"
targettype x86 obsoletes "baselibs-x86"
targettype ia32 +/etc/ld.so.conf
targettype ia32 "/lib/ld-linux.so.2 -> <prefix>/lib/ld-linux.so.2"
prereq -glibc-x86
glibc-locale
arch i586 block!
+/usr/lib(64)?/gconv/gconv-modules
targettype x86 -/usr/lib(64)?/gconv/gconv-modules
glibc-devel
arch i586 block!
+^/usr/include/gnu/stubs-.*\.h$
glibc-profile
arch i586 block!

12
bindresvport.blacklist Normal file
View File

@ -0,0 +1,12 @@
#
# This file contains a list of port numbers between 600 and 1024,
# which should not be used by bindresvport. bindresvport is mostly
# called by RPC services. This mostly solves the problem, that a
# RPC service uses a well known port of another service.
#
631 # cups
636 # ldaps
774 # rpasswd
921 # lwresd
993 # imaps
995 # pops

25
check-build.sh Normal file
View File

@ -0,0 +1,25 @@
#!/bin/bash
# Copyright (c) 2003, 2004 SuSE Linux AG, Germany. All rights reserved.
#
# Authors: Thorsten Kukuk <kukuk@suse.de>
#
# this script use the following variable(s):
#
# - $BUILD_BASENAME
#
if [ `nice` -gt '9' ] ; then
echo "Don't modify nice for building glibc!"
exit 1
fi
# get kernel version
OFS="$IFS" ; IFS=".-" ; version=(`uname -r`) ; IFS="$OIFS"
if test ${version[0]} -lt 2 -o ${version[1]} -lt 6 -o ${version[2]} -lt 11 ; then
echo "FATAL: kernel too old, need kernel >= 2.6.11 for this package" 1>&2
exit 1
fi
exit 0

1330
crypt_blowfish-1.0.diff Normal file

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,106 @@
--- crypt/crypt-entry.c 2001-07-06 09:37:47.000000000 +0200
+++ crypt/crypt-entry.c 2003-10-01 11:23:27.000000000 +0200
@@ -70,7 +70,7 @@
*/
char *
-__crypt_r (key, salt, data)
+__des_crypt_r (key, salt, data)
const char *key;
const char *salt;
struct crypt_data * __restrict data;
@@ -115,6 +115,7 @@
_ufc_output_conversion_r (res[0], res[1], salt, data);
return data->crypt_3_buf;
}
+#if 0
weak_alias (__crypt_r, crypt_r)
char *
@@ -147,3 +148,4 @@
return crypt (key, salt);
}
#endif
+#endif
--- crypt/crypt-private.h 2001-07-06 09:37:47.000000000 +0200
+++ crypt/crypt-private.h 2003-10-01 11:23:27.000000000 +0200
@@ -55,6 +55,8 @@
/* crypt-entry.c */
extern char *__crypt_r (__const char *__key, __const char *__salt,
struct crypt_data * __restrict __data);
+extern char *__des_crypt_r (__const char *__key, __const char *__salt,
+ struct crypt_data * __restrict __data);
extern char *fcrypt (__const char *key, __const char *salt);
#endif /* crypt-private.h */
--- crypt/Makefile~ 2007-11-06 05:27:13.635014000 +0100
+++ crypt/Makefile 2007-11-06 05:27:27.500142000 +0100
@@ -27,7 +27,8 @@
extra-libs-others := $(extra-libs)
libcrypt-routines := crypt-entry md5-crypt md5 sha256-crypt sha256 \
- sha512-crypt sha512 crypt crypt_util
+ sha512-crypt sha512 crypt crypt_util \
+ crypt_blowfish crypt_gensalt wrapper
tests := cert md5test md5c-test sha256test sha256c-test sha512test sha512c-test
--- crypt/ow-crypt.h 2001-05-01 13:14:31.000000000 +0200
+++ crypt/ow-crypt.h 2003-10-01 11:23:27.000000000 +0200
@@ -13,12 +13,6 @@
#define __CONST
#endif
-#ifndef __SKIP_GNU
-extern char *crypt(__CONST char *key, __CONST char *setting);
-extern char *crypt_r(__CONST char *key, __CONST char *setting, void *data);
-#endif
-
-#ifndef __SKIP_OW
extern char *crypt_rn(__CONST char *key, __CONST char *setting,
void *data, int size);
extern char *crypt_ra(__CONST char *key, __CONST char *setting,
@@ -29,6 +23,5 @@
__CONST char *input, int size, char *output, int output_size);
extern char *crypt_gensalt_ra(__CONST char *prefix, unsigned long count,
__CONST char *input, int size);
-#endif
#endif
--- crypt/wrapper.c 2002-11-08 01:26:31.000000000 +0100
+++ crypt/wrapper.c 2003-10-01 11:59:03.000000000 +0200
@@ -45,12 +45,11 @@
#if defined(__GLIBC__) && defined(_LIBC)
/* crypt.h from glibc-crypt-2.1 will define struct crypt_data for us */
#include "crypt.h"
+#include "ufc-crypt.h"
+#include "crypt-private.h"
+
extern char *__md5_crypt_r(const char *key, const char *salt,
char *buffer, int buflen);
-/* crypt-entry.c needs to be patched to define __des_crypt_r rather than
- * __crypt_r, and not define crypt_r and crypt at all */
-extern char *__des_crypt_r(const char *key, const char *salt,
- struct crypt_data *data);
extern struct crypt_data _ufc_foobar;
#endif
@@ -266,6 +264,7 @@
weak_alias(__crypt_ra, crypt_ra)
weak_alias(__crypt_r, crypt_r)
weak_alias(__crypt, crypt)
+weak_alias(__crypt, fcrypt)
weak_alias(__crypt_gensalt_rn, crypt_gensalt_rn)
weak_alias(__crypt_gensalt_ra, crypt_gensalt_ra)
weak_alias(__crypt_gensalt, crypt_gensalt)
--- crypt/crypt_blowfish.c
+++ crypt/crypt_blowfish.c 2005/04/28 10:59:24
@@ -45,7 +45,7 @@
#endif
#ifdef __i386__
-#define BF_ASM 1
+#define BF_ASM 0
#define BF_SCALE 1
#elif defined(__alpha__) || defined(__hppa__)
#define BF_ASM 0

196
ctype_b.c Normal file
View File

@ -0,0 +1,196 @@
/*
* ctype_b.c
*
* This file has been added to compensate buggy object files
* using __ctype_b, __ctype_tolower and __ctype_toupper.
*
* This file only allows the linking of this buggy object files,
* there is no gurantee, that it will work correct. Linking of
* object files is only possible with the same glibc as they are
* compiled with.
*
* Compile this file with -fPIC and add it to the link stage of
* your application.
*
*/
#include <stdint.h>
#define CTYPE_EXTERN_INLINE /* Define real functions for accessors. */
#include <ctype.h>
static const char _nl_C_LC_CTYPE_class[768] =
/* 0x80 */ "\000\000" "\000\000" "\000\000" "\000\000" "\000\000" "\000\000"
/* 0x86 */ "\000\000" "\000\000" "\000\000" "\000\000" "\000\000" "\000\000"
/* 0x8c */ "\000\000" "\000\000" "\000\000" "\000\000" "\000\000" "\000\000"
/* 0x92 */ "\000\000" "\000\000" "\000\000" "\000\000" "\000\000" "\000\000"
/* 0x98 */ "\000\000" "\000\000" "\000\000" "\000\000" "\000\000" "\000\000"
/* 0x9e */ "\000\000" "\000\000" "\000\000" "\000\000" "\000\000" "\000\000"
/* 0xa4 */ "\000\000" "\000\000" "\000\000" "\000\000" "\000\000" "\000\000"
/* 0xaa */ "\000\000" "\000\000" "\000\000" "\000\000" "\000\000" "\000\000"
/* 0xb0 */ "\000\000" "\000\000" "\000\000" "\000\000" "\000\000" "\000\000"
/* 0xb6 */ "\000\000" "\000\000" "\000\000" "\000\000" "\000\000" "\000\000"
/* 0xbc */ "\000\000" "\000\000" "\000\000" "\000\000" "\000\000" "\000\000"
/* 0xc2 */ "\000\000" "\000\000" "\000\000" "\000\000" "\000\000" "\000\000"
/* 0xc8 */ "\000\000" "\000\000" "\000\000" "\000\000" "\000\000" "\000\000"
/* 0xce */ "\000\000" "\000\000" "\000\000" "\000\000" "\000\000" "\000\000"
/* 0xd4 */ "\000\000" "\000\000" "\000\000" "\000\000" "\000\000" "\000\000"
/* 0xda */ "\000\000" "\000\000" "\000\000" "\000\000" "\000\000" "\000\000"
/* 0xe0 */ "\000\000" "\000\000" "\000\000" "\000\000" "\000\000" "\000\000"
/* 0xe6 */ "\000\000" "\000\000" "\000\000" "\000\000" "\000\000" "\000\000"
/* 0xec */ "\000\000" "\000\000" "\000\000" "\000\000" "\000\000" "\000\000"
/* 0xf2 */ "\000\000" "\000\000" "\000\000" "\000\000" "\000\000" "\000\000"
/* 0xf8 */ "\000\000" "\000\000" "\000\000" "\000\000" "\000\000" "\000\000"
/* 0xfe */ "\000\000" "\000\000" "\002\000" "\002\000" "\002\000" "\002\000"
/* 0x04 */ "\002\000" "\002\000" "\002\000" "\002\000" "\002\000" "\003\040"
/* 0x0a */ "\002\040" "\002\040" "\002\040" "\002\040" "\002\000" "\002\000"
/* 0x10 */ "\002\000" "\002\000" "\002\000" "\002\000" "\002\000" "\002\000"
/* 0x16 */ "\002\000" "\002\000" "\002\000" "\002\000" "\002\000" "\002\000"
/* 0x1c */ "\002\000" "\002\000" "\002\000" "\002\000" "\001\140" "\004\300"
/* 0x22 */ "\004\300" "\004\300" "\004\300" "\004\300" "\004\300" "\004\300"
/* 0x28 */ "\004\300" "\004\300" "\004\300" "\004\300" "\004\300" "\004\300"
/* 0x2e */ "\004\300" "\004\300" "\010\330" "\010\330" "\010\330" "\010\330"
/* 0x34 */ "\010\330" "\010\330" "\010\330" "\010\330" "\010\330" "\010\330"
/* 0x3a */ "\004\300" "\004\300" "\004\300" "\004\300" "\004\300" "\004\300"
/* 0x40 */ "\004\300" "\010\325" "\010\325" "\010\325" "\010\325" "\010\325"
/* 0x46 */ "\010\325" "\010\305" "\010\305" "\010\305" "\010\305" "\010\305"
/* 0x4c */ "\010\305" "\010\305" "\010\305" "\010\305" "\010\305" "\010\305"
/* 0x52 */ "\010\305" "\010\305" "\010\305" "\010\305" "\010\305" "\010\305"
/* 0x58 */ "\010\305" "\010\305" "\010\305" "\004\300" "\004\300" "\004\300"
/* 0x5e */ "\004\300" "\004\300" "\004\300" "\010\326" "\010\326" "\010\326"
/* 0x64 */ "\010\326" "\010\326" "\010\326" "\010\306" "\010\306" "\010\306"
/* 0x6a */ "\010\306" "\010\306" "\010\306" "\010\306" "\010\306" "\010\306"
/* 0x70 */ "\010\306" "\010\306" "\010\306" "\010\306" "\010\306" "\010\306"
/* 0x76 */ "\010\306" "\010\306" "\010\306" "\010\306" "\010\306" "\004\300"
/* 0x7c */ "\004\300" "\004\300" "\004\300" "\002\000" "\000\000" "\000\000"
/* 0x82 */ "\000\000" "\000\000" "\000\000" "\000\000" "\000\000" "\000\000"
/* 0x88 */ "\000\000" "\000\000" "\000\000" "\000\000" "\000\000" "\000\000"
/* 0x8e */ "\000\000" "\000\000" "\000\000" "\000\000" "\000\000" "\000\000"
/* 0x94 */ "\000\000" "\000\000" "\000\000" "\000\000" "\000\000" "\000\000"
/* 0x9a */ "\000\000" "\000\000" "\000\000" "\000\000" "\000\000" "\000\000"
/* 0xa0 */ "\000\000" "\000\000" "\000\000" "\000\000" "\000\000" "\000\000"
/* 0xa6 */ "\000\000" "\000\000" "\000\000" "\000\000" "\000\000" "\000\000"
/* 0xac */ "\000\000" "\000\000" "\000\000" "\000\000" "\000\000" "\000\000"
/* 0xb2 */ "\000\000" "\000\000" "\000\000" "\000\000" "\000\000" "\000\000"
/* 0xb8 */ "\000\000" "\000\000" "\000\000" "\000\000" "\000\000" "\000\000"
/* 0xbe */ "\000\000" "\000\000" "\000\000" "\000\000" "\000\000" "\000\000"
/* 0xc4 */ "\000\000" "\000\000" "\000\000" "\000\000" "\000\000" "\000\000"
/* 0xca */ "\000\000" "\000\000" "\000\000" "\000\000" "\000\000" "\000\000"
/* 0xd0 */ "\000\000" "\000\000" "\000\000" "\000\000" "\000\000" "\000\000"
/* 0xd6 */ "\000\000" "\000\000" "\000\000" "\000\000" "\000\000" "\000\000"
/* 0xdc */ "\000\000" "\000\000" "\000\000" "\000\000" "\000\000" "\000\000"
/* 0xe2 */ "\000\000" "\000\000" "\000\000" "\000\000" "\000\000" "\000\000"
/* 0xe8 */ "\000\000" "\000\000" "\000\000" "\000\000" "\000\000" "\000\000"
/* 0xee */ "\000\000" "\000\000" "\000\000" "\000\000" "\000\000" "\000\000"
/* 0xf4 */ "\000\000" "\000\000" "\000\000" "\000\000" "\000\000" "\000\000"
/* 0xfa */ "\000\000" "\000\000" "\000\000" "\000\000" "\000\000" "\000\000"
;
static const uint32_t _nl_C_LC_CTYPE_toupper[384] =
{
/* 0x80 */ 0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87,
/* 0x88 */ 0x88, 0x89, 0x8a, 0x8b, 0x8c, 0x8d, 0x8e, 0x8f,
/* 0x90 */ 0x90, 0x91, 0x92, 0x93, 0x94, 0x95, 0x96, 0x97,
/* 0x98 */ 0x98, 0x99, 0x9a, 0x9b, 0x9c, 0x9d, 0x9e, 0x9f,
/* 0xa0 */ 0xa0, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, 0xa7,
/* 0xa8 */ 0xa8, 0xa9, 0xaa, 0xab, 0xac, 0xad, 0xae, 0xaf,
/* 0xb0 */ 0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, 0xb6, 0xb7,
/* 0xb8 */ 0xb8, 0xb9, 0xba, 0xbb, 0xbc, 0xbd, 0xbe, 0xbf,
/* 0xc0 */ 0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7,
/* 0xc8 */ 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf,
/* 0xd0 */ 0xd0, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7,
/* 0xd8 */ 0xd8, 0xd9, 0xda, 0xdb, 0xdc, 0xdd, 0xde, 0xdf,
/* 0xe0 */ 0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7,
/* 0xe8 */ 0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, 0xee, 0xef,
/* 0xf0 */ 0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7,
/* 0xf8 */ 0xf8, 0xf9, 0xfa, 0xfb, 0xfc, 0xfd, 0xfe, 0xffffffff,
/* 0x00 */ 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
/* 0x08 */ 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f,
/* 0x10 */ 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17,
/* 0x18 */ 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f,
/* 0x20 */ 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27,
/* 0x28 */ 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f,
/* 0x30 */ 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37,
/* 0x38 */ 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f,
/* 0x40 */ 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47,
/* 0x48 */ 0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f,
/* 0x50 */ 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57,
/* 0x58 */ 0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f,
/* 0x60 */ 0x60, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47,
/* 0x68 */ 0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f,
/* 0x70 */ 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57,
/* 0x78 */ 0x58, 0x59, 0x5a, 0x7b, 0x7c, 0x7d, 0x7e, 0x7f,
/* 0x80 */ 0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87,
/* 0x88 */ 0x88, 0x89, 0x8a, 0x8b, 0x8c, 0x8d, 0x8e, 0x8f,
/* 0x90 */ 0x90, 0x91, 0x92, 0x93, 0x94, 0x95, 0x96, 0x97,
/* 0x98 */ 0x98, 0x99, 0x9a, 0x9b, 0x9c, 0x9d, 0x9e, 0x9f,
/* 0xa0 */ 0xa0, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, 0xa7,
/* 0xa8 */ 0xa8, 0xa9, 0xaa, 0xab, 0xac, 0xad, 0xae, 0xaf,
/* 0xb0 */ 0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, 0xb6, 0xb7,
/* 0xb8 */ 0xb8, 0xb9, 0xba, 0xbb, 0xbc, 0xbd, 0xbe, 0xbf,
/* 0xc0 */ 0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7,
/* 0xc8 */ 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf,
/* 0xd0 */ 0xd0, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7,
/* 0xd8 */ 0xd8, 0xd9, 0xda, 0xdb, 0xdc, 0xdd, 0xde, 0xdf,
/* 0xe0 */ 0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7,
/* 0xe8 */ 0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, 0xee, 0xef,
/* 0xf0 */ 0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7,
/* 0xf8 */ 0xf8, 0xf9, 0xfa, 0xfb, 0xfc, 0xfd, 0xfe, 0xff
};
static const uint32_t _nl_C_LC_CTYPE_tolower[384] =
{
/* 0x80 */ 0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87,
/* 0x88 */ 0x88, 0x89, 0x8a, 0x8b, 0x8c, 0x8d, 0x8e, 0x8f,
/* 0x90 */ 0x90, 0x91, 0x92, 0x93, 0x94, 0x95, 0x96, 0x97,
/* 0x98 */ 0x98, 0x99, 0x9a, 0x9b, 0x9c, 0x9d, 0x9e, 0x9f,
/* 0xa0 */ 0xa0, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, 0xa7,
/* 0xa8 */ 0xa8, 0xa9, 0xaa, 0xab, 0xac, 0xad, 0xae, 0xaf,
/* 0xb0 */ 0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, 0xb6, 0xb7,
/* 0xb8 */ 0xb8, 0xb9, 0xba, 0xbb, 0xbc, 0xbd, 0xbe, 0xbf,
/* 0xc0 */ 0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7,
/* 0xc8 */ 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf,
/* 0xd0 */ 0xd0, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7,
/* 0xd8 */ 0xd8, 0xd9, 0xda, 0xdb, 0xdc, 0xdd, 0xde, 0xdf,
/* 0xe0 */ 0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7,
/* 0xe8 */ 0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, 0xee, 0xef,
/* 0xf0 */ 0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7,
/* 0xf8 */ 0xf8, 0xf9, 0xfa, 0xfb, 0xfc, 0xfd, 0xfe, 0xffffffff,
/* 0x00 */ 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
/* 0x08 */ 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f,
/* 0x10 */ 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17,
/* 0x18 */ 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f,
/* 0x20 */ 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27,
/* 0x28 */ 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f,
/* 0x30 */ 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37,
/* 0x38 */ 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f,
/* 0x40 */ 0x40, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67,
/* 0x48 */ 0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f,
/* 0x50 */ 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77,
/* 0x58 */ 0x78, 0x79, 0x7a, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f,
/* 0x60 */ 0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67,
/* 0x68 */ 0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f,
/* 0x70 */ 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77,
/* 0x78 */ 0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, 0x7e, 0x7f,
/* 0x80 */ 0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87,
/* 0x88 */ 0x88, 0x89, 0x8a, 0x8b, 0x8c, 0x8d, 0x8e, 0x8f,
/* 0x90 */ 0x90, 0x91, 0x92, 0x93, 0x94, 0x95, 0x96, 0x97,
/* 0x98 */ 0x98, 0x99, 0x9a, 0x9b, 0x9c, 0x9d, 0x9e, 0x9f,
/* 0xa0 */ 0xa0, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, 0xa7,
/* 0xa8 */ 0xa8, 0xa9, 0xaa, 0xab, 0xac, 0xad, 0xae, 0xaf,
/* 0xb0 */ 0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, 0xb6, 0xb7,
/* 0xb8 */ 0xb8, 0xb9, 0xba, 0xbb, 0xbc, 0xbd, 0xbe, 0xbf,
/* 0xc0 */ 0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7,
/* 0xc8 */ 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf,
/* 0xd0 */ 0xd0, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7,
/* 0xd8 */ 0xd8, 0xd9, 0xda, 0xdb, 0xdc, 0xdd, 0xde, 0xdf,
/* 0xe0 */ 0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7,
/* 0xe8 */ 0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, 0xee, 0xef,
/* 0xf0 */ 0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7,
/* 0xf8 */ 0xf8, 0xf9, 0xfa, 0xfb, 0xfc, 0xfd, 0xfe, 0xff
};
#define b(t,x,o) (((const t *) _nl_C_LC_CTYPE_##x) + o)
const unsigned short int *__ctype_b = b (unsigned short int, class, 128);
const __int32_t *__ctype_tolower = b (__int32_t, tolower, 128);
const __int32_t *__ctype_toupper = b (__int32_t, toupper, 128);

View File

@ -0,0 +1,33 @@
References: bnc#361697
Index: sysdeps/posix/getaddrinfo.c
===================================================================
--- sysdeps/posix/getaddrinfo.c.orig
+++ sysdeps/posix/getaddrinfo.c
@@ -269,7 +269,7 @@ extern service_user *__nss_hosts_databas
static int
gaih_inet (const char *name, const struct gaih_service *service,
const struct addrinfo *req, struct addrinfo **pai,
- unsigned int *naddrs)
+ unsigned int *naddrs, bool usable_ipv6)
{
const struct gaih_typeproto *tp = gaih_inet_typeproto;
struct gaih_servtuple *st = (struct gaih_servtuple *) &nullserv;
@@ -762,7 +762,7 @@ gaih_inet (const char *name, const struc
if (fct != NULL)
{
if (req->ai_family == AF_INET6
- || req->ai_family == AF_UNSPEC)
+ || (req->ai_family == AF_UNSPEC && usable_ipv6))
{
gethosts (AF_INET6, struct in6_addr);
no_inet6_data = no_data;
@@ -2151,7 +2151,7 @@ getaddrinfo (const char *name, const cha
if (hints->ai_family == AF_UNSPEC || hints->ai_family == AF_INET
|| hints->ai_family == AF_INET6)
{
- last_i = gaih_inet (name, pservice, hints, end, &naddrs);
+ last_i = gaih_inet (name, pservice, hints, end, &naddrs, seen_ipv6);
if (last_i != 0)
{
freeaddrinfo (p);

169
glibc-2.10-dns-fixpack.diff Normal file
View File

@ -0,0 +1,169 @@
2008-11-26 Ulrich Drepper <drepper@redhat.com>
* sysdeps/posix/getaddrinfo.c (getaddrinfo): Only restrict search
to IPv4 or IPv6 if an interface has been found.
--- sysdeps/posix/getaddrinfo.c 30 Jul 2008 19:14:22 -0000 1.136
+++ sysdeps/posix/getaddrinfo.c 3 Dec 2008 07:04:10 -0000 1.139
@@ -2108,7 +2110,7 @@ getaddrinfo (const char *name, const cha
{
/* If we haven't seen both IPv4 and IPv6 interfaces we can
narrow down the search. */
- if (! seen_ipv4 || ! seen_ipv6)
+ if ((! seen_ipv4 || ! seen_ipv6) && (seen_ipv4 || seen_ipv6))
{
local_hints = *hints;
local_hints.ai_family = seen_ipv4 ? PF_INET : PF_INET6;
2008-12-02 Ulrich Drepper <drepper@redhat.com>
* sysdeps/posix/getaddrinfo.c (gaih_inet): In case we use
gethostbyname4_r, we don't have a separate IPv6 status, so copy
the no_data variable.
--- sysdeps/posix/getaddrinfo.c 30 Jul 2008 19:14:22 -0000 1.136
+++ sysdeps/posix/getaddrinfo.c 3 Dec 2008 07:04:10 -0000 1.139
@@ -733,6 +733,8 @@ gaih_inet (const char *name, const struc
tmpbuflen, 2 * tmpbuflen);
}
+ no_inet6_data = no_data;
+
if (status == NSS_STATUS_SUCCESS)
{
if ((req->ai_flags & AI_CANONNAME) != 0 && canon == NULL)
2008-12-02 Ulrich Drepper <drepper@redhat.com>
* resolv/res_init.c (__res_vinit): Initialize nscount to zero.
* resolv/res_init.c (__res_vinit): Fill in IPv4 name server
information at the correct index.
2008-12-07 Ulrich Drepper <drepper@redhat.com>
* resolv/res_init.c (__res_vinit): Always assign to statp->nscount
after reading name server list.
--- resolv/res_init.c 7 Apr 2008 17:20:25 -0000 1.47
+++ resolv/res_init.c 8 Dec 2008 03:59:05 -0000 1.50
@@ -183,7 +183,7 @@ __res_vinit(res_state statp, int preinit
#endif
statp->nsaddr.sin_family = AF_INET;
statp->nsaddr.sin_port = htons(NAMESERVER_PORT);
- statp->nscount = 1;
+ statp->nscount = 0;
statp->ndots = 1;
statp->pfcode = 0;
statp->_vcsock = -1;
@@ -314,9 +314,9 @@ __res_vinit(res_state statp, int preinit
cp++;
if ((*cp != '\0') && (*cp != '\n')
&& __inet_aton(cp, &a)) {
- statp->nsaddr_list[nserv].sin_addr = a;
- statp->nsaddr_list[nserv].sin_family = AF_INET;
- statp->nsaddr_list[nserv].sin_port =
+ statp->nsaddr_list[nservall].sin_addr = a;
+ statp->nsaddr_list[nservall].sin_family = AF_INET;
+ statp->nsaddr_list[nservall].sin_port =
htons(NAMESERVER_PORT);
nserv++;
#ifdef _LIBC
@@ -420,8 +420,7 @@ __res_vinit(res_state statp, int preinit
continue;
}
}
- if (nserv > 1)
- statp->nscount = nserv;
+ statp->nscount = nserv;
#ifdef _LIBC
if (nservall - nserv > 0) {
statp->_u._ext.nscount6 = nservall - nserv;
2008-12-02 Ulrich Drepper <drepper@redhat.com>
* resolv/nss_dns/dns-host.c (_nss_dns_gethostbyname3_r): Recognize
ESRCH return value.
(_nss_dns_gethostbyname4_r): Likewise.
--- resolv/nss_dns/dns-host.c 12 Nov 2008 07:52:20 -0000 1.54
+++ resolv/nss_dns/dns-host.c 3 Dec 2008 07:09:26 -0000 1.55
@@ -198,8 +198,14 @@ _nss_dns_gethostbyname3_r (const char *n
1024, &host_buffer.ptr, NULL, NULL, NULL);
if (n < 0)
{
- status = (errno == ECONNREFUSED
- ? NSS_STATUS_UNAVAIL : NSS_STATUS_NOTFOUND);
+ if (errno == ESRCH)
+ {
+ status = NSS_STATUS_TRYAGAIN;
+ h_errno = TRY_AGAIN;
+ }
+ else
+ status = (errno == ECONNREFUSED
+ ? NSS_STATUS_UNAVAIL : NSS_STATUS_NOTFOUND);
*h_errnop = h_errno;
if (h_errno == TRY_AGAIN)
*errnop = EAGAIN;
@@ -304,8 +310,14 @@ _nss_dns_gethostbyname4_r (const char *n
&ans2p, &nans2p, &resplen2);
if (n < 0)
{
- status = (errno == ECONNREFUSED
- ? NSS_STATUS_UNAVAIL : NSS_STATUS_NOTFOUND);
+ if (errno == ESRCH)
+ {
+ status = NSS_STATUS_TRYAGAIN;
+ h_errno = TRY_AGAIN;
+ }
+ else
+ status = (errno == ECONNREFUSED
+ ? NSS_STATUS_UNAVAIL : NSS_STATUS_NOTFOUND);
*herrnop = h_errno;
if (h_errno == TRY_AGAIN)
*errnop = EAGAIN;
2008-12-29 Ulrich Drepper <drepper@redhat.com>
* resolv/res_init.c (__res_vinit): Count all servers in statp->nscount.
diff -u -r1.50 -r1.51
--- resolv/res_init.c 2008/12/08 03:59:05 1.50
+++ resolv/res_init.c 2008/12/29 19:53:31 1.51
@@ -420,7 +420,7 @@
continue;
}
}
- statp->nscount = nserv;
+ statp->nscount = nservall;
#ifdef _LIBC
if (nservall - nserv > 0) {
statp->_u._ext.nscount6 = nservall - nserv;
2009-01-16 Petr Baudis <pasky@suse.cz>
* resolv/res_libc (__res_maybe_init): Call __res_vinit()
even if we currently have zero nscount.
diff --git a/resolv/res_libc.c b/resolv/res_libc.c
index 8af57f7..810fbc8 100644
--- resolv/res_libc.c
+++ resolv/res_libc.c
@@ -96,10 +96,9 @@ __res_maybe_init (res_state resp, int preinit)
{
if (resp->options & RES_INIT) {
if (__res_initstamp != resp->_u._ext.initstamp) {
- if (resp->nscount > 0) {
+ if (resp->nscount > 0)
__res_iclose (resp, true);
- return __res_vinit (resp, 1);
- }
+ return __res_vinit (resp, 1);
}
return 0;
} else if (preinit) {

View File

@ -0,0 +1,26 @@
The gethostbyname4() lookup method is problematic since it fires out both
the A and AAAA DNS queries in parallel and over the same socket. This
should work in theory, but it turns out that many cheap DSL modems and
similar devices have buggy DNS servers - if the AAAA query arrives too
quickly after the A query, the server will generate only a single reply
with the A query id but returning an error for the AAAA query; we get
stuck waiting for the second reply.
For gethostbyname4() users affected, disabling IPv6 in the system might
work around the issue, unfortunately it only helps with applications
using AI_ADDRCONFIG (e.g. Firefox); some (notably e.g. Pidgin) neglect
to do that.
Real fix should be using separate ports for the A and AAAA queries.
--- resolv/Versions 2008-08-02 10:26:09.000000000 +0200
+++ resolv/Versions 2008-12-08 12:51:53.000000000 +0100
@@ -102,7 +102,7 @@ libnss_dns {
_nss_dns_gethostbyname_r; _nss_dns_getnetbyaddr_r;
_nss_dns_getnetbyname_r; _nss_dns_getcanonname_r;
_nss_dns_gethostbyaddr2_r;
- _nss_dns_gethostbyname4_r;
+# _nss_dns_gethostbyname4_r;
}
}

View File

@ -0,0 +1,26 @@
diff --git a/localedata/locales/csb_PL b/localedata/locales/csb_PL
index 663fd6c..93c9ae2 100644
--- localedata/locales/csb_PL
+++ localedata/locales/csb_PL
@@ -184,7 +184,7 @@ t_fmt_ampm ""
date_fmt "<U0025><U0061><U0020><U0025><U0062><U0020><U0025><U0065>/
<U0020><U0025><U0048><U003A><U0025><U004D><U003A><U0025><U0053><U0020>/
<U0025><U005A><U0020><U0025><U0059>"
-week 7;19971201;4
+week 7;19971130;4
first_weekday 2
first_workday 2
END LC_TIME
diff --git a/localedata/locales/en_GB b/localedata/locales/en_GB
index fe58f1f..6a81d6d 100644
--- localedata/locales/en_GB
+++ localedata/locales/en_GB
@@ -121,7 +121,7 @@ t_fmt_ampm ""
date_fmt "<U0025><U0061><U0020><U0025><U0062><U0020><U0025><U0065>/
<U0020><U0025><U0048><U003A><U0025><U004D><U003A><U0025><U0053><U0020>/
<U0025><U005A><U0020><U0025><U0059>"
-week 7;19971201;4
+week 7;19971130;4
first_weekday 2
first_workday 2
END LC_TIME

84
glibc-2.10-nis-hosts.diff Normal file
View File

@ -0,0 +1,84 @@
===================================================================
RCS file: /cvs/glibc/libc/nis/nss_nis/nis-hosts.c,v
retrieving revision 1.29
retrieving revision 1.31
diff -u -r1.29 -r1.31
--- nis/nss_nis/nis-hosts.c 2008/05/10 23:23:25 1.29
+++ nis/nss_nis/nis-hosts.c 2008/12/07 17:06:43 1.31
@@ -485,24 +485,6 @@
return retval;
}
- struct parser_data data;
- struct hostent host;
- int parse_res = parse_line (result, &host, &data, buflen, errnop, AF_UNSPEC,
- 0);
- if (__builtin_expect (parse_res < 1, 0))
- {
- if (parse_res == -1)
- {
- *herrnop = NETDB_INTERNAL;
- return NSS_STATUS_TRYAGAIN;
- }
- else
- {
- *herrnop = HOST_NOT_FOUND;
- return NSS_STATUS_NOTFOUND;
- }
- }
-
if (*pat == NULL)
{
uintptr_t pad = (-(uintptr_t) buffer
@@ -524,16 +506,47 @@
buflen -= sizeof (struct gaih_addrtuple);
}
- (*pat)->next = NULL;
- size_t h_name_len = strlen (host.h_name);
- if (h_name_len >= buflen)
+ uintptr_t pad = -(uintptr_t) buffer % __alignof__ (struct parser_data);
+ buffer += pad;
+
+ struct parser_data *data = (void *) buffer;
+
+ if (__builtin_expect (buflen < sizeof *data + 1 + pad, 0))
goto erange;
- (*pat)->name = memcpy (buffer, host.h_name, h_name_len + 1);
+ buflen -= pad;
+
+ struct hostent host;
+ int parse_res = parse_line (result, &host, data, buflen, errnop, AF_UNSPEC,
+ 0);
+ if (__builtin_expect (parse_res < 1, 0))
+ {
+ if (parse_res == -1)
+ {
+ *herrnop = NETDB_INTERNAL;
+ return NSS_STATUS_TRYAGAIN;
+ }
+ else
+ {
+ *herrnop = HOST_NOT_FOUND;
+ return NSS_STATUS_NOTFOUND;
+ }
+ }
+
+ (*pat)->next = NULL;
(*pat)->family = host.h_addrtype;
memcpy ((*pat)->addr, host.h_addr_list[0], host.h_length);
(*pat)->scopeid = 0;
assert (host.h_addr_list[1] == NULL);
+ /* Undo the alignment for parser_data. */
+ buffer -= pad;
+ buflen += pad;
+
+ size_t h_name_len = strlen (host.h_name) + 1;
+ if (h_name_len >= buflen)
+ goto erange;
+ (*pat)->name = memcpy (buffer, host.h_name, h_name_len);
+
free (result);
return NSS_STATUS_SUCCESS;

View File

@ -0,0 +1,15 @@
http://sourceware.org/bugzilla/show_bug.cgi?id=9741
diff --git a/nscd/mem.c b/nscd/mem.c
index e821729..1f7215e 100644
--- nscd/mem.c
+++ nscd/mem.c
@@ -163,7 +163,7 @@ gc (struct database_dyn *db)
else
{
he = xmalloc (memory_needed);
- he_data = &he[db->head->nentries * sizeof (struct hashentry *)];
+ he_data = &he[db->head->nentries];
he_use_malloc = true;
}

View File

@ -0,0 +1,86 @@
--- nscd/mem.c~ 2008-11-23 12:59:15.000000000 +0100
+++ nscd/mem.c 2008-11-23 13:52:01.000000000 +0100
@@ -392,6 +392,7 @@
moves = moves->next = new_move;
}
+ ref_t off_alloc_start = off_alloc;
/* The following loop will prepare to move this much data. */
off_free += off_allocend - off_alloc;
@@ -410,23 +411,60 @@
else
{
- assert (next_data < &he_data[db->head->nentries]);
- assert ((*next_data)->packet == off_alloc);
- struct datahead *dh = (struct datahead *) (db->data + off_alloc);
- do
- {
- assert ((*next_data)->key >= (*next_data)->packet);
- assert ((*next_data)->key + (*next_data)->len
- <= (*next_data)->packet + dh->allocsize);
-
- (*next_data)->packet -= disp;
- (*next_data)->key -= disp;
- ++next_data;
+ if (next_data < &he_data[db->head->nentries] && (*next_data)->packet == off_alloc)
+ {
+ struct datahead *dh = (struct datahead *) (db->data + off_alloc);
+ do
+ {
+ assert ((*next_data)->key >= (*next_data)->packet);
+ assert ((*next_data)->key + (*next_data)->len
+ <= (*next_data)->packet + dh->allocsize);
+
+ (*next_data)->packet -= disp;
+ (*next_data)->key -= disp;
+ ++next_data;
+ }
+ while (next_data < &he_data[db->head->nentries]
+ && (*next_data)->packet == off_alloc);
+
+ off_alloc += (dh->allocsize + BLOCK_ALIGN_M1) & ~BLOCK_ALIGN_M1;
}
- while (next_data < &he_data[db->head->nentries]
- && (*next_data)->packet == off_alloc);
+ else
+ {
+ /* This is not yet a hashed element but an in-flight
+ * mempool allocation. We cannot displace it, so we
+ * reset the shake-down at this point; typically,
+ * the in-flight allocations will be at the top of
+ * the pool, thus nothing will be above it and we will
+ * shake it down in the next gc run. In theory, we can
+ * grow the pool indefinitely if we always hit gc at
+ * the point we have an in-flight allocation, but
+ * that does not seem to be a realistic scenario. */
+ nscd_ssize_t blocklen = 0;
+ struct mem_in_flight *mrunp = mem_in_flight_list;
+
+ /* See the first mem_in_flight_list loop above
+ * for correctness considerations. */
+ /* Typically, we have only tiny number of in_flight
+ * records so we don't need to bother pre-sorting
+ * the list. */
+ while (!blocklen && mrunp != NULL)
+ {
+ for (enum in_flight idx = IDX_result_data;
+ idx < IDX_last && mrunp->block[idx].dbidx == db - dbs; ++idx)
+ if (mrunp->block[idx].blockoff == off_alloc)
+ blocklen = mrunp->block[idx].blocklen;
+
+ mrunp = mrunp->next;
+ }
+ assert(blocklen > 0);
+
+ moves->size = off_alloc - off_alloc_start;
+ off_free = off_allocend;
+ disp = 0;
- off_alloc += (dh->allocsize + BLOCK_ALIGN_M1) & ~BLOCK_ALIGN_M1;
+ off_alloc += blocklen;
+ }
}
}
assert (off_alloc == off_allocend);

View File

@ -0,0 +1,16 @@
--- nscd/nscd.h~ 2009-01-21 02:14:55.875774000 +0100
+++ nscd/nscd.h 2009-01-21 02:15:58.519066000 +0100
@@ -60,7 +60,12 @@
/* Maximum size of stack frames we allow the thread to use. We use
80% of the thread stack size. */
-#define MAX_STACK_USE ((8 * NSCD_THREAD_STACKSIZE) / 10)
+// #define MAX_STACK_USE ((8 * NSCD_THREAD_STACKSIZE) / 10)
+/* alloca() calls use extra space on stack that we cannot reliably
+ account for, the optimization effect is not that big and they are
+ prone to hard-to-debug crashes. In short, they are much more trouble
+ than they are worth. */
+#define MAX_STACK_USE 0
/* Structure describing dynamic part of one database. */

View File

@ -0,0 +1,88 @@
diff --git a/nscd/connections.c b/nscd/connections.c
index e3a6738..597e1a7 100644
--- nscd/connections.c
+++ nscd/connections.c
@@ -109,6 +109,7 @@ struct database_dyn dbs[lastdb] =
[pwddb] = {
.lock = PTHREAD_RWLOCK_WRITER_NONRECURSIVE_INITIALIZER_NP,
.prune_lock = PTHREAD_MUTEX_INITIALIZER,
+ .prune_run_lock = PTHREAD_MUTEX_INITIALIZER,
.enabled = 0,
.check_file = 1,
.persistent = 0,
@@ -129,6 +130,7 @@ struct database_dyn dbs[lastdb] =
[grpdb] = {
.lock = PTHREAD_RWLOCK_WRITER_NONRECURSIVE_INITIALIZER_NP,
.prune_lock = PTHREAD_MUTEX_INITIALIZER,
+ .prune_run_lock = PTHREAD_MUTEX_INITIALIZER,
.enabled = 0,
.check_file = 1,
.persistent = 0,
@@ -149,6 +151,7 @@ struct database_dyn dbs[lastdb] =
[hstdb] = {
.lock = PTHREAD_RWLOCK_WRITER_NONRECURSIVE_INITIALIZER_NP,
.prune_lock = PTHREAD_MUTEX_INITIALIZER,
+ .prune_run_lock = PTHREAD_MUTEX_INITIALIZER,
.enabled = 0,
.check_file = 1,
.persistent = 0,
@@ -169,6 +172,7 @@ struct database_dyn dbs[lastdb] =
[servdb] = {
.lock = PTHREAD_RWLOCK_WRITER_NONRECURSIVE_INITIALIZER_NP,
.prune_lock = PTHREAD_MUTEX_INITIALIZER,
+ .prune_run_lock = PTHREAD_MUTEX_INITIALIZER,
.enabled = 0,
.check_file = 1,
.persistent = 0,
@@ -975,9 +979,9 @@ invalidate_cache (char *key, int fd)
if (dbs[number].enabled)
{
- pthread_mutex_lock (&dbs[number].prune_lock);
+ pthread_mutex_lock (&dbs[number].prune_run_lock);
prune_cache (&dbs[number], LONG_MAX, fd);
- pthread_mutex_unlock (&dbs[number].prune_lock);
+ pthread_mutex_unlock (&dbs[number].prune_run_lock);
}
else
{
@@ -1492,6 +1496,7 @@ nscd_run_prune (void *p)
dbs[my_number].wakeup_time = now + CACHE_PRUNE_INTERVAL + my_number;
pthread_mutex_t *prune_lock = &dbs[my_number].prune_lock;
+ pthread_mutex_t *prune_run_lock = &dbs[my_number].prune_run_lock;
pthread_cond_t *prune_cond = &dbs[my_number].prune_cond;
pthread_mutex_lock (prune_lock);
@@ -1523,7 +1528,10 @@ nscd_run_prune (void *p)
time_t prune_now = dbs[my_number].clear_cache ? LONG_MAX : now;
dbs[my_number].clear_cache = 0;
+ /* prune_cache() must be run with prune_lock off since
+ cache_add() needs to take the lock. */
pthread_mutex_unlock (prune_lock);
+ pthread_mutex_lock (prune_run_lock);
next_wait = prune_cache (&dbs[my_number], prune_now, -1);
@@ -1538,6 +1546,7 @@ nscd_run_prune (void *p)
dbs[my_number].head->timestamp = now;
}
+ pthread_mutex_unlock (prune_run_lock);
pthread_mutex_lock (prune_lock);
/* Make it known when we will wake up again. */
diff --git a/nscd/nscd.h b/nscd/nscd.h
index 5c77dd3..a828f3e 100644
--- nscd/nscd.h
+++ nscd/nscd.h
@@ -68,7 +68,7 @@ struct database_dyn
{
pthread_rwlock_t lock;
pthread_cond_t prune_cond;
- pthread_mutex_t prune_lock;
+ pthread_mutex_t prune_lock, prune_run_lock;
time_t wakeup_time;
int enabled;

View File

@ -0,0 +1,29 @@
20090108 Ryan S. Arnold <rsa@us.ibm.com>
* sysdeps/unix/sysv/linux/powerpc/powerpc32/setcontext-common.S
(__CONTEXT_FUNC_NAME): Fix mtfsf to use fp31 instead of fp0.
* sysdeps/unix/sysv/linux/powerpc/powerpc32/swapcontext-common.S
(__CONTEXT_FUNC_NAME): Fix mtfsf to use fp31 instead of fp0.
--- sysdeps/unix/sysv/linux/powerpc/powerpc32/setcontext-common.S 2009-01-08 10:01:44.000000000 -0600
+++ sysdeps/unix/sysv/linux/powerpc/powerpc32/setcontext-common.S 2009-01-08 16:54:10.000000000 -0600
@@ -202,7 +202,7 @@
lfd fp0,_UC_FREGS+(0*8)(r31)
# ifdef _ARCH_PWR6
/* Use the extended four-operand version of the mtfsf insn. */
- mtfsf 0xff,fp0,1,0
+ mtfsf 0xff,fp31,1,0
# else
/* Availability of DFP indicates a 64-bit FPSCR. */
andi. r6,r7,PPC_FEATURE_HAS_DFP
--- sysdeps/unix/sysv/linux/powerpc/powerpc32/swapcontext-common.S 2009-01-08 10:01:44.000000000 -0600
+++ sysdeps/unix/sysv/linux/powerpc/powerpc32/swapcontext-common.S 2009-01-08 16:54:17.000000000 -0600
@@ -428,7 +428,7 @@
lfd fp0,_UC_FREGS+(0*8)(r31)
# ifdef _ARCH_PWR6
/* Use the extended four-operand version of the mtfsf insn. */
- mtfsf 0xff,fp0,1,0
+ mtfsf 0xff,fp31,1,0
# else
/* Availability of DFP indicates a 64-bit FPSCR. */
andi. r6,r7,PPC_FEATURE_HAS_DFP

69
glibc-2.10-unsetenv.diff Normal file
View File

@ -0,0 +1,69 @@
2008-12-01 Ulrich Drepper <drepper@redhat.com>
* stdlib/setenv.c (unsetenv): Don't search environment if it does
not exist.
* stdlib/Makefile (tests): Add tst-unsetenv1.
* stdlib/tst-unsetenv1.c: New file.
--- stdlib/Makefile 8 Mar 2008 21:31:19 -0000 1.122
+++ stdlib/Makefile 2 Dec 2008 02:27:21 -0000 1.123
@@ -69,7 +69,7 @@ tests := tst-strtol tst-strtod testmb t
test-a64l tst-qsort tst-system testmb2 bug-strtod2 \
tst-atof1 tst-atof2 tst-strtod2 tst-strtod3 tst-rand48-2 \
tst-makecontext tst-strtod4 tst-strtod5 tst-qsort2 \
- tst-makecontext2 tst-strtod6
+ tst-makecontext2 tst-strtod6 tst-unsetenv1
include ../Makeconfig
--- stdlib/setenv.c 14 Dec 2005 10:44:05 -0000 1.1
+++ stdlib/setenv.c 2 Dec 2008 01:39:44 -0000 1.2
@@ -292,19 +292,20 @@ unsetenv (name)
LOCK;
ep = __environ;
- while (*ep != NULL)
- if (!strncmp (*ep, name, len) && (*ep)[len] == '=')
- {
- /* Found it. Remove this pointer by moving later ones back. */
- char **dp = ep;
-
- do
- dp[0] = dp[1];
- while (*dp++);
- /* Continue the loop in case NAME appears again. */
- }
- else
- ++ep;
+ if (ep != NULL)
+ while (*ep != NULL)
+ if (!strncmp (*ep, name, len) && (*ep)[len] == '=')
+ {
+ /* Found it. Remove this pointer by moving later ones back. */
+ char **dp = ep;
+
+ do
+ dp[0] = dp[1];
+ while (*dp++);
+ /* Continue the loop in case NAME appears again. */
+ }
+ else
+ ++ep;
UNLOCK;
--- stdlib/tst-unsetenv1.c 1 Jan 1970 00:00:00 -0000
+++ stdlib/tst-unsetenv1.c 2 Dec 2008 02:27:12 -0000 1.1
@@ -0,0 +1,12 @@
+#include <stdlib.h>
+
+static int
+do_test (void)
+{
+ clearenv ();
+ unsetenv ("FOO");
+ return 0;
+}
+
+#define TEST_FUNCTION do_test ()
+#include "../test-skeleton.c"

76
glibc-2.2-sunrpc.diff Normal file
View File

@ -0,0 +1,76 @@
diff -urN glibc-2.2.4/sunrpc/clnt_udp.c glibc-2.2.4.new/sunrpc/clnt_udp.c
--- sunrpc/clnt_udp.c Tue Aug 24 11:34:36 2004
+++ sunrpc/clnt_udp.c Tue Aug 24 11:35:19 2004
@@ -272,6 +272,7 @@
XDR *xdrs;
int outlen = 0;
int inlen;
+ int pollresult;
socklen_t fromlen;
struct pollfd fd;
int milliseconds = (cu->cu_wait.tv_sec * 1000) +
@@ -342,37 +343,36 @@
anyup = 0;
for (;;)
{
- switch (__poll (&fd, 1, milliseconds))
+ switch (pollresult = __poll (&fd, 1, milliseconds))
{
-
case 0:
- if (anyup == 0)
- {
- anyup = is_network_up (cu->cu_sock);
- if (!anyup)
- return (cu->cu_error.re_status = RPC_CANTRECV);
- }
-
- time_waited.tv_sec += cu->cu_wait.tv_sec;
- time_waited.tv_usec += cu->cu_wait.tv_usec;
- while (time_waited.tv_usec >= 1000000)
- {
- time_waited.tv_sec++;
- time_waited.tv_usec -= 1000000;
- }
- if ((time_waited.tv_sec < timeout.tv_sec) ||
- ((time_waited.tv_sec == timeout.tv_sec) &&
- (time_waited.tv_usec < timeout.tv_usec)))
- goto send_again;
- return (cu->cu_error.re_status = RPC_TIMEDOUT);
-
- /*
- * buggy in other cases because time_waited is not being
- * updated.
- */
case -1:
- if (errno == EINTR)
- continue;
+ if (pollresult == 0 || errno == EINTR) {
+ if (anyup == 0)
+ {
+ anyup = is_network_up (cu->cu_sock);
+ if (!anyup)
+ return (cu->cu_error.re_status = RPC_CANTRECV);
+ }
+
+ time_waited.tv_sec += cu->cu_wait.tv_sec;
+ time_waited.tv_usec += cu->cu_wait.tv_usec;
+ while (time_waited.tv_usec >= 1000000)
+ {
+ time_waited.tv_sec++;
+ time_waited.tv_usec -= 1000000;
+ }
+ if ((time_waited.tv_sec < timeout.tv_sec) ||
+ ((time_waited.tv_sec == timeout.tv_sec) &&
+ (time_waited.tv_usec < timeout.tv_usec)))
+ if (pollresult == 0)
+ goto send_again;
+ else
+ continue;
+ return (cu->cu_error.re_status = RPC_TIMEDOUT);
+ }
+
+ /* errno != EINTR */
cu->cu_error.re_errno = errno;
return (cu->cu_error.re_status = RPC_CANTRECV);
}

37
glibc-2.3-SuSE.diff Normal file
View File

@ -0,0 +1,37 @@
--- io/Makefile
+++ io/Makefile 2003/02/24 12:15:52
@@ -56,7 +56,7 @@
others := pwd
test-srcs := ftwtest
-tests := test-utime test-stat test-stat2 test-lfs tst-getcwd \
+tests := test-utime test-stat test-stat2 tst-getcwd \
tst-fcntl bug-ftw1 bug-ftw2 bug-ftw3 bug-ftw4 tst-statvfs \
tst-openat tst-unlinkat tst-fstatat tst-futimesat \
distribute := ftwtest-sh
--- libio/stdio.h 23 Apr 2003 10:13:22 -0000 1.1.1.14
+++ libio/stdio.h 23 Apr 2003 10:27:07 -0000 1.10
@@ -142,10 +142,12 @@ typedef _G_fpos64_t fpos64_t;
extern struct _IO_FILE *stdin; /* Standard input stream. */
extern struct _IO_FILE *stdout; /* Standard output stream. */
extern struct _IO_FILE *stderr; /* Standard error output stream. */
+#ifdef __STDC__
/* C89/C99 say they're macros. Make them happy. */
#define stdin stdin
#define stdout stdout
#define stderr stderr
+#endif
__BEGIN_NAMESPACE_STD
/* Remove file FILENAME. */
--- stdio-common/Makefile
+++ stdio-common/Makefile 2005/12/05 11:13:59
@@ -48,7 +48,7 @@
temptest tst-fileno test-fwrite tst-ungetc tst-ferror \
xbug errnobug \
bug1 bug2 bug3 bug4 bug5 bug6 bug7 bug8 bug9 bug10 bug11 bug12 bug13 \
- tfformat tiformat tllformat tstdiomisc tst-printfsz tst-wc-printf \
+ tfformat tiformat tllformat tst-printfsz tst-wc-printf \
scanf1 scanf2 scanf3 scanf4 scanf5 scanf7 scanf8 scanf9 scanf10 \
scanf11 scanf12 tst-tmpnam tst-cookie tst-obprintf tst-sscanf \
tst-swprintf tst-fseek tst-fmemopen test-vfprintf tst-gets \

11
glibc-2.3-regcomp.diff Normal file
View File

@ -0,0 +1,11 @@
--- posix/regcomp.c 2003-11-26 08:54:28.000000000 +0100
+++ posix/regcomp.c 2003-11-27 11:41:00.000000000 +0100
@@ -2191,6 +2191,8 @@
else if (syntax & RE_CONTEXT_INDEP_OPS)
{
fetch_token (token, regexp, syntax);
+ if (token->type == OP_CLOSE_SUBEXP || token->type == OP_ALT)
+ return NULL;
return parse_expression (regexp, preg, token, syntax, nest, err);
}
/* else fall through */

View File

@ -0,0 +1,68 @@
-------------------------------------------------------------------
Mon Oct 21 17:20:04 CEST 2002 - schwab@suse.de
- Fix alignment in locale-archive.
--- locale/programs/locarchive.c 2002-10-18 11:14:16.000000000 +0200
+++ locale/programs/locarchive.c 2002-10-21 13:28:27.000000000 +0200
@@ -72,6 +72,9 @@ static const char *locnames[] =
#define INITIAL_NUM_SUMS 2000
+#define ALIGN(offset, alignment) \
+ (((offset) + (alignment) - 1) & -(alignment))
+
static void
create_archive (const char *archivefname, struct locarhandle *ah)
{
@@ -90,8 +93,9 @@ create_archive (const char *archivefname
/* Create the initial content of the archive. */
head.magic = AR_MAGIC;
head.serial = 0;
- head.namehash_offset = sizeof (struct locarhead);
+ head.namehash_offset = ALIGN (sizeof (struct locarhead),
+ __alignof__ (struct namehashent));
head.namehash_used = 0;
head.namehash_size = next_prime (INITIAL_NUM_NAMES);
@@ -99,12 +103,15 @@ create_archive (const char *archivefname
head.string_used = 0;
head.string_size = INITIAL_SIZE_STRINGS;
- head.locrectab_offset = head.string_offset + head.string_size;
+ head.locrectab_offset = ALIGN (head.string_offset + head.string_size,
+ __alignof__ (struct locrecent));
head.locrectab_used = 0;
head.locrectab_size = INITIAL_NUM_LOCREC;
- head.sumhash_offset = (head.locrectab_offset
- + head.locrectab_size * sizeof (struct locrecent));
+ head.sumhash_offset = ALIGN (head.locrectab_offset
+ + (head.locrectab_size
+ * sizeof (struct locrecent)),
+ __alignof__ (struct sumhashent));
head.sumhash_used = 0;
head.sumhash_size = next_prime (INITIAL_NUM_SUMS);
@@ -274,13 +281,16 @@ enlarge_archive (struct locarhandle *ah,
* sizeof (struct namehashent)));
newhead.string_size = MAX (2 * newhead.string_used, newhead.string_size);
- newhead.locrectab_offset = newhead.string_offset + newhead.string_size;
+ newhead.locrectab_offset = ALIGN (newhead.string_offset
+ + newhead.string_size,
+ __alignof__ (struct locrecent));
newhead.locrectab_size = MAX (2 * newhead.locrectab_used,
newhead.locrectab_size);
- newhead.sumhash_offset = (newhead.locrectab_offset
- + (newhead.locrectab_size
- * sizeof (struct locrecent)));
+ newhead.sumhash_offset = ALIGN (newhead.locrectab_offset
+ + (newhead.locrectab_size
+ * sizeof (struct locrecent)),
+ __alignof__ (struct sumhashent));
newhead.sumhash_size = MAX (next_prime (2 * newhead.sumhash_used),
newhead.sumhash_size);

View File

@ -0,0 +1,53 @@
Index: sysdeps/unix/sysv/linux/tcsetattr.c
===================================================================
RCS file: /cvs/glibc/libc/sysdeps/unix/sysv/linux/tcsetattr.c,v
retrieving revision 1.14
retrieving revision 1.13
diff -u -r1.14 -r1.13
--- sysdeps/unix/sysv/linux/tcsetattr.c 21 Feb 2003 00:09:04 -0000 1.14
+++ sysdeps/unix/sysv/linux/tcsetattr.c 17 Feb 2003 19:48:44 -0000 1.13
@@ -56,6 +56,7 @@
{
struct __kernel_termios k_termios;
unsigned long int cmd;
+ int retval;
switch (optional_actions)
{
@@ -87,6 +88,35 @@
memcpy (&k_termios.c_cc[0], &termios_p->c_cc[0],
__KERNEL_NCCS * sizeof (cc_t));
- return INLINE_SYSCALL (ioctl, 3, fd, cmd, &k_termios);
+ retval = INLINE_SYSCALL (ioctl, 3, fd, cmd, &k_termios);
+
+ if (retval == 0 && cmd == TCSETS)
+ {
+ /* The Linux kernel has a bug which silently ignore the invalid
+ c_cflag on pty. We have to check it here. */
+ int save = errno;
+ retval = INLINE_SYSCALL (ioctl, 3, fd, TCGETS, &k_termios);
+ if (retval)
+ {
+ /* We cannot verify if the setting is ok. We don't return
+ an error (?). */
+ __set_errno (save);
+ retval = 0;
+ }
+ else if ((termios_p->c_cflag & (PARENB | CREAD))
+ != (k_termios.c_cflag & (PARENB | CREAD))
+ || ((termios_p->c_cflag & CSIZE)
+ && ((termios_p->c_cflag & CSIZE)
+ != (k_termios.c_cflag & CSIZE))))
+ {
+ /* It looks like the Linux kernel silently changed the
+ PARENB/CREAD/CSIZE bits in c_cflag. Report it as an
+ error. */
+ __set_errno (EINVAL);
+ retval = -1;
+ }
+ }
+
+ return retval;
}
libc_hidden_def (tcsetattr)

View File

@ -0,0 +1,43 @@
-------------------------------------------------------------------
Wed Jun 4 14:29:07 CEST 2003 - kukuk@suse.de
- Make --no-archive default for localedef
--- locale/programs/localedef.c
+++ locale/programs/localedef.c 2003/06/04 11:03:28
@@ -83,7 +83,7 @@
static struct localedef_t *locales;
/* If true don't add locale data to archive. */
-bool no_archive;
+bool no_archive = true;
/* If true add named locales to archive. */
static bool add_to_archive;
@@ -114,6 +114,7 @@
#define OPT_REPLACE 307
#define OPT_DELETE_FROM_ARCHIVE 308
#define OPT_LIST_ARCHIVE 309
+#define OPT_ARCHIVE 310
/* Definitions of arguments for argp functions. */
static const struct argp_option options[] =
@@ -135,6 +136,8 @@
N_("Suppress warnings and information messages") },
{ "verbose", 'v', NULL, 0, N_("Print more messages") },
{ NULL, 0, NULL, 0, N_("Archive control:") },
+ { "archive", OPT_ARCHIVE, NULL, 0,
+ N_("Add new data to archive") },
{ "no-archive", OPT_NO_ARCHIVE, NULL, 0,
N_("Don't add new data to archive") },
{ "add-to-archive", OPT_ADD_TO_ARCHIVE, NULL, 0,
@@ -315,6 +318,9 @@
case OPT_PREFIX:
output_prefix = arg;
break;
+ case OPT_ARCHIVE:
+ no_archive = false;
+ break;
case OPT_NO_ARCHIVE:
no_archive = true;
break;

View File

@ -0,0 +1,38 @@
This fixes ceil (x) for -1.0 < x < 0.
--- sysdeps/x86_64/fpu/s_ceil.c 2003-11-26 15:25:50.000000000 +0100
+++ sysdeps/x86_64/fpu/s_ceil.c 2003-11-27 13:57:35.000000000 +0100
@@ -34,7 +34,11 @@
/* x is +zero or -zero; return the same zero */
return x;
else if (xneg) /* x < 0.0 */
- return 0.0;
+ {
+ /* Return zero with the sign of x */
+ PUT_BITS_DP64(SIGNBIT_DP64, x);
+ return x;
+ }
else
return 1.0;
}
--- sysdeps/x86_64/fpu/s_ceilf.c 2003-11-26 15:25:50.000000000 +0100
+++ sysdeps/x86_64/fpu/s_ceilf.c 2003-11-27 13:57:35.000000000 +0100
@@ -34,7 +34,11 @@
/* x is +zero or -zero; return the same zero */
return x;
else if (xneg) /* x < 0.0 */
- return 0.0F;
+ {
+ /* Return zero with the sign of x */
+ PUT_BITS_SP32(SIGNBIT_SP32, x);
+ return x;
+ }
else
return 1.0F;
}
--
Andreas Jaeger, aj@suse.de, http://www.suse.de/~aj
SuSE Linux AG, Deutschherrnstr. 15-19, 90429 Nürnberg, Germany
GPG fingerprint = 93A3 365E CE47 B889 DF7F FED1 389A 563C C272 A126

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,45 @@
--- locale/programs/3level.h
+++ locale/programs/3level.h 2004/09/26 06:58:48
@@ -204,6 +204,42 @@
}
}
}
+
+/* GCC ATM seems to do a poor job with pointers to nested functions passed
+ to inlined functions. Help it a little bit with this hack. */
+#define wchead_table_iterate(tp, fn) \
+do \
+ { \
+ struct wchead_table *t = (tp); \
+ uint32_t index1; \
+ for (index1 = 0; index1 < t->level1_size; index1++) \
+ { \
+ uint32_t lookup1 = t->level1[index1]; \
+ if (lookup1 != ((uint32_t) ~0)) \
+ { \
+ uint32_t lookup1_shifted = lookup1 << t->q; \
+ uint32_t index2; \
+ for (index2 = 0; index2 < (1 << t->q); index2++) \
+ { \
+ uint32_t lookup2 = t->level2[index2 + lookup1_shifted]; \
+ if (lookup2 != ((uint32_t) ~0)) \
+ { \
+ uint32_t lookup2_shifted = lookup2 << t->p; \
+ uint32_t index3; \
+ for (index3 = 0; index3 < (1 << t->p); index3++) \
+ { \
+ struct element_t *lookup3 \
+ = t->level3[index3 + lookup2_shifted]; \
+ if (lookup3 != NULL) \
+ fn ((((index1 << t->q) + index2) << t->p) + index3, \
+ lookup3); \
+ } \
+ } \
+ } \
+ } \
+ } \
+ } while (0)
+
#endif
#ifndef NO_FINALIZE

View File

@ -0,0 +1,21 @@
2004-12-09 Thorsten Kukuk <kukuk@suse.de>
* nscd/nscd.h: Move persistent storage back to /var/run/nscd
--- nscd/nscd.h
+++ nscd/nscd.h 2004/12/09 13:17:35
@@ -87,10 +87,10 @@
/* Paths of the file for the persistent storage. */
-#define _PATH_NSCD_PASSWD_DB "/var/db/nscd/passwd"
-#define _PATH_NSCD_GROUP_DB "/var/db/nscd/group"
-#define _PATH_NSCD_HOSTS_DB "/var/db/nscd/hosts"
-#define _PATH_NSCD_SERVICES_DB "/var/db/nscd/services"
+#define _PATH_NSCD_PASSWD_DB "/var/run/nscd/passwd"
+#define _PATH_NSCD_GROUP_DB "/var/run/nscd/group"
+#define _PATH_NSCD_HOSTS_DB "/var/run/nscd/hosts"
+#define _PATH_NSCD_SERVICES_DB "/var/run/nscd/services"
/* Path used when not using persistent storage. */
#define _PATH_NSCD_XYZ_DB_TMP "/var/run/nscd/dbXXXXXX"

View File

@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:901fe715360fd55d2d83ceab113bacca58a2b9cba3673d80b184760976236ffd
size 1036487

View File

@ -0,0 +1,111 @@
Index: nscd/aicache.c
===================================================================
--- nscd/aicache.c.orig
+++ nscd/aicache.c
@@ -515,10 +515,15 @@ next_nip:
if (fd != -1)
TEMP_FAILURE_RETRY (send (fd, &notfound, total, MSG_NOSIGNAL));
- dataset = mempool_alloc (db, sizeof (struct dataset) + req->key_len,
- IDX_result_data);
/* If we cannot permanently store the result, so be it. */
- if (dataset != NULL)
+ if (db->negtimeout == 0)
+ {
+ /* Mark the old entry as obsolete. */
+ if (dh != NULL)
+ dh->usable = false;
+ dataset = NULL;
+ }
+ else if ((dataset = mempool_alloc (db, sizeof (struct dataset) + req->key_len, IDX_result_data)) == NULL)
{
dataset->head.allocsize = sizeof (struct dataset) + req->key_len;
dataset->head.recsize = total;
Index: nscd/grpcache.c
===================================================================
--- nscd/grpcache.c.orig
+++ nscd/grpcache.c
@@ -113,10 +113,14 @@ cache_addgr (struct database_dyn *db, in
written = TEMP_FAILURE_RETRY (send (fd, &notfound, total,
MSG_NOSIGNAL));
- dataset = mempool_alloc (db, sizeof (struct dataset) + req->key_len,
- IDX_result_data);
/* If we cannot permanently store the result, so be it. */
- if (dataset != NULL)
+ if (db->negtimeout == 0)
+ {
+ /* Mark the old entry as obsolete. */
+ if (dh != NULL)
+ dh->usable = false;
+ }
+ else if ((dataset = mempool_alloc (db, sizeof (struct dataset) + req->key_len, IDX_result_data)) == NULL)
{
dataset->head.allocsize = sizeof (struct dataset) + req->key_len;
dataset->head.recsize = total;
Index: nscd/hstcache.c
===================================================================
--- nscd/hstcache.c.orig
+++ nscd/hstcache.c
@@ -119,10 +119,14 @@ cache_addhst (struct database_dyn *db, i
MSG_NOSIGNAL)) != total)
all_written = false;
- dataset = mempool_alloc (db, sizeof (struct dataset) + req->key_len,
- IDX_result_data);
/* If we cannot permanently store the result, so be it. */
- if (dataset != NULL)
+ if (db->negtimeout == 0)
+ {
+ /* Mark the old entry as obsolete. */
+ if (dh != NULL)
+ dh->usable = false;
+ }
+ else if ((dataset = mempool_alloc (db, sizeof (struct dataset) + req->key_len, IDX_result_data)) == NULL)
{
dataset->head.allocsize = sizeof (struct dataset) + req->key_len;
dataset->head.recsize = total;
Index: nscd/initgrcache.c
===================================================================
--- nscd/initgrcache.c.orig
+++ nscd/initgrcache.c
@@ -197,10 +197,14 @@ addinitgroupsX (struct database_dyn *db,
written = TEMP_FAILURE_RETRY (send (fd, &notfound, total,
MSG_NOSIGNAL));
- dataset = mempool_alloc (db, sizeof (struct dataset) + req->key_len,
- IDX_result_data);
/* If we cannot permanently store the result, so be it. */
- if (dataset != NULL)
+ if (db->negtimeout == 0)
+ {
+ /* Mark the old entry as obsolete. */
+ if (dh != NULL)
+ dh->usable = false;
+ }
+ else if ((dataset = mempool_alloc (db, sizeof (struct dataset) + req->key_len, IDX_result_data)) == NULL)
{
dataset->head.allocsize = sizeof (struct dataset) + req->key_len;
dataset->head.recsize = total;
Index: nscd/pwdcache.c
===================================================================
--- nscd/pwdcache.c.orig
+++ nscd/pwdcache.c
@@ -120,10 +120,14 @@ cache_addpw (struct database_dyn *db, in
written = TEMP_FAILURE_RETRY (send (fd, &notfound, total,
MSG_NOSIGNAL));
- dataset = mempool_alloc (db, sizeof (struct dataset) + req->key_len,
- IDX_result_data);
/* If we cannot permanently store the result, so be it. */
- if (dataset != NULL)
+ if (db->negtimeout == 0)
+ {
+ /* Mark the old entry as obsolete. */
+ if (dh != NULL)
+ dh->usable = false;
+ }
+ else if ((dataset = mempool_alloc (db, sizeof (struct dataset) + req->key_len, IDX_result_data)) == NULL)
{
dataset->head.allocsize = sizeof (struct dataset) + req->key_len;
dataset->head.recsize = total;

View File

@ -0,0 +1,150 @@
--- sunrpc/bindrsvprt.c
+++ sunrpc/bindrsvprt.c 2005/11/23 13:36:23
@@ -30,28 +30,108 @@
* Copyright (c) 1987 by Sun Microsystems, Inc.
*/
+#include <stdio.h>
+#include <ctype.h>
#include <errno.h>
+#include <stdlib.h>
#include <unistd.h>
#include <string.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
+#define STARTPORT 600
+#define LOWPORT 512
+#define ENDPORT (IPPORT_RESERVED - 1)
+#define NPORTS (ENDPORT - STARTPORT + 1)
+
+/*
+ * Read the file /etc/rpc.blacklisted, so that we don't bind
+ * to this ports.
+ */
+
+static int blacklist_read;
+static int *list;
+static int list_size = 0;
+
+static void
+load_blacklist (void)
+{
+ FILE *fp;
+ char *buf = NULL;
+ size_t buflen = 0;
+ int size = 0, ptr = 0;
+
+ blacklist_read = 1;
+
+ fp = fopen ("/etc/bindresvport.blacklist", "r");
+ if (NULL == fp)
+ return;
+
+ while (!feof (fp))
+ {
+ unsigned long port;
+ char *tmp, *cp;
+ ssize_t n = __getline (&buf, &buflen, fp);
+ if (n < 1)
+ break;
+
+ cp = buf;
+ tmp = strchr (cp, '#'); /* remove comments */
+ if (tmp)
+ *tmp = '\0';
+ while (isspace ((int)*cp)) /* remove spaces and tabs */
+ ++cp;
+ if (*cp == '\0') /* ignore empty lines */
+ continue;
+ if (cp[strlen (cp) - 1] == '\n')
+ cp[strlen (cp) - 1] = '\0';
+
+ port = strtoul (cp, &tmp, 0);
+ while (isspace(*tmp))
+ ++tmp;
+ if (*tmp != '\0' || (port == ULONG_MAX && errno == ERANGE))
+ continue;
+
+ /* Don't bother with out-of-range ports */
+ if (port < LOWPORT || port > ENDPORT)
+ continue;
+
+ if (ptr >= size)
+ {
+ size += 10;
+ list = realloc (list, size * sizeof (int));
+ if (list == NULL)
+ {
+ free (buf);
+ return;
+ }
+ }
+
+ list[ptr++] = port;
+ }
+
+ fclose (fp);
+
+ if (buf)
+ free (buf);
+
+ list_size = ptr;
+}
+
/*
* Bind a socket to a privileged IP port
*/
int
bindresvport (int sd, struct sockaddr_in *sin)
{
+ static short startport = STARTPORT;
static short port;
struct sockaddr_in myaddr;
int i;
-#define STARTPORT 600
-#define LOWPORT 512
-#define ENDPORT (IPPORT_RESERVED - 1)
-#define NPORTS (ENDPORT - STARTPORT + 1)
- static short startport = STARTPORT;
+ if (!blacklist_read)
+ load_blacklist ();
if (sin == (struct sockaddr_in *) 0)
{
@@ -70,6 +148,7 @@
port = (__getpid () % NPORTS) + STARTPORT;
}
+ __set_errno (EADDRINUSE);
/* Initialize to make gcc happy. */
int res = -1;
@@ -78,12 +157,22 @@
again:
for (i = 0; i < nports; ++i)
{
- sin->sin_port = htons (port++);
- if (port > endport)
- port = startport;
+ int j;
+
+ sin->sin_port = htons (port);
+
+ /* Check, if this port is not blacklisted. */
+ for (j = 0; j < list_size; j++)
+ if (port == list[j])
+ goto try_next_port;
+
res = __bind (sd, sin, sizeof (struct sockaddr_in));
if (res >= 0 || errno != EADDRINUSE)
break;
+
+try_next_port:
+ if (++port > endport)
+ port = startport;
}
if (i == nports && startport != LOWPORT)

58
glibc-2.3.90-fnmatch.diff Normal file
View File

@ -0,0 +1,58 @@
When fnmatch detects an invalid multibyte character it should fall back to
single byte matching, so that "*" has a chance to match such a string.
Andreas.
2005-04-12 Andreas Schwab <schwab@suse.de>
* posix/fnmatch.c (fnmatch): If conversion to wide character
fails fall back to single byte matching.
Index: posix/fnmatch.c
===================================================================
--- posix/fnmatch.c.orig 2007-05-18 10:40:34.000000000 +0200
+++ posix/fnmatch.c 2007-05-18 13:21:47.199478000 +0200
@@ -327,6 +327,7 @@
# if HANDLE_MULTIBYTE
if (__builtin_expect (MB_CUR_MAX, 1) != 1)
{
+ const char *orig_pattern = pattern;
mbstate_t ps;
size_t n;
const char *p;
@@ -378,10 +379,8 @@
wstring = (wchar_t *) alloca ((n + 1) * sizeof (wchar_t));
n = mbsrtowcs (wstring, &p, n + 1, &ps);
if (__builtin_expect (n == (size_t) -1, 0))
- /* Something wrong.
- XXX Do we have to set `errno' to something which mbsrtows hasn't
- already done? */
- return -1;
+ /* Something wrong. Fall back to single byte matching. */
+ goto try_singlebyte;
if (p)
memset (&ps, '\0', sizeof (ps));
}
@@ -389,10 +388,8 @@
{
n = mbsrtowcs (NULL, &string, 0, &ps);
if (__builtin_expect (n == (size_t) -1, 0))
- /* Something wrong.
- XXX Do we have to set `errno' to something which mbsrtows hasn't
- already done? */
- return -1;
+ /* Something wrong. Fall back to single byte matching. */
+ goto try_singlebyte;
wstring = (wchar_t *) alloca ((n + 1) * sizeof (wchar_t));
assert (mbsinit (&ps));
(void) mbsrtowcs (wstring, &string, n + 1, &ps);
@@ -400,6 +397,9 @@
return internal_fnwmatch (wpattern, wstring, wstring + n,
flags & FNM_PERIOD, flags, NULL);
+
+ try_singlebyte:
+ pattern = orig_pattern;
}
# endif /* mbstate_t and mbsrtowcs or _LIBC. */

View File

@ -0,0 +1,62 @@
Index: intl/loadmsgcat.c
===================================================================
RCS file: /cvs/glibc/libc/intl/loadmsgcat.c,v
retrieving revision 1.57
diff -u -p -r1.57 loadmsgcat.c
--- intl/loadmsgcat.c 28 Jul 2007 20:34:43 -0000 1.57
+++ intl/loadmsgcat.c 31 Aug 2007 15:36:40 -0000
@@ -806,8 +806,52 @@ _nl_load_domain (domain_file, domainbind
if (domain_file->filename == NULL)
goto out;
- /* Try to open the addressed file. */
- fd = open (domain_file->filename, O_RDONLY);
+ /* Replace /locale/ with /usr/share/locale-langpack/ */
+ const char *langpackdir = "/usr/share/locale-langpack/";
+ char *filename_langpack = malloc (strlen (domain_file->filename) +
+ strlen (langpackdir));
+ if (filename_langpack != NULL)
+ {
+ char *p = strstr (domain_file->filename, "/locale/");
+ if (p != NULL)
+ {
+ strcpy (filename_langpack, langpackdir);
+ strcpy (&filename_langpack[strlen (langpackdir)],
+ (p+8));
+ if ((fd = open (filename_langpack, O_RDONLY)) == -1)
+ fd = open (domain_file->filename, O_RDONLY);
+ }
+ else
+ /* Try to open the addressed file. */
+ fd = open (domain_file->filename, O_RDONLY);
+
+ free (filename_langpack);
+ }
+ else
+ /* Try to open the addressed file. */
+ fd = open (domain_file->filename, O_RDONLY);
+
+ if (fd == -1)
+ {
+ /* Use the fallback directory. */
+ const char *bundle_dir = "/usr/share/locale-bundle/";
+ char *filename_bundle = malloc (strlen (domain_file->filename) +
+ strlen (bundle_dir));
+ if (filename_bundle != NULL)
+ {
+ char *p = strstr (domain_file->filename, "/locale/");
+ if (p != NULL)
+ {
+ strcpy (filename_bundle, bundle_dir);
+ strcpy (&filename_bundle[strlen (bundle_dir)],
+ (p+8));
+ fd = open (filename_bundle, O_RDONLY);
+ }
+
+ free (filename_bundle);
+ }
+ }
+
if (fd == -1)
goto out;

View File

@ -0,0 +1,76 @@
Index: elf/dl-load.c
===================================================================
--- elf/dl-load.c.orig
+++ elf/dl-load.c
@@ -1219,6 +1219,9 @@ cannot allocate TLS data structures for
goto call_lose_errno;
}
+ if (GLRO(dl_madvise))
+ posix_fadvise (fd, c->mapoff, maplength, POSIX_FADV_WILLNEED);
+
l->l_map_end = l->l_map_start + maplength;
l->l_addr = l->l_map_start - c->mapstart;
Index: elf/dl-support.c
===================================================================
--- elf/dl-support.c.orig
+++ elf/dl-support.c
@@ -41,6 +41,7 @@ size_t _dl_platformlen;
int _dl_debug_mask;
int _dl_lazy;
+int _dl_madvise;
ElfW(Addr) _dl_use_load_bias = -2;
int _dl_dynamic_weak;
@@ -240,6 +241,8 @@ _dl_non_dynamic_init (void)
_dl_lazy = *(getenv ("LD_BIND_NOW") ?: "") == '\0';
+ _dl_madvise = *(getenv ("LD_NOMADVISE") ?: "") == '\0';
+
_dl_bind_not = *(getenv ("LD_BIND_NOT") ?: "") != '\0';
_dl_dynamic_weak = *(getenv ("LD_DYNAMIC_WEAK") ?: "") == '\0';
Index: elf/rtld.c
===================================================================
--- elf/rtld.c.orig
+++ elf/rtld.c
@@ -152,6 +152,7 @@ struct rtld_global_ro _rtld_global_ro at
._dl_lazy = 1,
._dl_fpu_control = _FPU_DEFAULT,
._dl_pointer_guard = 1,
+ ._dl_madvise = 1,
/* Function pointers. */
._dl_debug_printf = _dl_debug_printf,
@@ -2619,6 +2620,14 @@ process_envvars (enum mode *modep)
break;
case 9:
+ /* Test whether we should not advise the kernel
+ about memory usage. */
+ if (memcmp (envline, "NOMADVISE", 9) == 0)
+ {
+ GLRO(dl_madvise) = envline[10] == '\0';
+ break;
+ }
+
/* Test whether we want to see the content of the auxiliary
array passed up from the kernel. */
if (!INTUSE(__libc_enable_secure)
Index: sysdeps/generic/ldsodefs.h
===================================================================
--- sysdeps/generic/ldsodefs.h.orig
+++ sysdeps/generic/ldsodefs.h
@@ -567,6 +567,9 @@ struct rtld_global_ro
/* Do we do lazy relocations? */
EXTERN int _dl_lazy;
+ /* Should we advise kernel about memory usage? */
+ EXTERN int _dl_madvise;
+
/* Nonzero if runtime lookups should not update the .got/.plt. */
EXTERN int _dl_bind_not;

View File

@ -0,0 +1,56 @@
--- elf/rtld.c
+++ elf/rtld.c 2005/04/12 10:05:38
@@ -1672,6 +1672,53 @@
}
}
+#if defined(__i386__)
+ /*
+ * Modifications by Red Hat Software
+ *
+ * Deal with the broken binaries from the non-versioned ages of glibc.
+ * If a binary does not have version information enabled, we assume that
+ * it is a glibc 2.0 binary and we load a compatibility library to try to
+ * overcome binary incompatibilities.
+ * Blame: gafton@redhat.com
+ */
+#define LIB_NOVERSION "/lib/obsolete/noversion/libNoVersion.so.1"
+
+ if (__builtin_expect (main_map->l_info[DT_NUM + DT_THISPROCNUM
+ + DT_VERSIONTAGIDX (DT_VERNEED)]
+ == NULL, 0)
+ && (main_map->l_info[DT_DEBUG]
+ || !(GLRO(dl_debug_mask) & DL_DEBUG_PRELINK)))
+ {
+ struct stat test_st;
+ int test_fd;
+ int can_load;
+
+ HP_TIMING_NOW (start);
+
+ can_load = 1;
+ test_fd = __open (LIB_NOVERSION, O_RDONLY);
+ if (test_fd < 0) {
+ can_load = 0;
+ } else {
+ if (__fxstat (_STAT_VER, test_fd, &test_st) < 0 || test_st.st_size == 0) {
+ can_load = 0;
+ }
+ }
+
+ if (test_fd >= 0) /* open did no fail.. */
+ __close(test_fd); /* avoid fd leaks */
+
+ if (can_load != 0)
+ npreloads += do_preload (LIB_NOVERSION, main_map,
+ "nonversioned binary");
+
+ HP_TIMING_NOW (stop);
+ HP_TIMING_DIFF (diff, start, stop);
+ HP_TIMING_ACCUM_NT (load_time, diff);
+ }
+#endif
+
if (__builtin_expect (*first_preload != NULL, 0))
{
/* Set up PRELOADS with a vector of the preloaded libraries. */

View File

@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:0b02688b3e712aac40c8ef77b2ef2e2996abe86350d1827458571ba2cbeeed08
size 330830

29
glibc-2.4-china.diff Normal file
View File

@ -0,0 +1,29 @@
--- localedata/locales/zh_TW
+++ localedata/locales/zh_TW 2006/04/24 09:55:16
@@ -1,7 +1,7 @@
comment_char %
escape_char /
%
-% Chinese language locale for Taiwan R.O.C.
+% Chinese language locale for Taiwan
% charmap: BIG5-CP950
%
% Original Author:
@@ -17,7 +17,7 @@
% Reference: http://wwwold.dkuug.dk/JTC1/SC22/WG20/docs/n690.pdf
LC_IDENTIFICATION
-title "Chinese locale for Taiwan R.O.C."
+title "Chinese locale for Taiwan"
source ""
address ""
contact ""
@@ -25,7 +25,7 @@
tel ""
fax ""
language "Chinese"
-territory "Taiwan R.O.C."
+territory "Taiwan"
revision "0.2"
date "2000-08-02"
%

View File

@ -0,0 +1,456 @@
--- resolv/res_hconf.c
+++ resolv/res_hconf.c 2006/06/06 16:08:34
@@ -58,6 +58,7 @@
#define ENV_TRIM_ADD "RESOLV_ADD_TRIM_DOMAINS"
#define ENV_MULTI "RESOLV_MULTI"
#define ENV_REORDER "RESOLV_REORDER"
+#define ENV_MDNS "RESOLV_MDNS"
enum parse_cbs
{
@@ -80,7 +81,8 @@
{"multi", CB_arg_bool, HCONF_FLAG_MULTI},
{"nospoof", CB_arg_bool, HCONF_FLAG_SPOOF},
{"spoofalert", CB_arg_bool, HCONF_FLAG_SPOOFALERT},
- {"reorder", CB_arg_bool, HCONF_FLAG_REORDER}
+ {"reorder", CB_arg_bool, HCONF_FLAG_REORDER},
+ {"mdns", CB_arg_bool, HCONF_FLAG_MDNS}
};
/* Structure containing the state. */
@@ -304,6 +306,9 @@
memset (&_res_hconf, '\0', sizeof (_res_hconf));
+ /* Default for mdns is "on". */
+ _res_hconf.flags |= HCONF_FLAG_MDNS;
+
hconf_name = getenv (ENV_HOSTCONF);
if (hconf_name == NULL)
hconf_name = _PATH_HOSTCONF;
@@ -346,6 +351,10 @@
arg_trimdomain_list (ENV_TRIM_OVERR, 1, envval);
}
+ envval = getenv (ENV_MDNS);
+ if (envval)
+ arg_bool (ENV_MDNS, 1, envval, HCONF_FLAG_MDNS);
+
_res_hconf.initialized = 1;
}
--- resolv/res_hconf.h
+++ resolv/res_hconf.h 2006/06/06 16:06:46
@@ -37,6 +37,7 @@
# define HCONF_FLAG_SPOOFALERT (1 << 2) /* syslog warning of spoofed */
# define HCONF_FLAG_REORDER (1 << 3) /* list best address first */
# define HCONF_FLAG_MULTI (1 << 4) /* see comments for gethtbyname() */
+# define HCONF_FLAG_MDNS (1 << 5) /* Disable MDNS support */
};
extern struct hconf _res_hconf;
--- resolv/res_query.c
+++ resolv/res_query.c 2006/06/06 16:06:46
@@ -83,6 +83,8 @@
#include <stdlib.h>
#include <string.h>
+#include "res_hconf.h"
+
/* Options. Leave them on. */
/* #undef DEBUG */
@@ -286,6 +288,13 @@
*domain && !done;
domain++) {
+ if ((_res_hconf.flags & HCONF_FLAG_MDNS) != 0) {
+ /* don't add "local" domain if query contains a dot */
+ if (dots && (!__strcasecmp(*domain, "local") ||
+ !__strcasecmp(*domain, "local.")))
+ continue;
+ }
+
if (domain[0][0] == '\0' ||
(domain[0][0] == '.' && domain[0][1] == '\0'))
root_on_list++;
--- resolv/res_send.c
+++ resolv/res_send.c 2006/06/06 16:06:46
@@ -85,6 +85,9 @@
#include <arpa/nameser.h>
#include <arpa/inet.h>
#include <sys/ioctl.h>
+#if defined(_LIBC) && defined(linux)
+#include <net/if.h>
+#endif
#include <errno.h>
#include <fcntl.h>
@@ -96,6 +99,8 @@
#include <string.h>
#include <unistd.h>
+#include "res_hconf.h"
+
#if PACKETSZ > 65536
#define MAXPACKET PACKETSZ
#else
@@ -180,6 +185,9 @@
static int send_dg(res_state, const u_char *, int,
u_char **, int *, int *, int,
int *, int *, u_char **);
+static int send_dg_mdns(res_state, const u_char *, int,
+ u_char **, int *, int *, struct sockaddr_in6 *,
+ int *, int *, u_char **);
#ifdef DEBUG
static void Aerror(const res_state, FILE *, const char *, int,
const struct sockaddr *);
@@ -337,6 +345,35 @@
u_char *ans, int anssiz, u_char **ansp)
{
int gotsomewhere, terrno, try, v_circuit, resplen, ns, n;
+ int usemdns;
+ HEADER *qhp = (HEADER *) buf;
+
+ usemdns = 0;
+ if ((_res_hconf.flags & HCONF_FLAG_MDNS) != 0 &&
+ qhp->qr == 0 && qhp->opcode == QUERY && qhp->qdcount == htons(1)) {
+ /* got one simple query */
+ const u_char *bp, *be;
+ be = buf + buflen;
+ for (bp = buf + NS_HFIXEDSZ; bp < be; )
+ if ((*bp & NS_CMPRSFLGS) != 0)
+ break;
+ else if (*bp) {
+ if (*bp == 5 && !strncasecmp(bp, "\005local\000", 7)) {
+ usemdns = 1;
+ break;
+ }
+ if (*bp == 3 && !strncasecmp(bp, "\003254\003169\007in-addr\004arpa\000", 22)) {
+ usemdns = 1;
+ break;
+ }
+ if (*bp == 1 && !strncasecmp(bp, "\0010\0018\001e\001f\003ip6\004arpa\000", 18)) {
+ usemdns = 2;
+ break;
+ }
+ bp += *bp + 1;
+ } else
+ break;
+ }
if (statp->nscount == 0) {
__set_errno (ESRCH);
@@ -470,9 +507,24 @@
* Send request, RETRY times, or until successful.
*/
for (try = 0; try < statp->retry; try++) {
- for (ns = 0; ns < MAXNS; ns++)
+ for (ns = 0; ns < (usemdns ? 1 : MAXNS); ns++)
{
struct sockaddr_in6 *nsap = EXT(statp).nsaddrs[ns];
+ if (usemdns == 1) {
+ static struct sockaddr_in mdns4;
+ mdns4.sin_family = AF_INET;
+ mdns4.sin_port = htons(5353);
+ mdns4.sin_addr.s_addr = htonl(0xe00000fb);
+ nsap = (struct sockaddr_in6 *)&mdns4;
+ }
+ if (usemdns == 2) {
+ static struct sockaddr_in6 mdns6;
+ mdns6.sin6_family = AF_INET6;
+ mdns6.sin6_port = htons(5353);
+ mdns6.sin6_addr.s6_addr32[0] = htonl(0xff020000);
+ mdns6.sin6_addr.s6_addr32[3] = htonl(0x000000fb);
+ nsap = &mdns6;
+ }
if (nsap == NULL)
goto next_ns;
@@ -530,8 +582,11 @@
resplen = n;
} else {
/* Use datagrams. */
- n = send_dg(statp, buf, buflen, &ans, &anssiz, &terrno,
- ns, &v_circuit, &gotsomewhere, ansp);
+ if (usemdns)
+ n = send_dg_mdns(statp, buf, buflen, &ans, &anssiz, &terrno, nsap, &v_circuit, &gotsomewhere, ansp);
+ else
+ n = send_dg(statp, buf, buflen, &ans, &anssiz, &terrno,
+ ns, &v_circuit, &gotsomewhere, ansp);
if (n < 0)
return (-1);
if (n == 0)
@@ -598,8 +653,15 @@
if (!v_circuit) {
if (!gotsomewhere)
__set_errno (ECONNREFUSED); /* no nameservers found */
- else
+ else if (!usemdns) {
__set_errno (ETIMEDOUT); /* no answer obtained */
+ } else {
+ /* treat timeout as host not found */
+ HEADER *anhp = (HEADER *) ans;
+ memset(ans, 0, HFIXEDSZ);
+ anhp->rcode = NXDOMAIN;
+ return HFIXEDSZ;
+ }
} else
__set_errno (terrno);
return (-1);
@@ -1045,6 +1107,255 @@
}
}
+static int
+send_dg_mdns(res_state statp,
+ const u_char *buf, int buflen, u_char **ansp, int *anssizp,
+ int *terrno, struct sockaddr_in6 *nsap, int *v_circuit, int *gotsomewhere, u_char **anscp)
+{
+ const HEADER *hp = (HEADER *) buf;
+ u_char *ans = *ansp;
+ int anssiz = *anssizp;
+ HEADER *anhp = (HEADER *) ans;
+ struct timespec now, timeout, finish;
+ struct pollfd pfd[32];
+ int ptimeout;
+ int fromlen, resplen, seconds, n, s;
+ int on = 1;
+ struct msghdr mhdr;
+ struct iovec iov;
+ u_char cmsgbuf[CMSG_SPACE(sizeof(int))];
+ struct cmsghdr *cmsg;
+ int ttl;
+ struct ifconf ifconf;
+ struct ifreq ifreq[64];
+ int ifreqn;
+ int i, j;
+ int ifidx[32], ifidxn;
+ struct ip_mreqn mreqn;
+
+ s = socket(nsap->sin6_family == AF_INET ? PF_INET : PF_INET6, SOCK_DGRAM, 0);
+ if (s < 0) {
+ *terrno = errno;
+ Perror(statp, stderr, "socket(dg)", errno);
+ return (-1);
+ }
+ ifconf.ifc_len = sizeof(ifreq);
+ ifconf.ifc_req = ifreq;
+ ifidxn = 0;
+ if (ioctl(s, SIOCGIFCONF, &ifconf) == 0) {
+ ifreqn = ifconf.ifc_len / sizeof(*ifreq);
+ for (i = 0 ; i < ifreqn; i++) {
+ if (ioctl(s, SIOCGIFFLAGS, ifreq + i))
+ continue;
+ if (!(ifreq[i].ifr_flags & IFF_MULTICAST))
+ continue;
+ if (ioctl(s, SIOCGIFINDEX, ifreq + i))
+ continue;
+ for (j = 0; j < ifidxn; j++)
+ if (ifidx[j] == ifreq[i].ifr_ifindex)
+ break;
+ if (j < ifidxn)
+ continue;
+ ifidx[ifidxn++] = ifreq[i].ifr_ifindex;
+ if (ifidxn == sizeof(ifidx)/sizeof(*ifidx))
+ break;
+ }
+ }
+ j = 0;
+ for (i = 0; i < (ifidxn ? ifidxn : 1); i++) {
+ if (i) {
+ s = socket(nsap->sin6_family == AF_INET ? PF_INET : PF_INET6, SOCK_DGRAM, 0);
+ if (!s)
+ continue;
+ }
+ if (setsockopt(s, SOL_IP, IP_RECVTTL, &on, sizeof(on))) {
+ *terrno = errno;
+ Perror(statp, stderr, "IP_RECVTTL(dg)", errno);
+ close(s);
+ continue;
+ }
+ if (ifidxn) {
+ memset(&mreqn, 0, sizeof(mreqn));
+ mreqn.imr_ifindex = ifidx[i];
+ if (setsockopt(s, SOL_IP, IP_MULTICAST_IF, &mreqn, sizeof(mreqn))) {
+ *terrno = errno;
+ Perror(statp, stderr, "IP_MULTICAST_IF", errno);
+ close(s);
+ continue;
+ }
+ }
+ if (sendto(s, (char*)buf, buflen, 0,
+ (struct sockaddr *)nsap, sizeof *nsap) != buflen) {
+ Aerror(statp, stderr, "sendto", errno, *(struct sockaddr_in *)nsap);
+ close(s);
+ continue;
+ }
+ pfd[j].fd = s;
+ pfd[j].events = POLLIN;
+ j++;
+ }
+ /*
+ * Wait for reply.
+ */
+ seconds = statp->retrans;
+ if (seconds <= 0)
+ seconds = 1;
+ evNowTime(&now);
+ evConsTime(&timeout, seconds, 0);
+ evAddTime(&finish, &now, &timeout);
+ wait:
+ if (j == 0) {
+ return (0);
+ }
+
+ /* Convert struct timespec in milliseconds. */
+ ptimeout = timeout.tv_sec * 1000 + timeout.tv_nsec / 1000000;
+ n = __poll (pfd, j, ptimeout);
+ if (n == 0) {
+ Dprint(statp->options & RES_DEBUG, (stdout, ";; timeout\n"));
+ *gotsomewhere = 1;
+ for (i = 0; i < j; i++)
+ close(pfd[i].fd);
+ return (0);
+ }
+ if (n < 0) {
+ if (errno == EINTR) {
+ evNowTime(&now);
+ if (evCmpTime(finish, now) > 0) {
+ evSubTime(&timeout, &finish, &now);
+ goto wait;
+ }
+ }
+ Perror(statp, stderr, "select", errno);
+ for (i = 0; i < j; i++)
+ close(pfd[i].fd);
+ res_nclose(statp);
+ return (0);
+ }
+ for (i = 0; i < j - 1; i++)
+ if (pfd[i].revents == POLLIN)
+ break;
+ s = pfd[i].fd;
+ __set_errno (0);
+ fromlen = sizeof(struct sockaddr_in6);
+ if (anssiz < MAXPACKET
+ && anscp
+ && (ioctl (s, FIONREAD, &resplen) < 0
+ || anssiz < resplen)) {
+ ans = malloc (MAXPACKET);
+ if (ans == NULL)
+ ans = *ansp;
+ else {
+ anssiz = MAXPACKET;
+ *anssizp = MAXPACKET;
+ *ansp = ans;
+ *anscp = ans;
+ anhp = (HEADER *) ans;
+ }
+ }
+ iov.iov_base = ans;
+ iov.iov_len = anssiz;
+ mhdr.msg_name = 0;
+ mhdr.msg_namelen = 0;
+ mhdr.msg_iov = &iov;
+ mhdr.msg_iovlen = 1;
+ mhdr.msg_control = cmsgbuf;
+ mhdr.msg_controllen = sizeof(cmsgbuf);
+ mhdr.msg_flags = 0;
+ resplen = recvmsg(s, &mhdr, 0);
+ if (resplen <= 0) {
+ if (errno == EAGAIN)
+ goto wait;
+ Perror(statp, stderr, "recvfrom", errno);
+wait2:
+ close(s);
+ if (i < j - 1)
+ memmove(pfd + i, pfd + i + 1, sizeof(*pfd) * (j - i - 1));
+ j--;
+ goto wait;
+ }
+ cmsg = CMSG_FIRSTHDR(&mhdr);
+ for (cmsg = CMSG_FIRSTHDR(&mhdr); cmsg; CMSG_NXTHDR(&mhdr, cmsg))
+ if (cmsg->cmsg_level == SOL_IP && cmsg->cmsg_type == IP_TTL)
+ break;
+ if (!cmsg) {
+ Dprint(statp->options & RES_DEBUG,
+ (stdout, ";; no TTL found\n"));
+ goto wait2;
+ }
+ ttl = *(int *)CMSG_DATA(cmsg);
+ if (ttl != 255) {
+ Dprint(statp->options & RES_DEBUG,
+ (stdout, ";; answer with bad TTL: %d \n", ttl));
+ goto wait;
+ }
+ *gotsomewhere = 1;
+ if (resplen < HFIXEDSZ) {
+ /*
+ * Undersized message.
+ */
+ Dprint(statp->options & RES_DEBUG,
+ (stdout, ";; undersized: %d\n",
+ resplen));
+ *terrno = EMSGSIZE;
+ goto wait;
+ }
+ if (hp->id != anhp->id) {
+ /*
+ * response from old query, ignore it.
+ * XXX - potential security hazard could
+ * be detected here.
+ */
+ DprintQ((statp->options & RES_DEBUG) ||
+ (statp->pfcode & RES_PRF_REPLY),
+ (stdout, ";; old answer:\n"),
+ ans, (resplen > anssiz) ? anssiz : resplen);
+ goto wait;
+ }
+ if (!(statp->options & RES_INSECURE2) &&
+ !res_queriesmatch(buf, buf + buflen,
+ ans, ans + anssiz)) {
+ /*
+ * response contains wrong query? ignore it.
+ * XXX - potential security hazard could
+ * be detected here.
+ */
+ DprintQ((statp->options & RES_DEBUG) ||
+ (statp->pfcode & RES_PRF_REPLY),
+ (stdout, ";; wrong query name:\n"),
+ ans, (resplen > anssiz) ? anssiz : resplen);
+ goto wait;
+ }
+ if (anhp->rcode == SERVFAIL ||
+ anhp->rcode == NOTIMP ||
+ anhp->rcode == REFUSED) {
+ DprintQ(statp->options & RES_DEBUG,
+ (stdout, "server rejected query:\n"),
+ ans, (resplen > anssiz) ? anssiz : resplen);
+ goto wait;
+ }
+ for (i = 0; i < j; i++)
+ close(pfd[i].fd);
+#if 0
+ if (!(statp->options & RES_IGNTC) && anhp->tc) {
+ /*
+ * To get the rest of answer,
+ * use TCP with same server.
+ */
+ Dprint(statp->options & RES_DEBUG,
+ (stdout, ";; truncated answer\n"));
+ *v_circuit = 1;
+ res_nclose(statp);
+ return (1);
+ }
+#endif
+ /*
+ * All is well, or the error is fatal. Signal that the
+ * next nameserver ought not be tried.
+ */
+ return (resplen);
+}
+
#ifdef DEBUG
static void
Aerror(const res_state statp, FILE *file, const char *string, int error,

94
glibc-2.4.90-no_NO.diff Normal file
View File

@ -0,0 +1,94 @@
--- intl/locale.alias
+++ intl/locale.alias 2006/06/03 15:26:29
@@ -58,8 +58,6 @@
korean.euc ko_KR.eucKR
ko_KR ko_KR.eucKR
lithuanian lt_LT.ISO-8859-13
-no_NO nb_NO.ISO-8859-1
-no_NO.ISO-8859-1 nb_NO.ISO-8859-1
norwegian nb_NO.ISO-8859-1
nynorsk nn_NO.ISO-8859-1
polish pl_PL.ISO-8859-2
--- localedata/locales/no_NO
+++ localedata/locales/no_NO 2006/06/03 15:26:29
@@ -0,0 +1,69 @@
+escape_char /
+comment_char %
+
+% Norwegian language locale for Norway
+% Source: Norsk Standardiseringsforbund
+% Address: University Library,
+% Drammensveien 41, N-9242 Oslo, Norge
+% Contact: Kolbjoern Aamboe
+% Tel: +47 - 22859109
+% Fax: +47 - 22434497
+% Email: kolbjorn.aambo@usit.uio.no
+% Language: no
+% Territory: NO
+% Revision: 4.3
+% Date: 1996-10-15
+% Application: general
+% Users: general
+% Repertoiremap: mnemonic.ds
+% Charset: ISO-8859-1
+% Distribution and use is free, also
+% for commercial purposes.
+
+LC_IDENTIFICATION
+copy "nb_NO"
+END LC_IDENTIFICATION
+
+LC_COLLATE
+copy "nb_NO"
+END LC_COLLATE
+
+LC_CTYPE
+copy "nb_NO"
+END LC_CTYPE
+
+LC_MONETARY
+copy "nb_NO"
+END LC_MONETARY
+
+LC_NUMERIC
+copy "nb_NO"
+END LC_NUMERIC
+
+LC_TIME
+copy "nb_NO"
+END LC_TIME
+
+LC_MESSAGES
+copy "nb_NO"
+END LC_MESSAGES
+
+LC_PAPER
+copy "nb_NO"
+END LC_PAPER
+
+LC_TELEPHONE
+copy "nb_NO"
+END LC_TELEPHONE
+
+LC_MEASUREMENT
+copy "nb_NO"
+END LC_MEASUREMENT
+
+LC_NAME
+copy "nb_NO"
+END LC_NAME
+
+LC_ADDRESS
+copy "nb_NO"
+END LC_ADDRESS
--- localedata/SUPPORTED
+++ localedata/SUPPORTED 2006/06/03 15:27:01
@@ -274,6 +274,8 @@
nl_NL@euro/ISO-8859-15 \
nn_NO.UTF-8/UTF-8 \
nn_NO/ISO-8859-1 \
+no_NO.UTF-8/UTF-8 \
+no_NO/ISO-8859-1 \
nr_ZA/UTF-8 \
nso_ZA/UTF-8 \
oc_FR.UTF-8/UTF-8 \

141
glibc-2.4.90-nscd.diff Normal file
View File

@ -0,0 +1,141 @@
Index: nscd/cache.c
===================================================================
--- nscd/cache.c.orig
+++ nscd/cache.c
@@ -277,28 +277,31 @@ prune_cache (struct database_dyn *table,
if (table->inotify_descr < 0 && table->check_file && now != LONG_MAX)
{
struct stat64 st;
+ time_t mtime;
- if (stat64 (table->filename, &st) < 0)
+ mtime = stat64 (table->filename, &st) ? LONG_MAX : st.st_mtime;
+ if (mtime != table->file_mtime)
{
- char buf[128];
- /* We cannot stat() the file, disable file checking if the
- file does not exist. */
- dbg_log (_("cannot stat() file `%s': %s"),
- table->filename, strerror_r (errno, buf, sizeof (buf)));
- if (errno == ENOENT)
- table->check_file = 0;
+ /* The file changed. Invalidate all entries. */
+ now = LONG_MAX;
+ table->file_mtime = mtime;
}
- else
+ if (*table->filename2)
{
- if (st.st_mtime != table->file_mtime)
+ mtime = stat64 (table->filename2, &st) ? LONG_MAX : st.st_mtime;
+ if (mtime != table->file_mtime2)
{
/* The file changed. Invalidate all entries. */
now = LONG_MAX;
- table->file_mtime = st.st_mtime;
+ table->file_mtime2 = mtime;
}
}
}
+ /* now == 0 means just check for changed files */
+ if (now == (time_t)0)
+ return;
+
/* We run through the table and find values which are not valid anymore.
Note that for the initial step, finding the entries to be removed,
Index: nscd/connections.c
===================================================================
--- nscd/connections.c.orig
+++ nscd/connections.c
@@ -118,6 +118,7 @@ struct database_dyn dbs[lastdb] =
.suggested_module = DEFAULT_SUGGESTED_MODULE,
.reset_res = 0,
.filename = "/etc/passwd",
+ .filename2 = "",
.db_filename = _PATH_NSCD_PASSWD_DB,
.disabled_iov = &pwd_iov_disabled,
.postimeout = 3600,
@@ -138,6 +139,7 @@ struct database_dyn dbs[lastdb] =
.suggested_module = DEFAULT_SUGGESTED_MODULE,
.reset_res = 0,
.filename = "/etc/group",
+ .filename2 = "",
.db_filename = _PATH_NSCD_GROUP_DB,
.disabled_iov = &grp_iov_disabled,
.postimeout = 3600,
@@ -158,6 +160,7 @@ struct database_dyn dbs[lastdb] =
.suggested_module = DEFAULT_SUGGESTED_MODULE,
.reset_res = 1,
.filename = "/etc/hosts",
+ .filename2 = "/etc/resolv.conf",
.db_filename = _PATH_NSCD_HOSTS_DB,
.disabled_iov = &hst_iov_disabled,
.postimeout = 3600,
@@ -852,15 +855,9 @@ cannot set socket to close on exec: %s;
/* We need the modification date of the file. */
struct stat64 st;
- if (stat64 (dbs[cnt].filename, &st) < 0)
- {
- /* We cannot stat() the file, disable file checking. */
- dbg_log (_("cannot stat() file `%s': %s"),
- dbs[cnt].filename, strerror (errno));
- dbs[cnt].check_file = 0;
- }
- else
- dbs[cnt].file_mtime = st.st_mtime;
+ dbs[cnt].file_mtime = stat64 (dbs[cnt].filename, &st) ? LONG_MAX : st.st_mtime;
+ if (*dbs[cnt].filename2)
+ dbs[cnt].file_mtime2 = stat64 (dbs[cnt].filename2, &st) ? LONG_MAX : st.st_mtime;
}
}
Index: nscd/nscd.conf
===================================================================
--- nscd/nscd.conf.orig
+++ nscd/nscd.conf
@@ -61,11 +61,11 @@
auto-propagate group yes
enable-cache hosts yes
- positive-time-to-live hosts 3600
- negative-time-to-live hosts 20
+ positive-time-to-live hosts 600
+ negative-time-to-live hosts 0
suggested-size hosts 211
check-files hosts yes
- persistent hosts yes
+ persistent hosts no
shared hosts yes
max-db-size hosts 33554432
Index: nscd/nscd.h
===================================================================
--- nscd/nscd.h.orig
+++ nscd/nscd.h
@@ -80,8 +80,10 @@ struct database_dyn
int propagate;
int reset_res;
const char filename[16];
+ const char filename2[17];
const char *db_filename;
time_t file_mtime;
+ time_t file_mtime2;
size_t suggested_module;
size_t max_db_size;
Index: nscd/nscd_stat.c
===================================================================
--- nscd/nscd_stat.c.orig
+++ nscd/nscd_stat.c
@@ -302,7 +302,7 @@ receive_print_stats (void)
data.dbs[i].maxnsearched,
data.dbs[i].rdlockdelayed,
data.dbs[i].wrlockdelayed,
- data.dbs[i].addfailed, check_file, dbnames[i]);
+ data.dbs[i].addfailed, check_file, (strcmp(dbnames[i], "hosts") ? dbnames[i] : "{hosts,resolv.conf}"));
}
if (selinux_enabled)

View File

@ -0,0 +1,93 @@
--- locale/iso-4217.def
+++ locale/iso-4217.def 2006/06/03 15:19:50
@@ -8,6 +8,7 @@
*
* !!! The list has to be sorted !!!
*/
+DEFINE_INT_CURR("ADP") /* Andorran Peseta -> EUR */
DEFINE_INT_CURR("AED") /* United Arab Emirates Dirham */
DEFINE_INT_CURR("AFN") /* Afghanistan Afgani */
DEFINE_INT_CURR("ALL") /* Albanian Lek */
@@ -15,12 +16,14 @@
DEFINE_INT_CURR("ANG") /* Netherlands Antilles */
DEFINE_INT_CURR("AOA") /* Angolan Kwanza */
DEFINE_INT_CURR("ARS") /* Argentine Peso */
+DEFINE_INT_CURR("ATS") /* Austrian Schilling -> EUR */
DEFINE_INT_CURR("AUD") /* Australian Dollar */
DEFINE_INT_CURR("AWG") /* Aruba Guilder */
DEFINE_INT_CURR("AZM") /* Azerbaijan Manat */
DEFINE_INT_CURR("BAM") /* Bosnian and Herzegovina Convertible Mark */
DEFINE_INT_CURR("BBD") /* Barbados Dollar */
DEFINE_INT_CURR("BDT") /* Bangladesh Taka */
+DEFINE_INT_CURR("BEF") /* Belgian Franc -> EUR */
DEFINE_INT_CURR("BGN") /* Bulgarian Lev */
DEFINE_INT_CURR("BHD") /* Bahraini Dinar */
DEFINE_INT_CURR("BIF") /* Burundi Franc */
@@ -45,6 +48,7 @@
DEFINE_INT_CURR("CVE") /* Cape Verde Escudo */
DEFINE_INT_CURR("CYP") /* Cypriot Pound */
DEFINE_INT_CURR("CZK") /* Czech Koruna */
+DEFINE_INT_CURR("DEM") /* German Mark -> EUR */
DEFINE_INT_CURR("DJF") /* Djibouti Franc */
DEFINE_INT_CURR("DKK") /* Danish Krone (Faroe Islands, Greenland) */
DEFINE_INT_CURR("DOP") /* Dominican Republic */
@@ -52,16 +56,20 @@
DEFINE_INT_CURR("EEK") /* Estonian Kroon */
DEFINE_INT_CURR("EGP") /* Egyptian Pound */
DEFINE_INT_CURR("ERN") /* Eritrean Nakfa */
+DEFINE_INT_CURR("ESP") /* Spanish Peseta -> EUR */
DEFINE_INT_CURR("ETB") /* Ethiopian Birr */
DEFINE_INT_CURR("EUR") /* European Union Euro */
+DEFINE_INT_CURR("FIM") /* Finnish Markka -> EUR */
DEFINE_INT_CURR("FJD") /* Fiji Dollar */
DEFINE_INT_CURR("FKP") /* Falkland Islands Pound (Malvinas) */
+DEFINE_INT_CURR("FRF") /* French Franc -> EUR */
DEFINE_INT_CURR("GBP") /* British Pound */
DEFINE_INT_CURR("GEL") /* Georgia Lari */
DEFINE_INT_CURR("GHC") /* Ghana Cedi */
DEFINE_INT_CURR("GIP") /* Gibraltar Pound */
DEFINE_INT_CURR("GMD") /* Gambian Dalasi */
DEFINE_INT_CURR("GNF") /* Guinea Franc */
+DEFINE_INT_CURR("GRD") /* Greek Drachma -> EUR */
DEFINE_INT_CURR("GTQ") /* Guatemala Quetzal */
DEFINE_INT_CURR("GYD") /* Guyana Dollar */
DEFINE_INT_CURR("HKD") /* Hong Kong Dollar */
@@ -70,12 +78,14 @@
DEFINE_INT_CURR("HTG") /* Haiti Gourde */
DEFINE_INT_CURR("HUF") /* Hungarian Forint */
DEFINE_INT_CURR("IDR") /* Indonesia Rupiah */
+DEFINE_INT_CURR("IEP") /* Irish Pound -> EUR */
DEFINE_INT_CURR("ILS") /* Israeli Shekel */
DEFINE_INT_CURR("IMP") /* Isle of Man Pounds */
DEFINE_INT_CURR("INR") /* Indian Rupee (Bhutan) */
DEFINE_INT_CURR("IQD") /* Iraqi Dinar */
DEFINE_INT_CURR("IRR") /* Iranian Rial */
DEFINE_INT_CURR("ISK") /* Iceland Krona */
+DEFINE_INT_CURR("ITL") /* Italian Lira -> EUR */
DEFINE_INT_CURR("JEP") /* Jersey Pound */
DEFINE_INT_CURR("JMD") /* Jamaican Dollar */
DEFINE_INT_CURR("JOD") /* Jordanian Dinar */
@@ -95,6 +105,7 @@
DEFINE_INT_CURR("LRD") /* Liberian Dollar */
DEFINE_INT_CURR("LSL") /* Lesotho Maloti */
DEFINE_INT_CURR("LTL") /* Lithuanian Litas */
+DEFINE_INT_CURR("LUF") /* Luxembourg Franc -> EUR */
DEFINE_INT_CURR("LVL") /* Latvia Lat */
DEFINE_INT_CURR("LYD") /* Libyan Arab Jamahiriya Dinar */
DEFINE_INT_CURR("MAD") /* Moroccan Dirham */
@@ -115,6 +126,7 @@
DEFINE_INT_CURR("NAD") /* Namibia Dollar */
DEFINE_INT_CURR("NGN") /* Nigeria Naira */
DEFINE_INT_CURR("NIO") /* Nicaragua Cordoba Oro */
+DEFINE_INT_CURR("NLG") /* Netherlands Guilder -> EUR */
DEFINE_INT_CURR("NOK") /* Norwegian Krone */
DEFINE_INT_CURR("NPR") /* Nepalese Rupee */
DEFINE_INT_CURR("NZD") /* New Zealand Dollar */
@@ -125,6 +137,7 @@
DEFINE_INT_CURR("PHP") /* Philippines Peso */
DEFINE_INT_CURR("PKR") /* Pakistan Rupee */
DEFINE_INT_CURR("PLN") /* Polish Zloty */
+DEFINE_INT_CURR("PTE") /* Portugese Escudo -> EUR */
DEFINE_INT_CURR("PYG") /* Paraguay Guarani */
DEFINE_INT_CURR("QAR") /* Qatar Rial */
DEFINE_INT_CURR("ROL") /* Romanian Leu */

View File

@ -0,0 +1,18 @@
diff -urN dummy-cpu/powerpc-cpu-v0.05/sysdeps/powerpc/powerpc32/powerpc64/fpu/s_llrint.S libc25/powerpc-cpu/sysdeps/powerpc/powerpc32/powerpc64/fpu/s_llrint.S
--- powerpc-cpu-v0.05/sysdeps/powerpc/powerpc32/powerpc64/fpu/s_llrint.S 2006-04-06 10:50:35.000000000 -0500
+++ powerpc-cpu/sysdeps/powerpc/powerpc32/powerpc64/fpu/s_llrint.S 2007-03-14 14:55:19.113013712 -0500
@@ -18,6 +18,7 @@
02110-1301 USA. */
#include <sysdep.h>
+#include <math_ldbl_opt.h>
/* long long int[r3, r4] __llrint (double x[fp1]) */
ENTRY (__llrint)
@@ -41,3 +42,6 @@
strong_alias (__llrint, __llrintl)
weak_alias (__llrint, llrintl)
#endif
+#if LONG_DOUBLE_COMPAT(libm, GLIBC_2_1)
+compat_symbol (libm, __llrint, llrintl, GLIBC_2_1)
+#endif

50
glibc-2.6-configure.diff Normal file
View File

@ -0,0 +1,50 @@
Index: configure.in
===================================================================
RCS file: /cvs/glibc/libc/configure.in,v
retrieving revision 1.469
diff -u -a -p -u -p -a -r1.469 configure.in
--- configure.in 20 Mar 2007 12:11:23 -0000 1.469
+++ configure.in 13 Jul 2007 13:40:20 -0000
@@ -1278,7 +1278,7 @@ EOF
fi
fi
fi
- rm -f conftest.[cs]
+ rm -f conftest*
])
if test $libc_cv_visibility_attribute != yes; then
AC_MSG_ERROR(compiler support for visibility attribute is required)
@@ -1294,7 +1294,7 @@ EOF
int bar (int x) { return x; }
EOF
libc_cv_broken_visibility_attribute=yes
- if AC_TRY_COMMAND(${CC-cc} -Werror -S conftest.c -o conftest.s1>&AS_MESSAGE_LOG_FD); then
+ if AC_TRY_COMMAND(${CC-cc} -Werror -S conftest.c -o conftest.s >&AS_MESSAGE_LOG_FD); then
changequote(,)dnl
if grep '\.hidden[ _]foo' conftest.s >/dev/null; then
changequote([,])dnl
Index: configure
===================================================================
RCS file: /cvs/glibc/libc/configure,v
retrieving revision 1.459
diff -u -a -p -u -p -a -r1.459 configure
--- configure 20 Mar 2007 12:11:23 -0000 1.459
+++ configure 13 Jul 2007 13:41:41 -0000
@@ -5371,7 +5371,7 @@ EOF
fi
fi
fi
- rm -f conftest.cs
+ rm -f conftest*
fi
echo "$as_me:$LINENO: result: $libc_cv_visibility_attribute" >&5
@@ -5395,7 +5395,7 @@ else
int bar (int x) { return x; }
EOF
libc_cv_broken_visibility_attribute=yes
- if { ac_try='${CC-cc} -Werror -S conftest.c -o conftest.s1>&5'
+ if { ac_try='${CC-cc} -Werror -S conftest.c -o conftest.s >&5'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?

50
glibc-2.8-clone.diff Normal file
View File

@ -0,0 +1,50 @@
Index: sysdeps/unix/sysv/linux/x86_64/clone.S
===================================================================
RCS file: /cvs/glibc/libc/sysdeps/unix/sysv/linux/x86_64/clone.S,v
retrieving revision 1.7
diff -u -r1.7 clone.S
--- sysdeps/unix/sysv/linux/x86_64/clone.S 3 Dec 2006 23:12:36 -0000 1.7
+++ sysdeps/unix/sysv/linux/x86_64/clone.S 25 Jun 2008 11:26:15 -0000
@@ -89,9 +89,6 @@
ret
L(thread_start):
- cfi_startproc;
- /* Clearing frame pointer is insufficient, use CFI. */
- cfi_undefined (rip);
/* Clear the frame pointer. The ABI suggests this be done, to mark
the outermost frame obviously. */
xorl %ebp, %ebp
@@ -116,7 +113,6 @@
/* Call exit with return value from function call. */
movq %rax, %rdi
call HIDDEN_JUMPTARGET (_exit)
- cfi_endproc;
cfi_startproc;
PSEUDO_END (BP_SYM (__clone))
Index: sysdeps/unix/sysv/linux/i386/clone.S
===================================================================
RCS file: /cvs/glibc/libc/sysdeps/unix/sysv/linux/i386/clone.S,v
retrieving revision 1.27
diff -u -r1.27 clone.S
--- sysdeps/unix/sysv/linux/i386/clone.S 3 Dec 2006 23:12:36 -0000 1.27
+++ sysdeps/unix/sysv/linux/i386/clone.S 25 Jun 2008 11:26:16 -0000
@@ -120,9 +120,6 @@
ret
L(thread_start):
- cfi_startproc;
- /* Clearing frame pointer is insufficient, use CFI. */
- cfi_undefined (eip);
/* Note: %esi is zero. */
movl %esi,%ebp /* terminate the stack frame */
#ifdef RESET_PID
@@ -155,7 +152,6 @@
jmp L(haspid)
.previous
#endif
- cfi_endproc;
cfi_startproc
PSEUDO_END (BP_SYM (__clone))

14
glibc-2.8-dlosinfo.diff Normal file
View File

@ -0,0 +1,14 @@
Compilation fix
diff --git a/sysdeps/unix/sysv/linux/dl-osinfo.h b/sysdeps/unix/sysv/linux/dl-osinfo.h
index b13b6cf..8d22a69 100644
--- sysdeps/unix/sysv/linux/dl-osinfo.h
+++ sysdeps/unix/sysv/linux/dl-osinfo.h
@@ -17,6 +17,7 @@
Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
02111-1307 USA. */
+#include <fcntl.h>
#include <kernel-features.h>
#include <dl-sysdep.h>
#include <stdint.h>

14
glibc-2.8-getconf.diff Normal file
View File

@ -0,0 +1,14 @@
This is required for too noisy rpmlint.
--- posix/Makefile~ 2007-11-21 05:40:26.234633000 +0100
+++ posix/Makefile 2007-11-21 05:41:02.043775000 +0100
@@ -296,8 +296,7 @@
$(addprefix $(..)./scripts/mkinstalldirs ,\
$(filter-out $(wildcard $@),$@))
while read spec; do \
- ln -f $< $@/$$spec.new || $(INSTALL_PROGRAM) $< $@/$$spec.new; \
- mv -f $@/$$spec.new $@/$$spec; \
+ ln -s ../../bin/getconf $@/$$spec; \
done < $(objpfx)getconf.speclist
$(objpfx)getconf.speclist: $(objpfx)getconf

View File

@ -0,0 +1,824 @@
diff --git a/inet/netinet/in.h b/inet/netinet/in.h
index e3446a9..1366198 100644
--- inet/netinet/in.h
+++ inet/netinet/in.h
@@ -195,17 +195,13 @@ struct in6_addr
{
union
{
- uint8_t __u6_addr8[16];
-#if defined __USE_MISC || defined __USE_GNU
- uint16_t __u6_addr16[8];
- uint32_t __u6_addr32[4];
-#endif
- } __in6_u;
-#define s6_addr __in6_u.__u6_addr8
-#if defined __USE_MISC || defined __USE_GNU
-# define s6_addr16 __in6_u.__u6_addr16
-# define s6_addr32 __in6_u.__u6_addr32
-#endif
+ uint8_t u6_addr8[16];
+ uint16_t u6_addr16[8];
+ uint32_t u6_addr32[4];
+ } in6_u;
+#define s6_addr in6_u.u6_addr8
+#define s6_addr16 in6_u.u6_addr16
+#define s6_addr32 in6_u.u6_addr32
};
extern const struct in6_addr in6addr_any; /* :: */
@@ -242,7 +238,6 @@ struct sockaddr_in6
};
-#if defined __USE_MISC || defined __USE_GNU
/* IPv4 multicast request. */
struct ip_mreq
{
@@ -264,8 +259,6 @@ struct ip_mreq_source
/* IP address of interface. */
struct in_addr imr_sourceaddr;
};
-#endif
-
/* Likewise, for IPv6. */
struct ipv6_mreq
@@ -278,7 +271,6 @@ struct ipv6_mreq
};
-#if defined __USE_MISC || defined __USE_GNU
/* Multicast group request. */
struct group_req
{
@@ -345,7 +337,6 @@ struct group_filter
- sizeof (struct sockaddr_storage) \
+ ((numsrc) \
* sizeof (struct sockaddr_storage)))
-#endif
/* Get system-specific definitions. */
@@ -431,14 +422,12 @@ extern uint16_t htons (uint16_t __hostshort)
&& (((__const uint32_t *) (a))[2] == ((__const uint32_t *) (b))[2]) \
&& (((__const uint32_t *) (a))[3] == ((__const uint32_t *) (b))[3]))
-#if defined __USE_MISC || defined __USE_GNU
/* Bind socket to a privileged IP port. */
extern int bindresvport (int __sockfd, struct sockaddr_in *__sock_in) __THROW;
/* The IPv6 version of this function. */
extern int bindresvport6 (int __sockfd, struct sockaddr_in6 *__sock_in)
__THROW;
-#endif
#define IN6_IS_ADDR_MC_NODELOCAL(a) \
@@ -461,8 +450,6 @@ extern int bindresvport6 (int __sockfd, struct sockaddr_in6 *__sock_in)
(IN6_IS_ADDR_MULTICAST(a) \
&& ((((__const uint8_t *) (a))[1] & 0xf) == 0xe))
-
-#ifdef __USE_GNU
/* IPv6 packet information. */
struct in6_pktinfo
{
@@ -478,6 +465,7 @@ struct ip6_mtuinfo
};
+#ifdef __USE_GNU
/* Obsolete hop-by-hop and Destination Options Processing (RFC 2292). */
extern int inet6_option_space (int __nbytes)
__THROW __attribute_deprecated__;
diff --git a/posix/regex.h b/posix/regex.h
index 2132772..a058e3f 100644
--- posix/regex.h
+++ posix/regex.h
@@ -43,21 +43,20 @@ typedef unsigned long int active_reg_t;
add or remove a bit, only one other definition need change. */
typedef unsigned long int reg_syntax_t;
-#ifdef __USE_GNU
/* If this bit is not set, then \ inside a bracket expression is literal.
If set, then such a \ quotes the following character. */
-# define RE_BACKSLASH_ESCAPE_IN_LISTS ((unsigned long int) 1)
+#define RE_BACKSLASH_ESCAPE_IN_LISTS ((unsigned long int) 1)
/* If this bit is not set, then + and ? are operators, and \+ and \? are
literals.
If set, then \+ and \? are operators and + and ? are literals. */
-# define RE_BK_PLUS_QM (RE_BACKSLASH_ESCAPE_IN_LISTS << 1)
+#define RE_BK_PLUS_QM (RE_BACKSLASH_ESCAPE_IN_LISTS << 1)
/* If this bit is set, then character classes are supported. They are:
[:alpha:], [:upper:], [:lower:], [:digit:], [:alnum:], [:xdigit:],
[:space:], [:print:], [:punct:], [:graph:], and [:cntrl:].
If not set, then character classes are not supported. */
-# define RE_CHAR_CLASSES (RE_BK_PLUS_QM << 1)
+#define RE_CHAR_CLASSES (RE_BK_PLUS_QM << 1)
/* If this bit is set, then ^ and $ are always anchors (outside bracket
expressions, of course).
@@ -71,7 +70,7 @@ typedef unsigned long int reg_syntax_t;
POSIX draft 11.2 says that * etc. in leading positions is undefined.
We already implemented a previous draft which made those constructs
invalid, though, so we haven't changed the code back. */
-# define RE_CONTEXT_INDEP_ANCHORS (RE_CHAR_CLASSES << 1)
+#define RE_CONTEXT_INDEP_ANCHORS (RE_CHAR_CLASSES << 1)
/* If this bit is set, then special characters are always special
regardless of where they are in the pattern.
@@ -79,71 +78,71 @@ typedef unsigned long int reg_syntax_t;
some contexts; otherwise they are ordinary. Specifically,
* + ? and intervals are only special when not after the beginning,
open-group, or alternation operator. */
-# define RE_CONTEXT_INDEP_OPS (RE_CONTEXT_INDEP_ANCHORS << 1)
+#define RE_CONTEXT_INDEP_OPS (RE_CONTEXT_INDEP_ANCHORS << 1)
/* If this bit is set, then *, +, ?, and { cannot be first in an re or
immediately after an alternation or begin-group operator. */
-# define RE_CONTEXT_INVALID_OPS (RE_CONTEXT_INDEP_OPS << 1)
+#define RE_CONTEXT_INVALID_OPS (RE_CONTEXT_INDEP_OPS << 1)
/* If this bit is set, then . matches newline.
If not set, then it doesn't. */
-# define RE_DOT_NEWLINE (RE_CONTEXT_INVALID_OPS << 1)
+#define RE_DOT_NEWLINE (RE_CONTEXT_INVALID_OPS << 1)
/* If this bit is set, then . doesn't match NUL.
If not set, then it does. */
-# define RE_DOT_NOT_NULL (RE_DOT_NEWLINE << 1)
+#define RE_DOT_NOT_NULL (RE_DOT_NEWLINE << 1)
/* If this bit is set, nonmatching lists [^...] do not match newline.
If not set, they do. */
-# define RE_HAT_LISTS_NOT_NEWLINE (RE_DOT_NOT_NULL << 1)
+#define RE_HAT_LISTS_NOT_NEWLINE (RE_DOT_NOT_NULL << 1)
/* If this bit is set, either \{...\} or {...} defines an
interval, depending on RE_NO_BK_BRACES.
If not set, \{, \}, {, and } are literals. */
-# define RE_INTERVALS (RE_HAT_LISTS_NOT_NEWLINE << 1)
+#define RE_INTERVALS (RE_HAT_LISTS_NOT_NEWLINE << 1)
/* If this bit is set, +, ? and | aren't recognized as operators.
If not set, they are. */
-# define RE_LIMITED_OPS (RE_INTERVALS << 1)
+#define RE_LIMITED_OPS (RE_INTERVALS << 1)
/* If this bit is set, newline is an alternation operator.
If not set, newline is literal. */
-# define RE_NEWLINE_ALT (RE_LIMITED_OPS << 1)
+#define RE_NEWLINE_ALT (RE_LIMITED_OPS << 1)
/* If this bit is set, then `{...}' defines an interval, and \{ and \}
are literals.
If not set, then `\{...\}' defines an interval. */
-# define RE_NO_BK_BRACES (RE_NEWLINE_ALT << 1)
+#define RE_NO_BK_BRACES (RE_NEWLINE_ALT << 1)
/* If this bit is set, (...) defines a group, and \( and \) are literals.
If not set, \(...\) defines a group, and ( and ) are literals. */
-# define RE_NO_BK_PARENS (RE_NO_BK_BRACES << 1)
+#define RE_NO_BK_PARENS (RE_NO_BK_BRACES << 1)
/* If this bit is set, then \<digit> matches <digit>.
If not set, then \<digit> is a back-reference. */
-# define RE_NO_BK_REFS (RE_NO_BK_PARENS << 1)
+#define RE_NO_BK_REFS (RE_NO_BK_PARENS << 1)
/* If this bit is set, then | is an alternation operator, and \| is literal.
If not set, then \| is an alternation operator, and | is literal. */
-# define RE_NO_BK_VBAR (RE_NO_BK_REFS << 1)
+#define RE_NO_BK_VBAR (RE_NO_BK_REFS << 1)
/* If this bit is set, then an ending range point collating higher
than the starting range point, as in [z-a], is invalid.
If not set, then when ending range point collates higher than the
starting range point, the range is ignored. */
-# define RE_NO_EMPTY_RANGES (RE_NO_BK_VBAR << 1)
+#define RE_NO_EMPTY_RANGES (RE_NO_BK_VBAR << 1)
/* If this bit is set, then an unmatched ) is ordinary.
If not set, then an unmatched ) is invalid. */
-# define RE_UNMATCHED_RIGHT_PAREN_ORD (RE_NO_EMPTY_RANGES << 1)
+#define RE_UNMATCHED_RIGHT_PAREN_ORD (RE_NO_EMPTY_RANGES << 1)
/* If this bit is set, succeed as soon as we match the whole pattern,
without further backtracking. */
-# define RE_NO_POSIX_BACKTRACKING (RE_UNMATCHED_RIGHT_PAREN_ORD << 1)
+#define RE_NO_POSIX_BACKTRACKING (RE_UNMATCHED_RIGHT_PAREN_ORD << 1)
/* If this bit is set, do not process the GNU regex operators.
If not set, then the GNU regex operators are recognized. */
-# define RE_NO_GNU_OPS (RE_NO_POSIX_BACKTRACKING << 1)
+#define RE_NO_GNU_OPS (RE_NO_POSIX_BACKTRACKING << 1)
/* If this bit is set, turn on internal regex debugging.
If not set, and debugging was on, turn it off.
@@ -151,30 +150,29 @@ typedef unsigned long int reg_syntax_t;
We define this bit always, so that all that's needed to turn on
debugging is to recompile regex.c; the calling code can always have
this bit set, and it won't affect anything in the normal case. */
-# define RE_DEBUG (RE_NO_GNU_OPS << 1)
+#define RE_DEBUG (RE_NO_GNU_OPS << 1)
/* If this bit is set, a syntactically invalid interval is treated as
a string of ordinary characters. For example, the ERE 'a{1' is
treated as 'a\{1'. */
-# define RE_INVALID_INTERVAL_ORD (RE_DEBUG << 1)
+#define RE_INVALID_INTERVAL_ORD (RE_DEBUG << 1)
/* If this bit is set, then ignore case when matching.
If not set, then case is significant. */
-# define RE_ICASE (RE_INVALID_INTERVAL_ORD << 1)
+#define RE_ICASE (RE_INVALID_INTERVAL_ORD << 1)
/* This bit is used internally like RE_CONTEXT_INDEP_ANCHORS but only
for ^, because it is difficult to scan the regex backwards to find
whether ^ should be special. */
-# define RE_CARET_ANCHORS_HERE (RE_ICASE << 1)
+#define RE_CARET_ANCHORS_HERE (RE_ICASE << 1)
/* If this bit is set, then \{ cannot be first in an bre or
immediately after an alternation or begin-group operator. */
-# define RE_CONTEXT_INVALID_DUP (RE_CARET_ANCHORS_HERE << 1)
+#define RE_CONTEXT_INVALID_DUP (RE_CARET_ANCHORS_HERE << 1)
/* If this bit is set, then no_sub will be set to 1 during
re_compile_pattern. */
-# define RE_NO_SUB (RE_CONTEXT_INVALID_DUP << 1)
-#endif
+#define RE_NO_SUB (RE_CONTEXT_INVALID_DUP << 1)
/* This global variable defines the particular regexp syntax to use (for
some interfaces). When a regexp is compiled, the syntax used is
@@ -182,7 +180,6 @@ typedef unsigned long int reg_syntax_t;
already-compiled regexps. */
extern reg_syntax_t re_syntax_options;
-#ifdef __USE_GNU
/* Define combinations of the above bits for the standard possibilities.
(The [[[ comments delimit what gets put into the Texinfo file, so
don't delete them!) */
@@ -257,12 +254,11 @@ extern reg_syntax_t re_syntax_options;
/* Maximum number of duplicates an interval can allow. Some systems
(erroneously) define this in other header files, but we want our
value, so remove any previous define. */
-# ifdef RE_DUP_MAX
-# undef RE_DUP_MAX
-# endif
-/* If sizeof(int) == 2, then ((1 << 15) - 1) overflows. */
-# define RE_DUP_MAX (0x7fff)
+#ifdef RE_DUP_MAX
+# undef RE_DUP_MAX
#endif
+/* If sizeof(int) == 2, then ((1 << 15) - 1) overflows. */
+#define RE_DUP_MAX (0x7fff)
/* POSIX `cflags' bits (i.e., information for `regcomp'). */
@@ -341,16 +337,7 @@ typedef enum
private to the regex routines. */
#ifndef RE_TRANSLATE_TYPE
-# define __RE_TRANSLATE_TYPE unsigned char *
-# ifdef __USE_GNU
-# define RE_TRANSLATE_TYPE __RE_TRANSLATE_TYPE
-# endif
-#endif
-
-#ifdef __USE_GNU
-# define __REPB_PREFIX(name) name
-#else
-# define __REPB_PREFIX(name) __##name
+# define RE_TRANSLATE_TYPE unsigned char *
#endif
struct re_pattern_buffer
@@ -358,27 +345,27 @@ struct re_pattern_buffer
/* Space that holds the compiled pattern. It is declared as
`unsigned char *' because its elements are sometimes used as
array indexes. */
- unsigned char *__REPB_PREFIX(buffer);
+ unsigned char *buffer;
/* Number of bytes to which `buffer' points. */
- unsigned long int __REPB_PREFIX(allocated);
+ unsigned long int allocated;
/* Number of bytes actually used in `buffer'. */
- unsigned long int __REPB_PREFIX(used);
+ unsigned long int used;
/* Syntax setting with which the pattern was compiled. */
- reg_syntax_t __REPB_PREFIX(syntax);
+ reg_syntax_t syntax;
/* Pointer to a fastmap, if any, otherwise zero. re_search uses the
fastmap, if there is one, to skip over impossible starting points
for matches. */
- char *__REPB_PREFIX(fastmap);
+ char *fastmap;
/* Either a translate table to apply to all characters before
comparing them, or zero for no translation. The translation is
applied to a pattern when it is compiled and to a string when it
is matched. */
- __RE_TRANSLATE_TYPE __REPB_PREFIX(translate);
+ RE_TRANSLATE_TYPE translate;
/* Number of subexpressions found by the compiler. */
size_t re_nsub;
@@ -387,36 +374,34 @@ struct re_pattern_buffer
Well, in truth it's used only in `re_search_2', to see whether or
not we should use the fastmap, so we don't set this absolutely
perfectly; see `re_compile_fastmap' (the `duplicate' case). */
- unsigned __REPB_PREFIX(can_be_null) : 1;
+ unsigned can_be_null : 1;
/* If REGS_UNALLOCATED, allocate space in the `regs' structure
for `max (RE_NREGS, re_nsub + 1)' groups.
If REGS_REALLOCATE, reallocate space if necessary.
If REGS_FIXED, use what's there. */
-#ifdef __USE_GNU
-# define REGS_UNALLOCATED 0
-# define REGS_REALLOCATE 1
-# define REGS_FIXED 2
-#endif
- unsigned __REPB_PREFIX(regs_allocated) : 2;
+#define REGS_UNALLOCATED 0
+#define REGS_REALLOCATE 1
+#define REGS_FIXED 2
+ unsigned regs_allocated : 2;
/* Set to zero when `regex_compile' compiles a pattern; set to one
by `re_compile_fastmap' if it updates the fastmap. */
- unsigned __REPB_PREFIX(fastmap_accurate) : 1;
+ unsigned fastmap_accurate : 1;
/* If set, `re_match_2' does not return information about
subexpressions. */
- unsigned __REPB_PREFIX(no_sub) : 1;
+ unsigned no_sub : 1;
/* If set, a beginning-of-line anchor doesn't match at the beginning
of the string. */
- unsigned __REPB_PREFIX(not_bol) : 1;
+ unsigned not_bol : 1;
/* Similarly for an end-of-line anchor. */
- unsigned __REPB_PREFIX(not_eol) : 1;
+ unsigned not_eol : 1;
/* If true, an anchor at a newline matches. */
- unsigned __REPB_PREFIX(newline_anchor) : 1;
+ unsigned newline_anchor : 1;
};
typedef struct re_pattern_buffer regex_t;
@@ -425,7 +410,6 @@ typedef struct re_pattern_buffer regex_t;
typedef int regoff_t;
-#ifdef __USE_GNU
/* This is the structure we store register match data in. See
regex.texinfo for a full description of what registers match. */
struct re_registers
@@ -439,9 +423,8 @@ struct re_registers
/* If `regs_allocated' is REGS_UNALLOCATED in the pattern buffer,
`re_match_2' returns information about at least this many registers
the first time a `regs' structure is passed. */
-# ifndef RE_NREGS
-# define RE_NREGS 30
-# endif
+#ifndef RE_NREGS
+# define RE_NREGS 30
#endif
@@ -456,7 +439,6 @@ typedef struct
/* Declarations for routines. */
-#ifdef __USE_GNU
/* Sets the current default syntax to SYNTAX, and return the old syntax.
You can also simply assign to the `re_syntax_options' variable. */
extern reg_syntax_t re_set_syntax (reg_syntax_t __syntax);
@@ -521,9 +503,8 @@ extern void re_set_registers (struct re_pattern_buffer *__buffer,
struct re_registers *__regs,
unsigned int __num_regs,
regoff_t *__starts, regoff_t *__ends);
-#endif /* Use GNU */
-#if defined _REGEX_RE_COMP || (defined _LIBC && defined __USE_BSD)
+#if defined _REGEX_RE_COMP || defined _LIBC
# ifndef _CRAY
/* 4.2 bsd compatibility. */
extern char *re_comp (const char *);
diff --git a/resolv/netdb.h b/resolv/netdb.h
index a260c48..7c5c9c9 100644
--- resolv/netdb.h
+++ resolv/netdb.h
@@ -62,6 +62,8 @@ extern int *__h_errno_location (void) __THROW __attribute__ ((__const__));
/* Possible values left in `h_errno'. */
+#define NETDB_INTERNAL -1 /* See errno. */
+#define NETDB_SUCCESS 0 /* No problem. */
#define HOST_NOT_FOUND 1 /* Authoritative Answer Host not found. */
#define TRY_AGAIN 2 /* Non-Authoritative Host not found,
or SERVERFAIL. */
@@ -69,11 +71,7 @@ extern int *__h_errno_location (void) __THROW __attribute__ ((__const__));
NOTIMP. */
#define NO_DATA 4 /* Valid name, no data record of requested
type. */
-#if defined __USE_MISC || defined __USE_GNU
-# define NETDB_INTERNAL -1 /* See errno. */
-# define NETDB_SUCCESS 0 /* No problem. */
-# define NO_ADDRESS NO_DATA /* No address, look for MX record. */
-#endif
+#define NO_ADDRESS NO_DATA /* No address, look for MX record. */
#ifdef __USE_XOPEN2K
/* Highest reserved Internet port number. */
@@ -85,14 +83,13 @@ extern int *__h_errno_location (void) __THROW __attribute__ ((__const__));
# define SCOPE_DELIMITER '%'
#endif
-#if defined __USE_MISC || defined __USE_GNU
/* Print error indicated by `h_errno' variable on standard error. STR
if non-null is printed before the error string. */
extern void herror (__const char *__str) __THROW;
/* Return string associated with error ERR_NUM. */
extern __const char *hstrerror (int __err_num) __THROW;
-#endif
+
/* Description of data base entry for a single host. */
@@ -103,9 +100,7 @@ struct hostent
int h_addrtype; /* Host address type. */
int h_length; /* Length of address. */
char **h_addr_list; /* List of addresses from name server. */
-#if defined __USE_MISC || defined __USE_GNU
-# define h_addr h_addr_list[0] /* Address, for backward compatibility.*/
-#endif
+#define h_addr h_addr_list[0] /* Address, for backward compatibility. */
};
/* Open host data base files and mark them as staying open even after
@@ -595,15 +590,15 @@ struct gaicb
# define EAI_NONAME -2 /* NAME or SERVICE is unknown. */
# define EAI_AGAIN -3 /* Temporary failure in name resolution. */
# define EAI_FAIL -4 /* Non-recoverable failure in name res. */
+# define EAI_NODATA -5 /* No address associated with NAME. */
# define EAI_FAMILY -6 /* `ai_family' not supported. */
# define EAI_SOCKTYPE -7 /* `ai_socktype' not supported. */
# define EAI_SERVICE -8 /* SERVICE not supported for `ai_socktype'. */
+# define EAI_ADDRFAMILY -9 /* Address family for NAME not supported. */
# define EAI_MEMORY -10 /* Memory allocation failure. */
# define EAI_SYSTEM -11 /* System error returned in `errno'. */
# define EAI_OVERFLOW -12 /* Argument buffer overflow. */
# ifdef __USE_GNU
-# define EAI_NODATA -5 /* No address associated with NAME. */
-# define EAI_ADDRFAMILY -9 /* Address family for NAME not supported. */
# define EAI_INPROGRESS -100 /* Processing request in progress. */
# define EAI_CANCELED -101 /* Request canceled. */
# define EAI_NOTCANCELED -102 /* Request not canceled. */
@@ -612,10 +607,8 @@ struct gaicb
# define EAI_IDN_ENCODE -105 /* IDN encoding failed. */
# endif
-# ifdef __USE_MISC
-# define NI_MAXHOST 1025
-# define NI_MAXSERV 32
-# endif
+# define NI_MAXHOST 1025
+# define NI_MAXSERV 32
# define NI_NUMERICHOST 1 /* Don't try to look up hostname. */
# define NI_NUMERICSERV 2 /* Don't convert port number to name. */
diff --git a/sysdeps/unix/sysv/linux/bits/in.h b/sysdeps/unix/sysv/linux/bits/in.h
index 433c033..6880a2e 100644
--- sysdeps/unix/sysv/linux/bits/in.h
+++ sysdeps/unix/sysv/linux/bits/in.h
@@ -1,4 +1,4 @@
-/* Copyright (C) 1991-1999, 2000, 2004, 2008 Free Software Foundation, Inc.
+/* Copyright (C) 1991-1999, 2000, 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
@@ -43,18 +43,16 @@
#define IP_ADD_SOURCE_MEMBERSHIP 39 /* ip_mreq_source: join source group */
#define IP_DROP_SOURCE_MEMBERSHIP 40 /* ip_mreq_source: leave source group */
#define IP_MSFILTER 41
-#if defined __USE_MISC || defined __USE_GNU
-# define MCAST_JOIN_GROUP 42 /* group_req: join any-source group */
-# define MCAST_BLOCK_SOURCE 43 /* group_source_req: block from given group */
-# define MCAST_UNBLOCK_SOURCE 44 /* group_source_req: unblock from given group*/
-# define MCAST_LEAVE_GROUP 45 /* group_req: leave any-source group */
-# define MCAST_JOIN_SOURCE_GROUP 46 /* group_source_req: join source-spec gr */
-# define MCAST_LEAVE_SOURCE_GROUP 47 /* group_source_req: leave source-spec gr*/
-# define MCAST_MSFILTER 48
-
-# define MCAST_EXCLUDE 0
-# define MCAST_INCLUDE 1
-#endif
+#define MCAST_JOIN_GROUP 42 /* group_req: join any-source group */
+#define MCAST_BLOCK_SOURCE 43 /* group_source_req: block from given group */
+#define MCAST_UNBLOCK_SOURCE 44 /* group_source_req: unblock from given group*/
+#define MCAST_LEAVE_GROUP 45 /* group_req: leave any-source group */
+#define MCAST_JOIN_SOURCE_GROUP 46 /* group_source_req: join source-spec gr */
+#define MCAST_LEAVE_SOURCE_GROUP 47 /* group_source_req: leave source-spec gr*/
+#define MCAST_MSFILTER 48
+
+#define MCAST_EXCLUDE 0
+#define MCAST_INCLUDE 1
#define IP_ROUTER_ALERT 5 /* bool */
#define IP_PKTINFO 8 /* bool */
@@ -78,7 +76,6 @@
#define IP_DEFAULT_MULTICAST_LOOP 1
#define IP_MAX_MEMBERSHIPS 20
-#if defined __USE_MISC || defined __USE_GNU
/* Structure used to describe IP options for IP_OPTIONS and IP_RETOPTS.
The `ip_dst' field is used for the first-hop gateway when using a
source route (this gets put into the header proper). */
@@ -103,7 +100,6 @@ struct in_pktinfo
struct in_addr ipi_spec_dst; /* Routing destination address */
struct in_addr ipi_addr; /* Header destination address */
};
-#endif
/* Options for use with `getsockopt' and `setsockopt' at the IPv6 level.
The first word in the comment at the right is the data type used;
diff --git a/sysdeps/unix/sysv/linux/bits/socket.h b/sysdeps/unix/sysv/linux/bits/socket.h
index ceb6013..11bb607 100644
--- sysdeps/unix/sysv/linux/bits/socket.h
+++ sysdeps/unix/sysv/linux/bits/socket.h
@@ -26,8 +26,10 @@
#endif
#define __need_size_t
+#define __need_NULL
#include <stddef.h>
+#include <limits.h>
#include <sys/types.h>
/* Type for length arguments in socket calls. */
@@ -154,7 +156,11 @@ struct sockaddr
/* Structure large enough to hold any socket address (with the historical
exception of AF_UNIX). We reserve 128 bytes. */
-#define __ss_aligntype unsigned long int
+#if ULONG_MAX > 0xffffffff
+# define __ss_aligntype __uint64_t
+#else
+# define __ss_aligntype __uint32_t
+#endif
#define _SS_SIZE 128
#define _SS_PADSIZE (_SS_SIZE - (2 * sizeof (__ss_aligntype)))
@@ -257,7 +263,7 @@ struct cmsghdr
#define CMSG_NXTHDR(mhdr, cmsg) __cmsg_nxthdr (mhdr, cmsg)
#define CMSG_FIRSTHDR(mhdr) \
((size_t) (mhdr)->msg_controllen >= sizeof (struct cmsghdr) \
- ? (struct cmsghdr *) (mhdr)->msg_control : (struct cmsghdr *) 0)
+ ? (struct cmsghdr *) (mhdr)->msg_control : (struct cmsghdr *) NULL)
#define CMSG_ALIGN(len) (((len) + sizeof (size_t) - 1) \
& (size_t) ~(sizeof (size_t) - 1))
#define CMSG_SPACE(len) (CMSG_ALIGN (len) \
@@ -301,74 +307,18 @@ enum
#endif
};
-#ifdef __USE_GNU
/* User visible structure for SCM_CREDENTIALS message */
+
struct ucred
{
pid_t pid; /* PID of sending process. */
uid_t uid; /* UID of sending process. */
gid_t gid; /* GID of sending process. */
};
-#endif
-
-/* Ugly workaround for unclean kernel headers. */
-#if !defined __USE_MISC && !defined __USE_GNU
-# ifndef FIOGETOWN
-# define __SYS_SOCKET_H_undef_FIOGETOWN
-# endif
-# ifndef FIOSETOWN
-# define __SYS_SOCKET_H_undef_FIOSETOWN
-# endif
-# ifndef SIOCATMARK
-# define __SYS_SOCKET_H_undef_SIOCATMARK
-# endif
-# ifndef SIOCGPGRP
-# define __SYS_SOCKET_H_undef_SIOCGPGRP
-# endif
-# ifndef SIOCGSTAMP
-# define __SYS_SOCKET_H_undef_SIOCGSTAMP
-# endif
-# ifndef SIOCGSTAMPNS
-# define __SYS_SOCKET_H_undef_SIOCGSTAMPNS
-# endif
-# ifndef SIOCSPGRP
-# define __SYS_SOCKET_H_undef_SIOCSPGRP
-# endif
-#endif
/* Get socket manipulation related informations from kernel headers. */
#include <asm/socket.h>
-#if !defined __USE_MISC && !defined __USE_GNU
-# ifdef __SYS_SOCKET_H_undef_FIOGETOWN
-# undef __SYS_SOCKET_H_undef_FIOGETOWN
-# undef FIOGETOWN
-# endif
-# ifdef __SYS_SOCKET_H_undef_FIOSETOWN
-# undef __SYS_SOCKET_H_undef_FIOSETOWN
-# undef FIOSETOWN
-# endif
-# ifdef __SYS_SOCKET_H_undef_SIOCATMARK
-# undef __SYS_SOCKET_H_undef_SIOCATMARK
-# undef SIOCATMARK
-# endif
-# ifdef __SYS_SOCKET_H_undef_SIOCGPGRP
-# undef __SYS_SOCKET_H_undef_SIOCGPGRP
-# undef SIOCGPGRP
-# endif
-# ifdef __SYS_SOCKET_H_undef_SIOCGSTAMP
-# undef __SYS_SOCKET_H_undef_SIOCGSTAMP
-# undef SIOCGSTAMP
-# endif
-# ifdef __SYS_SOCKET_H_undef_SIOCGSTAMPNS
-# undef __SYS_SOCKET_H_undef_SIOCGSTAMPNS
-# undef SIOCGSTAMPNS
-# endif
-# ifdef __SYS_SOCKET_H_undef_SIOCSPGRP
-# undef __SYS_SOCKET_H_undef_SIOCSPGRP
-# undef SIOCSPGRP
-# endif
-#endif
/* Structure used to manipulate the SO_LINGER option. */
struct linger
diff --git a/sysdeps/unix/sysv/linux/x86_64/bits/stat.h b/sysdeps/unix/sysv/linux/x86_64/bits/stat.h
index 286c1a2..add2c8e 100644
--- sysdeps/unix/sysv/linux/x86_64/bits/stat.h
+++ sysdeps/unix/sysv/linux/x86_64/bits/stat.h
@@ -61,7 +61,7 @@ struct stat
__uid_t st_uid; /* User ID of the file's owner. */
__gid_t st_gid; /* Group ID of the file's group.*/
#if __WORDSIZE == 64
- int __pad0;
+ int pad0;
#endif
__dev_t st_rdev; /* Device number, if device. */
#if __WORDSIZE == 32
@@ -129,7 +129,7 @@ struct stat64
__uid_t st_uid; /* User ID of the file's owner. */
__gid_t st_gid; /* Group ID of the file's group.*/
#if __WORDSIZE == 64
- int __pad0;
+ int pad0;
__dev_t st_rdev; /* Device number, if device. */
__off_t st_size; /* Size of file, in bytes. */
#else
diff --git a/sysdeps/posix/getaddrinfo.c b/sysdeps/posix/getaddrinfo.c
index 9a27efd..c911345 100644
--- sysdeps/posix/getaddrinfo.c
+++ sysdeps/posix/getaddrinfo.c
@@ -1105,22 +1105,22 @@ static const struct prefixentry *labels;
static const struct prefixentry default_labels[] =
{
/* See RFC 3484 for the details. */
- { { .__in6_u
- = { .__u6_addr8 = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01 } }
- }, 128, 0 },
- { { .__in6_u
- = { .__u6_addr8 = { 0x20, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 } }
- }, 16, 2 },
- { { .__in6_u
- = { .__u6_addr8 = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 } }
- }, 96, 3 },
- { { .__in6_u
- = { .__u6_addr8 = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00 } }
- }, 96, 4 },
+ { { .in6_u
+ = { .u6_addr8 = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01 } } },
+ 128, 0 },
+ { { .in6_u
+ = { .u6_addr8 = { 0x20, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 } } },
+ 16, 2 },
+ { { .in6_u
+ = { .u6_addr8 = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 } } },
+ 96, 3 },
+ { { .in6_u
+ = { .u6_addr8 = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00 } } },
+ 96, 4 },
/* The next two entries differ from RFC 3484. We need to treat
IPv6 site-local addresses special because they are never NATed,
unlike site-locale IPv4 addresses. If this would not happen, on
@@ -1128,23 +1128,23 @@ static const struct prefixentry default_labels[] =
sorting would prefer the IPv6 site-local addresses, causing
unnecessary delays when trying to connect to a global IPv6 address
through a site-local IPv6 address. */
- { { .__in6_u
- = { .__u6_addr8 = { 0xfe, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 } }
- }, 10, 5 },
- { { .__in6_u
- = { .__u6_addr8 = { 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 } }
- }, 7, 6 },
+ { { .in6_u
+ = { .u6_addr8 = { 0xfe, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 } } },
+ 10, 5 },
+ { { .in6_u
+ = { .u6_addr8 = { 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 } } },
+ 7, 6 },
/* Additional rule for Teredo tunnels. */
- { { .__in6_u
- = { .__u6_addr8 = { 0x20, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 } }
- }, 32, 7 },
- { { .__in6_u
- = { .__u6_addr8 = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 } }
- }, 0, 1 }
+ { { .in6_u
+ = { .u6_addr8 = { 0x20, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 } } },
+ 32, 7 },
+ { { .in6_u
+ = { .u6_addr8 = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 } } },
+ 0, 1 }
};
@@ -1155,26 +1155,26 @@ static const struct prefixentry *precedence;
static const struct prefixentry default_precedence[] =
{
/* See RFC 3484 for the details. */
- { { .__in6_u
- = { .__u6_addr8 = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01 } }
- }, 128, 50 },
- { { .__in6_u
- = { .__u6_addr8 = { 0x20, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 } }
- }, 16, 30 },
- { { .__in6_u
- = { .__u6_addr8 = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 } }
- }, 96, 20 },
- { { .__in6_u
- = { .__u6_addr8 = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00 } }
- }, 96, 10 },
- { { .__in6_u
- = { .__u6_addr8 = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 } }
- }, 0, 40 }
+ { { .in6_u
+ = { .u6_addr8 = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01 } } },
+ 128, 50 },
+ { { .in6_u
+ = { .u6_addr8 = { 0x20, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 } } },
+ 16, 30 },
+ { { .in6_u
+ = { .u6_addr8 = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 } } },
+ 96, 20 },
+ { { .in6_u
+ = { .u6_addr8 = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00 } } },
+ 96, 10 },
+ { { .in6_u
+ = { .u6_addr8 = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 } } },
+ 0, 40 }
};

View File

@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:adabcdd26bd71d7cb15bfc2fbb3efc29ad9d166a2a3f25bed097e14489264de8
size 15308055

View File

@ -0,0 +1,129 @@
---
config.make.in | 1 +
configure | 16 +++++++++++++++-
configure.in | 1 +
posix/Makefile | 2 +-
sunrpc/Makefile | 2 +-
timezone/Makefile | 2 +-
6 files changed, 20 insertions(+), 4 deletions(-)
--- config.make.in
+++ config.make.in
@@ -90,6 +90,7 @@ add-ons = @add_ons@
add-on-subdirs = @add_on_subdirs@
sysdeps-add-ons = @sysdeps_add_ons@
cross-compiling = @cross_compiling@
+compiled-binaries-can-run-on-buildhost = @compiled_binaries_can_run_on_buildhost@
force-install = @force_install@
# Build tools.
--- configure
+++ configure
@@ -567,6 +567,7 @@ ac_clean_files=
ac_config_libobj_dir=.
LIBOBJS=
cross_compiling=no
+compiled_binaries_can_run_on_buildhost=yes
subdirs=
MFLAGS=
MAKEFLAGS=
@@ -687,6 +688,7 @@ ac_ct_CC
OBJEXT
BUILD_CC
cross_compiling
+compiled_binaries_can_run_on_buildhost
CPP
CXX
CXXFLAGS
@@ -1180,6 +1182,13 @@ do
{ (exit 1); exit 1; }; }
done
+# Check whether --enable-runbinaries was given.
+if test "${enable_runbinaries+set}" = set; then
+ enableval=$enable_runbinaries; compiled_binaries_can_run_on_buildhost=$enableval
+else
+ compiled_binaries_can_run_on_buildhost=yes
+fi
+
# There might be people who depend on the old broken behavior: `$host'
# used to hold the argument of --host etc.
# FIXME: To remove some day.
@@ -1195,6 +1204,7 @@ if test "x$host_alias" != x; then
If a cross compiler is detected then cross compile mode will be used." >&2
elif test "x$build_alias" != "x$host_alias"; then
cross_compiling=yes
+ compiled_binaries_can_run_on_buildhost=no
fi
fi
@@ -1381,6 +1391,9 @@ Optional Features:
VERSION
--enable-all-warnings enable all useful warnings gcc can issue
+ --enable-runbinaries the compiled binaries should run on the buildhost because
+ it happens to have a compatible cpu
+
Optional Packages:
--with-PACKAGE[=ARG] use PACKAGE [ARG=yes]
--without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no)
@@ -9212,6 +9225,7 @@ ac_ct_CC!$ac_ct_CC$ac_delim
OBJEXT!$OBJEXT$ac_delim
BUILD_CC!$BUILD_CC$ac_delim
cross_compiling!$cross_compiling$ac_delim
+compiled_binaries_can_run_on_buildhost!$compiled_binaries_can_run_on_buildhost$ac_delim
CPP!$CPP$ac_delim
CXX!$CXX$ac_delim
CXXFLAGS!$CXXFLAGS$ac_delim
@@ -9240,7 +9254,7 @@ PERL!$PERL$ac_delim
INSTALL_INFO!$INSTALL_INFO$ac_delim
_ACEOF
- if test `sed -n "s/.*$ac_delim\$/X/p" conf$$subs.sed | grep -c X` = 97; then
+ if test `sed -n "s/.*$ac_delim\$/X/p" conf$$subs.sed | grep -c X` = 98; then
break
elif $ac_last_try; then
{ { echo "$as_me:$LINENO: error: could not make $CONFIG_STATUS" >&5
--- configure.in
+++ configure.in
@@ -835,6 +835,7 @@ if test $host != $build; then
AC_CHECK_PROGS(BUILD_CC, gcc cc)
fi
AC_SUBST(cross_compiling)
+AC_SUBST(compiled_binaries_can_run_on_buildhost)
AC_PROG_CPP
# We need the C++ compiler only for testing.
AC_PROG_CXX
--- posix/Makefile
+++ posix/Makefile
@@ -301,7 +301,7 @@ $(inst_libexecdir)/getconf: $(inst_bindi
done < $(objpfx)getconf.speclist
$(objpfx)getconf.speclist: $(objpfx)getconf
-ifeq (no,$(cross-compiling))
+ifeq (yes,$(compiled-binaries-can-run-on-buildhost))
LC_ALL=C GETCONF_DIR=/dev/null \
$(run-program-prefix) $< _POSIX_V6_WIDTH_RESTRICTED_ENVS > $@.new
else
--- sunrpc/Makefile
+++ sunrpc/Makefile
@@ -98,7 +98,7 @@ otherlibs += $(nssobjdir)/libnss_files.a
$(resolvobjdir)/libresolv.a
endif
-ifeq (no,$(cross-compiling))
+ifeq (yes,$(compiled-binaries-can-run-on-buildhost))
# We can only build this library if we can run the rpcgen we build.
headers += $(rpcsvc:%.x=rpcsvc/%.h)
extra-libs := librpcsvc
--- timezone/Makefile
+++ timezone/Makefile
@@ -69,7 +69,7 @@ installed-posixrules-file := $(firstword
$(addprefix $(inst_zonedir)/, \
$(posixrules-file)))
-ifeq ($(cross-compiling),no)
+ifeq (yes,$(compiled-binaries-can-run-on-buildhost))
# Don't try to install the zoneinfo files since we can't run zic.
install-others = $(addprefix $(inst_zonedir)/,$(zonenames) \
$(zonenames:%=posix/%) \

26
glibc-cpusetsize.diff Normal file
View File

@ -0,0 +1,26 @@
Index: glibc-2.4/bits/sched.h
===================================================================
--- bits/sched.h 2007-08-22 08:02:57.124247019 -0500
+++ bits/sched.h 2007-08-22 08:03:36.149061686 -0500
@@ -38,7 +38,7 @@ struct sched_param
#if defined _SCHED_H && !defined __cpu_set_t_defined
# define __cpu_set_t_defined
/* Size definition for CPU sets. */
-# define __CPU_SETSIZE 1024
+# define __CPU_SETSIZE 4096
# define __NCPUBITS (8 * sizeof (__cpu_mask))
/* Type for array elements in 'cpu_set'. */
Index: glibc-2.4/sysdeps/unix/sysv/linux/bits/sched.h
===================================================================
--- sysdeps/unix/sysv/linux/bits/sched.h 2006-02-08 13:09:06.000000000 -0600
+++ sysdeps/unix/sysv/linux/bits/sched.h 2007-08-22 08:04:00.988126075 -0500
@@ -97,7 +97,7 @@ struct __sched_param
#if defined _SCHED_H && !defined __cpu_set_t_defined
# define __cpu_set_t_defined
/* Size definition for CPU sets. */
-# define __CPU_SETSIZE 1024
+# define __CPU_SETSIZE 4096
# define __NCPUBITS (8 * sizeof (__cpu_mask))
/* Type for array elements in 'cpu_set_t'. */

49
glibc-fix-nscd.diff Normal file
View File

@ -0,0 +1,49 @@
diff -urp nscd.mm/cache.c nscd/cache.c
--- nscd.mm/cache.c 2008-10-13 13:09:35.120009000 +0000
+++ nscd/cache.c 2008-10-13 15:11:17.629844982 +0000
@@ -300,7 +300,7 @@ prune_cache (struct database_dyn *table,
/* now == 0 means just check for changed files */
if (now == (time_t)0)
- return;
+ return 0;
/* We run through the table and find values which are not valid anymore.
diff -urp nscd.mm/connections.c nscd/connections.c
--- nscd.mm/connections.c 2008-10-13 13:09:35.120009000 +0000
+++ nscd/connections.c 2008-10-13 14:55:22.417018210 +0000
@@ -1816,22 +1816,5 @@ main_loop_poll (void)
/* We have a new incoming connection. Accept the connection. */
int fd;
-#ifndef __ASSUME_PACCEPT
- fd = -1;
- if (have_paccept >= 0)
-#endif
- {
-#if 0
- fd = TEMP_FAILURE_RETRY (paccept (sock, NULL, NULL, NULL,
- SOCK_NONBLOCK));
-#ifndef __ASSUME_PACCEPT
- if (have_paccept == 0)
- have_paccept = fd != -1 || errno != ENOSYS ? 1 : -1;
-#endif
-#endif
- }
-#ifndef __ASSUME_PACCEPT
- if (have_paccept < 0)
- fd = TEMP_FAILURE_RETRY (accept (sock, NULL, NULL));
-#endif
+ fd = TEMP_FAILURE_RETRY (accept (sock, NULL, NULL));
/* Use the descriptor if we have not reached the limit. */
if (fd >= 0)
--- sysdeps/unix/sysv/linux/kernel-features.h.mm 2008-08-25 13:02:49.000000000 +0000
+++ sysdeps/unix/sysv/linux/kernel-features.h 2008-10-13 14:27:31.357847116 +0000
@@ -509,5 +509,4 @@
# define __ASSUME_SOCK_CLOEXEC 1
# define __ASSUME_IN_NONBLOCK 1
# define __ASSUME_PIPE2 1
-# define __ASSUME_PACCEPT 1
#endif

View File

@ -0,0 +1,14 @@
Index: glibc/posix/bits/unistd.h
===================================================================
--- posix/bits/unistd.h 2007-10-16 14:58:46.000000000 +0200
+++ posix/bits/unistd.h 2008-09-18 11:38:25.000000000 +0200
@@ -270,7 +270,8 @@ __NTH (getgroups (int __size, __gid_t __
if (!__builtin_constant_p (__size))
return __getgroups_chk (__size, __list, __bos (__list));
- if (__size * sizeof (__gid_t) > __bos (__list))
+ if (__size > 0
+ && __size * sizeof (__gid_t) > __bos (__list))
return __getgroups_chk_warn (__size, __list, __bos (__list));
}
return __getgroups_alias (__size, __list);

11
glibc-ldscript.diff Normal file
View File

@ -0,0 +1,11 @@
--- elf/Makefile 03 Nov 2008 15:06:11 +0100 1.330
+++ elf/Makefile 21 Jan 2009 19:25:29 +0100
@@ -304,7 +304,7 @@ $(objpfx)ld.so: $(objpfx)librtld.os $(ld
$(LDFLAGS-rtld) -Wl,-z,defs -Wl,--verbose 2>&1 | \
LC_ALL=C \
sed -e '/^=========/,/^=========/!d;/^=========/d' \
- -e 's/\. = 0 + SIZEOF_HEADERS;/& _begin = . - SIZEOF_HEADERS;/' \
+ -e 's/\. = .* + SIZEOF_HEADERS;/& _begin = . - SIZEOF_HEADERS;/' \
> $@.lds
$(LINK.o) -nostdlib -nostartfiles -shared -o $@ \
$(LDFLAGS-rtld) -Wl,-z,defs $(z-now-$(bind-now)) \

159
glibc-mtfsf.diff Normal file
View File

@ -0,0 +1,159 @@
--- sysdeps/powerpc/fpu/fenv_libc.h.~1.5.~ 2008-11-17 10:44:10.000000000 +0100
+++ sysdeps/powerpc/fpu/fenv_libc.h 2009-01-22 14:23:37.000000000 +0100
@@ -39,7 +39,7 @@ libm_hidden_proto (__fe_nomask_env)
do { \
double d = (env); \
if(GLRO(dl_hwcap) & PPC_FEATURE_HAS_DFP) \
- asm volatile ("mtfsf 0xff,%0,1,0" : : "f" (d)); \
+ asm volatile (".machine push; .machine power6; mtfsf 0xff,%0,1,0; .machine pop" : : "f" (d)); \
else \
asm volatile ("mtfsf 0xff,%0" : : "f" (d)); \
} while(0)
@@ -53,7 +53,7 @@ libm_hidden_proto (__fe_nomask_env)
#define relax_fenv_state() \
do { \
if(GLRO(dl_hwcap) & PPC_FEATURE_HAS_DFP) \
- asm ("mtfsfi 7,0,1"); \
+ asm (".machine push; .machine power6; mtfsfi 7,0,1; .machine pop"); \
asm ("mtfsfi 7,0"); \
} while(0)
--- sysdeps/powerpc/fpu/tst-setcontext-fpscr.c.~1.1.~ 2008-11-17 02:34:02.000000000 +0100
+++ sysdeps/powerpc/fpu/tst-setcontext-fpscr.c 2009-01-22 14:24:33.000000000 +0100
@@ -109,7 +109,7 @@ typedef unsigned int si_fpscr_t __attrib
tmp __attribute__ ((__aligned__(8))); \
tmp.fpscr = __fpscr; \
/* Set the entire 64-bit FPSCR. */ \
- __asm__ ("lfd%U0 0,%0; mtfsf 255,0,1,0" : : "m" (tmp.d) : "fr0"); \
+ __asm__ ("lfd%U0 0,%0; .machine push; .machine power6; mtfsf 255,0,1,0; .machine pop" : : "m" (tmp.d) : "fr0"); \
}
# define _GET_SI_FPSCR(__fpscr) ({ \
--- sysdeps/unix/sysv/linux/powerpc/powerpc32/setcontext-common.S.~1.4.~ 2008-11-17 10:44:18.000000000 +0100
+++ sysdeps/unix/sysv/linux/powerpc/powerpc32/setcontext-common.S 2009-01-22 15:42:24.000000000 +0100
@@ -202,13 +202,19 @@ ENTRY(__CONTEXT_FUNC_NAME)
lfd fp0,_UC_FREGS+(0*8)(r31)
# ifdef _ARCH_PWR6
/* Use the extended four-operand version of the mtfsf insn. */
+ .machine push
+ .machine power6
mtfsf 0xff,fp31,1,0
+ .machine pop
# else
/* Availability of DFP indicates a 64-bit FPSCR. */
andi. r6,r7,PPC_FEATURE_HAS_DFP
beq 7f
/* Use the extended four-operand version of the mtfsf insn. */
+ .machine push
+ .machine power6
mtfsf 0xff,fp31,1,0
+ .machine pop
b 8f
/* Continue to operate on the FPSCR as if it were 32-bits. */
7: mtfsf 0xff,fp31
--- sysdeps/unix/sysv/linux/powerpc/powerpc32/swapcontext-common.S.~1.3.~ 2008-11-17 10:44:18.000000000 +0100
+++ sysdeps/unix/sysv/linux/powerpc/powerpc32/swapcontext-common.S 2009-01-22 15:42:37.000000000 +0100
@@ -428,13 +428,19 @@ ENTRY(__CONTEXT_FUNC_NAME)
lfd fp0,_UC_FREGS+(0*8)(r31)
# ifdef _ARCH_PWR6
/* Use the extended four-operand version of the mtfsf insn. */
+ .machine push
+ .machine power6
mtfsf 0xff,fp31,1,0
+ .machine pop
# else
/* Availability of DFP indicates a 64-bit FPSCR. */
andi. r6,r7,PPC_FEATURE_HAS_DFP
beq 7f
/* Use the extended four-operand version of the mtfsf insn. */
+ .machine push
+ .machine power6
mtfsf 0xff,fp31,1,0
+ .machine pop
b 8f
/* Continue to operate on the FPSCR as if it were 32-bits. */
7: mtfsf 0xff,fp31
--- sysdeps/unix/sysv/linux/powerpc/powerpc64/setcontext.S.~1.14.~ 2008-11-17 10:44:18.000000000 +0100
+++ sysdeps/unix/sysv/linux/powerpc/powerpc64/setcontext.S 2009-01-22 15:43:05.000000000 +0100
@@ -84,13 +84,19 @@ ENTRY(__novec_setcontext)
# ifdef _ARCH_PWR6
/* Use the extended four-operand version of the mtfsf insn. */
+ .machine push
+ .machine power6
mtfsf 0xff,fp0,1,0
+ .machine pop
# else
/* Availability of DFP indicates a 64-bit FPSCR. */
andi. r6,r5,PPC_FEATURE_HAS_DFP
beq 5f
/* Use the extended four-operand version of the mtfsf insn. */
+ .machine push
+ .machine power6
mtfsf 0xff,fp0,1,0
+ .machine pop
b 6f
/* Continue to operate on the FPSCR as if it were 32-bits. */
5:
@@ -372,13 +378,19 @@ L(has_no_vec):
# ifdef _ARCH_PWR6
/* Use the extended four-operand version of the mtfsf insn. */
+ .machine push
+ .machine power6
mtfsf 0xff,fp0,1,0
+ .machine pop
# else
/* Availability of DFP indicates a 64-bit FPSCR. */
andi. r6,r5,PPC_FEATURE_HAS_DFP
beq 7f
/* Use the extended four-operand version of the mtfsf insn. */
+ .machine push
+ .machine power6
mtfsf 0xff,fp0,1,0
+ .machine pop
b 8f
/* Continue to operate on the FPSCR as if it were 32-bits. */
7:
--- sysdeps/unix/sysv/linux/powerpc/powerpc64/swapcontext.S.~1.17.~ 2008-11-17 10:44:18.000000000 +0100
+++ sysdeps/unix/sysv/linux/powerpc/powerpc64/swapcontext.S 2009-01-22 15:43:26.000000000 +0100
@@ -178,13 +178,19 @@ ENTRY(__novec_swapcontext)
lfd fp30,(SIGCONTEXT_FP_REGS+(PT_R30*8))(r31)
# ifdef _ARCH_PWR6
/* Use the extended four-operand version of the mtfsf insn. */
+ .machine push
+ .machine power6
mtfsf 0xff,fp0,1,0
+ .machine pop
# else
/* Availability of DFP indicates a 64-bit FPSCR. */
andi. r6,r8,PPC_FEATURE_HAS_DFP
beq 5f
/* Use the extended four-operand version of the mtfsf insn. */
+ .machine push
+ .machine power6
mtfsf 0xff,fp0,1,0
+ .machine pop
b 6f
/* Continue to operate on the FPSCR as if it were 32-bits. */
5:
@@ -670,13 +676,19 @@ L(has_no_vec2):
lfd fp30,(SIGCONTEXT_FP_REGS+(PT_R30*8))(r31)
# ifdef _ARCH_PWR6
/* Use the extended four-operand version of the mtfsf insn. */
+ .machine push
+ .machine power6
mtfsf 0xff,fp0,1,0
+ .machine pop
# else
/* Availability of DFP indicates a 64-bit FPSCR. */
andi. r6,r8,PPC_FEATURE_HAS_DFP
beq 7f
/* Use the extended four-operand version of the mtfsf insn. */
+ .machine push
+ .machine power6
mtfsf 0xff,fp0,1,0
+ .machine pop
b 8f
/* Continue to operate on the FPSCR as if it were 32-bits. */
7:

View File

@ -0,0 +1,39 @@
initfini.c is compiled to assembly and further processed and split,
we can't have unwind tables therein.
Index: csu/Makefile
===================================================================
--- csu/Makefile.orig
+++ csu/Makefile
@@ -93,7 +93,7 @@ omit-deps += $(crtstuff)
$(crtstuff:%=$(objpfx)%.o): %.o: %.S $(objpfx)defs.h
$(compile.S) -g0 $(ASFLAGS-.os) -o $@
-CFLAGS-initfini.s = -g0 -fPIC -fno-inline-functions $(fno-unit-at-a-time)
+CFLAGS-initfini.s = -g0 -fPIC -fno-inline-functions $(fno-unit-at-a-time) -fno-unwind-tables -fno-asynchronous-unwind-tables
vpath initfini.c $(sysdirs)
Index: nptl/Makefile
===================================================================
--- nptl/Makefile.orig
+++ nptl/Makefile
@@ -339,7 +339,7 @@ endif
extra-objs += $(crti-objs) $(crtn-objs)
omit-deps += crti crtn
-CFLAGS-pt-initfini.s = -g0 -fPIC -fno-inline-functions $(fno-unit-at-a-time)
+CFLAGS-pt-initfini.s = -g0 -fPIC -fno-inline-functions $(fno-unit-at-a-time) -fno-unwind-tables -fno-asynchronous-unwind-tables
endif
CFLAGS-flockfile.c = -D_IO_MTSAFE_IO
Index: nptl/sysdeps/unix/sysv/linux/x86_64/Makefile
===================================================================
--- nptl/sysdeps/unix/sysv/linux/x86_64/Makefile.orig
+++ nptl/sysdeps/unix/sysv/linux/x86_64/Makefile
@@ -1,4 +1,4 @@
ifeq ($(subdir),nptl)
CFLAGS-pt-initfini.s = -g0 -fPIC -fno-inline-functions \
- -fno-asynchronous-unwind-tables $(fno-unit-at-a-time)
+ -fno-unwind-tables -fno-asynchronous-unwind-tables $(fno-unit-at-a-time)
endif

View File

@ -0,0 +1,18 @@
--- nptl/pthreadP.h
+++ nptl/pthreadP.h 2006/04/07 09:38:46
@@ -510,15 +510,4 @@
# define PTHREAD_STATIC_FN_REQUIRE(name) __asm (".globl " #name);
#endif
-
-#ifndef __NR_set_robust_list
-/* XXX For the time being... Once we can rely on the kernel headers
- having the definition remove these lines. */
-# if defined __i386__
-# define __NR_set_robust_list 311
-# elif defined __x86_64__
-# define __NR_set_robust_list 273
-# endif
-#endif
-
#endif /* pthreadP.h */

View File

@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:dfe11b1779ec269e02d4951c7364581ec5113ea3b17eed20341e5cf4cf57ff10
size 330166

22
glibc-nss-deepbind.diff Normal file
View File

@ -0,0 +1,22 @@
Use DEEPBIND to load the nss modules. Helps thunderbird (linked against its
own version of the ldap libs) when using nss_ldap (linked against system
libldap) leading to crashes due to incompatibilities.
See https://bugzilla.novell.com/show_bug.cgi?id=157078 and
http://sourceware.org/bugzilla/show_bug.cgi?id=6610
Index: nss/nsswitch.c
===================================================================
--- nss/nsswitch.c.orig
+++ nss/nsswitch.c
@@ -358,7 +358,9 @@ __nss_lookup_function (service_user *ni,
".so"),
__nss_shlib_revision);
- ni->library->lib_handle = __libc_dlopen (shlib_name);
+ ni->library->lib_handle
+ = __libc_dlopen_mode (shlib_name,
+ RTLD_LAZY | __RTLD_DLOPEN | RTLD_DEEPBIND);
if (ni->library->lib_handle == NULL)
{
/* Failed to load the library. */

22
glibc-selinux.diff Normal file
View File

@ -0,0 +1,22 @@
--- Makerules
+++ Makerules
@@ -349,7 +349,7 @@
endif # sysd-sorted-done
# Generate .dT files as we compile.
-compile-mkdep-flags = -MD -MP -MF $@.dt -MT $@
+compile-mkdep-flags = -MD -MP -MF $@.dt -MT $@ -I/usr/include
compile-command.S = $(compile.S) $(OUTPUT_OPTION) $(compile-mkdep-flags)
compile-command.s = $(COMPILE.s) $< $(OUTPUT_OPTION) $(compile-mkdep-flags)
compile-command.c = $(compile.c) $(OUTPUT_OPTION) $(compile-mkdep-flags)
--- nscd/Makefile
+++ nscd/Makefile
@@ -124,6 +124,8 @@
CFLAGS-getsrvbypt_r.c += $(nscd-cflags)
CFLAGS-res_hconf.c += $(nscd-cflags)
+LDFLAGS = -lselinux
+
ifeq (yesyes,$(have-fpie)$(build-shared))
relro-LDFLAGS += -Wl,-z,now

127
glibc-suse-note.diff Normal file
View File

@ -0,0 +1,127 @@
This patch creates a SuSE .note section with version number 10.2
================================================================================
Index: Makerules
===================================================================
--- Makerules.orig
+++ Makerules
@@ -489,6 +489,7 @@ $(common-objpfx)shlib.lds: $(common-objp
-e '/^=========/,/^=========/!d;/^=========/d' \
$(if $(filter yes,$(have-hash-style)), \
-e 's/^.*\.gnu\.hash[ ]*:.*$$/ .note.ABI-tag : { *(.note.ABI-tag) } &/' \
+ -e 's/^.*\.gnu\.hash[ ]*:.*$$/ .note.ABI-tag : { *(.note.ABI-tag) } .note.SuSE : { *(.note.SuSE) } &/' \
-e '/^[ ]*\.hash[ ]*:.*$$/{h;d;}' \
-e '/DATA_SEGMENT_ALIGN/{H;g}' \
, \
@@ -514,7 +515,7 @@ common-generated += shlib.lds
define build-shlib
$(build-shlib-helper) -o $@ -T $(common-objpfx)shlib.lds \
- $(csu-objpfx)abi-note.o $(build-shlib-objlist)
+ $(csu-objpfx)abi-note.o $(csu-objpfx)suse-note.o $(build-shlib-objlist)
endef
else
ifneq (,$(findstring aix,$(config-os)))
@@ -556,7 +557,7 @@ ifeq (yes,$(elf))
# not for shared objects
define build-module
$(build-module-helper) -o $@ -T $(common-objpfx)shlib.lds \
- $(csu-objpfx)abi-note.o $(build-module-objlist)
+ $(csu-objpfx)abi-note.o $(csu-objpfx)suse-note.o $(build-module-objlist)
endef
define build-module-asneeded
$(build-module-helper) -o $@ -T $(common-objpfx)shlib.lds \
Index: csu/Makefile
===================================================================
--- csu/Makefile.orig
+++ csu/Makefile
@@ -125,7 +125,7 @@ $(objpfx)defs.h: $(objpfx)initfini.s
endif
ifeq (yes,$(elf))
-extra-objs += abi-note.o init.o
+extra-objs += abi-note.o suse-note.o init.o
asm-CPPFLAGS += -I$(objpfx).
endif
@@ -143,12 +143,15 @@ ifeq (yes,$(elf))
# We link the ELF startfile along with a SHT_NOTE section indicating
# the kernel ABI the binaries linked with this library will require.
$(objpfx)$(start-installed-name): $(objpfx)start.o $(objpfx)abi-note.o \
+ $(objpfx)suse-note.o \
$(objpfx)init.o
$(link-relocatable)
$(objpfx)S$(start-installed-name): $(objpfx)start.os $(objpfx)abi-note.o \
+ $(objpfx)suse-note.o \
$(objpfx)init.o
$(link-relocatable)
$(objpfx)b$(start-installed-name): $(objpfx)start.ob $(objpfx)abi-note.ob \
+ $(objpfx)suse-note.ob \
$(objpfx)init.ob
$(link-relocatable)
else
Index: csu/suse-note.S
===================================================================
--- /dev/null
+++ csu/suse-note.S
@@ -0,0 +1,59 @@
+/* Special .init and .fini section support.
+ Copyright (C) 1997, 2001, 2002 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.
+
+ In addition to the permissions in the GNU Lesser General Public
+ License, the Free Software Foundation gives you unlimited
+ permission to link the compiled version of this file with other
+ programs, and to distribute those programs without any restriction
+ coming from the use of this file. (The Lesser General Public
+ License restrictions do apply in other respects; for example, they
+ cover modification of the file, and distribution when not linked
+ into another program.)
+
+ 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. */
+
+/* Look in abi-note.S for the definition of an ELF note section. */
+
+#include <config.h>
+
+#define PROD_TYPE_BOX 0
+#define PROD_TYPE_SLES 1
+
+#define NOTE_VERSION 1
+#define PROD_TYPE PROD_TYPE_BOX
+#define PROD_MAJOR 10
+#define PROD_MINOR 2
+
+/* The linker (GNU ld 2.8 and later) recognizes an allocated section whose
+ name begins with `.note' and creates a PT_NOTE program header entry
+ pointing at it. */
+
+ .section ".note.SuSE", "a"
+ .p2align 2
+ .long 1f - 0f /* name length */
+ .long 3f - 2f /* data length */
+ .long 0x45537553 /* note type ("SuSE" in little endian) */
+0: .asciz "SuSE" /* vendor name */
+1:
+ .p2align 2
+2: /* Data */
+ .byte NOTE_VERSION /* Version of following data */
+ .byte PROD_TYPE /* product type (box, sles, nld, whatever) */
+ .byte PROD_MAJOR /* product version */
+ .byte PROD_MINOR /* product minor version */
+3:
+ .p2align 2 /* pad out section */

27
glibc-version.diff Normal file
View File

@ -0,0 +1,27 @@
--- csu/version.c
+++ csu/version.c 2003/06/25 07:01:44
@@ -24,11 +24,12 @@
static const char __libc_version[] = VERSION;
static const char banner[] =
-"GNU C Library "RELEASE" release version "VERSION", by Roland McGrath et al.\n\
+"GNU C Library "RELEASE" release version "VERSION" ("CVSDATE"), by Roland McGrath et al.\n\
Copyright (C) 2008 Free Software Foundation, Inc.\n\
This is free software; see the source for copying conditions.\n\
There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A\n\
PARTICULAR PURPOSE.\n\
+Configured for "CONFHOST".\n\
Compiled by GNU CC version "__VERSION__".\n"
#include "version-info.h"
#ifdef GLIBC_OLDEST_ABI
@@ -37,6 +38,9 @@
#ifdef USE_TLS
"Thread-local storage support included.\n"
#endif
+#ifdef FLOATING_STACKS
+"pthread library is compiled with floating stack support enabled.\n"
+#endif
"For bug reporting instructions, please see:\n\
<http://www.gnu.org/software/libc/bugs.html>.\n";

4822
glibc.changes Normal file

File diff suppressed because it is too large Load Diff

1
glibc.rpmlintrc Normal file
View File

@ -0,0 +1 @@
addFilter(".*glibc-profile.* devel-file-in-non-devel-package.*/usr/lib.*/lib.*_p.a")

3400
glibc.spec Normal file

File diff suppressed because it is too large Load Diff

333
glibc_post_upgrade.c Normal file
View File

@ -0,0 +1,333 @@
/* skeleton based on version from Fedora Core 3 */
#define _GNU_SOURCE
#include <sys/types.h>
#include <sys/wait.h>
#include <stdio.h>
#include <errno.h>
#include <unistd.h>
#include <sys/time.h>
#include <dirent.h>
#include <stddef.h>
#include <fcntl.h>
#include <string.h>
#include <sys/stat.h>
#include <elf.h>
#define verbose_exec(failcode, path...) \
do \
{ \
char *const arr[] = { path, NULL }; \
vexec (failcode, arr); \
} while (0)
__attribute__((noinline)) void vexec (int failcode, char *const path[]);
__attribute__((noinline)) void says (const char *str);
__attribute__((noinline)) void sayn (long num);
__attribute__((noinline)) void message (char *const path[]);
__attribute__((noinline)) int check_elf (const char *name);
int
main (void)
{
char initpath[256];
struct stat root, init_root;
#ifdef REMOVE_TLS_DIRS
const char *library[] = {"libc.so.6", "libc.so.6.1", "libm.so.6",
"libm.so.6.1", "librt.so.1", "librtkaio.so.1",
"libpthread.so.0", "libthread_db.so.1"};
const char *remove_dir[] = {
#ifdef __i386__
"/lib/i686/",
#endif
#ifdef __powerpc64__
#ifdef REMOVE_PPC_OPTIMIZE_POWER4
"/lib64/power4/",
"/lib64/ppc970/",
#endif
#ifdef REMOVE_PPC_OPTIMIZE_POWER5
"/lib64/power5/",
"/lib64/power5+/",
#endif
#ifdef REMOVE_PPC_OPTIMIZE_POWER6
"/lib64/power6/",
"/lib64/power6x/",
#endif
#ifdef REMOVE_PPC_OPTIMIZE_POWER7
"/lib64/power7/",
#endif
#ifdef REMOVE_PPC_OPTIMIZE_CELL
"/lib64/ppc-cell-be/",
#endif
#endif /* __powerpc64__ */
#ifdef __powerpc__
#ifdef REMOVE_PPC_OPTIMIZE_POWER4
"/lib/power4/",
"/lib/ppc970/",
#endif
#ifdef REMOVE_PPC_OPTIMIZE_POWER5
"/lib/power5/",
"/lib/power5+/",
#endif
#ifdef REMOVE_PPC_OPTIMIZE_POWER6
"/lib/power6/",
"/lib/power6x/",
#endif
#ifdef REMOVE_PPC_OPTIMIZE_POWER7
"/lib/power7/",
#endif
#ifdef REMOVE_PPC_OPTIMIZE_CELL
"/lib/ppc-cell-be/",
#endif
#endif /* __powerpc__ */
LIBDIR"/tls/" };
int i, j;
for (i = 0; i < sizeof (remove_dir) / sizeof (remove_dir[0]); ++i)
for (j = 0; j < sizeof (library) / sizeof (library[0]); j++)
{
char buf[strlen (remove_dir[i]) + strlen (library[j]) + 1];
char readlink_buf[(strlen (remove_dir[i]) + strlen (library[j])) * 2 + 30];
ssize_t len;
char *cp;
cp = stpcpy (buf, remove_dir[i]);
strcpy (cp, library[j]);
/* This file could be a symlink to library-%{version}.so, so check
this and don't remove only the link, but also the library itself. */
cp = stpcpy (readlink_buf, remove_dir[i]);
if ((len = readlink (buf, cp, (sizeof (readlink_buf)
- (cp - readlink_buf) - 1))) > 0)
{
cp[len] = '\0';
if (cp[0] != '/') cp = readlink_buf;
unlink (cp);
}
unlink (buf);
}
#endif
/* If installing bi-arch glibc, rpm sometimes doesn't unpack all files
before running one of the lib's %post scriptlet. /sbin/ldconfig will
then be run by the other arch's %post. */
if (access ("/sbin/ldconfig", X_OK) == 0)
verbose_exec (110, "/sbin/ldconfig", "/sbin/ldconfig", "-X");
if (utimes (GCONV_MODULES_DIR "/gconv-modules.cache", NULL) == 0)
{
#ifndef ICONVCONFIG
#define ICONVCONFIG "/usr/sbin/iconvconfig"
#endif
verbose_exec (113, ICONVCONFIG, "/usr/sbin/iconvconfig",
"-o", GCONV_MODULES_DIR"/gconv-modules.cache",
"--nostdlib", GCONV_MODULES_DIR);
}
/* Check if telinit is available and the init fifo as well. */
if (access ("/sbin/telinit", X_OK) || access ("/dev/initctl", F_OK))
_exit (0);
/* Check if we are not inside of some chroot, because we'd just
timeout and leave /etc/initrunlvl. */
if (readlink ("/proc/1/exe", initpath, 256) <= 0 ||
readlink ("/proc/1/root", initpath, 256) <= 0 ||
stat ("/proc/1/root", &init_root) < 0 ||
stat ("/.buildenv", &init_root) < 0 || /* XEN build */
stat ("/", &root) < 0 ||
init_root.st_dev != root.st_dev || init_root.st_ino != root.st_ino)
_exit (0);
if (check_elf ("/proc/1/exe"))
verbose_exec (116, "/sbin/telinit", "/sbin/telinit", "u");
#if 0
/* Check if we can safely condrestart sshd. */
if (access ("/sbin/service", X_OK) == 0
&& access ("/usr/sbin/sshd", X_OK) == 0
&& access ("/bin/bash", X_OK) == 0)
{
if (check_elf ("/usr/sbin/sshd"))
verbose_exec (121, "/sbin/service", "/sbin/service", "sshd", "condrestart");
}
#endif
_exit(0);
}
void
vexec (int failcode, char *const path[])
{
pid_t pid;
int status, save_errno;
pid = vfork ();
if (pid == 0)
{
execv (path[0], path + 1);
save_errno = errno;
message (path);
says (" exec failed with errno ");
sayn (save_errno);
says ("\n");
_exit (failcode);
}
else if (pid < 0)
{
save_errno = errno;
message (path);
says (" fork failed with errno ");
sayn (save_errno);
says ("\n");
_exit (failcode + 1);
}
if (waitpid (0, &status, 0) != pid || !WIFEXITED (status))
{
message (path);
says (" child terminated abnormally\n");
_exit (failcode + 2);
}
if (WEXITSTATUS (status))
{
message (path);
says (" child exited with exit code ");
sayn (WEXITSTATUS (status));
says ("\n");
_exit (WEXITSTATUS (status));
}
}
void
says (const char *str)
{
write (1, str, strlen (str));
}
void
sayn (long num)
{
char string[sizeof (long) * 3 + 1];
char *p = string + sizeof (string) - 1;
*p = '\0';
if (num == 0)
*--p = '0';
else
while (num)
{
*--p = '0' + num % 10;
num = num / 10;
}
says (p);
}
void
message (char *const path[])
{
says ("/usr/sbin/glibc_post_upgrade: While trying to execute ");
says (path[0]);
}
int
check_elf (const char *name)
{
/* Play safe, if we can't open or read, assume it might be
ELF for the current arch. */
int ret = 1;
int fd = open (name, O_RDONLY);
if (fd >= 0)
{
Elf32_Ehdr ehdr;
if (read (fd, &ehdr, offsetof (Elf32_Ehdr, e_version))
== offsetof (Elf32_Ehdr, e_version))
{
ret = 0;
if (ehdr.e_ident[EI_CLASS]
== (sizeof (long) == 8 ? ELFCLASS64 : ELFCLASS32))
{
#if defined __i386__
ret = ehdr.e_machine == EM_386;
#elif defined __x86_64__
ret = ehdr.e_machine == EM_X86_64;
#elif defined __ia64__
ret = ehdr.e_machine == EM_IA_64;
#elif defined __powerpc64__
ret = ehdr.e_machine == EM_PPC64;
#elif defined __powerpc__
ret = ehdr.e_machine == EM_PPC;
#elif defined __s390__ || defined __s390x__
ret = ehdr.e_machine == EM_S390;
#elif defined __x86_64__
ret = ehdr.e_machine == EM_X86_64;
#elif defined __sparc__
if (sizeof (long) == 8)
ret = ehdr.e_machine == EM_SPARCV9;
else
ret = (ehdr.e_machine == EM_SPARC
|| ehdr.e_machine == EM_SPARC32PLUS);
#else
ret = 1;
#endif
}
}
close (fd);
}
return ret;
}
#ifdef SMALL_BINARY
int __libc_multiple_threads __attribute__((nocommon));
int __libc_enable_asynccancel (void) { return 0; }
void __libc_disable_asynccancel (int x) { }
void __libc_csu_init (void) { }
void __libc_csu_fini (void) { }
pid_t __fork (void) { return -1; }
char thr_buf[65536];
#ifndef __powerpc__
int
__libc_start_main (int (*main) (void), int argc, char **argv,
void (*init) (void), void (*fini) (void),
void (*rtld_fini) (void), void * stack_end)
#else
struct startup_info
{
void *sda_base;
int (*main) (int, char **, char **, void *);
int (*init) (int, char **, char **, void *);
void (*fini) (void);
};
int
__libc_start_main (int argc, char **ubp_av, char **ubp_ev,
void *auxvec, void (*rtld_fini) (void),
struct startup_info *stinfo,
char **stack_on_entry)
#endif
{
#if defined __ia64__ || defined __powerpc64__
register void *r13 __asm ("r13") = thr_buf + 32768;
__asm ("" : : "r" (r13));
#elif defined __sparc__
register void *g6 __asm ("g6") = thr_buf + 32768;
# ifdef __arch64__
__thread_self = thr_buf + 32768;
# else
register void *__thread_self __asm ("g7") = thr_buf + 32768;
# endif
__asm ("" : : "r" (g6), "r" (__thread_self));
#elif defined __s390__ && !defined __s390x__
__asm ("sar %%a0,%0" : : "d" (thr_buf + 32768));
#elif defined __s390x__
__asm ("sar %%a1,%0; srlg 0,%0,32; sar %%a0,0" : : "d" (thr_buf + 32768) : "0");
#elif defined __powerpc__ && !defined __powerpc64__
register void *r2 __asm ("r2") = thr_buf + 32768;
__asm ("" : : "r" (r2));
#endif
main();
return 0;
}
#endif

3
libm-x86-64.diff.bz2 Normal file
View File

@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:d8f65b9076eee071c181fb4a81621adda554b9e247ff97dbe487322b2a03fa3c
size 76941

3
manpages.tar.bz2 Normal file
View File

@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:e84aeb3808f86c7cd169ca795b31d1fdef21864c74b827ca750f3d478f0a95a5
size 12562

View File

@ -0,0 +1,10 @@
--- sysdeps/unix/sysv/linux/check_native.c
+++ sysdeps/unix/sysv/linux/check_native.c
@@ -23,6 +23,7 @@
#include <stddef.h>
#include <stdint.h>
#include <stdlib.h>
+#include <string.h>
#include <time.h>
#include <unistd.h>
#include <net/if.h>

3
noversion.tar.bz2 Normal file
View File

@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:469186780a61f0e0839e3938a674ebe7a46d649dd4de8ba52f1bc821aca42455
size 1520

123
nscd.init Normal file
View File

@ -0,0 +1,123 @@
#! /bin/sh
# Copyright (c) 1995-2004 SuSE Linux AG, Nuernberg, Germany.
# Copyright (c) 2005 SUSE LINUX Products GmbH, Nuernberg, Germany.
# All rights reserved.
#
# Author: Ruediger Oertel
# Thorsten Kukuk
#
# Please send feedback to http://www.suse.de/feedback
#
# init.d/nscd
#
# and symbolic its link
#
# /usr/sbin/rcnscd
#
# System startup script for the NIS daemon
#
### BEGIN INIT INFO
# Provides: nscd
# Required-Start: $remote_fs $time
# Should-Start: $syslog $named winbind
# Should-Stop: $null
# Required-Stop: $null
# Default-Start: 3 5
# Default-Stop: 0 1 2 6
# Short-Description: Start Name Service Cache Daemon
# Description: Start Name Service Cache Daemon
### END INIT INFO
# Source SuSE config
. /etc/rc.status
NSCD_BIN=/usr/sbin/nscd
test -x $NSCD_BIN || { echo "$NSCD_BIN not installed";
if [ "$1" = "stop" ]; then exit 0; else exit 5; fi; }
NSCD_CONFIG=/etc/nscd.conf
test -r $NSCD_CONFIG || { echo "$NSCD_CONFIG not existing";
if [ "$1" = "stop" ]; then exit 0; else exit 6; fi; }
NSCD_PID=/var/run/nscd/nscd.pid
# Shell functions sourced from /etc/rc.status:
# rc_check check and set local and overall rc status
# rc_status check and set local and overall rc status
# rc_status -v ditto but be verbose in local rc status
# rc_status -v -r ditto and clear the local rc status
# rc_failed set local and overall rc status to failed
# rc_reset clear local rc status (overall remains)
# rc_exit exit appropriate to overall rc status
# First reset status of this service
rc_reset
# Return values acc. to LSB for all commands but status:
# 0 - success
# 1 - misc error
# 2 - invalid or excess args
# 3 - unimplemented feature (e.g. reload)
# 4 - insufficient privilege
# 5 - program not installed
# 6 - program not configured
#
case "$1" in
start)
echo -n "Starting Name Service Cache Daemon"
/sbin/startproc -p $NSCD_PID $NSCD_BIN
rc_status -v
;;
stop)
echo -n "Shutting down Name Service Cache Daemon"
/sbin/killproc -p $NSCD_PID -TERM $NSCD_BIN
# if nscd does not run as root, it cannot remove this files:
rm -f /var/run/nscd/socket $NSCD_PID
rc_status -v
;;
try-restart|condrestart)
## RH has a similar command named condrestart.
if test "$1" = "condrestart"; then
echo "${attn} Use try-restart ${done}(LSB)${attn} rather than condrestart ${warn}(RH)${norm}"
fi
$0 status
if test $? = 0; then
$0 restart
else
rc_reset # Not running is not a failure.
fi
rc_status
;;
restart)
## Stop the service and regardless of whether it was
## running or not, start it again.
$0 stop
$0 start
rc_status
;;
force-reload)
echo "Reload Name Service Cache Daemon"
$0 try-restart
rc_status
;;
reload)
# nscd does not support SIGHUP, so fail.
echo -n "Reload Name Service Cache Daemon"
rc_failed 3
rc_status -v
;;
status)
echo -n "Checking for Name Service Cache Daemon: "
/sbin/checkproc -p $NSCD_PID $NSCD_BIN
rc_status -v
;;
probe)
test $NSCD_CONFIG -nt $NSCD_PID && echo restart
;;
*)
echo "Usage: $0 {start|stop|status|try-restart|restart|force-reload|reload|probe}"
exit 1
;;
esac
rc_exit

47
nsswitch.conf Normal file
View File

@ -0,0 +1,47 @@
#
# /etc/nsswitch.conf
#
# An example Name Service Switch config file. This file should be
# sorted with the most-used services at the beginning.
#
# The entry '[NOTFOUND=return]' means that the search for an
# entry should stop if the search in the previous entry turned
# up nothing. Note that if the search failed due to some other reason
# (like no NIS server responding) then the search continues with the
# next entry.
#
# Legal entries are:
#
# compat Use compatibility setup
# nisplus Use NIS+ (NIS version 3)
# nis Use NIS (NIS version 2), also called YP
# dns Use DNS (Domain Name Service)
# files Use the local files
# [NOTFOUND=return] Stop searching if not found so far
#
# For more information, please read the nsswitch.conf.5 manual page.
#
# passwd: files nis
# shadow: files nis
# group: files nis
passwd: compat
group: compat
hosts: files dns
networks: files dns
services: files
protocols: files
rpc: files
ethers: files
netmasks: files
netgroup: files nis
publickey: files
bootparams: files
automount: files nis
aliases: files

3
powerpc-cpu.tar.bz2 Normal file
View File

@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:c59f80e38c9f6ad339d72bbfbc454364659686567b7689d33483b9cb4a12bf2a
size 36248

419
ppc-atomic.diff Normal file
View File

@ -0,0 +1,419 @@
Index: sysdeps/powerpc/bits/atomic.h
===================================================================
RCS file: /cvs/glibc/libc/sysdeps/powerpc/bits/atomic.h,v
retrieving revision 1.17
diff -u -a -p -r1.17 atomic.h
--- sysdeps/powerpc/bits/atomic.h 26 Mar 2007 20:15:28 -0000 1.17
+++ sysdeps/powerpc/bits/atomic.h 31 May 2008 08:50:56 -0000
@@ -85,14 +85,14 @@ typedef uintmax_t uatomic_max_t;
__typeof (*(mem)) __tmp; \
__typeof (mem) __memp = (mem); \
__asm __volatile ( \
- "1: lwarx %0,0,%1" MUTEX_HINT_ACQ "\n" \
+ "1: lwarx %0,%y1" MUTEX_HINT_ACQ "\n" \
" cmpw %0,%2\n" \
" bne 2f\n" \
- " stwcx. %3,0,%1\n" \
+ " stwcx. %3,%y1\n" \
" bne- 1b\n" \
"2: " __ARCH_ACQ_INSTR \
- : "=&r" (__tmp) \
- : "b" (__memp), "r" (oldval), "r" (newval) \
+ : "=&r" (__tmp), "+Z" (*__memp) \
+ : "r" (oldval), "r" (newval) \
: "cr0", "memory"); \
__tmp; \
})
@@ -102,14 +102,14 @@ typedef uintmax_t uatomic_max_t;
__typeof (*(mem)) __tmp; \
__typeof (mem) __memp = (mem); \
__asm __volatile (__ARCH_REL_INSTR "\n" \
- "1: lwarx %0,0,%1" MUTEX_HINT_REL "\n" \
+ "1: lwarx %0,%y1" MUTEX_HINT_REL "\n" \
" cmpw %0,%2\n" \
" bne 2f\n" \
- " stwcx. %3,0,%1\n" \
+ " stwcx. %3,%y1\n" \
" bne- 1b\n" \
"2: " \
- : "=&r" (__tmp) \
- : "b" (__memp), "r" (oldval), "r" (newval) \
+ : "=&r" (__tmp), "+Z" (__memp) \
+ : "r" (oldval), "r" (newval) \
: "cr0", "memory"); \
__tmp; \
})
@@ -118,12 +118,12 @@ typedef uintmax_t uatomic_max_t;
({ \
__typeof (*mem) __val; \
__asm __volatile ( \
- "1: lwarx %0,0,%2" MUTEX_HINT_ACQ "\n" \
- " stwcx. %3,0,%2\n" \
+ "1: lwarx %0,%y1" MUTEX_HINT_ACQ "\n" \
+ " stwcx. %2,%y1\n" \
" bne- 1b\n" \
" " __ARCH_ACQ_INSTR \
- : "=&r" (__val), "=m" (*mem) \
- : "b" (mem), "r" (value), "m" (*mem) \
+ : "=&r" (__val), "+Z" (*mem) \
+ : "r" (value) \
: "cr0", "memory"); \
__val; \
})
@@ -132,11 +132,11 @@ typedef uintmax_t uatomic_max_t;
({ \
__typeof (*mem) __val; \
__asm __volatile (__ARCH_REL_INSTR "\n" \
- "1: lwarx %0,0,%2" MUTEX_HINT_REL "\n" \
- " stwcx. %3,0,%2\n" \
+ "1: lwarx %0,%y1" MUTEX_HINT_REL "\n" \
+ " stwcx. %2,%y1\n" \
" bne- 1b" \
- : "=&r" (__val), "=m" (*mem) \
- : "b" (mem), "r" (value), "m" (*mem) \
+ : "=&r" (__val), "+Z" (*mem) \
+ : "r" (value) \
: "cr0", "memory"); \
__val; \
})
@@ -144,12 +144,12 @@ typedef uintmax_t uatomic_max_t;
#define __arch_atomic_exchange_and_add_32(mem, value) \
({ \
__typeof (*mem) __val, __tmp; \
- __asm __volatile ("1: lwarx %0,0,%3\n" \
- " add %1,%0,%4\n" \
- " stwcx. %1,0,%3\n" \
+ __asm __volatile ("1: lwarx %0,%y2\n" \
+ " add %1,%0,%3\n" \
+ " stwcx. %1,%y2\n" \
" bne- 1b" \
- : "=&b" (__val), "=&r" (__tmp), "=m" (*mem) \
- : "b" (mem), "r" (value), "m" (*mem) \
+ : "=&b" (__val), "=&r" (__tmp), "+Z" (*mem) \
+ : "r" (value) \
: "cr0", "memory"); \
__val; \
})
@@ -157,12 +157,12 @@ typedef uintmax_t uatomic_max_t;
#define __arch_atomic_increment_val_32(mem) \
({ \
__typeof (*(mem)) __val; \
- __asm __volatile ("1: lwarx %0,0,%2\n" \
+ __asm __volatile ("1: lwarx %0,%y1\n" \
" addi %0,%0,1\n" \
- " stwcx. %0,0,%2\n" \
+ " stwcx. %0,%y1\n" \
" bne- 1b" \
- : "=&b" (__val), "=m" (*mem) \
- : "b" (mem), "m" (*mem) \
+ : "=&b" (__val), "+Z" (*mem) \
+ : \
: "cr0", "memory"); \
__val; \
})
@@ -170,27 +170,27 @@ typedef uintmax_t uatomic_max_t;
#define __arch_atomic_decrement_val_32(mem) \
({ \
__typeof (*(mem)) __val; \
- __asm __volatile ("1: lwarx %0,0,%2\n" \
+ __asm __volatile ("1: lwarx %0,%y1\n" \
" subi %0,%0,1\n" \
- " stwcx. %0,0,%2\n" \
+ " stwcx. %0,%y1\n" \
" bne- 1b" \
- : "=&b" (__val), "=m" (*mem) \
- : "b" (mem), "m" (*mem) \
+ : "=&b" (__val), "+Z" (*mem) \
+ : \
: "cr0", "memory"); \
__val; \
})
#define __arch_atomic_decrement_if_positive_32(mem) \
({ int __val, __tmp; \
- __asm __volatile ("1: lwarx %0,0,%3\n" \
+ __asm __volatile ("1: lwarx %0,%y2\n" \
" cmpwi 0,%0,0\n" \
" addi %1,%0,-1\n" \
" ble 2f\n" \
- " stwcx. %1,0,%3\n" \
+ " stwcx. %1,%y2\n" \
" bne- 1b\n" \
"2: " __ARCH_ACQ_INSTR \
- : "=&b" (__val), "=&r" (__tmp), "=m" (*mem) \
- : "b" (mem), "m" (*mem) \
+ : "=&b" (__val), "=&r" (__tmp), "+Z" (*mem) \
+ : \
: "cr0", "memory"); \
__val; \
})
Index: sysdeps/powerpc/powerpc32/bits/atomic.h
===================================================================
RCS file: /cvs/glibc/libc/sysdeps/powerpc/powerpc32/bits/atomic.h,v
retrieving revision 1.6
diff -u -a -p -r1.6 atomic.h
--- sysdeps/powerpc/powerpc32/bits/atomic.h 26 Mar 2007 20:15:45 -0000 1.6
+++ sysdeps/powerpc/powerpc32/bits/atomic.h 31 May 2008 08:50:56 -0000
@@ -44,14 +44,14 @@
({ \
unsigned int __tmp; \
__asm __volatile ( \
- "1: lwarx %0,0,%1" MUTEX_HINT_ACQ "\n" \
+ "1: lwarx %0,%y1" MUTEX_HINT_ACQ "\n" \
" subf. %0,%2,%0\n" \
" bne 2f\n" \
- " stwcx. %3,0,%1\n" \
+ " stwcx. %3,%y1\n" \
" bne- 1b\n" \
"2: " __ARCH_ACQ_INSTR \
- : "=&r" (__tmp) \
- : "b" (mem), "r" (oldval), "r" (newval) \
+ : "=&r" (__tmp), "+Z" (*(mem)) \
+ : "r" (oldval), "r" (newval) \
: "cr0", "memory"); \
__tmp != 0; \
})
@@ -60,14 +60,14 @@
({ \
unsigned int __tmp; \
__asm __volatile (__ARCH_REL_INSTR "\n" \
- "1: lwarx %0,0,%1" MUTEX_HINT_REL "\n" \
+ "1: lwarx %0,%y1" MUTEX_HINT_REL "\n" \
" subf. %0,%2,%0\n" \
" bne 2f\n" \
- " stwcx. %3,0,%1\n" \
+ " stwcx. %3,%y1\n" \
" bne- 1b\n" \
"2: " \
- : "=&r" (__tmp) \
- : "b" (mem), "r" (oldval), "r" (newval) \
+ : "=&r" (__tmp), "+Z" (*(mem)) \
+ : "r" (oldval), "r" (newval) \
: "cr0", "memory"); \
__tmp != 0; \
})
Index: sysdeps/powerpc/powerpc64/bits/atomic.h
===================================================================
RCS file: /cvs/glibc/libc/sysdeps/powerpc/powerpc64/bits/atomic.h,v
retrieving revision 1.8
diff -u -a -p -r1.8 atomic.h
--- sysdeps/powerpc/powerpc64/bits/atomic.h 26 Mar 2007 20:16:03 -0000 1.8
+++ sysdeps/powerpc/powerpc64/bits/atomic.h 31 May 2008 08:50:56 -0000
@@ -44,14 +44,14 @@
({ \
unsigned int __tmp, __tmp2; \
__asm __volatile (" clrldi %1,%1,32\n" \
- "1: lwarx %0,0,%2" MUTEX_HINT_ACQ "\n" \
+ "1: lwarx %0,%y2" MUTEX_HINT_ACQ "\n" \
" subf. %0,%1,%0\n" \
" bne 2f\n" \
- " stwcx. %4,0,%2\n" \
+ " stwcx. %4,%y2\n" \
" bne- 1b\n" \
"2: " __ARCH_ACQ_INSTR \
- : "=&r" (__tmp), "=r" (__tmp2) \
- : "b" (mem), "1" (oldval), "r" (newval) \
+ : "=&r" (__tmp), "=r" (__tmp2), "+Z" (*(mem)) \
+ : "1" (oldval), "r" (newval) \
: "cr0", "memory"); \
__tmp != 0; \
})
@@ -61,14 +61,14 @@
unsigned int __tmp, __tmp2; \
__asm __volatile (__ARCH_REL_INSTR "\n" \
" clrldi %1,%1,32\n" \
- "1: lwarx %0,0,%2" MUTEX_HINT_REL "\n" \
+ "1: lwarx %0,%y2" MUTEX_HINT_REL "\n" \
" subf. %0,%1,%0\n" \
" bne 2f\n" \
- " stwcx. %4,0,%2\n" \
+ " stwcx. %4,%y2\n" \
" bne- 1b\n" \
"2: " \
- : "=&r" (__tmp), "=r" (__tmp2) \
- : "b" (mem), "1" (oldval), "r" (newval) \
+ : "=&r" (__tmp), "=r" (__tmp2), "+Z" (*(mem)) \
+ : "1" (oldval), "r" (newval) \
: "cr0", "memory"); \
__tmp != 0; \
})
@@ -82,14 +82,14 @@
({ \
unsigned long __tmp; \
__asm __volatile ( \
- "1: ldarx %0,0,%1" MUTEX_HINT_ACQ "\n" \
+ "1: ldarx %0,%y1" MUTEX_HINT_ACQ "\n" \
" subf. %0,%2,%0\n" \
" bne 2f\n" \
- " stdcx. %3,0,%1\n" \
+ " stdcx. %3,%y1\n" \
" bne- 1b\n" \
"2: " __ARCH_ACQ_INSTR \
- : "=&r" (__tmp) \
- : "b" (mem), "r" (oldval), "r" (newval) \
+ : "=&r" (__tmp), "+Z" (*(mem)) \
+ : "r" (oldval), "r" (newval) \
: "cr0", "memory"); \
__tmp != 0; \
})
@@ -98,14 +98,14 @@
({ \
unsigned long __tmp; \
__asm __volatile (__ARCH_REL_INSTR "\n" \
- "1: ldarx %0,0,%2" MUTEX_HINT_REL "\n" \
+ "1: ldarx %0,%y1" MUTEX_HINT_REL "\n" \
" subf. %0,%2,%0\n" \
" bne 2f\n" \
- " stdcx. %3,0,%1\n" \
+ " stdcx. %3,%y1\n" \
" bne- 1b\n" \
"2: " \
- : "=&r" (__tmp) \
- : "b" (mem), "r" (oldval), "r" (newval) \
+ : "=&r" (__tmp), "+Z" (*(mem)) \
+ : "r" (oldval), "r" (newval) \
: "cr0", "memory"); \
__tmp != 0; \
})
@@ -115,14 +115,14 @@
__typeof (*(mem)) __tmp; \
__typeof (mem) __memp = (mem); \
__asm __volatile ( \
- "1: ldarx %0,0,%1" MUTEX_HINT_ACQ "\n" \
+ "1: ldarx %0,%y1" MUTEX_HINT_ACQ "\n" \
" cmpd %0,%2\n" \
" bne 2f\n" \
- " stdcx. %3,0,%1\n" \
+ " stdcx. %3,%y1\n" \
" bne- 1b\n" \
"2: " __ARCH_ACQ_INSTR \
- : "=&r" (__tmp) \
- : "b" (__memp), "r" (oldval), "r" (newval) \
+ : "=&r" (__tmp), "+Z" (*__memp) \
+ : "r" (oldval), "r" (newval) \
: "cr0", "memory"); \
__tmp; \
})
@@ -132,14 +132,14 @@
__typeof (*(mem)) __tmp; \
__typeof (mem) __memp = (mem); \
__asm __volatile (__ARCH_REL_INSTR "\n" \
- "1: ldarx %0,0,%1" MUTEX_HINT_REL "\n" \
+ "1: ldarx %0,%y1" MUTEX_HINT_REL "\n" \
" cmpd %0,%2\n" \
" bne 2f\n" \
- " stdcx. %3,0,%1\n" \
+ " stdcx. %3,%y1\n" \
" bne- 1b\n" \
"2: " \
- : "=&r" (__tmp) \
- : "b" (__memp), "r" (oldval), "r" (newval) \
+ : "=&r" (__tmp), "+Z" (*__memp) \
+ : "r" (oldval), "r" (newval) \
: "cr0", "memory"); \
__tmp; \
})
@@ -148,12 +148,12 @@
({ \
__typeof (*mem) __val; \
__asm __volatile (__ARCH_REL_INSTR "\n" \
- "1: ldarx %0,0,%2" MUTEX_HINT_ACQ "\n" \
- " stdcx. %3,0,%2\n" \
+ "1: ldarx %0,%y1" MUTEX_HINT_ACQ "\n" \
+ " stdcx. %2,%y1\n" \
" bne- 1b\n" \
" " __ARCH_ACQ_INSTR \
- : "=&r" (__val), "=m" (*mem) \
- : "b" (mem), "r" (value), "m" (*mem) \
+ : "=&r" (__val), "+Z" (*(mem)) \
+ : "r" (value) \
: "cr0", "memory"); \
__val; \
})
@@ -162,11 +162,11 @@
({ \
__typeof (*mem) __val; \
__asm __volatile (__ARCH_REL_INSTR "\n" \
- "1: ldarx %0,0,%2" MUTEX_HINT_REL "\n" \
- " stdcx. %3,0,%2\n" \
+ "1: ldarx %0,%y1" MUTEX_HINT_REL "\n" \
+ " stdcx. %2,%y1\n" \
" bne- 1b" \
- : "=&r" (__val), "=m" (*mem) \
- : "b" (mem), "r" (value), "m" (*mem) \
+ : "=&r" (__val), "+Z" (*(mem)) \
+ : "r" (value) \
: "cr0", "memory"); \
__val; \
})
@@ -174,12 +174,12 @@
#define __arch_atomic_exchange_and_add_64(mem, value) \
({ \
__typeof (*mem) __val, __tmp; \
- __asm __volatile ("1: ldarx %0,0,%3\n" \
- " add %1,%0,%4\n" \
- " stdcx. %1,0,%3\n" \
+ __asm __volatile ("1: ldarx %0,%y2\n" \
+ " add %1,%0,%3\n" \
+ " stdcx. %1,%y2\n" \
" bne- 1b" \
- : "=&b" (__val), "=&r" (__tmp), "=m" (*mem) \
- : "b" (mem), "r" (value), "m" (*mem) \
+ : "=&b" (__val), "=&r" (__tmp), "+Z" (*(mem)) \
+ : "r" (value) \
: "cr0", "memory"); \
__val; \
})
@@ -187,12 +187,12 @@
#define __arch_atomic_increment_val_64(mem) \
({ \
__typeof (*(mem)) __val; \
- __asm __volatile ("1: ldarx %0,0,%2\n" \
+ __asm __volatile ("1: ldarx %0,%y1\n" \
" addi %0,%0,1\n" \
- " stdcx. %0,0,%2\n" \
+ " stdcx. %0,%y1\n" \
" bne- 1b" \
- : "=&b" (__val), "=m" (*mem) \
- : "b" (mem), "m" (*mem) \
+ : "=&b" (__val), "+Z" (*(mem)) \
+ : \
: "cr0", "memory"); \
__val; \
})
@@ -200,27 +200,27 @@
#define __arch_atomic_decrement_val_64(mem) \
({ \
__typeof (*(mem)) __val; \
- __asm __volatile ("1: ldarx %0,0,%2\n" \
+ __asm __volatile ("1: ldarx %0,%y1\n" \
" subi %0,%0,1\n" \
- " stdcx. %0,0,%2\n" \
+ " stdcx. %0,%y1\n" \
" bne- 1b" \
- : "=&b" (__val), "=m" (*mem) \
- : "b" (mem), "m" (*mem) \
+ : "=&b" (__val), "+Z" (*(mem)) \
+ : \
: "cr0", "memory"); \
__val; \
})
#define __arch_atomic_decrement_if_positive_64(mem) \
({ int __val, __tmp; \
- __asm __volatile ("1: ldarx %0,0,%3\n" \
+ __asm __volatile ("1: ldarx %0,%y2\n" \
" cmpdi 0,%0,0\n" \
" addi %1,%0,-1\n" \
" ble 2f\n" \
- " stdcx. %1,0,%3\n" \
+ " stdcx. %1,%y2\n" \
" bne- 1b\n" \
"2: " __ARCH_ACQ_INSTR \
- : "=&b" (__val), "=&r" (__tmp), "=m" (*mem) \
- : "b" (mem), "m" (*mem) \
+ : "=&b" (__val), "=&r" (__tmp), "+Z" (*(mem)) \
+ : \
: "cr0", "memory"); \
__val; \
})

0
ready Normal file
View File

31
resolv.dynamic.diff Normal file
View File

@ -0,0 +1,31 @@
--- resolv/res_libc.c.orig 2005-04-07 14:26:57.181526898 +0200
+++ resolv/res_libc.c 2005-04-07 18:38:56.718340309 +0200
@@ -22,6 +22,7 @@
#include <arpa/nameser.h>
#include <resolv.h>
#include <bits/libc-lock.h>
+#include <sys/stat.h>
/* The following bit is copied from res_data.c (where it is #ifdef'ed
@@ -101,6 +102,20 @@
__res_maybe_init (res_state resp, int preinit)
{
if (resp->options & RES_INIT) {
+ static time_t last_mtime, last_check;
+ time_t now;
+ struct stat statbuf;
+
+ time (&now);
+ if (now != last_check) {
+ last_check = now;
+ if (stat (_PATH_RESCONF, &statbuf) == 0 && last_mtime != statbuf.st_mtime) {
+ last_mtime = statbuf.st_mtime;
+ atomicinclock (lock);
+ atomicinc (__res_initstamp);
+ atomicincunlock (lock);
+ }
+ }
if (__res_initstamp != resp->_u._ext.initstamp) {
if (resp->nscount > 0) {
__res_nclose (resp);