[PATCH] [MELT] Fix versions comparisons

Alexandre Lissy alissy@mandriva.com
Tue Aug 30 13:32:00 GMT 2011


Comparison of MELT version were not consistent accross the codebase:
 - MELT .c meltdesc were generated with melt_versionstr using
   MELT_VERSION_STRING define
 - comparison at several places in the source code was done against
   MELT_VERSION_STRING
 - comparision at other places was done between melt_genversionstr and
   melt_version_str ().
This commit changes comparison/generation at all those place to
something more consistent:
 - generate meltdesc's melt_versionstr with melt_version_str () call.
 - compare between melt_versionstr and melt_version_str ().
---
 gcc/ChangeLog.MELT           |   10 ++++++++++
 gcc/melt-runtime.c           |   16 ++++++++--------
 gcc/melt/warmelt-outobj.melt |    2 +-
 3 files changed, 19 insertions(+), 9 deletions(-)

diff --git a/gcc/ChangeLog.MELT b/gcc/ChangeLog.MELT
index 46b1471..bb46c20 100644
--- a/gcc/ChangeLog.MELT
+++ b/gcc/ChangeLog.MELT
@@ -1,3 +1,13 @@
+2011-08-30  Alexandre Lissy  <alissy@mandriva.com>
+	* melt-runtime.c (melt_load_module_index):
+	  - Export melt_versionstr from meltdesc instead of
+	    melt_genversionstr.
+	  - Make use of melt_version_str() instead of MELT_VERSION_STR.
+	  - Compare melt_version_str() against melt_versionstr instead of
+	    melt_genversionstr.
+	* melt/warmelt-outobj.melt (output_melt_descriptor): Make use of
+	melt_version_str() to build melt_versionstr instead of using
+	MELT_VERSION_STRING.
 
 2011-08-30  Basile Starynkevitch  <basile@starynkevitch.net>
 	* melt-predef.list (DISCR_BOX):  Remove.
diff --git a/gcc/melt-runtime.c b/gcc/melt-runtime.c
index 08b3d7b..bb0505c 100644
--- a/gcc/melt-runtime.c
+++ b/gcc/melt-runtime.c
@@ -8548,7 +8548,7 @@ melt_load_module_index (const char*srcbase, const char*flavor)
   /* list of optional dynamic symbols (dlsymed in the module, provided
      in the FOO+meltdesc.c file). */
 #define MELTDESCR_OPTIONAL_LIST				\
-  MELTDESCR_OPTIONAL_SYMBOL (melt_genversionstr, char);	\
+  MELTDESCR_OPTIONAL_SYMBOL (melt_versionstr, char);	\
   MELTDESCR_OPTIONAL_SYMBOL (melt_modulerealpath, char)
 
   /* declare our dymamic symbols */
@@ -8646,10 +8646,10 @@ melt_load_module_index (const char*srcbase, const char*flavor)
 	     "MELT module name %s in MELT descriptive file %s not as expected", 
 	     descmodulename, srcpath);
   if (!flag_melt_bootstrapping 
-      && strcmp(descversionmelt, MELT_VERSION_STRING))
+      && strcmp(descversionmelt, melt_version_str ()))
     warning (0,
 	     "MELT descriptive file %s for MELT version %s, but this MELT runtime is version %s",
-	     srcpath, descversionmelt, MELT_VERSION_STRING);
+	     srcpath, descversionmelt, melt_version_str ());
   sobase = 
     concat (lbasename(descmodulename), ".", desccumulatedhexmd5, ".", flavor, ".so", NULL);
   debugeprintf ("melt_load_module_index long sobase %s workdir %s", 
@@ -8762,10 +8762,10 @@ melt_load_module_index (const char*srcbase, const char*flavor)
       time_t nowt = 0;
       time (&nowt);
       if (strcmp (MELTDESCR_REQUIRED (melt_versionmeltstr), 
-		  MELT_VERSION_STRING))
+		 melt_version_str ()))
 	warning (0,
 		 "MELT module %s for source %s has mismatching MELT version %s, expecting %s",
-		 sopath, srcbase, MELTDESCR_REQUIRED (melt_versionmeltstr), MELT_VERSION_STRING);
+		 sopath, srcbase, MELTDESCR_REQUIRED (melt_versionmeltstr), melt_version_str ());
       if (strcmp (MELTDESCR_REQUIRED (melt_prepromd5meltrun),
 		  melt_run_preprocessed_md5))
 	warning (0,
@@ -8830,11 +8830,11 @@ melt_load_module_index (const char*srcbase, const char*flavor)
           free (srcpath), srcpath = NULL;
 	  free (curpath), curpath = NULL;
 	};
-      if (MELTDESCR_OPTIONAL(melt_genversionstr)
-	  && strcmp(MELTDESCR_OPTIONAL(melt_genversionstr), melt_version_str()))
+      if (MELTDESCR_OPTIONAL(melt_versionstr)
+	  && strcmp(MELTDESCR_OPTIONAL(melt_versionstr), melt_version_str()))
 	warning (0,
 		 "MELT module %s generated by %s but used by %s [possible version mismatch]",
-		 sopath, MELTDESCR_OPTIONAL(melt_genversionstr), melt_version_str ());
+		 sopath, MELTDESCR_OPTIONAL(melt_versionstr), melt_version_str ());
       gentim = (time_t) (*MELTDESCR_REQUIRED(melt_gen_timenum));
       if (gentim > nowt)
 	warning (0,
diff --git a/gcc/melt/warmelt-outobj.melt b/gcc/melt/warmelt-outobj.melt
index 06b2261..10870d4 100644
--- a/gcc/melt/warmelt-outobj.melt
+++ b/gcc/melt/warmelt-outobj.melt
@@ -3778,7 +3778,7 @@
     (code_chunk 
      genvmeltch
      #{ /* output_melt_descriptor $GENVMELTCH + */
-     meltgc_add_strbuf_cstr ($DEBUF, MELT_VERSION_STRING) ;
+     meltgc_add_strbuf_cstr ($DEBUF, melt_version_str ()) ;
      }#)
     (add2sbuf_strconst debuf "\";")
     (add2sbuf_indentnl debuf 0)
-- 
1.7.6



More information about the Gcc-patches mailing list