Merge "Prefer __BIONIC_DEPRECATED_PAGE_SIZE_MACRO" into main
diff --git a/libc/arch-arm64/bionic/__bionic_clone.S b/libc/arch-arm64/bionic/__bionic_clone.S
index e9932ad..581b47a 100644
--- a/libc/arch-arm64/bionic/__bionic_clone.S
+++ b/libc/arch-arm64/bionic/__bionic_clone.S
@@ -39,7 +39,7 @@
svc #0
# Are we the child?
- cbz x0, .L_bc_child
+ cbz x0, L(child)
# Set errno if something went wrong.
cmn x0, #(MAX_ERRNO + 1)
@@ -48,7 +48,7 @@
ret
-.L_bc_child:
+L(child):
# We're in the child now. Set the end of the frame record chain.
mov x29, #0
# Setting x30 to 0 will make the unwinder stop at __start_thread.
diff --git a/libc/arch-arm64/bionic/vfork.S b/libc/arch-arm64/bionic/vfork.S
index dd16349..26ac255 100644
--- a/libc/arch-arm64/bionic/vfork.S
+++ b/libc/arch-arm64/bionic/vfork.S
@@ -72,7 +72,7 @@
mov x8, __NR_clone
svc #0
- cbz x0, .L_exit
+ cbz x0, L(done)
// rc != 0: reset cached_pid_ and vforked_.
str w10, [x9, #20]
@@ -80,7 +80,7 @@
cneg x0, x0, hi
b.hi __set_errno_internal
-.L_exit:
+L(done):
ret
END(vfork)
diff --git a/libc/arch-arm64/string/__memcpy_chk.S b/libc/arch-arm64/string/__memcpy_chk.S
index a8e9e83..c9fc2f7 100644
--- a/libc/arch-arm64/string/__memcpy_chk.S
+++ b/libc/arch-arm64/string/__memcpy_chk.S
@@ -31,10 +31,10 @@
ENTRY(__memcpy_chk)
cmp x2, x3
// Direct b.ls memcpy may not have enough range
- b.hi .L_memcpy_chk_fail
+ b.hi L(__memcpy_chk_fail_trampoline)
b memcpy
-.L_memcpy_chk_fail:
+L(__memcpy_chk_fail_trampoline):
// Preserve for accurate backtrace.
stp x29, x30, [sp, -16]!
.cfi_def_cfa_offset 16
diff --git a/libc/arch-arm64/string/__memset_chk.S b/libc/arch-arm64/string/__memset_chk.S
index e1e29d0..7a105ce 100644
--- a/libc/arch-arm64/string/__memset_chk.S
+++ b/libc/arch-arm64/string/__memset_chk.S
@@ -31,10 +31,10 @@
ENTRY(__memset_chk)
cmp x2, x3
// Direct b.ls memcpy may not have enough range
- b.hi .L_memset_chk_fail
+ b.hi L(__memset_chk_fail_trampoline)
b memset
-.L_memset_chk_fail:
+L(__memset_chk_fail_trampoline):
// Preserve for accurate backtrace.
stp x29, x30, [sp, -16]!
.cfi_def_cfa_offset 16
diff --git a/libc/arch-riscv64/bionic/__bionic_clone.S b/libc/arch-riscv64/bionic/__bionic_clone.S
index 2827857..be386b1 100644
--- a/libc/arch-riscv64/bionic/__bionic_clone.S
+++ b/libc/arch-riscv64/bionic/__bionic_clone.S
@@ -41,19 +41,19 @@
ecall
# Are we the child?
- beqz a0, .L_bc_child
+ beqz a0, L(child)
# Did the clone(2) fail?
- bltz a0, .L_bc_failure
+ bltz a0, L(failure)
# Nope, we're the parent, and our work here is done.
ret
-.L_bc_failure:
+L(failure):
# Set errno if something went wrong.
neg a0, a0
tail __set_errno_internal
-.L_bc_child:
+L(child):
# We're in the child now. Set the end of the frame record chain.
li fp, 0
# Setting ra to 0 will make the unwinder stop at __start_thread.
diff --git a/libc/arch-riscv64/bionic/setjmp.S b/libc/arch-riscv64/bionic/setjmp.S
index 81b1e35..5de1099 100644
--- a/libc/arch-riscv64/bionic/setjmp.S
+++ b/libc/arch-riscv64/bionic/setjmp.S
@@ -205,7 +205,7 @@
// Check the checksum before doing anything.
m_calculate_checksum t0, a0, t1
ld t1, _JB_CHECKSUM(a0)
- bne t0, t1, 3f
+ bne t0, t1, L(checksum_failure)
// Do we need to restore the signal mask?
ld a2, _JB_SIGFLAG(a0)
@@ -290,7 +290,7 @@
mv a0, a1
ret
-3:
+L(checksum_failure):
call __bionic_setjmp_checksum_mismatch
END(siglongjmp)
diff --git a/libc/arch-riscv64/bionic/syscall.S b/libc/arch-riscv64/bionic/syscall.S
index 1a6e60a..ca735c7 100644
--- a/libc/arch-riscv64/bionic/syscall.S
+++ b/libc/arch-riscv64/bionic/syscall.S
@@ -44,10 +44,10 @@
// Did it fail?
li a7, -MAX_ERRNO
- bgtu a0, a7, 1f
-
+ bgtu a0, a7, L(failure)
ret
-1:
+
+L(failure):
neg a0, a0
tail __set_errno_internal
END(syscall)
diff --git a/libc/arch-riscv64/bionic/vfork.S b/libc/arch-riscv64/bionic/vfork.S
index 29ab405..06ebc3e 100644
--- a/libc/arch-riscv64/bionic/vfork.S
+++ b/libc/arch-riscv64/bionic/vfork.S
@@ -51,16 +51,16 @@
ecall
// if (rc == 0) we're the child, and finished...
- beqz a0, .L_success
+ beqz a0, L(success)
// else if (rc != 0): reset cached_pid_ and vforked_...
sw t2, 20(t0)
// ...and work out whether we succeeded or failed.
- bltz a0, .L_failure
-.L_success:
+ bltz a0, L(failure)
+L(success):
ret
-.L_failure:
+L(failure):
neg a0, a0
tail __set_errno_internal
END(vfork)
diff --git a/libc/bionic/gwp_asan_wrappers.cpp b/libc/bionic/gwp_asan_wrappers.cpp
index 251633d..11f7ced 100644
--- a/libc/bionic/gwp_asan_wrappers.cpp
+++ b/libc/bionic/gwp_asan_wrappers.cpp
@@ -258,14 +258,14 @@
options->Backtrace = android_unsafe_frame_pointer_chase;
options->SampleRate = kDefaultSampleRate;
options->MaxSimultaneousAllocations = kDefaultMaxAllocs;
+ options->Recoverable = true;
+ GwpAsanRecoverable = true;
- *process_sample_rate = 1;
- if (mallopt_options.desire == Action::TURN_ON_WITH_SAMPLING) {
+ if (mallopt_options.desire == Action::TURN_ON_WITH_SAMPLING ||
+ mallopt_options.desire == Action::TURN_ON_FOR_APP_SAMPLED_NON_CRASHING) {
*process_sample_rate = kDefaultProcessSampling;
- } else if (mallopt_options.desire == Action::TURN_ON_FOR_APP_SAMPLED_NON_CRASHING) {
- *process_sample_rate = kDefaultProcessSampling;
- options->Recoverable = true;
- GwpAsanRecoverable = true;
+ } else {
+ *process_sample_rate = 1;
}
}
@@ -403,7 +403,7 @@
/* default */ kDefaultMaxAllocs / frequency_multiplier;
}
- bool recoverable = false;
+ bool recoverable = true;
if (GetGwpAsanBoolOption(&recoverable, mallopt_options, kRecoverableSystemSysprop,
kRecoverableAppSysprop, kRecoverableTargetedSyspropPrefix,
kRecoverableEnvVar, "recoverable")) {
diff --git a/libc/include/sys/param.h b/libc/include/sys/param.h
index 79ae067..1c991ae 100644
--- a/libc/include/sys/param.h
+++ b/libc/include/sys/param.h
@@ -41,8 +41,11 @@
/** The unit of `st_blocks` in `struct stat`. */
#define DEV_BSIZE 512
-/** A historical name for PATH_MAX. */
-#define MAXPATHLEN PATH_MAX
+/** A historical name for PATH_MAX. Use PATH_MAX in new code. */
+#define MAXPATHLEN PATH_MAX
+
+/** A historical name for NGROUPS_MAX. Use NGROUPS_MAX in new code. */
+#define NGROUPS NGROUPS_MAX
#define MAXSYMLINKS 8
diff --git a/libc/include/sys/shm.h b/libc/include/sys/shm.h
index fb6f20c..8ab3d9a 100644
--- a/libc/include/sys/shm.h
+++ b/libc/include/sys/shm.h
@@ -36,11 +36,12 @@
#include <sys/cdefs.h>
#include <sys/ipc.h>
#include <sys/types.h>
+#include <unistd.h>
#include <linux/shm.h>
#define shmid_ds shmid64_ds
-#define SHMLBA 4096
+#define SHMLBA getpagesize()
__BEGIN_DECLS
diff --git a/libc/platform/bionic/malloc.h b/libc/platform/bionic/malloc.h
index a06b8ee..ffc6d4a 100644
--- a/libc/platform/bionic/malloc.h
+++ b/libc/platform/bionic/malloc.h
@@ -152,6 +152,10 @@
// mode, and bug reports will be created by debuggerd, however the process
// will recover and continue to function as if the memory safety bug wasn't
// detected.
+ //
+ // In Android 15, this is the same as TURN_ON_WITH_SAMPLING, as GWP-ASan is
+ // only ever used in non-crashing mode (even for platform executables and
+ // system apps).
TURN_ON_FOR_APP_SAMPLED_NON_CRASHING,
};