|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-devel] [PATCH] clang: sizeof(type) must not have __attribute__(aligned)
---
tools/include/xen-foreign/mkheader.py | 25 ++++++++++++++++++++++++-
1 file changed, 24 insertions(+), 1 deletion(-)
diff --git a/tools/include/xen-foreign/mkheader.py
b/tools/include/xen-foreign/mkheader.py
index 0504cb8..1e1e55f 100644
--- a/tools/include/xen-foreign/mkheader.py
+++ b/tools/include/xen-foreign/mkheader.py
@@ -13,6 +13,7 @@ infiles = sys.argv[3:];
# configuration #2: architecture information
inttypes = {};
+typesizes = {}; # types used for sizeof(type) only
header = {};
footer = {};
@@ -24,6 +25,13 @@ inttypes["arm32"] = {
"xen_ulong_t" : "__align8__ uint64_t",
"uint64_t" : "__align8__ uint64_t",
};
+typesizes["arm32"] = {
+ "unsigned long" : "__danger_unsigned_long_on_arm32",
+ "long" : "__danger_long_on_arm32",
+ "xen_pfn_t" : "uint64_t",
+ "xen_ulong_t" : "uint64_t",
+ "uint64_t" : "uint64_t",
+};
header["arm32"] = """
#define __arm___ARM32 1
#if defined(__GNUC__) && !defined(__STRICT_ANSI__)
@@ -45,6 +53,13 @@ inttypes["arm64"] = {
"xen_ulong_t" : "__align8__ uint64_t",
"uint64_t" : "__align8__ uint64_t",
};
+typesizes["arm64"] = {
+ "unsigned long" : "__danger_unsigned_long_on_arm64",
+ "long" : "__danger_long_on_arm64",
+ "xen_pfn_t" : "uint64_t",
+ "xen_ulong_t" : "uint64_t",
+ "uint64_t" : "uint64_t",
+};
header["arm64"] = """
#define __aarch64___ARM64 1
#if defined(__GNUC__) && !defined(__STRICT_ANSI__)
@@ -66,6 +81,7 @@ inttypes["x86_32"] = {
"xen_pfn_t" : "uint32_t",
"xen_ulong_t" : "uint32_t",
};
+typesizes["x86_32"] = inttypes["x86_32"]
header["x86_32"] = """
#define __i386___X86_32 1
#pragma pack(4)
@@ -81,6 +97,12 @@ inttypes["x86_64"] = {
"xen_pfn_t" : "__align8__ uint64_t",
"xen_ulong_t" : "__align8__ uint64_t",
};
+typesizes["x86_64"] = {
+ "unsigned long" : "uint64_t",
+ "long" : "uint64_t",
+ "xen_pfn_t" : "uint64_t",
+ "xen_ulong_t" : "uint64_t",
+};
header["x86_64"] = """
#if defined(__GNUC__) && !defined(__STRICT_ANSI__)
# define __DECL_REG(name) union { uint64_t r ## name, e ## name; }
@@ -196,7 +218,8 @@ for struct in structs:
integers = inttypes[arch].keys();
integers.sort(lambda a, b: cmp(len(b),len(a)));
for type in integers:
- output = re.sub("\\b%s\\b" % type, inttypes[arch][type], output);
+ output = re.sub("\\b(?<=sizeof\()%s\\b" % type, typesizes[arch][type],
output);
+ output = re.sub("\\b(?<!sizeof\()%s\\b" % type, inttypes[arch][type],
output);
# print results
f = open(outfile, "w");
--
2.0.2
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
http://lists.xen.org/xen-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |