Merge "Fix problem with wait_for_gdb." into nyc-dev
diff --git a/adb/commandline.cpp b/adb/commandline.cpp
index 39fe3c4..2edfd0a 100644
--- a/adb/commandline.cpp
+++ b/adb/commandline.cpp
@@ -1182,6 +1182,8 @@
     }
     std::string output;
 
+    fprintf(stderr, "Bugreport is in progress and it could take minutes to complete.\n"
+            "Please be patient and do not cancel or disconnect your device until it completes.\n");
     int status = send_shell_command(transport_type, serial, "bugreportz", true, &output);
     if (status != 0 || output.empty()) return status;
     output = android::base::Trim(output);
diff --git a/libnativeloader/include/nativeloader/native_loader.h b/libnativeloader/include/nativeloader/native_loader.h
index d606a76..2a6aaec 100644
--- a/libnativeloader/include/nativeloader/native_loader.h
+++ b/libnativeloader/include/nativeloader/native_loader.h
@@ -43,6 +43,9 @@
                         jobject class_loader,
                         jstring library_path);
 
+__attribute__((visibility("default")))
+bool CloseNativeLibrary(void* handle);
+
 #if defined(__ANDROID__)
 // Look up linker namespace by class_loader. Returns nullptr if
 // there is no namespace associated with the class_loader.
diff --git a/libnativeloader/native_loader.cpp b/libnativeloader/native_loader.cpp
index baad197..8cf140e 100644
--- a/libnativeloader/native_loader.cpp
+++ b/libnativeloader/native_loader.cpp
@@ -255,6 +255,10 @@
 #endif
 }
 
+bool CloseNativeLibrary(void* handle) {
+  return dlclose(handle) == 0;
+}
+
 #if defined(__ANDROID__)
 android_namespace_t* FindNamespaceByClassLoader(JNIEnv* env, jobject class_loader) {
   std::lock_guard<std::mutex> guard(g_namespaces_mutex);