This is the mail archive of the
newlib@sourceware.org
mailing list for the newlib project.
Re: Avoid .eh_frame in ARM newlib
- From: Richard Earnshaw <Richard dot Earnshaw at foss dot arm dot com>
- To: Joseph Myers <joseph at codesourcery dot com>, newlib at sourceware dot org
- Date: Thu, 12 Nov 2015 11:17:46 +0000
- Subject: Re: Avoid .eh_frame in ARM newlib
- Authentication-results: sourceware.org; auth=none
- References: <alpine dot DEB dot 2 dot 10 dot 1511112055050 dot 1037 at digraph dot polyomino dot org dot uk>
On 11/11/15 20:56, Joseph Myers wrote:
> ARM newlib has various strcmp implementations that use .cfi_*
> directives to generate unwind information.
>
> The effect of this is that the generated objects 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 loaded into memory at runtime.
>
> This patch fixes this by using .cfi_sections .debug_frame (as in
> glibc) so that the directives generate .debug_frame instead.
> .debug_frame is useful for the debugger, can be removed by strip, and
> is not loaded into memory at runtime.
>
> OK to commit?
>
OK.
R.
> 2015-11-11 Joseph Myers <joseph@codesourcery.com>
>
> * libc/machine/arm/strcmp-arm-tiny.S: Use .cfi_sections
> .debug_frame.
> * libc/machine/arm/strcmp-armv4.S: Likewise.
> * libc/machine/arm/strcmp-armv4t.S: Likewise.
> * libc/machine/arm/strcmp-armv6.S: Likewise.
> * libc/machine/arm/strcmp-armv6m.S: Likewise.
> * libc/machine/arm/strcmp-armv7.S: Likewise.
> * libc/machine/arm/strcmp-armv7m.S: Likewise.
>
> diff --git a/newlib/libc/machine/arm/strcmp-arm-tiny.S b/newlib/libc/machine/arm/strcmp-arm-tiny.S
> index 158133f..6b6bd13 100644
> --- a/newlib/libc/machine/arm/strcmp-arm-tiny.S
> +++ b/newlib/libc/machine/arm/strcmp-arm-tiny.S
> @@ -31,6 +31,7 @@
>
> .syntax unified
> def_fn strcmp
> + .cfi_sections .debug_frame
> .cfi_startproc
> 1:
> ldrb r2, [r0], #1
> diff --git a/newlib/libc/machine/arm/strcmp-armv4.S b/newlib/libc/machine/arm/strcmp-armv4.S
> index b18c3db..05e3df6 100644
> --- a/newlib/libc/machine/arm/strcmp-armv4.S
> +++ b/newlib/libc/machine/arm/strcmp-armv4.S
> @@ -45,6 +45,7 @@
>
> .arm
> def_fn strcmp
> + .cfi_sections .debug_frame
> .cfi_startproc
> eor tmp1, src1, src2
> tst tmp1, #3
> diff --git a/newlib/libc/machine/arm/strcmp-armv4t.S b/newlib/libc/machine/arm/strcmp-armv4t.S
> index 2716b87..d01d840 100644
> --- a/newlib/libc/machine/arm/strcmp-armv4t.S
> +++ b/newlib/libc/machine/arm/strcmp-armv4t.S
> @@ -36,6 +36,7 @@
> .eabi_attribute Tag_also_compatible_with, "\006\013" /* ARMv6-M. */
> .eabi_attribute Tag_ARM_ISA_use, 0
> def_fn strcmp
> + .cfi_sections .debug_frame
> .cfi_startproc
> 1:
> ldrb r2, [r0]
> diff --git a/newlib/libc/machine/arm/strcmp-armv6.S b/newlib/libc/machine/arm/strcmp-armv6.S
> index a557fc5..657c1ee 100644
> --- a/newlib/libc/machine/arm/strcmp-armv6.S
> +++ b/newlib/libc/machine/arm/strcmp-armv6.S
> @@ -131,6 +131,7 @@ def_fn strcmp
> cmpcs r2, r3
> bne .Lfastpath_exit
> #endif
> + .cfi_sections .debug_frame
> .cfi_startproc
> strd r4, r5, [sp, #-16]!
> .cfi_def_cfa_offset 16
> diff --git a/newlib/libc/machine/arm/strcmp-armv6m.S b/newlib/libc/machine/arm/strcmp-armv6m.S
> index 932841d..74f87cb 100644
> --- a/newlib/libc/machine/arm/strcmp-armv6m.S
> +++ b/newlib/libc/machine/arm/strcmp-armv6m.S
> @@ -53,6 +53,7 @@
>
> .text
> def_fn strcmp
> + .cfi_sections .debug_frame
> .cfi_startproc
> mov r2, r0
> push {r4, r5, r6, lr}
> diff --git a/newlib/libc/machine/arm/strcmp-armv7.S b/newlib/libc/machine/arm/strcmp-armv7.S
> index e2c47ff..2f93bfb 100644
> --- a/newlib/libc/machine/arm/strcmp-armv7.S
> +++ b/newlib/libc/machine/arm/strcmp-armv7.S
> @@ -136,6 +136,7 @@ def_fn strcmp
> cmpcs r2, r3
> bne .Lfastpath_exit
> #endif
> + .cfi_sections .debug_frame
> .cfi_startproc
> strd r4, r5, [sp, #-16]!
> .cfi_def_cfa_offset 16
> diff --git a/newlib/libc/machine/arm/strcmp-armv7m.S b/newlib/libc/machine/arm/strcmp-armv7m.S
> index d66d393..7b63049 100644
> --- a/newlib/libc/machine/arm/strcmp-armv7m.S
> +++ b/newlib/libc/machine/arm/strcmp-armv7m.S
> @@ -44,6 +44,7 @@
> .thumb
> .syntax unified
> def_fn strcmp
> + .cfi_sections .debug_frame
> .cfi_startproc
> eor tmp1, src1, src2
> tst tmp1, #3
>