summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLudovic Courtès <ludo@gnu.org>2009-07-15 00:55:33 +0200
committerLudovic Courtès <ludo@gnu.org>2009-07-15 00:55:33 +0200
commit9e1a18db9fd34a6156007c7db563f46095989b62 (patch)
tree92b59e5c123a3d48a257d8a75af209a502d2b589
parentba4c43dc3b6c4bb3b65883283e00228df6029371 (diff)
downloadguile-9e1a18db9fd34a6156007c7db563f46095989b62.tar.gz
Augment `OBJCODE_COOKIE' to detect wrong endianness or word size.
* libguile/objcodes.c (OBJCODE_ENDIANNESS, _OBJCODE_STRINGIFY, OBJCODE_STRINGIFY, OBJCODE_WORD_SIZE): New macros. (OBJCODE_COOKIE): Use them. The intent is that `.go' files compiled for a different endianness or word size are detected.
-rw-r--r--libguile/objcodes.c16
1 files changed, 15 insertions, 1 deletions
diff --git a/libguile/objcodes.c b/libguile/objcodes.c
index 4f219717a..d5d66952c 100644
--- a/libguile/objcodes.c
+++ b/libguile/objcodes.c
@@ -33,8 +33,22 @@
#include "programs.h"
#include "objcodes.h"
+/* The endianness marker in objcode. */
+#ifdef WORDS_BIGENDIAN
+# define OBJCODE_ENDIANNESS "BE"
+#else
+# define OBJCODE_ENDIANNESS "LE"
+#endif
+
+#define _OBJCODE_STRINGIFY(x) # x
+#define OBJCODE_STRINGIFY(x) _OBJCODE_STRINGIFY (x)
+
+/* The word size marker in objcode. */
+#define OBJCODE_WORD_SIZE OBJCODE_STRINGIFY (SIZEOF_VOID_P)
+
/* nb, the length of the header should be a multiple of 8 bytes */
-#define OBJCODE_COOKIE "GOOF-0.6"
+#define OBJCODE_COOKIE \
+ "GOOF-0.6-" OBJCODE_ENDIANNESS "-" OBJCODE_WORD_SIZE "---"
/*