git: 86c63225ea21 - main - rtld: Microoptimize rtld_start on i386
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
Date: Tue, 11 Jul 2023 12:12:17 UTC
The branch main has been updated by dchagin: URL: https://cgit.FreeBSD.org/src/commit/?id=86c63225ea21f2b4c0926bde9d9d4da1ec891b06 commit 86c63225ea21f2b4c0926bde9d9d4da1ec891b06 Author: Dmitry Chagin <dchagin@FreeBSD.org> AuthorDate: 2023-07-11 12:10:08 +0000 Commit: Dmitry Chagin <dchagin@FreeBSD.org> CommitDate: 2023-07-11 12:10:08 +0000 rtld: Microoptimize rtld_start on i386 Initial stack pointer is preserved in calle-saved %esi, use it bellow to pass initial stack pointer to _rtld(). Reviewed by: kib Differential Revision: https://reviews.freebsd.org/D40950 --- libexec/rtld-elf/i386/rtld_start.S | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/libexec/rtld-elf/i386/rtld_start.S b/libexec/rtld-elf/i386/rtld_start.S index 87dca0e5b66b..6dbae220d89c 100644 --- a/libexec/rtld-elf/i386/rtld_start.S +++ b/libexec/rtld-elf/i386/rtld_start.S @@ -31,7 +31,6 @@ .type .rtld_start,@function .rtld_start: xorl %ebp,%ebp # Clear frame pointer for good form - movl %esp,%eax # Save initial stack pointer movl %esp,%esi # Save initial stack pointer andl $0xfffffff0,%esp # Align stack pointer subl $16,%esp # A place to store exit procedure addr @@ -41,7 +40,7 @@ subl $4,%esp # Keep stack aligned pushl %ecx # Pass address of obj_main pushl %ebx # Pass address of exit proc - pushl %eax # Pass initial stack pointer to rtld + pushl %esi # Pass initial stack pointer to rtld call _rtld # Call rtld(sp); returns entry point addl $16,%esp # Remove arguments from stack popl %edx # Get exit procedure address