forked from rpms/glibc
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
This commit is contained in:
parent
29e836b7ac
commit
4b931c38d9
49
glibc-no-leaf-attribute.patch
Normal file
49
glibc-no-leaf-attribute.patch
Normal file
@ -0,0 +1,49 @@
|
|||||||
|
From 7327af4c323f6d4f500bf4aaa66a9cac6236772f Mon Sep 17 00:00:00 2001
|
||||||
|
From: Jim Meyering <meyering@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
|
@ -28,7 +28,7 @@
|
|||||||
Summary: The GNU libc libraries
|
Summary: The GNU libc libraries
|
||||||
Name: glibc
|
Name: glibc
|
||||||
Version: %{glibcversion}
|
Version: %{glibcversion}
|
||||||
Release: 13
|
Release: 14
|
||||||
# GPLv2+ is used in a bunch of programs, LGPLv2+ is used for libraries.
|
# GPLv2+ is used in a bunch of programs, LGPLv2+ is used for libraries.
|
||||||
# Things that are linked directly into dynamically linked programs
|
# Things that are linked directly into dynamically linked programs
|
||||||
# and shared libraries (e.g. crt files, lib*_nonshared.a) have an additional
|
# 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
|
Source2: %{glibcsrcdir}-fedora.tar.xz
|
||||||
Patch0: %{name}-fedora.patch
|
Patch0: %{name}-fedora.patch
|
||||||
Patch1: %{name}-ia64-lib64.patch
|
Patch1: %{name}-ia64-lib64.patch
|
||||||
|
Patch2: %{name}-no-leaf-attribute.patch
|
||||||
Buildroot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
|
Buildroot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
|
||||||
Obsoletes: glibc-profile < 2.4
|
Obsoletes: glibc-profile < 2.4
|
||||||
Obsoletes: nss_db
|
Obsoletes: nss_db
|
||||||
@ -260,6 +261,7 @@ rm -rf %{glibcportsdir}
|
|||||||
%patch1 -p1
|
%patch1 -p1
|
||||||
%endif
|
%endif
|
||||||
%endif
|
%endif
|
||||||
|
%patch2 -p1
|
||||||
|
|
||||||
# A lot of programs still misuse memcpy when they have to use
|
# A lot of programs still misuse memcpy when they have to use
|
||||||
# memmove. The memcpy implementation below is not tolerant at
|
# memmove. The memcpy implementation below is not tolerant at
|
||||||
@ -1112,6 +1114,11 @@ rm -f *.filelist*
|
|||||||
%endif
|
%endif
|
||||||
|
|
||||||
%changelog
|
%changelog
|
||||||
|
* Wed Oct 19 2011 Jim Meyering <meyering@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@redhat.com> - 2.14.90-13
|
* Wed Oct 19 2011 Andreas Schwab <schwab@redhat.com> - 2.14.90-13
|
||||||
- Update from master
|
- Update from master
|
||||||
- Fix linkage conflict with feraiseexcept (#746753)
|
- Fix linkage conflict with feraiseexcept (#746753)
|
||||||
|
Loading…
Reference in New Issue
Block a user