History log of /openbsd-current/libexec/ld.so/aarch64/ldasm.S
Revision (<<< Hide revision tags) (Show revision tags >>>) Date Author Comments
# 1.11 08-Jul-2023 jasper

turn an ifdef'd _dl_printf call into DL_DEB and various whitespace fixes

sure deraadt@


# 1.10 24-Apr-2023 kettenis

Since ENTRY() already inserts a BTI instructions so don't add another one.

ok patrick@


# 1.9 31-Mar-2023 kettenis

Call entry point of the executable through register x17. This allows it
to be a normal C function that starts with "bti c" when BTI contro flow
integretry enforcement is in place. Add "bti c" to _dl_bind_start().

Remove unused _rtld_tlsdesc() function to avoid having to add "bti c" to it.

ok deraadt@


Revision tags: OPENBSD_6_6_BASE OPENBSD_6_7_BASE OPENBSD_6_8_BASE OPENBSD_6_9_BASE OPENBSD_7_0_BASE OPENBSD_7_1_BASE OPENBSD_7_2_BASE OPENBSD_7_3_BASE
# 1.8 10-May-2019 guenther

ld.so boot cleanup support:
- put functions and data which are only used before calling the executable's
start function into their own page-aligned segments for unmapping
(only done on amd64, arm64, armv7, powerpc, and sparc64 so far)
- pass .init_array and .preinit_array functions an addition argument which
is a callback to get a structure which includes a function that frees
the boot text and data
- sometimes delay doing RELRO processing: for a shared-object marked
DF_1_INITFIRST do it after the object's .init_array, for the executable
do it after the .preinit_array
- improve test-ld.so to link against libpthread and trigger its initialization
late
libc changes to use this will come later

ok kettenis@


Revision tags: OPENBSD_6_4_BASE OPENBSD_6_5_BASE
# 1.7 01-Oct-2018 mortimer

Add retguard to arm64 ld.so.
ok kettenis@


# 1.6 24-Jul-2018 kettenis

Fix address calculation for _DYNAMIC. We want to address of _DYNAMIC itself,
not the address of its GOT entry. The current code mixed the high bits of
the GOT entry address with the low bits of the true address. This only
worked by accident for small binaries where _DYNAMIC and its GOT entry
happen to reside on the same page.

ok guenther@, mortimer@


Revision tags: OPENBSD_6_3_BASE
# 1.5 21-Dec-2017 kettenis

Implement missing bits to support lazy binding. Note that the code
deliberately does not save the floating-point argument registers
before calling _dl_bind(). Doing so would force an FPU context switch
upon every function call through the PLT. But since we compile ld.so
with -march=armv8-a+nofp+nosimd this is safe since nothing in the _dl_bind()
codepath uses he FPU registers.

ok guenther@, drahn@


Revision tags: OPENBSD_6_2_BASE
# 1.4 27-Aug-2017 deraadt

Replace heaps of hand-written syscall stubs with a simpler framework
which is largely MI.
ok visa kettenis


# 1.3 04-Jun-2017 patrick

Remove the sigprocmask stub that has long been made unused since
the use of kbind. The code was #if 0'd anyway.

Reminded by miod@


Revision tags: OPENBSD_6_1_BASE
# 1.2 24-Jan-2017 guenther

On fatal errors, kill ourselves with thrkill(0,9,NULL) instead of
simply exiting, via helper functions _dl_die(), _dl_diedie(), and
_dl_oom().

prompted by a complaint from jsing@
ok jsing@ deraadt@


# 1.1 11-Jan-2017 patrick

Add support for AArch64.


# 1.10 24-Apr-2023 kettenis

Since ENTRY() already inserts a BTI instructions so don't add another one.

ok patrick@


# 1.9 31-Mar-2023 kettenis

Call entry point of the executable through register x17. This allows it
to be a normal C function that starts with "bti c" when BTI contro flow
integretry enforcement is in place. Add "bti c" to _dl_bind_start().

Remove unused _rtld_tlsdesc() function to avoid having to add "bti c" to it.

ok deraadt@


Revision tags: OPENBSD_6_6_BASE OPENBSD_6_7_BASE OPENBSD_6_8_BASE OPENBSD_6_9_BASE OPENBSD_7_0_BASE OPENBSD_7_1_BASE OPENBSD_7_2_BASE OPENBSD_7_3_BASE
# 1.8 10-May-2019 guenther

ld.so boot cleanup support:
- put functions and data which are only used before calling the executable's
start function into their own page-aligned segments for unmapping
(only done on amd64, arm64, armv7, powerpc, and sparc64 so far)
- pass .init_array and .preinit_array functions an addition argument which
is a callback to get a structure which includes a function that frees
the boot text and data
- sometimes delay doing RELRO processing: for a shared-object marked
DF_1_INITFIRST do it after the object's .init_array, for the executable
do it after the .preinit_array
- improve test-ld.so to link against libpthread and trigger its initialization
late
libc changes to use this will come later

ok kettenis@


Revision tags: OPENBSD_6_4_BASE OPENBSD_6_5_BASE
# 1.7 01-Oct-2018 mortimer

Add retguard to arm64 ld.so.
ok kettenis@


# 1.6 24-Jul-2018 kettenis

Fix address calculation for _DYNAMIC. We want to address of _DYNAMIC itself,
not the address of its GOT entry. The current code mixed the high bits of
the GOT entry address with the low bits of the true address. This only
worked by accident for small binaries where _DYNAMIC and its GOT entry
happen to reside on the same page.

ok guenther@, mortimer@


Revision tags: OPENBSD_6_3_BASE
# 1.5 21-Dec-2017 kettenis

Implement missing bits to support lazy binding. Note that the code
deliberately does not save the floating-point argument registers
before calling _dl_bind(). Doing so would force an FPU context switch
upon every function call through the PLT. But since we compile ld.so
with -march=armv8-a+nofp+nosimd this is safe since nothing in the _dl_bind()
codepath uses he FPU registers.

ok guenther@, drahn@


Revision tags: OPENBSD_6_2_BASE
# 1.4 27-Aug-2017 deraadt

Replace heaps of hand-written syscall stubs with a simpler framework
which is largely MI.
ok visa kettenis


# 1.3 04-Jun-2017 patrick

Remove the sigprocmask stub that has long been made unused since
the use of kbind. The code was #if 0'd anyway.

Reminded by miod@


Revision tags: OPENBSD_6_1_BASE
# 1.2 24-Jan-2017 guenther

On fatal errors, kill ourselves with thrkill(0,9,NULL) instead of
simply exiting, via helper functions _dl_die(), _dl_diedie(), and
_dl_oom().

prompted by a complaint from jsing@
ok jsing@ deraadt@


# 1.1 11-Jan-2017 patrick

Add support for AArch64.


# 1.9 31-Mar-2023 kettenis

Call entry point of the executable through register x17. This allows it
to be a normal C function that starts with "bti c" when BTI contro flow
integretry enforcement is in place. Add "bti c" to _dl_bind_start().

Remove unused _rtld_tlsdesc() function to avoid having to add "bti c" to it.

ok deraadt@


Revision tags: OPENBSD_6_6_BASE OPENBSD_6_7_BASE OPENBSD_6_8_BASE OPENBSD_6_9_BASE OPENBSD_7_0_BASE OPENBSD_7_1_BASE OPENBSD_7_2_BASE OPENBSD_7_3_BASE
# 1.8 10-May-2019 guenther

ld.so boot cleanup support:
- put functions and data which are only used before calling the executable's
start function into their own page-aligned segments for unmapping
(only done on amd64, arm64, armv7, powerpc, and sparc64 so far)
- pass .init_array and .preinit_array functions an addition argument which
is a callback to get a structure which includes a function that frees
the boot text and data
- sometimes delay doing RELRO processing: for a shared-object marked
DF_1_INITFIRST do it after the object's .init_array, for the executable
do it after the .preinit_array
- improve test-ld.so to link against libpthread and trigger its initialization
late
libc changes to use this will come later

ok kettenis@


Revision tags: OPENBSD_6_4_BASE OPENBSD_6_5_BASE
# 1.7 01-Oct-2018 mortimer

Add retguard to arm64 ld.so.
ok kettenis@


# 1.6 24-Jul-2018 kettenis

Fix address calculation for _DYNAMIC. We want to address of _DYNAMIC itself,
not the address of its GOT entry. The current code mixed the high bits of
the GOT entry address with the low bits of the true address. This only
worked by accident for small binaries where _DYNAMIC and its GOT entry
happen to reside on the same page.

ok guenther@, mortimer@


Revision tags: OPENBSD_6_3_BASE
# 1.5 21-Dec-2017 kettenis

Implement missing bits to support lazy binding. Note that the code
deliberately does not save the floating-point argument registers
before calling _dl_bind(). Doing so would force an FPU context switch
upon every function call through the PLT. But since we compile ld.so
with -march=armv8-a+nofp+nosimd this is safe since nothing in the _dl_bind()
codepath uses he FPU registers.

ok guenther@, drahn@


Revision tags: OPENBSD_6_2_BASE
# 1.4 27-Aug-2017 deraadt

Replace heaps of hand-written syscall stubs with a simpler framework
which is largely MI.
ok visa kettenis


# 1.3 04-Jun-2017 patrick

Remove the sigprocmask stub that has long been made unused since
the use of kbind. The code was #if 0'd anyway.

Reminded by miod@


Revision tags: OPENBSD_6_1_BASE
# 1.2 24-Jan-2017 guenther

On fatal errors, kill ourselves with thrkill(0,9,NULL) instead of
simply exiting, via helper functions _dl_die(), _dl_diedie(), and
_dl_oom().

prompted by a complaint from jsing@
ok jsing@ deraadt@


# 1.1 11-Jan-2017 patrick

Add support for AArch64.


# 1.8 10-May-2019 guenther

ld.so boot cleanup support:
- put functions and data which are only used before calling the executable's
start function into their own page-aligned segments for unmapping
(only done on amd64, arm64, armv7, powerpc, and sparc64 so far)
- pass .init_array and .preinit_array functions an addition argument which
is a callback to get a structure which includes a function that frees
the boot text and data
- sometimes delay doing RELRO processing: for a shared-object marked
DF_1_INITFIRST do it after the object's .init_array, for the executable
do it after the .preinit_array
- improve test-ld.so to link against libpthread and trigger its initialization
late
libc changes to use this will come later

ok kettenis@


Revision tags: OPENBSD_6_4_BASE OPENBSD_6_5_BASE
# 1.7 01-Oct-2018 mortimer

Add retguard to arm64 ld.so.
ok kettenis@


# 1.6 24-Jul-2018 kettenis

Fix address calculation for _DYNAMIC. We want to address of _DYNAMIC itself,
not the address of its GOT entry. The current code mixed the high bits of
the GOT entry address with the low bits of the true address. This only
worked by accident for small binaries where _DYNAMIC and its GOT entry
happen to reside on the same page.

ok guenther@, mortimer@


Revision tags: OPENBSD_6_3_BASE
# 1.5 21-Dec-2017 kettenis

Implement missing bits to support lazy binding. Note that the code
deliberately does not save the floating-point argument registers
before calling _dl_bind(). Doing so would force an FPU context switch
upon every function call through the PLT. But since we compile ld.so
with -march=armv8-a+nofp+nosimd this is safe since nothing in the _dl_bind()
codepath uses he FPU registers.

ok guenther@, drahn@


Revision tags: OPENBSD_6_2_BASE
# 1.4 27-Aug-2017 deraadt

Replace heaps of hand-written syscall stubs with a simpler framework
which is largely MI.
ok visa kettenis


# 1.3 04-Jun-2017 patrick

Remove the sigprocmask stub that has long been made unused since
the use of kbind. The code was #if 0'd anyway.

Reminded by miod@


Revision tags: OPENBSD_6_1_BASE
# 1.2 24-Jan-2017 guenther

On fatal errors, kill ourselves with thrkill(0,9,NULL) instead of
simply exiting, via helper functions _dl_die(), _dl_diedie(), and
_dl_oom().

prompted by a complaint from jsing@
ok jsing@ deraadt@


# 1.1 11-Jan-2017 patrick

Add support for AArch64.


# 1.7 01-Oct-2018 mortimer

Add retguard to arm64 ld.so.
ok kettenis@


# 1.6 24-Jul-2018 kettenis

Fix address calculation for _DYNAMIC. We want to address of _DYNAMIC itself,
not the address of its GOT entry. The current code mixed the high bits of
the GOT entry address with the low bits of the true address. This only
worked by accident for small binaries where _DYNAMIC and its GOT entry
happen to reside on the same page.

ok guenther@, mortimer@


Revision tags: OPENBSD_6_3_BASE
# 1.5 21-Dec-2017 kettenis

Implement missing bits to support lazy binding. Note that the code
deliberately does not save the floating-point argument registers
before calling _dl_bind(). Doing so would force an FPU context switch
upon every function call through the PLT. But since we compile ld.so
with -march=armv8-a+nofp+nosimd this is safe since nothing in the _dl_bind()
codepath uses he FPU registers.

ok guenther@, drahn@


Revision tags: OPENBSD_6_2_BASE
# 1.4 27-Aug-2017 deraadt

Replace heaps of hand-written syscall stubs with a simpler framework
which is largely MI.
ok visa kettenis


# 1.3 04-Jun-2017 patrick

Remove the sigprocmask stub that has long been made unused since
the use of kbind. The code was #if 0'd anyway.

Reminded by miod@


Revision tags: OPENBSD_6_1_BASE
# 1.2 24-Jan-2017 guenther

On fatal errors, kill ourselves with thrkill(0,9,NULL) instead of
simply exiting, via helper functions _dl_die(), _dl_diedie(), and
_dl_oom().

prompted by a complaint from jsing@
ok jsing@ deraadt@


# 1.1 11-Jan-2017 patrick

Add support for AArch64.


# 1.6 24-Jul-2018 kettenis

Fix address calculation for _DYNAMIC. We want to address of _DYNAMIC itself,
not the address of its GOT entry. The current code mixed the high bits of
the GOT entry address with the low bits of the true address. This only
worked by accident for small binaries where _DYNAMIC and its GOT entry
happen to reside on the same page.

ok guenther@, mortimer@


Revision tags: OPENBSD_6_3_BASE
# 1.5 21-Dec-2017 kettenis

Implement missing bits to support lazy binding. Note that the code
deliberately does not save the floating-point argument registers
before calling _dl_bind(). Doing so would force an FPU context switch
upon every function call through the PLT. But since we compile ld.so
with -march=armv8-a+nofp+nosimd this is safe since nothing in the _dl_bind()
codepath uses he FPU registers.

ok guenther@, drahn@


Revision tags: OPENBSD_6_2_BASE
# 1.4 27-Aug-2017 deraadt

Replace heaps of hand-written syscall stubs with a simpler framework
which is largely MI.
ok visa kettenis


# 1.3 04-Jun-2017 patrick

Remove the sigprocmask stub that has long been made unused since
the use of kbind. The code was #if 0'd anyway.

Reminded by miod@


Revision tags: OPENBSD_6_1_BASE
# 1.2 24-Jan-2017 guenther

On fatal errors, kill ourselves with thrkill(0,9,NULL) instead of
simply exiting, via helper functions _dl_die(), _dl_diedie(), and
_dl_oom().

prompted by a complaint from jsing@
ok jsing@ deraadt@


# 1.1 11-Jan-2017 patrick

Add support for AArch64.


# 1.5 21-Dec-2017 kettenis

Implement missing bits to support lazy binding. Note that the code
deliberately does not save the floating-point argument registers
before calling _dl_bind(). Doing so would force an FPU context switch
upon every function call through the PLT. But since we compile ld.so
with -march=armv8-a+nofp+nosimd this is safe since nothing in the _dl_bind()
codepath uses he FPU registers.

ok guenther@, drahn@


Revision tags: OPENBSD_6_2_BASE
# 1.4 27-Aug-2017 deraadt

Replace heaps of hand-written syscall stubs with a simpler framework
which is largely MI.
ok visa kettenis


# 1.3 04-Jun-2017 patrick

Remove the sigprocmask stub that has long been made unused since
the use of kbind. The code was #if 0'd anyway.

Reminded by miod@


Revision tags: OPENBSD_6_1_BASE
# 1.2 24-Jan-2017 guenther

On fatal errors, kill ourselves with thrkill(0,9,NULL) instead of
simply exiting, via helper functions _dl_die(), _dl_diedie(), and
_dl_oom().

prompted by a complaint from jsing@
ok jsing@ deraadt@


# 1.1 11-Jan-2017 patrick

Add support for AArch64.