forked from pool/glibc
This commit is contained in:
commit
a51dfad3e2
23
.gitattributes
vendored
Normal file
23
.gitattributes
vendored
Normal 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
1
.gitignore
vendored
Normal file
@ -0,0 +1 @@
|
|||||||
|
.osc
|
17
baselibs.conf
Normal file
17
baselibs.conf
Normal 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
12
bindresvport.blacklist
Normal 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
25
check-build.sh
Normal 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
1330
crypt_blowfish-1.0.diff
Normal file
File diff suppressed because it is too large
Load Diff
106
crypt_blowfish-glibc-2.3.diff
Normal file
106
crypt_blowfish-glibc-2.3.diff
Normal 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
196
ctype_b.c
Normal 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);
|
33
getaddrinfo-ipv6-sanity.diff
Normal file
33
getaddrinfo-ipv6-sanity.diff
Normal 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
169
glibc-2.10-dns-fixpack.diff
Normal 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) {
|
26
glibc-2.10-dns-no-gethostbyname4.diff
Normal file
26
glibc-2.10-dns-no-gethostbyname4.diff
Normal 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;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
26
glibc-2.10-locale-tuesday.diff
Normal file
26
glibc-2.10-locale-tuesday.diff
Normal 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
84
glibc-2.10-nis-hosts.diff
Normal 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;
|
15
glibc-2.10-nscd-gc-dataofs.diff
Normal file
15
glibc-2.10-nscd-gc-dataofs.diff
Normal 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;
|
||||||
|
}
|
||||||
|
|
86
glibc-2.10-nscd-meminflight.diff
Normal file
86
glibc-2.10-nscd-meminflight.diff
Normal 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);
|
16
glibc-2.10-nscd-nostack.diff
Normal file
16
glibc-2.10-nscd-nostack.diff
Normal 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. */
|
88
glibc-2.10-nscd-prunerace.diff
Normal file
88
glibc-2.10-nscd-prunerace.diff
Normal 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;
|
29
glibc-2.10-ppc32-setcontext-fp.diff
Normal file
29
glibc-2.10-ppc32-setcontext-fp.diff
Normal 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
69
glibc-2.10-unsetenv.diff
Normal 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
76
glibc-2.2-sunrpc.diff
Normal 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
37
glibc-2.3-SuSE.diff
Normal 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
11
glibc-2.3-regcomp.diff
Normal 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 */
|
68
glibc-2.3.1.localedef.diff
Normal file
68
glibc-2.3.1.localedef.diff
Normal 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);
|
||||||
|
|
53
glibc-2.3.2-revert_tcsetattr.diff
Normal file
53
glibc-2.3.2-revert_tcsetattr.diff
Normal 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)
|
43
glibc-2.3.2.no_archive.diff
Normal file
43
glibc-2.3.2.no_archive.diff
Normal 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;
|
38
glibc-2.3.3-amd64-s_ceil.diff
Normal file
38
glibc-2.3.3-amd64-s_ceil.diff
Normal 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
|
2744
glibc-2.3.3-amd64-string.diff
Normal file
2744
glibc-2.3.3-amd64-string.diff
Normal file
File diff suppressed because it is too large
Load Diff
45
glibc-2.3.3-execstack.diff
Normal file
45
glibc-2.3.3-execstack.diff
Normal 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
|
21
glibc-2.3.3-nscd-db-path.diff
Normal file
21
glibc-2.3.3-nscd-db-path.diff
Normal 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"
|
3
glibc-2.3.4-gb18030-big5hkscs.diff.bz2
Normal file
3
glibc-2.3.4-gb18030-big5hkscs.diff.bz2
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
version https://git-lfs.github.com/spec/v1
|
||||||
|
oid sha256:901fe715360fd55d2d83ceab113bacca58a2b9cba3673d80b184760976236ffd
|
||||||
|
size 1036487
|
111
glibc-2.3.5-nscd-zeronegtimeout.diff
Normal file
111
glibc-2.3.5-nscd-zeronegtimeout.diff
Normal 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, ¬found, 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, ¬found, 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, ¬found, 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, ¬found, 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;
|
150
glibc-2.3.90-bindresvport.blacklist.diff
Normal file
150
glibc-2.3.90-bindresvport.blacklist.diff
Normal 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
58
glibc-2.3.90-fnmatch.diff
Normal 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. */
|
||||||
|
|
62
glibc-2.3.90-langpackdir.diff
Normal file
62
glibc-2.3.90-langpackdir.diff
Normal 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;
|
||||||
|
|
76
glibc-2.3.90-ld.so-madvise.diff
Normal file
76
glibc-2.3.90-ld.so-madvise.diff
Normal 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;
|
||||||
|
|
56
glibc-2.3.90-noversion.diff
Normal file
56
glibc-2.3.90-noversion.diff
Normal 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. */
|
3
glibc-2.3.locales.diff.bz2
Normal file
3
glibc-2.3.locales.diff.bz2
Normal 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
29
glibc-2.4-china.diff
Normal 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"
|
||||||
|
%
|
456
glibc-2.4.90-mdns-resolver.diff
Normal file
456
glibc-2.4.90-mdns-resolver.diff
Normal 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
94
glibc-2.4.90-no_NO.diff
Normal 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
141
glibc-2.4.90-nscd.diff
Normal 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)
|
93
glibc-2.4.90-revert-only-euro.diff
Normal file
93
glibc-2.4.90-revert-only-euro.diff
Normal 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 */
|
18
glibc-2.5-ppc-llrintl.diff
Normal file
18
glibc-2.5-ppc-llrintl.diff
Normal 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
50
glibc-2.6-configure.diff
Normal 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
50
glibc-2.8-clone.diff
Normal 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
14
glibc-2.8-dlosinfo.diff
Normal 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
14
glibc-2.8-getconf.diff
Normal 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
|
824
glibc-2.8-revert-nscleanup.diff
Normal file
824
glibc-2.8-revert-nscleanup.diff
Normal 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 }
|
||||||
|
};
|
||||||
|
|
||||||
|
|
3
glibc-2.9-2008111711.tar.bz2
Normal file
3
glibc-2.9-2008111711.tar.bz2
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
version https://git-lfs.github.com/spec/v1
|
||||||
|
oid sha256:adabcdd26bd71d7cb15bfc2fbb3efc29ad9d166a2a3f25bed097e14489264de8
|
||||||
|
size 15308055
|
129
glibc-compiled-binaries.diff
Normal file
129
glibc-compiled-binaries.diff
Normal 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
26
glibc-cpusetsize.diff
Normal 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
49
glibc-fix-nscd.diff
Normal 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
|
14
glibc-getgroups-fortify.diff
Normal file
14
glibc-getgroups-fortify.diff
Normal 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
11
glibc-ldscript.diff
Normal 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
159
glibc-mtfsf.diff
Normal 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:
|
39
glibc-no-unwind-tables.diff
Normal file
39
glibc-no-unwind-tables.diff
Normal 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
|
18
glibc-nptl-2.4-nofixsyscallnr.diff
Normal file
18
glibc-nptl-2.4-nofixsyscallnr.diff
Normal 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 */
|
3
glibc-nptl-2.9-2008111711.tar.bz2
Normal file
3
glibc-nptl-2.9-2008111711.tar.bz2
Normal 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
22
glibc-nss-deepbind.diff
Normal 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
22
glibc-selinux.diff
Normal 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
127
glibc-suse-note.diff
Normal 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
27
glibc-version.diff
Normal 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
4822
glibc.changes
Normal file
File diff suppressed because it is too large
Load Diff
1
glibc.rpmlintrc
Normal file
1
glibc.rpmlintrc
Normal file
@ -0,0 +1 @@
|
|||||||
|
addFilter(".*glibc-profile.* devel-file-in-non-devel-package.*/usr/lib.*/lib.*_p.a")
|
3400
glibc.spec
Normal file
3400
glibc.spec
Normal file
File diff suppressed because it is too large
Load Diff
333
glibc_post_upgrade.c
Normal file
333
glibc_post_upgrade.c
Normal 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
3
libm-x86-64.diff.bz2
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
version https://git-lfs.github.com/spec/v1
|
||||||
|
oid sha256:d8f65b9076eee071c181fb4a81621adda554b9e247ff97dbe487322b2a03fa3c
|
||||||
|
size 76941
|
3
manpages.tar.bz2
Normal file
3
manpages.tar.bz2
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
version https://git-lfs.github.com/spec/v1
|
||||||
|
oid sha256:e84aeb3808f86c7cd169ca795b31d1fdef21864c74b827ca750f3d478f0a95a5
|
||||||
|
size 12562
|
10
missing-include-build-fix.diff
Normal file
10
missing-include-build-fix.diff
Normal 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
3
noversion.tar.bz2
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
version https://git-lfs.github.com/spec/v1
|
||||||
|
oid sha256:469186780a61f0e0839e3938a674ebe7a46d649dd4de8ba52f1bc821aca42455
|
||||||
|
size 1520
|
123
nscd.init
Normal file
123
nscd.init
Normal 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
47
nsswitch.conf
Normal 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
3
powerpc-cpu.tar.bz2
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
version https://git-lfs.github.com/spec/v1
|
||||||
|
oid sha256:c59f80e38c9f6ad339d72bbfbc454364659686567b7689d33483b9cb4a12bf2a
|
||||||
|
size 36248
|
419
ppc-atomic.diff
Normal file
419
ppc-atomic.diff
Normal 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; \
|
||||||
|
})
|
31
resolv.dynamic.diff
Normal file
31
resolv.dynamic.diff
Normal 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);
|
Loading…
Reference in New Issue
Block a user