mirror of
https://git.yoctoproject.org/poky
synced 2026-09-19 09:49:33 +02:00
Fixes bug: [YOCTO #1095] Because of cross-compiling libx11 keysyms will cause Xts5 test of LSB fail. libx11 use a tool named "makekey" which compiled as a native tool to generate ks_tables.h. Because the size of "unsigned long" is different between 32-bit and 64-bit, we should judge whether our target is 32-bit or 64-bit and tell "makekey". I add a patch to "makekeys_crosscompile.patch" to "src/utils/makekeys.c" in order to deal with the different targets. If our target is 32-bit, we force the variable its type is "unsigned long" to "uint32_t". So we can generate a correct keysyms. (From OE-Core rev: 0eea9ab2e9d6e9457f24aa63b3126666611c1c7b) Signed-off-by: Jingdong Lu <jingdong.lu@windriver.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
46 lines
1.1 KiB
Diff
46 lines
1.1 KiB
Diff
Because the size of "unsigned long" is different between 32-bit
|
|
and 64-bit, judge whether target is 32-bit or 64-bit and tell
|
|
"makekey".
|
|
|
|
Upstream-Status: Pending
|
|
|
|
Signed-off-by: dbuitenh@windriver.com
|
|
|
|
--- libX11-1.3.4.orig/src/util/makekeys.c 2010-01-15 09:11:36.000000000 +0800
|
|
+++ libX11-1.3.4/src/util/makekeys.c 2011-05-24 19:04:25.454774908 +0800
|
|
@@ -33,6 +33,7 @@
|
|
#include <X11/keysymdef.h>
|
|
#include <stdio.h>
|
|
#include <stdlib.h>
|
|
+#include <stdint.h>
|
|
|
|
typedef unsigned long Signature;
|
|
|
|
@@ -124,7 +125,12 @@
|
|
name = info[i].name;
|
|
sig = 0;
|
|
while ((c = *name++))
|
|
- sig = (sig << 1) + c;
|
|
+#ifdef USE32
|
|
+ sig = (uint32_t)(sig << 1) + c;
|
|
+#else
|
|
+ sig = (uint64_t)(sig << 1) + c;
|
|
+#endif
|
|
+
|
|
first = j = sig % z;
|
|
for (k = 0; tab[j]; k++) {
|
|
j += first + 1;
|
|
@@ -163,7 +169,11 @@
|
|
name = info[i].name;
|
|
sig = 0;
|
|
while ((c = *name++))
|
|
- sig = (sig << 1) + c;
|
|
+#ifdef USE32
|
|
+ sig = (uint32_t)(sig << 1) + c;
|
|
+#else
|
|
+ sig = (uint64_t)(sig << 1) + c;
|
|
+#endif
|
|
first = j = sig % z;
|
|
while (offsets[j]) {
|
|
j += first + 1;
|