Add comments about why "call" instead of "jump" is used.
Related CL: https://android-review.googlesource.com/#/c/38651
Change-Id: I425e06f08fda90501a686c7e437d4e70fc1e4a1b
diff --git a/ndk/platforms/android-3/arch-arm/src/crtbegin_dynamic.S b/ndk/platforms/android-3/arch-arm/src/crtbegin_dynamic.S
index ec6d482..c7c9f6d 100644
--- a/ndk/platforms/android-3/arch-arm/src/crtbegin_dynamic.S
+++ b/ndk/platforms/android-3/arch-arm/src/crtbegin_dynamic.S
@@ -53,6 +53,7 @@
ldr r2, =main
adr r3, 1f
ldr r4, =__libc_init
+# Use blx intead of bx so stack unwinding past __libc_init can terminate at _start
blx r4
mov r0, #0
bx r0
diff --git a/ndk/platforms/android-3/arch-arm/src/crtbegin_static.S b/ndk/platforms/android-3/arch-arm/src/crtbegin_static.S
index d9d12a7..62ed4bb 100644
--- a/ndk/platforms/android-3/arch-arm/src/crtbegin_static.S
+++ b/ndk/platforms/android-3/arch-arm/src/crtbegin_static.S
@@ -53,6 +53,7 @@
ldr r2, =main
adr r3, 1f
ldr r4, =__libc_init
+# Use blx intead of bx so stack unwinding past __libc_init can terminate at _start
blx r4
mov r0, #0
bx r0
diff --git a/ndk/platforms/android-9/arch-mips/src/crtbegin_dynamic.S b/ndk/platforms/android-9/arch-mips/src/crtbegin_dynamic.S
index 28f8fd5..be42fb2 100644
--- a/ndk/platforms/android-9/arch-mips/src/crtbegin_dynamic.S
+++ b/ndk/platforms/android-9/arch-mips/src/crtbegin_dynamic.S
@@ -64,6 +64,7 @@
la $a3, 1f
subu $sp, 32
la $t9, __libc_init
+# Use jalr intead of jr so stack unwinding past __libc_init can terminate at _start
jalr $t9
move $t9, $0
j $t9
diff --git a/ndk/platforms/android-9/arch-mips/src/crtbegin_static.S b/ndk/platforms/android-9/arch-mips/src/crtbegin_static.S
index 893863c..58bab82 100644
--- a/ndk/platforms/android-9/arch-mips/src/crtbegin_static.S
+++ b/ndk/platforms/android-9/arch-mips/src/crtbegin_static.S
@@ -64,6 +64,7 @@
la $a3, 1f
subu $sp, 32
la $t9, __libc_init
+# Use jalr intead of jr so stack unwinding past __libc_init can terminate at _start
jalr $t9
move $t9, $0
j $t9