Merge "Update getaddrinfo to RFC6724" into jb-mr2-dev
diff --git a/libc/bionic/pthread_create.cpp b/libc/bionic/pthread_create.cpp
index 15f18aa..70a9bf5 100644
--- a/libc/bionic/pthread_create.cpp
+++ b/libc/bionic/pthread_create.cpp
@@ -153,6 +153,7 @@
 
   pthread_internal_t* thread = reinterpret_cast<pthread_internal_t*>(calloc(sizeof(*thread), 1));
   if (thread == NULL) {
+    __libc_format_log(ANDROID_LOG_WARN, "libc", "pthread_create failed: couldn't allocate thread");
     return EAGAIN;
   }
   thread->allocated_on_heap = true;
@@ -172,6 +173,7 @@
     thread->attr.stack_base = __create_thread_stack(stack_size, thread->attr.guard_size);
     if (thread->attr.stack_base == NULL) {
       free(thread);
+      __libc_format_log(ANDROID_LOG_WARN, "libc", "pthread_create failed: couldn't allocate %zd-byte stack", stack_size);
       return EAGAIN;
     }
   } else {
@@ -203,6 +205,7 @@
       munmap(thread->attr.stack_base, stack_size);
     }
     free(thread);
+    __libc_format_log(ANDROID_LOG_WARN, "libc", "pthread_create failed: clone failed: %s", strerror(errno));
     return clone_errno;
   }
 
diff --git a/libc/private/resolv_cache.h b/libc/private/resolv_cache.h
index 4f32fb7..d70857d 100644
--- a/libc/private/resolv_cache.h
+++ b/libc/private/resolv_cache.h
@@ -28,52 +28,64 @@
 #ifndef _RESOLV_CACHE_H_
 #define _RESOLV_CACHE_H_
 
+#include <sys/cdefs.h>
+
 struct __res_state;
 struct resolv_cache;  /* forward */
 
 /* gets the cache for an interface. Set ifname argument to NULL or
  * empty buffer ('\0') to get cache for default interface.
  * returned cache might be NULL*/
+__LIBC_HIDDEN__
 extern struct resolv_cache*  __get_res_cache(const char* ifname);
 
 /* this gets called everytime we detect some changes in the DNS configuration
  * and will flush the cache */
+__LIBC_HIDDEN__
 extern void  _resolv_cache_reset( unsigned  generation );
 
 /* Gets the address of the n:th name server for the default interface
  * Return length of address on success else 0.
  * Note: The first name server is at n = 1 */
+__LIBC_HIDDEN__
 extern int _resolv_cache_get_nameserver(int n, char* addr, int addrLen);
 
 /* Gets the address of the n:th name server for a certain interface
  * Return length of address on success else 0.
  * Note: The first name server is at n = 1 */
+__LIBC_HIDDEN__
 extern int _resolv_cache_get_nameserver_for_iface(const char* ifname, int n,
         char* addr, int addrLen);
 
 /* Gets addrinfo of the n:th name server associated with an interface.
  * NULL is returned if no address if found.
  * Note: The first name server is at n = 1. */
+__LIBC_HIDDEN__
 extern struct addrinfo* _resolv_cache_get_nameserver_addr_for_iface(const char* ifname, int n);
 
 /* Gets addrinfo of the n:th name server associated with the default interface
  * NULL is returned if no address if found.
  * Note: The first name server is at n = 1. */
+__LIBC_HIDDEN__
 extern struct addrinfo* _resolv_cache_get_nameserver_addr(int n);
 
 /* gets the address associated with the default interface */
+__LIBC_HIDDEN__
 extern struct in_addr* _resolv_get_addr_of_default_iface();
 
 /* gets the address associated with the specified interface */
+__LIBC_HIDDEN__
 extern struct in_addr* _resolv_get_addr_of_iface(const char* ifname);
 
 /* Copy the name of the default interface to provided buffer.
  * Return length of buffer on success on failure -1 is returned */
+__LIBC_HIDDEN__
 extern int _resolv_get_default_iface(char* buff, int buffLen);
 
 /* sets the name server addresses to the provided res_state structure. The
  * name servers are retrieved from the cache which is associated
  * with the interface to which the res_state structure is associated */
+__LIBC_HIDDEN__
 extern int _resolv_populate_res_for_iface(struct __res_state* statp);
 
 typedef enum {
@@ -83,6 +95,7 @@
     RESOLV_CACHE_FOUND         /* the cache found the answer */
 } ResolvCacheStatus;
 
+__LIBC_HIDDEN__
 extern ResolvCacheStatus
 _resolv_cache_lookup( struct resolv_cache*  cache,
                       const void*           query,
@@ -94,6 +107,7 @@
 /* add a (query,answer) to the cache, only call if _resolv_cache_lookup
  * did return RESOLV_CACHE_NOTFOUND
  */
+__LIBC_HIDDEN__
 extern void
 _resolv_cache_add( struct resolv_cache*  cache,
                    const void*           query,
@@ -102,6 +116,7 @@
                    int                   answerlen );
 
 /* Notify the cache a request failed */
+__LIBC_HIDDEN__
 extern void
 _resolv_cache_query_failed( struct resolv_cache* cache,
                    const void* query,