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