[linux-lvm] problems with gcc 3.0 & lvm tools

Michael Tokarev mjt at tls.msk.ru
Tue Jun 26 21:09:01 UTC 2001


Gergely Tamas wrote:
> 
> Hi!
> 
> GCC 3.0 implements ``printf'' as a macro.

Why *gcc* *implements* printf at all???  It is in
C library, not in compiler, or always was that.

[]
> --- LVM-orig/tools/lvchange.c   Tue Apr 24 16:29:20 2001
> +++ LVM/tools/lvchange.c        Tue Jun 26 21:51:17 2001
> @@ -168,9 +168,11 @@
>                       "\t[-A/--autobackup y/n]\n"
>                       "\t[-a/--available y/n]\n"
>                       "\t[-C/--contiguous y/n]\n"
> -#ifdef DEBUG
> -                     "\t[-d/--debug]\n"
> -#endif
> +/*
> + * #ifdef DEBUG
> + *                   "\t[-d/--debug]\n"
> + * #endif
> + */
>                       "\t[-h/-?/--help]\n"
>                       "\t[-p/--permission r/rw]\n"
>                       "\t[-r/--readahead ReadAheadSectors]\n"

Better fix for this issue, if it *is* an issue, will be

in main header:
 #ifdef DEBUG
 # define DEBUG_OPT "\t[-d/--debug]\n"
 #else
 # define DEBUG_OPT
 #endif

And in every place:

                       "\t[-A/--autobackup y/n]\n"
                       "\t[-a/--available y/n]\n"
                       "\t[-C/--contiguous y/n]\n"
 -#ifdef DEBUG
 -                     "\t[-d/--debug]\n"
 -#endif
 +                     DEBUG_OPT
                       "\t[-h/-?/--help]\n"
                       "\t[-p/--permission r/rw]\n"
                       "\t[-r/--readahead ReadAheadSectors]\n"

Or, another variant, that may look better (in other places too):


in main header:
 #ifdef DEBUG
 # define IFDEBUG(arg) arg
 #else
 # define IFDEBUG(arg)
 #endif

And in every place:

                       "\t[-A/--autobackup y/n]\n"
                       "\t[-a/--available y/n]\n"
                       "\t[-C/--contiguous y/n]\n"
 -#ifdef DEBUG
 -                     "\t[-d/--debug]\n"
 -#endif
 +                     IFDEBUG("\t[-d/--debug]\n")
                       "\t[-h/-?/--help]\n"
                       "\t[-p/--permission r/rw]\n"
                       "\t[-r/--readahead ReadAheadSectors]\n"


But wait: *if* this *is* an issue, then TONS of other programs
will break the same way.  And gcc people should just not do so,
is is a bug (serious) in gcc in this case and should be fixed
in a first place.

Regards,
 Michael.



More information about the linux-lvm mailing list