summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCyrill Gorcunov <gorcunov@gmail.com>2010-04-21 22:40:11 +0400
committerCyrill Gorcunov <gorcunov@gmail.com>2010-04-21 22:40:11 +0400
commit83ffe8ca240b96e26af689235030dc3bdd16bb20 (patch)
tree53f726a55d388a36e74b81b8cb13a5ab78c7f3ad
parentd0c6dbe0fece06b6765f35336631ce2f21b5744a (diff)
downloadnasm-83ffe8ca240b96e26af689235030dc3bdd16bb20.tar.gz
coff: Use predefined macro in common section flags
Signed-off-by: Cyrill Gorcunov <gorcunov@gmail.com>
-rw-r--r--output/outcoff.c55
1 files changed, 49 insertions, 6 deletions
diff --git a/output/outcoff.c b/output/outcoff.c
index c9f17d75..43ada7b5 100644
--- a/output/outcoff.c
+++ b/output/outcoff.c
@@ -141,13 +141,56 @@ struct Section {
int32_t pos, relpos;
};
-#define TEXT_FLAGS ((win32 | win64) ? 0x60500020L : 0x20L)
-#define DATA_FLAGS ((win32 | win64) ? 0xC0300040L : 0x40L)
-#define BSS_FLAGS ((win32 | win64) ? 0xC0300080L : 0x80L)
+/*
+ * Some common section flags by default
+ */
+#define TEXT_FLAGS_WIN \
+ (IMAGE_SCN_CNT_CODE | \
+ IMAGE_SCN_ALIGN_16BYTES | \
+ IMAGE_SCN_MEM_EXECUTE | \
+ IMAGE_SCN_MEM_READ)
+#define TEXT_FLAGS_DOS \
+ (IMAGE_SCN_CNT_CODE)
+
+#define DATA_FLAGS_WIN \
+ (IMAGE_SCN_CNT_INITIALIZED_DATA | \
+ IMAGE_SCN_ALIGN_4BYTES | \
+ IMAGE_SCN_MEM_READ | \
+ IMAGE_SCN_MEM_WRITE)
+#define DATA_FLAGS_DOS \
+ (IMAGE_SCN_CNT_INITIALIZED_DATA)
+
+#define BSS_FLAGS_WIN \
+ (IMAGE_SCN_CNT_UNINITIALIZED_DATA | \
+ IMAGE_SCN_ALIGN_4BYTES | \
+ IMAGE_SCN_MEM_READ | \
+ IMAGE_SCN_MEM_WRITE)
+#define BSS_FLAGS_DOS \
+ (IMAGE_SCN_CNT_UNINITIALIZED_DATA)
+
+#define RDATA_FLAGS_WIN \
+ (IMAGE_SCN_CNT_INITIALIZED_DATA | \
+ IMAGE_SCN_ALIGN_8BYTES | \
+ IMAGE_SCN_MEM_READ)
+
+#define RDATA_FLAGS_DOS \
+ (IMAGE_SCN_CNT_INITIALIZED_DATA)
+
+#define PDATA_FLAGS \
+ (IMAGE_SCN_CNT_INITIALIZED_DATA | \
+ IMAGE_SCN_ALIGN_4BYTES | \
+ IMAGE_SCN_MEM_READ)
+
+#define XDATA_FLAGS \
+ (IMAGE_SCN_CNT_INITIALIZED_DATA | \
+ IMAGE_SCN_ALIGN_8BYTES | \
+ IMAGE_SCN_MEM_READ)
+
+#define TEXT_FLAGS ((win32 | win64) ? TEXT_FLAGS_WIN : TEXT_FLAGS_DOS)
+#define DATA_FLAGS ((win32 | win64) ? DATA_FLAGS_WIN : DATA_FLAGS_DOS)
+#define BSS_FLAGS ((win32 | win64) ? BSS_FLAGS_WIN : BSS_FLAGS_DOS)
+#define RDATA_FLAGS ((win32 | win64) ? RDATA_FLAGS_WIN : RDATA_FLAGS_DOS)
#define INFO_FLAGS 0x00100A00L
-#define RDATA_FLAGS ((win32 | win64) ? 0x40400040L : 0x40L)
-#define PDATA_FLAGS (0x40300040) /* rdata align=4 */
-#define XDATA_FLAGS (0x40400040) /* rdate align=8 */
#define SECT_DELTA 32
static struct Section **sects;