diff options
| author | Khem Raj <raj.khem@gmail.com> | 2019-01-20 23:27:48 -0800 |
|---|---|---|
| committer | Richard Purdie <richard.purdie@linuxfoundation.org> | 2019-01-21 23:44:22 +0000 |
| commit | 7ce6054039849259b7f8436d66600ba5e519f93f (patch) | |
| tree | 343490f41c9dc96dcc3477070412ace309f53dcf | |
| parent | 9a55fce4a95056a89dd4e1823275ccd4fad7e441 (diff) | |
| download | poky-7ce6054039849259b7f8436d66600ba5e519f93f.tar.gz | |
db5: Fix build issues found with clang/libc++
This is a genuine error that is discovered when using libc++ runtime
(From OE-Core rev: e4aa17ddc2ea623de2803efa9ab2fca498c99e19)
Signed-off-by: Khem Raj <raj.khem@gmail.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
| -rw-r--r-- | meta/recipes-support/db/db/0001-Fix-libc-compatibility-by-renaming-atomic_init-API.patch | 147 | ||||
| -rw-r--r-- | meta/recipes-support/db/db_5.3.28.bb | 1 |
2 files changed, 148 insertions, 0 deletions
diff --git a/meta/recipes-support/db/db/0001-Fix-libc-compatibility-by-renaming-atomic_init-API.patch b/meta/recipes-support/db/db/0001-Fix-libc-compatibility-by-renaming-atomic_init-API.patch new file mode 100644 index 0000000000..a4ff2ecb0c --- /dev/null +++ b/meta/recipes-support/db/db/0001-Fix-libc-compatibility-by-renaming-atomic_init-API.patch | |||
| @@ -0,0 +1,147 @@ | |||
| 1 | From a3569f118fd95b7ad41e1a1128e17c0b8928556d Mon Sep 17 00:00:00 2001 | ||
| 2 | From: Khem Raj <raj.khem@gmail.com> | ||
| 3 | Date: Sun, 20 Jan 2019 18:30:23 -0800 | ||
| 4 | Subject: [PATCH] Fix libc++ compatibility by renaming atomic_init API | ||
| 5 | |||
| 6 | db5 does not build because it is redefining a C++11 standard | ||
| 7 | library identifier, atomic_init(). Therefore prefix all | ||
| 8 | its internal defines with '__db_', to avoid collisions. | ||
| 9 | |||
| 10 | Upstream-Status: Pending | ||
| 11 | |||
| 12 | Signed-off-by: Khem Raj <raj.khem@gmail.com> | ||
| 13 | --- | ||
| 14 | src/dbinc/atomic.h | 4 ++-- | ||
| 15 | src/mp/mp_fget.c | 4 ++-- | ||
| 16 | src/mp/mp_mvcc.c | 4 ++-- | ||
| 17 | src/mp/mp_region.c | 4 ++-- | ||
| 18 | src/mutex/mut_method.c | 2 +- | ||
| 19 | src/mutex/mut_tas.c | 4 ++-- | ||
| 20 | 6 files changed, 11 insertions(+), 11 deletions(-) | ||
| 21 | |||
| 22 | diff --git a/src/dbinc/atomic.h b/src/dbinc/atomic.h | ||
| 23 | index 1b49de5..7bf353c 100644 | ||
| 24 | --- a/src/dbinc/atomic.h | ||
| 25 | +++ b/src/dbinc/atomic.h | ||
| 26 | @@ -70,7 +70,7 @@ typedef struct { | ||
| 27 | * These have no memory barriers; the caller must include them when necessary. | ||
| 28 | */ | ||
| 29 | #define atomic_read(p) ((p)->value) | ||
| 30 | -#define atomic_init(p, val) ((p)->value = (val)) | ||
| 31 | +#define __db_atomic_init(p, val) ((p)->value = (val)) | ||
| 32 | |||
| 33 | #ifdef HAVE_ATOMIC_SUPPORT | ||
| 34 | |||
| 35 | @@ -206,7 +206,7 @@ static inline int __db_atomic_compare_exchange( | ||
| 36 | #define atomic_dec(env, p) (--(p)->value) | ||
| 37 | #define atomic_compare_exchange(env, p, oldval, newval) \ | ||
| 38 | (DB_ASSERT(env, atomic_read(p) == (oldval)), \ | ||
| 39 | - atomic_init(p, (newval)), 1) | ||
| 40 | + __db_atomic_init(p, (newval)), 1) | ||
| 41 | #else | ||
| 42 | #define atomic_inc(env, p) __atomic_inc(env, p) | ||
| 43 | #define atomic_dec(env, p) __atomic_dec(env, p) | ||
| 44 | diff --git a/src/mp/mp_fget.c b/src/mp/mp_fget.c | ||
| 45 | index 16de695..5159520 100644 | ||
| 46 | --- a/src/mp/mp_fget.c | ||
| 47 | +++ b/src/mp/mp_fget.c | ||
| 48 | @@ -649,7 +649,7 @@ alloc: /* Allocate a new buffer header and data space. */ | ||
| 49 | |||
| 50 | /* Initialize enough so we can call __memp_bhfree. */ | ||
| 51 | alloc_bhp->flags = 0; | ||
| 52 | - atomic_init(&alloc_bhp->ref, 1); | ||
| 53 | + __db_atomic_init(&alloc_bhp->ref, 1); | ||
| 54 | #ifdef DIAGNOSTIC | ||
| 55 | if ((uintptr_t)alloc_bhp->buf & (sizeof(size_t) - 1)) { | ||
| 56 | __db_errx(env, DB_STR("3025", | ||
| 57 | @@ -955,7 +955,7 @@ alloc: /* Allocate a new buffer header and data space. */ | ||
| 58 | MVCC_MPROTECT(bhp->buf, mfp->pagesize, | ||
| 59 | PROT_READ); | ||
| 60 | |||
| 61 | - atomic_init(&alloc_bhp->ref, 1); | ||
| 62 | + __db_atomic_init(&alloc_bhp->ref, 1); | ||
| 63 | MUTEX_LOCK(env, alloc_bhp->mtx_buf); | ||
| 64 | alloc_bhp->priority = bhp->priority; | ||
| 65 | alloc_bhp->pgno = bhp->pgno; | ||
| 66 | diff --git a/src/mp/mp_mvcc.c b/src/mp/mp_mvcc.c | ||
| 67 | index 770bad8..dbce4f3 100644 | ||
| 68 | --- a/src/mp/mp_mvcc.c | ||
| 69 | +++ b/src/mp/mp_mvcc.c | ||
| 70 | @@ -276,7 +276,7 @@ __memp_bh_freeze(dbmp, infop, hp, bhp, need_frozenp) | ||
| 71 | #else | ||
| 72 | memcpy(frozen_bhp, bhp, SSZA(BH, buf)); | ||
| 73 | #endif | ||
| 74 | - atomic_init(&frozen_bhp->ref, 0); | ||
| 75 | + __db_atomic_init(&frozen_bhp->ref, 0); | ||
| 76 | if (mutex != MUTEX_INVALID) | ||
| 77 | frozen_bhp->mtx_buf = mutex; | ||
| 78 | else if ((ret = __mutex_alloc(env, MTX_MPOOL_BH, | ||
| 79 | @@ -428,7 +428,7 @@ __memp_bh_thaw(dbmp, infop, hp, frozen_bhp, alloc_bhp) | ||
| 80 | #endif | ||
| 81 | alloc_bhp->mtx_buf = mutex; | ||
| 82 | MUTEX_LOCK(env, alloc_bhp->mtx_buf); | ||
| 83 | - atomic_init(&alloc_bhp->ref, 1); | ||
| 84 | + __db_atomic_init(&alloc_bhp->ref, 1); | ||
| 85 | F_CLR(alloc_bhp, BH_FROZEN); | ||
| 86 | } | ||
| 87 | |||
| 88 | diff --git a/src/mp/mp_region.c b/src/mp/mp_region.c | ||
| 89 | index 4952030..084f499 100644 | ||
| 90 | --- a/src/mp/mp_region.c | ||
| 91 | +++ b/src/mp/mp_region.c | ||
| 92 | @@ -245,7 +245,7 @@ __memp_init(env, dbmp, reginfo_off, htab_buckets, max_nreg) | ||
| 93 | MTX_MPOOL_FILE_BUCKET, 0, &htab[i].mtx_hash)) != 0) | ||
| 94 | return (ret); | ||
| 95 | SH_TAILQ_INIT(&htab[i].hash_bucket); | ||
| 96 | - atomic_init(&htab[i].hash_page_dirty, 0); | ||
| 97 | + __db_atomic_init(&htab[i].hash_page_dirty, 0); | ||
| 98 | } | ||
| 99 | |||
| 100 | /* | ||
| 101 | @@ -302,7 +302,7 @@ no_prealloc: | ||
| 102 | } else | ||
| 103 | hp->mtx_hash = mtx_base + (i % dbenv->mp_mtxcount); | ||
| 104 | SH_TAILQ_INIT(&hp->hash_bucket); | ||
| 105 | - atomic_init(&hp->hash_page_dirty, 0); | ||
| 106 | + __db_atomic_init(&hp->hash_page_dirty, 0); | ||
| 107 | #ifdef HAVE_STATISTICS | ||
| 108 | hp->hash_io_wait = 0; | ||
| 109 | hp->hash_frozen = hp->hash_thawed = hp->hash_frozen_freed = 0; | ||
| 110 | diff --git a/src/mutex/mut_method.c b/src/mutex/mut_method.c | ||
| 111 | index 09353b0..3c954b9 100644 | ||
| 112 | --- a/src/mutex/mut_method.c | ||
| 113 | +++ b/src/mutex/mut_method.c | ||
| 114 | @@ -474,7 +474,7 @@ atomic_compare_exchange(env, v, oldval, newval) | ||
| 115 | MUTEX_LOCK(env, mtx); | ||
| 116 | ret = atomic_read(v) == oldval; | ||
| 117 | if (ret) | ||
| 118 | - atomic_init(v, newval); | ||
| 119 | + __db_atomic_init(v, newval); | ||
| 120 | MUTEX_UNLOCK(env, mtx); | ||
| 121 | |||
| 122 | return (ret); | ||
| 123 | diff --git a/src/mutex/mut_tas.c b/src/mutex/mut_tas.c | ||
| 124 | index 106b161..5a3b033 100644 | ||
| 125 | --- a/src/mutex/mut_tas.c | ||
| 126 | +++ b/src/mutex/mut_tas.c | ||
| 127 | @@ -47,7 +47,7 @@ __db_tas_mutex_init(env, mutex, flags) | ||
| 128 | |||
| 129 | #ifdef HAVE_SHARED_LATCHES | ||
| 130 | if (F_ISSET(mutexp, DB_MUTEX_SHARED)) | ||
| 131 | - atomic_init(&mutexp->sharecount, 0); | ||
| 132 | + __db_atomic_init(&mutexp->sharecount, 0); | ||
| 133 | else | ||
| 134 | #endif | ||
| 135 | if (MUTEX_INIT(&mutexp->tas)) { | ||
| 136 | @@ -536,7 +536,7 @@ __db_tas_mutex_unlock(env, mutex) | ||
| 137 | F_CLR(mutexp, DB_MUTEX_LOCKED); | ||
| 138 | /* Flush flag update before zeroing count */ | ||
| 139 | MEMBAR_EXIT(); | ||
| 140 | - atomic_init(&mutexp->sharecount, 0); | ||
| 141 | + __db_atomic_init(&mutexp->sharecount, 0); | ||
| 142 | } else { | ||
| 143 | DB_ASSERT(env, sharecount > 0); | ||
| 144 | MEMBAR_EXIT(); | ||
| 145 | -- | ||
| 146 | 2.20.1 | ||
| 147 | |||
diff --git a/meta/recipes-support/db/db_5.3.28.bb b/meta/recipes-support/db/db_5.3.28.bb index b7ed2c798c..46536efe86 100644 --- a/meta/recipes-support/db/db_5.3.28.bb +++ b/meta/recipes-support/db/db_5.3.28.bb | |||
| @@ -25,6 +25,7 @@ SRC_URI += "file://fix-parallel-build.patch \ | |||
| 25 | file://0001-atomic-Rename-local-__atomic_compare_exchange-to-avo.patch \ | 25 | file://0001-atomic-Rename-local-__atomic_compare_exchange-to-avo.patch \ |
| 26 | file://0001-configure-Add-explicit-tag-options-to-libtool-invoca.patch \ | 26 | file://0001-configure-Add-explicit-tag-options-to-libtool-invoca.patch \ |
| 27 | file://sequence-type.patch \ | 27 | file://sequence-type.patch \ |
| 28 | file://0001-Fix-libc-compatibility-by-renaming-atomic_init-API.patch \ | ||
| 28 | " | 29 | " |
| 29 | # We are not interested in official latest 6.x versions; | 30 | # We are not interested in official latest 6.x versions; |
| 30 | # let's track what debian is using. | 31 | # let's track what debian is using. |
