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:
parent
4998ac4341
commit
e6459123e4
|
@ -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.
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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]
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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}
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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
|
||||||
|
|
Loading…
Reference in New Issue