[PATCH] lib: framework: pack fwts_framework_flags to ensure it is a 32 bit int

Colin King colin.king at canonical.com
Mon Nov 9 13:20:52 UTC 2015


From: Colin Ian King <colin.king at canonical.com>

recent commit c4091edad369beb12b451a0ab5f233fcda05a5f3
("Add in the notion of ACPI compliance tests.") make the fwts_framework_flags
enum into a 64 bit integer which now breaks 32 bit builds:

fwts_framework.c: In function 'fwts_framework_test_add':
fwts_framework.c:155:4: error: format '%lx' expects argument of type
   'long unsigned int', but argument 4 has type 'long long unsigned int'
   [-Werror=format]

Since we have a bunch of spare bits in this enum, re-orginaise the bits to
pack this into a 32 bit enum.  Once we've used all these bits up we should
consider making the enum into a 64 bit integer, but for now, try to save
a few bytes by keeping this a 32 bit integer.

Signed-off-by: Colin Ian King <colin.king at canonical.com>
---
 src/lib/include/fwts_framework.h | 30 +++++++++++++++---------------
 src/lib/src/fwts_framework.c     |  2 +-
 2 files changed, 16 insertions(+), 16 deletions(-)

diff --git a/src/lib/include/fwts_framework.h b/src/lib/include/fwts_framework.h
index 7883339..0ae8321 100644
--- a/src/lib/include/fwts_framework.h
+++ b/src/lib/include/fwts_framework.h
@@ -40,21 +40,21 @@ typedef enum {
 	FWTS_FLAG_SHOW_PROGRESS_DIALOG		= 0x00000010,
 	FWTS_FLAG_ACPICA_DEBUG			= 0x00000020,
 	FWTS_FLAG_DUMP				= 0x00000040,
-	FWTS_FLAG_BATCH				= 0x00001000,
-	FWTS_FLAG_INTERACTIVE			= 0x00002000,
-	FWTS_FLAG_BATCH_EXPERIMENTAL		= 0x00004000,
-	FWTS_FLAG_INTERACTIVE_EXPERIMENTAL	= 0x00008000,
-	FWTS_FLAG_POWER_STATES			= 0x00010000,
-	FWTS_FLAG_ROOT_PRIV			= 0x00020000,
-	FWTS_FLAG_UNSAFE			= 0x00040000,
-	FWTS_FLAG_TEST_BIOS			= 0x01000000,
-	FWTS_FLAG_TEST_UEFI			= 0x02000000,
-	FWTS_FLAG_TEST_ACPI			= 0x04000000,
-	FWTS_FLAG_UTILS				= 0x08000000,
-	FWTS_FLAG_QUIET				= 0x10000000,
-	FWTS_FLAG_SHOW_TESTS_FULL		= 0x20000000,
-	FWTS_FLAG_SHOW_TESTS_CATEGORIES		= 0x40000000,
-	FWTS_FLAG_TEST_COMPLIANCE_ACPI	       = 0x100000000
+	FWTS_FLAG_BATCH				= 0x00000100,
+	FWTS_FLAG_INTERACTIVE			= 0x00000200,
+	FWTS_FLAG_BATCH_EXPERIMENTAL		= 0x00000400,
+	FWTS_FLAG_INTERACTIVE_EXPERIMENTAL	= 0x00000800,
+	FWTS_FLAG_POWER_STATES			= 0x00001000,
+	FWTS_FLAG_ROOT_PRIV			= 0x00002000,
+	FWTS_FLAG_UNSAFE			= 0x00004000,
+	FWTS_FLAG_TEST_BIOS			= 0x00010000,
+	FWTS_FLAG_TEST_UEFI			= 0x00020000,
+	FWTS_FLAG_TEST_ACPI			= 0x00040000,
+	FWTS_FLAG_UTILS				= 0x00080000,
+	FWTS_FLAG_QUIET				= 0x00100000,
+	FWTS_FLAG_SHOW_TESTS_FULL		= 0x00200000,
+	FWTS_FLAG_SHOW_TESTS_CATEGORIES		= 0x00400000,
+	FWTS_FLAG_TEST_COMPLIANCE_ACPI		= 0x00800000
 } fwts_framework_flags;
 
 #define FWTS_FLAG_TEST_MASK		\
diff --git a/src/lib/src/fwts_framework.c b/src/lib/src/fwts_framework.c
index 9739c7b..3c2cef8 100644
--- a/src/lib/src/fwts_framework.c
+++ b/src/lib/src/fwts_framework.c
@@ -151,7 +151,7 @@ void fwts_framework_test_add(
 	fwts_framework_test *new_test;
 
 	if (flags & ~(FWTS_FLAG_RUN_ALL | FWTS_FLAG_ROOT_PRIV)) {
-		fprintf(stderr, "Test %s flags must be a bit field in 0x%lx, got 0x%lx\n",
+		fprintf(stderr, "Test %s flags must be a bit field in 0x%x, got 0x%x\n",
 			name, FWTS_FLAG_RUN_ALL, flags);
 		exit(EXIT_FAILURE);
 	}
-- 
2.5.0




More information about the fwts-devel mailing list