[glibc/f16] 2.14.90-14: revert upstream patch that added the leaf attribute, ...

Adam Williamson adamwill at fedoraproject.org
Wed Oct 26 19:28:03 UTC 2011


commit 4b931c38d9445565a3e3e2c9803934de701d38e6
Author: Jim Meyering <meyering at redhat.com>
Date:   Wed Oct 26 20:44:44 2011 +0200

    2.14.90-14: revert upstream patch that added the leaf attribute, ...
    
    since it caused gcc -O2 to move code past thread primitives and
    sometimes even out of critical sections.
    See http://bugzilla.redhat.com/747377

 glibc-no-leaf-attribute.patch |   49 +++++++++++++++++++++++++++++++++++++++++
 glibc.spec                    |    9 ++++++-
 2 files changed, 57 insertions(+), 1 deletions(-)
---
diff --git a/glibc-no-leaf-attribute.patch b/glibc-no-leaf-attribute.patch
new file mode 100644
index 0000000..1cac26e
--- /dev/null
+++ b/glibc-no-leaf-attribute.patch
@@ -0,0 +1,49 @@
+From 7327af4c323f6d4f500bf4aaa66a9cac6236772f Mon Sep 17 00:00:00 2001
+From: Jim Meyering <meyering at redhat.com>
+Date: Wed, 26 Oct 2011 20:08:52 +0200
+Subject: [PATCH] Revert "Use leaf function attribute in __THROW"
+
+This reverts commit aa78043a4aafe5db1a1a76d544a833b63b4c5f5c
+and the related 49a43d80ec5c97cf6136b1ee2687414773b2d5aa.
+This fixes http://bugzilla.redhat.com/747377
+---
+ misc/sys/cdefs.h |   15 +++------------
+ 2 files changed, 3 insertions(+), 14 deletions(-)
+
+diff --git a/misc/sys/cdefs.h b/misc/sys/cdefs.h
+index 72073e8..165a94a 100644
+--- a/misc/sys/cdefs.h
++++ b/misc/sys/cdefs.h
+@@ -38,27 +38,18 @@
+
+ #ifdef __GNUC__
+
+-/* All functions, except those with callbacks, are leaf functions.  */
+-# if __GNUC_PREREQ (4, 6) && !defined _LIBC
+-#  define __LEAF , __leaf__
+-#  define __LEAF_ATTR __attribute__ ((__leaf__))
+-# else
+-#  define __LEAF
+-#  define __LEAF_ATTR
+-# endif
+-
+ /* GCC can always grok prototypes.  For C++ programs we add throw()
+    to help it optimize the function calls.  But this works only with
+    gcc 2.8.x and egcs.  For gcc 3.2 and up we even mark C functions
+    as non-throwing using a function attribute since programs can use
+    the -fexceptions options for C code as well.  */
+ # if !defined __cplusplus && __GNUC_PREREQ (3, 3)
+-#  define __THROW	__attribute__ ((__nothrow__ __LEAF))
+-#  define __NTH(fct)	__attribute__ ((__nothrow__ __LEAF)) fct
++#  define __THROW	__attribute__ ((__nothrow__))
++#  define __NTH(fct)	__attribute__ ((__nothrow__)) fct
+ # else
+ #  if defined __cplusplus && __GNUC_PREREQ (2,8)
+ #   define __THROW	throw ()
+-#   define __NTH(fct)	__LEAF_ATTR fct throw ()
++#   define __NTH(fct)	fct throw ()
+ #  else
+ #   define __THROW
+ #   define __NTH(fct)	fct
+--
+1.7.7.1
diff --git a/glibc.spec b/glibc.spec
index 1aebfee..52801f0 100644
--- a/glibc.spec
+++ b/glibc.spec
@@ -28,7 +28,7 @@
 Summary: The GNU libc libraries
 Name: glibc
 Version: %{glibcversion}
-Release: 13
+Release: 14
 # 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
@@ -42,6 +42,7 @@ Source1: %{?glibc_release_url}%{glibcportsdir}.tar.xz
 Source2: %{glibcsrcdir}-fedora.tar.xz
 Patch0: %{name}-fedora.patch
 Patch1: %{name}-ia64-lib64.patch
+Patch2: %{name}-no-leaf-attribute.patch
 Buildroot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
 Obsoletes: glibc-profile < 2.4
 Obsoletes: nss_db
@@ -260,6 +261,7 @@ rm -rf %{glibcportsdir}
 %patch1 -p1
 %endif
 %endif
+%patch2 -p1
 
 # A lot of programs still misuse memcpy when they have to use
 # memmove. The memcpy implementation below is not tolerant at
@@ -1112,6 +1114,11 @@ rm -f *.filelist*
 %endif
 
 %changelog
+* Wed Oct 19 2011 Jim Meyering <meyering at redhat.com> - 2.14.90-14
+- Revert the upstream patch that added the leaf attribute, since it
+  caused gcc -O2 to move code past thread primitives and sometimes
+  even out of critical sections.  See http://bugzilla.redhat.com/747377
+
 * Wed Oct 19 2011 Andreas Schwab <schwab at redhat.com> - 2.14.90-13
 - Update from master
   - Fix linkage conflict with feraiseexcept (#746753)


More information about the scm-commits mailing list