Fix intercetable function clobber of big struct return
Use x16 (inter-proc register 0) instead of x8 (big return value ptr register).
Test: bionic-unit-tests
Change-Id: Ie3a3bf3121529aac14faa46c9f9f594729d4f851
diff --git a/vdso/include/native_bridge_support/vdso/interceptable_functions.h b/vdso/include/native_bridge_support/vdso/interceptable_functions.h
index 7532471..7af49c3 100644
--- a/vdso/include/native_bridge_support/vdso/interceptable_functions.h
+++ b/vdso/include/native_bridge_support/vdso/interceptable_functions.h
@@ -36,13 +36,13 @@
#elif defined(__aarch64__)
-#define INTERCEPTABLE_STUB_ASM_CALL(name) \
- extern "C" void __attribute((naked)) name() { \
- __asm__ __volatile__("adrp x8, " #name \
- "_var\n" \
- "ldr x8, [x8, :lo12:" #name \
- "_var]\n" \
- "br x8"); \
+#define INTERCEPTABLE_STUB_ASM_CALL(name) \
+ extern "C" void __attribute((naked)) name() { \
+ __asm__ __volatile__("adrp x16, " #name \
+ "_var\n" \
+ "ldr x16, [x16, :lo12:" #name \
+ "_var]\n" \
+ "br x16"); \
}
#else