On Thu, May 23, 2019 at 06:58:57PM +0300, Sam Eiderman wrote:
> > On 23 May 2019, at 18:54, Kevin O'Connor <ke...@koconnor.net> wrote:
> > I understand.  If we ensured the smbios date is always in the
> > f-segment, would that also solve the problem?  (That is, using the
> > 'char win_bios_date[] VARFSEG' method discussed previously.)
> 
> That would only be half of the solution, since F-SEG contains the following 
> dates: ['04/01/2014', '01/01/2011', '06/23/99’]
> It means that no matter what is found in "char win_bios_date[] VARFSEG”, 
> SystemBiosDate will always be a date of ’04/01/2014’ or later.
> To really control the output of SystemBiosDate, all dates in SeaBIOS’s F-SEG 
> should be the desired SystemBiosDate (or older).

Under normal circumstances, the 32bit init code is relocated out of
the f-segment.  Unfortunately, that doesn't work for anonymous
strings.  One simple trick, though, is to force these problematic
strings into named variables (see patch below).

-Kevin


diff --git a/src/fw/biostables.c b/src/fw/biostables.c
index fe8626e..269b858 100644
--- a/src/fw/biostables.c
+++ b/src/fw/biostables.c
@@ -401,7 +401,7 @@ smbios_new_type_0(void *start,
 }
 
 #define BIOS_NAME "SeaBIOS"
-#define BIOS_DATE "04/01/2014"
+static const char BIOS_DATE[] = "04/01/2014";
 
 static int
 smbios_romfile_setup(void)
diff --git a/src/fw/smbios.c b/src/fw/smbios.c
index 62a563b..8e7ee6a 100644
--- a/src/fw/smbios.c
+++ b/src/fw/smbios.c
@@ -161,7 +161,7 @@ get_external(int type, char **p, unsigned *nr_structs,
     } while (0)
 
 /* Type 0 -- BIOS Information */
-#define RELEASE_DATE_STR "01/01/2011"
+static const char RELEASE_DATE_STR[] = "01/01/2011";
 static void *
 smbios_init_type_0(void *start)
 {
_______________________________________________
SeaBIOS mailing list -- seabios@seabios.org
To unsubscribe send an email to seabios-le...@seabios.org

Reply via email to