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.
This commit is contained in:
Joseph Myers 2015-11-12 12:09:24 +00:00
parent 4998ac4341
commit e6459123e4
8 changed files with 18 additions and 0 deletions

View File

@ -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> 2015-11-06 Marcus Shawcroft <marcus.shawcroft@arm.com>
* libc/machine/arm/Makefile.am: Drop MEMCHR_SRC and MEMCHR_OBJ. * libc/machine/arm/Makefile.am: Drop MEMCHR_SRC and MEMCHR_OBJ.

View File

@ -31,6 +31,7 @@
.syntax unified .syntax unified
def_fn strcmp def_fn strcmp
.cfi_sections .debug_frame
.cfi_startproc .cfi_startproc
1: 1:
ldrb r2, [r0], #1 ldrb r2, [r0], #1

View File

@ -45,6 +45,7 @@
.arm .arm
def_fn strcmp def_fn strcmp
.cfi_sections .debug_frame
.cfi_startproc .cfi_startproc
eor tmp1, src1, src2 eor tmp1, src1, src2
tst tmp1, #3 tst tmp1, #3

View File

@ -36,6 +36,7 @@
.eabi_attribute Tag_also_compatible_with, "\006\013" /* ARMv6-M. */ .eabi_attribute Tag_also_compatible_with, "\006\013" /* ARMv6-M. */
.eabi_attribute Tag_ARM_ISA_use, 0 .eabi_attribute Tag_ARM_ISA_use, 0
def_fn strcmp def_fn strcmp
.cfi_sections .debug_frame
.cfi_startproc .cfi_startproc
1: 1:
ldrb r2, [r0] ldrb r2, [r0]

View File

@ -131,6 +131,7 @@ def_fn strcmp
cmpcs r2, r3 cmpcs r2, r3
bne .Lfastpath_exit bne .Lfastpath_exit
#endif #endif
.cfi_sections .debug_frame
.cfi_startproc .cfi_startproc
strd r4, r5, [sp, #-16]! strd r4, r5, [sp, #-16]!
.cfi_def_cfa_offset 16 .cfi_def_cfa_offset 16

View File

@ -53,6 +53,7 @@
.text .text
def_fn strcmp def_fn strcmp
.cfi_sections .debug_frame
.cfi_startproc .cfi_startproc
mov r2, r0 mov r2, r0
push {r4, r5, r6, lr} push {r4, r5, r6, lr}

View File

@ -136,6 +136,7 @@ def_fn strcmp
cmpcs r2, r3 cmpcs r2, r3
bne .Lfastpath_exit bne .Lfastpath_exit
#endif #endif
.cfi_sections .debug_frame
.cfi_startproc .cfi_startproc
strd r4, r5, [sp, #-16]! strd r4, r5, [sp, #-16]!
.cfi_def_cfa_offset 16 .cfi_def_cfa_offset 16

View File

@ -44,6 +44,7 @@
.thumb .thumb
.syntax unified .syntax unified
def_fn strcmp def_fn strcmp
.cfi_sections .debug_frame
.cfi_startproc .cfi_startproc
eor tmp1, src1, src2 eor tmp1, src1, src2
tst tmp1, #3 tst tmp1, #3