libc/arm: add missing .cfi_sections

The modifications added by the series "M-profile PACBTI-enablement"
(see 9d6b00511e) have introduced a couple
of .cfi_* instructions.

Like for e6459123e4, these instructions
create object files which contain .eh_frame sections.  However, ARM uses
its own unwind info format, not .eh_frame, which is generated by
ARM-specific directives, not .cfi_*. The .eh_frame sections are useless,
but also not removed by strip and may be harmful with some linker
scripts.

Adding ".cfi_sections .debug_frame" (as in glibc) moves the generated
directives towards .debug_frame instead of .eh_frame. Making them easier
to handle.

            * libc/machine/arm/aeabi_memmove-thumb2.S: Use .cfi_sections
            .debug_frame.
            * libc/machine/arm/aeabi_memset-thumb2.S: Likewise.
            * libc/machine/arm/memchr.S: Likewise.
            * libc/machine/arm/memcpy-armv7m.S: Likewise.
            * libc/machine/arm/setjmp.S: Likewise.
            * libc/machine/arm/strlen-armv7.S: Likewise.
            * libc/machine/arm/strlen-thumb2-Os.S: Likewise.
This commit is contained in:
Clément Chigot 2024-06-10 14:37:57 +02:00 committed by Richard Earnshaw
parent 80550ffc2e
commit a7b62e886e
7 changed files with 7 additions and 0 deletions

View File

@ -36,6 +36,7 @@
ASM_ALIAS __aeabi_memmove8 __aeabi_memmove ASM_ALIAS __aeabi_memmove8 __aeabi_memmove
__aeabi_memmove: __aeabi_memmove:
.fnstart .fnstart
.cfi_sections .debug_frame
.cfi_startproc .cfi_startproc
prologue 4 prologue 4
cmp r0, r1 cmp r0, r1

View File

@ -33,6 +33,7 @@
.global __aeabi_memset .global __aeabi_memset
.type __aeabi_memset, %function .type __aeabi_memset, %function
.fnstart .fnstart
.cfi_sections .debug_frame
.cfi_startproc .cfi_startproc
ASM_ALIAS __aeabi_memset4 __aeabi_memset ASM_ALIAS __aeabi_memset4 __aeabi_memset
ASM_ALIAS __aeabi_memset8 __aeabi_memset ASM_ALIAS __aeabi_memset8 __aeabi_memset

View File

@ -293,6 +293,7 @@ memchr:
.global memchr .global memchr
.type memchr,%function .type memchr,%function
.fnstart .fnstart
.cfi_sections .debug_frame
.cfi_startproc .cfi_startproc
memchr: memchr:
@ r0 = start of memory to scan @ r0 = start of memory to scan

View File

@ -88,6 +88,7 @@
.thumb .thumb
.thumb_func .thumb_func
.fnstart .fnstart
.cfi_sections .debug_frame
.cfi_startproc .cfi_startproc
.type memcpy, %function .type memcpy, %function
memcpy: memcpy:

View File

@ -183,6 +183,7 @@ SYM (.arm_start_of.\name):
MODE MODE
.globl SYM (\name) .globl SYM (\name)
.fnstart .fnstart
.cfi_sections .debug_frame
.cfi_startproc .cfi_startproc
TYPE (\name) TYPE (\name)
SYM (\name): SYM (\name):

View File

@ -106,6 +106,7 @@
def_fn strlen p2align=6 def_fn strlen p2align=6
.fnstart .fnstart
.cfi_sections .debug_frame
.cfi_startproc .cfi_startproc
prologue 4 5 push_ip=HAVE_PAC_LEAF prologue 4 5 push_ip=HAVE_PAC_LEAF
pld [srcin, #0] pld [srcin, #0]

View File

@ -47,6 +47,7 @@
def_fn strlen p2align=1 def_fn strlen p2align=1
.fnstart .fnstart
.cfi_sections .debug_frame
.cfi_startproc .cfi_startproc
prologue prologue
mov r3, r0 mov r3, r0