From: Pavel Roskin <proski@gnu.org>
To: linux-sparse@vger.kernel.org
Subject: [PATCH 2/6] Hardcode actual type sizes, add -m32 support
Date: Thu, 28 Jun 2007 01:39:59 -0400 [thread overview]
Message-ID: <20070628053959.30704.91680.stgit@dv.roinet.com> (raw)
In-Reply-To: <20070628053954.30704.66440.stgit@dv.roinet.com>
Use the actual sizeof values at the compile time to describe the default
target. If sparse is compiled on a 64-bit system, it will default to a
64-bit system now.
To force 32-bit operation on 64-bit systems, recognize -m32. Reject
machine options other than -m32 and -m64.
Signed-off-by: Pavel Roskin <proski@gnu.org>
---
lib.c | 13 +++++++------
target.c | 45 +++++++++++++++++++++++++++++++--------------
target.h | 6 ++++++
3 files changed, 44 insertions(+), 20 deletions(-)
diff --git a/lib.c b/lib.c
index 7fea474..e695f1c 100644
--- a/lib.c
+++ b/lib.c
@@ -320,12 +320,13 @@ static char **handle_switch_M(char *arg, char **next)
static char **handle_switch_m(char *arg, char **next)
{
- if (!strcmp(arg, "m64")) {
- bits_in_long = 64;
- max_int_alignment = 8;
- bits_in_pointer = 64;
- pointer_alignment = 8;
- }
+ if (!strcmp(arg, "m32"))
+ target_set_m32();
+ else if (!strcmp(arg, "m64"))
+ target_set_m64();
+ else
+ die("unsupported machine specification: -%s", arg);
+
return next;
}
diff --git a/target.c b/target.c
index 22e948e..1d0912d 100644
--- a/target.c
+++ b/target.c
@@ -1,4 +1,5 @@
#include <stdio.h>
+#include <sys/param.h>
#include "symbol.h"
#include "target.h"
@@ -15,31 +16,47 @@ int max_alignment = 16;
* Integer data types
*/
int bits_in_bool = 1;
-int bits_in_char = 8;
-int bits_in_short = 16;
-int bits_in_int = 32;
-int bits_in_long = 32;
-int bits_in_longlong = 64;
+int bits_in_char = NBBY * sizeof(char);
+int bits_in_short = NBBY * sizeof(short);
+int bits_in_int = NBBY * sizeof(int);
+int bits_in_long = NBBY * sizeof(long);
+int bits_in_longlong = NBBY * sizeof(long long);
-int max_int_alignment = 4;
+int max_int_alignment = sizeof(int);
/*
* Floating point data types
*/
-int bits_in_float = 32;
-int bits_in_double = 64;
-int bits_in_longdouble = 80;
+int bits_in_float = NBBY * sizeof(float);
+int bits_in_double = NBBY * sizeof(double);
+int bits_in_longdouble = NBBY * sizeof(long double);
-int max_fp_alignment = 8;
+int max_fp_alignment = sizeof(double);
/*
* Pointer data type
*/
-int bits_in_pointer = 32;
-int pointer_alignment = 4;
+int bits_in_pointer = NBBY * sizeof(void *);
+int pointer_alignment = sizeof(void *);
/*
* Enum data types
*/
-int bits_in_enum = 32;
-int enum_alignment = 4;
+int bits_in_enum = NBBY * sizeof(enum {ENUM_BITS});
+int enum_alignment = sizeof(enum {ENUM_ALIGN});
+
+void target_set_m32(void)
+{
+ bits_in_long = 32;
+ max_int_alignment = 4;
+ bits_in_pointer = 32;
+ pointer_alignment = 4;
+}
+
+void target_set_m64(void)
+{
+ bits_in_long = 64;
+ max_int_alignment = 8;
+ bits_in_pointer = 64;
+ pointer_alignment = 8;
+}
diff --git a/target.h b/target.h
index 25f7948..94e182f 100644
--- a/target.h
+++ b/target.h
@@ -42,4 +42,10 @@ extern int pointer_alignment;
extern int bits_in_enum;
extern int enum_alignment;
+/*
+ * Functions
+ */
+void target_set_m32(void);
+void target_set_m64(void);
+
#endif
next prev parent reply other threads:[~2007-06-28 5:40 UTC|newest]
Thread overview: 35+ messages / expand[flat|nested] mbox.gz Atom feed top
2007-06-28 5:39 [PATCH 1/6] Bitfield without explicit sign should be a warning, not an error Pavel Roskin
2007-06-28 5:39 ` Pavel Roskin [this message]
2007-06-28 5:58 ` [PATCH 2/6] Hardcode actual type sizes, add -m32 support Al Viro
2007-06-28 6:05 ` Josh Triplett
2007-06-28 6:23 ` Al Viro
2007-06-28 6:27 ` Jeff Garzik
2007-06-28 6:46 ` Josh Triplett
2007-06-28 6:25 ` Jeff Garzik
2007-06-28 6:44 ` Pavel Roskin
2007-06-28 6:47 ` Jeff Garzik
2007-06-28 6:55 ` Josh Triplett
2007-06-28 6:54 ` Josh Triplett
2007-06-28 7:01 ` Jeff Garzik
2007-06-28 7:38 ` Josh Triplett
2007-06-28 6:27 ` Pavel Roskin
2007-06-28 5:40 ` [PATCH 3/6] cgcc: preserve sparse exit code if -no-compile is used Pavel Roskin
2007-06-28 6:12 ` Josh Triplett
2007-06-28 5:40 ` [PATCH 4/6] Avoid use of libc headers in the validation suite Pavel Roskin
2007-06-28 6:14 ` Josh Triplett
2007-06-28 5:40 ` [PATCH 5/6] Fix warnings about undeclared globals, they are irrelevant to the test Pavel Roskin
2007-06-28 6:18 ` Josh Triplett
2007-06-28 5:40 ` [PATCH 6/6] Add a simple test script, embed expected results into test files Pavel Roskin
2007-06-28 7:20 ` Josh Triplett
2007-06-28 18:59 ` Damien Lespiau
2007-06-28 21:21 ` Pavel Roskin
2007-06-28 21:38 ` Josh Triplett
2007-06-29 0:13 ` Damien Lespiau
2007-06-29 0:29 ` Josh Triplett
2007-07-02 4:59 ` Damien Lespiau
2007-07-02 5:19 ` Josh Triplett
2007-07-08 21:52 ` Josh Triplett
2007-07-09 2:15 ` Josh Triplett
2007-07-09 21:27 ` Damien Lespiau
2007-07-11 0:48 ` Anderson Lizardo
2007-06-28 6:09 ` [PATCH 1/6] Bitfield without explicit sign should be a warning, not an error Josh Triplett
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20070628053959.30704.91680.stgit@dv.roinet.com \
--to=proski@gnu.org \
--cc=linux-sparse@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.