Source: leveldb
Version: 0+20110926.git26db4d9-1
Severity: serious
Justification: fails to build from source
Tags: patch

Hi,

leveldb ftbfs on s390.
  
https://buildd.debian.org/status/fetch.php?pkg=leveldb&arch=s390&ver=0%2B20110926.git26db4d9-1&stamp=1317749307
-----
In file included from ./port/port_posix.h:28:0,
                 from ./port/port.h:14,
                 from ./db/filename.h:14,
                 from db/builder.cc:7:
./port/atomic_pointer.h: In function 'void leveldb::port::ReadMemoryBarrier()':
./port/atomic_pointer.h:161:3: error: expected primary-expression
before 'volatile'
./port/atomic_pointer.h:161:3: error: expected ';' before 'volatile'
./port/atomic_pointer.h: In function 'void leveldb::port::WriteMemoryBarrier()':
./port/atomic_pointer.h:164:3: error: expected primary-expression
before 'volatile'
./port/atomic_pointer.h:164:3: error: expected ';' before 'volatile'
make[1]: *** [db/builder.o] Error 1
make[1]: *** Waiting for unfinished jobs....
-----

Because there is not asm keyword in front of volatile.
(Sorry, this patch was provided by me.)

I created new patch. Please check and apply.

Best regards,
 Nobuhiro

-- 
Nobuhiro Iwamatsu
   iwamatsu at {nigauri.org / debian.org}
   GPG ID: 40AD1FA6
From bc03fac68e487d0aa367b93794177178a1f9f1ab Mon Sep 17 00:00:00 2001
From: Nobuhiro Iwamatsu <iwama...@debian.org>
Date: Wed, 28 Sep 2011 12:29:28 +0900
Subject: [PATCH 5/9] Add support S390

Signed-off-by: Nobuhiro Iwamatsu <iwama...@debian.org>
---
 port/atomic_pointer.h |   14 ++++++++++++++
 1 files changed, 14 insertions(+), 0 deletions(-)

diff --git a/port/atomic_pointer.h b/port/atomic_pointer.h
index 6d0b15f..03a1815 100644
--- a/port/atomic_pointer.h
+++ b/port/atomic_pointer.h
@@ -42,6 +42,8 @@
 #define ARCH_CPU_IA64_FAMILY 1
 #elif defined(__alpha__)
 #define ARCH_CPU_ALPHA_FAMILY 1
+#elif defined(__s390x__) || defined(__s390__)
+#define ARCH_CPU_S390_FAMILY 1
 #endif
 
 namespace leveldb {
@@ -144,6 +146,17 @@ inline void WriteMemoryBarrier() {
 }
 #define LEVELDB_HAVE_MEMORY_BARRIER
 
+// S390
+#elif defined(ARCH_CPU_S390_FAMILY)
+
+inline void ReadMemoryBarrier() {
+  asm volatile("bcr 15,0" : : : "memory");
+}
+inline void WriteMemoryBarrier() {
+  asm volatile("bcr 15,0" : : : "memory");
+}
+#define LEVELDB_HAVE_MEMORY_BARRIER
+
 #endif
 
 // AtomicPointer built using platform-specific MemoryBarrier()
@@ -201,6 +214,7 @@ class AtomicPointer {
 #undef ARCH_CPU_PPC_FAMILY
 #undef ARCH_CPU_IA64_FAMILY
 #undef ARCH_CPU_ALPHA_FAMILY
+#undef ARCH_CPU_S390_FAMILY
 
 } // namespace leveldb::port
 } // namespace leveldb
-- 
1.7.6.3

Reply via email to