]> git.pld-linux.org Git - packages/glog.git/commitdiff
fix build on x32
authorElan Ruusamäe <glen@delfi.ee>
Sat, 28 Mar 2015 13:22:27 +0000 (15:22 +0200)
committerElan Ruusamäe <glen@delfi.ee>
Sat, 28 Mar 2015 13:22:27 +0000 (15:22 +0200)
avoid-inline-asm.patch [new file with mode: 0644]
glog.spec

diff --git a/avoid-inline-asm.patch b/avoid-inline-asm.patch
new file mode 100644 (file)
index 0000000..b6fa9cd
--- /dev/null
@@ -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);
index 369efc0a2dbcb71aa8c15854de31b47a2d6cb699..c6e53d431acaad26825a486be4e663711578a6b7 100644 (file)
--- 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}
This page took 0.250021 seconds and 4 git commands to generate.