Dmitry Timoshkov : winedump: IMAGE_SCN_ALIGN_??? are not the bit fields, but the values masked by IMAGE_SCN_ALIGN_MASK.

Alexandre Julliard julliard at wine.codeweavers.com
Thu Dec 7 14:23:38 CST 2006


Module: wine
Branch: master
Commit: cb7453ff4d7125063e582d05839d5f23ecaf8541
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=cb7453ff4d7125063e582d05839d5f23ecaf8541

Author: Dmitry Timoshkov <dmitry at codeweavers.com>
Date:   Thu Dec  7 21:43:04 2006 +0800

winedump: IMAGE_SCN_ALIGN_??? are not the bit fields, but the values masked by IMAGE_SCN_ALIGN_MASK.

---

 tools/winedump/pe.c |   31 +++++++++++++++++++++----------
 1 files changed, 21 insertions(+), 10 deletions(-)

diff --git a/tools/winedump/pe.c b/tools/winedump/pe.c
index 8365432..a5bba57 100644
--- a/tools/winedump/pe.c
+++ b/tools/winedump/pe.c
@@ -365,8 +365,8 @@ static	void	dump_sections(const void* ad
 	printf("    line # offs:     %-8u  line #'s:      %-8u\n",
 	       sectHead->PointerToLinenumbers, sectHead->NumberOfLinenumbers);
 	printf("    characteristics: 0x%08x\n", sectHead->Characteristics);
-	printf("      ");
-#define X(b,s)	if (sectHead->Characteristics & b) printf(s "  ")
+	printf("    ");
+#define X(b,s)	if (sectHead->Characteristics & b) printf("  " s)
 /* #define IMAGE_SCN_TYPE_REG			0x00000000 - Reserved */
 /* #define IMAGE_SCN_TYPE_DSECT			0x00000001 - Reserved */
 /* #define IMAGE_SCN_TYPE_NOLOAD		0x00000002 - Reserved */
@@ -394,14 +394,25 @@ static	void	dump_sections(const void* ad
 	X(IMAGE_SCN_MEM_LOCKED, 		"MEM_LOCKED");
 	X(IMAGE_SCN_MEM_PRELOAD, 		"MEM_PRELOAD");
 
-	X(IMAGE_SCN_ALIGN_1BYTES, 		"ALIGN_1BYTES");
-	X(IMAGE_SCN_ALIGN_2BYTES, 		"ALIGN_2BYTES");
-	X(IMAGE_SCN_ALIGN_4BYTES, 		"ALIGN_4BYTES");
-	X(IMAGE_SCN_ALIGN_8BYTES, 		"ALIGN_8BYTES");
-	X(IMAGE_SCN_ALIGN_16BYTES, 		"ALIGN_16BYTES");
-	X(IMAGE_SCN_ALIGN_32BYTES, 		"ALIGN_32BYTES");
-	X(IMAGE_SCN_ALIGN_64BYTES, 		"ALIGN_64BYTES");
-/* 						0x00800000 - Unused */
+        switch (sectHead->Characteristics & IMAGE_SCN_ALIGN_MASK)
+        {
+#define X2(b,s)	case b: printf("  " s); break;
+        X2(IMAGE_SCN_ALIGN_1BYTES, 		"ALIGN_1BYTES");
+        X2(IMAGE_SCN_ALIGN_2BYTES, 		"ALIGN_2BYTES");
+        X2(IMAGE_SCN_ALIGN_4BYTES, 		"ALIGN_4BYTES");
+        X2(IMAGE_SCN_ALIGN_8BYTES, 		"ALIGN_8BYTES");
+        X2(IMAGE_SCN_ALIGN_16BYTES, 		"ALIGN_16BYTES");
+        X2(IMAGE_SCN_ALIGN_32BYTES, 		"ALIGN_32BYTES");
+        X2(IMAGE_SCN_ALIGN_64BYTES, 		"ALIGN_64BYTES");
+        X2(IMAGE_SCN_ALIGN_128BYTES, 		"ALIGN_128BYTES");
+        X2(IMAGE_SCN_ALIGN_256BYTES, 		"ALIGN_256BYTES");
+        X2(IMAGE_SCN_ALIGN_512BYTES, 		"ALIGN_512BYTES");
+        X2(IMAGE_SCN_ALIGN_1024BYTES, 		"ALIGN_1024BYTES");
+        X2(IMAGE_SCN_ALIGN_2048BYTES, 		"ALIGN_2048BYTES");
+        X2(IMAGE_SCN_ALIGN_4096BYTES, 		"ALIGN_4096BYTES");
+        X2(IMAGE_SCN_ALIGN_8192BYTES, 		"ALIGN_8192BYTES");
+#undef X2
+        }
 
 	X(IMAGE_SCN_LNK_NRELOC_OVFL, 		"LNK_NRELOC_OVFL");
 




More information about the wine-cvs mailing list