Patchwork libcacard: Fix compilation with gcc-4.7

login
register
mail settings
Submitter Hans de Goede
Date March 2, 2012, 3:49 p.m.
Message ID <1330703384-17447-1-git-send-email-hdegoede@redhat.com>
Download mbox | patch
Permalink /patch/144276/
State New
Headers show

Comments

Hans de Goede - March 2, 2012, 3:49 p.m.
VCARD_ATR_PREFIX is used as part of an array initializer so it should
not have () around it, so far this happened to work, but gcc-4.7 does
not like it.

Signed-off-by: Hans de Goede <hdegoede@redhat.com>
---
 libcacard/vcardt.h |    4 ++--
 1 files changed, 2 insertions(+), 2 deletions(-)
Brad - March 3, 2012, 1:44 a.m.
On 02/03/12 10:49 AM, Hans de Goede wrote:
> VCARD_ATR_PREFIX is used as part of an array initializer so it should
> not have () around it, so far this happened to work, but gcc-4.7 does
> not like it.

This recent commit..

libcacard: fix reported ATR length

Broke the build on my OpenBSD (gcc 4.2.1) buildbot which was due to the
change to this macro.

vcard_emul_nss.c:528: warning: left-hand operand of comma expression has 
no effect
vcard_emul_nss.c:528: warning: left-hand operand of comma expression has 
no effect
vcard_emul_nss.c:528: warning: left-hand operand of comma expression has 
no effect
vcard_emul_nss.c:528: warning: left-hand operand of comma expression has 
no effect
vcard_emul_nss.c:528: warning: left-hand operand of comma expression has 
no effect
vcard_emul_nss.c:528: warning: left-hand operand of comma expression has 
no effect
vcard_emul_nss.c:528: warning: left-hand operand of comma expression has 
no effect
vcard_emul_nss.c:528: warning: left-hand operand of comma expression has 
no effect
vcard_emul_nss.c:528: warning: left-hand operand of comma expression has 
no effect
vcard_emul_nss.c:528: error: initializer element is not constant
vcard_emul_nss.c:528: error: (near initialization for 'nss_atr[0]')
gmake[1]: *** [vcard_emul_nss.o] Error 1

> Signed-off-by: Hans de Goede<hdegoede@redhat.com>
> ---
>   libcacard/vcardt.h |    4 ++--
>   1 files changed, 2 insertions(+), 2 deletions(-)
>
> diff --git a/libcacard/vcardt.h b/libcacard/vcardt.h
> index d4d8e2e..d3e9522 100644
> --- a/libcacard/vcardt.h
> +++ b/libcacard/vcardt.h
> @@ -26,8 +26,8 @@ typedef struct VCardEmulStruct VCardEmul;
>   #define MAX_CHANNEL 4
>
>   /* create an ATR with appropriate historical bytes */
> -#define VCARD_ATR_PREFIX(size) (0x3b, 0x68+(size), 0x00, 0xff, \
> -                               'V', 'C', 'A', 'R', 'D', '_')
> +#define VCARD_ATR_PREFIX(size) 0x3b, 0x68+(size), 0x00, 0xff, \
> +                               'V', 'C', 'A', 'R', 'D', '_'
>
>
>   typedef enum {
Alon Levy - March 5, 2012, 12:47 p.m.
On Fri, Mar 02, 2012 at 08:44:09PM -0500, Brad Smith wrote:
> On 02/03/12 10:49 AM, Hans de Goede wrote:
> >VCARD_ATR_PREFIX is used as part of an array initializer so it should
> >not have () around it, so far this happened to work, but gcc-4.7 does
> >not like it.
> 

Thanks for the report, my bad, used a different version of vcardt.h for
compilation probably. This breaks on linux as well with gcc 4.7.0 .

> This recent commit..
> 
> libcacard: fix reported ATR length
> 
> Broke the build on my OpenBSD (gcc 4.2.1) buildbot which was due to the
> change to this macro.
> 
> vcard_emul_nss.c:528: warning: left-hand operand of comma expression
> has no effect
> vcard_emul_nss.c:528: warning: left-hand operand of comma expression
> has no effect
> vcard_emul_nss.c:528: warning: left-hand operand of comma expression
> has no effect
> vcard_emul_nss.c:528: warning: left-hand operand of comma expression
> has no effect
> vcard_emul_nss.c:528: warning: left-hand operand of comma expression
> has no effect
> vcard_emul_nss.c:528: warning: left-hand operand of comma expression
> has no effect
> vcard_emul_nss.c:528: warning: left-hand operand of comma expression
> has no effect
> vcard_emul_nss.c:528: warning: left-hand operand of comma expression
> has no effect
> vcard_emul_nss.c:528: warning: left-hand operand of comma expression
> has no effect
> vcard_emul_nss.c:528: error: initializer element is not constant
> vcard_emul_nss.c:528: error: (near initialization for 'nss_atr[0]')
> gmake[1]: *** [vcard_emul_nss.o] Error 1
> 
> >Signed-off-by: Hans de Goede<hdegoede@redhat.com>
> >---
> >  libcacard/vcardt.h |    4 ++--
> >  1 files changed, 2 insertions(+), 2 deletions(-)
> >
> >diff --git a/libcacard/vcardt.h b/libcacard/vcardt.h
> >index d4d8e2e..d3e9522 100644
> >--- a/libcacard/vcardt.h
> >+++ b/libcacard/vcardt.h
> >@@ -26,8 +26,8 @@ typedef struct VCardEmulStruct VCardEmul;
> >  #define MAX_CHANNEL 4
> >
> >  /* create an ATR with appropriate historical bytes */
> >-#define VCARD_ATR_PREFIX(size) (0x3b, 0x68+(size), 0x00, 0xff, \
> >-                               'V', 'C', 'A', 'R', 'D', '_')
> >+#define VCARD_ATR_PREFIX(size) 0x3b, 0x68+(size), 0x00, 0xff, \
> >+                               'V', 'C', 'A', 'R', 'D', '_'
> >
> >
> >  typedef enum {
> 
> -- 
> This message has been scanned for viruses and
> dangerous content by MailScanner, and is
> believed to be clean.
> 
>
Alon Levy - March 5, 2012, 12:50 p.m.
On Mon, Mar 05, 2012 at 02:47:13PM +0200, Alon Levy wrote:
> On Fri, Mar 02, 2012 at 08:44:09PM -0500, Brad Smith wrote:
> > On 02/03/12 10:49 AM, Hans de Goede wrote:
> > >VCARD_ATR_PREFIX is used as part of an array initializer so it should
> > >not have () around it, so far this happened to work, but gcc-4.7 does
> > >not like it.
> > 
> 
> Thanks for the report, my bad, used a different version of vcardt.h for
> compilation probably. This breaks on linux as well with gcc 4.7.0 .

Please ignore the previous email.

> 
> > This recent commit..
> > 
> > libcacard: fix reported ATR length
> > 
> > Broke the build on my OpenBSD (gcc 4.2.1) buildbot which was due to the
> > change to this macro.
> > 
> > vcard_emul_nss.c:528: warning: left-hand operand of comma expression
> > has no effect
> > vcard_emul_nss.c:528: warning: left-hand operand of comma expression
> > has no effect
> > vcard_emul_nss.c:528: warning: left-hand operand of comma expression
> > has no effect
> > vcard_emul_nss.c:528: warning: left-hand operand of comma expression
> > has no effect
> > vcard_emul_nss.c:528: warning: left-hand operand of comma expression
> > has no effect
> > vcard_emul_nss.c:528: warning: left-hand operand of comma expression
> > has no effect
> > vcard_emul_nss.c:528: warning: left-hand operand of comma expression
> > has no effect
> > vcard_emul_nss.c:528: warning: left-hand operand of comma expression
> > has no effect
> > vcard_emul_nss.c:528: warning: left-hand operand of comma expression
> > has no effect
> > vcard_emul_nss.c:528: error: initializer element is not constant
> > vcard_emul_nss.c:528: error: (near initialization for 'nss_atr[0]')
> > gmake[1]: *** [vcard_emul_nss.o] Error 1
> > 
> > >Signed-off-by: Hans de Goede<hdegoede@redhat.com>
> > >---
> > >  libcacard/vcardt.h |    4 ++--
> > >  1 files changed, 2 insertions(+), 2 deletions(-)
> > >
> > >diff --git a/libcacard/vcardt.h b/libcacard/vcardt.h
> > >index d4d8e2e..d3e9522 100644
> > >--- a/libcacard/vcardt.h
> > >+++ b/libcacard/vcardt.h
> > >@@ -26,8 +26,8 @@ typedef struct VCardEmulStruct VCardEmul;
> > >  #define MAX_CHANNEL 4
> > >
> > >  /* create an ATR with appropriate historical bytes */
> > >-#define VCARD_ATR_PREFIX(size) (0x3b, 0x68+(size), 0x00, 0xff, \
> > >-                               'V', 'C', 'A', 'R', 'D', '_')
> > >+#define VCARD_ATR_PREFIX(size) 0x3b, 0x68+(size), 0x00, 0xff, \
> > >+                               'V', 'C', 'A', 'R', 'D', '_'
> > >
> > >
> > >  typedef enum {
> > 
> > -- 
> > This message has been scanned for viruses and
> > dangerous content by MailScanner, and is
> > believed to be clean.
> > 
> > 
>
Michal Privoznik - March 5, 2012, 1:06 p.m.
On 02.03.2012 16:49, Hans de Goede wrote:
> VCARD_ATR_PREFIX is used as part of an array initializer so it should
> not have () around it, so far this happened to work, but gcc-4.7 does
> not like it.

Neither do gcc-4.6.2.
Alon Levy - March 6, 2012, 1:31 p.m.
On Fri, Mar 02, 2012 at 04:49:44PM +0100, Hans de Goede wrote:

Ack. Anthony, this breaks build for libcacard, caused by my last commit
to the same file as Brad noted:

    commit 0082f4336e128a17d5f34e01de0fd29930e99b0d
    Author: Alon Levy <alevy@redhat.com>
    Date:   Sun Feb 26 17:09:24 2012 +0100

        libcacard: fix reported ATR length

Can you apply?

Thanks,
Alon

> VCARD_ATR_PREFIX is used as part of an array initializer so it should
> not have () around it, so far this happened to work, but gcc-4.7 does
> not like it.
> 
> Signed-off-by: Hans de Goede <hdegoede@redhat.com>
> ---
>  libcacard/vcardt.h |    4 ++--
>  1 files changed, 2 insertions(+), 2 deletions(-)
> 
> diff --git a/libcacard/vcardt.h b/libcacard/vcardt.h
> index d4d8e2e..d3e9522 100644
> --- a/libcacard/vcardt.h
> +++ b/libcacard/vcardt.h
> @@ -26,8 +26,8 @@ typedef struct VCardEmulStruct VCardEmul;
>  #define MAX_CHANNEL 4
>  
>  /* create an ATR with appropriate historical bytes */
> -#define VCARD_ATR_PREFIX(size) (0x3b, 0x68+(size), 0x00, 0xff, \
> -                               'V', 'C', 'A', 'R', 'D', '_')
> +#define VCARD_ATR_PREFIX(size) 0x3b, 0x68+(size), 0x00, 0xff, \
> +                               'V', 'C', 'A', 'R', 'D', '_'
>  
>  
>  typedef enum {
> -- 
> 1.7.7.6
> 
>
Anthony Liguori - March 9, 2012, 7:27 p.m.
On 03/02/2012 09:49 AM, Hans de Goede wrote:
> VCARD_ATR_PREFIX is used as part of an array initializer so it should
> not have () around it, so far this happened to work, but gcc-4.7 does
> not like it.
>
> Signed-off-by: Hans de Goede<hdegoede@redhat.com>

Applied.  Thanks.

Regards,

Anthony Liguori

> ---
>   libcacard/vcardt.h |    4 ++--
>   1 files changed, 2 insertions(+), 2 deletions(-)
>
> diff --git a/libcacard/vcardt.h b/libcacard/vcardt.h
> index d4d8e2e..d3e9522 100644
> --- a/libcacard/vcardt.h
> +++ b/libcacard/vcardt.h
> @@ -26,8 +26,8 @@ typedef struct VCardEmulStruct VCardEmul;
>   #define MAX_CHANNEL 4
>
>   /* create an ATR with appropriate historical bytes */
> -#define VCARD_ATR_PREFIX(size) (0x3b, 0x68+(size), 0x00, 0xff, \
> -                               'V', 'C', 'A', 'R', 'D', '_')
> +#define VCARD_ATR_PREFIX(size) 0x3b, 0x68+(size), 0x00, 0xff, \
> +                               'V', 'C', 'A', 'R', 'D', '_'
>
>
>   typedef enum {

Patch

diff --git a/libcacard/vcardt.h b/libcacard/vcardt.h
index d4d8e2e..d3e9522 100644
--- a/libcacard/vcardt.h
+++ b/libcacard/vcardt.h
@@ -26,8 +26,8 @@  typedef struct VCardEmulStruct VCardEmul;
 #define MAX_CHANNEL 4
 
 /* create an ATR with appropriate historical bytes */
-#define VCARD_ATR_PREFIX(size) (0x3b, 0x68+(size), 0x00, 0xff, \
-                               'V', 'C', 'A', 'R', 'D', '_')
+#define VCARD_ATR_PREFIX(size) 0x3b, 0x68+(size), 0x00, 0xff, \
+                               'V', 'C', 'A', 'R', 'D', '_'
 
 
 typedef enum {