This commit is contained in:
parent
f788657d95
commit
41d84c34c7
14
_constraints
14
_constraints
@ -1,14 +0,0 @@
|
||||
<?xml version="1.0"?>
|
||||
<constraints>
|
||||
<overwrite>
|
||||
<conditions>
|
||||
<package>glibc-testsuite</package>
|
||||
</conditions>
|
||||
<hardware>
|
||||
<memory>
|
||||
<size unit="M">1500</size>
|
||||
</memory>
|
||||
</hardware>
|
||||
<sandbox exclude="true">xen</sandbox>
|
||||
</overwrite>
|
||||
</constraints>
|
@ -1,80 +0,0 @@
|
||||
Don't close or flush stdio streams on abort
|
||||
|
||||
[BZ #15436]
|
||||
* stdlib/abort.c (abort): Don't call fflush and __fcloseall.
|
||||
|
||||
Index: glibc-2.19/stdlib/abort.c
|
||||
===================================================================
|
||||
--- glibc-2.19.orig/stdlib/abort.c
|
||||
+++ glibc-2.19/stdlib/abort.c
|
||||
@@ -30,9 +30,6 @@
|
||||
# define ABORT_INSTRUCTION
|
||||
#endif
|
||||
|
||||
-#include <libio/libioP.h>
|
||||
-#define fflush(s) _IO_flush_all_lockp (0)
|
||||
-
|
||||
/* Exported variable to locate abort message in core files etc. */
|
||||
struct abort_msg_s *__abort_msg __attribute__ ((nocommon));
|
||||
libc_hidden_def (__abort_msg)
|
||||
@@ -66,16 +63,8 @@ abort (void)
|
||||
__sigprocmask (SIG_UNBLOCK, &sigs, 0);
|
||||
}
|
||||
|
||||
- /* Flush all streams. We cannot close them now because the user
|
||||
- might have registered a handler for SIGABRT. */
|
||||
- if (stage == 1)
|
||||
- {
|
||||
- ++stage;
|
||||
- fflush (NULL);
|
||||
- }
|
||||
-
|
||||
/* Send signal which possibly calls a user handler. */
|
||||
- if (stage == 2)
|
||||
+ if (stage == 1)
|
||||
{
|
||||
/* This stage is special: we must allow repeated calls of
|
||||
`abort' when a user defined handler for SIGABRT is installed.
|
||||
@@ -93,7 +82,7 @@ abort (void)
|
||||
}
|
||||
|
||||
/* There was a handler installed. Now remove it. */
|
||||
- if (stage == 3)
|
||||
+ if (stage == 2)
|
||||
{
|
||||
++stage;
|
||||
memset (&act, '\0', sizeof (struct sigaction));
|
||||
@@ -103,30 +92,22 @@ abort (void)
|
||||
__sigaction (SIGABRT, &act, NULL);
|
||||
}
|
||||
|
||||
- /* Now close the streams which also flushes the output the user
|
||||
- defined handler might has produced. */
|
||||
- if (stage == 4)
|
||||
- {
|
||||
- ++stage;
|
||||
- __fcloseall ();
|
||||
- }
|
||||
-
|
||||
/* Try again. */
|
||||
- if (stage == 5)
|
||||
+ if (stage == 3)
|
||||
{
|
||||
++stage;
|
||||
raise (SIGABRT);
|
||||
}
|
||||
|
||||
/* Now try to abort using the system specific command. */
|
||||
- if (stage == 6)
|
||||
+ if (stage == 4)
|
||||
{
|
||||
++stage;
|
||||
ABORT_INSTRUCTION;
|
||||
}
|
||||
|
||||
/* If we can't signal ourselves and the abort instruction failed, exit. */
|
||||
- if (stage == 7)
|
||||
+ if (stage == 5)
|
||||
{
|
||||
++stage;
|
||||
_exit (127);
|
@ -1,29 +0,0 @@
|
||||
Index: glibc-2.25/localedata/SUPPORTED
|
||||
===================================================================
|
||||
--- glibc-2.25.orig/localedata/SUPPORTED
|
||||
+++ glibc-2.25/localedata/SUPPORTED
|
||||
@@ -129,6 +129,7 @@ en_CA.UTF-8/UTF-8 \
|
||||
en_CA/ISO-8859-1 \
|
||||
en_DK.UTF-8/UTF-8 \
|
||||
en_DK/ISO-8859-1 \
|
||||
+en_GB.ISO-8859-15/ISO-8859-15 \
|
||||
en_GB.UTF-8/UTF-8 \
|
||||
en_GB/ISO-8859-1 \
|
||||
en_HK.UTF-8/UTF-8 \
|
||||
@@ -145,6 +146,7 @@ en_PH.UTF-8/UTF-8 \
|
||||
en_PH/ISO-8859-1 \
|
||||
en_SG.UTF-8/UTF-8 \
|
||||
en_SG/ISO-8859-1 \
|
||||
+en_US.ISO-8859-15/ISO-8859-15 \
|
||||
en_US.UTF-8/UTF-8 \
|
||||
en_US/ISO-8859-1 \
|
||||
en_ZA.UTF-8/UTF-8 \
|
||||
@@ -269,6 +271,8 @@ it_IT/ISO-8859-1 \
|
||||
it_IT@euro/ISO-8859-15 \
|
||||
iu_CA/UTF-8 \
|
||||
ja_JP.EUC-JP/EUC-JP \
|
||||
+ja_JP.SHIFT_JISX0213/SHIFT_JISX0213 \
|
||||
+ja_JP.SJIS/SHIFT_JIS \
|
||||
ja_JP.UTF-8/UTF-8 \
|
||||
ka_GE.UTF-8/UTF-8 \
|
||||
ka_GE/GEORGIAN-PS \
|
@ -6,19 +6,12 @@ glibc
|
||||
targettype ia32 +/etc/ld.so.conf
|
||||
targettype ia32 "/lib/ld-linux.so.2 -> <prefix>/lib/ld-linux.so.2"
|
||||
prereq -glibc-x86
|
||||
+/usr/lib/getconf/[^g]
|
||||
+/usr/sbin/iconvconfig -> /usr/sbin/iconvconfig-<extension>
|
||||
glibc-locale
|
||||
arch i586 block!
|
||||
+/usr/lib(64)?/gconv/gconv-modules
|
||||
targettype x86 -/usr/lib(64)?/gconv/gconv-modules
|
||||
glibc-devel
|
||||
requires "glibc-<targettype> = %version"
|
||||
arch i586 block!
|
||||
+^/usr/include/gnu/lib-names-.*\.h$
|
||||
+^/usr/include/gnu/stubs-.*\.h$
|
||||
glibc-devel-static
|
||||
arch i586 block!
|
||||
glibc-profile
|
||||
arch i586 block!
|
||||
glibc-utils
|
||||
|
@ -4,10 +4,8 @@
|
||||
# called by RPC services. This mostly solves the problem, that a
|
||||
# RPC service uses a well known port of another service.
|
||||
#
|
||||
623 # ASF, used by IPMI on some cards
|
||||
631 # cups
|
||||
636 # ldaps
|
||||
664 # Secure ASF, used by IPMI on some cards
|
||||
774 # rpasswd
|
||||
921 # lwresd
|
||||
993 # imaps
|
||||
|
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
@ -1,9 +0,0 @@
|
||||
--- x86.S
|
||||
+++ x86.S
|
||||
@@ -199,5 +199,5 @@
|
||||
#endif
|
||||
|
||||
#if defined(__ELF__) && defined(__linux__)
|
||||
-.section .note.GNU-stack,"",@progbits
|
||||
+.section .note.GNU-stack,"",%progbits
|
||||
#endif
|
@ -1,174 +0,0 @@
|
||||
From 1c581a8364ab18a6938f3153d7bea793d06a4652 Mon Sep 17 00:00:00 2001
|
||||
From: Ludwig Nussel <ludwig.nussel@suse.de>
|
||||
Date: Thu, 25 Aug 2011 14:00:38 +0200
|
||||
Subject: [PATCH crypt_blowfish] support for sha256 and sha512
|
||||
|
||||
---
|
||||
crypt.3 | 14 +++++++++++++
|
||||
crypt_gensalt.c | 58 +++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
||||
wrapper.c | 23 +++++++++++++++++++++
|
||||
3 files changed, 95 insertions(+), 0 deletions(-)
|
||||
|
||||
Index: crypt_blowfish-1.3/crypt.3
|
||||
===================================================================
|
||||
--- crypt_blowfish-1.3.orig/crypt.3
|
||||
+++ crypt_blowfish-1.3/crypt.3
|
||||
@@ -399,6 +399,20 @@ too low for the currently available hard
|
||||
.hash "$1$" "\e$1\e$[^$]{1,8}\e$[./0-9A-Za-z]{22}" unlimited 8 "" 128 "6 to 48" 1000
|
||||
.PP
|
||||
.ti -2
|
||||
+.B SHA256 based
|
||||
+.br
|
||||
+This is Ulrich Drepper's SHA256-based password hashing method originally
|
||||
+developed for Linux.
|
||||
+.hash "$5$" "\e$5\e$(rounds=[0-9]{1,9}\e$)?([./0-9A-Za-z]{1,16})?\e$[./0-9A-Za-z]{43}" unlimited 8 "" 256 "0 to 96" "1000 to 999999999 (default 5000)"
|
||||
+.PP
|
||||
+.ti -2
|
||||
+.B SHA512 based
|
||||
+.br
|
||||
+This is Ulrich Drepper's SHA512-based password hashing method originally
|
||||
+developed for Linux.
|
||||
+.hash "$6$" "\e$6\e$(rounds=[0-9]{1,9}\e$)?([./0-9A-Za-z]{1,16})?\e$[./0-9A-Za-z]{86}" unlimited 8 "" 512 "0 to 96" "1000 to 999999999 (default 5000)"
|
||||
+.PP
|
||||
+.ti -2
|
||||
.BR "OpenBSD-style Blowfish-based" " (" bcrypt )
|
||||
.br
|
||||
.B bcrypt
|
||||
Index: crypt_blowfish-1.3/crypt_gensalt.c
|
||||
===================================================================
|
||||
--- crypt_blowfish-1.3.orig/crypt_gensalt.c
|
||||
+++ crypt_blowfish-1.3/crypt_gensalt.c
|
||||
@@ -19,6 +19,7 @@
|
||||
*/
|
||||
|
||||
#include <string.h>
|
||||
+#include <stdio.h>
|
||||
|
||||
#include <errno.h>
|
||||
#ifndef __set_errno
|
||||
@@ -122,3 +123,60 @@ char *_crypt_gensalt_md5_rn(const char *
|
||||
|
||||
return output;
|
||||
}
|
||||
+
|
||||
+#define SHA2_SALT_LEN_MAX 16
|
||||
+#define SHA2_ROUNDS_MIN 1000
|
||||
+#define SHA2_ROUNDS_MAX 999999999
|
||||
+char *_crypt_gensalt_sha2_rn (const char *prefix, unsigned long count,
|
||||
+ const char *input, int size, char *output, int output_size)
|
||||
+
|
||||
+{
|
||||
+ char *o = output;
|
||||
+ const char *i = input;
|
||||
+ unsigned needed = 3 + MIN(size/3*4, SHA2_SALT_LEN_MAX) + 1;
|
||||
+
|
||||
+ if (size < 3 || output_size < needed)
|
||||
+ goto error;
|
||||
+
|
||||
+ size = MIN(size, SHA2_SALT_LEN_MAX/4*3);
|
||||
+
|
||||
+ o[0] = prefix[0];
|
||||
+ o[1] = prefix[1];
|
||||
+ o[2] = prefix[2];
|
||||
+ o += 3;
|
||||
+
|
||||
+ if (count) {
|
||||
+ count = MAX(SHA2_ROUNDS_MIN, MIN(count, SHA2_ROUNDS_MAX));
|
||||
+ int n = snprintf (o, output_size-3, "rounds=%ld$", count);
|
||||
+ if (n < 0 || n >= output_size-3)
|
||||
+ goto error;
|
||||
+ needed += n;
|
||||
+ o += n;
|
||||
+ }
|
||||
+
|
||||
+ if (output_size < needed)
|
||||
+ goto error;
|
||||
+
|
||||
+ while (size >= 3) {
|
||||
+ unsigned long value =
|
||||
+ (unsigned long)(unsigned char)i[0] |
|
||||
+ ((unsigned long)(unsigned char)i[1] << 8) |
|
||||
+ ((unsigned long)(unsigned char)i[2] << 16);
|
||||
+ o[0] = _crypt_itoa64[value & 0x3f];
|
||||
+ o[1] = _crypt_itoa64[(value >> 6) & 0x3f];
|
||||
+ o[2] = _crypt_itoa64[(value >> 12) & 0x3f];
|
||||
+ o[3] = _crypt_itoa64[(value >> 18) & 0x3f];
|
||||
+ size -= 3;
|
||||
+ i += 3;
|
||||
+ o += 3;
|
||||
+ }
|
||||
+ o[0] = '\0';
|
||||
+
|
||||
+ return output;
|
||||
+
|
||||
+error:
|
||||
+ if (output_size > 0)
|
||||
+ output[0] = '\0';
|
||||
+ errno = ENOMEM;
|
||||
+ return NULL;
|
||||
+}
|
||||
Index: crypt_blowfish-1.3/crypt_gensalt.h
|
||||
===================================================================
|
||||
--- crypt_blowfish-1.3.orig/crypt_gensalt.h
|
||||
+++ crypt_blowfish-1.3/crypt_gensalt.h
|
||||
@@ -26,5 +26,7 @@ extern char *_crypt_gensalt_extended_rn(
|
||||
const char *input, int size, char *output, int output_size);
|
||||
extern char *_crypt_gensalt_md5_rn(const char *prefix, unsigned long count,
|
||||
const char *input, int size, char *output, int output_size);
|
||||
+extern char *_crypt_gensalt_sha2_rn(const char *prefix, unsigned long count,
|
||||
+ const char *input, int size, char *output, int output_size);
|
||||
|
||||
#endif
|
||||
Index: crypt_blowfish-1.3/wrapper.c
|
||||
===================================================================
|
||||
--- crypt_blowfish-1.3.orig/wrapper.c
|
||||
+++ crypt_blowfish-1.3/wrapper.c
|
||||
@@ -50,6 +50,10 @@
|
||||
#include "crypt.h"
|
||||
extern char *__md5_crypt_r(const char *key, const char *salt,
|
||||
char *buffer, int buflen);
|
||||
+extern char *__sha256_crypt_r (const char *key, const char *salt,
|
||||
+ char *buffer, int buflen);
|
||||
+extern char *__sha512_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,
|
||||
@@ -112,6 +116,10 @@ static char *_crypt_retval_magic(char *r
|
||||
char *__crypt_rn(__const char *key, __const char *setting,
|
||||
void *data, int size)
|
||||
{
|
||||
+ if (setting[0] == '$' && setting[1] == '6')
|
||||
+ return __sha512_crypt_r(key, setting, (char *)data, size);
|
||||
+ if (setting[0] == '$' && setting[1] == '5')
|
||||
+ return __sha256_crypt_r(key, setting, (char *)data, size);
|
||||
if (setting[0] == '$' && setting[1] == '2')
|
||||
return _crypt_blowfish_rn(key, setting, (char *)data, size);
|
||||
if (setting[0] == '$' && setting[1] == '1')
|
||||
@@ -129,6 +137,16 @@ char *__crypt_rn(__const char *key, __co
|
||||
char *__crypt_ra(__const char *key, __const char *setting,
|
||||
void **data, int *size)
|
||||
{
|
||||
+ if (setting[0] == '$' && setting[1] == '6') {
|
||||
+ if (_crypt_data_alloc(data, size, CRYPT_OUTPUT_SIZE))
|
||||
+ return NULL;
|
||||
+ return __sha512_crypt_r(key, setting, (char *)*data, *size);
|
||||
+ }
|
||||
+ if (setting[0] == '$' && setting[1] == '5') {
|
||||
+ if (_crypt_data_alloc(data, size, CRYPT_OUTPUT_SIZE))
|
||||
+ return NULL;
|
||||
+ return __sha256_crypt_r(key, setting, (char *)*data, *size);
|
||||
+ }
|
||||
if (setting[0] == '$' && setting[1] == '2') {
|
||||
if (_crypt_data_alloc(data, size, CRYPT_OUTPUT_SIZE))
|
||||
return NULL;
|
||||
@@ -210,6 +228,9 @@ char *__crypt_gensalt_rn(const char *pre
|
||||
return NULL;
|
||||
}
|
||||
|
||||
+ if (!strncmp(prefix, "$5$", 3) || !strncmp(prefix, "$6$", 3))
|
||||
+ use = _crypt_gensalt_sha2_rn;
|
||||
+ else
|
||||
if (!strncmp(prefix, "$2a$", 4) || !strncmp(prefix, "$2b$", 4) ||
|
||||
!strncmp(prefix, "$2y$", 4))
|
||||
use = _crypt_gensalt_blowfish_rn;
|
@ -1,3 +0,0 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:83fa01fca6996fe8d882b7f8e9ba0305a5664936100b01481ea3c6a8ce8d72fd
|
||||
size 30310
|
@ -1,46 +0,0 @@
|
||||
Index: crypt_blowfish-1.2/crypt_blowfish.c
|
||||
===================================================================
|
||||
--- crypt_blowfish-1.2.orig/crypt_blowfish.c
|
||||
+++ crypt_blowfish-1.2/crypt_blowfish.c
|
||||
@@ -81,7 +81,7 @@ typedef struct {
|
||||
* Magic IV for 64 Blowfish encryptions that we do at the end.
|
||||
* The string is "OrpheanBeholderScryDoubt" on big-endian.
|
||||
*/
|
||||
-static BF_word BF_magic_w[6] = {
|
||||
+static const BF_word BF_magic_w[6] = {
|
||||
0x4F727068, 0x65616E42, 0x65686F6C,
|
||||
0x64657253, 0x63727944, 0x6F756274
|
||||
};
|
||||
@@ -89,7 +89,7 @@ static BF_word BF_magic_w[6] = {
|
||||
/*
|
||||
* P-box and S-box tables initialized with digits of Pi.
|
||||
*/
|
||||
-static BF_ctx BF_init_state = {
|
||||
+static const BF_ctx BF_init_state = {
|
||||
{
|
||||
{
|
||||
0xd1310ba6, 0x98dfb5ac, 0x2ffd72db, 0xd01adfb7,
|
||||
@@ -361,10 +361,10 @@ static BF_ctx BF_init_state = {
|
||||
}
|
||||
};
|
||||
|
||||
-static unsigned char BF_itoa64[64 + 1] =
|
||||
+static const unsigned char BF_itoa64[64 + 1] =
|
||||
"./ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";
|
||||
|
||||
-static unsigned char BF_atoi64[0x60] = {
|
||||
+static const unsigned char BF_atoi64[0x60] = {
|
||||
64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 0, 1,
|
||||
54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 64, 64, 64, 64, 64,
|
||||
64, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16,
|
||||
@@ -440,8 +440,8 @@ static void BF_encode(char *dst, const B
|
||||
|
||||
static void BF_swap(BF_word *x, int count)
|
||||
{
|
||||
- static int endianness_check = 1;
|
||||
- char *is_little_endian = (char *)&endianness_check;
|
||||
+ static const int endianness_check = 1;
|
||||
+ const char *is_little_endian = (const char *)&endianness_check;
|
||||
BF_word tmp;
|
||||
|
||||
if (*is_little_endian)
|
@ -1,373 +0,0 @@
|
||||
Index: crypt_blowfish-1.3/crypt_blowfish.c
|
||||
===================================================================
|
||||
--- crypt_blowfish-1.3.orig/crypt_blowfish.c
|
||||
+++ crypt_blowfish-1.3/crypt_blowfish.c
|
||||
@@ -877,31 +877,3 @@ char *_crypt_blowfish_rn(const char *key
|
||||
__set_errno(EINVAL); /* pretend we don't support this hash type */
|
||||
return NULL;
|
||||
}
|
||||
-
|
||||
-char *_crypt_gensalt_blowfish_rn(const char *prefix, unsigned long count,
|
||||
- const char *input, int size, char *output, int output_size)
|
||||
-{
|
||||
- if (size < 16 || output_size < 7 + 22 + 1 ||
|
||||
- (count && (count < 4 || count > 31)) ||
|
||||
- prefix[0] != '$' || prefix[1] != '2' ||
|
||||
- (prefix[2] != 'a' && prefix[2] != 'b' && prefix[2] != 'y')) {
|
||||
- if (output_size > 0) output[0] = '\0';
|
||||
- __set_errno((output_size < 7 + 22 + 1) ? ERANGE : EINVAL);
|
||||
- return NULL;
|
||||
- }
|
||||
-
|
||||
- if (!count) count = 5;
|
||||
-
|
||||
- output[0] = '$';
|
||||
- output[1] = '2';
|
||||
- output[2] = prefix[2];
|
||||
- output[3] = '$';
|
||||
- output[4] = '0' + count / 10;
|
||||
- output[5] = '0' + count % 10;
|
||||
- output[6] = '$';
|
||||
-
|
||||
- BF_encode(&output[7], (const BF_word *)input, 16);
|
||||
- output[7 + 22] = '\0';
|
||||
-
|
||||
- return output;
|
||||
-}
|
||||
Index: crypt_blowfish-1.3/crypt_blowfish.h
|
||||
===================================================================
|
||||
--- crypt_blowfish-1.3.orig/crypt_blowfish.h
|
||||
+++ crypt_blowfish-1.3/crypt_blowfish.h
|
||||
@@ -20,8 +20,5 @@
|
||||
extern int _crypt_output_magic(const char *setting, char *output, int size);
|
||||
extern char *_crypt_blowfish_rn(const char *key, const char *setting,
|
||||
char *output, int size);
|
||||
-extern char *_crypt_gensalt_blowfish_rn(const char *prefix,
|
||||
- unsigned long count,
|
||||
- const char *input, int size, char *output, int output_size);
|
||||
|
||||
#endif
|
||||
Index: crypt_blowfish-1.3/crypt_gensalt.c
|
||||
===================================================================
|
||||
--- crypt_blowfish-1.3.orig/crypt_gensalt.c
|
||||
+++ crypt_blowfish-1.3/crypt_gensalt.c
|
||||
@@ -20,6 +20,7 @@
|
||||
|
||||
#include <string.h>
|
||||
#include <stdio.h>
|
||||
+#include <sys/param.h>
|
||||
|
||||
#include <errno.h>
|
||||
#ifndef __set_errno
|
||||
@@ -180,3 +181,69 @@ error:
|
||||
errno = ENOMEM;
|
||||
return NULL;
|
||||
}
|
||||
+
|
||||
+
|
||||
+typedef unsigned int BF_word;
|
||||
+
|
||||
+static const unsigned char BF_itoa64[64 + 1] =
|
||||
+ "./ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";
|
||||
+
|
||||
+static void BF_encode(char *dst, const BF_word *src, int size)
|
||||
+{
|
||||
+ const unsigned char *sptr = (const unsigned char *)src;
|
||||
+ const unsigned char *end = sptr + size;
|
||||
+ unsigned char *dptr = (unsigned char *)dst;
|
||||
+ unsigned int c1, c2;
|
||||
+
|
||||
+ do {
|
||||
+ c1 = *sptr++;
|
||||
+ *dptr++ = BF_itoa64[c1 >> 2];
|
||||
+ c1 = (c1 & 0x03) << 4;
|
||||
+ if (sptr >= end) {
|
||||
+ *dptr++ = BF_itoa64[c1];
|
||||
+ break;
|
||||
+ }
|
||||
+
|
||||
+ c2 = *sptr++;
|
||||
+ c1 |= c2 >> 4;
|
||||
+ *dptr++ = BF_itoa64[c1];
|
||||
+ c1 = (c2 & 0x0f) << 2;
|
||||
+ if (sptr >= end) {
|
||||
+ *dptr++ = BF_itoa64[c1];
|
||||
+ break;
|
||||
+ }
|
||||
+
|
||||
+ c2 = *sptr++;
|
||||
+ c1 |= c2 >> 6;
|
||||
+ *dptr++ = BF_itoa64[c1];
|
||||
+ *dptr++ = BF_itoa64[c2 & 0x3f];
|
||||
+ } while (sptr < end);
|
||||
+}
|
||||
+
|
||||
+char *_crypt_gensalt_blowfish_rn(const char *prefix, unsigned long count,
|
||||
+ const char *input, int size, char *output, int output_size)
|
||||
+{
|
||||
+ if (size < 16 || output_size < 7 + 22 + 1 ||
|
||||
+ (count && (count < 4 || count > 31)) ||
|
||||
+ prefix[0] != '$' || prefix[1] != '2' ||
|
||||
+ (prefix[2] != 'a' && prefix[2] != 'b' && prefix[2] != 'y')) {
|
||||
+ if (output_size > 0) output[0] = '\0';
|
||||
+ __set_errno((output_size < 7 + 22 + 1) ? ERANGE : EINVAL);
|
||||
+ return NULL;
|
||||
+ }
|
||||
+
|
||||
+ if (!count) count = 5;
|
||||
+
|
||||
+ output[0] = '$';
|
||||
+ output[1] = '2';
|
||||
+ output[2] = prefix[2];
|
||||
+ output[3] = '$';
|
||||
+ output[4] = '0' + count / 10;
|
||||
+ output[5] = '0' + count % 10;
|
||||
+ output[6] = '$';
|
||||
+
|
||||
+ BF_encode(&output[7], (const BF_word *)input, 16);
|
||||
+ output[7 + 22] = '\0';
|
||||
+
|
||||
+ return output;
|
||||
+}
|
||||
Index: crypt_blowfish-1.3/crypt_gensalt.h
|
||||
===================================================================
|
||||
--- crypt_blowfish-1.3.orig/crypt_gensalt.h
|
||||
+++ crypt_blowfish-1.3/crypt_gensalt.h
|
||||
@@ -28,5 +28,8 @@ extern char *_crypt_gensalt_md5_rn(const
|
||||
const char *input, int size, char *output, int output_size);
|
||||
extern char *_crypt_gensalt_sha2_rn(const char *prefix, unsigned long count,
|
||||
const char *input, int size, char *output, int output_size);
|
||||
+extern char *_crypt_gensalt_blowfish_rn(const char *prefix,
|
||||
+ unsigned long count,
|
||||
+ const char *input, int size, char *output, int output_size);
|
||||
|
||||
#endif
|
||||
Index: crypt_blowfish-1.3/wrapper-gensalt.c
|
||||
===================================================================
|
||||
--- /dev/null
|
||||
+++ crypt_blowfish-1.3/wrapper-gensalt.c
|
||||
@@ -0,0 +1,114 @@
|
||||
+/*
|
||||
+ * Written by Solar Designer <solar at openwall.com> in 2000-2011.
|
||||
+ * No copyright is claimed, and the software is hereby placed in the public
|
||||
+ * domain. In case this attempt to disclaim copyright and place the software
|
||||
+ * in the public domain is deemed null and void, then the software is
|
||||
+ * Copyright (c) 2000-2011 Solar Designer and it is hereby released to the
|
||||
+ * general public under the following terms:
|
||||
+ *
|
||||
+ * Redistribution and use in source and binary forms, with or without
|
||||
+ * modification, are permitted.
|
||||
+ *
|
||||
+ * There's ABSOLUTELY NO WARRANTY, express or implied.
|
||||
+ *
|
||||
+ * See crypt_blowfish.c for more information.
|
||||
+ */
|
||||
+
|
||||
+#include <stdlib.h>
|
||||
+#include <string.h>
|
||||
+
|
||||
+#include <errno.h>
|
||||
+#ifndef __set_errno
|
||||
+#define __set_errno(val) errno = (val)
|
||||
+#endif
|
||||
+
|
||||
+#define CRYPT_GENSALT_OUTPUT_SIZE (7 + 22 + 1)
|
||||
+
|
||||
+#if defined(__GLIBC__) && defined(_LIBC)
|
||||
+#define __SKIP_GNU
|
||||
+#endif
|
||||
+#include "ow-crypt.h"
|
||||
+
|
||||
+#include "crypt_gensalt.h"
|
||||
+
|
||||
+#if !(defined(__GLIBC__) && defined(_LIBC))
|
||||
+#define __crypt_gensalt_rn crypt_gensalt_rn
|
||||
+#define __crypt_gensalt_ra crypt_gensalt_ra
|
||||
+#define __crypt_gensalt crypt_gensalt
|
||||
+#endif
|
||||
+
|
||||
+char *__crypt_gensalt_rn(const char *prefix, unsigned long count,
|
||||
+ const char *input, int size, char *output, int output_size)
|
||||
+{
|
||||
+ char *(*use)(const char *_prefix, unsigned long _count,
|
||||
+ const char *_input, int _size,
|
||||
+ char *_output, int _output_size);
|
||||
+
|
||||
+ /* This may be supported on some platforms in the future */
|
||||
+ if (!input) {
|
||||
+ __set_errno(EINVAL);
|
||||
+ return NULL;
|
||||
+ }
|
||||
+
|
||||
+ if (!strncmp(prefix, "$5$", 3) || !strncmp(prefix, "$6$", 3))
|
||||
+ use = _crypt_gensalt_sha2_rn;
|
||||
+ else
|
||||
+ if (!strncmp(prefix, "$2a$", 4) || !strncmp(prefix, "$2b$", 4) ||
|
||||
+ !strncmp(prefix, "$2y$", 4))
|
||||
+ use = _crypt_gensalt_blowfish_rn;
|
||||
+ else
|
||||
+ if (!strncmp(prefix, "$1$", 3))
|
||||
+ use = _crypt_gensalt_md5_rn;
|
||||
+ else
|
||||
+ if (prefix[0] == '_')
|
||||
+ use = _crypt_gensalt_extended_rn;
|
||||
+ else
|
||||
+ if (!prefix[0] ||
|
||||
+ (prefix[0] && prefix[1] &&
|
||||
+ memchr(_crypt_itoa64, prefix[0], 64) &&
|
||||
+ memchr(_crypt_itoa64, prefix[1], 64)))
|
||||
+ use = _crypt_gensalt_traditional_rn;
|
||||
+ else {
|
||||
+ __set_errno(EINVAL);
|
||||
+ return NULL;
|
||||
+ }
|
||||
+
|
||||
+ return use(prefix, count, input, size, output, output_size);
|
||||
+}
|
||||
+
|
||||
+char *__crypt_gensalt_ra(const char *prefix, unsigned long count,
|
||||
+ const char *input, int size)
|
||||
+{
|
||||
+ char output[CRYPT_GENSALT_OUTPUT_SIZE];
|
||||
+ char *retval;
|
||||
+
|
||||
+ retval = __crypt_gensalt_rn(prefix, count,
|
||||
+ input, size, output, sizeof(output));
|
||||
+
|
||||
+ if (retval) {
|
||||
+ retval = strdup(retval);
|
||||
+#ifndef __GLIBC__
|
||||
+ /* strdup(3) on glibc sets errno, so we don't need to bother */
|
||||
+ if (!retval)
|
||||
+ __set_errno(ENOMEM);
|
||||
+#endif
|
||||
+ }
|
||||
+
|
||||
+ return retval;
|
||||
+}
|
||||
+
|
||||
+char *__crypt_gensalt(const char *prefix, unsigned long count,
|
||||
+ const char *input, int size)
|
||||
+{
|
||||
+ static char output[CRYPT_GENSALT_OUTPUT_SIZE];
|
||||
+
|
||||
+ return __crypt_gensalt_rn(prefix, count,
|
||||
+ input, size, output, sizeof(output));
|
||||
+}
|
||||
+
|
||||
+#if defined(__GLIBC__) && defined(_LIBC)
|
||||
+weak_alias(__crypt_gensalt_rn, crypt_gensalt_rn)
|
||||
+weak_alias(__crypt_gensalt_ra, crypt_gensalt_ra)
|
||||
+weak_alias(__crypt_gensalt, crypt_gensalt)
|
||||
+#endif
|
||||
+
|
||||
Index: crypt_blowfish-1.3/wrapper.c
|
||||
===================================================================
|
||||
--- crypt_blowfish-1.3.orig/wrapper.c
|
||||
+++ crypt_blowfish-1.3/wrapper.c
|
||||
@@ -35,7 +35,6 @@
|
||||
#endif
|
||||
|
||||
#define CRYPT_OUTPUT_SIZE (7 + 22 + 31 + 1)
|
||||
-#define CRYPT_GENSALT_OUTPUT_SIZE (7 + 22 + 1)
|
||||
|
||||
#if defined(__GLIBC__) && defined(_LIBC)
|
||||
#define __SKIP_GNU
|
||||
@@ -43,7 +42,6 @@
|
||||
#include "ow-crypt.h"
|
||||
|
||||
#include "crypt_blowfish.h"
|
||||
-#include "crypt_gensalt.h"
|
||||
|
||||
#if defined(__GLIBC__) && defined(_LIBC)
|
||||
/* crypt.h from glibc-crypt-2.1 will define struct crypt_data for us */
|
||||
@@ -209,89 +207,11 @@ char *crypt(const char *key, const char
|
||||
crypt_rn(key, setting, output, sizeof(output)),
|
||||
setting, output, sizeof(output));
|
||||
}
|
||||
-
|
||||
-#define __crypt_gensalt_rn crypt_gensalt_rn
|
||||
-#define __crypt_gensalt_ra crypt_gensalt_ra
|
||||
-#define __crypt_gensalt crypt_gensalt
|
||||
-#endif
|
||||
-
|
||||
-char *__crypt_gensalt_rn(const char *prefix, unsigned long count,
|
||||
- const char *input, int size, char *output, int output_size)
|
||||
-{
|
||||
- char *(*use)(const char *_prefix, unsigned long _count,
|
||||
- const char *_input, int _size,
|
||||
- char *_output, int _output_size);
|
||||
-
|
||||
- /* This may be supported on some platforms in the future */
|
||||
- if (!input) {
|
||||
- __set_errno(EINVAL);
|
||||
- return NULL;
|
||||
- }
|
||||
-
|
||||
- if (!strncmp(prefix, "$5$", 3) || !strncmp(prefix, "$6$", 3))
|
||||
- use = _crypt_gensalt_sha2_rn;
|
||||
- else
|
||||
- if (!strncmp(prefix, "$2a$", 4) || !strncmp(prefix, "$2b$", 4) ||
|
||||
- !strncmp(prefix, "$2y$", 4))
|
||||
- use = _crypt_gensalt_blowfish_rn;
|
||||
- else
|
||||
- if (!strncmp(prefix, "$1$", 3))
|
||||
- use = _crypt_gensalt_md5_rn;
|
||||
- else
|
||||
- if (prefix[0] == '_')
|
||||
- use = _crypt_gensalt_extended_rn;
|
||||
- else
|
||||
- if (!prefix[0] ||
|
||||
- (prefix[0] && prefix[1] &&
|
||||
- memchr(_crypt_itoa64, prefix[0], 64) &&
|
||||
- memchr(_crypt_itoa64, prefix[1], 64)))
|
||||
- use = _crypt_gensalt_traditional_rn;
|
||||
- else {
|
||||
- __set_errno(EINVAL);
|
||||
- return NULL;
|
||||
- }
|
||||
-
|
||||
- return use(prefix, count, input, size, output, output_size);
|
||||
-}
|
||||
-
|
||||
-char *__crypt_gensalt_ra(const char *prefix, unsigned long count,
|
||||
- const char *input, int size)
|
||||
-{
|
||||
- char output[CRYPT_GENSALT_OUTPUT_SIZE];
|
||||
- char *retval;
|
||||
-
|
||||
- retval = __crypt_gensalt_rn(prefix, count,
|
||||
- input, size, output, sizeof(output));
|
||||
-
|
||||
- if (retval) {
|
||||
- retval = strdup(retval);
|
||||
-#ifndef __GLIBC__
|
||||
- /* strdup(3) on glibc sets errno, so we don't need to bother */
|
||||
- if (!retval)
|
||||
- __set_errno(ENOMEM);
|
||||
#endif
|
||||
- }
|
||||
-
|
||||
- return retval;
|
||||
-}
|
||||
-
|
||||
-char *__crypt_gensalt(const char *prefix, unsigned long count,
|
||||
- const char *input, int size)
|
||||
-{
|
||||
- static char output[CRYPT_GENSALT_OUTPUT_SIZE];
|
||||
-
|
||||
- return __crypt_gensalt_rn(prefix, count,
|
||||
- input, size, output, sizeof(output));
|
||||
-}
|
||||
|
||||
#if defined(__GLIBC__) && defined(_LIBC)
|
||||
-weak_alias(__crypt_rn, crypt_rn)
|
||||
-weak_alias(__crypt_ra, crypt_ra)
|
||||
weak_alias(__crypt_r, crypt_r)
|
||||
weak_alias(__crypt, crypt)
|
||||
-weak_alias(__crypt_gensalt_rn, crypt_gensalt_rn)
|
||||
-weak_alias(__crypt_gensalt_ra, crypt_gensalt_ra)
|
||||
-weak_alias(__crypt_gensalt, crypt_gensalt)
|
||||
weak_alias(crypt, fcrypt)
|
||||
#endif
|
||||
|
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);
|
@ -1,26 +0,0 @@
|
||||
2017-08-06 H.J. Lu <hongjiu.lu@intel.com>
|
||||
|
||||
[BZ #21871]
|
||||
* sysdeps/x86/cpu-features.c (init_cpu_features): Set
|
||||
bit_arch_Use_dl_runtime_resolve_opt only with AVX512F.
|
||||
|
||||
Index: glibc-2.26/sysdeps/x86/cpu-features.c
|
||||
===================================================================
|
||||
--- glibc-2.26.orig/sysdeps/x86/cpu-features.c
|
||||
+++ glibc-2.26/sysdeps/x86/cpu-features.c
|
||||
@@ -244,10 +244,13 @@ init_cpu_features (struct cpu_features *
|
||||
|= bit_arch_Prefer_No_AVX512;
|
||||
|
||||
/* To avoid SSE transition penalty, use _dl_runtime_resolve_slow.
|
||||
- If XGETBV suports ECX == 1, use _dl_runtime_resolve_opt. */
|
||||
+ If XGETBV suports ECX == 1, use _dl_runtime_resolve_opt.
|
||||
+ Use _dl_runtime_resolve_opt only with AVX512F since it is
|
||||
+ slower than _dl_runtime_resolve_slow with AVX. */
|
||||
cpu_features->feature[index_arch_Use_dl_runtime_resolve_slow]
|
||||
|= bit_arch_Use_dl_runtime_resolve_slow;
|
||||
- if (cpu_features->max_cpuid >= 0xd)
|
||||
+ if (CPU_FEATURES_ARCH_P (cpu_features, AVX512F_Usable)
|
||||
+ && cpu_features->max_cpuid >= 0xd)
|
||||
{
|
||||
unsigned int eax;
|
||||
|
@ -1,31 +0,0 @@
|
||||
2017-08-31 H.J. Lu <hongjiu.lu@intel.com>
|
||||
|
||||
[BZ #22051]
|
||||
* Makerules (build-module-helper-objlist): Filter out
|
||||
$(elf-objpfx)sofini.os.
|
||||
(build-shlib-objlist): Append $(elf-objpfx)sofini.os if it is
|
||||
needed.
|
||||
|
||||
Index: glibc-2.26/Makerules
|
||||
===================================================================
|
||||
--- glibc-2.26.orig/Makerules
|
||||
+++ glibc-2.26/Makerules
|
||||
@@ -686,14 +686,17 @@ $(build-module-helper) -o $@ $(shlib-lds
|
||||
$(call after-link,$@)
|
||||
endef
|
||||
|
||||
+# sofini.os must be placed last since it terminates .eh_frame section.
|
||||
build-module-helper-objlist = \
|
||||
$(patsubst %_pic.a,$(whole-archive) %_pic.a $(no-whole-archive),\
|
||||
$(filter-out %.lds $(map-file) $(+preinit) $(+postinit) \
|
||||
+ $(elf-objpfx)sofini.os \
|
||||
$(link-libc-deps),$^))
|
||||
|
||||
build-module-objlist = $(build-module-helper-objlist) $(LDLIBS-$(@F:%.so=%).so)
|
||||
build-shlib-objlist = $(build-module-helper-objlist) \
|
||||
- $(LDLIBS-$(@F:lib%.so=%).so)
|
||||
+ $(LDLIBS-$(@F:lib%.so=%).so) \
|
||||
+ $(filter $(elf-objpfx)sofini.os,$^)
|
||||
|
||||
# Don't try to use -lc when making libc.so itself.
|
||||
# Also omits crti.o and crtn.o, which we do not want
|
@ -1,236 +0,0 @@
|
||||
Always do locking when accessing streams
|
||||
|
||||
[BZ #15142]
|
||||
* libio/genops.c (_IO_list_all_stamp): Delete. All uses removed.
|
||||
(_IO_flush_all_all_lockp): Delete.
|
||||
(_IO_flush_all): Replace with body of _IO_flush_all_all_lockp.
|
||||
Always do locking.
|
||||
(_IO_unbuffer_all): Always do locking.
|
||||
(_IO_cleanup): Call _IO_flush_all instead of _IO_flush_all_lockp.
|
||||
* libio/libioP.h (_IO_flush_all_all_lockp): Remove declaration.
|
||||
|
||||
diff --git a/libio/genops.c b/libio/genops.c
|
||||
index e0ce8cc..9def1d4 100644
|
||||
--- a/libio/genops.c
|
||||
+++ b/libio/genops.c
|
||||
@@ -38,10 +38,6 @@
|
||||
static _IO_lock_t list_all_lock = _IO_lock_initializer;
|
||||
#endif
|
||||
|
||||
-/* Used to signal modifications to the list of FILE decriptors. */
|
||||
-static int _IO_list_all_stamp;
|
||||
-
|
||||
-
|
||||
static _IO_FILE *run_fp;
|
||||
|
||||
#ifdef _IO_MTSAFE_IO
|
||||
@@ -70,16 +66,12 @@ _IO_un_link (fp)
|
||||
if (_IO_list_all == NULL)
|
||||
;
|
||||
else if (fp == _IO_list_all)
|
||||
- {
|
||||
- _IO_list_all = (struct _IO_FILE_plus *) _IO_list_all->file._chain;
|
||||
- ++_IO_list_all_stamp;
|
||||
- }
|
||||
+ _IO_list_all = (struct _IO_FILE_plus *) _IO_list_all->file._chain;
|
||||
else
|
||||
for (f = &_IO_list_all->file._chain; *f; f = &(*f)->_chain)
|
||||
if (*f == (_IO_FILE *) fp)
|
||||
{
|
||||
*f = fp->file._chain;
|
||||
- ++_IO_list_all_stamp;
|
||||
break;
|
||||
}
|
||||
fp->file._flags &= ~_IO_LINKED;
|
||||
@@ -108,7 +100,6 @@ _IO_link_in (fp)
|
||||
#endif
|
||||
fp->file._chain = (_IO_FILE *) _IO_list_all;
|
||||
_IO_list_all = fp;
|
||||
- ++_IO_list_all_stamp;
|
||||
#ifdef _IO_MTSAFE_IO
|
||||
_IO_funlockfile ((_IO_FILE *) fp);
|
||||
run_fp = NULL;
|
||||
@@ -818,25 +809,20 @@ _IO_get_column (fp)
|
||||
|
||||
|
||||
int
|
||||
-_IO_flush_all_lockp (int do_lock)
|
||||
+_IO_flush_all (void)
|
||||
{
|
||||
int result = 0;
|
||||
struct _IO_FILE *fp;
|
||||
- int last_stamp;
|
||||
|
||||
#ifdef _IO_MTSAFE_IO
|
||||
- __libc_cleanup_region_start (do_lock, flush_cleanup, NULL);
|
||||
- if (do_lock)
|
||||
- _IO_lock_lock (list_all_lock);
|
||||
+ _IO_cleanup_region_start_noarg (flush_cleanup);
|
||||
+ _IO_lock_lock (list_all_lock);
|
||||
#endif
|
||||
|
||||
- last_stamp = _IO_list_all_stamp;
|
||||
- fp = (_IO_FILE *) _IO_list_all;
|
||||
- while (fp != NULL)
|
||||
+ for (fp = (_IO_FILE *) _IO_list_all; fp != NULL; fp = fp->_chain)
|
||||
{
|
||||
run_fp = fp;
|
||||
- if (do_lock)
|
||||
- _IO_flockfile (fp);
|
||||
+ _IO_flockfile (fp);
|
||||
|
||||
if (((fp->_mode <= 0 && fp->_IO_write_ptr > fp->_IO_write_base)
|
||||
#if defined _LIBC || defined _GLIBCPP_USE_WCHAR_T
|
||||
@@ -848,52 +834,30 @@ _IO_flush_all_lockp (int do_lock)
|
||||
&& _IO_OVERFLOW (fp, EOF) == EOF)
|
||||
result = EOF;
|
||||
|
||||
- if (do_lock)
|
||||
- _IO_funlockfile (fp);
|
||||
+ _IO_funlockfile (fp);
|
||||
run_fp = NULL;
|
||||
-
|
||||
- if (last_stamp != _IO_list_all_stamp)
|
||||
- {
|
||||
- /* Something was added to the list. Start all over again. */
|
||||
- fp = (_IO_FILE *) _IO_list_all;
|
||||
- last_stamp = _IO_list_all_stamp;
|
||||
- }
|
||||
- else
|
||||
- fp = fp->_chain;
|
||||
}
|
||||
|
||||
#ifdef _IO_MTSAFE_IO
|
||||
- if (do_lock)
|
||||
- _IO_lock_unlock (list_all_lock);
|
||||
- __libc_cleanup_region_end (0);
|
||||
+ _IO_lock_unlock (list_all_lock);
|
||||
+ _IO_cleanup_region_end (0);
|
||||
#endif
|
||||
|
||||
return result;
|
||||
}
|
||||
-
|
||||
-
|
||||
-int
|
||||
-_IO_flush_all (void)
|
||||
-{
|
||||
- /* We want locking. */
|
||||
- return _IO_flush_all_lockp (1);
|
||||
-}
|
||||
libc_hidden_def (_IO_flush_all)
|
||||
|
||||
void
|
||||
_IO_flush_all_linebuffered (void)
|
||||
{
|
||||
struct _IO_FILE *fp;
|
||||
- int last_stamp;
|
||||
|
||||
#ifdef _IO_MTSAFE_IO
|
||||
_IO_cleanup_region_start_noarg (flush_cleanup);
|
||||
_IO_lock_lock (list_all_lock);
|
||||
#endif
|
||||
|
||||
- last_stamp = _IO_list_all_stamp;
|
||||
- fp = (_IO_FILE *) _IO_list_all;
|
||||
- while (fp != NULL)
|
||||
+ for (fp = (_IO_FILE *) _IO_list_all; fp != NULL; fp = fp->_chain)
|
||||
{
|
||||
run_fp = fp;
|
||||
_IO_flockfile (fp);
|
||||
@@ -903,15 +867,6 @@ _IO_flush_all_linebuffered (void)
|
||||
|
||||
_IO_funlockfile (fp);
|
||||
run_fp = NULL;
|
||||
-
|
||||
- if (last_stamp != _IO_list_all_stamp)
|
||||
- {
|
||||
- /* Something was added to the list. Start all over again. */
|
||||
- fp = (_IO_FILE *) _IO_list_all;
|
||||
- last_stamp = _IO_list_all_stamp;
|
||||
- }
|
||||
- else
|
||||
- fp = fp->_chain;
|
||||
}
|
||||
|
||||
#ifdef _IO_MTSAFE_IO
|
||||
@@ -947,6 +902,12 @@ static void
|
||||
_IO_unbuffer_all (void)
|
||||
{
|
||||
struct _IO_FILE *fp;
|
||||
+
|
||||
+#ifdef _IO_MTSAFE_IO
|
||||
+ _IO_cleanup_region_start_noarg (flush_cleanup);
|
||||
+ _IO_lock_lock (list_all_lock);
|
||||
+#endif
|
||||
+
|
||||
for (fp = (_IO_FILE *) _IO_list_all; fp; fp = fp->_chain)
|
||||
{
|
||||
if (! (fp->_flags & _IO_UNBUFFERED)
|
||||
@@ -956,15 +917,8 @@ _IO_unbuffer_write (void)
|
||||
&& fp->_mode != 0)
|
||||
{
|
||||
#ifdef _IO_MTSAFE_IO
|
||||
- int cnt;
|
||||
-#define MAXTRIES 2
|
||||
- for (cnt = 0; cnt < MAXTRIES; ++cnt)
|
||||
- if (fp->_lock == NULL || _IO_lock_trylock (*fp->_lock) == 0)
|
||||
- break;
|
||||
- else
|
||||
- /* Give the other thread time to finish up its use of the
|
||||
- stream. */
|
||||
- __sched_yield ();
|
||||
+ run_fp = fp;
|
||||
+ _IO_flockfile (fp);
|
||||
#endif
|
||||
|
||||
if (! dealloc_buffers && !(fp->_flags & _IO_USER_BUF))
|
||||
@@ -980,8 +934,8 @@ _IO_unbuffer_write (void)
|
||||
_IO_wsetb (fp, NULL, NULL, 0);
|
||||
|
||||
#ifdef _IO_MTSAFE_IO
|
||||
- if (cnt < MAXTRIES && fp->_lock != NULL)
|
||||
- _IO_lock_unlock (*fp->_lock);
|
||||
+ _IO_funlockfile (fp);
|
||||
+ run_fp = NULL;
|
||||
#endif
|
||||
}
|
||||
|
||||
@@ -989,6 +943,11 @@ _IO_unbuffer_write (void)
|
||||
used. */
|
||||
fp->_mode = -1;
|
||||
}
|
||||
+
|
||||
+#ifdef _IO_MTSAFE_IO
|
||||
+ _IO_lock_unlock (list_all_lock);
|
||||
+ _IO_cleanup_region_end (0);
|
||||
+#endif
|
||||
}
|
||||
|
||||
|
||||
@@ -1008,9 +967,7 @@ libc_freeres_fn (buffer_free)
|
||||
int
|
||||
_IO_cleanup (void)
|
||||
{
|
||||
- /* We do *not* want locking. Some threads might use streams but
|
||||
- that is their problem, we flush them underneath them. */
|
||||
- int result = _IO_flush_all_lockp (0);
|
||||
+ int result = _IO_flush_all ();
|
||||
|
||||
/* We currently don't have a reliable mechanism for making sure that
|
||||
C++ static destructors are executed in the correct order.
|
||||
diff --git a/libio/libioP.h b/libio/libioP.h
|
||||
index 8a7b85b..3e3a724 100644
|
||||
--- a/libio/libioP.h
|
||||
+++ b/libio/libioP.h
|
||||
@@ -488,7 +488,6 @@ extern int _IO_new_do_write (_IO_FILE *, const char *, _IO_size_t);
|
||||
extern int _IO_old_do_write (_IO_FILE *, const char *, _IO_size_t);
|
||||
extern int _IO_wdo_write (_IO_FILE *, const wchar_t *, _IO_size_t);
|
||||
libc_hidden_proto (_IO_wdo_write)
|
||||
-extern int _IO_flush_all_lockp (int);
|
||||
extern int _IO_flush_all (void);
|
||||
libc_hidden_proto (_IO_flush_all)
|
||||
extern int _IO_cleanup (void);
|
||||
--
|
||||
1.9.1
|
||||
|
@ -1,467 +0,0 @@
|
||||
Fix fnmatch handling of collating elements (BZ #17396, BZ #16976)
|
||||
|
||||
[BZ #16976]
|
||||
[BZ #17396]
|
||||
* posix/fnmatch_loop.c (internal_fnmatch, internal_fnwmatch): When
|
||||
looking up collating elements match against (wide) character
|
||||
sequence instead of name. Correct alignment adjustment.
|
||||
* posix/fnmatch.c: Don't include "../locale/elem-hash.h".
|
||||
* posix/Makefile (tests): Add tst-fnmatch4 and tst-fnmatch5.
|
||||
* posix/tst-fnmatch4.c: New file.
|
||||
* posix/tst-fnmatch5.c: New file.
|
||||
|
||||
Index: glibc-2.22/posix/Makefile
|
||||
===================================================================
|
||||
--- glibc-2.22.orig/posix/Makefile
|
||||
+++ glibc-2.22/posix/Makefile
|
||||
@@ -87,6 +87,7 @@ tests := tstgetopt testfnm runtests run
|
||||
bug-getopt5 tst-getopt_long1 bug-regex34 bug-regex35 \
|
||||
tst-pathconf tst-getaddrinfo4 tst-rxspencer-no-utf8 \
|
||||
tst-fnmatch3 bug-regex36 tst-getaddrinfo5 \
|
||||
+ tst-fnmatch4 tst-fnmatch5 \
|
||||
tst-posix_spawn-fd tst-posix_spawn-setsid \
|
||||
tst-posix_fadvise tst-posix_fadvise64 \
|
||||
tst-sysconf-empty-chroot
|
||||
Index: glibc-2.22/posix/fnmatch.c
|
||||
===================================================================
|
||||
--- glibc-2.22.orig/posix/fnmatch.c
|
||||
+++ glibc-2.22/posix/fnmatch.c
|
||||
@@ -53,7 +53,6 @@
|
||||
we support a correct implementation only in glibc. */
|
||||
#ifdef _LIBC
|
||||
# include "../locale/localeinfo.h"
|
||||
-# include "../locale/elem-hash.h"
|
||||
# include "../locale/coll-lookup.h"
|
||||
# include <shlib-compat.h>
|
||||
|
||||
Index: glibc-2.22/posix/fnmatch_loop.c
|
||||
===================================================================
|
||||
--- glibc-2.22.orig/posix/fnmatch_loop.c
|
||||
+++ glibc-2.22/posix/fnmatch_loop.c
|
||||
@@ -503,26 +503,12 @@ FCT (pattern, string, string_end, no_lea
|
||||
{
|
||||
int32_t table_size;
|
||||
const int32_t *symb_table;
|
||||
-# if WIDE_CHAR_VERSION
|
||||
- char str[c1];
|
||||
- unsigned int strcnt;
|
||||
-# else
|
||||
-# define str (startp + 1)
|
||||
-# endif
|
||||
const unsigned char *extra;
|
||||
int32_t idx;
|
||||
int32_t elem;
|
||||
- int32_t second;
|
||||
- int32_t hash;
|
||||
-
|
||||
# if WIDE_CHAR_VERSION
|
||||
- /* We have to convert the name to a single-byte
|
||||
- string. This is possible since the names
|
||||
- consist of ASCII characters and the internal
|
||||
- representation is UCS4. */
|
||||
- for (strcnt = 0; strcnt < c1; ++strcnt)
|
||||
- str[strcnt] = startp[1 + strcnt];
|
||||
-#endif
|
||||
+ int32_t *wextra;
|
||||
+# endif
|
||||
|
||||
table_size =
|
||||
_NL_CURRENT_WORD (LC_COLLATE,
|
||||
@@ -534,71 +520,55 @@ FCT (pattern, string, string_end, no_lea
|
||||
_NL_CURRENT (LC_COLLATE,
|
||||
_NL_COLLATE_SYMB_EXTRAMB);
|
||||
|
||||
- /* Locate the character in the hashing table. */
|
||||
- hash = elem_hash (str, c1);
|
||||
-
|
||||
- idx = 0;
|
||||
- elem = hash % table_size;
|
||||
- if (symb_table[2 * elem] != 0)
|
||||
- {
|
||||
- second = hash % (table_size - 2) + 1;
|
||||
-
|
||||
- do
|
||||
- {
|
||||
- /* First compare the hashing value. */
|
||||
- if (symb_table[2 * elem] == hash
|
||||
- && (c1
|
||||
- == extra[symb_table[2 * elem + 1]])
|
||||
- && memcmp (str,
|
||||
- &extra[symb_table[2 * elem
|
||||
- + 1]
|
||||
- + 1], c1) == 0)
|
||||
- {
|
||||
- /* Yep, this is the entry. */
|
||||
- idx = symb_table[2 * elem + 1];
|
||||
- idx += 1 + extra[idx];
|
||||
- break;
|
||||
- }
|
||||
-
|
||||
- /* Next entry. */
|
||||
- elem += second;
|
||||
- }
|
||||
- while (symb_table[2 * elem] != 0);
|
||||
- }
|
||||
+ for (elem = 0; elem < table_size; elem++)
|
||||
+ if (symb_table[2 * elem] != 0)
|
||||
+ {
|
||||
+ idx = symb_table[2 * elem + 1];
|
||||
+ /* Skip the name of collating element. */
|
||||
+ idx += 1 + extra[idx];
|
||||
+# if WIDE_CHAR_VERSION
|
||||
+ /* Skip the byte sequence of the
|
||||
+ collating element. */
|
||||
+ idx += 1 + extra[idx];
|
||||
+ /* Adjust for the alignment. */
|
||||
+ idx = (idx + 3) & ~3;
|
||||
+
|
||||
+ wextra = (int32_t *) &extra[idx + 4];
|
||||
+
|
||||
+ if (/* Compare the length of the sequence. */
|
||||
+ c1 == wextra[0]
|
||||
+ /* Compare the wide char sequence. */
|
||||
+ && memcmp (startp + 1, &wextra[1],
|
||||
+ c1 * sizeof (UCHAR)) == 0)
|
||||
+ /* Yep, this is the entry. */
|
||||
+ break;
|
||||
+# else
|
||||
+ if (/* Compare the length of the sequence. */
|
||||
+ c1 == extra[idx]
|
||||
+ /* Compare the byte sequence. */
|
||||
+ && memcmp (startp + 1,
|
||||
+ &extra[idx + 1], c1) == 0)
|
||||
+ /* Yep, this is the entry. */
|
||||
+ break;
|
||||
+# endif
|
||||
+ }
|
||||
|
||||
- if (symb_table[2 * elem] != 0)
|
||||
+ if (elem < table_size)
|
||||
{
|
||||
/* Compare the byte sequence but only if
|
||||
this is not part of a range. */
|
||||
-# if WIDE_CHAR_VERSION
|
||||
- int32_t *wextra;
|
||||
+ if (! is_range
|
||||
|
||||
- idx += 1 + extra[idx];
|
||||
- /* Adjust for the alignment. */
|
||||
- idx = (idx + 3) & ~3;
|
||||
-
|
||||
- wextra = (int32_t *) &extra[idx + 4];
|
||||
-# endif
|
||||
-
|
||||
- if (! is_range)
|
||||
- {
|
||||
# if WIDE_CHAR_VERSION
|
||||
- for (c1 = 0;
|
||||
- (int32_t) c1 < wextra[idx];
|
||||
- ++c1)
|
||||
- if (n[c1] != wextra[1 + c1])
|
||||
- break;
|
||||
-
|
||||
- if ((int32_t) c1 == wextra[idx])
|
||||
- goto matched;
|
||||
+ && memcmp (n, &wextra[1],
|
||||
+ c1 * sizeof (UCHAR)) == 0
|
||||
# else
|
||||
- for (c1 = 0; c1 < extra[idx]; ++c1)
|
||||
- if (n[c1] != extra[1 + c1])
|
||||
- break;
|
||||
-
|
||||
- if (c1 == extra[idx])
|
||||
- goto matched;
|
||||
+ && memcmp (n, &extra[idx + 1], c1) == 0
|
||||
# endif
|
||||
+ )
|
||||
+ {
|
||||
+ n += c1 - 1;
|
||||
+ goto matched;
|
||||
}
|
||||
|
||||
/* Get the collation sequence value. */
|
||||
@@ -606,9 +576,9 @@ FCT (pattern, string, string_end, no_lea
|
||||
# if WIDE_CHAR_VERSION
|
||||
cold = wextra[1 + wextra[idx]];
|
||||
# else
|
||||
- /* Adjust for the alignment. */
|
||||
idx += 1 + extra[idx];
|
||||
- idx = (idx + 3) & ~4;
|
||||
+ /* Adjust for the alignment. */
|
||||
+ idx = (idx + 3) & ~3;
|
||||
cold = *((int32_t *) &extra[idx]);
|
||||
# endif
|
||||
|
||||
@@ -618,10 +588,10 @@ FCT (pattern, string, string_end, no_lea
|
||||
{
|
||||
/* No valid character. Match it as a
|
||||
single byte. */
|
||||
- if (!is_range && *n == str[0])
|
||||
+ if (!is_range && *n == startp[1])
|
||||
goto matched;
|
||||
|
||||
- cold = str[0];
|
||||
+ cold = startp[1];
|
||||
c = *p++;
|
||||
}
|
||||
else
|
||||
@@ -629,7 +599,6 @@ FCT (pattern, string, string_end, no_lea
|
||||
}
|
||||
}
|
||||
else
|
||||
-# undef str
|
||||
#endif
|
||||
{
|
||||
c = FOLD (c);
|
||||
@@ -721,25 +690,11 @@ FCT (pattern, string, string_end, no_lea
|
||||
{
|
||||
int32_t table_size;
|
||||
const int32_t *symb_table;
|
||||
-# if WIDE_CHAR_VERSION
|
||||
- char str[c1];
|
||||
- unsigned int strcnt;
|
||||
-# else
|
||||
-# define str (startp + 1)
|
||||
-# endif
|
||||
const unsigned char *extra;
|
||||
int32_t idx;
|
||||
int32_t elem;
|
||||
- int32_t second;
|
||||
- int32_t hash;
|
||||
-
|
||||
# if WIDE_CHAR_VERSION
|
||||
- /* We have to convert the name to a single-byte
|
||||
- string. This is possible since the names
|
||||
- consist of ASCII characters and the internal
|
||||
- representation is UCS4. */
|
||||
- for (strcnt = 0; strcnt < c1; ++strcnt)
|
||||
- str[strcnt] = startp[1 + strcnt];
|
||||
+ int32_t *wextra;
|
||||
# endif
|
||||
|
||||
table_size =
|
||||
@@ -752,51 +707,44 @@ FCT (pattern, string, string_end, no_lea
|
||||
_NL_CURRENT (LC_COLLATE,
|
||||
_NL_COLLATE_SYMB_EXTRAMB);
|
||||
|
||||
- /* Locate the character in the hashing
|
||||
- table. */
|
||||
- hash = elem_hash (str, c1);
|
||||
-
|
||||
- idx = 0;
|
||||
- elem = hash % table_size;
|
||||
- if (symb_table[2 * elem] != 0)
|
||||
- {
|
||||
- second = hash % (table_size - 2) + 1;
|
||||
-
|
||||
- do
|
||||
- {
|
||||
- /* First compare the hashing value. */
|
||||
- if (symb_table[2 * elem] == hash
|
||||
- && (c1
|
||||
- == extra[symb_table[2 * elem + 1]])
|
||||
- && memcmp (str,
|
||||
- &extra[symb_table[2 * elem + 1]
|
||||
- + 1], c1) == 0)
|
||||
- {
|
||||
- /* Yep, this is the entry. */
|
||||
- idx = symb_table[2 * elem + 1];
|
||||
- idx += 1 + extra[idx];
|
||||
- break;
|
||||
- }
|
||||
-
|
||||
- /* Next entry. */
|
||||
- elem += second;
|
||||
- }
|
||||
- while (symb_table[2 * elem] != 0);
|
||||
- }
|
||||
-
|
||||
- if (symb_table[2 * elem] != 0)
|
||||
- {
|
||||
- /* Compare the byte sequence but only if
|
||||
- this is not part of a range. */
|
||||
+ for (elem = 0; elem < table_size; elem++)
|
||||
+ if (symb_table[2 * elem] != 0)
|
||||
+ {
|
||||
+ idx = symb_table[2 * elem + 1];
|
||||
+ /* Skip the name of collating
|
||||
+ element. */
|
||||
+ idx += 1 + extra[idx];
|
||||
# if WIDE_CHAR_VERSION
|
||||
- int32_t *wextra;
|
||||
-
|
||||
- idx += 1 + extra[idx];
|
||||
- /* Adjust for the alignment. */
|
||||
- idx = (idx + 3) & ~4;
|
||||
-
|
||||
- wextra = (int32_t *) &extra[idx + 4];
|
||||
+ /* Skip the byte sequence of the
|
||||
+ collating element. */
|
||||
+ idx += 1 + extra[idx];
|
||||
+ /* Adjust for the alignment. */
|
||||
+ idx = (idx + 3) & ~3;
|
||||
+
|
||||
+ wextra = (int32_t *) &extra[idx + 4];
|
||||
+
|
||||
+ if (/* Compare the length of the
|
||||
+ sequence. */
|
||||
+ c1 == wextra[0]
|
||||
+ /* Compare the wide char sequence. */
|
||||
+ && memcmp (startp + 1, &wextra[1],
|
||||
+ c1 * sizeof (int32_t)) == 0)
|
||||
+ /* Yep, this is the entry. */
|
||||
+ break;
|
||||
+# else
|
||||
+ if (/* Compare the length of the
|
||||
+ sequence. */
|
||||
+ c1 == extra[idx]
|
||||
+ /* Compare the byte sequence. */
|
||||
+ && memcmp (startp + 1,
|
||||
+ &extra[idx + 1], c1) == 0)
|
||||
+ /* Yep, this is the entry. */
|
||||
+ break;
|
||||
# endif
|
||||
+ }
|
||||
+
|
||||
+ if (elem < table_size)
|
||||
+ {
|
||||
/* Get the collation sequence value. */
|
||||
is_seqval = 1;
|
||||
# if WIDE_CHAR_VERSION
|
||||
@@ -804,19 +752,18 @@ FCT (pattern, string, string_end, no_lea
|
||||
# else
|
||||
/* Adjust for the alignment. */
|
||||
idx += 1 + extra[idx];
|
||||
- idx = (idx + 3) & ~4;
|
||||
+ idx = (idx + 3) & ~3;
|
||||
cend = *((int32_t *) &extra[idx]);
|
||||
# endif
|
||||
}
|
||||
- else if (symb_table[2 * elem] != 0 && c1 == 1)
|
||||
+ else if (c1 == 1)
|
||||
{
|
||||
- cend = str[0];
|
||||
+ cend = startp[1];
|
||||
c = *p++;
|
||||
}
|
||||
else
|
||||
return FNM_NOMATCH;
|
||||
}
|
||||
-# undef str
|
||||
}
|
||||
else
|
||||
{
|
||||
Index: glibc-2.22/posix/tst-fnmatch4.c
|
||||
===================================================================
|
||||
--- /dev/null
|
||||
+++ glibc-2.22/posix/tst-fnmatch4.c
|
||||
@@ -0,0 +1,51 @@
|
||||
+/* Test for fnmatch handling of collating elements
|
||||
+ Copyright (C) 2015 Free Software Foundation, Inc.
|
||||
+ This file is part of the GNU C Library.
|
||||
+
|
||||
+ The GNU C Library is free software; you can redistribute it and/or
|
||||
+ modify it under the terms of the GNU Lesser General Public
|
||||
+ License as published by the Free Software Foundation; either
|
||||
+ version 2.1 of the License, or (at your option) any later version.
|
||||
+
|
||||
+ The GNU C Library is distributed in the hope that it will be useful,
|
||||
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
+ Lesser General Public License for more details.
|
||||
+
|
||||
+ You should have received a copy of the GNU Lesser General Public
|
||||
+ License along with the GNU C Library; if not, see
|
||||
+ <http://www.gnu.org/licenses/>. */
|
||||
+
|
||||
+#include <stdio.h>
|
||||
+#include <locale.h>
|
||||
+#include <fnmatch.h>
|
||||
+
|
||||
+static int
|
||||
+do_test_locale (const char *locale)
|
||||
+{
|
||||
+ const char *pattern = "[[.ll.]]";
|
||||
+
|
||||
+ if (setlocale (LC_ALL, locale) == NULL)
|
||||
+ {
|
||||
+ printf ("could not set locale %s\n", locale);
|
||||
+ return 1;
|
||||
+ }
|
||||
+
|
||||
+ if (fnmatch (pattern, "ll", 0) != 0)
|
||||
+ {
|
||||
+ printf ("%s didn't match in locale %s\n", pattern, locale);
|
||||
+ return 1;
|
||||
+ }
|
||||
+
|
||||
+ return 0;
|
||||
+}
|
||||
+
|
||||
+static int
|
||||
+do_test (void)
|
||||
+{
|
||||
+ return (do_test_locale ("es_US.ISO-8859-1")
|
||||
+ || do_test_locale ("es_US.UTF-8"));
|
||||
+}
|
||||
+
|
||||
+#define TEST_FUNCTION do_test ()
|
||||
+#include "../test-skeleton.c"
|
||||
Index: glibc-2.22/posix/tst-fnmatch5.c
|
||||
===================================================================
|
||||
--- /dev/null
|
||||
+++ glibc-2.22/posix/tst-fnmatch5.c
|
||||
@@ -0,0 +1,53 @@
|
||||
+/* Test for fnmatch handling of collating elements
|
||||
+ Copyright (C) 2015 Free Software Foundation, Inc.
|
||||
+ This file is part of the GNU C Library.
|
||||
+
|
||||
+ The GNU C Library is free software; you can redistribute it and/or
|
||||
+ modify it under the terms of the GNU Lesser General Public
|
||||
+ License as published by the Free Software Foundation; either
|
||||
+ version 2.1 of the License, or (at your option) any later version.
|
||||
+
|
||||
+ The GNU C Library is distributed in the hope that it will be useful,
|
||||
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
+ Lesser General Public License for more details.
|
||||
+
|
||||
+ You should have received a copy of the GNU Lesser General Public
|
||||
+ License along with the GNU C Library; if not, see
|
||||
+ <http://www.gnu.org/licenses/>. */
|
||||
+
|
||||
+#include <fnmatch.h>
|
||||
+#include <locale.h>
|
||||
+#include <stdio.h>
|
||||
+#include <string.h>
|
||||
+
|
||||
+#define LENGTH 20000000
|
||||
+
|
||||
+char pattern[LENGTH + 7];
|
||||
+
|
||||
+static int
|
||||
+do_test (void)
|
||||
+{
|
||||
+ if (setlocale (LC_ALL, "en_US.UTF-8") == NULL)
|
||||
+ {
|
||||
+ puts ("could not set locale");
|
||||
+ return 1;
|
||||
+ }
|
||||
+ pattern[0] = '[';
|
||||
+ pattern[1] = '[';
|
||||
+ pattern[2] = '.';
|
||||
+ memset (pattern + 3, 'a', LENGTH);
|
||||
+ pattern[LENGTH + 3] = '.';
|
||||
+ pattern[LENGTH + 4] = ']';
|
||||
+ pattern[LENGTH + 5] = ']';
|
||||
+ int ret = fnmatch (pattern, "a", 0);
|
||||
+ if (ret == 0)
|
||||
+ {
|
||||
+ puts ("fnmatch returned 0 for invalid pattern");
|
||||
+ return 1;
|
||||
+ }
|
||||
+ return 0;
|
||||
+}
|
||||
+
|
||||
+#define TEST_FUNCTION do_test ()
|
||||
+#include "../test-skeleton.c"
|
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"
|
@ -1,98 +0,0 @@
|
||||
Index: glibc-2.25/crypt/Makefile
|
||||
===================================================================
|
||||
--- glibc-2.25.orig/crypt/Makefile
|
||||
+++ glibc-2.25/crypt/Makefile
|
||||
@@ -23,14 +23,18 @@ subdir := crypt
|
||||
include ../Makeconfig
|
||||
|
||||
headers := crypt.h
|
||||
+headers += gnu-crypt.h ow-crypt.h
|
||||
|
||||
-extra-libs := libcrypt
|
||||
+extra-libs := libcrypt libowcrypt
|
||||
extra-libs-others := $(extra-libs)
|
||||
|
||||
libcrypt-routines := crypt-entry md5-crypt sha256-crypt sha512-crypt crypt \
|
||||
crypt_util
|
||||
|
||||
-tests := cert md5c-test sha256c-test sha512c-test badsalttest
|
||||
+libcrypt-routines += crypt_blowfish x86 wrapper
|
||||
+libowcrypt-routines := crypt_gensalt wrapper-gensalt
|
||||
+
|
||||
+tests := cert md5c-test sha256c-test sha512c-test
|
||||
|
||||
ifeq ($(crypt-in-libc),yes)
|
||||
routines += $(libcrypt-routines)
|
||||
Index: glibc-2.25/crypt/Versions
|
||||
===================================================================
|
||||
--- glibc-2.25.orig/crypt/Versions
|
||||
+++ glibc-2.25/crypt/Versions
|
||||
@@ -3,3 +3,8 @@ libcrypt {
|
||||
crypt; crypt_r; encrypt; encrypt_r; fcrypt; setkey; setkey_r;
|
||||
}
|
||||
}
|
||||
+libowcrypt {
|
||||
+ OW_CRYPT_1.0 {
|
||||
+ crypt_gensalt; crypt_gensalt_rn; crypt_gensalt_ra;
|
||||
+ }
|
||||
+}
|
||||
Index: glibc-2.25/crypt/crypt-entry.c
|
||||
===================================================================
|
||||
--- glibc-2.25.orig/crypt/crypt-entry.c
|
||||
+++ glibc-2.25/crypt/crypt-entry.c
|
||||
@@ -71,7 +71,7 @@ extern struct crypt_data _ufc_foobar;
|
||||
*/
|
||||
|
||||
char *
|
||||
-__crypt_r (const char *key, const char *salt,
|
||||
+__des_crypt_r (const char *key, const char *salt,
|
||||
struct crypt_data * __restrict data)
|
||||
{
|
||||
ufc_long res[4];
|
||||
@@ -152,6 +152,7 @@ __crypt_r (const char *key, const char *
|
||||
|
||||
return data->crypt_3_buf;
|
||||
}
|
||||
+#if 0
|
||||
weak_alias (__crypt_r, crypt_r)
|
||||
|
||||
char *
|
||||
@@ -190,3 +191,4 @@ __fcrypt (const char *key, const char *s
|
||||
return crypt (key, salt);
|
||||
}
|
||||
#endif
|
||||
+#endif
|
||||
Index: glibc-2.25/crypt/crypt-private.h
|
||||
===================================================================
|
||||
--- glibc-2.25.orig/crypt/crypt-private.h
|
||||
+++ glibc-2.25/crypt/crypt-private.h
|
||||
@@ -65,7 +65,7 @@ extern void __encrypt_r (char * __restri
|
||||
struct crypt_data * __restrict __data);
|
||||
|
||||
/* crypt-entry.c */
|
||||
-extern char *__crypt_r (const char *__key, const char *__salt,
|
||||
+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);
|
||||
|
||||
Index: glibc-2.25/shlib-versions
|
||||
===================================================================
|
||||
--- glibc-2.25.orig/shlib-versions
|
||||
+++ glibc-2.25/shlib-versions
|
||||
@@ -58,6 +58,7 @@ libnsl=1
|
||||
|
||||
# This defines the shared library version numbers we will install.
|
||||
libcrypt=1
|
||||
+libowcrypt=1
|
||||
|
||||
# The gross patch for programs assuming broken locale implementations.
|
||||
libBrokenLocale=1
|
||||
Index: glibc-2.25/sysdeps/unix/sysv/linux/libowcrypt.abilist
|
||||
===================================================================
|
||||
--- /dev/null
|
||||
+++ glibc-2.25/sysdeps/unix/sysv/linux/libowcrypt.abilist
|
||||
@@ -0,0 +1,4 @@
|
||||
+OW_CRYPT_1.0 OW_CRYPT_1.0 A
|
||||
+OW_CRYPT_1.0 crypt_gensalt F
|
||||
+OW_CRYPT_1.0 crypt_gensalt_ra F
|
||||
+OW_CRYPT_1.0 crypt_gensalt_rn F
|
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);
|
||||
}
|
@ -1,3 +0,0 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:e54e0a934cd2bc94429be79da5e9385898d2306b9eaf3c92d5a77af96190f6bd
|
||||
size 14682748
|
@ -1,10 +0,0 @@
|
||||
-----BEGIN PGP SIGNATURE-----
|
||||
|
||||
iQEcBAABAgAGBQJZgduLAAoJEHnEPfvxzyGHDesH/itf17ZUWSWNIRp2cC0RK1et
|
||||
jtR7ufFMpSHfMFJQXkli162s+iFMAxuOus52rma/h3PP8BXVbEKB7M3N0dvqPbmC
|
||||
AIC6YtAYU/I4M3V+6T1pi4ras19i2VgNY+iag0xw5o0ah4yZmZwB5eFR2xIz10ZD
|
||||
SGffJyCD/8EFwn/SPx38JS55ENwGj5PT1m2TsEnlLeHg7sCH7ksb5Pqq/ZEwIw0v
|
||||
E56a4hSliDUhurc0gUQmFxm/FhFSdTzns0vShfgou4D2tNSYaUjrf/17ebj0ehUF
|
||||
XkNH5jvwHoxiKzEVnD7dS9NLbvOPAG4AlFnWejgqvX0JB/M5TknOcmJYpzZYiGE=
|
||||
=XObH
|
||||
-----END PGP SIGNATURE-----
|
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)
|
@ -1,12 +1,11 @@
|
||||
-------------------------------------------------------------------
|
||||
Wed Jun 4 14:29:07 CEST 2003 - kukuk@suse.de
|
||||
|
||||
- Make --no-archive default for localedef
|
||||
|
||||
Index: glibc-2.18.90/locale/programs/localedef.c
|
||||
===================================================================
|
||||
--- glibc-2.18.90.orig/locale/programs/localedef.c
|
||||
+++ glibc-2.18.90/locale/programs/localedef.c
|
||||
@@ -81,7 +81,7 @@ const char *alias_file;
|
||||
--- 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. */
|
||||
@ -15,15 +14,15 @@ Index: glibc-2.18.90/locale/programs/localedef.c
|
||||
|
||||
/* If true add named locales to archive. */
|
||||
static bool add_to_archive;
|
||||
@@ -112,6 +112,7 @@ void (*argp_program_version_hook) (FILE
|
||||
@@ -114,6 +114,7 @@
|
||||
#define OPT_REPLACE 307
|
||||
#define OPT_DELETE_FROM_ARCHIVE 308
|
||||
#define OPT_LIST_ARCHIVE 309
|
||||
+#define OPT_ARCHIVE 310
|
||||
#define OPT_LITTLE_ENDIAN 400
|
||||
#define OPT_BIG_ENDIAN 401
|
||||
|
||||
@@ -136,6 +137,8 @@ static const struct argp_option options[
|
||||
/* 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:") },
|
||||
@ -32,7 +31,7 @@ Index: glibc-2.18.90/locale/programs/localedef.c
|
||||
{ "no-archive", OPT_NO_ARCHIVE, NULL, 0,
|
||||
N_("Don't add new data to archive") },
|
||||
{ "add-to-archive", OPT_ADD_TO_ARCHIVE, NULL, 0,
|
||||
@@ -317,6 +320,9 @@ parse_opt (int key, char *arg, struct ar
|
||||
@@ -315,6 +318,9 @@
|
||||
case OPT_PREFIX:
|
||||
output_prefix = arg;
|
||||
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
|
@ -1,8 +1,10 @@
|
||||
Index: glibc-2.17.90/nscd/nscd.h
|
||||
===================================================================
|
||||
--- glibc-2.17.90.orig/nscd/nscd.h
|
||||
+++ glibc-2.17.90/nscd/nscd.h
|
||||
@@ -112,11 +112,11 @@ struct database_dyn
|
||||
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. */
|
||||
@ -10,12 +12,10 @@ Index: glibc-2.17.90/nscd/nscd.h
|
||||
-#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_NETGROUP_DB "/var/db/nscd/netgroup"
|
||||
+#define _PATH_NSCD_PASSWD_DB "/var/lib/nscd/passwd"
|
||||
+#define _PATH_NSCD_GROUP_DB "/var/lib/nscd/group"
|
||||
+#define _PATH_NSCD_HOSTS_DB "/var/lib/nscd/hosts"
|
||||
+#define _PATH_NSCD_SERVICES_DB "/var/lib/nscd/services"
|
||||
+#define _PATH_NSCD_NETGROUP_DB "/var/lib/nscd/netgroup"
|
||||
+#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;
|
@ -1,28 +1,28 @@
|
||||
Index: glibc-2.17.90/sunrpc/bindrsvprt.c
|
||||
===================================================================
|
||||
--- glibc-2.17.90.orig/sunrpc/bindrsvprt.c
|
||||
+++ glibc-2.17.90/sunrpc/bindrsvprt.c
|
||||
@@ -29,6 +29,9 @@
|
||||
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
--- 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 <stdlib.h>
|
||||
#include <errno.h>
|
||||
+#include <stdlib.h>
|
||||
#include <unistd.h>
|
||||
#include <string.h>
|
||||
@@ -42,6 +45,93 @@
|
||||
*/
|
||||
__libc_lock_define_initialized (static, lock);
|
||||
#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 these
|
||||
+ ports. */
|
||||
+/*
|
||||
+ * Read the file /etc/rpc.blacklisted, so that we don't bind
|
||||
+ * to this ports.
|
||||
+ */
|
||||
+
|
||||
+static int blacklist_read;
|
||||
+static int *list;
|
||||
@ -36,16 +36,13 @@ Index: glibc-2.17.90/sunrpc/bindrsvprt.c
|
||||
+ size_t buflen = 0;
|
||||
+ int size = 0, ptr = 0;
|
||||
+
|
||||
+ __libc_lock_lock (lock);
|
||||
+ if (blacklist_read)
|
||||
+ goto unlock;
|
||||
+ blacklist_read = 1;
|
||||
+
|
||||
+ fp = fopen ("/etc/bindresvport.blacklist", "r");
|
||||
+ if (fp == NULL)
|
||||
+ goto unlock;
|
||||
+ if (NULL == fp)
|
||||
+ return;
|
||||
+
|
||||
+ while (!feof_unlocked (fp))
|
||||
+ while (!feof (fp))
|
||||
+ {
|
||||
+ unsigned long port;
|
||||
+ char *tmp, *cp;
|
||||
@ -54,59 +51,56 @@ Index: glibc-2.17.90/sunrpc/bindrsvprt.c
|
||||
+ break;
|
||||
+
|
||||
+ cp = buf;
|
||||
+ /* Remove comments. */
|
||||
+ tmp = strchr (cp, '#');
|
||||
+ tmp = strchr (cp, '#'); /* remove comments */
|
||||
+ if (tmp)
|
||||
+ *tmp = '\0';
|
||||
+ /* Remove spaces and tabs. */
|
||||
+ while (isspace ((unsigned char) *cp))
|
||||
+ while (isspace ((int)*cp)) /* remove spaces and tabs */
|
||||
+ ++cp;
|
||||
+ /* Ignore empty lines. */
|
||||
+ if (*cp == '\0')
|
||||
+ 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 ((unsigned char) *tmp))
|
||||
+ while (isspace(*tmp))
|
||||
+ ++tmp;
|
||||
+ if (*tmp != '\0' || (port == ULONG_MAX && errno == ERANGE))
|
||||
+ continue;
|
||||
+
|
||||
+ /* Don't bother with out-of-range ports. */
|
||||
+ /* Don't bother with out-of-range ports */
|
||||
+ if (port < LOWPORT || port > ENDPORT)
|
||||
+ continue;
|
||||
+
|
||||
+ if (ptr >= size)
|
||||
+ {
|
||||
+ size += 10;
|
||||
+ int *new_list = realloc (list, size * sizeof (int));
|
||||
+ if (new_list == NULL)
|
||||
+ list = realloc (list, size * sizeof (int));
|
||||
+ if (list == NULL)
|
||||
+ {
|
||||
+ free (list);
|
||||
+ list = NULL;
|
||||
+ free (buf);
|
||||
+ goto unlock;
|
||||
+ return;
|
||||
+ }
|
||||
+ list = new_list;
|
||||
+ }
|
||||
+
|
||||
+ list[ptr++] = port;
|
||||
+ }
|
||||
+
|
||||
+ fclose (fp);
|
||||
+
|
||||
+ if (buf)
|
||||
+ free (buf);
|
||||
+
|
||||
+ list_size = ptr;
|
||||
+
|
||||
+ unlock:
|
||||
+ __libc_lock_unlock (lock);
|
||||
+}
|
||||
+
|
||||
+
|
||||
/*
|
||||
* Bind a socket to a privileged IP port
|
||||
*/
|
||||
@@ -52,12 +142,11 @@ bindresvport (int sd, struct sockaddr_in
|
||||
int
|
||||
bindresvport (int sd, struct sockaddr_in *sin)
|
||||
{
|
||||
+ static short startport = STARTPORT;
|
||||
static short port;
|
||||
struct sockaddr_in myaddr;
|
||||
int i;
|
||||
|
||||
@ -114,15 +108,13 @@ Index: glibc-2.17.90/sunrpc/bindrsvprt.c
|
||||
-#define LOWPORT 512
|
||||
-#define ENDPORT (IPPORT_RESERVED - 1)
|
||||
-#define NPORTS (ENDPORT - STARTPORT + 1)
|
||||
static short startport = STARTPORT;
|
||||
|
||||
- static short startport = STARTPORT;
|
||||
+ if (!blacklist_read)
|
||||
+ load_blacklist ();
|
||||
+
|
||||
|
||||
if (sin == (struct sockaddr_in *) 0)
|
||||
{
|
||||
sin = &myaddr;
|
||||
@@ -75,6 +164,7 @@ bindresvport (int sd, struct sockaddr_in
|
||||
@@ -70,6 +148,7 @@
|
||||
port = (__getpid () % NPORTS) + STARTPORT;
|
||||
}
|
||||
|
||||
@ -130,7 +122,7 @@ Index: glibc-2.17.90/sunrpc/bindrsvprt.c
|
||||
/* Initialize to make gcc happy. */
|
||||
int res = -1;
|
||||
|
||||
@@ -86,12 +176,22 @@ bindresvport (int sd, struct sockaddr_in
|
||||
@@ -78,12 +157,22 @@
|
||||
again:
|
||||
for (i = 0; i < nports; ++i)
|
||||
{
|
||||
@ -141,7 +133,7 @@ Index: glibc-2.17.90/sunrpc/bindrsvprt.c
|
||||
+
|
||||
+ sin->sin_port = htons (port);
|
||||
+
|
||||
+ /* Check that this port is not blacklisted. */
|
||||
+ /* Check, if this port is not blacklisted. */
|
||||
+ for (j = 0; j < list_size; j++)
|
||||
+ if (port == list[j])
|
||||
+ goto try_next_port;
|
||||
@ -150,7 +142,7 @@ Index: glibc-2.17.90/sunrpc/bindrsvprt.c
|
||||
if (res >= 0 || errno != EADDRINUSE)
|
||||
break;
|
||||
+
|
||||
+ try_next_port:
|
||||
+try_next_port:
|
||||
+ if (++port > endport)
|
||||
+ port = startport;
|
||||
}
|
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. */
|
||||
|
@ -1,13 +1,16 @@
|
||||
Index: glibc-2.24/intl/loadmsgcat.c
|
||||
Index: intl/loadmsgcat.c
|
||||
===================================================================
|
||||
--- glibc-2.24.orig/intl/loadmsgcat.c
|
||||
+++ glibc-2.24/intl/loadmsgcat.c
|
||||
@@ -829,8 +829,47 @@ _nl_load_domain (struct loaded_l10nfile
|
||||
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 | O_BINARY);
|
||||
- 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) +
|
||||
@ -18,16 +21,20 @@ Index: glibc-2.24/intl/loadmsgcat.c
|
||||
+ if (p != NULL)
|
||||
+ {
|
||||
+ strcpy (filename_langpack, langpackdir);
|
||||
+ strcpy (&filename_langpack[strlen (langpackdir)], p + 8);
|
||||
+ fd = open (filename_langpack, O_RDONLY | O_BINARY);
|
||||
+ 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);
|
||||
+ }
|
||||
+
|
||||
+ if (fd == -1)
|
||||
+ else
|
||||
+ /* Try to open the addressed file. */
|
||||
+ fd = open (domain_file->filename, O_RDONLY | O_BINARY);
|
||||
+ fd = open (domain_file->filename, O_RDONLY);
|
||||
+
|
||||
+ if (fd == -1)
|
||||
+ {
|
||||
@ -41,8 +48,9 @@ Index: glibc-2.24/intl/loadmsgcat.c
|
||||
+ if (p != NULL)
|
||||
+ {
|
||||
+ strcpy (filename_bundle, bundle_dir);
|
||||
+ strcpy (&filename_bundle[strlen (bundle_dir)], p + 8);
|
||||
+ fd = open (filename_bundle, O_RDONLY | O_BINARY);
|
||||
+ strcpy (&filename_bundle[strlen (bundle_dir)],
|
||||
+ (p+8));
|
||||
+ fd = open (filename_bundle, O_RDONLY);
|
||||
+ }
|
||||
+
|
||||
+ free (filename_bundle);
|
||||
|
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;
|
||||
|
@ -1,8 +1,6 @@
|
||||
Index: glibc-2.20/elf/rtld.c
|
||||
===================================================================
|
||||
--- glibc-2.20.orig/elf/rtld.c
|
||||
+++ glibc-2.20/elf/rtld.c
|
||||
@@ -1591,6 +1591,52 @@ ERROR: ld.so: object '%s' cannot be load
|
||||
--- elf/rtld.c
|
||||
+++ elf/rtld.c 2005/04/12 10:05:38
|
||||
@@ -1672,6 +1672,53 @@
|
||||
}
|
||||
}
|
||||
|
||||
@ -18,31 +16,32 @@ Index: glibc-2.20/elf/rtld.c
|
||||
+ */
|
||||
+#define LIB_NOVERSION "/lib/obsolete/noversion/libNoVersion.so.1"
|
||||
+
|
||||
+ if (__glibc_unlikely (main_map->l_info[DT_NUM + DT_THISPROCNUM
|
||||
+ if (__builtin_expect (main_map->l_info[DT_NUM + DT_THISPROCNUM
|
||||
+ + DT_VERSIONTAGIDX (DT_VERNEED)]
|
||||
+ == NULL)
|
||||
+ && (main_map->l_info[DT_DEBUG] != 0
|
||||
+ == NULL, 0)
|
||||
+ && (main_map->l_info[DT_DEBUG]
|
||||
+ || !(GLRO(dl_debug_mask) & DL_DEBUG_PRELINK)))
|
||||
+ {
|
||||
+ struct stat64 test_st;
|
||||
+ struct stat test_st;
|
||||
+ int test_fd;
|
||||
+ bool can_load;
|
||||
+ int can_load;
|
||||
+
|
||||
+ HP_TIMING_NOW (start);
|
||||
+
|
||||
+ can_load = true;
|
||||
+ can_load = 1;
|
||||
+ test_fd = __open (LIB_NOVERSION, O_RDONLY);
|
||||
+ if (test_fd < 0)
|
||||
+ can_load = false;
|
||||
+ else
|
||||
+ {
|
||||
+ if (__fxstat64 (_STAT_VER, test_fd, &test_st) < 0
|
||||
+ || test_st.st_size == 0)
|
||||
+ can_load = false;
|
||||
+ __close(test_fd);
|
||||
+ 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 (can_load)
|
||||
+ 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");
|
||||
+
|
||||
@ -52,6 +51,6 @@ Index: glibc-2.20/elf/rtld.c
|
||||
+ }
|
||||
+#endif
|
||||
+
|
||||
if (__glibc_unlikely (*first_preload != NULL))
|
||||
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
|
@ -1,17 +1,15 @@
|
||||
Index: glibc-2.17.90/localedata/locales/zh_TW
|
||||
===================================================================
|
||||
--- glibc-2.17.90.orig/localedata/locales/zh_TW
|
||||
+++ glibc-2.17.90/localedata/locales/zh_TW
|
||||
@@ -8,7 +8,7 @@
|
||||
% exempt you from the conditions of the license if your use would
|
||||
% otherwise be governed by that license.
|
||||
|
||||
--- 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:
|
||||
@@ -24,7 +24,7 @@ escape_char /
|
||||
@@ -17,7 +17,7 @@
|
||||
% Reference: http://wwwold.dkuug.dk/JTC1/SC22/WG20/docs/n690.pdf
|
||||
|
||||
LC_IDENTIFICATION
|
||||
@ -20,3 +18,12 @@ Index: glibc-2.17.90/localedata/locales/zh_TW
|
||||
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,
|
@ -1,8 +1,6 @@
|
||||
Index: glibc-2.18.90/intl/locale.alias
|
||||
===================================================================
|
||||
--- glibc-2.18.90.orig/intl/locale.alias
|
||||
+++ glibc-2.18.90/intl/locale.alias
|
||||
@@ -56,8 +56,6 @@ korean ko_KR.eucKR
|
||||
--- 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
|
||||
@ -11,23 +9,8 @@ Index: glibc-2.18.90/intl/locale.alias
|
||||
norwegian nb_NO.ISO-8859-1
|
||||
nynorsk nn_NO.ISO-8859-1
|
||||
polish pl_PL.ISO-8859-2
|
||||
Index: glibc-2.18.90/localedata/SUPPORTED
|
||||
===================================================================
|
||||
--- glibc-2.18.90.orig/localedata/SUPPORTED
|
||||
+++ glibc-2.18.90/localedata/SUPPORTED
|
||||
@@ -331,6 +331,8 @@ nl_NL/ISO-8859-1 \
|
||||
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 \
|
||||
Index: glibc-2.18.90/localedata/locales/no_NO
|
||||
===================================================================
|
||||
--- /dev/null
|
||||
+++ glibc-2.18.90/localedata/locales/no_NO
|
||||
--- localedata/locales/no_NO
|
||||
+++ localedata/locales/no_NO 2006/06/03 15:26:29
|
||||
@@ -0,0 +1,69 @@
|
||||
+escape_char /
|
||||
+comment_char %
|
||||
@ -98,3 +81,14 @@ Index: glibc-2.18.90/localedata/locales/no_NO
|
||||
+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
|
@ -1,267 +0,0 @@
|
||||
From 2eda7b462b415105f5a05c1323372d4e39d46439 Mon Sep 17 00:00:00 2001
|
||||
From: Mike FABIAN <mfabian@redhat.com>
|
||||
Date: Mon, 10 Aug 2015 15:58:12 +0200
|
||||
Subject: [PATCH] Add a C.UTF-8 locale
|
||||
|
||||
---
|
||||
localedata/SUPPORTED | 1 +
|
||||
localedata/locales/C | 238 +++++++++++++++++++++++++++++++++++++++++++++++++++
|
||||
2 files changed, 239 insertions(+)
|
||||
create mode 100644 localedata/locales/C
|
||||
|
||||
diff --git a/localedata/SUPPORTED b/localedata/SUPPORTED
|
||||
index 8ca023e..2a78391 100644
|
||||
--- a/localedata/SUPPORTED
|
||||
+++ b/localedata/SUPPORTED
|
||||
@@ -1,6 +1,7 @@
|
||||
# This file names the currently supported and somewhat tested locales.
|
||||
# If you have any additions please file a glibc bug report.
|
||||
SUPPORTED-LOCALES=\
|
||||
+C.UTF-8/UTF-8 \
|
||||
aa_DJ.UTF-8/UTF-8 \
|
||||
aa_DJ/ISO-8859-1 \
|
||||
aa_ER/UTF-8 \
|
||||
diff --git a/localedata/locales/C b/localedata/locales/C
|
||||
new file mode 100644
|
||||
index 0000000..fdf460e
|
||||
--- /dev/null
|
||||
+++ b/localedata/locales/C
|
||||
@@ -0,0 +1,238 @@
|
||||
+escape_char /
|
||||
+comment_char %
|
||||
+% Locale for C locale in UTF-8
|
||||
+
|
||||
+LC_IDENTIFICATION
|
||||
+title "C locale"
|
||||
+source ""
|
||||
+address ""
|
||||
+contact ""
|
||||
+email "mfabian@redhat.com"
|
||||
+tel ""
|
||||
+fax ""
|
||||
+language "C"
|
||||
+territory ""
|
||||
+revision "1.0"
|
||||
+date "2015-08-10"
|
||||
+%
|
||||
+category "i18n:2012";LC_IDENTIFICATION
|
||||
+category "i18n:2012";LC_CTYPE
|
||||
+category "i18n:2012";LC_COLLATE
|
||||
+category "i18n:2012";LC_TIME
|
||||
+category "i18n:2012";LC_NUMERIC
|
||||
+category "i18n:2012";LC_MONETARY
|
||||
+category "i18n:2012";LC_MESSAGES
|
||||
+category "i18n:2012";LC_PAPER
|
||||
+category "i18n:2012";LC_NAME
|
||||
+category "i18n:2012";LC_ADDRESS
|
||||
+category "i18n:2012";LC_TELEPHONE
|
||||
+category "i18n:2012";LC_MEASUREMENT
|
||||
+END LC_IDENTIFICATION
|
||||
+
|
||||
+LC_CTYPE
|
||||
+copy "i18n"
|
||||
+
|
||||
+translit_start
|
||||
+include "translit_combining";""
|
||||
+translit_end
|
||||
+
|
||||
+END LC_CTYPE
|
||||
+
|
||||
+LC_COLLATE
|
||||
+order_start forward
|
||||
+<U0000>
|
||||
+..
|
||||
+<UFFFF>
|
||||
+<U10000>
|
||||
+..
|
||||
+<U1FFFF>
|
||||
+<U20000>
|
||||
+..
|
||||
+<U2FFFF>
|
||||
+<UE0000>
|
||||
+..
|
||||
+<UEFFFF>
|
||||
+<UF0000>
|
||||
+..
|
||||
+<UFFFFF>
|
||||
+<U100000>
|
||||
+..
|
||||
+<U10FFFF>
|
||||
+UNDEFINED
|
||||
+order_end
|
||||
+END LC_COLLATE
|
||||
+
|
||||
+LC_MONETARY
|
||||
+% This is the 14652 i18n fdcc-set definition for
|
||||
+% the LC_MONETARY category
|
||||
+% (except for the int_curr_symbol and currency_symbol, they are empty in
|
||||
+% the 14652 i18n fdcc-set definition and also empty in
|
||||
+% glibc/locale/C-monetary.c. But localedef complains in that case).
|
||||
+%
|
||||
+% Using "USD" for int_curr_symbol. But maybe "XXX" would be better?
|
||||
+% XXX is "No currency" (https://en.wikipedia.org/wiki/ISO_4217)
|
||||
+int_curr_symbol "<U0055><U0053><U0044><U0020>"
|
||||
+% Using "$" for currency_symbol. But maybe <U00A4> would be better?
|
||||
+% U+00A4 is the "generic currency symbol"
|
||||
+% (https://en.wikipedia.org/wiki/Currency_sign_%28typography%29)
|
||||
+currency_symbol "<U0024>"
|
||||
+mon_decimal_point "<U002E>"
|
||||
+mon_thousands_sep ""
|
||||
+mon_grouping -1
|
||||
+positive_sign ""
|
||||
+negative_sign "<U002D>"
|
||||
+int_frac_digits -1
|
||||
+frac_digits -1
|
||||
+p_cs_precedes -1
|
||||
+int_p_sep_by_space -1
|
||||
+p_sep_by_space -1
|
||||
+n_cs_precedes -1
|
||||
+int_n_sep_by_space -1
|
||||
+n_sep_by_space -1
|
||||
+p_sign_posn -1
|
||||
+n_sign_posn -1
|
||||
+%
|
||||
+END LC_MONETARY
|
||||
+
|
||||
+LC_NUMERIC
|
||||
+% This is the POSIX Locale definition for
|
||||
+% the LC_NUMERIC category.
|
||||
+%
|
||||
+decimal_point "<U002E>"
|
||||
+thousands_sep ""
|
||||
+grouping -1
|
||||
+END LC_NUMERIC
|
||||
+
|
||||
+LC_TIME
|
||||
+% This is the POSIX Locale definition for
|
||||
+% the LC_TIME category.
|
||||
+%
|
||||
+% Abbreviated weekday names (%a)
|
||||
+abday "<U0053><U0075><U006E>";"<U004D><U006F><U006E>";/
|
||||
+ "<U0054><U0075><U0065>";"<U0057><U0065><U0064>";/
|
||||
+ "<U0054><U0068><U0075>";"<U0046><U0072><U0069>";/
|
||||
+ "<U0053><U0061><U0074>"
|
||||
+
|
||||
+% Full weekday names (%A)
|
||||
+day "<U0053><U0075><U006E><U0064><U0061><U0079>";/
|
||||
+ "<U004D><U006F><U006E><U0064><U0061><U0079>";/
|
||||
+ "<U0054><U0075><U0065><U0073><U0064><U0061><U0079>";/
|
||||
+ "<U0057><U0065><U0064><U006E><U0065><U0073><U0064><U0061><U0079>";/
|
||||
+ "<U0054><U0068><U0075><U0072><U0073><U0064><U0061><U0079>";/
|
||||
+ "<U0046><U0072><U0069><U0064><U0061><U0079>";/
|
||||
+ "<U0053><U0061><U0074><U0075><U0072><U0064><U0061><U0079>"
|
||||
+
|
||||
+% Abbreviated month names (%b)
|
||||
+abmon "<U004A><U0061><U006E>";"<U0046><U0065><U0062>";/
|
||||
+ "<U004D><U0061><U0072>";"<U0041><U0070><U0072>";/
|
||||
+ "<U004D><U0061><U0079>";"<U004A><U0075><U006E>";/
|
||||
+ "<U004A><U0075><U006C>";"<U0041><U0075><U0067>";/
|
||||
+ "<U0053><U0065><U0070>";"<U004F><U0063><U0074>";/
|
||||
+ "<U004E><U006F><U0076>";"<U0044><U0065><U0063>"
|
||||
+
|
||||
+% Full month names (%B)
|
||||
+mon "<U004A><U0061><U006E><U0075><U0061><U0072><U0079>";/
|
||||
+ "<U0046><U0065><U0062><U0072><U0075><U0061><U0072><U0079>";/
|
||||
+ "<U004D><U0061><U0072><U0063><U0068>";/
|
||||
+ "<U0041><U0070><U0072><U0069><U006C>";/
|
||||
+ "<U004D><U0061><U0079>";/
|
||||
+ "<U004A><U0075><U006E><U0065>";/
|
||||
+ "<U004A><U0075><U006C><U0079>";/
|
||||
+ "<U0041><U0075><U0067><U0075><U0073><U0074>";/
|
||||
+ "<U0053><U0065><U0070><U0074><U0065><U006D><U0062><U0065><U0072>";/
|
||||
+ "<U004F><U0063><U0074><U006F><U0062><U0065><U0072>";/
|
||||
+ "<U004E><U006F><U0076><U0065><U006D><U0062><U0065><U0072>";/
|
||||
+ "<U0044><U0065><U0063><U0065><U006D><U0062><U0065><U0072>"
|
||||
+
|
||||
+% Week description, consists of three fields:
|
||||
+% 1. Number of days in a week.
|
||||
+% 2. Gregorian date that is a first weekday (19971130 for Sunday, 19971201 for Monday).
|
||||
+% 3. The weekday number to be contained in the first week of the year.
|
||||
+%
|
||||
+% ISO 8601 conforming applications should use the values 7, 19971201 (a
|
||||
+% Monday), and 4 (Thursday), respectively.
|
||||
+week 7;19971201;4
|
||||
+first_weekday 1
|
||||
+first_workday 1
|
||||
+
|
||||
+% Appropriate date and time representation (%c)
|
||||
+% "%a %b %e %H:%M:%S %Y"
|
||||
+d_t_fmt "<U0025><U0061><U0020><U0025><U0062><U0020><U0025><U0065><U0020><U0025><U0048><U003A><U0025><U004D><U003A><U0025><U0053><U0020><U0025><U0059>"
|
||||
+
|
||||
+% Appropriate date representation (%x)
|
||||
+% "%m/%d/%y"
|
||||
+d_fmt "<U0025><U006D><U002F><U0025><U0064><U002F><U0025><U0079>"
|
||||
+
|
||||
+% Appropriate time representation (%X)
|
||||
+% "%H:%M:%S"
|
||||
+t_fmt "<U0025><U0048><U003A><U0025><U004D><U003A><U0025><U0053>"
|
||||
+
|
||||
+% Appropriate AM/PM time representation (%r)
|
||||
+% "%I:%M:%S %p"
|
||||
+t_fmt_ampm "<U0025><U0049><U003A><U0025><U004D><U003A><U0025><U0053><U0020><U0025><U0070>"
|
||||
+
|
||||
+% Equivalent of AM/PM (%p) "AM"/"PM"
|
||||
+%
|
||||
+am_pm "<U0041><U004D>";"<U0050><U004D>"
|
||||
+
|
||||
+% Appropriate date representation (date(1)) "%a %b %e %H:%M:%S %Z %Y"
|
||||
+date_fmt "<U0025><U0061><U0020><U0025><U0062><U0020><U0025><U0065><U0020><U0025><U0048><U003A><U0025><U004D><U003A><U0025><U0053><U0020><U0025><U005A><U0020><U0025><U0059>"
|
||||
+END LC_TIME
|
||||
+
|
||||
+LC_MESSAGES
|
||||
+% This is the POSIX Locale definition for
|
||||
+% the LC_NUMERIC category.
|
||||
+%
|
||||
+yesexpr "<U005E><U005B><U0079><U0059><U005D>"
|
||||
+noexpr "<U005E><U005B><U006E><U004E><U005D>"
|
||||
+yesstr "<U0059><U0065><U0073>"
|
||||
+nostr "<U004E><U006F>"
|
||||
+END LC_MESSAGES
|
||||
+
|
||||
+LC_PAPER
|
||||
+% This is the ISO/IEC 14652 "i18n" definition for
|
||||
+% the LC_PAPER category.
|
||||
+% (A4 paper, this is also used in the built in C/POSIX
|
||||
+% locale in glibc/locale/C-paper.c)
|
||||
+height 297
|
||||
+width 210
|
||||
+END LC_PAPER
|
||||
+
|
||||
+LC_NAME
|
||||
+% This is the ISO/IEC 14652 "i18n" definition for
|
||||
+% the LC_NAME category.
|
||||
+% "%p%t%g%t%m%t%f"
|
||||
+% (also used in the built in C/POSIX locale in glibc/locale/C-name.c)
|
||||
+name_fmt "<U0025><U0070><U0025><U0074><U0025><U0067><U0025><U0074>/
|
||||
+<U0025><U006D><U0025><U0074><U0025><U0066>"
|
||||
+END LC_NAME
|
||||
+
|
||||
+LC_ADDRESS
|
||||
+% This is the ISO/IEC 14652 "i18n" definition for
|
||||
+% the LC_ADDRESS category.
|
||||
+% "%a%N%f%N%d%N%b%N%s %h %e %r%N%C-%z %T%N%c%N"
|
||||
+% (also used in the built in C/POSIX locale in glibc/locale/C-address.c)
|
||||
+postal_fmt "<U0025><U0061><U0025><U004E><U0025><U0066><U0025><U004E>/
|
||||
+<U0025><U0064><U0025><U004E><U0025><U0062><U0025><U004E><U0025><U0073>/
|
||||
+<U0020><U0025><U0068><U0020><U0025><U0065><U0020><U0025><U0072><U0025>/
|
||||
+<U004E><U0025><U0043><U002D><U0025><U007A><U0020><U0025><U0054><U0025>/
|
||||
+<U004E><U0025><U0063><U0025><U004E>"
|
||||
+END LC_ADDRESS
|
||||
+
|
||||
+LC_TELEPHONE
|
||||
+% This is the ISO/IEC 14652 "i18n" definition for
|
||||
+% the LC_TELEPHONE category.
|
||||
+% "+%c %a %l"
|
||||
+tel_int_fmt "<U002B><U0025><U0063><U0020><U0025><U0061><U0020><U0025>/
|
||||
+<U006C>"
|
||||
+% (also used in the built in C/POSIX locale in glibc/locale/C-telephone.c)
|
||||
+END LC_TELEPHONE
|
||||
+
|
||||
+LC_MEASUREMENT
|
||||
+% This is the ISO/IEC 14652 "i18n" definition for
|
||||
+% the LC_MEASUREMENT category.
|
||||
+% (same as in the built in C/POSIX locale in glibc/locale/C-measurement.c)
|
||||
+%metric
|
||||
+measurement 1
|
||||
+END LC_MEASUREMENT
|
||||
+
|
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'. */
|
@ -1,12 +0,0 @@
|
||||
Index: glibc-2.23/intl/dcigettext.c
|
||||
===================================================================
|
||||
--- glibc-2.23.orig/intl/dcigettext.c
|
||||
+++ glibc-2.23/intl/dcigettext.c
|
||||
@@ -714,6 +714,7 @@ DCIGETTEXT (const char *domainname, cons
|
||||
/* If the current locale value is C (or POSIX) we don't load a
|
||||
domain. Return the MSGID. */
|
||||
if (strcmp (single_locale, "C") == 0
|
||||
+ || strcmp (single_locale, "C.UTF-8") == 0
|
||||
|| strcmp (single_locale, "POSIX") == 0)
|
||||
break;
|
||||
|
@ -1,25 +0,0 @@
|
||||
This fixes the problem of getent ahosts localhost returning 127.0.0.1
|
||||
_twice_ on systems that have no ipv6 interfaces up (hence are regarded
|
||||
as ipv4 only by the lookup code), but still have localhost entries for
|
||||
::1 and 127.0.0.1 in /etc/hosts (like most current systems).
|
||||
|
||||
Remapping ::1 to 127.0.0.1 is bogus when /etc/hosts is correct.
|
||||
bnc #684534, #606980
|
||||
http://sources.redhat.com/bugzilla/show_bug.cgi?id=4980
|
||||
|
||||
Index: glibc-2.17.90/nss/nss_files/files-hosts.c
|
||||
===================================================================
|
||||
--- glibc-2.17.90.orig/nss/nss_files/files-hosts.c
|
||||
+++ glibc-2.17.90/nss/nss_files/files-hosts.c
|
||||
@@ -68,11 +68,6 @@ LINE_PARSER
|
||||
{
|
||||
if (IN6_IS_ADDR_V4MAPPED (entdata->host_addr))
|
||||
memcpy (entdata->host_addr, entdata->host_addr + 12, INADDRSZ);
|
||||
- else if (IN6_IS_ADDR_LOOPBACK (entdata->host_addr))
|
||||
- {
|
||||
- in_addr_t localhost = htonl (INADDR_LOOPBACK);
|
||||
- memcpy (entdata->host_addr, &localhost, sizeof (localhost));
|
||||
- }
|
||||
else
|
||||
/* Illegal address: ignore line. */
|
||||
return 0;
|
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
|
@ -1,47 +0,0 @@
|
||||
Index: glibc-2.21/nscd/nscd_stat.c
|
||||
===================================================================
|
||||
--- glibc-2.21.orig/nscd/nscd_stat.c
|
||||
+++ glibc-2.21/nscd/nscd_stat.c
|
||||
@@ -36,8 +36,13 @@
|
||||
#endif /* HAVE_SELINUX */
|
||||
|
||||
|
||||
-/* We use this to make sure the receiver is the same. */
|
||||
+/* We use this to make sure the receiver is the same. Capture mtime
|
||||
+ of this file if possible. */
|
||||
+#ifdef __TIMESTAMP__
|
||||
+static const char compilation[21];
|
||||
+#else
|
||||
static const char compilation[21] = __DATE__ " " __TIME__;
|
||||
+#endif
|
||||
|
||||
/* Statistic data for one database. */
|
||||
struct dbstat
|
||||
@@ -96,7 +101,12 @@ send_stats (int fd, struct database_dyn
|
||||
|
||||
memset (&data, 0, sizeof (data));
|
||||
|
||||
+#ifdef __TIMESTAMP__
|
||||
+ /* Skip day of the week. */
|
||||
+ memcpy (data.version, __TIMESTAMP__ + 4, sizeof (compilation));
|
||||
+#else
|
||||
memcpy (data.version, compilation, sizeof (compilation));
|
||||
+#endif
|
||||
data.debug_level = debug_level;
|
||||
data.runtime = time (NULL) - start_time;
|
||||
data.client_queued = client_queued;
|
||||
@@ -196,7 +206,13 @@ receive_print_stats (void)
|
||||
|
||||
/* Read as much data as we expect. */
|
||||
if (TEMP_FAILURE_RETRY (read (fd, &data, sizeof (data))) != sizeof (data)
|
||||
- || (memcmp (data.version, compilation, sizeof (compilation)) != 0
|
||||
+ || (
|
||||
+#ifdef __TIMESTAMP__
|
||||
+ /* Skip day of the week. */
|
||||
+ memcmp (data.version, __TIMESTAMP__ + 4, sizeof (compilation)) != 0
|
||||
+#else
|
||||
+ memcmp (data.version, compilation, sizeof (compilation)) != 0
|
||||
+#endif
|
||||
/* Yes, this is an assignment! */
|
||||
&& (errno = EINVAL)))
|
||||
{
|
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
|
@ -1,19 +0,0 @@
|
||||
Index: glibc-2.17.90/nscd/nscd.conf
|
||||
===================================================================
|
||||
--- glibc-2.17.90.orig/nscd/nscd.conf
|
||||
+++ glibc-2.17.90/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
|
||||
|
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. */
|
@ -1,19 +0,0 @@
|
||||
Index: glibc-2.20/resolv/res_hconf.c
|
||||
===================================================================
|
||||
--- glibc-2.20.orig/resolv/res_hconf.c
|
||||
+++ glibc-2.20/resolv/res_hconf.c
|
||||
@@ -240,9 +240,12 @@ parse_line (const char *fname, int line_
|
||||
if (c == NULL)
|
||||
{
|
||||
char *buf;
|
||||
+ const char *hint = "";
|
||||
|
||||
- if (__asprintf (&buf, _("%s: line %d: bad command `%s'\n"),
|
||||
- fname, line_num, start) < 0)
|
||||
+ if (__strncasecmp (start, "mdns", len) == 0 && len == 4)
|
||||
+ hint = "Multicast DNS is now configured in /etc/nsswitch.conf instead.\nSee also the package and manpage of nss-mdns.\n";
|
||||
+ if (__asprintf (&buf, _("%s: line %d: bad command `%s'\n%s"),
|
||||
+ fname, line_num, start, hint) < 0)
|
||||
return;
|
||||
|
||||
__fxprintf (NULL, "%s", buf);
|
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 */
|
File diff suppressed because it is too large
Load Diff
1409
glibc-testsuite.spec
1409
glibc-testsuite.spec
File diff suppressed because it is too large
Load Diff
@ -1,6 +0,0 @@
|
||||
%define flavor testsuite
|
||||
|
||||
Name: glibc-testsuite
|
||||
Summary: Testsuite results from the GNU C Library
|
||||
License: LGPL-2.1+
|
||||
Group: Development/Libraries/C and C++
|
8033
glibc-utils.changes
8033
glibc-utils.changes
File diff suppressed because it is too large
Load Diff
1409
glibc-utils.spec
1409
glibc-utils.spec
File diff suppressed because it is too large
Load Diff
@ -1,6 +0,0 @@
|
||||
%define flavor utils
|
||||
|
||||
Name: glibc-utils
|
||||
Summary: Development utilities from the GNU C Library
|
||||
License: LGPL-2.1+
|
||||
Group: Development/Libraries/C and C++
|
@ -1,18 +1,27 @@
|
||||
Index: glibc-2.17.90/csu/version.c
|
||||
===================================================================
|
||||
--- glibc-2.17.90.orig/csu/version.c
|
||||
+++ glibc-2.17.90/csu/version.c
|
||||
@@ -24,11 +24,12 @@ static const char __libc_release[] = REL
|
||||
--- 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 "PKGVERSION RELEASE" release version "VERSION", by Roland McGrath et al.\n\
|
||||
+"GNU C Library "PKGVERSION RELEASE" release version "VERSION" (git "GITID"), by Roland McGrath et al.\n\
|
||||
Copyright (C) 2017 Free Software Foundation, Inc.\n\
|
||||
-"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 LIBC_ABIS_STRING
|
||||
#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";
|
||||
|
||||
|
||||
|
3211
glibc.changes
3211
glibc.changes
File diff suppressed because it is too large
Load Diff
883
glibc.keyring
883
glibc.keyring
@ -1,883 +0,0 @@
|
||||
|
||||
-----BEGIN PGP PUBLIC KEY BLOCK-----
|
||||
Version: GnuPG v2
|
||||
|
||||
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
|
||||
=oOhV
|
||||
-----END PGP PUBLIC KEY BLOCK-----
|
||||
|
||||
-----BEGIN PGP PUBLIC KEY BLOCK-----
|
||||
Version: GnuPG v1.0.7 (NetBSD)
|
||||
|
||||
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
|
||||
=SLj7
|
||||
-----END PGP PUBLIC KEY BLOCK-----
|
||||
|
||||
-----BEGIN PGP PUBLIC KEY BLOCK-----
|
||||
Version: GnuPG v1.4.10 (GNU/Linux)
|
||||
|
||||
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
|
||||
WtkGoi8buNcby4U=
|
||||
=AL6o
|
||||
-----END PGP PUBLIC KEY BLOCK-----
|
||||
|
||||
|
||||
|
||||
-----BEGIN PGP PUBLIC KEY BLOCK-----
|
||||
Version: PGP Key Server 0.9.6
|
||||
|
||||
mQGiBD0n9DgRBAClGLChFufOs6wsKPwYvbjFzS1LNNZeF/sf+d2KUcf+iq4xGa0q
|
||||
Zxn7Yx1ecETcJqLdDm3vUUO/TaN8jHr9EDOsYCWT3Bmaac+x1GsXFi43ENeEhoOQ
|
||||
zLagOW16ABsFi1RUQv5v1SxZcKQWbE9ub/0dBNKGEf01FxDgGYQE6sDWIwCg6cRL
|
||||
2XfP1QpHdPNN/vB/ZT61pG8EAJr/ajaWDYjkB6Ie1kmO85HQbMQBg5EktByfurWK
|
||||
t03KlKUD98r/ZzpEXhkQxbu3/1AuIHS9mp4I5btkntw+sKooO9V5ZlZyGuxN+PD0
|
||||
m/q7m/FSKzZwSblPJlSVMAPFh2G1PEmJg9gEgm3lb+EMqUKBtsfptX9X5CvRVtov
|
||||
c82UA/wO8x+18SyTefCEjhc+ndAvdSSZo4sX99mxNeFn9OYMPIWP3hpM9N17mykF
|
||||
Ap9vGC5aO3+5kB89hPLX2Hh5GnKIz4CWSHSTXVP/cABoQxMWXwX1LI/NFmMgMHrT
|
||||
zrIznZTH/1c240AO7seZviGM0YTJgPDDv5xTzNAtX6SRc6GpQ7QbSWFuIFdpZW5h
|
||||
bmQgPGlhbndAaWVlZS5vcmc+iFkEExECABkFAj0n9DgECwcDAgMVAgMDFgIBAh4B
|
||||
AheAAAoJEFg5UlP4KennSocAn1BKjQiZmQyuqW9pN6QdTuukz7tnAJ9yVVTvvIZn
|
||||
KmtftSybWcQjuDC9krRFSWFuIFdpZW5hbmQgKGh0dHA6Ly93d3cuZ2VsYXRvLnVu
|
||||
c3cuZWR1LmF1KSA8aWFud0BnZWxhdG8udW5zdy5lZHUuYXU+iFwEExECABwFAkAa
|
||||
ZUMCGwMECwcDAgMVAgMDFgIBAh4BAheAAAoJEFg5UlP4Kenn4uEAnRt3Uc55MPKU
|
||||
0QyIQQ4cAy0Uo/DuAJ9c/58/Nis1DkYxksgNn9mDe6c1H7kBDQQ9J/Q8EAQAyINd
|
||||
4ejyhHU3H5j30/BbWSIkMrjPzNMoqZH3lqAI2D/h8XFgxPZYqWrGjUqi/ioOUkTG
|
||||
Wh0HdlJbqFAfukpZOpKNOaJL/dBrjmmPv41eIpWehJrasQqtA6HVs3fDhc5oPusg
|
||||
X94AGs1uhKG42rcCIQm/eOa0FS33eXpVM3BOvucABA0EAL41mcOetCk1Ii3NwNTS
|
||||
qGKOyHLLyDTB2NdelSdOsNphoVvdzf1FALlvLwEAMWRAQdY2wdzo0I/3NChmPn/u
|
||||
6ohRBOpLZn5AHYn/AkthQI6YRx+WZu6BvMVJOqcFZh1ePmWrX7S2TQacyhbUOQFM
|
||||
ZthBvjkZUZCOl+wjwbn3k4bpiEYEGBECAAYFAj0n9DwACgkQWDlSU/gp6efSHgCc
|
||||
DxXIOrZyOO3jtbtsTYR/VrsdK9sAn0lrUm/jZKWyvK6V1CCA3TwXyvLQ
|
||||
=dSXY
|
||||
-----END PGP PUBLIC KEY BLOCK-----
|
||||
|
||||
-----BEGIN PGP PUBLIC KEY BLOCK-----
|
||||
|
||||
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
|
||||
TKN3JdfTyacfNU4=
|
||||
=IcJn
|
||||
-----END PGP PUBLIC KEY BLOCK-----
|
||||
-----BEGIN PGP PUBLIC KEY BLOCK-----
|
||||
Version: GnuPG v1
|
||||
|
||||
mQINBFef5BoBEACvJ15QMMZh4stKHbz0rs78XsOdxuug37dumTx6ngrDCwZ61k7n
|
||||
HQ+uxLuoQvLSc6YJGBEfiNFbs1hvhRFNR7xJbzRYmin7kJZZ/06fH2cgTkQhN0mR
|
||||
BP8KsKKT+7SvvBL785ZfAhArWf5m5Tl0CktZ8yoG8g9dM4SgdvdSdzZUaWBVHc6T
|
||||
jdAb9YEQ1/jpyfHsQp+PWLuQZI8nZUm+I3IBDLkbbuJVQklKzpT1b8yxVSsHCyIP
|
||||
FRqDDUjPL5G4WnUVy529OzfrciBvHdxGsYYDV8FX7fv6V/S3eL6qmZbObivIbLD2
|
||||
NbeDqw6vNpr+aehEwgwNbMVuVfH1PVHJV8Qkgxg4PqPgQC7GbIhxxYroGbLJCQ41
|
||||
j25M+oqCO/XW/FUu/9x0vY5w0RsZFhlmSP5lBDcaiy3SUgp3MSTePGuxpPlLVMeP
|
||||
xKvabSS7EErLKlrAEmDgnUYYdPqGCefA+5N9Rn2JPfP7SoQEp2pHhEyM6Xg9x7TJ
|
||||
+JNuDowQCgwussmeDt2ZUeMl3s1f6/XePfTd3l8c8Yn5Fc8reRa28dFANU6oXiZf
|
||||
7/h3iQXPg81BsLMJK3aA/nyajRrNxL8dHIx7BjKX0/gxpOozlUHZHl73KhAvrBRa
|
||||
qLrr2tIPLkKrf3d7wdz4llg4NAGIU4ERdTTne1QAwS6x2tNa9GO9tXGPawARAQAB
|
||||
tClDYXJsb3MgTydEb25lbGwgPGNhcmxvc0BzeXN0ZW1oYWx0ZWQub3JnPokCPgQT
|
||||
AQIAKAUCV5/kGgIbAwUJB4TOAAYLCQgHAwIGFQgCCQoLBBYCAwECHgECF4AACgkQ
|
||||
FnkrTqJTQPgwKg//fAz8VIcDBqQf+lbSqkeMw3H9d8xgtAn+EoxDYckLtwrCT2oE
|
||||
h/v18DN2OvvS0SP73EuvyuGT/gm3oGCPrtHJrQaAYelcBideb2YFqJbzGKdkHuNO
|
||||
pAyfg9fDi3i5LtobPGzSAQXMTz+a2UktRL1A1RO0ueObtnXtA3SwATbm9+mgAAY6
|
||||
iA2ZcZuWhsg5/RmUjZM/4tcg+TMUMl/9EAxmBGw0sBWXsnduf2rxG4YToXStZv4d
|
||||
9bPT4iHR9zVV7AxPXGOwo/EthxDFTPVaZwoDk9IHebPGT44aNmgo0+QOjhEJa52i
|
||||
rk3opnxEdJ6o9V+ZkpVzfX6Dqmfvkn9GBV6HyWGDhkKKoiH32Sx5OIsgHd6BdbfB
|
||||
dZA/OI6JMDyEqH/azLj0fUCEOHUQ8YHu92i2rt5jTHe1g/erE0I8fQngd1r4l4lE
|
||||
dh+n1UqHPlK+BSYe/sIOBJCKohFOxu5SehY/yFfDd42pS9FwNlwk7tO4Pc0jXaE4
|
||||
dsI0gKGbYsRpyrYIf+pCxXeJbYjlcWlbwiVO8mZkjS8qOlVh/drO8TUAj6KAKI9j
|
||||
cj2ra50PUHclCCxbzZYRDUP4AogBGwOv6uciugArFnP+5r1BcO/xcjqyurJASO7N
|
||||
RrrHohkEj7e6cKisubyZP2XcpsxemVQVT2DsXA9qQHijZ+25v8iZNxG2Zei0KkNh
|
||||
cmxvcyBPJ0RvbmVsbCAoV29yaykgPGNhcmxvc0ByZWRoYXQuY29tPokCPgQTAQIA
|
||||
KAUCV5/k8AIbAwUJB4TOAAYLCQgHAwIGFQgCCQoLBBYCAwECHgECF4AACgkQFnkr
|
||||
TqJTQPje5Q/9EvF2UVTzEzuwI/muR5K07kBRoGe0PZzYQHSc0ERCNOwqKIMFH0YR
|
||||
En14exy0ZP35zaHNxF5xETPwtZwizZE6kso5nGAJQ7j4AkPN7JwVcnZzHWZX3O7d
|
||||
q7jQHOCdLi0N9mrlUkmX0ybP52JjiIJv3/ozx1xJstrUImU9ceUD9Bt26R8ehxQF
|
||||
Moy1QMR4jvFBmgbgFhk+CeCSkxIQl2uZE9hC16qanZdHVWX1YAMr7UgsmFK0P6Pn
|
||||
AYGKTm3MC60iuP84YE+8lE0tCNCWQEGMTG3Ph28bY3ppPQUxVuU96zplapy/G9ms
|
||||
YYTCUIqnvqNngwAC2COXQWEFrqrIBCsphnErNcvyuDS4HubbJEpU93thOQnhLpoM
|
||||
ClVzoa+WSjUWsTNZS+uhrQ/j+wqfLYtWS/x3z8UN+cf0Ysrgq3LKT9xmJz1N52jp
|
||||
v/RieX1Obo23HtG2hGNUyTQ2izuo1NzgGlOAiXhCqAUXKYVk0ZSsPr5dbVwImB8+
|
||||
LDOU0+RxhTxdCtPIj+ylBgfCV7Blejve4vUjJV2jtcWcpy/C9E0KHAExjI0lkJ1p
|
||||
fJ/YtyDrzKUypKYeslcUNmt6v1FiHPxoija20jpGew+eUrUpzjOxf4hOXG1xP9DG
|
||||
bi1FKMHkeAr9DqZJxUnWmVe7UJGdl1JM7V9KQInY4T3RSI0j5LCJUS20LENhcmxv
|
||||
cyBPJ0RvbmVsbCAoV29yaykgPGNvZG9uZWxsQHJlZGhhdC5jb20+iQI+BBMBAgAo
|
||||
BQJXn+UFAhsDBQkHhM4ABgsJCAcDAgYVCAIJCgsEFgIDAQIeAQIXgAAKCRAWeStO
|
||||
olNA+KwfD/4991sfip58HXHSHimOZPgJQ3mNxJqNi/yBqS0UMlBAOXYGn0wa4xfJ
|
||||
e+DFhErvqt5kag/N3LgD2I+qp7VUrC/VaM/hZaHa2CqPfeD/1BFXwhg2D1N1qbMI
|
||||
+kb9fAGTRq4Aewb2xcJMhh4VNyjlKTJ9Z3k8BHQ82QuX/lNOBdhesSOkf7nM2SZ8
|
||||
3+VP/FYzq/Fv3amEYXx2XLbxC3xG6UwmhzVKF5SZsxNKTMXr6IBZL5T9MbKGKX83
|
||||
O37yMfUKcKet+/hNHkzBh+7IAkHm4O8zUwTyM9Kh17j4KPiZ6fLEJajjQVa8CIp8
|
||||
rvfD0rxnrDEeUbQbUECn8b7up3btCBpoApiD/wA1gj2MPo1hNwvJlUIxtodZZtBW
|
||||
zr2iaLBOqcWUTJOZCce1Si0stHWQoz+jHCCU2hQOfS6oxqnu0Nz+zuF/DjuCyUgI
|
||||
eLtSBBohkaMPmhq6jN4isSX8EVo4IUH7v+SQUsh6NnbLqveRR5aAuDRNqhTCvNxU
|
||||
mqOkWGFY4QbNoYjaCACU6MiJgF5owxbdvg99RLBgYjldEsUQacuN8ANPGkV9bdmB
|
||||
Zba+WUO0Ld+lsqZJekdM9xUqsBHje7ehbsurtmrsG2g42PYBs8s7OojdaJJV9xtB
|
||||
dzfkky/qkr3rG/VTlCfDCmvLb2dAIl3VvILTOWG0Bvcou1w0EW+c67kCDQRXn+Qa
|
||||
ARAAq9MmR75BKMBObPXUAsqV79JISlTAvlA6m3fGiYQBNxgBqbDDQcAN8ZMp1RH5
|
||||
paA4re+q7pKJyvXNu5mMcKzYZoiBGiqHUcpWAKZoliOLO+J0eW6qujHqqpz08bRt
|
||||
ZvR/nEZDD5fbP5sSKfO/ipp6nUbU65iC8bj06kdOBkyImr2dwcLGQPZUQkqAzLAY
|
||||
ngCB2X41ZWfRPvDon7/lCYEgTyGHg3Olh+vHNYIn2JneyQbjMEYHhgRpxzf6h4Sj
|
||||
JtzXSHq2qFA2u0iJJEkf5JQm86I0fygxc8sCN8VXLd3gE6DLEmETRSGZAhAcwnEI
|
||||
HDzV9APXR3R1yu7SsAgSV0Sm3ZReo6vSs4AsOJ68wX/YEpCI4Ds9swLf93C40cOU
|
||||
KVDN2OKXw7tSwiB/cgwVohtChQS+OWB/lyb1r3iBYAFx8jXFp0Cr29wgHm/718zv
|
||||
XEOB0QudlOFN3wsHKsb30TFUxwbY9lhcmWVUNANmpgDU+MP17TIernCEmLcGtmDA
|
||||
Novm9hkRvUQzIf4FAs7dnD8JqPxbqaigYeA295FDWD0Vifc1SntS9LbZm38pbikK
|
||||
luCRBl5/G6ko7pBU3DCCBXjhxNDfvPmicZs08Pz7aTaaYLQ4S0YGSP5Uff21GT64
|
||||
s5y5eUY1JWTfE7LGeLQ2T0zQa9O88qhqH2CS8v/4Ch83/fUAEQEAAYkCJQQYAQIA
|
||||
DwUCV5/kGgIbDAUJB4TOAAAKCRAWeStOolNA+LtBD/9GOTDryHYz/WEZLAPkvklH
|
||||
cL65Ix7fzlvSLduxXklTnj8IugSbbvN9s65qs2kJxFe6GKDj/u2ULNaqzODmddQY
|
||||
yr7gMiTfebeG+LdZcdGXpXyI/BdqEioomzvmKAEcCwdygua+NrfZuefESbHtQHyJ
|
||||
38ikTaAHfzfW+0OFR6N+Ea6AVv8OnnUqvrqo4uyMIGQ8WDP01aQedWhoE0OIuuy8
|
||||
CbWuWdkrrnPDi53afYzmthBS+Kr3K3eY/zYjt3BDWMxv1sxgOZqUybydGjwqoo+/
|
||||
yacFarcsWAnBHaHhOGAc2dVWWCKfSim0iglxf56sAmrl2vtf5wdMRJELTl+/3n1y
|
||||
1KTLcFVgzHn1FI2JLzjwJ6jA+2o473YZC9CL/erRR6dj6c/VNKWdewnGe/UncUqq
|
||||
iZ+FwN8q6bny+8qPlA1lq+HyQNc79vfjAwzi2wuOi8JYe+CwROC+3ZCMDTFdm5mo
|
||||
VaohIGwYcYS9KGOSFAD4YD3dx7mhse9cnMB/+VUX6Wzj4MRQ66UKECLqts3oblAI
|
||||
ZGu5tNcM2EYYV4UlqFK5Y5kXhV6bWsG0WQ8GycVe175YKjaKLN9PJMMxXJG+F9lu
|
||||
tmATw6qr79EWeqLgPNQnKWojra9N7xcGRCULdhSOw0mQ5pryIMQheWqdPUhKURmX
|
||||
c8HFfqRDMIQCPexAXgsSKg==
|
||||
=d45e
|
||||
-----END PGP PUBLIC KEY BLOCK-----
|
||||
-----BEGIN PGP PUBLIC KEY BLOCK-----
|
||||
Version: GnuPG v1.4.5 (GNU/Linux)
|
||||
|
||||
mQENBE/Xfl8BCACfn5680mdbi33bAoPmsuOiKguiQ8/q/mMhk6GjuM28F/ahp72P
|
||||
baGZP2hv6D/DTYeJVlbZPeACkbFQe758AOhoEs8pqDq4JMC4jzNPUSGYH7joaZjc
|
||||
mMCUUqzG6qDfajW4M2iRI+US/Dozd++shQ18kKJKNY4ZrFEFXUsiHLDHQk/rmrj3
|
||||
lAcrcf7zLwJSKKXLmAvz+vu+i9F5/Xt7TSasszrG6AqqSl3aZn5RGmU4DSiAFh3x
|
||||
U4t21t6KbiQ4gUS0VkbyqrDVhUs64H/fzcFOVVT4dq51nQAAb5mxTFCpyAMuJDQ0
|
||||
lh32iKNWM5iKDk1Wdmg2EsnJho7EAbqcEOI7ABEBAAG0IUthcmwgQmVycnkgPGth
|
||||
cmxAZnJlZWZyaWVuZHMub3JnPokBOAQTAQIAIgUCT9d+XwIbAwYLCQgHAwIGFQgC
|
||||
CQoLBBYCAwECHgECF4AACgkQBxZ0ijDRVa2xQgf/T1SWK9wbMn44uYIqyPzSAQ7E
|
||||
m6Xqno07CMJH8DD5T7CidxfH3V1DX7OCRqkljc34QzIdZ0HR5HUSpvfwBYHTXzgH
|
||||
yiZPVysIb2mx6X//fO16jxi5wj2+mkslGXwrgwzop5InFu6Zl/Q4HDTItthaCYAR
|
||||
WZvImf0L/1vySWegonoZp/9eUeRld+6Bc/z5kvt6K9hHZt1G11c3+3zlrFydJHL/
|
||||
vuXPLXr8w2nkuX+VsXKIT4VgjVn4LvDF55BphfGteaYqSofYPczynoEh1QtU2Qyh
|
||||
4IXt8lgaEPQADa7wUL7HqhzyJMxHTHG/WLzBRJMfNrr2ow6KiCOfIuBkEa7FnohG
|
||||
BBARAgAGBQJP14N2AAoJEJ3rRsDWefbPKfIAmgONqRipIzLSUC/FrjSZyV4CO7xu
|
||||
AJ9qaqLVib0v9xMWU+8UpHcF5jwbBbkBDQRP135fAQgA+Uhd1N4R9nqhfDLQXuKD
|
||||
IhTals5RMhOXy+fG7uDUSaV9HD/XY4JHfli0r5r/WcG0MGm67T3j0p6YhLCqhkai
|
||||
x+cZpUwtokw39l5ztT2Smi//WW7wZPIAe4XLUV1TvpoVeoDeoGY9onAdJMEBw+oq
|
||||
dMoPVyIRmjw7ID3uF2DfU3QnTSYt64AbsHSPp7imeD4gW3aY7r4OmI1vqz4y5pQm
|
||||
cItwc8rudS9s3uiiGCia34M0yRM64ewwAY3eTAK9fA4FOamVgt8YvNdCZBXvcHAh
|
||||
amR2BUrt+01+8iqcuX6VEn39srHEutGg8GXcC+7tMncUmlWPUfpy0vTdor/HkxpX
|
||||
lQARAQABiQEfBBgBAgAJBQJP135fAhsMAAoJEAcWdIow0VWt9RAH/i+Kxkr/R2xJ
|
||||
WcOvWvn6NVLUo0cChc0SaMjuWAk4KlqOQJT0i5xTkMWVQ8PQonUVkzloLkCqRs61
|
||||
9rLoB3mNFzGqP5Jm3dSoqvTFCTMGeQEsX0e6kjnsydgtgkeYNT6yO5hrakfzlKvG
|
||||
i1KJ7Kwh+8zQtubHQI8/A1IlNyp9WJrWP2Xj1rS3f7SN3QillOhoh8HNkpN4MHZ3
|
||||
7moelhQ3XJ+UOUTHv+bNZHVilofbrX5S5LXcPeE/p+DaNNp+oGwPJppGAzKWKQy9
|
||||
hA8rKE+HnaSHr/0k0i9Uxmf2c4nLCCeZuxz+TUUZq06Ohco7ullX6MshUhCX+21P
|
||||
KLEPtgs1HkI=
|
||||
=5dqZ
|
||||
-----END PGP PUBLIC KEY BLOCK-----
|
||||
|
||||
-----BEGIN PGP PUBLIC KEY BLOCK-----
|
||||
Version: GnuPG v1.2.2 (GNU/Linux)
|
||||
|
||||
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
|
||||
N7JGzLVNo+A=
|
||||
=fZUN
|
||||
-----END PGP PUBLIC KEY BLOCK-----
|
||||
|
||||
|
||||
-----BEGIN PGP PUBLIC KEY BLOCK-----
|
||||
Version: GnuPG v1.4.10 (GNU/Linux)
|
||||
Comment: Public key at http://people.redhat.com/eblake/eblake.gpg
|
||||
|
||||
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
|
||||
=FC1k
|
||||
-----END PGP PUBLIC KEY BLOCK-----
|
||||
|
@ -1,20 +1 @@
|
||||
# glibc-profile is a devel package
|
||||
addFilter("glibc-profile.* devel-file-in-non-devel-package.*/usr/lib.*/lib.*_p.a")
|
||||
# glibc is not a devel package
|
||||
addFilter("glibc\\..* non-devel-file-in-devel-package")
|
||||
# getent deliberately uses gethostbyname
|
||||
addFilter("binary-or-shlib-calls-gethostbyname /usr/bin/getent")
|
||||
# We do need to keep the symtab (see comments in glibc.spec), so this is intented:
|
||||
addFilter("unstripped-binary-or-object")
|
||||
# ld.so is special:
|
||||
addFilter("shared-lib-without-dependency-information /lib.*/ld-2.*\\.so")
|
||||
# Handled via glibc_post_upgrade:
|
||||
addFilter("postin-without-ldconfig")
|
||||
# We will not rename glibc to follow the shlib policy
|
||||
addFilter("shlib-policy-missing-suffix")
|
||||
# libpthread and libnsl call exit - this is fine
|
||||
addFilter("shared-lib-calls-exit")
|
||||
# The man-pages package contains a number of man pages for programs that come
|
||||
# with glibc, therefore do not warn about them
|
||||
addFilter("glibc.*no-manual-page-for-binary (getent|iconv|ldd|ldconfig|locale)")
|
||||
addFilter("nscd.*no-manual-page-for-binary nscd")
|
||||
addFilter(".*glibc-profile.* devel-file-in-non-devel-package.*/usr/lib.*/lib.*_p.a")
|
||||
|
4035
glibc.spec
4035
glibc.spec
File diff suppressed because it is too large
Load Diff
@ -34,9 +34,6 @@ main (void)
|
||||
char initpath[256];
|
||||
struct stat root, init_root;
|
||||
|
||||
/* First, get rid of platform-optimized libraries. We remove any we have
|
||||
ever built, since otherwise we might end up using some old leftover
|
||||
libraries when new ones aren't installed in their place anymore. */
|
||||
#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",
|
||||
@ -135,8 +132,8 @@ main (void)
|
||||
timeout and leave /etc/initrunlvl. */
|
||||
if (readlink ("/proc/1/exe", initpath, 256) <= 0 ||
|
||||
readlink ("/proc/1/root", initpath, 256) <= 0 ||
|
||||
access ("/.buildenv", F_OK) == 0 || /* XEN build */
|
||||
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);
|
||||
|
@ -1,330 +0,0 @@
|
||||
Fix iconv buffer handling with IGNORE error handler (bug #18830)
|
||||
|
||||
[BZ #18830]
|
||||
* iconv/skeleton.c (FUNCTION_NAME): Use RESET_INPUT_BUFFER only if
|
||||
no irreversible characters occurred.
|
||||
* iconv/gconv_simple.c (internal_ucs4_loop)
|
||||
(internal_ucs4_loop_unaligned, internal_ucs4_loop_single)
|
||||
(ucs4_internal_loop, ucs4_internal_loop_unaligned)
|
||||
(ucs4_internal_loop_single, internal_ucs4le_loop)
|
||||
(internal_ucs4le_loop_unaligned, internal_ucs4le_loop_single)
|
||||
(ucs4le_internal_loop, ucs4le_internal_loop_unaligned)
|
||||
(ucs4le_internal_loop_single): Add const to outend.
|
||||
* iconv/Makefile (tests): Add tst-iconv7.
|
||||
* iconv/tst-iconv7.c: New file.
|
||||
|
||||
Index: glibc-2.22/iconv/Makefile
|
||||
===================================================================
|
||||
--- glibc-2.22.orig/iconv/Makefile
|
||||
+++ glibc-2.22/iconv/Makefile
|
||||
@@ -42,7 +42,8 @@ CFLAGS-charmap.c = -DCHARMAP_PATH='"$(i1
|
||||
CFLAGS-linereader.c = -DNO_TRANSLITERATION
|
||||
CFLAGS-simple-hash.c = -I../locale
|
||||
|
||||
-tests = tst-iconv1 tst-iconv2 tst-iconv3 tst-iconv4 tst-iconv5 tst-iconv6
|
||||
+tests = tst-iconv1 tst-iconv2 tst-iconv3 tst-iconv4 tst-iconv5 tst-iconv6 \
|
||||
+ tst-iconv7
|
||||
|
||||
others = iconv_prog iconvconfig
|
||||
install-others-programs = $(inst_bindir)/iconv
|
||||
Index: glibc-2.22/iconv/gconv_simple.c
|
||||
===================================================================
|
||||
--- glibc-2.22.orig/iconv/gconv_simple.c
|
||||
+++ glibc-2.22/iconv/gconv_simple.c
|
||||
@@ -76,7 +76,7 @@ __attribute ((always_inline))
|
||||
internal_ucs4_loop (struct __gconv_step *step,
|
||||
struct __gconv_step_data *step_data,
|
||||
const unsigned char **inptrp, const unsigned char *inend,
|
||||
- unsigned char **outptrp, unsigned char *outend,
|
||||
+ unsigned char **outptrp, const unsigned char *outend,
|
||||
size_t *irreversible)
|
||||
{
|
||||
const unsigned char *inptr = *inptrp;
|
||||
@@ -120,7 +120,8 @@ internal_ucs4_loop_unaligned (struct __g
|
||||
struct __gconv_step_data *step_data,
|
||||
const unsigned char **inptrp,
|
||||
const unsigned char *inend,
|
||||
- unsigned char **outptrp, unsigned char *outend,
|
||||
+ unsigned char **outptrp,
|
||||
+ const unsigned char *outend,
|
||||
size_t *irreversible)
|
||||
{
|
||||
const unsigned char *inptr = *inptrp;
|
||||
@@ -169,7 +170,8 @@ internal_ucs4_loop_single (struct __gcon
|
||||
struct __gconv_step_data *step_data,
|
||||
const unsigned char **inptrp,
|
||||
const unsigned char *inend,
|
||||
- unsigned char **outptrp, unsigned char *outend,
|
||||
+ unsigned char **outptrp,
|
||||
+ const unsigned char *outend,
|
||||
size_t *irreversible)
|
||||
{
|
||||
mbstate_t *state = step_data->__statep;
|
||||
@@ -231,7 +233,7 @@ __attribute ((always_inline))
|
||||
ucs4_internal_loop (struct __gconv_step *step,
|
||||
struct __gconv_step_data *step_data,
|
||||
const unsigned char **inptrp, const unsigned char *inend,
|
||||
- unsigned char **outptrp, unsigned char *outend,
|
||||
+ unsigned char **outptrp, const unsigned char *outend,
|
||||
size_t *irreversible)
|
||||
{
|
||||
int flags = step_data->__flags;
|
||||
@@ -298,7 +300,8 @@ ucs4_internal_loop_unaligned (struct __g
|
||||
struct __gconv_step_data *step_data,
|
||||
const unsigned char **inptrp,
|
||||
const unsigned char *inend,
|
||||
- unsigned char **outptrp, unsigned char *outend,
|
||||
+ unsigned char **outptrp,
|
||||
+ const unsigned char *outend,
|
||||
size_t *irreversible)
|
||||
{
|
||||
int flags = step_data->__flags;
|
||||
@@ -368,7 +371,8 @@ ucs4_internal_loop_single (struct __gcon
|
||||
struct __gconv_step_data *step_data,
|
||||
const unsigned char **inptrp,
|
||||
const unsigned char *inend,
|
||||
- unsigned char **outptrp, unsigned char *outend,
|
||||
+ unsigned char **outptrp,
|
||||
+ const unsigned char *outend,
|
||||
size_t *irreversible)
|
||||
{
|
||||
mbstate_t *state = step_data->__statep;
|
||||
@@ -443,7 +447,7 @@ __attribute ((always_inline))
|
||||
internal_ucs4le_loop (struct __gconv_step *step,
|
||||
struct __gconv_step_data *step_data,
|
||||
const unsigned char **inptrp, const unsigned char *inend,
|
||||
- unsigned char **outptrp, unsigned char *outend,
|
||||
+ unsigned char **outptrp, const unsigned char *outend,
|
||||
size_t *irreversible)
|
||||
{
|
||||
const unsigned char *inptr = *inptrp;
|
||||
@@ -488,7 +492,8 @@ internal_ucs4le_loop_unaligned (struct _
|
||||
struct __gconv_step_data *step_data,
|
||||
const unsigned char **inptrp,
|
||||
const unsigned char *inend,
|
||||
- unsigned char **outptrp, unsigned char *outend,
|
||||
+ unsigned char **outptrp,
|
||||
+ const unsigned char *outend,
|
||||
size_t *irreversible)
|
||||
{
|
||||
const unsigned char *inptr = *inptrp;
|
||||
@@ -540,7 +545,8 @@ internal_ucs4le_loop_single (struct __gc
|
||||
struct __gconv_step_data *step_data,
|
||||
const unsigned char **inptrp,
|
||||
const unsigned char *inend,
|
||||
- unsigned char **outptrp, unsigned char *outend,
|
||||
+ unsigned char **outptrp,
|
||||
+ const unsigned char *outend,
|
||||
size_t *irreversible)
|
||||
{
|
||||
mbstate_t *state = step_data->__statep;
|
||||
@@ -601,7 +607,7 @@ __attribute ((always_inline))
|
||||
ucs4le_internal_loop (struct __gconv_step *step,
|
||||
struct __gconv_step_data *step_data,
|
||||
const unsigned char **inptrp, const unsigned char *inend,
|
||||
- unsigned char **outptrp, unsigned char *outend,
|
||||
+ unsigned char **outptrp, const unsigned char *outend,
|
||||
size_t *irreversible)
|
||||
{
|
||||
int flags = step_data->__flags;
|
||||
@@ -671,7 +677,8 @@ ucs4le_internal_loop_unaligned (struct _
|
||||
struct __gconv_step_data *step_data,
|
||||
const unsigned char **inptrp,
|
||||
const unsigned char *inend,
|
||||
- unsigned char **outptrp, unsigned char *outend,
|
||||
+ unsigned char **outptrp,
|
||||
+ const unsigned char *outend,
|
||||
size_t *irreversible)
|
||||
{
|
||||
int flags = step_data->__flags;
|
||||
@@ -745,7 +752,8 @@ ucs4le_internal_loop_single (struct __gc
|
||||
struct __gconv_step_data *step_data,
|
||||
const unsigned char **inptrp,
|
||||
const unsigned char *inend,
|
||||
- unsigned char **outptrp, unsigned char *outend,
|
||||
+ unsigned char **outptrp,
|
||||
+ const unsigned char *outend,
|
||||
size_t *irreversible)
|
||||
{
|
||||
mbstate_t *state = step_data->__statep;
|
||||
Index: glibc-2.22/iconv/skeleton.c
|
||||
===================================================================
|
||||
--- glibc-2.22.orig/iconv/skeleton.c
|
||||
+++ glibc-2.22/iconv/skeleton.c
|
||||
@@ -597,6 +597,10 @@ FUNCTION_NAME (struct __gconv_step *step
|
||||
inptr = *inptrp;
|
||||
/* The outbuf buffer is empty. */
|
||||
outstart = outbuf;
|
||||
+#ifdef RESET_INPUT_BUFFER
|
||||
+ size_t loop_irreversible
|
||||
+ = lirreversible + (irreversible ? *irreversible : 0);
|
||||
+#endif
|
||||
|
||||
#ifdef SAVE_RESET_STATE
|
||||
SAVE_RESET_STATE (1);
|
||||
@@ -671,8 +675,16 @@ FUNCTION_NAME (struct __gconv_step *step
|
||||
if (__glibc_unlikely (outerr != outbuf))
|
||||
{
|
||||
#ifdef RESET_INPUT_BUFFER
|
||||
- RESET_INPUT_BUFFER;
|
||||
-#else
|
||||
+ if (loop_irreversible
|
||||
+ == lirreversible + (irreversible ? *irreversible : 0))
|
||||
+ {
|
||||
+ /* RESET_INPUT_BUFFER can only work if there
|
||||
+ were no irreversible characters during the
|
||||
+ last loop. */
|
||||
+ RESET_INPUT_BUFFER;
|
||||
+ goto done_reset;
|
||||
+ }
|
||||
+#endif
|
||||
/* We have a problem in one of the functions below.
|
||||
Undo the conversion upto the error point. */
|
||||
size_t nstatus __attribute__ ((unused));
|
||||
@@ -682,9 +694,9 @@ FUNCTION_NAME (struct __gconv_step *step
|
||||
outbuf = outstart;
|
||||
|
||||
/* Restore the state. */
|
||||
-# ifdef SAVE_RESET_STATE
|
||||
+#ifdef SAVE_RESET_STATE
|
||||
SAVE_RESET_STATE (0);
|
||||
-# endif
|
||||
+#endif
|
||||
|
||||
if (__glibc_likely (!unaligned))
|
||||
{
|
||||
@@ -701,7 +713,7 @@ FUNCTION_NAME (struct __gconv_step *step
|
||||
lirreversiblep
|
||||
EXTRA_LOOP_ARGS);
|
||||
}
|
||||
-# if POSSIBLY_UNALIGNED
|
||||
+#if POSSIBLY_UNALIGNED
|
||||
else
|
||||
{
|
||||
if (FROM_DIRECTION)
|
||||
@@ -720,7 +732,7 @@ FUNCTION_NAME (struct __gconv_step *step
|
||||
lirreversiblep
|
||||
EXTRA_LOOP_ARGS);
|
||||
}
|
||||
-# endif
|
||||
+#endif
|
||||
|
||||
/* We must run out of output buffer space in this
|
||||
rerun. */
|
||||
@@ -731,9 +743,11 @@ FUNCTION_NAME (struct __gconv_step *step
|
||||
the invocation counter. */
|
||||
if (__glibc_unlikely (outbuf == outstart))
|
||||
--data->__invocation_counter;
|
||||
-#endif /* reset input buffer */
|
||||
}
|
||||
|
||||
+#ifdef RESET_INPUT_BUFFER
|
||||
+ done_reset:
|
||||
+#endif
|
||||
/* Change the status. */
|
||||
status = result;
|
||||
}
|
||||
Index: glibc-2.22/iconv/tst-iconv7.c
|
||||
===================================================================
|
||||
--- /dev/null
|
||||
+++ glibc-2.22/iconv/tst-iconv7.c
|
||||
@@ -0,0 +1,68 @@
|
||||
+/* Test iconv buffer handling with the IGNORE error handler.
|
||||
+ Copyright (C) 2015 Free Software Foundation, Inc.
|
||||
+ This file is part of the GNU C Library.
|
||||
+
|
||||
+ The GNU C Library is free software; you can redistribute it and/or
|
||||
+ modify it under the terms of the GNU Lesser General Public
|
||||
+ License as published by the Free Software Foundation; either
|
||||
+ version 2.1 of the License, or (at your option) any later version.
|
||||
+
|
||||
+ The GNU C Library is distributed in the hope that it will be useful,
|
||||
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
+ Lesser General Public License for more details.
|
||||
+
|
||||
+ You should have received a copy of the GNU Lesser General Public
|
||||
+ License along with the GNU C Library; if not, see
|
||||
+ <http://www.gnu.org/licenses/>. */
|
||||
+
|
||||
+/* Derived from BZ #18830 */
|
||||
+#include <errno.h>
|
||||
+#include <iconv.h>
|
||||
+#include <stdio.h>
|
||||
+
|
||||
+
|
||||
+static int
|
||||
+do_test (void)
|
||||
+{
|
||||
+ iconv_t cd = iconv_open ("ASCII//IGNORE", "ASCII");
|
||||
+ if (cd == (iconv_t) -1)
|
||||
+ {
|
||||
+ puts ("iconv_open failed");
|
||||
+ return 1;
|
||||
+ }
|
||||
+
|
||||
+ char input[5 + 3] = { 0, 0, 0, 0, 0, '1', '\200', '2' };
|
||||
+ char *inptr = input;
|
||||
+ size_t insize = sizeof (input);
|
||||
+ char output[5];
|
||||
+ char *outptr = output;
|
||||
+ size_t outsize = sizeof (output);
|
||||
+
|
||||
+ size_t ret = iconv (cd, &inptr, &insize, &outptr, &outsize);
|
||||
+ if (ret != (size_t) -1)
|
||||
+ {
|
||||
+ puts ("iconv succeeded");
|
||||
+ return 1;
|
||||
+ }
|
||||
+ if (errno != E2BIG)
|
||||
+ {
|
||||
+ puts ("iconv did not set errno to E2BIG");
|
||||
+ return 1;
|
||||
+ }
|
||||
+ if (inptr != input + sizeof (output) - outsize)
|
||||
+ {
|
||||
+ printf ("iconv consumed %td characters\n", inptr - input);
|
||||
+ return 1;
|
||||
+ }
|
||||
+
|
||||
+ if (iconv_close (cd) == -1)
|
||||
+ {
|
||||
+ puts ("iconv_close failed");
|
||||
+ return 1;
|
||||
+ }
|
||||
+ return 0;
|
||||
+}
|
||||
+
|
||||
+#define TEST_FUNCTION do_test ()
|
||||
+#include "../test-skeleton.c"
|
||||
Index: glibc-2.23.90/sysdeps/s390/multiarch/gconv_simple.c
|
||||
===================================================================
|
||||
--- glibc-2.23.90.orig/sysdeps/s390/multiarch/gconv_simple.c
|
||||
+++ glibc-2.23.90/sysdeps/s390/multiarch/gconv_simple.c
|
||||
@@ -403,7 +403,7 @@ ICONV_VX_NAME (internal_ucs4le_loop) (st
|
||||
const unsigned char **inptrp,
|
||||
const unsigned char *inend,
|
||||
unsigned char **outptrp,
|
||||
- unsigned char *outend,
|
||||
+ const unsigned char *outend,
|
||||
size_t *irreversible)
|
||||
{
|
||||
const unsigned char *inptr = *inptrp;
|
||||
@@ -503,7 +503,7 @@ ICONV_VX_NAME (ucs4_internal_loop) (stru
|
||||
const unsigned char **inptrp,
|
||||
const unsigned char *inend,
|
||||
unsigned char **outptrp,
|
||||
- unsigned char *outend,
|
||||
+ const unsigned char *outend,
|
||||
size_t *irreversible)
|
||||
{
|
||||
int flags = step_data->__flags;
|
||||
@@ -630,7 +630,7 @@ ICONV_VX_NAME (ucs4le_internal_loop) (st
|
||||
const unsigned char **inptrp,
|
||||
const unsigned char *inend,
|
||||
unsigned char **outptrp,
|
||||
- unsigned char *outend,
|
||||
+ const unsigned char *outend,
|
||||
size_t *irreversible)
|
||||
{
|
||||
int flags = step_data->__flags;
|
@ -1,190 +0,0 @@
|
||||
2017-09-11 H.J. Lu <hongjiu.lu@intel.com>
|
||||
|
||||
[BZ #22093]
|
||||
* sysdeps/x86/cpu-features.c (init_cpu_features): Initialize
|
||||
GLRO(dl_hwcap) to HWCAP_X86_64 for x86-64.
|
||||
* sysdeps/x86/dl-hwcap.h (HWCAP_COUNT): Updated.
|
||||
(HWCAP_IMPORTANT): Likewise.
|
||||
(HWCAP_X86_64): New enum.
|
||||
(HWCAP_X86_AVX512_1): Updated.
|
||||
* sysdeps/x86/dl-procinfo.c (_dl_x86_hwcap_flags): Add "x86_64".
|
||||
* sysdeps/x86_64/Makefile (tests): Add tst-x86_64-1.
|
||||
(modules-names): Add x86_64/tst-x86_64mod-1.
|
||||
(LDFLAGS-tst-x86_64mod-1.so): New.
|
||||
($(objpfx)tst-x86_64-1): Likewise.
|
||||
($(objpfx)x86_64/tst-x86_64mod-1.os): Likewise.
|
||||
(tst-x86_64-1-clean): Likewise.
|
||||
* sysdeps/x86_64/tst-x86_64-1.c: New file.
|
||||
* sysdeps/x86_64/tst-x86_64mod-1.c: Likewise.
|
||||
|
||||
Index: glibc-2.26/sysdeps/x86/cpu-features.c
|
||||
===================================================================
|
||||
--- glibc-2.26.orig/sysdeps/x86/cpu-features.c
|
||||
+++ glibc-2.26/sysdeps/x86/cpu-features.c
|
||||
@@ -336,7 +336,6 @@ no_cpuid:
|
||||
|
||||
/* Reuse dl_platform, dl_hwcap and dl_hwcap_mask for x86. */
|
||||
GLRO(dl_platform) = NULL;
|
||||
- GLRO(dl_hwcap) = 0;
|
||||
#if !HAVE_TUNABLES && defined SHARED
|
||||
/* The glibc.tune.hwcap_mask tunable is initialized already, so no need to do
|
||||
this. */
|
||||
@@ -344,6 +343,7 @@ no_cpuid:
|
||||
#endif
|
||||
|
||||
#ifdef __x86_64__
|
||||
+ GLRO(dl_hwcap) = HWCAP_X86_64;
|
||||
if (cpu_features->kind == arch_kind_intel)
|
||||
{
|
||||
if (CPU_FEATURES_ARCH_P (cpu_features, AVX512F_Usable)
|
||||
@@ -374,6 +374,7 @@ no_cpuid:
|
||||
GLRO(dl_platform) = "haswell";
|
||||
}
|
||||
#else
|
||||
+ GLRO(dl_hwcap) = 0;
|
||||
if (CPU_FEATURES_CPU_P (cpu_features, SSE2))
|
||||
GLRO(dl_hwcap) |= HWCAP_X86_SSE2;
|
||||
|
||||
Index: glibc-2.26/sysdeps/x86/dl-hwcap.h
|
||||
===================================================================
|
||||
--- glibc-2.26.orig/sysdeps/x86/dl-hwcap.h
|
||||
+++ glibc-2.26/sysdeps/x86/dl-hwcap.h
|
||||
@@ -24,15 +24,16 @@
|
||||
# define HWCAP_PLATFORMS_START 0
|
||||
# define HWCAP_PLATFORMS_COUNT 4
|
||||
# define HWCAP_START 0
|
||||
-# define HWCAP_COUNT 2
|
||||
-# define HWCAP_IMPORTANT (HWCAP_X86_SSE2 | HWCAP_X86_AVX512_1)
|
||||
+# define HWCAP_COUNT 3
|
||||
+# define HWCAP_IMPORTANT \
|
||||
+ (HWCAP_X86_SSE2 | HWCAP_X86_64 | HWCAP_X86_AVX512_1)
|
||||
#elif defined __x86_64__
|
||||
/* For 64 bit, only cover x86-64 platforms and capabilities. */
|
||||
# define HWCAP_PLATFORMS_START 2
|
||||
# define HWCAP_PLATFORMS_COUNT 4
|
||||
# define HWCAP_START 1
|
||||
-# define HWCAP_COUNT 2
|
||||
-# define HWCAP_IMPORTANT (HWCAP_X86_AVX512_1)
|
||||
+# define HWCAP_COUNT 3
|
||||
+# define HWCAP_IMPORTANT (HWCAP_X86_64 | HWCAP_X86_AVX512_1)
|
||||
#else
|
||||
/* For 32 bit, only cover i586, i686 and SSE2. */
|
||||
# define HWCAP_PLATFORMS_START 0
|
||||
@@ -45,7 +46,8 @@
|
||||
enum
|
||||
{
|
||||
HWCAP_X86_SSE2 = 1 << 0,
|
||||
- HWCAP_X86_AVX512_1 = 1 << 1
|
||||
+ HWCAP_X86_64 = 1 << 1,
|
||||
+ HWCAP_X86_AVX512_1 = 1 << 2
|
||||
};
|
||||
|
||||
static inline const char *
|
||||
Index: glibc-2.26/sysdeps/x86/dl-procinfo.c
|
||||
===================================================================
|
||||
--- glibc-2.26.orig/sysdeps/x86/dl-procinfo.c
|
||||
+++ glibc-2.26/sysdeps/x86/dl-procinfo.c
|
||||
@@ -58,11 +58,11 @@ PROCINFO_CLASS struct cpu_features _dl_x
|
||||
#if !defined PROCINFO_DECL && defined SHARED
|
||||
._dl_x86_hwcap_flags
|
||||
#else
|
||||
-PROCINFO_CLASS const char _dl_x86_hwcap_flags[2][9]
|
||||
+PROCINFO_CLASS const char _dl_x86_hwcap_flags[3][9]
|
||||
#endif
|
||||
#ifndef PROCINFO_DECL
|
||||
= {
|
||||
- "sse2", "avx512_1"
|
||||
+ "sse2", "x86_64", "avx512_1"
|
||||
}
|
||||
#endif
|
||||
#if !defined SHARED || defined PROCINFO_DECL
|
||||
Index: glibc-2.26/sysdeps/x86_64/Makefile
|
||||
===================================================================
|
||||
--- glibc-2.26.orig/sysdeps/x86_64/Makefile
|
||||
+++ glibc-2.26/sysdeps/x86_64/Makefile
|
||||
@@ -52,6 +52,12 @@ $(objpfx)tst-quad2pie: $(objpfx)tst-quad
|
||||
CFLAGS-tst-quad1pie.c = $(PIE-ccflag)
|
||||
CFLAGS-tst-quad2pie.c = $(PIE-ccflag)
|
||||
|
||||
+tests += tst-x86_64-1
|
||||
+modules-names += x86_64/tst-x86_64mod-1
|
||||
+LDFLAGS-tst-x86_64mod-1.so = -Wl,-soname,tst-x86_64mod-1.so
|
||||
+
|
||||
+$(objpfx)tst-x86_64-1: $(objpfx)x86_64/tst-x86_64mod-1.so
|
||||
+
|
||||
tests += tst-audit3 tst-audit4 tst-audit5 tst-audit6 tst-audit7 \
|
||||
tst-audit10 tst-sse tst-avx tst-avx512
|
||||
test-extras += tst-audit4-aux tst-audit10-aux \
|
||||
@@ -122,3 +128,14 @@ endif
|
||||
ifeq ($(subdir),csu)
|
||||
gen-as-const-headers += tlsdesc.sym rtld-offsets.sym
|
||||
endif
|
||||
+
|
||||
+$(objpfx)x86_64/tst-x86_64mod-1.os: $(objpfx)tst-x86_64mod-1.os
|
||||
+ $(make-target-directory)
|
||||
+ rm -f $@
|
||||
+ ln $< $@
|
||||
+
|
||||
+do-tests-clean common-mostlyclean: tst-x86_64-1-clean
|
||||
+
|
||||
+.PHONY: tst-x86_64-1-clean
|
||||
+tst-x86_64-1-clean:
|
||||
+ -rm -rf $(objpfx)x86_64
|
||||
Index: glibc-2.26/sysdeps/x86_64/tst-x86_64-1.c
|
||||
===================================================================
|
||||
--- /dev/null
|
||||
+++ glibc-2.26/sysdeps/x86_64/tst-x86_64-1.c
|
||||
@@ -0,0 +1,26 @@
|
||||
+/* Test searching the "x86_64" directory for shared libraries.
|
||||
+ Copyright (C) 2017 Free Software Foundation, Inc.
|
||||
+ This file is part of the GNU C Library.
|
||||
+
|
||||
+ The GNU C Library is free software; you can redistribute it and/or
|
||||
+ modify it under the terms of the GNU Lesser General Public
|
||||
+ License as published by the Free Software Foundation; either
|
||||
+ version 2.1 of the License, or (at your option) any later version.
|
||||
+
|
||||
+ The GNU C Library is distributed in the hope that it will be useful,
|
||||
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
+ Lesser General Public License for more details.
|
||||
+
|
||||
+ You should have received a copy of the GNU Lesser General Public
|
||||
+ License along with the GNU C Library; if not, see
|
||||
+ <http://www.gnu.org/licenses/>. */
|
||||
+
|
||||
+extern void foo (void);
|
||||
+
|
||||
+int
|
||||
+main (void)
|
||||
+{
|
||||
+ foo ();
|
||||
+ return 0;
|
||||
+}
|
||||
Index: glibc-2.26/sysdeps/x86_64/tst-x86_64mod-1.c
|
||||
===================================================================
|
||||
--- /dev/null
|
||||
+++ glibc-2.26/sysdeps/x86_64/tst-x86_64mod-1.c
|
||||
@@ -0,0 +1,22 @@
|
||||
+/* Test searching the "x86_64" directory for shared libraries.
|
||||
+ Copyright (C) 2017 Free Software Foundation, Inc.
|
||||
+ This file is part of the GNU C Library.
|
||||
+
|
||||
+ The GNU C Library is free software; you can redistribute it and/or
|
||||
+ modify it under the terms of the GNU Lesser General Public
|
||||
+ License as published by the Free Software Foundation; either
|
||||
+ version 2.1 of the License, or (at your option) any later version.
|
||||
+
|
||||
+ The GNU C Library is distributed in the hope that it will be useful,
|
||||
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
+ Lesser General Public License for more details.
|
||||
+
|
||||
+ You should have received a copy of the GNU Lesser General Public
|
||||
+ License along with the GNU C Library; if not, see
|
||||
+ <http://www.gnu.org/licenses/>. */
|
||||
+
|
||||
+void
|
||||
+foo (void)
|
||||
+{
|
||||
+}
|
@ -1,41 +0,0 @@
|
||||
Never try to execute the file in ldd
|
||||
|
||||
Executing a random file is never a good idea. Treat all arguments as if
|
||||
they are invoked with __libc_enable_secure, and run them through the known
|
||||
good dynamic linker.
|
||||
|
||||
* elf/ldd.bash.in: Always run through the dynamic linker, even if
|
||||
the file has its own interpreter.
|
||||
|
||||
Index: glibc-2.19/elf/ldd.bash.in
|
||||
===================================================================
|
||||
--- glibc-2.19.orig/elf/ldd.bash.in
|
||||
+++ glibc-2.19/elf/ldd.bash.in
|
||||
@@ -164,18 +164,6 @@ warning: you do not have execution permi
|
||||
fi
|
||||
done
|
||||
case $ret in
|
||||
- 0)
|
||||
- # If the program exits with exit code 5, it means the process has been
|
||||
- # invoked with __libc_enable_secure. Fall back to running it through
|
||||
- # the dynamic linker.
|
||||
- try_trace "$file"
|
||||
- rc=$?
|
||||
- if [ $rc = 5 ]; then
|
||||
- try_trace "$RTLD" "$file"
|
||||
- rc=$?
|
||||
- fi
|
||||
- [ $rc = 0 ] || result=1
|
||||
- ;;
|
||||
1)
|
||||
# This can be a non-ELF binary or no binary at all.
|
||||
nonelf "$file" || {
|
||||
@@ -183,7 +171,7 @@ warning: you do not have execution permi
|
||||
result=1
|
||||
}
|
||||
;;
|
||||
- 2)
|
||||
+ [02])
|
||||
try_trace "$RTLD" "$file" || result=1
|
||||
;;
|
||||
*)
|
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
|
@ -1,120 +0,0 @@
|
||||
2017-08-09 Andreas Schwab <schwab@suse.de>
|
||||
|
||||
[BZ #21041]
|
||||
* sysdeps/unix/sysv/linux/s390/pt-longjmp.c: Update reference to
|
||||
renamed alias.
|
||||
|
||||
2017-08-08 Andreas Schwab <schwab@suse.de>
|
||||
|
||||
[BZ #21041]
|
||||
* nptl/pt-longjmp.c (longjmp, siglongjmp): Don't use IFUNC resolver.
|
||||
* nptl/pt-system.c (system): Likewise.
|
||||
|
||||
Index: glibc-2.26/nptl/pt-longjmp.c
|
||||
===================================================================
|
||||
--- glibc-2.26.orig/nptl/pt-longjmp.c
|
||||
+++ glibc-2.26/nptl/pt-longjmp.c
|
||||
@@ -25,21 +25,14 @@
|
||||
symbol in libpthread, but the historical ABI requires it. For static
|
||||
linking, there is no need to provide anything here--the libc version
|
||||
will be linked in. For shared library ABI compatibility, there must be
|
||||
- longjmp and siglongjmp symbols in libpthread.so; so we define them using
|
||||
- IFUNC to redirect to the libc function. */
|
||||
+ longjmp and siglongjmp symbols in libpthread.so.
|
||||
|
||||
-#if SHLIB_COMPAT (libpthread, GLIBC_2_0, GLIBC_2_22)
|
||||
-
|
||||
-# if HAVE_IFUNC
|
||||
-
|
||||
-# undef INIT_ARCH
|
||||
-# define INIT_ARCH()
|
||||
-# define DEFINE_LONGJMP(name) libc_ifunc (name, &__libc_longjmp)
|
||||
-
|
||||
-extern __typeof(longjmp) longjmp_ifunc;
|
||||
-extern __typeof(siglongjmp) siglongjmp_ifunc;
|
||||
+ With an IFUNC resolver, it would be possible to avoid the indirection,
|
||||
+ but the IFUNC resolver might run before the __libc_longjmp symbol has
|
||||
+ been relocated, in which case the IFUNC resolver would not be able to
|
||||
+ provide the correct address. */
|
||||
|
||||
-# else /* !HAVE_IFUNC */
|
||||
+#if SHLIB_COMPAT (libpthread, GLIBC_2_0, GLIBC_2_22)
|
||||
|
||||
static void __attribute__ ((noreturn, used))
|
||||
longjmp_compat (jmp_buf env, int val)
|
||||
@@ -47,14 +40,10 @@ longjmp_compat (jmp_buf env, int val)
|
||||
__libc_longjmp (env, val);
|
||||
}
|
||||
|
||||
-# define DEFINE_LONGJMP(name) strong_alias (longjmp_compat, name)
|
||||
-
|
||||
-# endif /* HAVE_IFUNC */
|
||||
-
|
||||
-DEFINE_LONGJMP (longjmp_ifunc)
|
||||
-compat_symbol (libpthread, longjmp_ifunc, longjmp, GLIBC_2_0);
|
||||
+strong_alias (longjmp_compat, longjmp_alias)
|
||||
+compat_symbol (libpthread, longjmp_alias, longjmp, GLIBC_2_0);
|
||||
|
||||
-strong_alias (longjmp_ifunc, siglongjmp_ifunc)
|
||||
-compat_symbol (libpthread, siglongjmp_ifunc, siglongjmp, GLIBC_2_0);
|
||||
+strong_alias (longjmp_alias, siglongjmp_alias)
|
||||
+compat_symbol (libpthread, siglongjmp_alias, siglongjmp, GLIBC_2_0);
|
||||
|
||||
#endif
|
||||
Index: glibc-2.26/nptl/pt-system.c
|
||||
===================================================================
|
||||
--- glibc-2.26.orig/nptl/pt-system.c
|
||||
+++ glibc-2.26/nptl/pt-system.c
|
||||
@@ -25,29 +25,21 @@
|
||||
libpthread, but the historical ABI requires it. For static linking,
|
||||
there is no need to provide anything here--the libc version will be
|
||||
linked in. For shared library ABI compatibility, there must be a
|
||||
- 'system' symbol in libpthread.so; so we define it using IFUNC to
|
||||
- redirect to the libc function. */
|
||||
+ 'system' symbol in libpthread.so.
|
||||
|
||||
-#if SHLIB_COMPAT (libpthread, GLIBC_2_0, GLIBC_2_22)
|
||||
-
|
||||
-# if HAVE_IFUNC
|
||||
-
|
||||
-extern __typeof(system) system_ifunc;
|
||||
-# undef INIT_ARCH
|
||||
-# define INIT_ARCH()
|
||||
-libc_ifunc (system_ifunc, &__libc_system)
|
||||
+ With an IFUNC resolver, it would be possible to avoid the indirection,
|
||||
+ but the IFUNC resolver might run before the __libc_system symbol has
|
||||
+ been relocated, in which case the IFUNC resolver would not be able to
|
||||
+ provide the correct address. */
|
||||
|
||||
-# else /* !HAVE_IFUNC */
|
||||
+#if SHLIB_COMPAT (libpthread, GLIBC_2_0, GLIBC_2_22)
|
||||
|
||||
static int __attribute__ ((used))
|
||||
system_compat (const char *line)
|
||||
{
|
||||
return __libc_system (line);
|
||||
}
|
||||
-strong_alias (system_compat, system_ifunc)
|
||||
-
|
||||
-# endif /* HAVE_IFUNC */
|
||||
-
|
||||
-compat_symbol (libpthread, system_ifunc, system, GLIBC_2_0);
|
||||
+strong_alias (system_compat, system_alias)
|
||||
+compat_symbol (libpthread, system_alias, system, GLIBC_2_0);
|
||||
|
||||
#endif
|
||||
Index: glibc-2.26/sysdeps/unix/sysv/linux/s390/pt-longjmp.c
|
||||
===================================================================
|
||||
--- glibc-2.26.orig/sysdeps/unix/sysv/linux/s390/pt-longjmp.c
|
||||
+++ glibc-2.26/sysdeps/unix/sysv/linux/s390/pt-longjmp.c
|
||||
@@ -26,8 +26,8 @@
|
||||
/* In glibc release 2.19 new versions of longjmp-functions were introduced,
|
||||
but were reverted before 2.20. Thus both versions are the same function. */
|
||||
|
||||
-strong_alias (longjmp_ifunc, __v2longjmp)
|
||||
+strong_alias (longjmp_alias, __v2longjmp)
|
||||
compat_symbol (libpthread, __v2longjmp, longjmp, GLIBC_2_19);
|
||||
-strong_alias (siglongjmp_ifunc, __v2siglongjmp)
|
||||
+strong_alias (siglongjmp_alias, __v2siglongjmp)
|
||||
compat_symbol (libpthread, __v2siglongjmp, siglongjmp, GLIBC_2_19);
|
||||
#endif /* SHLIB_COMPAT (libpthread, GLIBC_2_19, GLIBC_2_20)) */
|
@ -1,21 +0,0 @@
|
||||
Index: manpages/locale.alias.5
|
||||
===================================================================
|
||||
--- manpages/locale.alias.5.orig
|
||||
+++ manpages/locale.alias.5
|
||||
@@ -18,7 +18,7 @@
|
||||
.SH "NAME"
|
||||
locale.alias \- Locale name alias data base
|
||||
.SH "DESCRIPTION"
|
||||
-The locale.alias database file (/etc/locale.alias) is used by the
|
||||
+The locale.alias database file (/usr/share/locale/locale.alias) is used by the
|
||||
.B locale
|
||||
command and the
|
||||
.B X Window System
|
||||
@@ -40,6 +40,6 @@ name, or simpler versions of the POSIX l
|
||||
Lines beginning with Hash ("#") are treated as comments and ignored.
|
||||
|
||||
.SH "SEE ALSO"
|
||||
-locale(1), localedef(1), locale-gen(8), locale.gen(5)
|
||||
+locale(1), localedef(1)
|
||||
.SH "AUTHOR"
|
||||
Alastair McKinstry <mckinstry@computer.org>
|
@ -1,3 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:e8715a207e621f2dea9f4d766d55514b9ac4dc91ea9652e7768cea0f950cc88b
|
||||
size 10824
|
||||
oid sha256:e84aeb3808f86c7cd169ca795b31d1fdef21864c74b827ca750f3d478f0a95a5
|
||||
size 12562
|
||||
|
@ -1,126 +0,0 @@
|
||||
2017-08-28 Gabriel F. T. Gomes <gftg@linux.vnet.ibm.com>
|
||||
|
||||
[BZ #21930]
|
||||
* math/math.h [defined __cplusplus && defined __SUPPORT_SNAN__]
|
||||
(iszero): New C++ implementation that does not use
|
||||
fpclassify/__MATH_TG/__builtin_types_compatible_p, when
|
||||
signaling nans are enabled, since __builtin_types_compatible_p
|
||||
is a C-only feature.
|
||||
|
||||
2017-08-24 Gabriel F. T. Gomes <gftg@linux.vnet.ibm.com>
|
||||
|
||||
* math/math.h [defined __cplusplus] (issignaling): In the long
|
||||
double case, call __issignalingl only if __NO_LONG_DOUBLE_MATH
|
||||
is not defined. Call __issignaling, otherwise.
|
||||
|
||||
2017-08-22 Gabriel F. T. Gomes <gftg@linux.vnet.ibm.com>
|
||||
|
||||
* math/math.h [defined __cplusplus] (issignaling): Provide a C++
|
||||
definition for issignaling that does not rely on __MATH_TG,
|
||||
since __MATH_TG uses __builtin_types_compatible_p, which is only
|
||||
available in C mode.
|
||||
|
||||
2017-08-18 Gabriel F. T. Gomes <gftg@linux.vnet.ibm.com>
|
||||
|
||||
[BZ #21930]
|
||||
* math/math.h (isinf): Check if in C or C++ mode before using
|
||||
__builtin_types_compatible_p, since this is a C mode feature.
|
||||
|
||||
Index: glibc-2.26/math/math.h
|
||||
===================================================================
|
||||
--- glibc-2.26.orig/math/math.h
|
||||
+++ glibc-2.26/math/math.h
|
||||
@@ -442,8 +442,12 @@ enum
|
||||
|
||||
/* Return nonzero value if X is positive or negative infinity. */
|
||||
# if __HAVE_DISTINCT_FLOAT128 && !__GNUC_PREREQ (7,0) \
|
||||
- && !defined __SUPPORT_SNAN__
|
||||
- /* __builtin_isinf_sign is broken for float128 only before GCC 7.0. */
|
||||
+ && !defined __SUPPORT_SNAN__ && !defined __cplusplus
|
||||
+ /* Since __builtin_isinf_sign is broken for float128 before GCC 7.0,
|
||||
+ use the helper function, __isinff128, with older compilers. This is
|
||||
+ only provided for C mode, because in C++ mode, GCC has no support
|
||||
+ for __builtin_types_compatible_p (and when in C++ mode, this macro is
|
||||
+ not used anyway, because libstdc++ headers undefine it). */
|
||||
# define isinf(x) \
|
||||
(__builtin_types_compatible_p (__typeof (x), _Float128) \
|
||||
? __isinff128 (x) : __builtin_isinf_sign (x))
|
||||
@@ -470,7 +474,32 @@ enum
|
||||
# include <bits/iscanonical.h>
|
||||
|
||||
/* Return nonzero value if X is a signaling NaN. */
|
||||
-# define issignaling(x) __MATH_TG ((x), __issignaling, (x))
|
||||
+# ifndef __cplusplus
|
||||
+# define issignaling(x) __MATH_TG ((x), __issignaling, (x))
|
||||
+# else
|
||||
+ /* In C++ mode, __MATH_TG cannot be used, because it relies on
|
||||
+ __builtin_types_compatible_p, which is a C-only builtin. On the
|
||||
+ other hand, overloading provides the means to distinguish between
|
||||
+ the floating-point types. The overloading resolution will match
|
||||
+ the correct parameter (regardless of type qualifiers (i.e.: const
|
||||
+ and volatile). */
|
||||
+extern "C++" {
|
||||
+inline int issignaling (float __val) { return __issignalingf (__val); }
|
||||
+inline int issignaling (double __val) { return __issignaling (__val); }
|
||||
+inline int
|
||||
+issignaling (long double __val)
|
||||
+{
|
||||
+# ifdef __NO_LONG_DOUBLE_MATH
|
||||
+ return __issignaling (__val);
|
||||
+# else
|
||||
+ return __issignalingl (__val);
|
||||
+# endif
|
||||
+}
|
||||
+# if __HAVE_DISTINCT_FLOAT128
|
||||
+inline int issignaling (_Float128 __val) { return __issignalingf128 (__val); }
|
||||
+# endif
|
||||
+} /* extern C++ */
|
||||
+# endif
|
||||
|
||||
/* Return nonzero value if X is subnormal. */
|
||||
# define issubnormal(x) (fpclassify (x) == FP_SUBNORMAL)
|
||||
@@ -484,15 +513,40 @@ enum
|
||||
# endif
|
||||
# else /* __cplusplus */
|
||||
extern "C++" {
|
||||
+# ifdef __SUPPORT_SNAN__
|
||||
+inline int
|
||||
+iszero (float __val)
|
||||
+{
|
||||
+ return __fpclassifyf (__val) == FP_ZERO;
|
||||
+}
|
||||
+inline int
|
||||
+iszero (double __val)
|
||||
+{
|
||||
+ return __fpclassify (__val) == FP_ZERO;
|
||||
+}
|
||||
+inline int
|
||||
+iszero (long double __val)
|
||||
+{
|
||||
+# ifdef __NO_LONG_DOUBLE_MATH
|
||||
+ return __fpclassify (__val) == FP_ZERO;
|
||||
+# else
|
||||
+ return __fpclassifyl (__val) == FP_ZERO;
|
||||
+# endif
|
||||
+}
|
||||
+# if __HAVE_DISTINCT_FLOAT128
|
||||
+inline int
|
||||
+iszero (_Float128 __val)
|
||||
+{
|
||||
+ return __fpclassifyf128 (__val) == FP_ZERO;
|
||||
+}
|
||||
+# endif
|
||||
+# else
|
||||
template <class __T> inline bool
|
||||
iszero (__T __val)
|
||||
{
|
||||
-# ifdef __SUPPORT_SNAN__
|
||||
- return fpclassify (__val) == FP_ZERO;
|
||||
-# else
|
||||
return __val == 0;
|
||||
-# endif
|
||||
}
|
||||
+# endif
|
||||
} /* extern C++ */
|
||||
# endif /* __cplusplus */
|
||||
#endif /* Use IEC_60559_BFP_EXT. */
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user