Various build fixes for gcc 4.5. Rich. -- Richard Jones, Virtualization Group, Red Hat http://people.redhat.com/~rjones libguestfs lets you edit virtual machines. Supports shell scripting, bindings from many languages. http://et.redhat.com/~rjones/libguestfs/ See what it can do: http://et.redhat.com/~rjones/libguestfs/recipes.html
Richard W.M. Jones
2010-Jul-16 12:05 UTC
[Libguestfs] [PATCH 1/3] build: Don't warn about 'long long'.
-- Richard Jones, Virtualization Group, Red Hat http://people.redhat.com/~rjones virt-p2v converts physical machines to virtual machines. Boot with a live CD or over the network (PXE) and turn machines into Xen guests. http://et.redhat.com/~rjones/virt-p2v -------------- next part -------------->From 694912816850377dd545e83902940ed48a47b3d9 Mon Sep 17 00:00:00 2001From: Richard Jones <rjones at redhat.com> Date: Fri, 16 Jul 2010 12:55:17 +0100 Subject: [PATCH 1/3] build: Don't warn about 'long long'. Various language bindings simply need this, so we have to allow it even though it's a GCC extension. --- configure.ac | 2 ++ 1 files changed, 2 insertions(+), 0 deletions(-) diff --git a/configure.ac b/configure.ac index 7533ec0..caf25ee 100644 --- a/configure.ac +++ b/configure.ac @@ -114,6 +114,8 @@ if test "$gl_gcc_warnings" = yes; then nw="$nw -Wunsafe-loop-optimizations" # just a warning that an optimization # was not possible, safe to ignore nw="$nw -Wpacked" # Allow attribute((packed)) on structs + nw="$nw -Wlong-long" # Allow long long since it's required + # by Python, Ruby and xstrtoll. gl_MANYWARN_ALL_GCC([ws]) gl_MANYWARN_COMPLEMENT([ws], [$ws], [$nw]) -- 1.7.1
Richard W.M. Jones
2010-Jul-16 12:05 UTC
[Libguestfs] [PATCH 2/3] generator: Don't hard-code name in DeviceList check.
-- Richard Jones, Virtualization Group, Red Hat http://people.redhat.com/~rjones virt-top is 'top' for virtual machines. Tiny program with many powerful monitoring features, net stats, disk stats, logging, etc. http://et.redhat.com/~rjones/virt-top -------------- next part -------------->From d77d63c56c03b367df5b6757e8f356e40ca5f386 Mon Sep 17 00:00:00 2001From: Richard Jones <rjones at redhat.com> Date: Fri, 16 Jul 2010 12:57:24 +0100 Subject: [PATCH 2/3] generator: Don't hard-code name in DeviceList check. Only one function currently uses DeviceList. The generated code unfortunately hard-coded the argument name from that function. --- src/generator.ml | 9 ++++++--- 1 files changed, 6 insertions(+), 3 deletions(-) diff --git a/src/generator.ml b/src/generator.ml index d640343..cb3f773 100755 --- a/src/generator.ml +++ b/src/generator.ml @@ -6484,9 +6484,12 @@ and generate_daemon_actions () | DeviceList n -> pr_list_handling_code n; pr " /* Ensure that each is a device,\n"; - pr " * and perform device name translation. */\n"; - pr " { int pvi; for (pvi = 0; physvols[pvi] != NULL; ++pvi)\n"; - pr " RESOLVE_DEVICE (physvols[pvi], %s, goto done);\n" + pr " * and perform device name translation.\n"; + pr " */\n"; + pr " {\n"; + pr " int i;\n"; + pr " for (i = 0; %s[i] != NULL; ++i)\n" n; + pr " RESOLVE_DEVICE (%s[i], %s, goto done);\n" n (if is_filein then "cancel_receive ()" else "0"); pr " }\n"; | Bool n -> pr " %s = args.%s;\n" n n -- 1.7.1
Richard W.M. Jones
2010-Jul-16 12:05 UTC
[Libguestfs] [PATCH 3/3] Use an unsigned type (size_t) for all loop iterators.
-- Richard Jones, Virtualization Group, Red Hat http://people.redhat.com/~rjones virt-p2v converts physical machines to virtual machines. Boot with a live CD or over the network (PXE) and turn machines into Xen guests. http://et.redhat.com/~rjones/virt-p2v -------------- next part -------------->From 460031c9f9bcabd5e132aab22ab0d001ab14d33d Mon Sep 17 00:00:00 2001From: Richard Jones <rjones at redhat.com> Date: Fri, 16 Jul 2010 12:58:54 +0100 Subject: [PATCH 3/3] Use an unsigned type (size_t) for all loop iterators. This resolves a warning from gcc 4.5: assuming signed overflow does not occur when simplifying conditional to constant This page explains the issues in some detail: http://www.airs.com/blog/archives/120 --- configure.ac | 1 - src/generator.ml | 42 +++++++++++++++++++++--------------------- 2 files changed, 21 insertions(+), 22 deletions(-) diff --git a/configure.ac b/configure.ac index caf25ee..671fbb0 100644 --- a/configure.ac +++ b/configure.ac @@ -110,7 +110,6 @@ if test "$gl_gcc_warnings" = yes; then nw="$nw -Wmissing-format-attribute" # daemon.h's asprintf_nowarn nw="$nw -Winline" # daemon.h's asprintf_nowarn nw="$nw -Wshadow" # numerous, plus we're not unanimous - # ?? -Wstrict-overflow nw="$nw -Wunsafe-loop-optimizations" # just a warning that an optimization # was not possible, safe to ignore nw="$nw -Wpacked" # Allow attribute((packed)) on structs diff --git a/src/generator.ml b/src/generator.ml index cb3f773..8fc619f 100755 --- a/src/generator.ml +++ b/src/generator.ml @@ -6034,7 +6034,7 @@ check_state (guestfs_h *g, const char *caller) | StringList _ | DeviceList _ -> true | _ -> false) (snd style) in if needs_i then ( - pr " int i;\n"; + pr " size_t i;\n"; pr "\n" ); @@ -6487,7 +6487,7 @@ and generate_daemon_actions () pr " * and perform device name translation.\n"; pr " */\n"; pr " {\n"; - pr " int i;\n"; + pr " size_t i;\n"; pr " for (i = 0; %s[i] != NULL; ++i)\n" n; pr " RESOLVE_DEVICE (%s[i], %s, goto done);\n" n (if is_filein then "cancel_receive ()" else "0"); @@ -6637,7 +6637,7 @@ and generate_daemon_actions () pr "static int lvm_tokenize_%s (char *str, guestfs_int_lvm_%s *r)\n" typ typ; pr "{\n"; pr " char *tok, *p, *next;\n"; - pr " int i, j;\n"; + pr " size_t i, j;\n"; pr "\n"; (* pr " fprintf (stderr, \"%%s: <<%%s>>\\n\", __func__, str);\n"; @@ -6862,7 +6862,7 @@ static void print_error (guestfs_h *g, void *data, const char *msg) /* FIXME: nearly identical code appears in fish.c */ static void print_strings (char *const *argv) { - int argc; + size_t argc; for (argc = 0; argv[argc] != NULL; ++argc) printf (\"\\t%%s\\n\", argv[argc]); @@ -6871,7 +6871,7 @@ static void print_strings (char *const *argv) /* static void print_table (char const *const *argv) { - int i; + size_t i; for (i = 0; argv[i] != NULL; i += 2) printf (\"%%s: %%s\\n\", argv[i], argv[i+1]); @@ -7526,7 +7526,7 @@ and generate_test_command_call ?(expect_error = false) ?test test_name cmd | RString _ -> pr " char *r;\n"; "NULL" | RStringList _ | RHashtable _ -> pr " char **r;\n"; - pr " int i;\n"; + pr " size_t i;\n"; "NULL" | RStruct (_, typ) -> pr " struct guestfs_%s *r;\n" typ; "NULL" @@ -8106,7 +8106,7 @@ static const char *const commands[] = { static char * generator (const char *text, int state) { - static int index, len; + static size_t index, len; const char *name; if (!state) { @@ -8413,7 +8413,7 @@ copy_table (char * const * argv) { CAMLparam0 (); CAMLlocal5 (rv, pairv, kv, vv, cons); - int i; + size_t i; rv = Val_int (0); for (i = 0; argv[i] != NULL; i += 2) { @@ -8596,7 +8596,7 @@ copy_table (char * const * argv) pr " const char *r;\n"; "NULL" | RString _ -> pr " char *r;\n"; "NULL" | RStringList _ -> - pr " int i;\n"; + pr " size_t i;\n"; pr " char **r;\n"; "NULL" | RStruct (_, typ) -> @@ -8604,7 +8604,7 @@ copy_table (char * const * argv) | RStructList (_, typ) -> pr " struct guestfs_%s_list *r;\n" typ; "NULL" | RHashtable _ -> - pr " int i;\n"; + pr " size_t i;\n"; pr " char **r;\n"; "NULL" | RBufferOut _ -> @@ -8994,7 +8994,7 @@ close (g) | RStringList n | RHashtable n -> pr "PREINIT:\n"; pr " char **%s;\n" n; - pr " int i, n;\n"; + pr " size_t i, n;\n"; pr " PPCODE:\n"; pr " %s = guestfs_%s " n name; generate_c_call_args ~handle:"g" style; @@ -9038,7 +9038,7 @@ close (g) and generate_perl_struct_list_code typ cols name style n do_cleanups pr "PREINIT:\n"; pr " struct guestfs_%s_list *%s;\n" typ n; - pr " int i;\n"; + pr " size_t i;\n"; pr " HV *hv;\n"; pr " PPCODE:\n"; pr " %s = guestfs_%s " n name; @@ -9354,7 +9354,7 @@ put_handle (guestfs_h *g) static char ** get_string_list (PyObject *obj) { - int i, len; + size_t i, len; char **r; assert (obj); @@ -9462,7 +9462,7 @@ py_guestfs_close (PyObject *self, PyObject *args) pr "put_%s_list (struct guestfs_%s_list *%ss)\n" typ typ typ; pr "{\n"; pr " PyObject *list;\n"; - pr " int i;\n"; + pr " size_t i;\n"; pr "\n"; pr " list = PyList_New (%ss->len);\n" typ; pr " for (i = 0; i < %ss->len; ++i)\n" typ; @@ -9960,7 +9960,7 @@ static VALUE ruby_guestfs_close (VALUE gv) pr " char **%s;\n" n; pr " Check_Type (%sv, T_ARRAY);\n" n; pr " {\n"; - pr " int i, len;\n"; + pr " size_t i, len;\n"; pr " len = RARRAY_LEN (%sv);\n" n; pr " %s = guestfs_safe_malloc (g, sizeof (char *) * (len+1));\n" n; @@ -10032,7 +10032,7 @@ static VALUE ruby_guestfs_close (VALUE gv) pr " free (r);\n"; pr " return rv;\n"; | RStringList _ -> - pr " int i, len = 0;\n"; + pr " size_t i, len = 0;\n"; pr " for (i = 0; r[i] != NULL; ++i) len++;\n"; pr " VALUE rv = rb_ary_new2 (len);\n"; pr " for (i = 0; r[i] != NULL; ++i) {\n"; @@ -10049,7 +10049,7 @@ static VALUE ruby_guestfs_close (VALUE gv) generate_ruby_struct_list_code typ cols | RHashtable _ -> pr " VALUE rv = rb_hash_new ();\n"; - pr " int i;\n"; + pr " size_t i;\n"; pr " for (i = 0; r[i] != NULL; i+=2) {\n"; pr " rb_hash_aset (rv, rb_str_new2 (r[i]), rb_str_new2 (r[i+1]));\n"; pr " free (r[i]);\n"; @@ -10118,7 +10118,7 @@ and generate_ruby_struct_code typ cols (* Ruby code to return a struct list. *) and generate_ruby_struct_list_code typ cols pr " VALUE rv = rb_ary_new2 (r->len);\n"; - pr " int i;\n"; + pr " size_t i;\n"; pr " for (i = 0; i < r->len; ++i) {\n"; pr " VALUE hv = rb_hash_new ();\n"; List.iter ( @@ -10525,7 +10525,7 @@ Java_com_redhat_et_libguestfs_GuestFS__1close | DeviceList _ -> true | _ -> false) (snd style) in if needs_i then - pr " int i;\n"; + pr " size_t i;\n"; pr "\n"; @@ -11177,7 +11177,7 @@ namespace Guestfs pr " return r != 0 ? true : false;\n" | RHashtable _ -> pr " Hashtable rr = new Hashtable ();\n"; - pr " for (int i = 0; i < r.Length; i += 2)\n"; + pr " for (size_t i = 0; i < r.Length; i += 2)\n"; pr " rr.Add (r[i], r[i+1]);\n"; pr " return rr;\n" | RInt _ | RInt64 _ | RConstString _ | RConstOptString _ @@ -11214,7 +11214,7 @@ and generate_bindtests () static void print_strings (char *const *argv) { - int argc; + size_t argc; printf (\"[\"); for (argc = 0; argv[argc] != NULL; ++argc) { -- 1.7.1
Seemingly Similar Threads
- [PATCH 0/10] Miscellaneous patches to fix some compile problems on Mac OS X
- [PATCH 0/9] Enhance virt-resize so it can really expand Linux and Windows guests
- [PATCH 0/5] Add new tools virt-tar and virt-ls and tidy up the tools code
- [PATCH 0/2] Document problems with symlinks on NTFS
- [PATCH 0/9] FOR DISCUSSION ONLY: daemon error handling