aboutsummaryrefslogtreecommitdiff
path: root/libexec/rtld-elf/aarch64/rtld_start.S
diff options
context:
space:
mode:
Diffstat (limited to 'libexec/rtld-elf/aarch64/rtld_start.S')
-rw-r--r--libexec/rtld-elf/aarch64/rtld_start.S14
1 files changed, 8 insertions, 6 deletions
diff --git a/libexec/rtld-elf/aarch64/rtld_start.S b/libexec/rtld-elf/aarch64/rtld_start.S
index e9d25f2ab170..8de3e021d567 100644
--- a/libexec/rtld-elf/aarch64/rtld_start.S
+++ b/libexec/rtld-elf/aarch64/rtld_start.S
@@ -28,23 +28,23 @@
*/
#include <machine/asm.h>
-__FBSDID("$FreeBSD$");
+#include <sys/elf_common.h>
ENTRY(.rtld_start)
+ .cfi_undefined x30
mov x19, x0 /* Put ps_strings in a callee-saved register */
- mov x20, sp /* And the stack pointer */
sub sp, sp, #16 /* Make room for obj_main & exit proc */
+ .cfi_adjust_cfa_offset 16
mov x1, sp /* exit_proc */
add x2, x1, #8 /* obj_main */
bl _rtld /* Call the loader */
mov x8, x0 /* Backup the entry point */
+ ldp x2, x1, [sp], #16 /* Load cleanup, obj_main */
+ .cfi_adjust_cfa_offset 0
- ldr x2, [sp] /* Load cleanup */
- ldr x1, [sp, #8] /* Load obj_main */
mov x0, x19 /* Restore ps_strings */
- mov sp, x20 /* Restore the stack pointer */
br x8 /* Jump to the entry point */
END(.rtld_start)
@@ -194,7 +194,7 @@ ENTRY(_rtld_tlsdesc_dynamic)
*
*/
1:
- /* Save all interger registers */
+ /* Save all integer registers */
stp x29, x30, [sp, #-(8 * 16)]!
.cfi_adjust_cfa_offset 8 * 16
.cfi_rel_offset x29, 0
@@ -251,3 +251,5 @@ ENTRY(_rtld_tlsdesc_dynamic)
.cfi_adjust_cfa_offset -2 * 16
ret
END(_rtld_tlsdesc_dynamic)
+
+GNU_PROPERTY_AARCH64_FEATURE_1_NOTE(GNU_PROPERTY_AARCH64_FEATURE_1_VAL)