From: Wei Liu <wei.liu2@citrix.com>
To: Jan Beulich <JBeulich@suse.com>
Cc: Stefano Stabellini <sstabellini@kernel.org>,
	Wei Liu <wei.liu2@citrix.com>,
	George Dunlap <George.Dunlap@eu.citrix.com>,
	AndrewCooper <andrew.cooper3@citrix.com>,
	Ian Jackson <ian.jackson@eu.citrix.com>, Tim Deegan <tim@xen.org>,
	philippe.gabriel@citrix.com,
	Xen-devel <xen-devel@lists.xenproject.org>
Subject: Re: [PATCH v3] gcov: add new interface and 3.4 and 4.7 format support
Date: Wed, 12 Oct 2016 18:07:50 +0100	[thread overview]
Message-ID: <20161012170750.GX3687@citrix.com> (raw)
In-Reply-To: <57FE75F90200007800116D42@prv-mh.provo.novell.com>
On Wed, Oct 12, 2016 at 09:42:17AM -0600, Jan Beulich wrote:
> >>> On 12.10.16 at 17:33, <wei.liu2@citrix.com> wrote:
> > On Wed, Oct 12, 2016 at 06:42:53AM -0600, Jan Beulich wrote:
> >> >>> On 11.10.16 at 12:31, <wei.liu2@citrix.com> wrote:
> >> > --- /dev/null
> >> > +++ b/xen/common/gcov/gcc_4_7.c
> >> > @@ -0,0 +1,205 @@
> >> > +/*
> >> > + *  This code provides functions to handle gcc's profiling data format
> >> > + *  introduced with gcc 4.7.
> >> > + *
> >> > + *  This file is based heavily on gcc_3_4.c file.
> >> > + *
> >> > + *  For a better understanding, refer to gcc source:
> >> > + *  gcc/gcov-io.h
> >> > + *  libgcc/libgcov.c
> >> > + *
> >> > + *  Uses gcc-internal data definitions.
> >> > + *
> >> > + *  Imported from Linux and modified for Xen by
> >> > + *    Wei Liu <wei.liu2@citrix.com>
> >> > + */
> >> > +
> >> > +#include <xen/string.h>
> >> > +
> >> > +#include "gcov.h"
> >> > +
> >> > +#if GCC_VERSION < 40700
> >> > +#error "Wrong version of GCC used to compile gcov"
> >> > +#endif
> >> > +
> >> > +#if (__GNUC__ > 5) || (__GNUC__ == 5 && __GNUC_MINOR__ >= 1)
> >> > +#define GCOV_COUNTERS                   10
> >> > +#elif __GNUC__ == 4 && __GNUC_MINOR__ >= 9
> >> > +#define GCOV_COUNTERS                   9
> >> > +#else
> >> > +#define GCOV_COUNTERS                   8
> >> > +#endif
> >> 
> >> I'm sorry for not having pointed this out on v2 (I had noticed it,
> >> but then didn't finish analyzing the situation), but I'm afraid this
> >> together with ...
> >> 
> >> > +struct gcov_info {
> >> > +    unsigned int version;
> >> > +    struct gcov_info *next;
> >> > +    unsigned int stamp;
> >> > +    const char *filename;
> >> > +    void (*merge[GCOV_COUNTERS])(gcov_type *, unsigned int);
> >> > +    unsigned int n_functions;
> >> > +    struct gcov_fn_info **functions;
> >> > +};
> >> 
> >> ... this structure's trailing fields actually getting used by the code
> >> won't work well when changing compiler versions without cleaning
> >> the tree. I think instead you need thin gcc_5.c and gcc_4_9.c
> >> #define-ing their GCOV_COUNTERS and then #include-ing this
> >> shared source file. Plus btw, I don't think gcc 5.0.x (the
> >> development variant of 5.x) would use anything different from
> >> 5.1.x or 5.2.x; in fact use of __GNUC_MINOR__ should not
> >> normally be necessary anymore with gcc 5+.
> >> 
> > 
> > I think you misread here: __GNUC_MINOR__ is the "x" part of 5.x.y, the
> > "y" part is __GNUC_PATCHLEVEL__.
> 
> No, I didn't. From 5.x onwards the information previously carried in
> __GNUC_PATCHLEVEL__ is now in __GNUC_MINOR__. And as much
> as previously you would not normally need to look at the former,
> with newer gcc you shouldn't need to look at the latter.
> 
I can't find relevant information in GCC cpp manual.
Specifically, I look at 4.9.4 and 5.4.0 doc:
https://gcc.gnu.org/onlinedocs/gcc-4.9.4/cpp/Common-Predefined-Macros.html#Common-Predefined-Macros
https://gcc.gnu.org/onlinedocs/gcc-5.4.0/cpp/Common-Predefined-Macros.html#Common-Predefined-Macros
The sections about __GNUC_* macros are identical, their semantics stay
the same.
What did I miss?
> > I've broken down things into several files as well as provided
> > corresponding Kconfig options:
> > 
> >  gcc_4_7_base.c: the body of what is now gcc_4_7.c, better name is
> >                  welcome
> 
> Why don't you keep it gcc_4_7.c, with its counter definition being
> conditional upon the symbol not already being defined?
> 
Fixed as discussed on IRC.
Wei.
> Jan
> 
_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xen.org
https://lists.xen.org/xen-devel
next prev parent reply	other threads:[~2016-10-12 17:07 UTC|newest]
Thread overview: 58+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-10-10  9:40 [PATCH v2 0/9] Rework gcov support in Xen Wei Liu
2016-10-10  9:40 ` [PATCH v2 1/9] Kconfig: use tab instead of space Wei Liu
2016-10-10 11:21   ` Jan Beulich
2016-10-10  9:40 ` [PATCH v2 2/9] Kconfig: add BROKEN config Wei Liu
2016-10-10 11:22   ` Jan Beulich
2016-10-10  9:40 ` [PATCH v2 3/9] xen: delete gcno files in clean target Wei Liu
2016-10-10 11:23   ` Jan Beulich
2016-10-10  9:40 ` [PATCH v2 4/9] xen, tools: rip out old gcov implementation Wei Liu
2016-10-10 11:24   ` Jan Beulich
2016-10-10  9:40 ` [PATCH v2 5/9] gcov: add new interface and 3.4 and 4.7 format support Wei Liu
2016-10-10 11:56   ` Jan Beulich
2016-10-10 12:23     ` Andrew Cooper
2016-10-10 12:56       ` Jan Beulich
2016-10-10 13:12         ` Wei Liu
2016-10-10 13:11     ` Wei Liu
2016-10-10 14:43       ` Wei Liu
2016-10-11 10:31   ` [PATCH v3] " Wei Liu
2016-10-12 12:42     ` Jan Beulich
2016-10-12 13:06       ` Wei Liu
2016-10-12 13:11         ` Jan Beulich
2016-10-12 13:24         ` George Dunlap
2016-10-12 13:26           ` George Dunlap
2016-10-12 13:31             ` Wei Liu
2016-10-12 13:33             ` Jan Beulich
2016-10-12 13:34             ` Andrew Cooper
2016-10-12 13:41               ` George Dunlap
2016-10-12 13:43                 ` Andrew Cooper
2016-10-12 13:29           ` Konrad Rzeszutek Wilk
2016-10-12 13:40             ` Wei Liu
2016-10-12 13:46               ` Konrad Rzeszutek Wilk
2016-10-12 13:50                 ` Wei Liu
2016-10-12 13:23       ` Konrad Rzeszutek Wilk
2016-10-12 13:31         ` Jan Beulich
2016-10-12 13:44           ` Konrad Rzeszutek Wilk
2016-10-12 14:08             ` Jan Beulich
2016-10-12 14:17             ` Martin Pohlack
2016-10-12 16:21               ` Konrad Rzeszutek Wilk
2016-10-13  8:05                 ` Martin Pohlack
2016-10-12 15:33       ` Wei Liu
2016-10-12 15:42         ` Jan Beulich
2016-10-12 17:07           ` Wei Liu [this message]
2016-10-13  8:29             ` Jan Beulich
2016-10-13  8:49               ` Wei Liu
2016-10-13  9:15                 ` Jan Beulich
2016-10-13  9:20                   ` Wei Liu
2016-10-10  9:40 ` [PATCH v2 6/9] gcov: userspace tools to extract and split gcov data Wei Liu
2016-10-10 15:44   ` Ian Jackson
2016-10-10  9:40 ` [PATCH v2 7/9] Config.mk: expand cc-ver a bit Wei Liu
2016-10-10 11:57   ` Jan Beulich
2016-10-10  9:40 ` [PATCH v2 8/9] Config.mk: introduce cc-ifversion Wei Liu
2016-10-10 12:00   ` Jan Beulich
2016-10-10 13:18     ` Wei Liu
2016-10-10 13:22       ` Jan Beulich
2016-10-10 13:24         ` Wei Liu
2016-10-10  9:40 ` [PATCH v2 9/9] gcov: provide the capability to select gcov format automatically Wei Liu
2016-10-10 12:00   ` Jan Beulich
2016-10-10 15:47 ` [PATCH v2 0/9] Rework gcov support in Xen Ian Jackson
2016-10-10 15:58   ` Jan Beulich
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox
  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):
  git send-email \
    --in-reply-to=20161012170750.GX3687@citrix.com \
    --to=wei.liu2@citrix.com \
    --cc=George.Dunlap@eu.citrix.com \
    --cc=JBeulich@suse.com \
    --cc=andrew.cooper3@citrix.com \
    --cc=ian.jackson@eu.citrix.com \
    --cc=philippe.gabriel@citrix.com \
    --cc=sstabellini@kernel.org \
    --cc=tim@xen.org \
    --cc=xen-devel@lists.xenproject.org \
    /path/to/YOUR_REPLY
  https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
  Be sure your reply has a Subject: header at the top and a blank line
  before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).