From d0ef83992ecaf363c8b1d5468c2b13e2789ca7be Mon Sep 17 00:00:00 2001 From: Jeff Law Date: Aug 17 2012 20:36:06 +0000 Subject: - Fix race in intl/* testsuite (#849203) --- diff --git a/glibc-rh849203.patch b/glibc-rh849203.patch new file mode 100644 index 0000000..a8b83b3 --- /dev/null +++ b/glibc-rh849203.patch @@ -0,0 +1,211 @@ +2012-08-17 Jeff Law + + * intl/Makefile (codeset_mo): New variable. + ($(codeset_mo)): New target. + (tst-codeset.out): Depend on that. Remove explicit rule. + (tst-gettext3.out, tst-gettext5.out): Likewise. + (LOCPATH-ENV, tst-codeset-ENV): New variables. + (tst-gettext3-ENV, tst-gettext5-ENV): Likewise. + * intl/tst-codeset.sh: Remove. + * intl/tst-gettext3.sh: Likewise. + * intl/tst-gettext5.sh: Likewise. + +diff --git a/intl/Makefile b/intl/Makefile +index e95f519..d63ffe4 100644 +--- a/intl/Makefile ++++ b/intl/Makefile +@@ -61,6 +61,16 @@ ifneq (no,$(PERL)) + tests: $(objpfx)mtrace-tst-gettext + endif + endif ++ ++# Multiple tests use this data. Create it once to avoid racing and ++# spurious test failures. ++codeset_mo = $(objpfx)domaindir/de_DE/LC_MESSAGES/codeset.mo ++ ++$(codeset_mo): ++ $(make-target-directory) ++ msgfmt -o $@T tstcodeset.po ++ mv -f $@T $@ ++ + $(objpfx)mtrace-tst-gettext: $(objpfx)tst-gettext.out + $(common-objpfx)malloc/mtrace $(objpfx)tst-gettext.mtrace > $@ + $(objpfx)tst-gettext.out: tst-gettext.sh $(objpfx)tst-gettext +@@ -70,16 +80,14 @@ $(objpfx)tst-translit.out: tst-translit.sh $(objpfx)tst-translit + $(SHELL) -e $< $(common-objpfx) $(common-objpfx)intl/ + $(objpfx)tst-gettext2.out: tst-gettext2.sh $(objpfx)tst-gettext2 + $(SHELL) -e $< $(common-objpfx) $(common-objpfx)intl/ +-$(objpfx)tst-codeset.out: tst-codeset.sh $(objpfx)tst-codeset +- $(SHELL) -e $< $(common-objpfx) $(common-objpfx)intl/ +-$(objpfx)tst-gettext3.out: tst-gettext3.sh $(objpfx)tst-gettext3 +- $(SHELL) -e $< $(common-objpfx) $(common-objpfx)intl/ + $(objpfx)tst-gettext4.out: tst-gettext4.sh $(objpfx)tst-gettext4 + $(SHELL) -e $< $(common-objpfx) '$(run-program-prefix)' $(common-objpfx)intl/ +-$(objpfx)tst-gettext5.out: tst-gettext5.sh $(objpfx)tst-gettext5 +- $(SHELL) -e $< $(common-objpfx) '$(run-program-prefix)' $(common-objpfx)intl/ + $(objpfx)tst-gettext6.out: tst-gettext6.sh $(objpfx)tst-gettext6 + $(SHELL) -e $< $(common-objpfx) '$(run-program-prefix)' $(common-objpfx)intl/ ++ ++$(objpfx)tst-codeset.out: $(codeset_mo) ++$(objpfx)tst-gettext3.out: $(codeset_mo) ++$(objpfx)tst-gettext5.out: $(codeset_mo) + endif + endif + +@@ -96,6 +104,11 @@ CFLAGS-tst-gettext4.c = -DOBJPFX=\"$(objpfx)\" + CFLAGS-tst-gettext5.c = -DOBJPFX=\"$(objpfx)\" + CFLAGS-tst-gettext6.c = -DOBJPFX=\"$(objpfx)\" + ++LOCPATH-ENV = LOCPATH=$(common-objpfx)localedata ++tst-codeset-ENV = $(LOCPATH-ENV) ++tst-gettext3-ENV = $(LOCPATH-ENV) ++tst-gettext5-ENV = $(LOCPATH-ENV) ++ + ifeq ($(have-thread-library),yes) + ifeq (yes,$(build-shared)) + $(addprefix $(objpfx),$(multithread-test-srcs)): $(shared-thread-library) +diff --git a/intl/tst-codeset.sh b/intl/tst-codeset.sh +deleted file mode 100644 +index 1584490..0000000 +--- a/intl/tst-codeset.sh ++++ /dev/null +@@ -1,42 +0,0 @@ +-#! /bin/sh +-# Test of bind_textdomain_codeset. +-# Copyright (C) 2001, 2002, 2005 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 +-# . +- +-common_objpfx=$1 +-objpfx=$2 +- +-LC_ALL=C +-export LC_ALL +- +-# Generate the test data. +-msgfmt -o ${objpfx}codeset.mo.$$ tstcodeset.po || exit +-# Create the domain directories. +-mkdir -p ${objpfx}domaindir/de_DE/LC_MESSAGES +-# Populate them. +-mv -f ${objpfx}codeset.mo.$$ ${objpfx}domaindir/de_DE/LC_MESSAGES/codeset.mo +- +-GCONV_PATH=${common_objpfx}iconvdata +-export GCONV_PATH +-LOCPATH=${common_objpfx}localedata +-export LOCPATH +- +-${common_objpfx}elf/ld.so --library-path $common_objpfx \ +-${objpfx}tst-codeset > ${objpfx}tst-codeset.out +- +-exit $? +diff --git a/intl/tst-gettext3.sh b/intl/tst-gettext3.sh +deleted file mode 100644 +index 032379c..0000000 +--- a/intl/tst-gettext3.sh ++++ /dev/null +@@ -1,43 +0,0 @@ +-#! /bin/sh +-# Test that the gettext() results come out in the correct encoding for +-# locales that differ only in their encoding. +-# Copyright (C) 2001, 2002, 2005 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 +-# . +- +-common_objpfx=$1 +-objpfx=$2 +- +-LC_ALL=C +-export LC_ALL +- +-# Generate the test data. +-msgfmt -o ${objpfx}codeset.mo.$$ tstcodeset.po || exit +-# Create the domain directories. +-mkdir -p ${objpfx}domaindir/de_DE/LC_MESSAGES +-# Populate them. +-mv -f ${objpfx}codeset.mo.$$ ${objpfx}domaindir/de_DE/LC_MESSAGES/codeset.mo +- +-GCONV_PATH=${common_objpfx}iconvdata +-export GCONV_PATH +-LOCPATH=${common_objpfx}localedata +-export LOCPATH +- +-${common_objpfx}elf/ld.so --library-path $common_objpfx \ +-${objpfx}tst-gettext3 > ${objpfx}tst-gettext3.out +- +-exit $? +diff --git a/intl/tst-gettext5.sh b/intl/tst-gettext5.sh +deleted file mode 100755 +index a563b43..0000000 +--- a/intl/tst-gettext5.sh ++++ /dev/null +@@ -1,42 +0,0 @@ +-#! /bin/sh +-# Test that gettext() in multithreaded applications works correctly if +-# different threads operate in different locales referring to the same +-# catalog file but with different encodings. +-# Copyright (C) 2001, 2002, 2005 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 +-# . +- +-common_objpfx=$1 +-run_program_prefix=$2 +-objpfx=$3 +- +-LC_ALL=C +-export LC_ALL +- +-# Create the domain directories. +-mkdir -p ${objpfx}domaindir/de_DE/LC_MESSAGES +-# Populate them. +-msgfmt -o ${objpfx}domaindir/de_DE/LC_MESSAGES/codeset.mo tstcodeset.po +- +-GCONV_PATH=${common_objpfx}iconvdata +-export GCONV_PATH +-LOCPATH=${common_objpfx}localedata +-export LOCPATH +- +-${run_program_prefix} ${objpfx}tst-gettext5 > ${objpfx}tst-gettext5.out +- +-exit $? diff --git a/glibc.spec b/glibc.spec index 38bed6b..9f707fa 100644 --- a/glibc.spec +++ b/glibc.spec @@ -28,7 +28,7 @@ Summary: The GNU libc libraries Name: glibc Version: %{glibcversion} -Release: 8%{?dist} +Release: 9%{?dist} # GPLv2+ is used in a bunch of programs, LGPLv2+ is used for libraries. # Things that are linked directly into dynamically linked programs # and shared libraries (e.g. crt files, lib*_nonshared.a) have an additional @@ -110,6 +110,7 @@ Patch0034: %{name}-rh841318.patch # Patches from upstream # Patch1035: %{name}-rh845960.patch +Patch1037: %{name}-rh849203.patch # @@ -428,6 +429,7 @@ rm -rf %{glibcportsdir} %patch0034 -p1 %patch1035 -p1 %patch2036 -p1 +%patch1037 -p1 # On powerpc32, hp timing is only available in power4/power6 # libs, not in base, so pre-power4 dynamic linker is incompatible @@ -1312,6 +1314,9 @@ rm -f *.filelist* %endif %changelog +* Fri Aug 25 2012 Jeff Law - 2.16-9 + - Fix race in intl/* testsuite (#849203) + * Wed Aug 25 2012 Jeff Law - 2.16-8 - Fix integer overflow leading to buffer overflow in strto* (#847718)