[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