Merge changes I13f94cdc,I2107ae65,I7dc10b56,I2037548c
* changes:
libc: remove now-unused FORTIFY functions
fortify: remove last uses of __bos_trivially_not*
fortify(string): emit diagnostics regardless of API level
fortify(fcntl): emit diagnostics regardless of API level
diff --git a/libc/Android.bp b/libc/Android.bp
index 5f82b13..3653f45 100644
--- a/libc/Android.bp
+++ b/libc/Android.bp
@@ -1713,6 +1713,11 @@
versions: ["10000"],
},
+ apex_available: [
+ "//apex_available:platform",
+ "com.android.runtime",
+ ],
+
// Sorting bss symbols by size usually results in less dirty pages at run
// time, because small symbols are grouped together.
sort_bss_symbols_by_size: true,
diff --git a/libc/bionic/pthread_create.cpp b/libc/bionic/pthread_create.cpp
index 0dbf539..1dc1066 100644
--- a/libc/bionic/pthread_create.cpp
+++ b/libc/bionic/pthread_create.cpp
@@ -344,6 +344,8 @@
name);
}
+extern "C" int __rt_sigprocmask(int, const sigset64_t*, sigset64_t*, size_t);
+
__attribute__((no_sanitize("hwaddress")))
static int __pthread_start(void* arg) {
pthread_internal_t* thread = reinterpret_cast<pthread_internal_t*>(arg);
@@ -358,6 +360,7 @@
__set_stack_and_tls_vma_name(false);
__init_additional_stacks(thread);
+ __rt_sigprocmask(SIG_SETMASK, &thread->start_mask, nullptr, sizeof(thread->start_mask));
void* result = thread->start_routine(thread->start_routine_arg);
pthread_exit(result);
@@ -420,7 +423,12 @@
__init_user_desc(&tls_descriptor, false, tls);
tls = &tls_descriptor;
#endif
+
+ sigset64_t block_all_mask;
+ sigfillset64(&block_all_mask);
+ __rt_sigprocmask(SIG_SETMASK, &block_all_mask, &thread->start_mask, sizeof(thread->start_mask));
int rc = clone(__pthread_start, child_stack, flags, thread, &(thread->tid), tls, &(thread->tid));
+ __rt_sigprocmask(SIG_SETMASK, &thread->start_mask, nullptr, sizeof(thread->start_mask));
if (rc == -1) {
int clone_errno = errno;
// We don't have to unlock the mutex at all because clone(2) failed so there's no child waiting to
diff --git a/libc/bionic/pthread_internal.h b/libc/bionic/pthread_internal.h
index 22cc400..22b0558 100644
--- a/libc/bionic/pthread_internal.h
+++ b/libc/bionic/pthread_internal.h
@@ -98,6 +98,7 @@
void* (*start_routine)(void*);
void* start_routine_arg;
void* return_value;
+ sigset64_t start_mask;
void* alternate_signal_stack;
diff --git a/libc/malloc_debug/Android.bp b/libc/malloc_debug/Android.bp
index 41c4f9d..ce80a97 100644
--- a/libc/malloc_debug/Android.bp
+++ b/libc/malloc_debug/Android.bp
@@ -39,6 +39,11 @@
"-Werror",
"-Wno-error=format-zero-length",
],
+
+ apex_available: [
+ "//apex_available:platform",
+ "com.android.runtime",
+ ],
}
// ==============================================================
@@ -102,6 +107,11 @@
"-Wno-error=format-zero-length",
"-Wthread-safety",
],
+
+ apex_available: [
+ "//apex_available:platform",
+ "com.android.runtime",
+ ],
}
// ==============================================================
diff --git a/libdl/Android.bp b/libdl/Android.bp
index e36ddc5..15263e9 100644
--- a/libdl/Android.bp
+++ b/libdl/Android.bp
@@ -111,6 +111,11 @@
symbol_file: "libdl.map.txt",
versions: ["10000"],
},
+
+ apex_available: [
+ "//apex_available:platform",
+ "com.android.runtime",
+ ],
}
cc_library {
diff --git a/libm/Android.bp b/libm/Android.bp
index 59466e4..b7bae54 100644
--- a/libm/Android.bp
+++ b/libm/Android.bp
@@ -501,6 +501,11 @@
symbol_file: "libm.map.txt",
versions: ["10000"],
},
+
+ apex_available: [
+ "//apex_available:platform",
+ "com.android.runtime",
+ ],
}
ndk_library {
diff --git a/linker/Android.bp b/linker/Android.bp
index e2cdd14..18f2527 100644
--- a/linker/Android.bp
+++ b/linker/Android.bp
@@ -303,6 +303,11 @@
},
compile_multilib: "both",
xom: false,
+
+ apex_available: [
+ "//apex_available:platform",
+ "com.android.runtime",
+ ],
}
sh_binary {
@@ -376,6 +381,11 @@
sanitize: {
never: true,
},
+
+ apex_available: [
+ "//apex_available:platform",
+ "com.android.runtime",
+ ],
}
cc_test {