All of lore.kernel.org
 help / color / mirror / Atom feed
From: Eric Blake <eblake@redhat.com>
To: "Marc Marí" <marc.mari.barcelo@gmail.com>, qemu-devel@nongnu.org
Cc: "Stefan Hajnoczi" <stefanha@gmail.com>,
	"Peter Crosthwaite" <peter.crosthwaite@xilinx.com>,
	"Andreas Färber" <afaerber@suse.de>
Subject: Re: [Qemu-devel] [PATCH v2 07/16] stellaris: Convert conditional compilation of debug printfs to regular ifs
Date: Tue, 13 May 2014 09:05:25 -0600	[thread overview]
Message-ID: <537234B5.5030102@redhat.com> (raw)
In-Reply-To: <1399964572-5376-8-git-send-email-marc.mari.barcelo@gmail.com>

[-- Attachment #1: Type: text/plain, Size: 3852 bytes --]

On 05/13/2014 01:02 AM, Marc Marí wrote:
> Modify debug macros to have the same format through the codebase and use regular
> ifs instead of ifdef.
> 
> As the debug printf is always put in code, some casting had to be added to avoid
> warnings treated as errors at compile time.

Same comments as in 1/16 about long lines and gcc extensions (probably
for the entire series).  Additionally...

> 
> Signed-off-by: Marc Marí <marc.mari.barcelo@gmail.com>
> ---
>  hw/net/stellaris_enet.c |   21 +++++++++++----------
>  1 file changed, 11 insertions(+), 10 deletions(-)
> 
> diff --git a/hw/net/stellaris_enet.c b/hw/net/stellaris_enet.c
> index d04e6a4..f6737a9 100644
> --- a/hw/net/stellaris_enet.c
> +++ b/hw/net/stellaris_enet.c
> @@ -13,16 +13,17 @@
>  //#define DEBUG_STELLARIS_ENET 1
>  
>  #ifdef DEBUG_STELLARIS_ENET
> -#define DPRINTF(fmt, ...) \
> -do { printf("stellaris_enet: " fmt , ## __VA_ARGS__); } while (0)

In this case, the old code was also relying on the gcc extension.  But
pre-patch, the gcc extension was only encountered if
DEBUG_StELLARIS_ENET was set (probably only by a developer using gcc for
temporary debugging), while post-patch the gcc extension is ALWAYS
encountered, regardless of developer.

> -#define BADF(fmt, ...) \
> -do { fprintf(stderr, "stellaris_enet: error: " fmt , ## __VA_ARGS__); exit(1);} while (0)

In the old code, BADF() could be used in a single statement context,
such as:

if (foo)
    BADF("blah")
else
    something();

(of course, that violates our coding style, but hear me out).

> +#define DEBUG_STELLARIS_ENET_ENABLED 1
>  #else
> -#define DPRINTF(fmt, ...) do {} while(0)
> -#define BADF(fmt, ...) \
> -do { fprintf(stderr, "stellaris_enet: error: " fmt , ## __VA_ARGS__);} while (0)
> +#define DEBUG_STELLARIS_ENET_ENABLED 0
>  #endif
>  
> +#define DPRINTF(fmt, ...) QEMU_DPRINTF(DEBUG_STELLARIS_ENET_ENABLED, "stellaris_enet", fmt, ## __VA_ARGS__)
> +
> +#define BADF(fmt, ...) \
> +    QEMU_DPRINTF(1, "stellaris_enet error", fmt, ## __VA_ARGS__); \
> +    do { if (DEBUG_STELLARIS_ENET_ENABLED) { exit(1); } } while (0)

However, in the new code, BADF() is no longer a single statement.  You
either need to move the "do {" to appear before the QEMU_PRINTF
[preferred], or you can just declare that this is no longer a
single-statement macro at which point you could just drop the do/while
altogether [depends on our coding standard for safety].  The example
above, even though it violates coding standards, should demonstrate why
your change is wrong - the bare "else" is now a syntax error.

>  
> -    DPRINTF("Received packet len=%d\n", size);
> +    DPRINTF("Received packet len=%d\n", (int)size);

Ah, we FINALLY get to an added cast.  What you SHOULD be doing is using
len=%zu coupled with un-casted size, rather than papering over the type
mismatch.

>      n = s->next_packet + s->np;
>      if (n >= 31)
>          n -= 31;
> @@ -212,14 +213,14 @@ static void stellaris_enet_write(void *opaque, hwaddr offset,
>      switch (offset) {
>      case 0x00: /* IACK */
>          s->ris &= ~value;
> -        DPRINTF("IRQ ack %02x/%02x\n", value, s->ris);
> +        DPRINTF("IRQ ack %02x/%02x\n", (unsigned)value, s->ris);
>          stellaris_enet_update(s);
>          /* Clearing TXER also resets the TX fifo.  */
>          if (value & SE_INT_TXER)
>              s->tx_frame_len = -1;
>          break;
>      case 0x04: /* IM */
> -        DPRINTF("IRQ mask %02x/%02x\n", value, s->ris);
> +        DPRINTF("IRQ mask %02x/%02x\n", (unsigned)value, s->ris);

More cases where you should be fixing the % format to use the correct
type, rather than adding a cast.

-- 
Eric Blake   eblake redhat com    +1-919-301-3266
Libvirt virtualization library http://libvirt.org


[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 604 bytes --]

  reply	other threads:[~2014-05-13 15:05 UTC|newest]

Thread overview: 41+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-05-13  7:02 [Qemu-devel] [PATCH v2 00/16] Convert conditional compilation of debug printfs Marc Marí
2014-05-13  7:02 ` [PATCH v2 01/16] x86: Convert conditional compilation of debug printfs to regular ifs Marc Marí
2014-05-13  7:02   ` Marc Marí
2014-05-13  7:02   ` [Qemu-devel] " Marc Marí
2014-05-13  7:38   ` Andreas Färber
2014-05-13  7:38     ` [Qemu-devel] " Andreas Färber
2014-05-13 14:38   ` Eric Blake
2014-05-15  9:44     ` Marc Marí
2014-05-15  9:56     ` Marc Marí
2014-05-13 15:15   ` Eric Blake
2014-05-13 15:15     ` Eric Blake
2014-05-13  7:02 ` [PATCH v2 02/16] s390: " Marc Marí
2014-05-13  7:02   ` [Qemu-devel] " Marc Marí
2014-05-13  9:04   ` Cornelia Huck
2014-05-13  9:04     ` Cornelia Huck
2014-05-13 14:45   ` Eric Blake
2014-05-13 14:45     ` [Qemu-devel] " Eric Blake
2014-05-13  7:02 ` [Qemu-devel] [PATCH v2 03/16] scsi: " Marc Marí
2014-05-13  7:02 ` [Qemu-devel] [PATCH v2 04/16] highbank: " Marc Marí
2014-05-13 10:06   ` Marc Marí
2014-05-13  7:02 ` [Qemu-devel] [PATCH v2 05/16] xilinx: " Marc Marí
2014-05-13  9:59   ` Marc Marí
2014-05-13  7:02 ` [Qemu-devel] [PATCH v2 06/16] spapr: " Marc Marí
2014-05-13  7:18   ` [Qemu-devel] [Qemu-ppc] " Alexander Graf
2014-05-13  7:02 ` [Qemu-devel] [PATCH v2 07/16] stellaris: " Marc Marí
2014-05-13 15:05   ` Eric Blake [this message]
2014-05-13  7:02 ` [Qemu-devel] [PATCH v2 08/16] tpm: " Marc Marí
2014-05-13  9:39   ` Marc Marí
2014-05-13  7:02 ` [Qemu-devel] [PATCH v2 09/16] i82374: " Marc Marí
2014-05-13  9:20   ` Marc Marí
2014-05-13  7:02 ` [Qemu-devel] [PATCH v2 10/16] i8257: " Marc Marí
2014-05-13  7:02 ` [Qemu-devel] [PATCH v2 11/16] rc4030: " Marc Marí
2014-05-13  9:16   ` Marc Marí
2014-05-13  7:02 ` [Qemu-devel] [PATCH v2 12/16] sd: " Marc Marí
2014-05-13  7:02 ` [Qemu-devel] [PATCH v2 13/16] isa: " Marc Marí
2014-05-13  7:02 ` [Qemu-devel] [PATCH v2 14/16] lan9118: " Marc Marí
2014-05-13  7:02 ` [Qemu-devel] [PATCH v2 15/16] pci-host: " Marc Marí
2014-05-13  9:13   ` Marc Marí
2014-05-13  7:02 ` [Qemu-devel] [PATCH v2 16/16] common: " Marc Marí
2014-05-13  9:05   ` Cornelia Huck
2014-05-13 15:21   ` Eric Blake

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=537234B5.5030102@redhat.com \
    --to=eblake@redhat.com \
    --cc=afaerber@suse.de \
    --cc=marc.mari.barcelo@gmail.com \
    --cc=peter.crosthwaite@xilinx.com \
    --cc=qemu-devel@nongnu.org \
    --cc=stefanha@gmail.com \
    /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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.