qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
* [Qemu-devel] [PULL 0/9] qemu-ga patch queue for 2.6
@ 2016-02-25 17:11 Michael Roth
  2016-02-25 17:11 ` [Qemu-devel] [PULL 1/9] qga: Support enum names in guest-file-seek Michael Roth
                   ` (9 more replies)
  0 siblings, 10 replies; 15+ messages in thread
From: Michael Roth @ 2016-02-25 17:11 UTC (permalink / raw)
  To: qemu-devel; +Cc: peter.maydell

The following changes since commit 774ae4254d3910f1c94ad6ed44d14cbea0e6a2f2:

  Merge remote-tracking branch 'remotes/bkoppelmann/tags/pull-tricore-20160225' into staging (2016-02-25 12:57:22 +0000)

are available in the git repository at:


  git://github.com/mdroth/qemu.git tags/qga-pull-2016-02-25-tag

for you to fetch changes up to e55eb806dbb97f53794b0c2f86983d34f6696845:

  qga: fix w32 breakage due to missing osdep.h includes (2016-02-25 10:54:32 -0600)

----------------------------------------------------------------
qemu-ga patch queue for 2.6

* fix w32 build breakage when VSS enabled
* fix up wchar handling in guest-set-user-password
* fix re-install handling for w32 MSI installer
* add w32 support for guest-get-vcpus
* add support for enums in guest-file-seek SEEK params
  instead of relying on platform-specific integer values

----------------------------------------------------------------
Eric Blake (1):
      qga: Support enum names in guest-file-seek

Gal Hammer (1):
      qga: implement the guest-get-vcpus for windows

Leonid Bloch (1):
      qemu-ga: Fixed minor version switch issue

Marc-André Lureau (5):
      qga: use more idiomatic qemu-style eol operators
      qga: use size_t for wcslen() return value
      qga: use wide-chars constants for wchar_t comparisons
      qga: fix off-by-one length check
      qga: check utf8-to-utf16 conversion

Michael Roth (1):
      qga: fix w32 breakage due to missing osdep.h includes

 qga/commands-posix.c        |  19 +++----
 qga/commands-win32.c        | 121 +++++++++++++++++++++++++++++++++++---------
 qga/commands.c              |  21 ++++++++
 qga/guest-agent-core.h      |   9 +---
 qga/installer/qemu-ga.wxs   |   2 +-
 qga/qapi-schema.json        |  33 +++++++++++-
 qga/vss-win32.c             |   2 +-
 qga/vss-win32/install.cpp   |   3 +-
 qga/vss-win32/provider.cpp  |   2 +-
 qga/vss-win32/requester.cpp |   8 +--
 qga/vss-win32/requester.h   |   2 +-
 tests/test-qga.c            |   9 ++--
 12 files changed, 170 insertions(+), 61 deletions(-)

^ permalink raw reply	[flat|nested] 15+ messages in thread

* [Qemu-devel] [PULL 1/9] qga: Support enum names in guest-file-seek
  2016-02-25 17:11 [Qemu-devel] [PULL 0/9] qemu-ga patch queue for 2.6 Michael Roth
@ 2016-02-25 17:11 ` Michael Roth
  2016-02-25 17:11 ` [Qemu-devel] [PULL 2/9] qemu-ga: Fixed minor version switch issue Michael Roth
                   ` (8 subsequent siblings)
  9 siblings, 0 replies; 15+ messages in thread
From: Michael Roth @ 2016-02-25 17:11 UTC (permalink / raw)
  To: qemu-devel; +Cc: peter.maydell, Michael Roth

From: Eric Blake <eblake@redhat.com>

Magic constants are a pain to use, especially when we run the
risk that our choice of '1' for QGA_SEEK_CUR might differ from
the host or guest's choice of SEEK_CUR.  Better is to use an
enum value, via a qapi alternate type for back-compatibility.

With this,
 {"command":"guest-file-seek", "arguments":{"handle":1,
  "offset":0, "whence":"cur"}}
becomes a synonym for the older
 {"command":"guest-file-seek", "arguments":{"handle":1,
  "offset":0, "whence":1}}

Signed-off-by: Eric Blake <eblake@redhat.com>
Reviewed-by: Michael Roth <mdroth@linux.vnet.ibm.com>
Signed-off-by: Michael Roth <mdroth@linux.vnet.ibm.com>
---
 qga/commands-posix.c   | 19 ++++++-------------
 qga/commands-win32.c   | 19 ++++++-------------
 qga/commands.c         | 21 +++++++++++++++++++++
 qga/guest-agent-core.h |  9 ++-------
 qga/qapi-schema.json   | 33 +++++++++++++++++++++++++++++++--
 tests/test-qga.c       |  9 ++++-----
 6 files changed, 70 insertions(+), 40 deletions(-)

diff --git a/qga/commands-posix.c b/qga/commands-posix.c
index 9589b2d..9f51fae 100644
--- a/qga/commands-posix.c
+++ b/qga/commands-posix.c
@@ -550,31 +550,24 @@ GuestFileWrite *qmp_guest_file_write(int64_t handle, const char *buf_b64,
 }
 
 struct GuestFileSeek *qmp_guest_file_seek(int64_t handle, int64_t offset,
-                                          int64_t whence_code, Error **errp)
+                                          GuestFileWhence *whence_code,
+                                          Error **errp)
 {
     GuestFileHandle *gfh = guest_file_handle_find(handle, errp);
     GuestFileSeek *seek_data = NULL;
     FILE *fh;
     int ret;
     int whence;
+    Error *err = NULL;
 
     if (!gfh) {
         return NULL;
     }
 
     /* We stupidly exposed 'whence':'int' in our qapi */
-    switch (whence_code) {
-    case QGA_SEEK_SET:
-        whence = SEEK_SET;
-        break;
-    case QGA_SEEK_CUR:
-        whence = SEEK_CUR;
-        break;
-    case QGA_SEEK_END:
-        whence = SEEK_END;
-        break;
-    default:
-        error_setg(errp, "invalid whence code %"PRId64, whence_code);
+    whence = ga_parse_whence(whence_code, &err);
+    if (err) {
+        error_propagate(errp, err);
         return NULL;
     }
 
diff --git a/qga/commands-win32.c b/qga/commands-win32.c
index cf0757c..2799f5f 100644
--- a/qga/commands-win32.c
+++ b/qga/commands-win32.c
@@ -385,7 +385,8 @@ done:
 }
 
 GuestFileSeek *qmp_guest_file_seek(int64_t handle, int64_t offset,
-                                   int64_t whence_code, Error **errp)
+                                   GuestFileWhence *whence_code,
+                                   Error **errp)
 {
     GuestFileHandle *gfh;
     GuestFileSeek *seek_data;
@@ -394,6 +395,7 @@ GuestFileSeek *qmp_guest_file_seek(int64_t handle, int64_t offset,
     off_pos.QuadPart = offset;
     BOOL res;
     int whence;
+    Error *err = NULL;
 
     gfh = guest_file_handle_find(handle, errp);
     if (!gfh) {
@@ -401,18 +403,9 @@ GuestFileSeek *qmp_guest_file_seek(int64_t handle, int64_t offset,
     }
 
     /* We stupidly exposed 'whence':'int' in our qapi */
-    switch (whence_code) {
-    case QGA_SEEK_SET:
-        whence = SEEK_SET;
-        break;
-    case QGA_SEEK_CUR:
-        whence = SEEK_CUR;
-        break;
-    case QGA_SEEK_END:
-        whence = SEEK_END;
-        break;
-    default:
-        error_setg(errp, "invalid whence code %"PRId64, whence_code);
+    whence = ga_parse_whence(whence_code, &err);
+    if (err) {
+        error_propagate(errp, err);
         return NULL;
     }
 
diff --git a/qga/commands.c b/qga/commands.c
index 5b56786..e091ee1 100644
--- a/qga/commands.c
+++ b/qga/commands.c
@@ -473,3 +473,24 @@ done:
 
     return ge;
 }
+
+/* Convert GuestFileWhence (either a raw integer or an enum value) into
+ * the guest's SEEK_ constants.  */
+int ga_parse_whence(GuestFileWhence *whence, Error **errp)
+{
+    /* Exploit the fact that we picked values to match QGA_SEEK_*. */
+    if (whence->type == QTYPE_QSTRING) {
+        whence->type = QTYPE_QINT;
+        whence->u.value = whence->u.name;
+    }
+    switch (whence->u.value) {
+    case QGA_SEEK_SET:
+        return SEEK_SET;
+    case QGA_SEEK_CUR:
+        return SEEK_CUR;
+    case QGA_SEEK_END:
+        return SEEK_END;
+    }
+    error_setg(errp, "invalid whence code %"PRId64, whence->u.value);
+    return -1;
+}
diff --git a/qga/guest-agent-core.h b/qga/guest-agent-core.h
index 238dc6b..0a49516 100644
--- a/qga/guest-agent-core.h
+++ b/qga/guest-agent-core.h
@@ -12,16 +12,10 @@
  */
 #include "qapi/qmp/dispatch.h"
 #include "qemu-common.h"
+#include "qga-qmp-commands.h"
 
 #define QGA_READ_COUNT_DEFAULT 4096
 
-/* Mapping of whence codes used by guest-file-seek. */
-enum {
-    QGA_SEEK_SET = 0,
-    QGA_SEEK_CUR = 1,
-    QGA_SEEK_END = 2,
-};
-
 typedef struct GAState GAState;
 typedef struct GACommandState GACommandState;
 extern GAState *ga_state;
@@ -44,6 +38,7 @@ void ga_set_frozen(GAState *s);
 void ga_unset_frozen(GAState *s);
 const char *ga_fsfreeze_hook(GAState *s);
 int64_t ga_get_fd_handle(GAState *s, Error **errp);
+int ga_parse_whence(GuestFileWhence *whence, Error **errp);
 
 #ifndef _WIN32
 void reopen_fd_to_null(int fd);
diff --git a/qga/qapi-schema.json b/qga/qapi-schema.json
index 01c9ee4..c21f308 100644
--- a/qga/qapi-schema.json
+++ b/qga/qapi-schema.json
@@ -314,6 +314,34 @@
   'data': { 'position': 'int', 'eof': 'bool' } }
 
 ##
+# @QGASeek:
+#
+# Symbolic names for use in @guest-file-seek
+#
+# @set: Set to the specified offset (same effect as 'whence':0)
+# @cur: Add offset to the current location (same effect as 'whence':1)
+# @end: Add offset to the end of the file (same effect as 'whence':2)
+#
+# Since: 2.6
+##
+{ 'enum': 'QGASeek', 'data': [ 'set', 'cur', 'end' ] }
+
+##
+# @GuestFileWhence:
+#
+# Controls the meaning of offset to @guest-file-seek.
+#
+# @value: Integral value (0 for set, 1 for cur, 2 for end), available
+#         for historical reasons, and might differ from the host's or
+#         guest's SEEK_* values (since: 0.15)
+# @name: Symbolic name, and preferred interface
+#
+# Since: 2.6
+##
+{ 'alternate': 'GuestFileWhence',
+  'data': { 'value': 'int', 'name': 'QGASeek' } }
+
+##
 # @guest-file-seek:
 #
 # Seek to a position in the file, as with fseek(), and return the
@@ -324,14 +352,15 @@
 #
 # @offset: bytes to skip over in the file stream
 #
-# @whence: 0 for SEEK_SET, 1 for SEEK_CUR, or 2 for SEEK_END
+# @whence: Symbolic or numeric code for interpreting offset
 #
 # Returns: @GuestFileSeek on success.
 #
 # Since: 0.15.0
 ##
 { 'command': 'guest-file-seek',
-  'data':    { 'handle': 'int', 'offset': 'int', 'whence': 'int' },
+  'data':    { 'handle': 'int', 'offset': 'int',
+               'whence': 'GuestFileWhence' },
   'returns': 'GuestFileSeek' }
 
 ##
diff --git a/tests/test-qga.c b/tests/test-qga.c
index 0973b48..72a89de 100644
--- a/tests/test-qga.c
+++ b/tests/test-qga.c
@@ -6,7 +6,6 @@
 #include <sys/un.h>
 
 #include "libqtest.h"
-#include "qga/guest-agent-core.h"
 
 typedef struct {
     char *test_dir;
@@ -450,8 +449,8 @@ static void test_qga_file_ops(gconstpointer fix)
     /* seek */
     cmd = g_strdup_printf("{'execute': 'guest-file-seek',"
                           " 'arguments': { 'handle': %" PRId64 ", "
-                          " 'offset': %d, 'whence': %d } }",
-                          id, 6, QGA_SEEK_SET);
+                          " 'offset': %d, 'whence': '%s' } }",
+                          id, 6, "set");
     ret = qmp_fd(fixture->fd, cmd);
     qmp_assert_no_error(ret);
     val = qdict_get_qdict(ret, "return");
@@ -543,8 +542,8 @@ static void test_qga_file_write_read(gconstpointer fix)
     /* seek to 0 */
     cmd = g_strdup_printf("{'execute': 'guest-file-seek',"
                           " 'arguments': { 'handle': %" PRId64 ", "
-                          " 'offset': %d, 'whence': %d } }",
-                          id, 0, QGA_SEEK_SET);
+                          " 'offset': %d, 'whence': '%s' } }",
+                          id, 0, "set");
     ret = qmp_fd(fixture->fd, cmd);
     qmp_assert_no_error(ret);
     val = qdict_get_qdict(ret, "return");
-- 
1.9.1

^ permalink raw reply related	[flat|nested] 15+ messages in thread

* [Qemu-devel] [PULL 2/9] qemu-ga: Fixed minor version switch issue
  2016-02-25 17:11 [Qemu-devel] [PULL 0/9] qemu-ga patch queue for 2.6 Michael Roth
  2016-02-25 17:11 ` [Qemu-devel] [PULL 1/9] qga: Support enum names in guest-file-seek Michael Roth
@ 2016-02-25 17:11 ` Michael Roth
  2016-02-25 17:11 ` [Qemu-devel] [PULL 3/9] qga: implement the guest-get-vcpus for windows Michael Roth
                   ` (7 subsequent siblings)
  9 siblings, 0 replies; 15+ messages in thread
From: Michael Roth @ 2016-02-25 17:11 UTC (permalink / raw)
  To: qemu-devel; +Cc: peter.maydell, Leonid Bloch, Michael Roth

From: Leonid Bloch <leonid@daynix.com>

With automatically generated GUID, on minor version changes, an error
occurred, stating that there is a problem with the installer.
Now, a notification is shown, warning the user that another version of
this product is already installed, and that configuration or removal of
the existing version is possible through Add/Remove Programs on the
Control Panel (expected behavior).

Signed-off-by: Leonid Bloch <leonid@daynix.com>
Reviewed-by: Michael Roth <mdroth@linux.vnet.ibm.com>
Signed-off-by: Michael Roth <mdroth@linux.vnet.ibm.com>
---
 qga/installer/qemu-ga.wxs | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/qga/installer/qemu-ga.wxs b/qga/installer/qemu-ga.wxs
index 9473875..7f92891 100644
--- a/qga/installer/qemu-ga.wxs
+++ b/qga/installer/qemu-ga.wxs
@@ -41,7 +41,7 @@
 
   <Product
     Name="QEMU guest agent"
-    Id="*"
+    Id="{DF9974AD-E41A-4304-81AD-69AA8F299766}"
     UpgradeCode="{EB6B8302-C06E-4BEC-ADAC-932C68A3A98D}"
     Manufacturer="$(env.QEMU_GA_MANUFACTURER)"
     Version="$(env.QEMU_GA_VERSION)"
-- 
1.9.1

^ permalink raw reply related	[flat|nested] 15+ messages in thread

* [Qemu-devel] [PULL 3/9] qga: implement the guest-get-vcpus for windows
  2016-02-25 17:11 [Qemu-devel] [PULL 0/9] qemu-ga patch queue for 2.6 Michael Roth
  2016-02-25 17:11 ` [Qemu-devel] [PULL 1/9] qga: Support enum names in guest-file-seek Michael Roth
  2016-02-25 17:11 ` [Qemu-devel] [PULL 2/9] qemu-ga: Fixed minor version switch issue Michael Roth
@ 2016-02-25 17:11 ` Michael Roth
  2016-02-25 17:11 ` [Qemu-devel] [PULL 4/9] qga: use more idiomatic qemu-style eol operators Michael Roth
                   ` (6 subsequent siblings)
  9 siblings, 0 replies; 15+ messages in thread
From: Michael Roth @ 2016-02-25 17:11 UTC (permalink / raw)
  To: qemu-devel; +Cc: Gal Hammer, peter.maydell, Michael Roth

From: Gal Hammer <ghammer@redhat.com>

Signed-off-by: Gal Hammer <ghammer@redhat.com>
Reviewed-by: Michael Roth <mdroth@linux.vnet.ibm.com>
* report rather than assert when VCPU count == 0
* fix up subject: s/set-vcpus/get-vcpus/
Signed-off-by: Michael Roth <mdroth@linux.vnet.ibm.com>
---
 qga/commands-win32.c | 68 ++++++++++++++++++++++++++++++++++++++++++++++++++--
 1 file changed, 66 insertions(+), 2 deletions(-)

diff --git a/qga/commands-win32.c b/qga/commands-win32.c
index 2799f5f..5ef460f 100644
--- a/qga/commands-win32.c
+++ b/qga/commands-win32.c
@@ -1223,7 +1223,71 @@ void qmp_guest_set_time(bool has_time, int64_t time_ns, Error **errp)
 
 GuestLogicalProcessorList *qmp_guest_get_vcpus(Error **errp)
 {
-    error_setg(errp, QERR_UNSUPPORTED);
+    PSYSTEM_LOGICAL_PROCESSOR_INFORMATION pslpi, ptr;
+    DWORD length;
+    GuestLogicalProcessorList *head, **link;
+    Error *local_err = NULL;
+    int64_t current;
+
+    ptr = pslpi = NULL;
+    length = 0;
+    current = 0;
+    head = NULL;
+    link = &head;
+
+    if ((GetLogicalProcessorInformation(pslpi, &length) == FALSE) &&
+        (GetLastError() == ERROR_INSUFFICIENT_BUFFER) &&
+        (length > sizeof(SYSTEM_LOGICAL_PROCESSOR_INFORMATION))) {
+        ptr = pslpi = g_malloc0(length);
+        if (GetLogicalProcessorInformation(pslpi, &length) == FALSE) {
+            error_setg(&local_err, "Failed to get processor information: %d",
+                       (int)GetLastError());
+        }
+    } else {
+        error_setg(&local_err,
+                   "Failed to get processor information buffer length: %d",
+                   (int)GetLastError());
+    }
+
+    while ((local_err == NULL) && (length > 0)) {
+        if (pslpi->Relationship == RelationProcessorCore) {
+            ULONG_PTR cpu_bits = pslpi->ProcessorMask;
+
+            while (cpu_bits > 0) {
+                if (!!(cpu_bits & 1)) {
+                    GuestLogicalProcessor *vcpu;
+                    GuestLogicalProcessorList *entry;
+
+                    vcpu = g_malloc0(sizeof *vcpu);
+                    vcpu->logical_id = current++;
+                    vcpu->online = true;
+                    vcpu->has_can_offline = false;
+
+                    entry = g_malloc0(sizeof *entry);
+                    entry->value = vcpu;
+
+                    *link = entry;
+                    link = &entry->next;
+                }
+                cpu_bits >>= 1;
+            }
+        }
+        length -= sizeof(SYSTEM_LOGICAL_PROCESSOR_INFORMATION);
+        pslpi++; /* next entry */
+    }
+
+    g_free(ptr);
+
+    if (local_err == NULL) {
+        if (head != NULL) {
+            return head;
+        }
+        /* there's no guest with zero VCPUs */
+        error_setg(&local_err, "Guest reported zero VCPUs");
+    }
+
+    qapi_free_GuestLogicalProcessorList(head);
+    error_propagate(errp, local_err);
     return NULL;
 }
 
@@ -1340,7 +1404,7 @@ GList *ga_command_blacklist_init(GList *blacklist)
 {
     const char *list_unsupported[] = {
         "guest-suspend-hybrid",
-        "guest-get-vcpus", "guest-set-vcpus",
+        "guest-set-vcpus",
         "guest-get-memory-blocks", "guest-set-memory-blocks",
         "guest-get-memory-block-size",
         "guest-fsfreeze-freeze-list",
-- 
1.9.1

^ permalink raw reply related	[flat|nested] 15+ messages in thread

* [Qemu-devel] [PULL 4/9] qga: use more idiomatic qemu-style eol operators
  2016-02-25 17:11 [Qemu-devel] [PULL 0/9] qemu-ga patch queue for 2.6 Michael Roth
                   ` (2 preceding siblings ...)
  2016-02-25 17:11 ` [Qemu-devel] [PULL 3/9] qga: implement the guest-get-vcpus for windows Michael Roth
@ 2016-02-25 17:11 ` Michael Roth
  2016-02-25 17:11 ` [Qemu-devel] [PULL 5/9] qga: use size_t for wcslen() return value Michael Roth
                   ` (5 subsequent siblings)
  9 siblings, 0 replies; 15+ messages in thread
From: Michael Roth @ 2016-02-25 17:11 UTC (permalink / raw)
  To: qemu-devel; +Cc: peter.maydell, Michael Roth, Marc-André Lureau

From: Marc-André Lureau <marcandre.lureau@redhat.com>

Reported-by: Laszlo Ersek <lersek@redhat.com>
Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
Reviewed-by: Laszlo Ersek <lersek@redhat.com>
Reviewed-by: Michael Roth <mdroth@linux.vnet.ibm.com>
Signed-off-by: Michael Roth <mdroth@linux.vnet.ibm.com>
---
 qga/commands-win32.c | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/qga/commands-win32.c b/qga/commands-win32.c
index 5ef460f..4e3e147 100644
--- a/qga/commands-win32.c
+++ b/qga/commands-win32.c
@@ -1305,9 +1305,9 @@ get_net_error_message(gint error)
     wchar_t *msg = NULL;
     int flags, nchars;
 
-    flags = FORMAT_MESSAGE_ALLOCATE_BUFFER
-        |FORMAT_MESSAGE_IGNORE_INSERTS
-        |FORMAT_MESSAGE_FROM_SYSTEM;
+    flags = FORMAT_MESSAGE_ALLOCATE_BUFFER |
+        FORMAT_MESSAGE_IGNORE_INSERTS |
+        FORMAT_MESSAGE_FROM_SYSTEM;
 
     if (error >= NERR_BASE && error <= MAX_NERR) {
         module = LoadLibraryExW(L"netmsg.dll", NULL, LOAD_LIBRARY_AS_DATAFILE);
-- 
1.9.1

^ permalink raw reply related	[flat|nested] 15+ messages in thread

* [Qemu-devel] [PULL 5/9] qga: use size_t for wcslen() return value
  2016-02-25 17:11 [Qemu-devel] [PULL 0/9] qemu-ga patch queue for 2.6 Michael Roth
                   ` (3 preceding siblings ...)
  2016-02-25 17:11 ` [Qemu-devel] [PULL 4/9] qga: use more idiomatic qemu-style eol operators Michael Roth
@ 2016-02-25 17:11 ` Michael Roth
  2016-02-25 17:11 ` [Qemu-devel] [PULL 6/9] qga: use wide-chars constants for wchar_t comparisons Michael Roth
                   ` (4 subsequent siblings)
  9 siblings, 0 replies; 15+ messages in thread
From: Michael Roth @ 2016-02-25 17:11 UTC (permalink / raw)
  To: qemu-devel; +Cc: peter.maydell, Michael Roth, Marc-André Lureau

From: Marc-André Lureau <marcandre.lureau@redhat.com>

Reported-by: Laszlo Ersek <lersek@redhat.com>
Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
Reviewed-by: Laszlo Ersek <lersek@redhat.com>
Reviewed-by: Michael Roth <mdroth@linux.vnet.ibm.com>
Signed-off-by: Michael Roth <mdroth@linux.vnet.ibm.com>
---
 qga/commands-win32.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/qga/commands-win32.c b/qga/commands-win32.c
index 4e3e147..1086ac9 100644
--- a/qga/commands-win32.c
+++ b/qga/commands-win32.c
@@ -1303,7 +1303,8 @@ get_net_error_message(gint error)
     HMODULE module = NULL;
     gchar *retval = NULL;
     wchar_t *msg = NULL;
-    int flags, nchars;
+    int flags;
+    size_t nchars;
 
     flags = FORMAT_MESSAGE_ALLOCATE_BUFFER |
         FORMAT_MESSAGE_IGNORE_INSERTS |
-- 
1.9.1

^ permalink raw reply related	[flat|nested] 15+ messages in thread

* [Qemu-devel] [PULL 6/9] qga: use wide-chars constants for wchar_t comparisons
  2016-02-25 17:11 [Qemu-devel] [PULL 0/9] qemu-ga patch queue for 2.6 Michael Roth
                   ` (4 preceding siblings ...)
  2016-02-25 17:11 ` [Qemu-devel] [PULL 5/9] qga: use size_t for wcslen() return value Michael Roth
@ 2016-02-25 17:11 ` Michael Roth
  2016-02-25 17:11 ` [Qemu-devel] [PULL 7/9] qga: fix off-by-one length check Michael Roth
                   ` (3 subsequent siblings)
  9 siblings, 0 replies; 15+ messages in thread
From: Michael Roth @ 2016-02-25 17:11 UTC (permalink / raw)
  To: qemu-devel; +Cc: peter.maydell, Michael Roth, Marc-André Lureau

From: Marc-André Lureau <marcandre.lureau@redhat.com>

Reported-by: Laszlo Ersek <lersek@redhat.com>
Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
Reviewed-by: Laszlo Ersek <lersek@redhat.com>
Reviewed-by: Michael Roth <mdroth@linux.vnet.ibm.com>
Signed-off-by: Michael Roth <mdroth@linux.vnet.ibm.com>
---
 qga/commands-win32.c | 6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)

diff --git a/qga/commands-win32.c b/qga/commands-win32.c
index 1086ac9..2df1e2d 100644
--- a/qga/commands-win32.c
+++ b/qga/commands-win32.c
@@ -1323,8 +1323,10 @@ get_net_error_message(gint error)
     if (msg != NULL) {
         nchars = wcslen(msg);
 
-        if (nchars > 2 && msg[nchars-1] == '\n' && msg[nchars-2] == '\r') {
-            msg[nchars-2] = '\0';
+        if (nchars > 2 &&
+            msg[nchars - 1] == L'\n' &&
+            msg[nchars - 2] == L'\r') {
+            msg[nchars - 2] = L'\0';
         }
 
         retval = g_utf16_to_utf8(msg, -1, NULL, NULL, NULL);
-- 
1.9.1

^ permalink raw reply related	[flat|nested] 15+ messages in thread

* [Qemu-devel] [PULL 7/9] qga: fix off-by-one length check
  2016-02-25 17:11 [Qemu-devel] [PULL 0/9] qemu-ga patch queue for 2.6 Michael Roth
                   ` (5 preceding siblings ...)
  2016-02-25 17:11 ` [Qemu-devel] [PULL 6/9] qga: use wide-chars constants for wchar_t comparisons Michael Roth
@ 2016-02-25 17:11 ` Michael Roth
  2016-02-25 17:12 ` [Qemu-devel] [PULL 8/9] qga: check utf8-to-utf16 conversion Michael Roth
                   ` (2 subsequent siblings)
  9 siblings, 0 replies; 15+ messages in thread
From: Michael Roth @ 2016-02-25 17:11 UTC (permalink / raw)
  To: qemu-devel; +Cc: peter.maydell, Michael Roth, Marc-André Lureau

From: Marc-André Lureau <marcandre.lureau@redhat.com>

Laszlo Ersek said: "The length check is off by one (in the safe direction); it
should be (nchars >= 2). The processing should be active for the wide string
L"\r\n" -- resulting in the empty wide string --, I believe."

Reported-by: Laszlo Ersek <lersek@redhat.com>
Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
Reviewed-by: Laszlo Ersek <lersek@redhat.com>
Reviewed-by: Michael Roth <mdroth@linux.vnet.ibm.com>
Signed-off-by: Michael Roth <mdroth@linux.vnet.ibm.com>
---
 qga/commands-win32.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/qga/commands-win32.c b/qga/commands-win32.c
index 2df1e2d..043ed68 100644
--- a/qga/commands-win32.c
+++ b/qga/commands-win32.c
@@ -1323,7 +1323,7 @@ get_net_error_message(gint error)
     if (msg != NULL) {
         nchars = wcslen(msg);
 
-        if (nchars > 2 &&
+        if (nchars >= 2 &&
             msg[nchars - 1] == L'\n' &&
             msg[nchars - 2] == L'\r') {
             msg[nchars - 2] = L'\0';
-- 
1.9.1

^ permalink raw reply related	[flat|nested] 15+ messages in thread

* [Qemu-devel] [PULL 8/9] qga: check utf8-to-utf16 conversion
  2016-02-25 17:11 [Qemu-devel] [PULL 0/9] qemu-ga patch queue for 2.6 Michael Roth
                   ` (6 preceding siblings ...)
  2016-02-25 17:11 ` [Qemu-devel] [PULL 7/9] qga: fix off-by-one length check Michael Roth
@ 2016-02-25 17:12 ` Michael Roth
  2016-02-25 17:12 ` [Qemu-devel] [PULL 9/9] qga: fix w32 breakage due to missing osdep.h includes Michael Roth
  2016-02-25 18:18 ` [Qemu-devel] [PULL 0/9] qemu-ga patch queue for 2.6 Peter Maydell
  9 siblings, 0 replies; 15+ messages in thread
From: Michael Roth @ 2016-02-25 17:12 UTC (permalink / raw)
  To: qemu-devel; +Cc: peter.maydell, Michael Roth, Marc-André Lureau

From: Marc-André Lureau <marcandre.lureau@redhat.com>

UTF8 to UTF16 conversion can fail for genuine reasons, let's check errors.

Reported-by: Laszlo Ersek <lersek@redhat.com>
Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
Reviewed-by: Laszlo Ersek <lersek@redhat.com>
Reviewed-by: Michael Roth <mdroth@linux.vnet.ibm.com>
Signed-off-by: Michael Roth <mdroth@linux.vnet.ibm.com>
---
 qga/commands-win32.c | 19 ++++++++++++++++---
 1 file changed, 16 insertions(+), 3 deletions(-)

diff --git a/qga/commands-win32.c b/qga/commands-win32.c
index 043ed68..d76327f 100644
--- a/qga/commands-win32.c
+++ b/qga/commands-win32.c
@@ -1349,8 +1349,9 @@ void qmp_guest_set_user_password(const char *username,
     NET_API_STATUS nas;
     char *rawpasswddata = NULL;
     size_t rawpasswdlen;
-    wchar_t *user, *wpass;
+    wchar_t *user = NULL, *wpass = NULL;
     USER_INFO_1003 pi1003 = { 0, };
+    GError *gerr = NULL;
 
     if (crypted) {
         error_setg(errp, QERR_UNSUPPORTED);
@@ -1364,8 +1365,15 @@ void qmp_guest_set_user_password(const char *username,
     rawpasswddata = g_renew(char, rawpasswddata, rawpasswdlen + 1);
     rawpasswddata[rawpasswdlen] = '\0';
 
-    user = g_utf8_to_utf16(username, -1, NULL, NULL, NULL);
-    wpass = g_utf8_to_utf16(rawpasswddata, -1, NULL, NULL, NULL);
+    user = g_utf8_to_utf16(username, -1, NULL, NULL, &gerr);
+    if (!user) {
+        goto done;
+    }
+
+    wpass = g_utf8_to_utf16(rawpasswddata, -1, NULL, NULL, &gerr);
+    if (!wpass) {
+        goto done;
+    }
 
     pi1003.usri1003_password = wpass;
     nas = NetUserSetInfo(NULL, user,
@@ -1378,6 +1386,11 @@ void qmp_guest_set_user_password(const char *username,
         g_free(msg);
     }
 
+done:
+    if (gerr) {
+        error_setg(errp, QERR_QGA_COMMAND_FAILED, gerr->message);
+        g_error_free(gerr);
+    }
     g_free(user);
     g_free(wpass);
     g_free(rawpasswddata);
-- 
1.9.1

^ permalink raw reply related	[flat|nested] 15+ messages in thread

* [Qemu-devel] [PULL 9/9] qga: fix w32 breakage due to missing osdep.h includes
  2016-02-25 17:11 [Qemu-devel] [PULL 0/9] qemu-ga patch queue for 2.6 Michael Roth
                   ` (7 preceding siblings ...)
  2016-02-25 17:12 ` [Qemu-devel] [PULL 8/9] qga: check utf8-to-utf16 conversion Michael Roth
@ 2016-02-25 17:12 ` Michael Roth
  2016-02-25 18:18 ` [Qemu-devel] [PULL 0/9] qemu-ga patch queue for 2.6 Peter Maydell
  9 siblings, 0 replies; 15+ messages in thread
From: Michael Roth @ 2016-02-25 17:12 UTC (permalink / raw)
  To: qemu-devel; +Cc: peter.maydell, Michael Roth

requester.h relied on qemu/compiler.h definitions to
handle GCC_FMT_ATTR() stub, but this include was removed as part
of scripted clean-ups via 30456d5:

  all: Clean up includes

under the assumption that all C files would have included it via
qemu/osdep.h at that point. requester.cpp was likely missed
due to C++ files requiring manual/special handling as well as
VSS build options needing to be enabled to trigger build failures.

Fix this by including qemu/osdep.h. That in turn pulls in a
macro from qapi/error.h that conflicts with a struct field name
in requester.h, so fix that as well by renaming the field.

While we're at it, fix up provider.cpp/install.cpp to include
osdep.h as well.

Cc: Peter Maydell <peter.maydell@linaro.org>
Signed-off-by: Michael Roth <mdroth@linux.vnet.ibm.com>
Reviewed-by: Eric Blake <eblake@redhat.com>
---
 qga/vss-win32.c             | 2 +-
 qga/vss-win32/install.cpp   | 3 +--
 qga/vss-win32/provider.cpp  | 2 +-
 qga/vss-win32/requester.cpp | 8 ++++----
 qga/vss-win32/requester.h   | 2 +-
 5 files changed, 8 insertions(+), 9 deletions(-)

diff --git a/qga/vss-win32.c b/qga/vss-win32.c
index 5182e3b..9a0e463 100644
--- a/qga/vss-win32.c
+++ b/qga/vss-win32.c
@@ -150,7 +150,7 @@ void qga_vss_fsfreeze(int *nr_volume, Error **errp, bool freeze)
     const char *func_name = freeze ? "requester_freeze" : "requester_thaw";
     QGAVSSRequesterFunc func;
     ErrorSet errset = {
-        .error_setg_win32 = error_setg_win32_internal,
+        .error_setg_win32_wrapper = error_setg_win32_internal,
         .errp = errp,
     };
 
diff --git a/qga/vss-win32/install.cpp b/qga/vss-win32/install.cpp
index b0e4426..cd9cdb4 100644
--- a/qga/vss-win32/install.cpp
+++ b/qga/vss-win32/install.cpp
@@ -10,8 +10,7 @@
  * See the COPYING file in the top-level directory.
  */
 
-#include <stdio.h>
-#include <string.h>
+#include "qemu/osdep.h"
 
 #include "vss-common.h"
 #include "inc/win2003/vscoordint.h"
diff --git a/qga/vss-win32/provider.cpp b/qga/vss-win32/provider.cpp
index d5129f8..d977393 100644
--- a/qga/vss-win32/provider.cpp
+++ b/qga/vss-win32/provider.cpp
@@ -10,7 +10,7 @@
  * See the COPYING file in the top-level directory.
  */
 
-#include <stdio.h>
+#include "qemu/osdep.h"
 #include "vss-common.h"
 #include "inc/win2003/vscoordint.h"
 #include "inc/win2003/vsprov.h"
diff --git a/qga/vss-win32/requester.cpp b/qga/vss-win32/requester.cpp
index 9b3e310..b57d517 100644
--- a/qga/vss-win32/requester.cpp
+++ b/qga/vss-win32/requester.cpp
@@ -10,7 +10,7 @@
  * See the COPYING file in the top-level directory.
  */
 
-#include <stdio.h>
+#include "qemu/osdep.h"
 #include "vss-common.h"
 #include "requester.h"
 #include "assert.h"
@@ -23,9 +23,9 @@
 /* Call QueryStatus every 10 ms while waiting for frozen event */
 #define VSS_TIMEOUT_EVENT_MSEC 10
 
-#define err_set(e, err, fmt, ...)                                       \
-    ((e)->error_setg_win32((e)->errp, __FILE__, __LINE__, __func__,     \
-                           err, fmt, ## __VA_ARGS__))
+#define err_set(e, err, fmt, ...)                                           \
+    ((e)->error_setg_win32_wrapper((e)->errp, __FILE__, __LINE__, __func__, \
+                                   err, fmt, ## __VA_ARGS__))
 /* Bad idea, works only when (e)->errp != NULL: */
 #define err_is_set(e) ((e)->errp && *(e)->errp)
 /* To lift this restriction, error_propagate(), like we do in QEMU code */
diff --git a/qga/vss-win32/requester.h b/qga/vss-win32/requester.h
index ad2bf3d..2a39d73 100644
--- a/qga/vss-win32/requester.h
+++ b/qga/vss-win32/requester.h
@@ -27,7 +27,7 @@ typedef void (*ErrorSetFunc)(struct Error **errp,
                              int win32_err, const char *fmt, ...)
     GCC_FMT_ATTR(6, 7);
 typedef struct ErrorSet {
-    ErrorSetFunc error_setg_win32;
+    ErrorSetFunc error_setg_win32_wrapper;
     struct Error **errp;        /* restriction: must not be null */
 } ErrorSet;
 
-- 
1.9.1

^ permalink raw reply related	[flat|nested] 15+ messages in thread

* Re: [Qemu-devel] [PULL 0/9] qemu-ga patch queue for 2.6
  2016-02-25 17:11 [Qemu-devel] [PULL 0/9] qemu-ga patch queue for 2.6 Michael Roth
                   ` (8 preceding siblings ...)
  2016-02-25 17:12 ` [Qemu-devel] [PULL 9/9] qga: fix w32 breakage due to missing osdep.h includes Michael Roth
@ 2016-02-25 18:18 ` Peter Maydell
  2016-02-25 21:27   ` Michael Roth
  9 siblings, 1 reply; 15+ messages in thread
From: Peter Maydell @ 2016-02-25 18:18 UTC (permalink / raw)
  To: Michael Roth; +Cc: QEMU Developers

On 25 February 2016 at 17:11, Michael Roth <mdroth@linux.vnet.ibm.com> wrote:
> The following changes since commit 774ae4254d3910f1c94ad6ed44d14cbea0e6a2f2:
>
>   Merge remote-tracking branch 'remotes/bkoppelmann/tags/pull-tricore-20160225' into staging (2016-02-25 12:57:22 +0000)
>
> are available in the git repository at:
>
>
>   git://github.com/mdroth/qemu.git tags/qga-pull-2016-02-25-tag
>
> for you to fetch changes up to e55eb806dbb97f53794b0c2f86983d34f6696845:
>
>   qga: fix w32 breakage due to missing osdep.h includes (2016-02-25 10:54:32 -0600)
>
> ----------------------------------------------------------------
> qemu-ga patch queue for 2.6
>
> * fix w32 build breakage when VSS enabled
> * fix up wchar handling in guest-set-user-password
> * fix re-install handling for w32 MSI installer
> * add w32 support for guest-get-vcpus
> * add support for enums in guest-file-seek SEEK params
>   instead of relying on platform-specific integer values

This doesn't seem to build on w32 (the old mingw compiler). It works
with the newer w64-mingw32 compiler so I guess this is just a
"disable stuff we can't support with the old headers" thing.

/home/petmay01/linaro/qemu-for-merges/qga/commands-win32.c: In
function ‘qmp_guest_get_vcpus’:
/home/petmay01/linaro/qemu-for-merges/qga/commands-win32.c:1226:
error: ‘PSYSTEM_LOGICAL_PROCESSOR_INFORMATION’ undeclared (first use
in this function)
/home/petmay01/linaro/qemu-for-merges/qga/commands-win32.c:1226:
error: (Each undeclared identifier is reported only once
/home/petmay01/linaro/qemu-for-merges/qga/commands-win32.c:1226:
error: for each function it appears in.)
/home/petmay01/linaro/qemu-for-merges/qga/commands-win32.c:1226:
error: expected ‘;’ before ‘pslpi’
/home/petmay01/linaro/qemu-for-merges/qga/commands-win32.c:1232:
error: ‘ptr’ undeclared (first use in this function)
/home/petmay01/linaro/qemu-for-merges/qga/commands-win32.c:1232:
error: ‘pslpi’ undeclared (first use in this function)
cc1: warnings being treated as errors
/home/petmay01/linaro/qemu-for-merges/qga/commands-win32.c:1238:
warning: implicit declaration of function
‘GetLogicalProcessorInformation’
/home/petmay01/linaro/qemu-for-merges/qga/commands-win32.c:1238:
warning: nested extern declaration of ‘GetLogicalProcessorInformation’
/home/petmay01/linaro/qemu-for-merges/qga/commands-win32.c:1240:
error: ‘SYSTEM_LOGICAL_PROCESSOR_INFORMATION’ undeclared (first use in
this function)
/home/petmay01/linaro/qemu-for-merges/qga/commands-win32.c:1253:
error: ‘RelationProcessorCore’ undeclared (first use in this function)
make: *** [qga/commands-win32.o] Error 1
make: *** Waiting for unfinished jobs....
make: Leaving directory `/home/petmay01/linaro/qemu-for-merges/build/w32'

I'm open to the idea of dropping old-mingw from the build rotation
if it looks like it really is just totally hopeless, since I have
a newer setup for it now.

thanks
-- PMM

^ permalink raw reply	[flat|nested] 15+ messages in thread

* Re: [Qemu-devel] [PULL 0/9] qemu-ga patch queue for 2.6
  2016-02-25 18:18 ` [Qemu-devel] [PULL 0/9] qemu-ga patch queue for 2.6 Peter Maydell
@ 2016-02-25 21:27   ` Michael Roth
  2016-02-26  5:44     ` Stefan Weil
  0 siblings, 1 reply; 15+ messages in thread
From: Michael Roth @ 2016-02-25 21:27 UTC (permalink / raw)
  To: Peter Maydell; +Cc: sw, QEMU Developers

Quoting Peter Maydell (2016-02-25 12:18:17)
> On 25 February 2016 at 17:11, Michael Roth <mdroth@linux.vnet.ibm.com> wrote:
> > The following changes since commit 774ae4254d3910f1c94ad6ed44d14cbea0e6a2f2:
> >
> >   Merge remote-tracking branch 'remotes/bkoppelmann/tags/pull-tricore-20160225' into staging (2016-02-25 12:57:22 +0000)
> >
> > are available in the git repository at:
> >
> >
> >   git://github.com/mdroth/qemu.git tags/qga-pull-2016-02-25-tag
> >
> > for you to fetch changes up to e55eb806dbb97f53794b0c2f86983d34f6696845:
> >
> >   qga: fix w32 breakage due to missing osdep.h includes (2016-02-25 10:54:32 -0600)
> >
> > ----------------------------------------------------------------
> > qemu-ga patch queue for 2.6
> >
> > * fix w32 build breakage when VSS enabled
> > * fix up wchar handling in guest-set-user-password
> > * fix re-install handling for w32 MSI installer
> > * add w32 support for guest-get-vcpus
> > * add support for enums in guest-file-seek SEEK params
> >   instead of relying on platform-specific integer values
> 
> This doesn't seem to build on w32 (the old mingw compiler). It works
> with the newer w64-mingw32 compiler so I guess this is just a
> "disable stuff we can't support with the old headers" thing.
> 
> /home/petmay01/linaro/qemu-for-merges/qga/commands-win32.c: In
> function ‘qmp_guest_get_vcpus’:
> /home/petmay01/linaro/qemu-for-merges/qga/commands-win32.c:1226:
> error: ‘PSYSTEM_LOGICAL_PROCESSOR_INFORMATION’ undeclared (first use
> in this function)
> /home/petmay01/linaro/qemu-for-merges/qga/commands-win32.c:1226:
> error: (Each undeclared identifier is reported only once
> /home/petmay01/linaro/qemu-for-merges/qga/commands-win32.c:1226:
> error: for each function it appears in.)
> /home/petmay01/linaro/qemu-for-merges/qga/commands-win32.c:1226:
> error: expected ‘;’ before ‘pslpi’
> /home/petmay01/linaro/qemu-for-merges/qga/commands-win32.c:1232:
> error: ‘ptr’ undeclared (first use in this function)
> /home/petmay01/linaro/qemu-for-merges/qga/commands-win32.c:1232:
> error: ‘pslpi’ undeclared (first use in this function)
> cc1: warnings being treated as errors
> /home/petmay01/linaro/qemu-for-merges/qga/commands-win32.c:1238:
> warning: implicit declaration of function
> ‘GetLogicalProcessorInformation’
> /home/petmay01/linaro/qemu-for-merges/qga/commands-win32.c:1238:
> warning: nested extern declaration of ‘GetLogicalProcessorInformation’
> /home/petmay01/linaro/qemu-for-merges/qga/commands-win32.c:1240:
> error: ‘SYSTEM_LOGICAL_PROCESSOR_INFORMATION’ undeclared (first use in
> this function)
> /home/petmay01/linaro/qemu-for-merges/qga/commands-win32.c:1253:
> error: ‘RelationProcessorCore’ undeclared (first use in this function)
> make: *** [qga/commands-win32.o] Error 1
> make: *** Waiting for unfinished jobs....
> make: Leaving directory `/home/petmay01/linaro/qemu-for-merges/build/w32'
> 
> I'm open to the idea of dropping old-mingw from the build rotation
> if it looks like it really is just totally hopeless, since I have
> a newer setup for it now.

I wouldn't want to speak for dropping old mingw checks in general (cc'ing
Stefan), but for qemu-ga I think it makes sense. VSS/fsfreeze also
relies on mingw-w64 so it's really the only build system I use for
testing functionality.

If we do want to keep supporting the old mingw in general,
--disable-guest-agent should do the trick, but a probe is probably
best to simply not enable qemu-ga automatically in such cases...

According to:

https://sourceforge.net/p/mingw-w64/wiki2/Answer%20Check%20For%20Mingw-w64/

The below patch should handle this automatically. Should I send a v2
with it included, or would a follow-up be preferable?

Author: Michael Roth <mdroth@linux.vnet.ibm.com>
Date:   Thu Feb 25 15:11:04 2016 -0600

    configure: add mingw-w64 probe and make it a prereq for qga
    
    qemu-ga relies on a number of features now (VSS/fsfreeze,
    drive info, online/offline processor info) that are only
    implemented in the mingw-w64 alternative to mingw, and that
    featureset is expected to increase. Since a number of these
    features are fairly standard functionality expected of the
    guest agent, go ahead and make mingw-w64 a hard dependency.
    
    On MinGW builds, if qemu-ga isn't explicitly enabled, it will
    now just silently not build. Otherwise it will complain as needed.
    
    Signed-off-by: Michael Roth <mdroth@linux.vnet.ibm.com>

diff --git a/configure b/configure
index 0c0472a..f4f1dc1 100755
--- a/configure
+++ b/configure
@@ -238,6 +238,7 @@ strip_opt="yes"
 tcg_interpreter="no"
 bigendian="no"
 mingw32="no"
+mingw_w64="no"
 gcov="no"
 gcov_tool="gcov"
 EXESUF=""
@@ -712,6 +713,18 @@ if test "$mingw32" = "yes" ; then
   local_statedir=
   confsuffix=""
   libs_qga="-lws2_32 -lwinmm -lpowrprof -liphlpapi -lnetapi32 $libs_qga"
+  cat > $TMPC << EOF
+#include <_mingw.h>
+#if !defined(__MINGW64_VERSION_MAJOR)
+#error
+#endif
+int main(void) { return 0; }
+EOF
+  # not to be confused with a check for 64-bit, this is testing specifically
+  # for mingw-w64 compiler, which has a larger featureset than standard mingw
+  if compile_prog "" "" ; then
+    mingw_w64=yes
+  fi
 fi
 
 werror=""
@@ -4529,12 +4542,17 @@ fi
 # Probe for guest agent support/options
 
 if [ "$guest_agent" != "no" ]; then
-  if [ "$linux" = "yes" -o "$bsd" = "yes" -o "$solaris" = "yes" -o "$mingw32" = "yes" ] ; then
+  if [ "$linux" = "yes" -o "$bsd" = "yes" -o "$solaris" = "yes" -o "$mingw_w64" = "yes" ] ; then
       tools="qemu-ga $tools"
       guest_agent=yes
   elif [ "$guest_agent" != yes ]; then
       guest_agent=no
   else
+      # if theydoing a mingw check passed but not mingw_w64, inform them of what's missing to avoid
+      # confusion about actual dependencies
+      if [ "$mingw32" = "yes" ]; then
+          error_exit "Guest agent requires mingw-w64 (32 or 64-bit) for win32 builds, but only mingw detected."
+      fi
       error_exit "Guest agent is not supported on this platform"
   fi
 fi


> 
> thanks > -- PMM
> 

^ permalink raw reply related	[flat|nested] 15+ messages in thread

* Re: [Qemu-devel] [PULL 0/9] qemu-ga patch queue for 2.6
  2016-02-25 21:27   ` Michael Roth
@ 2016-02-26  5:44     ` Stefan Weil
  2016-02-26 11:39       ` Peter Maydell
  0 siblings, 1 reply; 15+ messages in thread
From: Stefan Weil @ 2016-02-26  5:44 UTC (permalink / raw)
  To: Michael Roth, Peter Maydell; +Cc: QEMU Developers

Am 25.02.2016 um 22:27 schrieb Michael Roth:
> Quoting Peter Maydell (2016-02-25 12:18:17)
[...]
>> I'm open to the idea of dropping old-mingw from the build rotation
>> if it looks like it really is just totally hopeless, since I have
>> a newer setup for it now.
> 
> I wouldn't want to speak for dropping old mingw checks in general (cc'ing
> Stefan), but for qemu-ga I think it makes sense. VSS/fsfreeze also
> relies on mingw-w64 so it's really the only build system I use for
> testing functionality.

I cannot remember the last time when I used MinGW and don't think
that it would produce a working program (wasn't there missing support
for thread local storage?). Current Linux distributions include
support for mingw-w64 cross compilations, but not for MinGW.
And finally MinGW only supports 32 bit Windows which looses
importance nowadays.

Therefore dropping MinGW support and only supporting mingw-w64 would
be fine for me.

Regards,
Stefan

^ permalink raw reply	[flat|nested] 15+ messages in thread

* Re: [Qemu-devel] [PULL 0/9] qemu-ga patch queue for 2.6
  2016-02-26  5:44     ` Stefan Weil
@ 2016-02-26 11:39       ` Peter Maydell
  2016-02-26 11:40         ` Peter Maydell
  0 siblings, 1 reply; 15+ messages in thread
From: Peter Maydell @ 2016-02-26 11:39 UTC (permalink / raw)
  To: Stefan Weil; +Cc: Michael Roth, QEMU Developers

On 26 February 2016 at 05:44, Stefan Weil <sw@weilnetz.de> wrote:
> Am 25.02.2016 um 22:27 schrieb Michael Roth:
>> Quoting Peter Maydell (2016-02-25 12:18:17)
> [...]
>>> I'm open to the idea of dropping old-mingw from the build rotation
>>> if it looks like it really is just totally hopeless, since I have
>>> a newer setup for it now.
>>
>> I wouldn't want to speak for dropping old mingw checks in general (cc'ing
>> Stefan), but for qemu-ga I think it makes sense. VSS/fsfreeze also
>> relies on mingw-w64 so it's really the only build system I use for
>> testing functionality.
>
> I cannot remember the last time when I used MinGW and don't think
> that it would produce a working program (wasn't there missing support
> for thread local storage?). Current Linux distributions include
> support for mingw-w64 cross compilations, but not for MinGW.
> And finally MinGW only supports 32 bit Windows which looses
> importance nowadays.
>
> Therefore dropping MinGW support and only supporting mingw-w64 would
> be fine for me.

OK, I have dropped my ancient mingw w32 setup from the compile
testing list, so this pull req is ok to apply as-is.

(This will also mean we no longer get annoying "failed to build"
issues for other gcc-4.2-isms like duplicate typedefs, missing
U or ULL suffixes, etc. Which is good I guess :-))

thanks
-- PMM

^ permalink raw reply	[flat|nested] 15+ messages in thread

* Re: [Qemu-devel] [PULL 0/9] qemu-ga patch queue for 2.6
  2016-02-26 11:39       ` Peter Maydell
@ 2016-02-26 11:40         ` Peter Maydell
  0 siblings, 0 replies; 15+ messages in thread
From: Peter Maydell @ 2016-02-26 11:40 UTC (permalink / raw)
  To: Stefan Weil; +Cc: Michael Roth, QEMU Developers

On 26 February 2016 at 11:39, Peter Maydell <peter.maydell@linaro.org> wrote:
> OK, I have dropped my ancient mingw w32 setup from the compile
> testing list, so this pull req is ok to apply as-is.

...and I have done so, which I meant to say.

thanks
-- PMM

^ permalink raw reply	[flat|nested] 15+ messages in thread

end of thread, other threads:[~2016-02-26 11:40 UTC | newest]

Thread overview: 15+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2016-02-25 17:11 [Qemu-devel] [PULL 0/9] qemu-ga patch queue for 2.6 Michael Roth
2016-02-25 17:11 ` [Qemu-devel] [PULL 1/9] qga: Support enum names in guest-file-seek Michael Roth
2016-02-25 17:11 ` [Qemu-devel] [PULL 2/9] qemu-ga: Fixed minor version switch issue Michael Roth
2016-02-25 17:11 ` [Qemu-devel] [PULL 3/9] qga: implement the guest-get-vcpus for windows Michael Roth
2016-02-25 17:11 ` [Qemu-devel] [PULL 4/9] qga: use more idiomatic qemu-style eol operators Michael Roth
2016-02-25 17:11 ` [Qemu-devel] [PULL 5/9] qga: use size_t for wcslen() return value Michael Roth
2016-02-25 17:11 ` [Qemu-devel] [PULL 6/9] qga: use wide-chars constants for wchar_t comparisons Michael Roth
2016-02-25 17:11 ` [Qemu-devel] [PULL 7/9] qga: fix off-by-one length check Michael Roth
2016-02-25 17:12 ` [Qemu-devel] [PULL 8/9] qga: check utf8-to-utf16 conversion Michael Roth
2016-02-25 17:12 ` [Qemu-devel] [PULL 9/9] qga: fix w32 breakage due to missing osdep.h includes Michael Roth
2016-02-25 18:18 ` [Qemu-devel] [PULL 0/9] qemu-ga patch queue for 2.6 Peter Maydell
2016-02-25 21:27   ` Michael Roth
2016-02-26  5:44     ` Stefan Weil
2016-02-26 11:39       ` Peter Maydell
2016-02-26 11:40         ` Peter Maydell

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).