aboutsummaryrefslogtreecommitdiffstats
path: root/meta-oe/recipes-extended
diff options
context:
space:
mode:
authorKhem Raj <raj.khem@gmail.com>2020-10-31 12:53:37 -0700
committerKhem Raj <raj.khem@gmail.com>2020-11-02 09:00:52 -0800
commitbc83d3f088ec25f6e176231581ce385b2cb717ee (patch)
tree85f2ede56e1318d0b69da435dd321885e124f73a /meta-oe/recipes-extended
parent8a5d7f28a02a18cd26749f7b97c1e85128fda720 (diff)
downloadmeta-openembedded-bc83d3f088ec25f6e176231581ce385b2cb717ee.tar.gz
redis: Fix build on 32bit targets and clang
Signed-off-by: Khem Raj <raj.khem@gmail.com>
Diffstat (limited to 'meta-oe/recipes-extended')
-rw-r--r--meta-oe/recipes-extended/redis/redis/ilp32.patch29
-rw-r--r--meta-oe/recipes-extended/redis/redis_6.0.8.bb1
2 files changed, 30 insertions, 0 deletions
diff --git a/meta-oe/recipes-extended/redis/redis/ilp32.patch b/meta-oe/recipes-extended/redis/redis/ilp32.patch
new file mode 100644
index 0000000000..48d01a1d62
--- /dev/null
+++ b/meta-oe/recipes-extended/redis/redis/ilp32.patch
@@ -0,0 +1,29 @@
+__ILP32__ is defined for all 32bit architectures with clang e.g.
+which is right but it is causing issues on non-x86 architectures
+where this condition becomes true and wrongly starts using this
+code, this issue is hidden with gcc becuase gcc does not define
+__ILP32__ for all 32bit architectures but for selected 64bit arches
+who choose to use 32bit ABI e.g. x32
+
+Upstream-Status: Pending
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+--- a/src/debug.c
++++ b/src/debug.c
+@@ -944,7 +944,7 @@ static void *getMcontextEip(ucontext_t *
+ /* Linux */
+ #if defined(__riscv) && __riscv_xlen == 32
+ return (void*) uc->uc_mcontext.__gregs[REG_PC];
+- #elif defined(__i386__) || defined(__ILP32__)
++ #elif defined(__i386__) || (defined(__X86_64__) && defined(__ILP32__))
+ return (void*) uc->uc_mcontext.gregs[14]; /* Linux 32 */
+ #elif defined(__X86_64__) || defined(__x86_64__)
+ return (void*) uc->uc_mcontext.gregs[16]; /* Linux 64 */
+@@ -1125,7 +1125,7 @@ void logRegisters(ucontext_t *uc) {
+ );
+ logStackContent((void**)uc->uc_mcontext.__gregs[REG_SP]);
+ /* Linux x86 */
+- #elif defined(__i386__) || defined(__ILP32__)
++ #elif defined(__i386__) || ( defined(__X86_64__) && defined(__ILP32__))
+ serverLog(LL_WARNING,
+ "\n"
+ "EAX:%08lx EBX:%08lx ECX:%08lx EDX:%08lx\n"
diff --git a/meta-oe/recipes-extended/redis/redis_6.0.8.bb b/meta-oe/recipes-extended/redis/redis_6.0.8.bb
index 546332851c..14091b565c 100644
--- a/meta-oe/recipes-extended/redis/redis_6.0.8.bb
+++ b/meta-oe/recipes-extended/redis/redis_6.0.8.bb
@@ -16,6 +16,7 @@ SRC_URI = "http://download.redis.io/releases/${BP}.tar.gz \
file://0001-src-Do-not-reset-FINAL_LIBS.patch \
file://GNU_SOURCE.patch \
file://riscv32.patch \
+ file://ilp32.patch \
"
SRC_URI[md5sum] = "70113b4b8ea7ee4c7e148be62b5d1e0b"