RHEL 9.0.0 Alpha bootstrap
The content of this branch was automatically imported from Fedora ELN with the following as its source: https://src.fedoraproject.org/rpms/glibc#d8a810a777f9c7113d15c1dc1ce8bde72ebc688b
This commit is contained in:
parent
4ffaa02261
commit
c9106cca32
6
.gitignore
vendored
6
.gitignore
vendored
@ -0,0 +1,6 @@
|
|||||||
|
# Release tarballs.
|
||||||
|
/glibc-*.tar.[gx]z
|
||||||
|
# Generated (source) RPMs.
|
||||||
|
/*.rpm
|
||||||
|
# Expanded source trees.
|
||||||
|
/glibc-*/
|
7374
ChangeLog.old
Normal file
7374
ChangeLog.old
Normal file
File diff suppressed because it is too large
Load Diff
2
README.scripts
Normal file
2
README.scripts
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
All of the useful glibc maintainer scripts are located at:
|
||||||
|
https://pagure.io/glibc-maintainer-scripts
|
97
STAGE1-glibc
Normal file
97
STAGE1-glibc
Normal file
@ -0,0 +1,97 @@
|
|||||||
|
srpm glibc
|
||||||
|
|
||||||
|
# setup glibc
|
||||||
|
# This path MUST be relative, not absolute
|
||||||
|
GV=$(cd $SRC; echo glibc-2*)
|
||||||
|
|
||||||
|
if [ "$TARGET_ARCH" == "armv7hl" ]; then
|
||||||
|
# rtkaio not supported on ARM
|
||||||
|
rm -rf $SRC/$GV/rtkaio
|
||||||
|
fi
|
||||||
|
|
||||||
|
GLIBCARGS="--prefix=/usr
|
||||||
|
--with-headers=$ROOTFS/usr/include
|
||||||
|
--enable-kernel=2.6.32
|
||||||
|
--enable-bind-now
|
||||||
|
--build $BUILD
|
||||||
|
--host $TARGET
|
||||||
|
--disable-profile
|
||||||
|
--cache-file=config.cache
|
||||||
|
--without-cvs
|
||||||
|
--with-elf
|
||||||
|
--without-gd
|
||||||
|
--disable-sanity-checks
|
||||||
|
--with-tls
|
||||||
|
--with-__thread
|
||||||
|
--enable-obsolete-rpc
|
||||||
|
"
|
||||||
|
|
||||||
|
mcd $BUILDDIR/glibc
|
||||||
|
|
||||||
|
# prefill glibc cache
|
||||||
|
echo libc_cv_forced_unwind=yes > config.cache
|
||||||
|
echo libc_cv_c_cleanup=yes >> config.cache
|
||||||
|
#echo libc_cv_ctors_header=yes >> config.cache
|
||||||
|
echo ac_cv_header_cpuid_h=yes >> config.cache
|
||||||
|
echo libc_cv_gcc_builtin_expect=yes >> config.cache
|
||||||
|
|
||||||
|
$SRC/$GV/configure $GLIBCARGS
|
||||||
|
notparallel
|
||||||
|
make $J ARCH=${KARCH} BUILD_CC=gcc cross-compiling=yes
|
||||||
|
make DESTDIR=$ROOTFS $J ARCH=${KARCH} BUILD_CC=gcc cross-compiling=yes install
|
||||||
|
|
||||||
|
( cd $ROOTFS/usr/include/bits
|
||||||
|
sed '/ifndef.*NO_LONG_DOUBLE/,/#endif/d' < mathdef.h > mathdef.h.new
|
||||||
|
mv mathdef.h.new mathdef.h
|
||||||
|
)
|
||||||
|
|
||||||
|
# 32-bit multilib libgcc needs 32-bit headers
|
||||||
|
if [ ! "$TARGET32" = "" ]; then
|
||||||
|
|
||||||
|
old_CC=$CC
|
||||||
|
old_CXX=$CC
|
||||||
|
export CC="$TARGET-gcc -m32"
|
||||||
|
export CXX="$TARGET-g++ -m32"
|
||||||
|
|
||||||
|
GLIBCARGS="--prefix=/usr
|
||||||
|
--with-headers=$ROOTFS/usr/include
|
||||||
|
--enable-kernel=2.6.32
|
||||||
|
--enable-bind-now
|
||||||
|
--build $BUILD
|
||||||
|
--host $TARGET32
|
||||||
|
--disable-profile
|
||||||
|
--cache-file=config.cache
|
||||||
|
--without-cvs
|
||||||
|
--with-elf
|
||||||
|
--without-gd
|
||||||
|
--disable-sanity-checks
|
||||||
|
--with-tls
|
||||||
|
--with-__thread
|
||||||
|
--enable-obsolete-rpc
|
||||||
|
"
|
||||||
|
|
||||||
|
mcd $BUILDDIR/glibc32
|
||||||
|
|
||||||
|
# prefill glibc cache
|
||||||
|
echo libc_cv_forced_unwind=yes > config.cache
|
||||||
|
echo libc_cv_c_cleanup=yes >> config.cache
|
||||||
|
echo libc_cv_ctors_header=yes >> config.cache
|
||||||
|
echo ac_cv_header_cpuid_h=yes >> config.cache
|
||||||
|
echo libc_cv_gcc_builtin_expect=yes >> config.cache
|
||||||
|
|
||||||
|
$SRC/$GV/configure $GLIBCARGS
|
||||||
|
notparallel
|
||||||
|
make $J ARCH=${KARCH} BUILD_CC=gcc cross-compiling=yes
|
||||||
|
make DESTDIR=$ROOTFS $J ARCH=${KARCH} BUILD_CC=gcc cross-compiling=yes install
|
||||||
|
|
||||||
|
( cd $ROOTFS/usr/include/bits
|
||||||
|
sed '/ifndef.*NO_LONG_DOUBLE/,/#endif/d' < mathdef.h > mathdef.h.new
|
||||||
|
mv mathdef.h.new mathdef.h
|
||||||
|
)
|
||||||
|
|
||||||
|
CC=$old_CC
|
||||||
|
CXX=$old_CXX
|
||||||
|
export $CC
|
||||||
|
export $CXX
|
||||||
|
|
||||||
|
fi
|
117
STAGE1-glibc-headers
Normal file
117
STAGE1-glibc-headers
Normal file
@ -0,0 +1,117 @@
|
|||||||
|
set -vx
|
||||||
|
srpm glibc
|
||||||
|
|
||||||
|
# setup glibc
|
||||||
|
# This path MUST be relative, not absolute
|
||||||
|
GV=$(cd $SRC; echo glibc-2*)
|
||||||
|
GLIBCARGS="--prefix=/usr
|
||||||
|
--with-headers=$ROOTFS/usr/include
|
||||||
|
--enable-kernel=2.6.32
|
||||||
|
--enable-bind-now
|
||||||
|
--build $BUILD
|
||||||
|
--host $TARGET
|
||||||
|
--disable-profile
|
||||||
|
--cache-file=config.cache
|
||||||
|
--without-cvs
|
||||||
|
--with-elf
|
||||||
|
--without-gd
|
||||||
|
--disable-sanity-checks
|
||||||
|
--with-tls
|
||||||
|
--with-__thread
|
||||||
|
--enable-obsolete-rpc
|
||||||
|
"
|
||||||
|
|
||||||
|
mcd $BUILDDIR/glibc-stage1
|
||||||
|
|
||||||
|
# prefill glibc cache
|
||||||
|
echo libc_cv_forced_unwind=yes > config.cache
|
||||||
|
echo libc_cv_c_cleanup=yes >> config.cache
|
||||||
|
#echo libc_cv_ctors_header=yes >> config.cache
|
||||||
|
echo ac_cv_header_cpuid_h=yes >> config.cache
|
||||||
|
echo libc_cv_gcc_builtin_expect=yes >> config.cache
|
||||||
|
|
||||||
|
$SRC/$GV/configure $GLIBCARGS
|
||||||
|
notparallel
|
||||||
|
make DESTDIR=$ROOTFS $J ARCH=${KARCH} BUILD_CC=gcc cross-compiling=yes install-headers
|
||||||
|
touch $ROOTFS/usr/include/gnu/stubs.h
|
||||||
|
touch $ROOTFS/usr/include/bits/stdio_lim.h
|
||||||
|
|
||||||
|
( cd $ROOTFS/usr/include/bits
|
||||||
|
sed '/ifndef.*NO_LONG_DOUBLE/,/#endif/d' < mathdef.h > mathdef.h.new
|
||||||
|
mv mathdef.h.new mathdef.h
|
||||||
|
)
|
||||||
|
|
||||||
|
# We also build just enough files to link libgcc.so. The fake
|
||||||
|
# libc.so will never actually get used, but simplifies the boostrap.
|
||||||
|
make $J ARCH=${KARCH} BUILD_CC=gcc cross-compiling=yes csu/subdir_lib
|
||||||
|
|
||||||
|
mkdirp $ROOTFS/usr/lib${SUFFIX}
|
||||||
|
for file in `cd csu; echo crt*.o`; do
|
||||||
|
echo "" | $TARGET-as -o $ROOTFS/usr/lib${SUFFIX}/$file
|
||||||
|
done
|
||||||
|
$TARGET-gcc -nostdlib -nostartfiles -shared -x c /dev/null\
|
||||||
|
-o $ROOTFS/usr/lib${SUFFIX}/libc.so
|
||||||
|
|
||||||
|
|
||||||
|
# 32-bit multilib libgcc needs stub 32-bit libraries
|
||||||
|
if [ ! "$TARGET32" = "" ]; then
|
||||||
|
|
||||||
|
old_CC=$CC
|
||||||
|
old_CXX=$CC
|
||||||
|
export CC="$TARGET-gcc -m32"
|
||||||
|
export CXX="$TARGET-g++ -m32"
|
||||||
|
|
||||||
|
# setup 32-bit glibc headers
|
||||||
|
GLIBCARGS="--prefix=/usr
|
||||||
|
--with-headers=$ROOTFS/usr/include
|
||||||
|
--enable-kernel=2.6.32
|
||||||
|
--enable-bind-now
|
||||||
|
--build $BUILD
|
||||||
|
--host $TARGET32
|
||||||
|
--disable-profile
|
||||||
|
--cache-file=config.cache
|
||||||
|
--without-cvs
|
||||||
|
--with-elf
|
||||||
|
--without-gd
|
||||||
|
--disable-sanity-checks
|
||||||
|
--with-tls
|
||||||
|
--with-__thread
|
||||||
|
--enable-obsolete-rpc
|
||||||
|
"
|
||||||
|
|
||||||
|
mcd $BUILDDIR/glibc32-stage1
|
||||||
|
|
||||||
|
# prefill glibc cache
|
||||||
|
echo libc_cv_forced_unwind=yes > config.cache
|
||||||
|
echo libc_cv_c_cleanup=yes >> config.cache
|
||||||
|
#echo libc_cv_ctors_header=yes >> config.cache
|
||||||
|
echo ac_cv_header_cpuid_h=yes >> config.cache
|
||||||
|
echo libc_cv_gcc_builtin_expect=yes >> config.cache
|
||||||
|
|
||||||
|
$SRC/$GV/configure $GLIBCARGS
|
||||||
|
notparallel
|
||||||
|
make DESTDIR=$ROOTFS $J ARCH=${KARCH} BUILD_CC=gcc cross-compiling=yes install-headers
|
||||||
|
touch $ROOTFS/usr/include/gnu/stubs.h
|
||||||
|
touch $ROOTFS/usr/include/bits/stdio_lim.h
|
||||||
|
|
||||||
|
( cd $ROOTFS/usr/include/bits
|
||||||
|
sed '/ifndef.*NO_LONG_DOUBLE/,/#endif/d' < mathdef.h > mathdef.h.new
|
||||||
|
mv mathdef.h.new mathdef.h
|
||||||
|
)
|
||||||
|
|
||||||
|
# We also build just enough files to link libgcc.so. The fake
|
||||||
|
# libc.so will never actually get used, but simplifies the boostrap.
|
||||||
|
make $J ARCH=${KARCH} BUILD_CC=gcc cross-compiling=yes csu/subdir_lib
|
||||||
|
|
||||||
|
mkdirp $ROOTFS/usr/lib
|
||||||
|
for file in `cd csu; echo crt*.o`; do
|
||||||
|
echo "" | $TARGET-as --32 -o $ROOTFS/usr/lib/$file
|
||||||
|
done
|
||||||
|
$CC -m32 -nostdlib -nostartfiles -shared -x c /dev/null\
|
||||||
|
-o $ROOTFS/usr/lib/libc.so
|
||||||
|
|
||||||
|
CC=$old_CC
|
||||||
|
CXX=$old_CXX
|
||||||
|
export $CC
|
||||||
|
export $CXX
|
||||||
|
fi
|
77
bench.mk
Normal file
77
bench.mk
Normal file
@ -0,0 +1,77 @@
|
|||||||
|
objpfx = $(prefix)/$(ver)/usr/libexec/glibc-benchtests/
|
||||||
|
|
||||||
|
bench-math := acos acosh asin asinh atan atanh cos cosh exp exp2 ffs ffsll \
|
||||||
|
log log2 modf pow rint sin sincos sinh sqrt tan tanh
|
||||||
|
|
||||||
|
bench-pthread := pthread_once
|
||||||
|
|
||||||
|
bench := $(bench-math) $(bench-pthread)
|
||||||
|
|
||||||
|
run-bench := $(prefix)/$(ver)/lib64/ld-linux-x86-64.so.2 --library-path $(prefix)/$(ver)/lib64 $${run}
|
||||||
|
|
||||||
|
# String function benchmarks.
|
||||||
|
string-bench := bcopy bzero memccpy memchr memcmp memcpy memmem memmove \
|
||||||
|
mempcpy memset rawmemchr stpcpy stpncpy strcasecmp strcasestr \
|
||||||
|
strcat strchr strchrnul strcmp strcpy strcspn strlen \
|
||||||
|
strncasecmp strncat strncmp strncpy strnlen strpbrk strrchr \
|
||||||
|
strspn strstr strcpy_chk stpcpy_chk memrchr strsep strtok
|
||||||
|
string-bench-all := $(string-bench)
|
||||||
|
|
||||||
|
stdlib-bench := strtod
|
||||||
|
|
||||||
|
benchset := $(string-bench-all) $(stdlib-bench)
|
||||||
|
|
||||||
|
bench-malloc := malloc-thread
|
||||||
|
|
||||||
|
binaries-bench := $(addprefix $(objpfx)bench-,$(bench))
|
||||||
|
binaries-benchset := $(addprefix $(objpfx)bench-,$(benchset))
|
||||||
|
binaries-bench-malloc := $(addprefix $(objpfx)bench-,$(bench-malloc))
|
||||||
|
|
||||||
|
DETAILED_OPT :=
|
||||||
|
|
||||||
|
ifdef DETAILED
|
||||||
|
DETAILED_OPT := -d
|
||||||
|
endif
|
||||||
|
|
||||||
|
bench: bench-set bench-func bench-malloc
|
||||||
|
|
||||||
|
bench-set: $(binaries-benchset)
|
||||||
|
for run in $^; do \
|
||||||
|
outfile=$(prefix)/$$(basename $${run}.$(ver).out); \
|
||||||
|
echo "Running $${run}"; \
|
||||||
|
$(run-bench) > $${outfile}.tmp; \
|
||||||
|
mv $${outfile}{.tmp,}; \
|
||||||
|
done
|
||||||
|
|
||||||
|
bench-malloc: $(binaries-bench-malloc)
|
||||||
|
run=$(objpfx)bench-malloc-thread; \
|
||||||
|
outfile=$(prefix)/$$(basename $${run}.$(ver).out); \
|
||||||
|
for thr in 1 8 16 32; do \
|
||||||
|
echo "Running $${run} $${thr}"; \
|
||||||
|
$(run-bench) $${thr} > $${outfile}.tmp; \
|
||||||
|
mv $${outfile}{.tmp,}; \
|
||||||
|
done
|
||||||
|
|
||||||
|
# Build and execute the benchmark functions. This target generates JSON
|
||||||
|
# formatted bench.out. Each of the programs produce independent JSON output,
|
||||||
|
# so one could even execute them individually and process it using any JSON
|
||||||
|
# capable language or tool.
|
||||||
|
bench-func: $(binaries-bench)
|
||||||
|
{ echo "{\"timing_type\": \"hp-timing\","; \
|
||||||
|
echo " \"functions\": {"; \
|
||||||
|
for run in $^; do \
|
||||||
|
if ! [ "x$${run}" = "x$<" ]; then \
|
||||||
|
echo ","; \
|
||||||
|
fi; \
|
||||||
|
echo "Running $${run}" >&2; \
|
||||||
|
$(run-bench) $(DETAILED_OPT); \
|
||||||
|
done; \
|
||||||
|
echo; \
|
||||||
|
echo " }"; \
|
||||||
|
echo "}"; } > $(prefix)/bench.$(ver).out-tmp; \
|
||||||
|
if [ -f $(prefix)/bench.$(ver).out ]; then \
|
||||||
|
mv -f $(prefix)/bench.$(ver).out{,.old}; \
|
||||||
|
fi; \
|
||||||
|
mv -f $(prefix)/bench.$(ver).out{-tmp,}
|
||||||
|
# scripts/validate_benchout.py bench.out \
|
||||||
|
# scripts/benchout.schema.json
|
14
gen-quilt-series.sh
Executable file
14
gen-quilt-series.sh
Executable file
@ -0,0 +1,14 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
# Autogeneries the quilt `series` from the patch order in the spec file.
|
||||||
|
# We don't use `quilt setup` because it makes a huge mess and doesn't work.
|
||||||
|
component="glibc"
|
||||||
|
rm -f series.new
|
||||||
|
extra_args="--fuzz=0"
|
||||||
|
count=0
|
||||||
|
# Transform patches into series file.
|
||||||
|
grep '^Patch.*:' glibc.spec | sed -e 's,Patch.*: ,,g' > series.new
|
||||||
|
count=`wc -l series.new | sed -e 's, .*$,,g'`
|
||||||
|
echo "Processed $count patches."
|
||||||
|
mv series.new series
|
||||||
|
echo "Generated quilt ./series file. Please do not commit."
|
||||||
|
exit 0
|
153
glibc-bench-compare
Executable file
153
glibc-bench-compare
Executable file
@ -0,0 +1,153 @@
|
|||||||
|
#!/usr/bin/bash
|
||||||
|
# This script can be invoked as follows:
|
||||||
|
#
|
||||||
|
# glibc-bench-compare [options] <BUILD> [BUILD]
|
||||||
|
#
|
||||||
|
# Options may be one of the following:
|
||||||
|
#
|
||||||
|
# -t The BUILD arguments are task ids and not a version-release string
|
||||||
|
# -a ARCH Do comparison for ARCH architecture
|
||||||
|
#
|
||||||
|
# If any of the above options are given, both BUILD arguments must be given.
|
||||||
|
# Otherwise, if only one BUILD is specified, then it is compared against the
|
||||||
|
# installed glibc.
|
||||||
|
|
||||||
|
# Silence the pushd/popd messages
|
||||||
|
pushd() {
|
||||||
|
command pushd "$@" > /dev/null 2>&1
|
||||||
|
}
|
||||||
|
|
||||||
|
popd() {
|
||||||
|
command popd "$@" > /dev/null 2>&1
|
||||||
|
}
|
||||||
|
|
||||||
|
# Clean up any downloaded files before we exit
|
||||||
|
trap "rm -rf /tmp/glibc-bench-compare.$BASHPID.*" EXIT
|
||||||
|
|
||||||
|
task=0
|
||||||
|
arch=$(uname -i)
|
||||||
|
options=0
|
||||||
|
path=0
|
||||||
|
installed=
|
||||||
|
|
||||||
|
# Look for any commandline options
|
||||||
|
while getopts ":tpa:" opt; do
|
||||||
|
case $opt in
|
||||||
|
p)
|
||||||
|
path=1
|
||||||
|
;;
|
||||||
|
t)
|
||||||
|
task=1
|
||||||
|
options=1
|
||||||
|
echo "Not implemented."
|
||||||
|
exit 1
|
||||||
|
;;
|
||||||
|
a)
|
||||||
|
arch=$OPTARG
|
||||||
|
options=1
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
done
|
||||||
|
|
||||||
|
# Done, now shift all option arguments out.
|
||||||
|
shift $((OPTIND-1))
|
||||||
|
|
||||||
|
if [ $# -gt 2 ] || [ $# -eq 0 ] || [ $# -lt 2 -a $options -eq 1 ]; then
|
||||||
|
echo "Usage: $0 [OPTIONS] <old> [new]"
|
||||||
|
echo
|
||||||
|
echo "OPTIONS:"
|
||||||
|
echo -e "\t-t\tCompare two brew tasks"
|
||||||
|
echo -e "\t-a ARCH\tGet rpms for the ARCH architecture"
|
||||||
|
echo -e "\t-p\tCompare built rpms in two paths."
|
||||||
|
echo -e "\t\tThis minimally needs glibc, glibc-common and glibc-benchtests"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ -z $2 ]; then
|
||||||
|
new="$1"
|
||||||
|
old=$(rpm --queryformat "%{VERSION}-%{RELEASE}\n" -q glibc | head -1)
|
||||||
|
installed=$old
|
||||||
|
else
|
||||||
|
new="$2"
|
||||||
|
old="$1"
|
||||||
|
fi
|
||||||
|
|
||||||
|
decompress_rpms() {
|
||||||
|
# We were given a path to the rpms. Figure out the version-release and
|
||||||
|
# decompress the rpms.
|
||||||
|
if [ -n $1 ]; then
|
||||||
|
vr=$(rpm --queryformat="%{VERSION}-%{RELEASE}" -qp $1/glibc-2*.rpm | head -1)
|
||||||
|
mkdir $vr && pushd $vr
|
||||||
|
fi
|
||||||
|
|
||||||
|
for r in $1*.rpm; do
|
||||||
|
( rpm2cpio $r | cpio -di ) > /dev/null
|
||||||
|
done
|
||||||
|
|
||||||
|
if [ -n $1 ]; then
|
||||||
|
popd
|
||||||
|
echo $vr
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
# Get rpms for a build and decompress them
|
||||||
|
get_build() {
|
||||||
|
echo "Processing build $1"
|
||||||
|
mkdir $1 && pushd $1
|
||||||
|
brew buildinfo "glibc-$1" |
|
||||||
|
sed -n -e "s|/mnt/koji\(.\+$arch.\+\)|http://kojipkgs.fedoraproject.org\1|p" |
|
||||||
|
while read url; do
|
||||||
|
echo "Downloading $url"
|
||||||
|
wget -q $url
|
||||||
|
done
|
||||||
|
decompress_rpms
|
||||||
|
|
||||||
|
echo "Removing rpms"
|
||||||
|
rm -f $1/*.rpm
|
||||||
|
|
||||||
|
popd
|
||||||
|
}
|
||||||
|
|
||||||
|
# Run benchmarks for a build
|
||||||
|
run_bench() {
|
||||||
|
if [ -z $1 ]; then
|
||||||
|
make DETAILED=1 ver=$installed prefix= -f /usr/libexec/glibc-benchtests/bench.mk bench
|
||||||
|
else
|
||||||
|
make DETAILED=1 ver=$1 prefix=$PWD -f $1/usr/libexec/glibc-benchtests/bench.mk bench
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
# Get absolute paths if needed, since we will change into the working directory
|
||||||
|
# next.
|
||||||
|
if [ $path -eq 1 ]; then
|
||||||
|
old_path=$(realpath $old)/
|
||||||
|
new_path=$(realpath $new)/
|
||||||
|
fi
|
||||||
|
|
||||||
|
tmpdir=$(mktemp -p /tmp -d glibc-bench-compare.$$.XXXX)
|
||||||
|
pushd $tmpdir
|
||||||
|
|
||||||
|
# Get both builds.
|
||||||
|
if [ $path -eq 0 ]; then
|
||||||
|
if [ -z $installed ]; then
|
||||||
|
get_build $old
|
||||||
|
fi
|
||||||
|
get_build $new
|
||||||
|
else
|
||||||
|
old=$(decompress_rpms $old_path)
|
||||||
|
new=$(decompress_rpms $new_path)
|
||||||
|
fi
|
||||||
|
|
||||||
|
# make bench for each of those.
|
||||||
|
if [ -z $installed ]; then
|
||||||
|
run_bench $old
|
||||||
|
else
|
||||||
|
run_bench
|
||||||
|
fi
|
||||||
|
run_bench $new
|
||||||
|
|
||||||
|
# Now run the comparison script.
|
||||||
|
$old/usr/libexec/glibc-benchtests/compare_bench.py $old/usr/libexec/glibc-benchtests/benchout.schema.json \
|
||||||
|
bench.$old.out bench.$new.out
|
286
glibc-c-utf8-locale.patch
Normal file
286
glibc-c-utf8-locale.patch
Normal file
@ -0,0 +1,286 @@
|
|||||||
|
Short description: Add C.UTF-8 support.
|
||||||
|
Author(s): Fedora glibc team <glibc@lists.fedoraproject.org>
|
||||||
|
Origin: PATCH
|
||||||
|
Upstream status: not-submitted
|
||||||
|
|
||||||
|
This patch needs to upstream as part of Carlos O'Donell
|
||||||
|
<carlos@redhat.com>'s work on enabling upstream C.UTF-8 support. This
|
||||||
|
work is currently blocked on cleaning up the test results to prove that
|
||||||
|
full code-point sorting is working as intended.
|
||||||
|
|
||||||
|
Note that this patch does not provide full code-point sorting as
|
||||||
|
expected.
|
||||||
|
|
||||||
|
This patch needs to upstream as soon as possible since it would be nice
|
||||||
|
to have this in F29 and fixed.
|
||||||
|
|
||||||
|
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>
|
||||||
|
+<U00010000>
|
||||||
|
+..
|
||||||
|
+<U0001FFFF>
|
||||||
|
+<U00020000>
|
||||||
|
+..
|
||||||
|
+<U0002FFFF>
|
||||||
|
+<U000E0000>
|
||||||
|
+..
|
||||||
|
+<U000EFFFF>
|
||||||
|
+<U000F0000>
|
||||||
|
+..
|
||||||
|
+<U000FFFFF>
|
||||||
|
+<U00100000>
|
||||||
|
+..
|
||||||
|
+<U0010FFFF>
|
||||||
|
+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
|
||||||
|
+
|
||||||
|
--
|
||||||
|
2.4.3
|
||||||
|
|
15
glibc-cs-path.patch
Normal file
15
glibc-cs-path.patch
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
Short description: Adjust CS_PATH return value.
|
||||||
|
Author(s): Fedora glibc team <glibc@lists.fedoraproject.org>
|
||||||
|
Origin: PATCH
|
||||||
|
Upstream status: not-needed
|
||||||
|
|
||||||
|
In Fedora we should return only /usr/bin because /bin is just a symlink
|
||||||
|
to /usr/bin after MoveToUsr transition (which glibc has not really
|
||||||
|
completed).
|
||||||
|
|
||||||
|
diff -pruN a/sysdeps/unix/confstr.h b/sysdeps/unix/confstr.h
|
||||||
|
--- a/sysdeps/unix/confstr.h 2012-12-25 08:32:13.000000000 +0530
|
||||||
|
+++ b/sysdeps/unix/confstr.h 2014-09-05 20:02:55.698275219 +0530
|
||||||
|
@@ -1 +1 @@
|
||||||
|
-#define CS_PATH "/bin:/usr/bin"
|
||||||
|
+#define CS_PATH "/usr/bin"
|
20
glibc-deprecated-selinux-makedb.patch
Normal file
20
glibc-deprecated-selinux-makedb.patch
Normal file
@ -0,0 +1,20 @@
|
|||||||
|
This is necessary to get things building again after libselinux changes.
|
||||||
|
A proper fix is under discussion upstream:
|
||||||
|
|
||||||
|
<https://sourceware.org/pipermail/libc-alpha/2020-July/116504.html>
|
||||||
|
|
||||||
|
diff --git a/nss/makedb.c b/nss/makedb.c
|
||||||
|
index 8e389a1683747cf1..9d81aed57d384a22 100644
|
||||||
|
--- a/nss/makedb.c
|
||||||
|
+++ b/nss/makedb.c
|
||||||
|
@@ -17,6 +17,10 @@
|
||||||
|
License along with the GNU C Library; if not, see
|
||||||
|
<https://www.gnu.org/licenses/>. */
|
||||||
|
|
||||||
|
+/* This file uses deprecated declarations from libselinux. */
|
||||||
|
+#include <libc-diag.h>
|
||||||
|
+DIAG_IGNORE_NEEDS_COMMENT (4.9, "-Wdeprecated-declarations");
|
||||||
|
+
|
||||||
|
#include <argp.h>
|
||||||
|
#include <assert.h>
|
||||||
|
#include <ctype.h>
|
17
glibc-deprecated-selinux-nscd.patch
Normal file
17
glibc-deprecated-selinux-nscd.patch
Normal file
@ -0,0 +1,17 @@
|
|||||||
|
This patch works around deprecated libselinux features used by nscd.
|
||||||
|
|
||||||
|
diff --git a/nscd/selinux.c b/nscd/selinux.c
|
||||||
|
index a4ea8008e201b939..0acca4639202a75a 100644
|
||||||
|
--- a/nscd/selinux.c
|
||||||
|
+++ b/nscd/selinux.c
|
||||||
|
@@ -17,6 +17,10 @@
|
||||||
|
License along with the GNU C Library; if not, see
|
||||||
|
<https://www.gnu.org/licenses/>. */
|
||||||
|
|
||||||
|
+/* This file uses deprecated declarations from libselinux. */
|
||||||
|
+#include <libc-diag.h>
|
||||||
|
+DIAG_IGNORE_NEEDS_COMMENT (4.9, "-Wdeprecated-declarations");
|
||||||
|
+
|
||||||
|
#include "config.h"
|
||||||
|
#include <error.h>
|
||||||
|
#include <errno.h>
|
91
glibc-fedora-__libc_multiple_libcs.patch
Normal file
91
glibc-fedora-__libc_multiple_libcs.patch
Normal file
@ -0,0 +1,91 @@
|
|||||||
|
Short description: Cleanup use of _dl_starting_up.
|
||||||
|
Author(s): Fedora glibc team <glibc@lists.fedoraproject.org>
|
||||||
|
Origin: PATCH
|
||||||
|
Upstream status: https://sourceware.org/ml/libc-alpha/2014-02/msg00589.html
|
||||||
|
|
||||||
|
Upstream discussions:
|
||||||
|
https://sourceware.org/ml/libc-alpha/2014-02/msg00580.html
|
||||||
|
|
||||||
|
Based on the following commit:
|
||||||
|
~~~
|
||||||
|
From 16552c01a66633c9e412984d9d92616bd4e5303c Mon Sep 17 00:00:00 2001
|
||||||
|
From: Andreas Schwab <schwab@redhat.com>
|
||||||
|
Date: Fri, 11 Jun 2010 11:04:11 +0200
|
||||||
|
Subject: [PATCH] Properly set __libc_multiple_libcs
|
||||||
|
|
||||||
|
* elf/rtld.c (_dl_starting_up): Always define.
|
||||||
|
(dl_main): Always set _dl_starting_up.
|
||||||
|
* elf/dl-support.c (_dl_starting_up): Always define.
|
||||||
|
* elf/dl-init.c (_dl_init): Always clear _dl_starting_up.
|
||||||
|
|
||||||
|
---
|
||||||
|
ChangeLog | 7 +++++++
|
||||||
|
elf/dl-init.c | 4 ----
|
||||||
|
elf/dl-support.c | 2 --
|
||||||
|
elf/rtld.c | 4 ----
|
||||||
|
4 files changed, 7 insertions(+), 10 deletions(-)
|
||||||
|
~~~
|
||||||
|
|
||||||
|
This patch needs to go upstream to get cleaned up, but has always involed
|
||||||
|
analysis of the GNU/Hurd parts of the change and that stalled out, but
|
||||||
|
perhaps with build-many-glibcs we can now test these changes more easily.
|
||||||
|
|
||||||
|
diff --git a/elf/dl-init.c b/elf/dl-init.c
|
||||||
|
index 518824e8a5826314..66c395474a57c1fd 100644
|
||||||
|
--- a/elf/dl-init.c
|
||||||
|
+++ b/elf/dl-init.c
|
||||||
|
@@ -120,8 +120,6 @@ _dl_init (struct link_map *main_map, int argc, char **argv, char **env)
|
||||||
|
while (i-- > 0)
|
||||||
|
call_init (main_map->l_initfini[i], argc, argv, env);
|
||||||
|
|
||||||
|
-#ifndef HAVE_INLINED_SYSCALLS
|
||||||
|
/* Finished starting up. */
|
||||||
|
_dl_starting_up = 0;
|
||||||
|
-#endif
|
||||||
|
}
|
||||||
|
diff --git a/elf/dl-support.c b/elf/dl-support.c
|
||||||
|
index 7704c101c5a543a1..ffa235c78df8481f 100644
|
||||||
|
--- a/elf/dl-support.c
|
||||||
|
+++ b/elf/dl-support.c
|
||||||
|
@@ -120,10 +120,8 @@ struct r_scope_elem _dl_initial_searchlist =
|
||||||
|
.r_nlist = 1,
|
||||||
|
};
|
||||||
|
|
||||||
|
-#ifndef HAVE_INLINED_SYSCALLS
|
||||||
|
/* Nonzero during startup. */
|
||||||
|
int _dl_starting_up = 1;
|
||||||
|
-#endif
|
||||||
|
|
||||||
|
/* Random data provided by the kernel. */
|
||||||
|
void *_dl_random;
|
||||||
|
diff --git a/elf/rtld.c b/elf/rtld.c
|
||||||
|
index 5b882163fae5ea8a..f93adf017c9d2110 100644
|
||||||
|
--- a/elf/rtld.c
|
||||||
|
+++ b/elf/rtld.c
|
||||||
|
@@ -316,7 +316,6 @@ audit_list_count (struct audit_list *list)
|
||||||
|
return naudit;
|
||||||
|
}
|
||||||
|
|
||||||
|
-#ifndef HAVE_INLINED_SYSCALLS
|
||||||
|
/* Set nonzero during loading and initialization of executable and
|
||||||
|
libraries, cleared before the executable's entry point runs. This
|
||||||
|
must not be initialized to nonzero, because the unused dynamic
|
||||||
|
@@ -326,7 +325,6 @@ audit_list_count (struct audit_list *list)
|
||||||
|
never be called. */
|
||||||
|
int _dl_starting_up = 0;
|
||||||
|
rtld_hidden_def (_dl_starting_up)
|
||||||
|
-#endif
|
||||||
|
|
||||||
|
/* This is the structure which defines all variables global to ld.so
|
||||||
|
(except those which cannot be added for some reason). */
|
||||||
|
@@ -1178,10 +1176,8 @@ dl_main (const ElfW(Phdr) *phdr,
|
||||||
|
/* Process the environment variable which control the behaviour. */
|
||||||
|
process_envvars (&mode, &audit_list);
|
||||||
|
|
||||||
|
-#ifndef HAVE_INLINED_SYSCALLS
|
||||||
|
/* Set up a flag which tells we are just starting. */
|
||||||
|
_dl_starting_up = 1;
|
||||||
|
-#endif
|
||||||
|
|
||||||
|
if (*user_entry == (ElfW(Addr)) ENTRY_POINT)
|
||||||
|
{
|
61
glibc-fedora-linux-tcsetattr.patch
Normal file
61
glibc-fedora-linux-tcsetattr.patch
Normal file
@ -0,0 +1,61 @@
|
|||||||
|
Short description: Fedora-specific workaround for kernel pty bug.
|
||||||
|
Author(s): Fedora glibc team <glibc@lists.fedoraproject.org>
|
||||||
|
Origin: PATCH
|
||||||
|
Upstream status: not-submitted
|
||||||
|
|
||||||
|
This is a Fedora-specific workaround for a kernel bug where calling
|
||||||
|
ioctl on a pty will silently ignore the invalid c_cflag. The
|
||||||
|
workaround is to use TCGETS to verify the setting matches. This is
|
||||||
|
not upstream and needs to either be removed or submitted upstream
|
||||||
|
after analysis.
|
||||||
|
|
||||||
|
Index: b/sysdeps/unix/sysv/linux/tcsetattr.c
|
||||||
|
===================================================================
|
||||||
|
--- a/sysdeps/unix/sysv/linux/tcsetattr.c
|
||||||
|
+++ b/sysdeps/unix/sysv/linux/tcsetattr.c
|
||||||
|
@@ -45,6 +45,7 @@ __tcsetattr (int fd, int optional_action
|
||||||
|
{
|
||||||
|
struct __kernel_termios k_termios;
|
||||||
|
unsigned long int cmd;
|
||||||
|
+ int retval;
|
||||||
|
|
||||||
|
switch (optional_actions)
|
||||||
|
{
|
||||||
|
@@ -75,7 +76,36 @@ __tcsetattr (int fd, int optional_action
|
||||||
|
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;
|
||||||
|
}
|
||||||
|
weak_alias (__tcsetattr, tcsetattr)
|
||||||
|
libc_hidden_def (tcsetattr)
|
49
glibc-fedora-localedata-rh61908.patch
Normal file
49
glibc-fedora-localedata-rh61908.patch
Normal file
@ -0,0 +1,49 @@
|
|||||||
|
Short description: Add 4 ISO-8859-15 locales to SUPPORTED for Euro symbol.
|
||||||
|
Author(s): Fedora glibc team <glibc@lists.fedoraproject.org>
|
||||||
|
Origin: PATCH
|
||||||
|
Bug-RHEL: #61908
|
||||||
|
Upstream status: not-needed
|
||||||
|
|
||||||
|
Very early RHL 7.3 requirement to add these locales so users can
|
||||||
|
get access to Euro symbol. We should review this bug and decide if
|
||||||
|
the UTF-8 locales are now serving the same purpose and drop the
|
||||||
|
additional locales.
|
||||||
|
|
||||||
|
* Tue Mar 26 2002 Jakub Jelinek <jakub@redhat.com> 2.2.5-28
|
||||||
|
- add a couple of .ISO-8859-15 locales (#61908)
|
||||||
|
|
||||||
|
diff -Nrup a/localedata/SUPPORTED b/localedata/SUPPORTED
|
||||||
|
--- a/localedata/SUPPORTED 2012-11-25 12:59:31.000000000 -0700
|
||||||
|
+++ b/localedata/SUPPORTED 2012-11-26 12:58:43.298223018 -0700
|
||||||
|
@@ -89,6 +89,7 @@ cy_GB.UTF-8/UTF-8 \
|
||||||
|
cy_GB/ISO-8859-14 \
|
||||||
|
da_DK.UTF-8/UTF-8 \
|
||||||
|
da_DK/ISO-8859-1 \
|
||||||
|
+da_DK.ISO-8859-15/ISO-8859-15 \
|
||||||
|
de_AT.UTF-8/UTF-8 \
|
||||||
|
de_AT/ISO-8859-1 \
|
||||||
|
de_AT@euro/ISO-8859-15 \
|
||||||
|
@@ -121,6 +122,7 @@ en_DK.UTF-8/UTF-8 \
|
||||||
|
en_DK/ISO-8859-1 \
|
||||||
|
en_GB.UTF-8/UTF-8 \
|
||||||
|
en_GB/ISO-8859-1 \
|
||||||
|
+en_GB.ISO-8859-15/ISO-8859-15 \
|
||||||
|
en_HK.UTF-8/UTF-8 \
|
||||||
|
en_HK/ISO-8859-1 \
|
||||||
|
en_IE.UTF-8/UTF-8 \
|
||||||
|
@@ -136,6 +138,7 @@ en_SG.UTF-8/UTF-8 \
|
||||||
|
en_SG/ISO-8859-1 \
|
||||||
|
en_US.UTF-8/UTF-8 \
|
||||||
|
en_US/ISO-8859-1 \
|
||||||
|
+en_US.ISO-8859-15/ISO-8859-15 \
|
||||||
|
en_ZA.UTF-8/UTF-8 \
|
||||||
|
en_ZA/ISO-8859-1 \
|
||||||
|
en_ZM/UTF-8 \
|
||||||
|
@@ -385,6 +388,7 @@ sv_FI/ISO-8859-1 \
|
||||||
|
sv_FI@euro/ISO-8859-15 \
|
||||||
|
sv_SE.UTF-8/UTF-8 \
|
||||||
|
sv_SE/ISO-8859-1 \
|
||||||
|
+sv_SE.ISO-8859-15/ISO-8859-15 \
|
||||||
|
sw_KE/UTF-8 \
|
||||||
|
sw_TZ/UTF-8 \
|
||||||
|
szl_PL/UTF-8 \
|
21
glibc-fedora-localedef.patch
Normal file
21
glibc-fedora-localedef.patch
Normal file
@ -0,0 +1,21 @@
|
|||||||
|
Short description: Fedora-specific glibc install locale changes.
|
||||||
|
Author(s): Fedora glibc team <glibc@lists.fedoraproject.org>
|
||||||
|
Origin: PATCH
|
||||||
|
Upstream status: not-needed
|
||||||
|
|
||||||
|
The Fedora glibc build and install does not need the normal install
|
||||||
|
behaviour which updates the locale archive. The Fedora install phase
|
||||||
|
in the spec file of the rpm will handle this manually.
|
||||||
|
|
||||||
|
diff --git a/localedata/Makefile b/localedata/Makefile
|
||||||
|
index 0eea396ad86da956..54caabda33728207 100644
|
||||||
|
--- a/localedata/Makefile
|
||||||
|
+++ b/localedata/Makefile
|
||||||
|
@@ -413,6 +413,7 @@ define build-one-locale
|
||||||
|
echo -n '...'; \
|
||||||
|
input=`echo $$locale | sed 's/\([^.]*\)[^@]*\(.*\)/\1\2/'`; \
|
||||||
|
$(LOCALEDEF) $$flags --alias-file=../intl/locale.alias \
|
||||||
|
+ --no-archive \
|
||||||
|
-i locales/$$input -f charmaps/$$charset \
|
||||||
|
$(addprefix --prefix=,$(install_root)) $$locale \
|
||||||
|
&& echo ' done';
|
31
glibc-fedora-manual-dircategory.patch
Normal file
31
glibc-fedora-manual-dircategory.patch
Normal file
@ -0,0 +1,31 @@
|
|||||||
|
Short description: Place glibc info into "Libraries" category.
|
||||||
|
Author(s): Fedora glibc team <glibc@lists.fedoraproject.org>
|
||||||
|
Origin: PATCH
|
||||||
|
Upstream status: not-needed
|
||||||
|
|
||||||
|
The category names for libraries is completely random including
|
||||||
|
"Libraries", "GNU Libraries", "GNU libraries", and "Software libraries."
|
||||||
|
In the GNU info manual the "Software libraries" category is given as an
|
||||||
|
example, but really we need to standardize on a category for upstream.
|
||||||
|
I suggest we drop this change after some upstream discussion.
|
||||||
|
|
||||||
|
From 4820b9175535e13df79ce816106016040014916e Mon Sep 17 00:00:00 2001
|
||||||
|
From: Jakub Jelinek <jakub@redhat.com>
|
||||||
|
Date: Fri, 3 Nov 2006 16:31:21 +0000
|
||||||
|
Subject: [PATCH] Change @dircategory.
|
||||||
|
|
||||||
|
---
|
||||||
|
manual/libc.texinfo | 2 +-
|
||||||
|
1 files changed, 1 insertions(+), 1 deletions(-)
|
||||||
|
|
||||||
|
--- a/manual/libc.texinfo
|
||||||
|
+++ b/manual/libc.texinfo
|
||||||
|
@@ -7,7 +7,7 @@
|
||||||
|
@include macros.texi
|
||||||
|
|
||||||
|
@comment Tell install-info what to do.
|
||||||
|
-@dircategory Software libraries
|
||||||
|
+@dircategory Libraries
|
||||||
|
@direntry
|
||||||
|
* Libc: (libc). C library.
|
||||||
|
@end direntry
|
20
glibc-fedora-nscd.patch
Normal file
20
glibc-fedora-nscd.patch
Normal file
@ -0,0 +1,20 @@
|
|||||||
|
Short description: NSCD must use nscd user.
|
||||||
|
Author(s): Fedora glibc team <glibc@lists.fedoraproject.org>
|
||||||
|
Origin: PATCH
|
||||||
|
Upstream status: not-needed
|
||||||
|
|
||||||
|
Fedora-specific configuration adjustment to introduce the nscd user.
|
||||||
|
(Upstream does not assume this user exists.)
|
||||||
|
|
||||||
|
diff -Nrup a/nscd/nscd.conf b/nscd/nscd.conf
|
||||||
|
--- a/nscd/nscd.conf 2012-06-05 07:42:49.000000000 -0600
|
||||||
|
+++ b/nscd/nscd.conf 2012-06-07 12:15:21.818318670 -0600
|
||||||
|
@@ -33,7 +33,7 @@
|
||||||
|
# logfile /var/log/nscd.log
|
||||||
|
# threads 4
|
||||||
|
# max-threads 32
|
||||||
|
-# server-user nobody
|
||||||
|
+ server-user nscd
|
||||||
|
# stat-user somebody
|
||||||
|
debug-level 0
|
||||||
|
# reload-count 5
|
46
glibc-fedora-nsswitch.patch
Normal file
46
glibc-fedora-nsswitch.patch
Normal file
@ -0,0 +1,46 @@
|
|||||||
|
The Fedora /etc/nsswitch.conf is based largely on the upstream
|
||||||
|
version with minor downstream distribution modifications for
|
||||||
|
use with SSSD and systemd.
|
||||||
|
|
||||||
|
diff --git a/nss/nsswitch.conf b/nss/nsswitch.conf
|
||||||
|
index 4a6bcb1f7bc0b1f4..980a68e32e6a04b8 100644
|
||||||
|
--- a/nss/nsswitch.conf
|
||||||
|
+++ b/nss/nsswitch.conf
|
||||||
|
@@ -1,7 +1,7 @@
|
||||||
|
#
|
||||||
|
# /etc/nsswitch.conf
|
||||||
|
#
|
||||||
|
-# An example Name Service Switch config file. This file should be
|
||||||
|
+# Name Service Switch config file. This file should be
|
||||||
|
# sorted with the most-used services at the beginning.
|
||||||
|
#
|
||||||
|
# Valid databases are: aliases, ethers, group, gshadow, hosts,
|
||||||
|
@@ -52,19 +52,21 @@
|
||||||
|
# shadow: db files
|
||||||
|
# group: db files
|
||||||
|
|
||||||
|
-# In alphabetical order. Re-order as required to optimize peformance.
|
||||||
|
+# In order of likelihood of use to accelerate lookup.
|
||||||
|
+passwd: sss files
|
||||||
|
+shadow: files
|
||||||
|
+group: sss files
|
||||||
|
+hosts: files dns myhostname
|
||||||
|
+services: files sss
|
||||||
|
+netgroup: sss
|
||||||
|
+automount: files sss
|
||||||
|
+
|
||||||
|
aliases: files
|
||||||
|
ethers: files
|
||||||
|
-group: files
|
||||||
|
gshadow: files
|
||||||
|
-hosts: files dns
|
||||||
|
# Allow initgroups to default to the setting for group.
|
||||||
|
# initgroups: files
|
||||||
|
-netgroup: files
|
||||||
|
networks: files dns
|
||||||
|
-passwd: files
|
||||||
|
protocols: files
|
||||||
|
publickey: files
|
||||||
|
rpc: files
|
||||||
|
-shadow: files
|
||||||
|
-services: files
|
21
glibc-nscd-sysconfig.patch
Normal file
21
glibc-nscd-sysconfig.patch
Normal file
@ -0,0 +1,21 @@
|
|||||||
|
Short description: Provide options to nscd startup.
|
||||||
|
Author(s): Fedora glibc team <glibc@lists.fedoraproject.org>
|
||||||
|
Origin: PATCH
|
||||||
|
Upstream status: not-needed
|
||||||
|
|
||||||
|
Fedora-specific nscd startup configuration file.
|
||||||
|
|
||||||
|
diff --git a/nscd/nscd.service b/nscd/nscd.service
|
||||||
|
index b7428a3..19ba185 100644
|
||||||
|
--- a/nscd/nscd.service
|
||||||
|
+++ b/nscd/nscd.service
|
||||||
|
@@ -5,7 +5,8 @@ Description=Name Service Cache Daemon
|
||||||
|
|
||||||
|
[Service]
|
||||||
|
Type=forking
|
||||||
|
-ExecStart=/usr/sbin/nscd
|
||||||
|
+EnvironmentFile=-/etc/sysconfig/nscd
|
||||||
|
+ExecStart=/usr/sbin/nscd $NSCD_OPTIONS
|
||||||
|
ExecStop=/usr/sbin/nscd --shutdown
|
||||||
|
ExecReload=/usr/sbin/nscd -i passwd
|
||||||
|
ExecReload=/usr/sbin/nscd -i group
|
30
glibc-python3.patch
Normal file
30
glibc-python3.patch
Normal file
@ -0,0 +1,30 @@
|
|||||||
|
Use python3 for installed executable python scripts.
|
||||||
|
|
||||||
|
Fedora is a Python3-only distribution:
|
||||||
|
https://fedoraproject.org/wiki/FinalizingFedoraSwitchtoPython3
|
||||||
|
|
||||||
|
This fixes build failures where builders may strictly enforce only
|
||||||
|
python3 during a transitional phase.
|
||||||
|
|
||||||
|
Author: Carlos O'Donell <carlos@redhat.com>
|
||||||
|
|
||||||
|
diff --git a/benchtests/scripts/compare_bench.py b/benchtests/scripts/compare_bench.py
|
||||||
|
index a215ebc9bd92ba73..f174161ed3147e03 100755
|
||||||
|
--- a/benchtests/scripts/compare_bench.py
|
||||||
|
+++ b/benchtests/scripts/compare_bench.py
|
||||||
|
@@ -1,4 +1,4 @@
|
||||||
|
-#!/usr/bin/python
|
||||||
|
+#!/usr/bin/python3
|
||||||
|
# Copyright (C) 2015-2020 Free Software Foundation, Inc.
|
||||||
|
# This file is part of the GNU C Library.
|
||||||
|
#
|
||||||
|
diff --git a/benchtests/scripts/import_bench.py b/benchtests/scripts/import_bench.py
|
||||||
|
index 08681aafdc200f64..2264da00370f9f02 100644
|
||||||
|
--- a/benchtests/scripts/import_bench.py
|
||||||
|
+++ b/benchtests/scripts/import_bench.py
|
||||||
|
@@ -1,4 +1,4 @@
|
||||||
|
-#!/usr/bin/python
|
||||||
|
+#!/usr/bin/python3
|
||||||
|
# Copyright (C) 2015-2020 Free Software Foundation, Inc.
|
||||||
|
# This file is part of the GNU C Library.
|
||||||
|
#
|
38
glibc-rh1070416.patch
Normal file
38
glibc-rh1070416.patch
Normal file
@ -0,0 +1,38 @@
|
|||||||
|
Short description: Add syslog.target dependency.
|
||||||
|
Author(s): Fedora glibc team <glibc@lists.fedoraproject.org>
|
||||||
|
Origin: PATCH
|
||||||
|
Bug-Fedora: #1070416
|
||||||
|
Upstream status: not-needed
|
||||||
|
|
||||||
|
Fedora-specific changes to the nscd.service file.
|
||||||
|
See also: glibc-nscd-sysconfig.patch.
|
||||||
|
|
||||||
|
--- a/nscd/nscd.service
|
||||||
|
+++ b/nscd/nscd.service
|
||||||
|
@@ -2,6 +2,7 @@
|
||||||
|
|
||||||
|
[Unit]
|
||||||
|
Description=Name Service Cache Daemon
|
||||||
|
+After=syslog.target
|
||||||
|
|
||||||
|
[Service]
|
||||||
|
Type=forking
|
||||||
|
@@ -17,3 +18,4 @@
|
||||||
|
|
||||||
|
[Install]
|
||||||
|
WantedBy=multi-user.target
|
||||||
|
+Also=nscd.socket
|
||||||
|
diff --git a/nscd/nscd.socket b/nscd/nscd.socket
|
||||||
|
new file mode 100644
|
||||||
|
index 0000000..7e512d5
|
||||||
|
--- /dev/null
|
||||||
|
+++ b/nscd/nscd.socket
|
||||||
|
@@ -0,0 +1,8 @@
|
||||||
|
+[Unit]
|
||||||
|
+Description=Name Service Cache Daemon Socket
|
||||||
|
+
|
||||||
|
+[Socket]
|
||||||
|
+ListenDatagram=/var/run/nscd/socket
|
||||||
|
+
|
||||||
|
+[Install]
|
||||||
|
+WantedBy=sockets.target
|
21
glibc-rh697421.patch
Normal file
21
glibc-rh697421.patch
Normal file
@ -0,0 +1,21 @@
|
|||||||
|
Short description: Add UCS-2 aliases.
|
||||||
|
Author(s): Fedora glibc team <glibc@lists.fedoraproject.org>
|
||||||
|
Origin: PATCH
|
||||||
|
Bug-RHEL: #697421
|
||||||
|
Upstream status: https://sourceware.org/ml/libc-alpha/2012-12/msg00103.html
|
||||||
|
|
||||||
|
This is a Fedora-specific change to include new aliases for UCS-2
|
||||||
|
data for gconv used by a certain class of users. This should be
|
||||||
|
revisited at some point to determine if those users are just using
|
||||||
|
UTF-8 at this point.
|
||||||
|
|
||||||
|
diff -rup a/iconvdata/gconv-modules b/iconvdata/gconv-modules
|
||||||
|
--- a/iconvdata/gconv-modules 2010-05-04 05:27:23.000000000 -0600
|
||||||
|
+++ b/iconvdata/gconv-modules 2012-01-26 10:58:24.181895489 -0700
|
||||||
|
@@ -1954,3 +1954,6 @@ alias HPGREEK8// HP-GREEK8//
|
||||||
|
alias OSF10010004// HP-GREEK8//
|
||||||
|
module HP-GREEK8// INTERNAL HP-GREEK8 1
|
||||||
|
module INTERNAL HP-GREEK8// HP-GREEK8 1
|
||||||
|
+
|
||||||
|
+alias ISO-10646-UCS-2// UNICODE//
|
||||||
|
+alias ISO-10646-UCS-2// ISO-10646/UTF8/
|
111
glibc-rh741105.patch
Normal file
111
glibc-rh741105.patch
Normal file
@ -0,0 +1,111 @@
|
|||||||
|
Short description: Work ld.so --verify crash on debuginfo files.
|
||||||
|
Author(s): Fedora glibc team <glibc@lists.fedoraproject.org>
|
||||||
|
Origin: PATCH
|
||||||
|
Bug-RHEL: #741105, #767146
|
||||||
|
Upstream status: not-needed
|
||||||
|
|
||||||
|
This change is designed to work around running ld.so on a debuginfo
|
||||||
|
file. This is the wrong fix for this problem and should be dropped.
|
||||||
|
The correct solution is to mark debuginfo files as new types of
|
||||||
|
ELF files.
|
||||||
|
|
||||||
|
|
||||||
|
diff --git a/elf/dl-load.c b/elf/dl-load.c
|
||||||
|
index 646c5dca40efcc9b..1f44ea3744f139f3 100644
|
||||||
|
--- a/elf/dl-load.c
|
||||||
|
+++ b/elf/dl-load.c
|
||||||
|
@@ -952,6 +952,18 @@ _dl_map_object_from_fd (const char *name, const char *origname, int fd,
|
||||||
|
in this information for the executable in case of an explicit
|
||||||
|
loader invocation. */
|
||||||
|
struct r_file_id id;
|
||||||
|
+ struct stat64 st;
|
||||||
|
+
|
||||||
|
+ if (__glibc_unlikely (!_dl_get_file_id (fd, &id, &st)))
|
||||||
|
+ {
|
||||||
|
+ errstring = N_("cannot stat shared object");
|
||||||
|
+ call_lose_errno:
|
||||||
|
+ errval = errno;
|
||||||
|
+ call_lose:
|
||||||
|
+ lose (errval, fd, name, realname, l, errstring,
|
||||||
|
+ make_consistent ? r : NULL, nsid);
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
if (mode & __RTLD_OPENEXEC)
|
||||||
|
{
|
||||||
|
assert (nsid == LM_ID_BASE);
|
||||||
|
@@ -959,16 +971,6 @@ _dl_map_object_from_fd (const char *name, const char *origname, int fd,
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
- if (__glibc_unlikely (!_dl_get_file_id (fd, &id)))
|
||||||
|
- {
|
||||||
|
- errstring = N_("cannot stat shared object");
|
||||||
|
- call_lose_errno:
|
||||||
|
- errval = errno;
|
||||||
|
- call_lose:
|
||||||
|
- lose (errval, fd, name, realname, l, errstring,
|
||||||
|
- make_consistent ? r : NULL, nsid);
|
||||||
|
- }
|
||||||
|
-
|
||||||
|
/* Look again to see if the real name matched another already loaded. */
|
||||||
|
for (l = GL(dl_ns)[nsid]._ns_loaded; l != NULL; l = l->l_next)
|
||||||
|
if (!l->l_removed && _dl_file_id_match_p (&l->l_file_id, &id))
|
||||||
|
@@ -1147,6 +1149,16 @@ _dl_map_object_from_fd (const char *name, const char *origname, int fd,
|
||||||
|
= N_("ELF load command address/offset not properly aligned");
|
||||||
|
goto call_lose;
|
||||||
|
}
|
||||||
|
+ if (__glibc_unlikely (ph->p_offset + ph->p_filesz > st.st_size))
|
||||||
|
+ {
|
||||||
|
+ /* If the segment requires zeroing of part of its last
|
||||||
|
+ page, we'll crash when accessing the unmapped page.
|
||||||
|
+ There's still a possibility of a race, if the shared
|
||||||
|
+ object is truncated between the fxstat above and the
|
||||||
|
+ memset below. */
|
||||||
|
+ errstring = N_("ELF load command past end of file");
|
||||||
|
+ goto call_lose;
|
||||||
|
+ }
|
||||||
|
|
||||||
|
struct loadcmd *c = &loadcmds[nloadcmds++];
|
||||||
|
c->mapstart = ALIGN_DOWN (ph->p_vaddr, GLRO(dl_pagesize));
|
||||||
|
diff --git a/sysdeps/generic/dl-fileid.h b/sysdeps/generic/dl-fileid.h
|
||||||
|
index 459328d28c62c8e1..5070580b1b0cc629 100644
|
||||||
|
--- a/sysdeps/generic/dl-fileid.h
|
||||||
|
+++ b/sysdeps/generic/dl-fileid.h
|
||||||
|
@@ -29,7 +29,8 @@ struct r_file_id
|
||||||
|
On error, returns false, with errno set. */
|
||||||
|
static inline bool
|
||||||
|
_dl_get_file_id (int fd __attribute__ ((unused)),
|
||||||
|
- struct r_file_id *id __attribute__ ((unused)))
|
||||||
|
+ struct r_file_id *id __attribute__ ((unused)),
|
||||||
|
+ struct stat64_t *st __attribute__((unused)))
|
||||||
|
{
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
diff --git a/sysdeps/posix/dl-fileid.h b/sysdeps/posix/dl-fileid.h
|
||||||
|
index b3c8166701650b8b..cd862f511e6e3e94 100644
|
||||||
|
--- a/sysdeps/posix/dl-fileid.h
|
||||||
|
+++ b/sysdeps/posix/dl-fileid.h
|
||||||
|
@@ -27,18 +27,16 @@ struct r_file_id
|
||||||
|
ino64_t ino;
|
||||||
|
};
|
||||||
|
|
||||||
|
-/* Sample FD to fill in *ID. Returns true on success.
|
||||||
|
+/* Sample FD to fill in *ID and *ST. Returns true on success.
|
||||||
|
On error, returns false, with errno set. */
|
||||||
|
static inline bool
|
||||||
|
-_dl_get_file_id (int fd, struct r_file_id *id)
|
||||||
|
+_dl_get_file_id (int fd, struct r_file_id *id, struct stat64 *st)
|
||||||
|
{
|
||||||
|
- struct stat64 st;
|
||||||
|
-
|
||||||
|
- if (__glibc_unlikely (__fstat64 (fd, &st) < 0))
|
||||||
|
+ if (__glibc_unlikely (__fstat64 (fd, st) < 0))
|
||||||
|
return false;
|
||||||
|
|
||||||
|
- id->dev = st.st_dev;
|
||||||
|
- id->ino = st.st_ino;
|
||||||
|
+ id->dev = st->st_dev;
|
||||||
|
+ id->ino = st->st_ino;
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
91
glibc-rh819430.patch
Normal file
91
glibc-rh819430.patch
Normal file
@ -0,0 +1,91 @@
|
|||||||
|
Short description: fnmatch() fails with MBCS.
|
||||||
|
Author(s): Fedora glibc team <glibc@lists.fedoraproject.org>
|
||||||
|
Origin: PATCH
|
||||||
|
Bug-RHEL: #819430, #826149, #826151
|
||||||
|
Bug-Upstream: #14185
|
||||||
|
Upstream status: not-submitted
|
||||||
|
|
||||||
|
fnmatch() fails when '*' wildcard is applied on the file name
|
||||||
|
containing multi-byte character(s)
|
||||||
|
|
||||||
|
This needs to be reviewed thoroughly and go upstream with a
|
||||||
|
new test case.
|
||||||
|
|
||||||
|
diff -Nrup a/posix/fnmatch.c b/posix/fnmatch.c
|
||||||
|
--- a/posix/fnmatch.c 2012-01-01 07:16:32.000000000 -0500
|
||||||
|
+++ b/posix/fnmatch.c 2012-05-23 14:14:29.099461189 -0400
|
||||||
|
@@ -333,6 +333,7 @@ fnmatch (pattern, string, flags)
|
||||||
|
# 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;
|
||||||
|
@@ -356,10 +357,8 @@ fnmatch (pattern, string, flags)
|
||||||
|
alloca_used);
|
||||||
|
n = mbsrtowcs (wpattern, &p, n + 1, &ps);
|
||||||
|
if (__glibc_unlikely (n == (size_t) -1))
|
||||||
|
- /* 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));
|
||||||
|
@@ -371,10 +370,8 @@ fnmatch (pattern, string, flags)
|
||||||
|
prepare_wpattern:
|
||||||
|
n = mbsrtowcs (NULL, &pattern, 0, &ps);
|
||||||
|
if (__glibc_unlikely (n == (size_t) -1))
|
||||||
|
- /* 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 (__glibc_unlikely (n >= (size_t) -1 / sizeof (wchar_t)))
|
||||||
|
{
|
||||||
|
__set_errno (ENOMEM);
|
||||||
|
@@ -401,14 +398,8 @@ fnmatch (pattern, string, flags)
|
||||||
|
alloca_used);
|
||||||
|
n = mbsrtowcs (wstring, &p, n + 1, &ps);
|
||||||
|
if (__glibc_unlikely (n == (size_t) -1))
|
||||||
|
- {
|
||||||
|
- /* Something wrong.
|
||||||
|
- XXX Do we have to set `errno' to something which
|
||||||
|
- mbsrtows hasn't already done? */
|
||||||
|
- free_return:
|
||||||
|
- free (wpattern_malloc);
|
||||||
|
- return -1;
|
||||||
|
- }
|
||||||
|
+ /* Something wrong: Fall back to single byte matching. */
|
||||||
|
+ goto free_and_try_singlebyte;
|
||||||
|
if (p)
|
||||||
|
{
|
||||||
|
memset (&ps, '\0', sizeof (ps));
|
||||||
|
@@ -420,10 +411,8 @@ fnmatch (pattern, string, flags)
|
||||||
|
prepare_wstring:
|
||||||
|
n = mbsrtowcs (NULL, &string, 0, &ps);
|
||||||
|
if (__glibc_unlikely (n == (size_t) -1))
|
||||||
|
- /* Something wrong.
|
||||||
|
- XXX Do we have to set `errno' to something which mbsrtows hasn't
|
||||||
|
- already done? */
|
||||||
|
- goto free_return;
|
||||||
|
+ /* Something wrong: Fall back to singlebyte matching. */
|
||||||
|
+ goto free_and_try_singlebyte;
|
||||||
|
if (__glibc_unlikely (n >= (size_t) -1 / sizeof (wchar_t)))
|
||||||
|
{
|
||||||
|
free (wpattern_malloc);
|
||||||
|
@@ -450,6 +439,10 @@ fnmatch (pattern, string, flags)
|
||||||
|
free (wpattern_malloc);
|
||||||
|
|
||||||
|
return res;
|
||||||
|
+ free_and_try_singlebyte:
|
||||||
|
+ free(wpattern_malloc);
|
||||||
|
+ try_singlebyte:
|
||||||
|
+ pattern = orig_pattern;
|
||||||
|
}
|
||||||
|
# endif /* mbstate_t and mbsrtowcs or _LIBC. */
|
||||||
|
|
37
glibc-rh827510.patch
Normal file
37
glibc-rh827510.patch
Normal file
@ -0,0 +1,37 @@
|
|||||||
|
Short description: Fix newlocale error return.
|
||||||
|
Author(s): Fedora glibc team <glibc@lists.fedoraproject.org>
|
||||||
|
Origin: PATCH
|
||||||
|
Bug-RHEL: #832516
|
||||||
|
Bug-Fedora: #827510
|
||||||
|
Bug-Upstream: #14247
|
||||||
|
Upstream status: not-submitted
|
||||||
|
|
||||||
|
This needs to go upstream right away to fix the error case for
|
||||||
|
newlocale not correctly returning an error.
|
||||||
|
|
||||||
|
2012-06-14 Jeff Law <law@redhat.com>
|
||||||
|
|
||||||
|
* locale/loadlocale.c (_nl_load_locale): Delay setting
|
||||||
|
file->decided until we have successfully loaded the file's
|
||||||
|
data.
|
||||||
|
|
||||||
|
diff --git a/locale/loadlocale.c b/locale/loadlocale.c
|
||||||
|
index e3fa187..9fd9216 100644
|
||||||
|
--- a/locale/loadlocale.c
|
||||||
|
+++ b/locale/loadlocale.c
|
||||||
|
@@ -169,7 +169,6 @@ _nl_load_locale (struct loaded_l10nfile *file, int category)
|
||||||
|
int save_err;
|
||||||
|
int alloc = ld_mapped;
|
||||||
|
|
||||||
|
- file->decided = 1;
|
||||||
|
file->data = NULL;
|
||||||
|
|
||||||
|
fd = __open_nocancel (file->filename, O_RDONLY | O_CLOEXEC);
|
||||||
|
@@ -278,6 +277,7 @@ _nl_load_locale (struct loaded_l10nfile *file, int category)
|
||||||
|
newdata->alloc = alloc;
|
||||||
|
|
||||||
|
file->data = newdata;
|
||||||
|
+ file->decided = 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
25
glibc-rhbz1869030-faccessat2-eperm.patch
Normal file
25
glibc-rhbz1869030-faccessat2-eperm.patch
Normal file
@ -0,0 +1,25 @@
|
|||||||
|
With older systemd-nspawn the faccessat2 syscall was denied but
|
||||||
|
instead of returning ENOSYS it returned EPERM. This has since
|
||||||
|
been corrected in upstream systemd-nsapwn, but with older builders
|
||||||
|
that may have older nspawn the Fedora Rawhide glibc should fall
|
||||||
|
back to faccessat when it sees ENOSYS *or* EPERM. This is a
|
||||||
|
Fedora Rawhide-only patch that should be removed before the next
|
||||||
|
release.
|
||||||
|
|
||||||
|
diff --git a/sysdeps/unix/sysv/linux/faccessat.c b/sysdeps/unix/sysv/linux/faccessat.c
|
||||||
|
index 56cb6dcc8b4d58d3..5de75032bbc93a2c 100644
|
||||||
|
--- a/sysdeps/unix/sysv/linux/faccessat.c
|
||||||
|
+++ b/sysdeps/unix/sysv/linux/faccessat.c
|
||||||
|
@@ -34,7 +34,11 @@ faccessat (int fd, const char *file, int mode, int flag)
|
||||||
|
#if __ASSUME_FACCESSAT2
|
||||||
|
return ret;
|
||||||
|
#else
|
||||||
|
- if (ret == 0 || errno != ENOSYS)
|
||||||
|
+ /* Fedora-specific workaround:
|
||||||
|
+ As a workround for a broken systemd-nspawn that returns
|
||||||
|
+ EPERM when a syscall is not allowed instead of ENOSYS
|
||||||
|
+ we must check for EPERM here and fall back to faccessat. */
|
||||||
|
+ if (ret == 0 || !(errno == ENOSYS || errno == EPERM))
|
||||||
|
return ret;
|
||||||
|
|
||||||
|
if (flag & ~(AT_SYMLINK_NOFOLLOW | AT_EACCESS))
|
3990
glibc.spec
Normal file
3990
glibc.spec
Normal file
File diff suppressed because it is too large
Load Diff
40
parse-SUPPORTED.py
Normal file
40
parse-SUPPORTED.py
Normal file
@ -0,0 +1,40 @@
|
|||||||
|
#!/usr/bin/python3
|
||||||
|
#
|
||||||
|
# This script turns localedata/SUPPORTED (whose path is passed as the
|
||||||
|
# first argument) into a normalized list of LANGUAGE "_" REGION pairs.
|
||||||
|
# (If there is no REGION defined, only LANGUAGE is used.) The list
|
||||||
|
# is written to standard output, with one element per line.
|
||||||
|
|
||||||
|
import sys
|
||||||
|
|
||||||
|
supported, = sys.argv[1:]
|
||||||
|
|
||||||
|
# Pairs seen so far. Used to suppress duplicates.
|
||||||
|
seen = set()
|
||||||
|
with open(supported) as inp:
|
||||||
|
for line in inp:
|
||||||
|
if line.startswith("#") or line == "SUPPORTED-LOCALES=\\\n":
|
||||||
|
# Comment or prefix.
|
||||||
|
continue
|
||||||
|
if not line.endswith(" \\\n"):
|
||||||
|
raise IOError("line without continuation: " + repr(line))
|
||||||
|
try:
|
||||||
|
slash = line.index("/")
|
||||||
|
except ValueError:
|
||||||
|
raise IOError("line without slash: " + repr(line))
|
||||||
|
spec = line[:slash]
|
||||||
|
for separator in ".@":
|
||||||
|
try:
|
||||||
|
# Strip charset, variant specifiers.
|
||||||
|
spec = spec[:spec.index(separator)]
|
||||||
|
except ValueError:
|
||||||
|
pass
|
||||||
|
seen.add(spec)
|
||||||
|
|
||||||
|
# The C locale does not correspond to a language.
|
||||||
|
seen.remove("C")
|
||||||
|
|
||||||
|
# The glibc source file is not sorted.
|
||||||
|
for spec in sorted(seen):
|
||||||
|
print(spec)
|
||||||
|
print() # The Lua generator produces a trailing newline.
|
1
sources
Normal file
1
sources
Normal file
@ -0,0 +1 @@
|
|||||||
|
SHA512 (glibc-2.32.9000-165-g72d36ffd7d.tar.xz) = 1f7acebe842ba42f17561b177a3070cee88ea8d5e8beb42a0b5952711e714165a0c16105a0e5ec3cafde6bc8e01e2f7121b42bebe770353174458b6e89e08782
|
11
template.patch
Normal file
11
template.patch
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
Short description: <Short description>
|
||||||
|
Author(s): <Who wrote them. Comma separated.>
|
||||||
|
Origin: <Source repo(s) where it came from or keyword "PATCH" if this is simply a patch>
|
||||||
|
# Likely git://sourceware.org/git/glibc.git
|
||||||
|
Bug-RHEL: <Rhel bug #'s, comma separated e.g. #XXX, #YYY, #ZZZ>
|
||||||
|
Bug-Fedora: <Fedora bug #'s, comma separated e.g. #XXX, #YYY, #ZZZ>
|
||||||
|
Bug-Upstream: <Upstream bug#'s, comma separated e.g. #XXX, #YYY, #ZZZ>
|
||||||
|
Upstream status: <[Patchwork URL|libc-alpha URL|not-needed|not-submitted|committed] for each commit>
|
||||||
|
# <Additional descriptive text follows 'Upstream status:' line>
|
||||||
|
<If upstream status == committed then a copy of the upstream commit log follows>
|
||||||
|
<Patch>
|
Loading…
Reference in New Issue
Block a user