diff options
author | Conrad Meyer <cem@FreeBSD.org> | 2020-12-05 00:33:28 +0000 |
---|---|---|
committer | Conrad Meyer <cem@FreeBSD.org> | 2020-12-05 00:33:28 +0000 |
commit | 78599c32efed3247d165302a1fbe8d9203e38974 (patch) | |
tree | aaac03f469bc1e5e6145584338bb8ef7e3d55fd2 /libexec/rtld-elf | |
parent | ac4dd4cd957016b9c5b7897f3c70efdd4e306407 (diff) | |
download | src-78599c32efed3247d165302a1fbe8d9203e38974.tar.gz src-78599c32efed3247d165302a1fbe8d9203e38974.zip |
Add CFI start/end proc directives to arm64, i386, and ppc
Follow-up to r353959 and r368070: do the same for other architectures.
arm32 already seems to use its own .fnstart/.fnend directives, which
appear to be ARM-specific variants of the same thing. Likewise, MIPS
uses .frame directives.
Reviewed by: arichardson
Differential Revision: https://reviews.freebsd.org/D27387
Notes
Notes:
svn path=/head/; revision=368354
Diffstat (limited to 'libexec/rtld-elf')
-rw-r--r-- | libexec/rtld-elf/aarch64/rtld_start.S | 9 | ||||
-rw-r--r-- | libexec/rtld-elf/powerpc/rtld_start.S | 6 | ||||
-rw-r--r-- | libexec/rtld-elf/powerpc64/rtld_start.S | 2 |
3 files changed, 8 insertions, 9 deletions
diff --git a/libexec/rtld-elf/aarch64/rtld_start.S b/libexec/rtld-elf/aarch64/rtld_start.S index e6804ba0b928..e9d25f2ab170 100644 --- a/libexec/rtld-elf/aarch64/rtld_start.S +++ b/libexec/rtld-elf/aarch64/rtld_start.S @@ -55,7 +55,6 @@ END(.rtld_start) * x17 = &_rtld_bind_start */ ENTRY(_rtld_bind_start) - .cfi_startproc mov x17, sp /* Save frame pointer and SP */ @@ -114,7 +113,6 @@ ENTRY(_rtld_bind_start) /* Call into the correct function */ br x16 - .cfi_endproc END(_rtld_bind_start) /* @@ -128,10 +126,8 @@ END(_rtld_bind_start) * Resolver function for TLS symbols resolved at load time */ ENTRY(_rtld_tlsdesc_static) - .cfi_startproc ldr x0, [x0, #8] ret - .cfi_endproc END(_rtld_tlsdesc_static) /* @@ -140,7 +136,6 @@ END(_rtld_tlsdesc_static) * Resolver function for weak and undefined TLS symbols */ ENTRY(_rtld_tlsdesc_undef) - .cfi_startproc str x1, [sp, #-16]! .cfi_adjust_cfa_offset 16 @@ -150,7 +145,6 @@ ENTRY(_rtld_tlsdesc_undef) ldr x1, [sp], #16 .cfi_adjust_cfa_offset -16 - .cfi_endproc ret END(_rtld_tlsdesc_undef) @@ -160,8 +154,6 @@ END(_rtld_tlsdesc_undef) * Resolver function for TLS symbols from dlopen() */ ENTRY(_rtld_tlsdesc_dynamic) - .cfi_startproc - /* Save registers used in fast path */ stp x1, x2, [sp, #(-2 * 16)]! stp x3, x4, [sp, #(1 * 16)] @@ -257,6 +249,5 @@ ENTRY(_rtld_tlsdesc_dynamic) ldp x3, x4, [sp, #16] ldp x1, x2, [sp], #(2 * 16) .cfi_adjust_cfa_offset -2 * 16 - .cfi_endproc ret END(_rtld_tlsdesc_dynamic) diff --git a/libexec/rtld-elf/powerpc/rtld_start.S b/libexec/rtld-elf/powerpc/rtld_start.S index 36f795bc30fe..20f3001a021a 100644 --- a/libexec/rtld-elf/powerpc/rtld_start.S +++ b/libexec/rtld-elf/powerpc/rtld_start.S @@ -101,6 +101,7 @@ _ENTRY(.rtld_start) li %r0,1 /* _exit() */ sc +_END(.rtld_start) #ifdef __SPE__ /* stack space for 30 GPRs + SPEFSCR/ACC/lr/cr */ @@ -142,6 +143,7 @@ _ENTRY(_rtld_bind_secureplt_start) ori %r11,%r11,0x15555556@l mulhwu %r11,%r11,%r0 # get high half of multiplication b 1f +_END(_rtld_bind_secureplt_start) /* * _rtld_bind_start() @@ -264,6 +266,7 @@ _ENTRY(_rtld_bind_start) addi %r1,%r1,STACK_SIZE # restore stack bctr # jump to target +_END(_rtld_bind_start) /* @@ -284,6 +287,7 @@ _ENTRY(_rtld_powerpc_pltlongresolve) subf %r11,%r12,%r11 # reloff li %r12,2 srw %r11,%r11,%r12 # index = reloff/sizeof(Elf_Addr) +_END(_rtld_powerpc_pltlongresolve) _ENTRY(_rtld_powerpc_pltresolve) lis %r12,0 # lis 12,_rtld_bind_start@ha addi %r12,%r12,0 # addi 12,12,_rtld_bind_start@l @@ -291,6 +295,7 @@ _ENTRY(_rtld_powerpc_pltresolve) lis %r12,0 # lis 12,obj@ha addi %r12,%r12,0 # addi 12,12,obj@l bctr +_END(_rtld_powerpc_pltresolve) /* * _rtld_powerpc_pltcall() @@ -311,5 +316,6 @@ _ENTRY(_rtld_powerpc_pltcall) lwz %r11,0(%r11) # lwz 11,jmptab@l(11) mtctr %r11 bctr # (*jmptab[index])() +_END(_rtld_powerpc_pltcall) .section .note.GNU-stack,"",%progbits diff --git a/libexec/rtld-elf/powerpc64/rtld_start.S b/libexec/rtld-elf/powerpc64/rtld_start.S index 2d7fb8980862..fd4a7bdca17d 100644 --- a/libexec/rtld-elf/powerpc64/rtld_start.S +++ b/libexec/rtld-elf/powerpc64/rtld_start.S @@ -113,6 +113,7 @@ _ENTRY(_rtld_start) li %r0,1 /* _exit() */ sc +_END(_rtld_start) /* * _rtld_bind_start() @@ -175,5 +176,6 @@ _ENTRY(_rtld_bind_start) mtlr %r0 bctr # jump to target +_END(_rtld_bind_start) .section .note.GNU-stack,"",%progbits |