From 61608a270cf1ad76f52c69971d31b83ecbe09fac Mon Sep 17 00:00:00 2001
From: Bertho Stultiens <bertho@panter.soci.aau.dk>
Date: Mon, 14 Dec 1998 16:04:49 +0000
Subject: [PATCH] - Added a global label for elf-dll linking and a long with
 the resource   size and a long with the directory size. - Killed an annoying
 warning since version 1.0.0 in parser.y about a   var being used before init.

---
 tools/wrc/CHANGES    |  6 ++++++
 tools/wrc/parser.y   |  2 +-
 tools/wrc/wrc.h      |  4 ++--
 tools/wrc/writeres.c | 17 +++++++++++++++++
 4 files changed, 26 insertions(+), 3 deletions(-)

diff --git a/tools/wrc/CHANGES b/tools/wrc/CHANGES
index 30700f0a665..6f3bc3676c0 100644
--- a/tools/wrc/CHANGES
+++ b/tools/wrc/CHANGES
@@ -1,3 +1,9 @@
+---------------------------------------------------------------------------
+Version 1.0.4 (10-Dec-1998)
+- Added a global label for elf-dll linking and a long with the resource
+  size and a long with the directory size.
+- Killed an annoying warning since version 1.0.0 in parser.y about a
+  var being used before init.
 
 ---------------------------------------------------------------------------
 Version 1.0.3 (02-Nov-1998)
diff --git a/tools/wrc/parser.y b/tools/wrc/parser.y
index 494d0067e00..7f5d87798ec 100644
--- a/tools/wrc/parser.y
+++ b/tools/wrc/parser.y
@@ -1847,7 +1847,7 @@ event_t *add_event(int key, int id, int flags, event_t *prev)
 
 event_t *add_string_event(string_t *key, int id, int flags, event_t *prev)
 {
-	int keycode;
+	int keycode = 0;
 	event_t *ev = new_event();
 
 	if(key->type != str_char)
diff --git a/tools/wrc/wrc.h b/tools/wrc/wrc.h
index 2985c2b467f..1201c6c7823 100644
--- a/tools/wrc/wrc.h
+++ b/tools/wrc/wrc.h
@@ -12,8 +12,8 @@
 #include "wrctypes.h"
 #endif
 
-#define WRC_VERSION	"1.0.3"
-#define WRC_RELEASEDATE	"(02-Nov-1998)"
+#define WRC_VERSION	"1.0.4"
+#define WRC_RELEASEDATE	"(10-Dec-1998)"
 #define WRC_FULLVERSION WRC_VERSION " " WRC_RELEASEDATE
 
 /* Only used in heavy debugging sessions */
diff --git a/tools/wrc/writeres.c b/tools/wrc/writeres.c
index ef02d4ccf96..f02d39f4557 100644
--- a/tools/wrc/writeres.c
+++ b/tools/wrc/writeres.c
@@ -18,6 +18,12 @@
 #include "newstruc.h"
 #include "utils.h"
 
+#ifdef NEED_UNDERSCORE_PREFIX
+char Underscore[] = "_";
+#else
+char Underscore[] = "";
+#endif
+
 char s_file_head_str[] =
 	"#\n"
 	"# This file is generated with wrc version " WRC_FULLVERSION ". Do not edit!\n"
@@ -742,6 +748,10 @@ void write_pe_segment(FILE *fp, resource_t *top)
 		free(typelabel);
 	}
 
+	fprintf(fp, "\t.align\t4\n");
+	fprintf(fp, "%s_ResourceDirectorySize:\n", Underscore);
+	fprintf(fp, "\t.globl\t%s_ResourceDirectorySize\n", Underscore);
+	fprintf(fp, "\t.long\t. - %s%s\n", prefix, _PEResTab);
 }
 
 /*
@@ -970,6 +980,13 @@ void write_s_file(char *outname, resource_t *top)
 
 			fprintf(fo, "\n");
 		}
+
+		if(create_dir)
+		{
+			/* Add the size of the entire resource section for elf-dlls */
+			fprintf(fo, "%s_ResourceSectionSize:\n", Underscore);
+			fprintf(fo, "\t.long\t. - %s%s\n", prefix, _PEResTab);
+		}
 	}
 
 	if(indirect)
-- 
GitLab