diff --git a/android-configure.sh b/android-configure.sh
index 0b8d31a..41edc36 100755
--- a/android-configure.sh
+++ b/android-configure.sh
@@ -519,6 +519,24 @@
 feature_check_header HAVE_MACHINE_BSWAP_H "<machine/bswap.h>"
 feature_check_header HAVE_FNMATCH_H       "<fnmatch.h>"
 
+# Check whether we have pthread_set_name_np() on Linux
+case $TARGET_OS in
+    linux-*)
+        OLD_LDFLAGS=$LDFLAGS
+        LDFLAGS="$LDFLAGS -lpthread"
+        cat > $TMPC <<EOF
+#define _GNU_SOURCE 1
+#include <pthread.h>
+
+int main(void) {
+    pthread_setname_np(pthread_self(), "dummy");
+    return 0;
+}
+EOF
+        feature_run_exec HAVE_PTHREAD_SETNAME_NP
+        LDFLAGS=$OLD_LDFLAGS
+        ;;
+esac
 # check for Mingw version.
 MINGW_VERSION=
 if [ "$TARGET_OS" = "windows" ]; then
@@ -652,6 +670,9 @@
 if [ "$HAVE_FNMATCH_H" = "yes" ] ; then
   echo "#define CONFIG_FNMATCH  1" >> $config_h
 fi
+if [ "$HAVE_PTHREAD_SETNAME_NP" = "yes" ]; then
+  echo "#define CONFIG_PTHREAD_SETNAME_NP 1" >> $config_h
+fi
 echo "#define CONFIG_GDBSTUB  1" >> $config_h
 echo "#define CONFIG_SLIRP    1" >> $config_h
 echo "#define CONFIG_SKINS    1" >> $config_h
diff --git a/android/build/common.sh b/android/build/common.sh
index b859862..45f1096 100644
--- a/android/build/common.sh
+++ b/android/build/common.sh
@@ -366,16 +366,14 @@
 feature_check_compile ()
 {
     local result_cc=yes
-    local OLD_CFLAGS
-    OLD_CFLAGS="$CFLAGS"
-    CFLAGS="$CFLAGS $EXTRA_CFLAGS"
-    compile
-    if [ $? != 0 ] ; then
-        result_cc=no
-    fi
+    (
+      set -e
+      CFLAGS="$CFLAGS $EXTRA_CFLAGS"
+      compile
+    ) || result_cc=no
     eval $1=$result_cc
     EXTRA_CFLAGS=
-    CFLAGS=$OLD_CFLAGS
+    clean_temp
 }
 
 # check that a given C program $TMPC can be linked on the host system
@@ -387,23 +385,16 @@
 feature_check_link ()
 {
     local result_cl=yes
-    local OLD_CFLAGS OLD_LDFLAGS
-    OLD_CFLAGS=$CFLAGS
-    OLD_LDFLAGS=$LDFLAGS
-    CFLAGS="$CFLAGS $EXTRA_CFLAGS"
-    LDFLAGS="$LDFLAGS $EXTRA_LDFLAGS"
-    compile
-    if [ $? != 0 ] ; then
-        result_cl=no
-    else
-        link
-        if [ $? != 0 ] ; then
-            result_cl=no
-        fi
-    fi
-    CFLAGS=$OLD_CFLAGS
-    LDFLAGS=$OLD_LDFLAGS
+    (
+      set -e
+      CFLAGS="$CFLAGS $EXTRA_CFLAGS"
+      LDFLAGS="$LDFLAGS $EXTRA_LDFLAGS"
+      compile
+      link
+    ) || result_cl=no
     eval $1=$result_cl
+    EXTRA_CFLAGS=
+    EXTRA_LDFLAGS=
     clean_temp
 }
 
@@ -424,9 +415,6 @@
 EOF
     feature_check_compile result_ch
     eval $1=$result_ch
-    #eval result=$`echo $1`
-    #log  "Host       : $1=$result_ch"
-    clean_temp
 }
 
 # run the test program that is in $TMPC and set its exit status
@@ -435,17 +423,16 @@
 #
 feature_run_exec ()
 {
-    local run_exec_result
-    local OLD_CFLAGS="$CFLAGS"
-    local OLD_LDFLAGS="$LDFLAGS"
-    CFLAGS="$CFLAGS $EXTRA_CFLAGS"
-    LDFLAGS="$LDFLAGS $EXTRA_LDFLAGS"
-    compile_exec_run
-    run_exec_result=$?
-    CFLAGS="$OLD_CFLAGS"
-    LDFLAGS="$OLD_LDFLAGS"
+    local run_exec_result=yes
+    (
+        CFLAGS="$CFLAGS $EXTRA_CFLAGS"
+        LDFLAGS="$LDFLAGS $EXTRA_LDFLAGS"
+        compile_exec_run >/dev/null 2>&1
+    ) || run_exec_result=no
     eval $1=$run_exec_result
     log "Host       : $1=$run_exec_result"
+    EXTRA_CFLAGS=
+    EXTRA_LDFLAGS=
     clean_temp
 }
 
diff --git a/include/qemu/thread.h b/include/qemu/thread.h
index 6ff266a..b0692de 100644
--- a/include/qemu/thread.h
+++ b/include/qemu/thread.h
@@ -54,12 +54,13 @@
 void qemu_event_wait(QemuEvent *ev);
 void qemu_event_destroy(QemuEvent *ev);
 
-void qemu_thread_create(QemuThread *thread,
+void qemu_thread_create(QemuThread *thread, const char *name,
                         void *(*start_routine)(void *),
                         void *arg, int mode);
 void *qemu_thread_join(QemuThread *thread);
 void qemu_thread_get_self(QemuThread *thread);
 bool qemu_thread_is_self(QemuThread *thread);
 void qemu_thread_exit(void *retval);
+void qemu_thread_naming(bool enable);
 
 #endif
diff --git a/util/compatfd.c b/util/compatfd.c
index e2ba454..3fefe18 100644
--- a/util/compatfd.c
+++ b/util/compatfd.c
@@ -93,7 +93,8 @@
     memcpy(&info->mask, mask, sizeof(*mask));
     info->fd = fds[1];
 
-    qemu_thread_create(&thread, sigwait_compat, info, QEMU_THREAD_DETACHED);
+    qemu_thread_create(&thread, "signalfd_compat", sigwait_compat, info,
+                       QEMU_THREAD_DETACHED);
 
     return fds[0];
 }
diff --git a/util/qemu-thread-posix.c b/util/qemu-thread-posix.c
index 37dd298..3de6908 100644
--- a/util/qemu-thread-posix.c
+++ b/util/qemu-thread-posix.c
@@ -27,6 +27,19 @@
 #include "qemu/thread.h"
 #include "qemu/atomic.h"
 
+static bool name_threads;
+
+void qemu_thread_naming(bool enable)
+{
+    name_threads = enable;
+
+#ifndef CONFIG_THREAD_SETNAME_BYTHREAD
+    /* This is a debugging option, not fatal */
+    if (enable) {
+        fprintf(stderr, "qemu: thread naming not supported on this host\n");
+    }
+#endif
+}
 static void error_exit(int err, const char *msg)
 {
     fprintf(stderr, "qemu: %s: %s\n", msg, strerror(err));
@@ -387,8 +400,17 @@
     }
 }
 
+/* Attempt to set the threads name; note that this is for debug, so
+ * we're not going to fail if we can't set it.
+ */
+static void qemu_thread_set_name(QemuThread *thread, const char *name)
+{
+#ifdef CONFIG_PTHREAD_SETNAME_NP
+    pthread_setname_np(thread->thread, name);
+#endif
+}
 
-void qemu_thread_create(QemuThread *thread,
+void qemu_thread_create(QemuThread *thread, const char *name,
                        void *(*start_routine)(void*),
                        void *arg, int mode)
 {
@@ -413,6 +435,9 @@
     err = pthread_create(&thread->thread, &attr, start_routine, arg);
     if (err)
         error_exit(err, __func__);
+    if (name_threads) {
+        qemu_thread_set_name(thread, name);
+    }
 
     pthread_sigmask(SIG_SETMASK, &oldset, NULL);
 
diff --git a/util/qemu-thread-win32.c b/util/qemu-thread-win32.c
index 27a5217..8a0379a 100644
--- a/util/qemu-thread-win32.c
+++ b/util/qemu-thread-win32.c
@@ -16,6 +16,15 @@
 #include <assert.h>
 #include <limits.h>
 
+static bool name_threads;
+
+void qemu_thread_naming(bool enable)
+{
+    /* But note we don't actually name them on Windows yet */
+    name_threads = enable;
+
+    fprintf(stderr, "qemu: thread naming not supported on this host\n");
+}
 static void error_exit(int err, const char *msg)
 {
     char *pstr;
@@ -325,7 +334,7 @@
     return ret;
 }
 
-void qemu_thread_create(QemuThread *thread,
+void qemu_thread_create(QemuThread *thread, const char *name,
                        void *(*start_routine)(void *),
                        void *arg, int mode)
 {
