On Wed, Jul 11, 2007 at 05:24:08PM +0100, Richard W.M. Jones wrote:
Daniel Veillard wrote:
>On Wed, Jul 11, 2007 at 05:06:31PM +0100, Daniel P. Berrange wrote:
>>On Wed, Jul 11, 2007 at 12:02:26PM -0400, Daniel Veillard wrote:
>>>On Wed, Jul 11, 2007 at 04:36:23PM +0100, Richard W.M. Jones wrote:
>>>>This can prove useful if we want to track down problems like the
>>>>double-call of domainSuspend.
>>>>
>>>>Also attached below is the output of virt-manager when this tracing is
>>>>enabled.
>>>>
>>>>Note that if --enable-debug is not set, then no extra code is added to
>>>>libvirt.
>>> I would like this, I have just one thing which worries me, it's the
>>>vararg macros, I'm not sure how widely it's supported outside of gcc
..
>>If it doesn't work on non-GCC, then those people can simply not add
>>--enable-debug to their configure flags.
>
> Disagree
>
>+#define DEBUG0
>+#define DEBUG(fs,...)
>+#endif /* !ENABLE_DEBUG */
>
>just won't work for them, not all statements are within
>#ifdef ENABLE_DEBUG
>#endif
>
>it won't compile even if ENABLE_DEBUG is not defined.
Am I missing something here?
For me it does compile with and without --enable-debug=yes, but then of
course I'm only using gcc.
My understanding is that __VA_ARGS__ is the ISO C way of doing varargs
in macro definitions. gcc has its own variation (#define F(args...))
which I deliberately avoided for portability reasons.
The only odd thing we're doing in the --enable-debug case is using
##__VA_ARGS__, where the "##" swallows the preceeding comma. I have no
idea if this is ISO C or not. It is mentioned in the CPP info page, but
it's not clear if it is standard. In any case because we have two
macros (DEBUG0 and DEBUG) it is trivial to rewrite the patch to avoid this.
Yeah, I understand I'm being a bit picky, but it's usually easier to
get fixed at check-in than when someone doing a port hits it (if this
ever happens !)
Daniel
--
Red Hat Virtualization group
http://redhat.com/virtualization/
Daniel Veillard | virtualization library
http://libvirt.org/
veillard(a)redhat.com | libxml GNOME XML XSLT toolkit
http://xmlsoft.org/
http://veillard.com/ | Rpmfind RPM search engine
http://rpmfind.net/