[packages/glog] fix build on x32
glen
glen at pld-linux.org
Sat Mar 28 14:22:40 CET 2015
commit c1854bdba8faf0126a2f0f04e3848ce23aacda49
Author: Elan Ruusamäe <glen at delfi.ee>
Date: Sat Mar 28 15:22:27 2015 +0200
fix build on x32
avoid-inline-asm.patch | 56 ++++++++++++++++++++++++++++++++++++++++++++++++++
glog.spec | 8 ++++++--
2 files changed, 62 insertions(+), 2 deletions(-)
---
diff --git a/glog.spec b/glog.spec
index 369efc0..c6e53d4 100644
--- a/glog.spec
+++ b/glog.spec
@@ -1,18 +1,19 @@
#
# Conditional build:
%bcond_without tests # gtest/gmock based tests
-#
+
Summary: A C++ application logging library
Summary(pl.UTF-8): Biblioteka do logowania dla aplikacji w C++
Name: glog
Version: 0.3.3
-Release: 2
+Release: 3
License: BSD
Group: Libraries
#Source0Download: http://code.google.com/p/google-glog/downloads/list
Source0: http://google-glog.googlecode.com/files/%{name}-%{version}.tar.gz
# Source0-md5: a6fd2c22f8996846e34c763422717c18
Patch0: %{name}-gflags.patch
+Patch1: avoid-inline-asm.patch
URL: http://code.google.com/p/google-glog
BuildRequires: autoconf >= 2.57
BuildRequires: automake
@@ -23,7 +24,9 @@ BuildRequires: gtest-devel
%endif
BuildRequires: libstdc++-devel
BuildRequires: libtool >= 2:1.5
+%ifarch %{ix86} %{x8664} arm hppa ia64 mips ppc ppc64 sh
BuildRequires: libunwind-devel
+%endif
BuildRequires: pkgconfig
BuildRoot: %{tmpdir}/%{name}-%{version}-root-%(id -u -n)
@@ -68,6 +71,7 @@ Statyczna biblioteka glog.
%prep
%setup -q
%patch0 -p1
+%patch1 -p1
%build
%if %{with tests}
diff --git a/avoid-inline-asm.patch b/avoid-inline-asm.patch
new file mode 100644
index 0000000..b6fa9cd
--- /dev/null
+++ b/avoid-inline-asm.patch
@@ -0,0 +1,56 @@
+http://code.google.com/p/google-glog/issues/detail?id=130
+
+make the code work with all gcc targets
+
+--- a/src/symbolize_unittest.cc
++++ b/src/symbolize_unittest.cc
+@@ -60,9 +60,7 @@ using namespace GOOGLE_NAMESPACE;
+ # endif // __i386__
+ # else
+ # endif // __GNUC__ >= 4
+-# if defined(__i386__) || defined(__x86_64__)
+-# define TEST_X86_32_AND_64 1
+-# endif // defined(__i386__) || defined(__x86_64__)
++# define TEST_WITH_LABEL_ADDRESSES
+ #endif
+
+ // A wrapper function for Symbolize() to make the unit test simple.
+@@ -289,22 +287,24 @@ TEST(Symbolize, SymbolizeWithDemanglingStackConsumption) {
+ extern "C" {
+ inline void* always_inline inline_func() {
+ register void *pc = NULL;
+-#ifdef TEST_X86_32_AND_64
+- __asm__ __volatile__("call 1f; 1: pop %0" : "=r"(pc));
++#ifdef TEST_WITH_LABEL_ADDRESSES
++ pc = &&curr_pc;
++ curr_pc:
+ #endif
+ return pc;
+ }
+
+ void* ATTRIBUTE_NOINLINE non_inline_func() {
+ register void *pc = NULL;
+-#ifdef TEST_X86_32_AND_64
+- __asm__ __volatile__("call 1f; 1: pop %0" : "=r"(pc));
++#ifdef TEST_WITH_LABEL_ADDRESSES
++ pc = &&curr_pc;
++ curr_pc:
+ #endif
+ return pc;
+ }
+
+ void ATTRIBUTE_NOINLINE TestWithPCInsideNonInlineFunction() {
+-#if defined(TEST_X86_32_AND_64) && defined(HAVE_ATTRIBUTE_NOINLINE)
++#if defined(TEST_WITH_LABEL_ADDRESSES) && defined(HAVE_ATTRIBUTE_NOINLINE)
+ void *pc = non_inline_func();
+ const char *symbol = TrySymbolize(pc);
+ CHECK(symbol != NULL);
+@@ -314,7 +314,7 @@ void ATTRIBUTE_NOINLINE TestWithPCInsideNonInlineFunction() {
+ }
+
+ void ATTRIBUTE_NOINLINE TestWithPCInsideInlineFunction() {
+-#if defined(TEST_X86_32_AND_64) && defined(HAVE_ALWAYS_INLINE)
++#if defined(TEST_WITH_LABEL_ADDRESSES) && defined(HAVE_ALWAYS_INLINE)
+ void *pc = inline_func(); // Must be inlined.
+ const char *symbol = TrySymbolize(pc);
+ CHECK(symbol != NULL);
================================================================
---- gitweb:
http://git.pld-linux.org/gitweb.cgi/packages/glog.git/commitdiff/c1854bdba8faf0126a2f0f04e3848ce23aacda49
More information about the pld-cvs-commit
mailing list