[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH 2/4] Adding support for coverage information
On Mon, 2013-02-04 at 09:39 +0000, Jan Beulich wrote: > >>> On 01.02.13 at 15:48, Frediano Ziglio <frediano.ziglio@xxxxxxxxxx> wrote: > > --- a/Config.mk > > +++ b/Config.mk > > @@ -228,3 +228,7 @@ QEMU_TAG ?= 2a1354d655d816feaad7dbdb8364f40a208439c1 > > # doing and are prepared for some pain. > > > > CONFIG_TESTS ?= y > > + > > +# Test coverage support > > +coverage ?= n > > + > > Alongside debug and debug_symbols please. Ok. > > --- a/xen/Rules.mk > > +++ b/xen/Rules.mk > > @@ -103,6 +103,11 @@ subdir-all := $(subdir-y) $(subdir-n) > > > > $(filter %.init.o,$(obj-y) $(obj-bin-y)): CFLAGS += -DINIT_SECTIONS_ONLY > > > > + > > Stray blank line. > > > +ifeq ($(coverage),y) > > +$(filter-out %.init.o,$(obj-y) $(obj-bin-y)): CFLAGS += -fprofile-arcs > > -ftest-coverage -DTEST_COVERAGE > > +endif > > For one - isn't simply using $(obj-y) here sufficient (i.e. without the > $(filter-out ...))? > > And second, I would thing this then ought to become a single line: > > $(obj-$(coverage)): CFLAGS += -fprofile-arcs -ftest-coverage -DTEST_COVERAGE > Yes, it works fine and seems to compile all proper files but I don't understand why. What's the difference between $(obj-bin-y) and $(obj-y) ?? > > --- /dev/null > > +++ b/xen/common/gcov/Makefile > > @@ -0,0 +1,5 @@ > > +ifneq ($(coverage),y) > > +obj-y += nogcov.o > > +endif > > +obj-$(coverage) += gcov.o > > + > > How about > > obj-y := nogcov.o > obj-$(coverage) := gcov.o > Using sysctl is even simpler, just subdir-$(coverage) += gcov in common/Makefile and obj-y += gcov.o in common/gcov/Makefile > > > +typedef void (*ctor_func_t)(void); > > +extern struct > > +{ > > + unsigned long count; > > + ctor_func_t funcs[1]; > > +} __CTOR_LIST__; > > const? > Fine. > > + > > +void init_coverage(void) > > __init > I removed from previous and put in the header as suggestion. > > --- /dev/null > > +++ b/xen/include/public/gcov.h > > @@ -0,0 +1,93 @@ > > +/* > > + * Profiling infrastructure declarations. > > + * > > + * This file is based on gcc-internal definitions. Data structures are > > + * defined to be compatible with gcc counterparts. For a better > > + * understanding, refer to gcc source: gcc/gcov-io.h. > > + * > > + * Copyright IBM Corp. 2009 > > + * Author(s): Peter Oberparleiter <oberpar@xxxxxxxxxxxxxxxxxx> > > + * > > + * Uses gcc-internal data definitions. > > + */ > > + > > +#ifndef XEN_PUBLIC_GCOV_H > > +#define XEN_PUBLIC_GCOV_H XEN_PUBLIC_GCOV_H > > + > > +/* > > + * Profiling data types used for gcc 3.4 and above - these are defined by > > + * gcc and need to be kept as close to the original definition as possible > > to > > + * remain compatible. > > + */ > > +#define GCOV_COUNTERS 5 > > +#define GCOV_DATA_MAGIC ((unsigned int) 0x67636461) > > +#define GCOV_TAG_FUNCTION ((unsigned int) 0x01000000) > > +#define GCOV_TAG_COUNTER_BASE ((unsigned int) 0x01a10000) > > +#define GCOV_TAG_FOR_COUNTER(count) \ > > + (GCOV_TAG_COUNTER_BASE + ((unsigned int) (count) << 17)) > > + > > +#if BITS_PER_LONG >= 64 > > +typedef long gcov_type; > > +#else > > +typedef long long gcov_type; > > +#endif > > What's this??? > This came from Linux, probably for Xen a simple typedef long gcov_type is ok. > > +/** > > + * struct gcov_ctr_info - profiling data per counter type > > + * @num: number of counter values for this type > > + * @values: array of counter values for this type > > + * @merge: merge function for counter values of this type (unused) > > + * > > + * This data is generated by gcc during compilation and doesn't change > > + * at run-time with the exception of the values array. > > + */ > > +struct gcov_ctr_info > > +{ > > + unsigned int num; > > + gcov_type *values; > > + void (*merge)(gcov_type *, unsigned int); > > +}; > > Pointers, and even more so function ones, can't be part of the > public interface. > Yes, probably there is no need to expose this to public. Probably defining only the exported blob would be ok and have no licence issues. > Jan > Frediano _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx http://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |