[Libvir] Strange warnings with gcc 4.1.2

Richard W.M. Jones rjones at redhat.com
Wed Nov 7 12:38:07 UTC 2007


This is with libvirt from CVS.  They don't look like errors to me though...

------------
In function ‘open’,
     inlined from ‘readFile’ at virsh.c:850:
/usr/include/bits/fcntl2.h:45: error: call to ‘__open_too_many_args’ 
declared with attribute error: open can be called either with 2 or 3 
arguments, not more
/usr/include/bits/fcntl2.h:51: error: call to ‘__open_missing_mode’ 
declared with attribute error: open with O_CREAT in second argument 
needs 3 arguments

The code in question is:

     if ((fd = open(filename, O_RDONLY)) == -1) {

Not a newly created file, so mode isn't needed AFAICS.

------------
In function ‘read’,
     inlined from ‘readFile’ at virsh.c:864:
/usr/include/bits/unistd.h:43: warning: call to ‘__read_chk_warn’ 
declared with attribute warning: read called with bigger length than 
size of the destination buffer

The code in question is:

         char buffer[1024];
         char *new;
         int ret;

         if ((ret = read(fd, buffer, sizeof(buffer))) == 0)
             break;

Also seems correct to me.

------------
Other warnings:

virsh.c: In function ‘cmdSchedinfo’:
virsh.c:1138: warning: ‘weight’ may be used uninitialized in this function
virsh.c:1140: warning: ‘cap’ may be used uninitialized in this function

For some reason gcc appears to have lots its ability to do the data flow 
analysis to find out that these warnings are bogus.  In any case the fix 
is trivial:

Index: src/virsh.c
===================================================================
RCS file: /data/cvs/libvirt/src/virsh.c,v
retrieving revision 1.105
diff -u -r1.105 virsh.c
--- src/virsh.c 6 Nov 2007 09:41:18 -0000       1.105
+++ src/virsh.c 7 Nov 2007 12:37:07 -0000
@@ -1135,9 +1135,9 @@
      int nr_inputparams = 0;
      int inputparams = 0;
      int weightfound = 0;
-    int weight;
+    int weight = 0;
      int capfound = 0;
-    int cap;
+    int cap = 0;
      char str_weight[] = "weight";
      char str_cap[]    = "cap";
      int ret_val = FALSE;

Rich.

-- 
Emerging Technologies, Red Hat - http://et.redhat.com/~rjones/
Registered Address: Red Hat UK Ltd, Amberley Place, 107-111 Peascod
Street, Windsor, Berkshire, SL4 1TE, United Kingdom.  Registered in
England and Wales under Company Registration No. 03798903

-------------- next part --------------
A non-text attachment was scrubbed...
Name: smime.p7s
Type: application/x-pkcs7-signature
Size: 3237 bytes
Desc: S/MIME Cryptographic Signature
URL: <http://listman.redhat.com/archives/libvir-list/attachments/20071107/ea37bf08/attachment-0001.bin>


More information about the libvir-list mailing list