On 3/5/19 7:39 PM, kai.k...@windriver.com wrote:
From: Kai Kang <kai.k...@windriver.com>

It fails to compile leveldb for qemumips with DEFAULTTUNE 'mips':

| {standard input}: Assembler messages:
| {standard input}:8004: Error: opcode not supported on this processor:
   mips1 (mips1) `sync'
| {standard input}:10296: Error: opcode not supported on this processor:
   mips1 (mips1) `sync'
| make: *** [out-shared/db/db_bench.o] Error 1

Asm instruction 'sync' is called in platform-specific function
MemoryBarrier() which is used by AtomicPointer(). Comment out the
definition of MemoryBarrier() for mips to avoid the errors. And turn to
use AtomicPointer() based on C++11 <atomc>.

Signed-off-by: Kai Kang <kai.k...@windriver.com>
---
  ...fine-function-MemoryBarrier-for-mips.patch | 43 +++++++++++++++++++
  meta-oe/recipes-dbs/leveldb/leveldb_git.bb    |  1 +
  2 files changed, 44 insertions(+)
  create mode 100644 
meta-oe/recipes-dbs/leveldb/leveldb/do-not-define-function-MemoryBarrier-for-mips.patch

diff --git 
a/meta-oe/recipes-dbs/leveldb/leveldb/do-not-define-function-MemoryBarrier-for-mips.patch
 
b/meta-oe/recipes-dbs/leveldb/leveldb/do-not-define-function-MemoryBarrier-for-mips.patch
new file mode 100644
index 000000000..fc7743030
--- /dev/null
+++ 
b/meta-oe/recipes-dbs/leveldb/leveldb/do-not-define-function-MemoryBarrier-for-mips.patch
@@ -0,0 +1,43 @@
+It fails to compile leveldb for qemumips with default tune 'mips':
+
+| {standard input}: Assembler messages:
+| {standard input}:8004: Error: opcode not supported on this processor:
+  mips1 (mips1) `sync'
+| {standard input}:10296: Error: opcode not supported on this processor:
+  mips1 (mips1) `sync'
+| make: *** [out-shared/db/db_bench.o] Error 1
+
+Asm instruction 'sync' is called in platform-specific function
+MemoryBarrier() which is used by AtomicPointer(). Comment out the
+definition of MemoryBarrier() for mips to avoid the errors. And turn to
+use AtomicPointer() based on C++11 <atomic>.
+
+Upstream-Status: Inappropriate [oe specific]
+
+Signed-off-by: Kai Kang <kai.k...@windriver.com>
+
+---
+ port/atomic_pointer.h | 10 +++++-----
+ 1 file changed, 5 insertions(+), 5 deletions(-)
+
+diff --git a/port/atomic_pointer.h b/port/atomic_pointer.h
+index 1c4c7aa..7025ac3 100644
+--- a/port/atomic_pointer.h
++++ b/port/atomic_pointer.h
+@@ -113,11 +113,11 @@ inline void MemoryBarrier() {
+ #define LEVELDB_HAVE_MEMORY_BARRIER
+
+ // MIPS
+-#elif defined(ARCH_CPU_MIPS_FAMILY) && defined(__GNUC__)
+-inline void MemoryBarrier() {
+-  __asm__ __volatile__("sync" : : : "memory");
+-}
+-#define LEVELDB_HAVE_MEMORY_BARRIER
++//#elif defined(ARCH_CPU_MIPS_FAMILY) && defined(__GNUC__)
++//inline void MemoryBarrier() {
++//  __asm__ __volatile__("sync" : : : "memory");
++//}
++//#define LEVELDB_HAVE_MEMORY_BARRIER
+

this is punishing all mips o32 variants.

+ #endif
+
diff --git a/meta-oe/recipes-dbs/leveldb/leveldb_git.bb 
b/meta-oe/recipes-dbs/leveldb/leveldb_git.bb
index 8fec89c6f..10988726a 100644
--- a/meta-oe/recipes-dbs/leveldb/leveldb_git.bb
+++ b/meta-oe/recipes-dbs/leveldb/leveldb_git.bb
@@ -11,6 +11,7 @@ SRC_URI = "git://github.com/google/${BPN}.git \
             file://0001-build_detect_platform-Check-for-__SSE4_2__.patch \
             file://0002-makefile-build-SHARED_MEMENVLIB.patch \
             file://0001-Makefile-Fix-parallel-build.patch \
+           file://do-not-define-function-MemoryBarrier-for-mips.patch \
             "
S = "${WORKDIR}/git"

--
_______________________________________________
Openembedded-devel mailing list
Openembedded-devel@lists.openembedded.org
http://lists.openembedded.org/mailman/listinfo/openembedded-devel

Reply via email to