Re: [PATCH] libc/arm: add missing .cfi_sections
Clément Chigot <[email protected]>
| Newsgroups | gmane.comp.lib.newlib |
|---|---|
| Message-ID | <CAJ307EiaYLvtO4XoF6-fWqswOhRctNGS=WuZAwRdTCB=ff+kiA@mail.gmail.com> |
On Tue, Jul 9, 2024 at 5:37 PM Richard Earnshaw (lists) <[email protected]> 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 <[email protected]> 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 > >>> > > >