[PATCH] libc/arm: add missing .cfi_sections
Clément Chigot
chigot@adacore.com
Wed Jul 10 07:44:37 GMT 2024
On Tue, Jul 9, 2024 at 5:37 PM Richard Earnshaw (lists)
<Richard.Earnshaw@arm.com> wrote:
>
> I've pushed this. Sorry for the delay: there were some things I needed to check and it then fell off my radar.
No worries ! Thanks a lot for the push.
Clément
> R.
>
> On 09/07/2024 11:49, Corinna Vinschen wrote:
> > @Richard, any input from arm.com?
> >
> >
> > Thanks,
> > Corinna
> >
> >
> > On Jul 4 13:44, Clément Chigot wrote:
> >> On Mon, Jun 10, 2024 at 2:38 PM Clément Chigot <chigot@adacore.com> wrote:
> >>>
> >>> The modifications added by the series "M-profile PACBTI-enablement"
> >>> (see 9d6b00511e50a54d2472d11f75f7c0f2b4a98b24) have introduced a couple
> >>> of .cfi_* instructions.
> >>>
> >>> Like for e6459123e497409a9e3d845c39829a9602ba55a4, 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.
> >>
> >> Gentle ping
> >>
> >>> ---
> >>> newlib/libc/machine/arm/aeabi_memmove-thumb2.S | 1 +
> >>> newlib/libc/machine/arm/aeabi_memset-thumb2.S | 1 +
> >>> newlib/libc/machine/arm/memchr.S | 1 +
> >>> newlib/libc/machine/arm/memcpy-armv7m.S | 1 +
> >>> newlib/libc/machine/arm/setjmp.S | 1 +
> >>> newlib/libc/machine/arm/strlen-armv7.S | 1 +
> >>> newlib/libc/machine/arm/strlen-thumb2-Os.S | 1 +
> >>> 7 files changed, 7 insertions(+)
> >>>
> >>> diff --git a/newlib/libc/machine/arm/aeabi_memmove-thumb2.S b/newlib/libc/machine/arm/aeabi_memmove-thumb2.S
> >>> index 20ca993e5..3018e7412 100644
> >>> --- a/newlib/libc/machine/arm/aeabi_memmove-thumb2.S
> >>> +++ b/newlib/libc/machine/arm/aeabi_memmove-thumb2.S
> >>> @@ -36,6 +36,7 @@
> >>> ASM_ALIAS __aeabi_memmove8 __aeabi_memmove
> >>> __aeabi_memmove:
> >>> .fnstart
> >>> + .cfi_sections .debug_frame
> >>> .cfi_startproc
> >>> prologue 4
> >>> cmp r0, r1
> >>> diff --git a/newlib/libc/machine/arm/aeabi_memset-thumb2.S b/newlib/libc/machine/arm/aeabi_memset-thumb2.S
> >>> index 6b77d3820..a1b8f0532 100644
> >>> --- a/newlib/libc/machine/arm/aeabi_memset-thumb2.S
> >>> +++ b/newlib/libc/machine/arm/aeabi_memset-thumb2.S
> >>> @@ -33,6 +33,7 @@
> >>> .global __aeabi_memset
> >>> .type __aeabi_memset, %function
> >>> .fnstart
> >>> + .cfi_sections .debug_frame
> >>> .cfi_startproc
> >>> ASM_ALIAS __aeabi_memset4 __aeabi_memset
> >>> ASM_ALIAS __aeabi_memset8 __aeabi_memset
> >>> diff --git a/newlib/libc/machine/arm/memchr.S b/newlib/libc/machine/arm/memchr.S
> >>> index d13ef8d65..f0b3650aa 100644
> >>> --- a/newlib/libc/machine/arm/memchr.S
> >>> +++ b/newlib/libc/machine/arm/memchr.S
> >>> @@ -293,6 +293,7 @@ memchr:
> >>> .global memchr
> >>> .type memchr,%function
> >>> .fnstart
> >>> + .cfi_sections .debug_frame
> >>> .cfi_startproc
> >>> memchr:
> >>> @ r0 = start of memory to scan
> >>> diff --git a/newlib/libc/machine/arm/memcpy-armv7m.S b/newlib/libc/machine/arm/memcpy-armv7m.S
> >>> index ec1ad6485..13ffdb343 100644
> >>> --- a/newlib/libc/machine/arm/memcpy-armv7m.S
> >>> +++ b/newlib/libc/machine/arm/memcpy-armv7m.S
> >>> @@ -88,6 +88,7 @@
> >>> .thumb
> >>> .thumb_func
> >>> .fnstart
> >>> + .cfi_sections .debug_frame
> >>> .cfi_startproc
> >>> .type memcpy, %function
> >>> memcpy:
> >>> diff --git a/newlib/libc/machine/arm/setjmp.S b/newlib/libc/machine/arm/setjmp.S
> >>> index 5e5952296..0070f17cd 100644
> >>> --- a/newlib/libc/machine/arm/setjmp.S
> >>> +++ b/newlib/libc/machine/arm/setjmp.S
> >>> @@ -183,6 +183,7 @@ SYM (.arm_start_of.\name):
> >>> MODE
> >>> .globl SYM (\name)
> >>> .fnstart
> >>> + .cfi_sections .debug_frame
> >>> .cfi_startproc
> >>> TYPE (\name)
> >>> SYM (\name):
> >>> diff --git a/newlib/libc/machine/arm/strlen-armv7.S b/newlib/libc/machine/arm/strlen-armv7.S
> >>> index 6aa122c07..1c2b5c532 100644
> >>> --- a/newlib/libc/machine/arm/strlen-armv7.S
> >>> +++ b/newlib/libc/machine/arm/strlen-armv7.S
> >>> @@ -106,6 +106,7 @@
> >>>
> >>> def_fn strlen p2align=6
> >>> .fnstart
> >>> + .cfi_sections .debug_frame
> >>> .cfi_startproc
> >>> prologue 4 5 push_ip=HAVE_PAC_LEAF
> >>> pld [srcin, #0]
> >>> diff --git a/newlib/libc/machine/arm/strlen-thumb2-Os.S b/newlib/libc/machine/arm/strlen-thumb2-Os.S
> >>> index 4adbc61d2..b8a615a15 100644
> >>> --- a/newlib/libc/machine/arm/strlen-thumb2-Os.S
> >>> +++ b/newlib/libc/machine/arm/strlen-thumb2-Os.S
> >>> @@ -47,6 +47,7 @@
> >>>
> >>> def_fn strlen p2align=1
> >>> .fnstart
> >>> + .cfi_sections .debug_frame
> >>> .cfi_startproc
> >>> prologue
> >>> mov r3, r0
> >>> --
> >>> 2.25.1
> >>>
> >
>
More information about the Newlib
mailing list