diff --git a/.gitignore b/.gitignore index 69bcda5..d6945f8 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1,2 @@ augeas-0.7.3.tar.gz +/augeas-0.7.4.tar.gz diff --git a/augeas.git-c17cd53d8d4a643e4f7277da37d21dc3bade5ed6.patch b/augeas.git-c17cd53d8d4a643e4f7277da37d21dc3bade5ed6.patch deleted file mode 100644 index 51fd713..0000000 --- a/augeas.git-c17cd53d8d4a643e4f7277da37d21dc3bade5ed6.patch +++ /dev/null @@ -1,62 +0,0 @@ -From c17cd53d8d4a643e4f7277da37d21dc3bade5ed6 Mon Sep 17 00:00:00 2001 -From: Matthew Booth -Date: Fri, 12 Nov 2010 11:24:30 +0000 -Subject: [PATCH] Fix crasher in ast.c:dict_pos on i686 with gcc 4.5 and -O2 - -This patch works around what appears to be an optimization bug in gcc 4.5. The -symptom of the bug is that dict_pos, called from dict_lookup, receives an -invalid value when accessing dict->used. The following ticket describes the bug, -and includes a simple test case: - -https://fedorahosted.org/augeas/ticket/149 - -Adding a printf to dict_lookup immediately before the dict_pos call reveals that -dict->used has a value of 30 in the crashing case on my F14 system. A printf -added to the first line of dict_pos shows dict->used has an apparent value of -16777246. This causes an invalid array lookup shortly afterwards, which causes -the crash. 16777246, interestingly, is 2^24 + 30, where 24 is the size of the -dict->used bitfield. This should obviously not be possible, suggesting either a -compiler bug or undefined behaviour due in incorrect use of the language. Having -re-read the relevant section of K&R, I can't see anything about this use of -bitfields which might be a problem, except that: 'Fields may be declared only as -ints; for portability, specify signed or unsigned explicitly.' uint32_t resolves -to 'unsigned int' on i686, and in any case, replacing it with 'unsigned int' -does not solve the problem. As it stands, I believe this is a bug in the -optimizer. - -The above ticket contains an alternate patch which copies dict in dict_pos, -which also prevents the crash. However, adding anything to dict_pos which -prevents the compiler from optimising dict away achieves the same result. For -example: - -printf("%p", dict); - -This patch instead removes the bitfields in struct dict. While this is a -workaround, these bitfields save at most 1 word of memory per struct, but at the -cost of mis-aligned access. The patch does not increase the size of -dict_max_size to UINT32_MAX, as the lower maximum serves as a better guard -against runaway memory allocation. ---- - src/ast.c | 6 +++--- - 1 files changed, 3 insertions(+), 3 deletions(-) - -diff --git a/src/ast.c b/src/ast.c -index 4a3402d..6efcc3e 100644 ---- a/src/ast.c -+++ b/src/ast.c -@@ -54,9 +54,9 @@ struct dict_node { - string */ - struct dict { - struct dict_node **nodes; -- uint32_t size : 24; -- uint32_t used : 24; -- uint32_t marked : 1; -+ uint32_t size; -+ uint32_t used; -+ bool marked; - }; - - static const int dict_initial_size = 2; --- -1.5.5.6 - diff --git a/augeas.spec b/augeas.spec index e25b1f6..f665e7a 100644 --- a/augeas.spec +++ b/augeas.spec @@ -1,21 +1,22 @@ Name: augeas -Version: 0.7.3 -Release: 2%{?dist} +Version: 0.7.4 +Release: 1%{?dist} Summary: A library for changing configuration files Group: System Environment/Libraries License: LGPLv2+ URL: http://augeas.net/ Source0: http://augeas.net/download/%{name}-%{version}.tar.gz + +# Format of the patch name is augeas-VERSION-NUMBER-HASH where VERSION +# gives the first version where this patch was applied, NUMBER orders patches +# against the same version, and HASH is the git commit hash from upstream + BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n) BuildRequires: readline-devel libselinux-devel Requires: %{name}-libs = %{version}-%{release} -# Upstream patch proposed to fix GCC optimization bug: -# https://bugzilla.redhat.com/show_bug.cgi?id=651992 -Patch0: augeas.git-c17cd53d8d4a643e4f7277da37d21dc3bade5ed6.patch - %description A library for programmatically editing configuration files. Augeas parses configuration files into a tree structure, which it exposes through its @@ -48,8 +49,6 @@ The libraries for %{name}. %prep %setup -q -%patch0 -p1 - %build %configure --disable-static make %{?_smp_mflags} @@ -91,6 +90,9 @@ rm -rf $RPM_BUILD_ROOT %{_libdir}/pkgconfig/augeas.pc %changelog +* Mon Nov 22 2010 Matthew Booth - 0.7.4-1 +- Update to version 0.7.4 + * Thu Nov 18 2010 Richard W.M. Jones - 0.7.3-2 - Upstream patch proposed to fix GCC optimization bug (RHBZ#651992). diff --git a/sources b/sources index 712abef..f46915e 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -d907943fc21c2d1db5dc8d97ec02a9e5 augeas-0.7.3.tar.gz +e3ddce5305a15bdb876ef7feec9214d1 augeas-0.7.4.tar.gz