|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [PATCH] coverage: update gcov info for newer versions of gcc
Jan Beulich <jbeulich@xxxxxxxx> writes:
> On 02.09.2023 17:11, Javi Merino wrote:
>> --- a/xen/common/coverage/Makefile
>> +++ b/xen/common/coverage/Makefile
>> @@ -5,7 +5,9 @@ obj-y += $(call cc-ifversion,-lt,0407, \
>> gcc_3_4.o, $(call cc-ifversion,-lt,0409, \
This isn't even supported, see below:
>> gcc_4_7.o, $(call cc-ifversion,-lt,0500, \
>> gcc_4_9.o, $(call cc-ifversion,-lt,0700, \
>> - gcc_5.o, gcc_7.o))))
>> + gcc_5.o, $(call cc-ifversion,-lt,1000, \
>> + gcc_7.o, $(call cc-ifversion,-lt,1200, \
>> + gcc_10.o, gcc_12.o))))))
>
> This is getting unwieldy, so I think we ought to try to limit the number
> of different files we have. Already gcc_4_9.c and gcc_7.c specify the
> same GCOV_COUNTERS and differ only in the version checks (which could be
> combined). Therefore ...
You may want to consider your policy on supported GCC versions. I see
you still support:
* C compiler and linker:
- For x86:
- GCC 4.1.2_20070115 or later
- GNU Binutils 2.16.91.0.5 or later
or
- Clang/LLVM 3.5 or later
- For ARM 32-bit:
- GCC 4.9 or later
- GNU Binutils 2.24 or later
- For ARM 64-bit:
- GCC 5.1 or later
- GNU Binutils 2.24 or later
While also having some commented out warnings because the base GCC is so old:
CFLAGS += -Wmissing-prototypes
# (gcc 4.3x and later) -Wconversion -Wno-sign-conversion
For reference QEMU's minimum GCC is 7.4
if compiler.get_id() == 'gcc' and compiler.version().version_compare('>=7.4')
and while our support cycle is based off distro LTS releases I have to
wonder do you actually need to support users building the
latest/greatest version of the hypervisor on ancient user-spaces with
old compilers?
I think the oldest distro you have in your CI is jessie (still hanging
on with extended LTS support) and that uses GCC 4.9.
I see there are various scripts to gather support status into the
documentation but I couldn't find a general statement on the projects
overall approach to supported versions of components.
>
>> --- /dev/null
>> +++ b/xen/common/coverage/gcc_10.c
>> @@ -0,0 +1,31 @@
>> +/*
>> + * This code provides functions to handle gcc's profiling data format
>> + * introduced with gcc 10.
>> + *
>> + * For a better understanding, refer to gcc source:
>> + * gcc/gcov-io.h
>> + * libgcc/libgcov.c
>> + *
>> + * Uses gcc-internal data definitions.
>> + */
>> +
>> +#include "gcov.h"
>> +
>> +#if GCC_VERSION < 100000 || GCC_VERSION > 120000
>> +#error "Wrong version of GCC used to compile gcov"
>> +#endif
>> +
>> +#define GCOV_COUNTERS 8
>> +#define GCOV_UNIT_SIZE 1
>> +
>> +#include "gcc_4_7.c"
>
> ... this could simply re-use gcc_4_7.c directly, with just the version
> check there suitably tweaked.
>
>> --- a/xen/common/coverage/gcc_4_7.c
>> +++ b/xen/common/coverage/gcc_4_7.c
>> @@ -27,6 +27,7 @@
>> # error "Wrong version of GCC used to compile gcov"
>> # endif
>> #define GCOV_COUNTERS 8
>> +#define GCOV_UNIT_SIZE 1
>> #endif
>
> If further this became a separate #ifdef, ...
>
>> --- a/xen/common/coverage/gcc_4_9.c
>> +++ b/xen/common/coverage/gcc_4_9.c
>> @@ -19,6 +19,7 @@
>> #endif
>>
>> #define GCOV_COUNTERS 9
>> +#define GCOV_UNIT_SIZE 1
>>
>> #include "gcc_4_7.c"
>>
>> --- a/xen/common/coverage/gcc_5.c
>> +++ b/xen/common/coverage/gcc_5.c
>> @@ -19,6 +19,7 @@
>> #endif
>>
>> #define GCOV_COUNTERS 10
>> +#define GCOV_UNIT_SIZE 1
>>
>> #include "gcc_4_7.c"
>>
>
> ... touching these two files could be avoided altogether.
>
> Henry - afaict this was submitted after the feature submission deadline,
> so you may want to consider giving it an exception.
>
> Jan
--
Alex Bennée
Virtualisation Tech Lead @ Linaro
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |