libc/arm: add missing .cfi_sections

Message ID 20240610123757.1508964-1-chigot@adacore.com
State New
Headers
Series libc/arm: add missing .cfi_sections |

Commit Message

Clément Chigot June 10, 2024, 12:37 p.m. UTC
  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.
---
 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(+)
  

Comments

Clément Chigot July 4, 2024, 11:44 a.m. UTC | #1
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
>
  
Corinna Vinschen July 9, 2024, 10:49 a.m. UTC | #2
@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
> >
  
Richard Earnshaw (lists) July 9, 2024, 3:37 p.m. UTC | #3
I've pushed this.  Sorry for the delay: there were some things I needed to check and it then fell off my radar.

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
>>>
>
  
Clément Chigot July 10, 2024, 7:44 a.m. UTC | #4
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
> >>>
> >
>
  

Patch

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