diff options
author | Joseph Myers <joseph@codesourcery.com> | 2015-11-12 15:09:24 +0300 |
---|---|---|
committer | Joseph Myers <joseph@codesourcery.com> | 2015-11-12 15:09:24 +0300 |
commit | e6459123e497409a9e3d845c39829a9602ba55a4 (patch) | |
tree | 02b10e8d0685cc199901696efeb886532f22042c /newlib | |
parent | 4998ac43411001a4757537b0312443493cf69112 (diff) |
Avoid .eh_frame in ARM newlib.
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.
* 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.
Diffstat (limited to 'newlib')
-rw-r--r-- | newlib/ChangeLog | 11 | ||||
-rw-r--r-- | newlib/libc/machine/arm/strcmp-arm-tiny.S | 1 | ||||
-rw-r--r-- | newlib/libc/machine/arm/strcmp-armv4.S | 1 | ||||
-rw-r--r-- | newlib/libc/machine/arm/strcmp-armv4t.S | 1 | ||||
-rw-r--r-- | newlib/libc/machine/arm/strcmp-armv6.S | 1 | ||||
-rw-r--r-- | newlib/libc/machine/arm/strcmp-armv6m.S | 1 | ||||
-rw-r--r-- | newlib/libc/machine/arm/strcmp-armv7.S | 1 | ||||
-rw-r--r-- | newlib/libc/machine/arm/strcmp-armv7m.S | 1 |
8 files changed, 18 insertions, 0 deletions
diff --git a/newlib/ChangeLog b/newlib/ChangeLog index c38588b4b..9ae8c8db8 100644 --- a/newlib/ChangeLog +++ b/newlib/ChangeLog @@ -1,3 +1,14 @@ +2015-11-12 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. + 2015-11-06 Marcus Shawcroft <marcus.shawcroft@arm.com> * libc/machine/arm/Makefile.am: Drop MEMCHR_SRC and MEMCHR_OBJ. diff --git a/newlib/libc/machine/arm/strcmp-arm-tiny.S b/newlib/libc/machine/arm/strcmp-arm-tiny.S index 158133f4e..6b6bd13cc 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 b18c3dbe0..05e3df675 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 2716b87d2..d01d840f4 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 a557fc57e..657c1eeb2 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 932841d19..74f87cba2 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 e2c47ff20..2f93bfb73 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 d66d393fb..7b6304925 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 |