Describe better version mismatch in libgcov driver.
2019-01-18 Martin Liska <mliska@suse.cz> * libgcov-driver.c (gcov_version_string): New function. (gcov_version): Convert version integer into string. From-SVN: r268069
This commit is contained in:
parent
cd0b2d361d
commit
be9d9fdbed
|
@ -1,3 +1,8 @@
|
||||||
|
2019-01-18 Martin Liska <mliska@suse.cz>
|
||||||
|
|
||||||
|
* libgcov-driver.c (gcov_version_string): New function.
|
||||||
|
(gcov_version): Convert version integer into string.
|
||||||
|
|
||||||
2019-01-17 Andrew Stubbs <ams@codesourcery.com>
|
2019-01-17 Andrew Stubbs <ams@codesourcery.com>
|
||||||
Kwok Cheung Yeung <kcy@codesourcery.com>
|
Kwok Cheung Yeung <kcy@codesourcery.com>
|
||||||
Julian Brown <julian@codesourcery.com>
|
Julian Brown <julian@codesourcery.com>
|
||||||
|
|
|
@ -157,6 +157,27 @@ fail:
|
||||||
return (struct gcov_fn_buffer **)free_fn_data (gi_ptr, fn_buffer, ix);
|
return (struct gcov_fn_buffer **)free_fn_data (gi_ptr, fn_buffer, ix);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Convert VERSION into a string description and return the it.
|
||||||
|
BUFFER is used for storage of the string. The code should be
|
||||||
|
aligned wit gcov-iov.c. */
|
||||||
|
|
||||||
|
static char *
|
||||||
|
gcov_version_string (char *buffer, char version[4])
|
||||||
|
{
|
||||||
|
if (version[0] < 'A' || version[0] > 'Z'
|
||||||
|
|| version[1] < '0' || version[1] > '9'
|
||||||
|
|| version[2] < '0' || version[2] > '9')
|
||||||
|
sprintf (buffer, "(unknown)");
|
||||||
|
else
|
||||||
|
{
|
||||||
|
unsigned major = 10 * (version[0] - 'A') + (version[1] - '0');
|
||||||
|
unsigned minor = version[2] - '0';
|
||||||
|
sprintf (buffer, "%u.%u (%s)", major, minor,
|
||||||
|
version[3] == '*' ? "release" : "experimental");
|
||||||
|
}
|
||||||
|
return buffer;
|
||||||
|
}
|
||||||
|
|
||||||
/* Check if VERSION of the info block PTR matches libgcov one.
|
/* Check if VERSION of the info block PTR matches libgcov one.
|
||||||
Return 1 on success, or zero in case of versions mismatch.
|
Return 1 on success, or zero in case of versions mismatch.
|
||||||
If FILENAME is not NULL, its value used for reporting purposes
|
If FILENAME is not NULL, its value used for reporting purposes
|
||||||
|
@ -169,12 +190,16 @@ gcov_version (struct gcov_info *ptr, gcov_unsigned_t version,
|
||||||
if (version != GCOV_VERSION)
|
if (version != GCOV_VERSION)
|
||||||
{
|
{
|
||||||
char v[4], e[4];
|
char v[4], e[4];
|
||||||
|
char version_string[128], expected_string[128];
|
||||||
|
|
||||||
GCOV_UNSIGNED2STRING (v, version);
|
GCOV_UNSIGNED2STRING (v, version);
|
||||||
GCOV_UNSIGNED2STRING (e, GCOV_VERSION);
|
GCOV_UNSIGNED2STRING (e, GCOV_VERSION);
|
||||||
|
|
||||||
gcov_error ("profiling:%s:Version mismatch - expected %.4s got %.4s\n",
|
gcov_error ("profiling:%s:Version mismatch - expected %s (%.4s) "
|
||||||
filename? filename : ptr->filename, e, v);
|
"got %s (%.4s)\n",
|
||||||
|
filename? filename : ptr->filename,
|
||||||
|
gcov_version_string (expected_string, e), e,
|
||||||
|
gcov_version_string (version_string, v), v);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
return 1;
|
return 1;
|
||||||
|
|
Loading…
Reference in New Issue