Merge "Add min/max values for config values."
diff --git a/libc/libc.arm.brillo.map b/libc/libc.arm.brillo.map
index f81adca..2a1c2de 100644
--- a/libc/libc.arm.brillo.map
+++ b/libc/libc.arm.brillo.map
@@ -62,7 +62,7 @@
     __isnormal;
     __isnormalf;
     __isnormall;
-    __isthreaded;
+    __isthreaded; # arm x86 mips
     __libc_current_sigrtmax;
     __libc_current_sigrtmin;
     __libc_init;
diff --git a/libc/libc.arm.map b/libc/libc.arm.map
index 45d7539..02dd58c 100644
--- a/libc/libc.arm.map
+++ b/libc/libc.arm.map
@@ -62,7 +62,7 @@
     __isnormal;
     __isnormalf;
     __isnormall;
-    __isthreaded;
+    __isthreaded; # arm x86 mips
     __libc_current_sigrtmax;
     __libc_current_sigrtmin;
     __libc_init;
diff --git a/libc/libc.arm64.map b/libc/libc.arm64.map
index 37c475f..0f5f1e8 100644
--- a/libc/libc.arm64.map
+++ b/libc/libc.arm64.map
@@ -47,7 +47,6 @@
     __isnormal;
     __isnormalf;
     __isnormall;
-    __isthreaded;
     __libc_current_sigrtmax;
     __libc_current_sigrtmin;
     __libc_init;
diff --git a/libc/libc.map.txt b/libc/libc.map.txt
index 3179049..3a8f7d7 100644
--- a/libc/libc.map.txt
+++ b/libc/libc.map.txt
@@ -62,7 +62,7 @@
     __isnormal;
     __isnormalf;
     __isnormall;
-    __isthreaded;
+    __isthreaded; # arm x86 mips
     __libc_current_sigrtmax;
     __libc_current_sigrtmin;
     __libc_init;
@@ -75,7 +75,6 @@
     __memrchr_chk;
     __memset_chk;
     __mmap2; # arm x86 mips
-    __moddi3; # x86 mips
     __ns_format_ttl; # arm x86 mips
     __ns_get16; # arm x86 mips
     __ns_get32; # arm x86 mips
diff --git a/libc/libc.mips.brillo.map b/libc/libc.mips.brillo.map
index 734f686..100b78e 100644
--- a/libc/libc.mips.brillo.map
+++ b/libc/libc.mips.brillo.map
@@ -59,7 +59,7 @@
     __isnormal;
     __isnormalf;
     __isnormall;
-    __isthreaded;
+    __isthreaded; # arm x86 mips
     __libc_current_sigrtmax;
     __libc_current_sigrtmin;
     __libc_init;
@@ -72,7 +72,6 @@
     __memrchr_chk;
     __memset_chk;
     __mmap2; # arm x86 mips
-    __moddi3; # x86 mips
     __ns_format_ttl; # arm x86 mips
     __ns_get16; # arm x86 mips
     __ns_get32; # arm x86 mips
diff --git a/libc/libc.mips.map b/libc/libc.mips.map
index 86a2a59..0a92e1e 100644
--- a/libc/libc.mips.map
+++ b/libc/libc.mips.map
@@ -59,7 +59,7 @@
     __isnormal;
     __isnormalf;
     __isnormall;
-    __isthreaded;
+    __isthreaded; # arm x86 mips
     __libc_current_sigrtmax;
     __libc_current_sigrtmin;
     __libc_init;
@@ -72,7 +72,6 @@
     __memrchr_chk;
     __memset_chk;
     __mmap2; # arm x86 mips
-    __moddi3; # x86 mips
     __ns_format_ttl; # arm x86 mips
     __ns_get16; # arm x86 mips
     __ns_get32; # arm x86 mips
diff --git a/libc/libc.mips64.map b/libc/libc.mips64.map
index 37c475f..0f5f1e8 100644
--- a/libc/libc.mips64.map
+++ b/libc/libc.mips64.map
@@ -47,7 +47,6 @@
     __isnormal;
     __isnormalf;
     __isnormall;
-    __isthreaded;
     __libc_current_sigrtmax;
     __libc_current_sigrtmin;
     __libc_init;
diff --git a/libc/libc.x86.brillo.map b/libc/libc.x86.brillo.map
index ceaa07d..db328cf 100644
--- a/libc/libc.x86.brillo.map
+++ b/libc/libc.x86.brillo.map
@@ -59,7 +59,7 @@
     __isnormal;
     __isnormalf;
     __isnormall;
-    __isthreaded;
+    __isthreaded; # arm x86 mips
     __libc_current_sigrtmax;
     __libc_current_sigrtmin;
     __libc_init;
@@ -72,7 +72,6 @@
     __memrchr_chk;
     __memset_chk;
     __mmap2; # arm x86 mips
-    __moddi3; # x86 mips
     __ns_format_ttl; # arm x86 mips
     __ns_get16; # arm x86 mips
     __ns_get32; # arm x86 mips
diff --git a/libc/libc.x86.map b/libc/libc.x86.map
index cc35757..f3c6e59 100644
--- a/libc/libc.x86.map
+++ b/libc/libc.x86.map
@@ -59,7 +59,7 @@
     __isnormal;
     __isnormalf;
     __isnormall;
-    __isthreaded;
+    __isthreaded; # arm x86 mips
     __libc_current_sigrtmax;
     __libc_current_sigrtmin;
     __libc_init;
@@ -72,7 +72,6 @@
     __memrchr_chk;
     __memset_chk;
     __mmap2; # arm x86 mips
-    __moddi3; # x86 mips
     __ns_format_ttl; # arm x86 mips
     __ns_get16; # arm x86 mips
     __ns_get32; # arm x86 mips
diff --git a/libc/libc.x86_64.map b/libc/libc.x86_64.map
index 37c475f..0f5f1e8 100644
--- a/libc/libc.x86_64.map
+++ b/libc/libc.x86_64.map
@@ -47,7 +47,6 @@
     __isnormal;
     __isnormalf;
     __isnormall;
-    __isthreaded;
     __libc_current_sigrtmax;
     __libc_current_sigrtmin;
     __libc_init;
diff --git a/linker/linker_phdr.cpp b/linker/linker_phdr.cpp
index e81e325..136e432 100644
--- a/linker/linker_phdr.cpp
+++ b/linker/linker_phdr.cpp
@@ -39,6 +39,8 @@
 #include "linker_debug.h"
 #include "linker_utils.h"
 
+#include "private/bionic_prctl.h"
+
 static int GetTargetElfMachine() {
 #if defined(__arm__)
   return EM_ARM;
@@ -540,8 +542,9 @@
     // between them. This is done by using a private anonymous
     // map for all extra pages.
     if (seg_page_end > seg_file_end) {
+      size_t zeromap_size = seg_page_end - seg_file_end;
       void* zeromap = mmap(reinterpret_cast<void*>(seg_file_end),
-                           seg_page_end - seg_file_end,
+                           zeromap_size,
                            PFLAGS_TO_PROT(phdr->p_flags),
                            MAP_FIXED|MAP_ANONYMOUS|MAP_PRIVATE,
                            -1,
@@ -550,6 +553,8 @@
         DL_ERR("couldn't zero fill \"%s\" gap: %s", name_.c_str(), strerror(errno));
         return false;
       }
+
+      prctl(PR_SET_VMA, PR_SET_VMA_ANON_NAME, zeromap, zeromap_size, ".bss");
     }
   }
   return true;