[PATCH] Fix build without libexpat (Re: [PATCH 1/4] Merge remote thread listing methods)

Pedro Alves
2014-10-17T10:17:42Z

Hi Jiong,

> looks like this change break arm native build on chrome book.
>
> clear_threads_listing_context only exist when HAVE_LIBEXPACT defined.

Thanks, fixed with the patch below. Though you should really link
with libexpat. gdb processes built-in xml files even when
native debugging.

----
From 80134cf5b3ca1f75a96af1856fdaad29ad1f57aa Mon Sep 17 00:00:00 2001
From: Pedro Alves <palves@redhat.com>
Date: Fri, 17 Oct 2014 11:05:06 +0100
Subject: [PATCH] Fix build without libexpat

clear_threads_listing_context is used for thread listing methods other
than the xml based, but it's only defined when HAVE_LIBEXPAT is defined.

gdb/
2014-10-17 Pedro Alves <palves@redhat.com>

* remote.c (clear_threads_listing_context): Move higher up, out of
the HAVE_LIBEXPAT guard.
---
gdb/ChangeLog | 5 +++++
gdb/remote.c | 30 +++++++++++++++---------------
2 files changed, 20 insertions(+), 15 deletions(-)

diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index 62d1d06..1ea76a5 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,3 +1,8 @@
+2014-10-17 Pedro Alves <palves@redhat.com>
+
+ * remote.c (clear_threads_listing_context): Move higher up, out of
+ the HAVE_LIBEXPAT guard.
+
2014-10-16 Tristan Gingold <gingold@adacore.com>

* i386-darwin-nat.c (i386_darwin_fetch_inferior_registers)
diff --git a/gdb/remote.c b/gdb/remote.c
index 98d3f2a..20f2988 100644
--- a/gdb/remote.c
+++ b/gdb/remote.c
@@ -2559,6 +2559,21 @@ struct threads_listing_context
VEC (thread_item_t) *items;
};

+/* Discard the contents of the constructed thread listing context. */
+
+static void
+clear_threads_listing_context (void *p)
+{
+ struct threads_listing_context *context = p;
+ int i;
+ struct thread_item *item;
+
+ for (i = 0; VEC_iterate (thread_item_t, context->items, i, item); ++i)
+ xfree (item->extra);
+
+ VEC_free (thread_item_t, context->items);
+}
+
static int
remote_newthread_step (threadref *ref, void *data)
{
@@ -2664,21 +2679,6 @@ const struct gdb_xml_element threads_elements[] = {
{ NULL, NULL, NULL, GDB_XML_EF_NONE, NULL, NULL }
};

-/* Discard the contents of the constructed thread info context. */
-
-static void
-clear_threads_listing_context (void *p)
-{
- struct threads_listing_context *context = p;
- int i;
- struct thread_item *item;
-
- for (i = 0; VEC_iterate (thread_item_t, context->items, i, item); ++i)
- xfree (item->extra);
-
- VEC_free (thread_item_t, context->items);
-}
-
#endif

/* List remote threads using qXfer:threads:read. */
--
1.9.3