[PATCH] libc/arm: add missing .cfi_sections

Clément Chigot <[email protected]>
Newsgroups gmane.comp.lib.newlib
Message-ID <[email protected]>
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(+)

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
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.