aboutsummaryrefslogtreecommitdiff
path: root/libexec/rtld-elf
diff options
context:
space:
mode:
authorConrad Meyer <cem@FreeBSD.org>2020-12-05 00:33:28 +0000
committerConrad Meyer <cem@FreeBSD.org>2020-12-05 00:33:28 +0000
commit78599c32efed3247d165302a1fbe8d9203e38974 (patch)
treeaaac03f469bc1e5e6145584338bb8ef7e3d55fd2 /libexec/rtld-elf
parentac4dd4cd957016b9c5b7897f3c70efdd4e306407 (diff)
downloadsrc-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.S9
-rw-r--r--libexec/rtld-elf/powerpc/rtld_start.S6
-rw-r--r--libexec/rtld-elf/powerpc64/rtld_start.S2
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