[U-Boot] [PATCH 01/39] DEBUG: Fix debug macros

Marek Vasut marek.vasut at gmail.com
Mon Oct 24 10:21:15 CEST 2011


On Monday, October 24, 2011 06:31:19 AM Simon Glass wrote:
> Hi Marek,
> 
> On Fri, Oct 21, 2011 at 5:16 PM, Marek Vasut <marek.vasut at gmail.com> wrote:
> > The current implementation of debug doesn't play well with GCC4.6.
> > This implementation also fixes GCC4.6 complaints about unused variables
> > while maintaining code size.
> > 
> > Signed-off-by: Mike Frysinger <vapier at gentoo.org>
> > Signed-off-by: Marek Vasut <marek.vasut at gmail.com>
> > Cc: Wolfgang Denk <wd at denx.de>
> > Cc: Simon Glass <sjg at chromium.org>
> > ---
> >  include/common.h |   20 ++++++++++++--------
> >  1 files changed, 12 insertions(+), 8 deletions(-)
> > 
> > diff --git a/include/common.h b/include/common.h
> > index eb19a44..c3b23551 100644
> > --- a/include/common.h
> > +++ b/include/common.h
> > @@ -116,20 +116,24 @@ typedef volatile unsigned char    vu_char;
> >  #include <flash.h>
> >  #include <image.h>
> > 
> > -#ifdef DEBUG
> > -#define debug(fmt,args...)     printf (fmt ,##args)
> > -#define debugX(level,fmt,args...) if (DEBUG>=level) printf(fmt,##args);
> > -#else
> > -#define debug(fmt,args...)
> > -#define debugX(level,fmt,args...)
> > -#endif /* DEBUG */
> > -
> >  #ifdef DEBUG
> >  # define _DEBUG 1
> >  #else
> >  # define _DEBUG 0
> >  #endif
> > 
> > +#define debug_cond(cond, fmt, args...)         \
> 
> Yes this is much nicer. Could perhaps add a little comment about how
> to use this and to avoid putting debug() inside #ifdef?
> 
> > +       do {                                    \
> > +               if (cond)                       \
> > +                       printf(fmt, ##args);    \
> > +       } while (0)
> > +
> > +#define debug(fmt, args...)                    \
> > +       debug_cond(_DEBUG, fmt, ##args)
> > +
> > +#define debugX(level, fmt, args...)            \
> > +       debug_cond((_DEBUG && DEBUG >= (level)), fmt, ##args)
> > +
> >  /*
> >  * An assertion is run-time check done in debug mode only. If DEBUG is
> > not * defined then it is skipped. If DEBUG is defined and the assertion
> > fails, --
> > 1.7.6.3

Done, I pushed new patchset right now to git://git.denx.de/u-boot-marex.git , 
"debug" branch. It's around 50 patches now.


More information about the U-Boot mailing list