summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDerek Buitenhuis <derek.buitenhuis@gmail.com>2011-09-22 18:44:13 -0400
committerDaniel Stone <daniel@fooishbar.org>2011-11-11 00:36:57 +0000
commit24283d40b1e4314c6647dda49d2a159833341a8b (patch)
tree4dda8eb0fcba5040a7b151a6bf050c518a701c37
parent1c41f3b9b86b5eeedfa3bff92e519d45aa097587 (diff)
makekeys: Fix build/target word size mismatch when cross-compiling
Since makekeys is built using build environment's gcc and runs natively, we have to make sure that the size of the Signature type is the same on both the native environment and the target, otherwise we get mismatches upon running X, and some LSB test failures (xts5). Use an unsigned 32-bit integer on all platforms. Also, eliminate the redundant multiple typedefs for the Signature type. Signed-off-by: Derek Buitenhuis <derek.buitenhuis@gmail.com> Reviewed-by: Daniel Stone <daniel@fooishbar.org>
-rw-r--r--src/KeysymStr.c3
-rw-r--r--src/Xresinternal.h4
-rw-r--r--src/util/Makefile.am3
-rw-r--r--src/util/makekeys.c5
4 files changed, 10 insertions, 5 deletions
diff --git a/src/KeysymStr.c b/src/KeysymStr.c
index 486b5d15..101f2973 100644
--- a/src/KeysymStr.c
+++ b/src/KeysymStr.c
@@ -31,11 +31,10 @@ in this Software without prior written authorization from The Open Group.
#include "Xlibint.h"
#include <X11/Xresource.h>
#include <X11/keysymdef.h>
+#include "Xresinternal.h"
#include <stdio.h> /* sprintf */
-typedef unsigned long Signature;
-
#define NEEDVTABLE
#include "ks_tables.h"
#include "Key.h"
diff --git a/src/Xresinternal.h b/src/Xresinternal.h
index b4b1b00f..c2f355fe 100644
--- a/src/Xresinternal.h
+++ b/src/Xresinternal.h
@@ -2,8 +2,10 @@
#ifndef _XRESINTERNAL_H_
#define _XRESINTERNAL_H_
+#include <inttypes.h>
+
/* type defines */
-typedef unsigned long Signature;
+typedef uint32_t Signature;
/* prototypes */
extern XrmQuark _XrmInternalStringToQuark(
diff --git a/src/util/Makefile.am b/src/util/Makefile.am
index 3b100e00..dfe91f1a 100644
--- a/src/util/Makefile.am
+++ b/src/util/Makefile.am
@@ -5,6 +5,9 @@ makekeys_CFLAGS = \
$(X11_CFLAGS) \
$(CWARNFLAGS)
+makekeys_CPPFLAGS = \
+ -I$(top_srcdir)/include
+
CC = @CC_FOR_BUILD@
CPPFLAGS = @CPPFLAGS_FOR_BUILD@
CFLAGS = @CFLAGS_FOR_BUILD@
diff --git a/src/util/makekeys.c b/src/util/makekeys.c
index 8f88bebc..36d4d4b6 100644
--- a/src/util/makekeys.c
+++ b/src/util/makekeys.c
@@ -30,11 +30,12 @@ from The Open Group.
#include <X11/X.h>
#include <X11/Xos.h>
+#include <X11/Xresource.h>
#include <X11/keysymdef.h>
#include <stdio.h>
#include <stdlib.h>
-typedef unsigned long Signature;
+#include "../Xresinternal.h"
#define KTNUM 4000
@@ -212,7 +213,7 @@ next1: ;
offsets[j] = k;
indexes[i] = k;
val = info[i].val;
- printf("0x%.2lx, 0x%.2lx, 0x%.2lx, 0x%.2lx, 0x%.2lx, 0x%.2lx, ",
+ printf("0x%.2"PRIx32", 0x%.2"PRIx32", 0x%.2lx, 0x%.2lx, 0x%.2lx, 0x%.2lx, ",
(sig >> 8) & 0xff, sig & 0xff,
(val >> 24) & 0xff, (val >> 16) & 0xff,
(val >> 8) & 0xff, val & 0xff);