diff options
author | cbaylis <cbaylis@138bc75d-0d04-0410-961f-82ee72b054a4> | 2014-06-18 15:43:35 +0000 |
---|---|---|
committer | cbaylis <cbaylis@138bc75d-0d04-0410-961f-82ee72b054a4> | 2014-06-18 15:43:35 +0000 |
commit | 5d2a30dc5edc556ad4f0b6d3068acba95ea35967 (patch) | |
tree | 5e3544b06eb5a731a2cba076460f91c584acee8c /libgcc | |
parent | 64431ec189476c25bd1d491bf9125e713f66cdc6 (diff) | |
download | gcc-5d2a30dc5edc556ad4f0b6d3068acba95ea35967.tar.gz |
2014-06-18 Charles Baylis <charles.baylis@linaro.org>
* config/arm/bpabi.S (__aeabi_ldivmod, __aeabi_uldivmod,
push_for_divide, pop_for_divide): Use .cfi_* directives for DWARF
annotations. Fix DWARF information.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@211795 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'libgcc')
-rw-r--r-- | libgcc/config/arm/bpabi.S | 21 |
1 files changed, 16 insertions, 5 deletions
diff --git a/libgcc/config/arm/bpabi.S b/libgcc/config/arm/bpabi.S index c0441673029..959ecb157be 100644 --- a/libgcc/config/arm/bpabi.S +++ b/libgcc/config/arm/bpabi.S @@ -22,6 +22,8 @@ see the files COPYING3 and COPYING.RUNTIME respectively. If not, see <http://www.gnu.org/licenses/>. */ + .cfi_sections .debug_frame + #ifdef __ARM_EABI__ /* Some attributes that are common to all routines in this file. */ /* Tag_ABI_align_needed: This code does not require 8-byte @@ -145,7 +147,8 @@ ARM_FUNC_START aeabi_ulcmp sub sp, sp, #8 do_push {sp, lr} #endif -98: cfi_push 98b - \fname, 0xe, -0xc, 0x10 + .cfi_adjust_cfa_offset 16 + .cfi_offset 14, -12 .endm /* restore stack */ @@ -158,6 +161,8 @@ ARM_FUNC_START aeabi_ulcmp add sp, sp, #8 do_pop {r2, r3} #endif + .cfi_restore 14 + .cfi_adjust_cfa_offset 0 .endm #ifdef L_aeabi_ldivmod @@ -171,7 +176,7 @@ ARM_FUNC_START aeabi_ulcmp r2:r3 remainder */ ARM_FUNC_START aeabi_ldivmod - cfi_start __aeabi_ldivmod, LSYM(Lend_aeabi_ldivmod) + .cfi_startproc test_div_by_zero signed push_for_divide __aeabi_ldivmod @@ -181,16 +186,19 @@ ARM_FUNC_START aeabi_ldivmod blt 2f /* arguments in (r0:r1), (r2:r3) and *sp */ bl SYM(__udivmoddi4) __PLT__ + .cfi_remember_state pop_for_divide RET 1: /* xxh:xxl is negative */ + .cfi_restore_state negs xxl, xxl sbc xxh, xxh, xxh, lsl #1 /* Thumb-2 has no RSC, so use X - 2X */ cmp yyh, #0 blt 3f /* arguments in (r0:r1), (r2:r3) and *sp */ bl SYM(__udivmoddi4) __PLT__ + .cfi_remember_state pop_for_divide negs xxl, xxl sbc xxh, xxh, xxh, lsl #1 /* Thumb-2 has no RSC, so use X - 2X */ @@ -199,16 +207,19 @@ ARM_FUNC_START aeabi_ldivmod RET 2: /* only yyh:yyl is negative */ + .cfi_restore_state negs yyl, yyl sbc yyh, yyh, yyh, lsl #1 /* Thumb-2 has no RSC, so use X - 2X */ /* arguments in (r0:r1), (r2:r3) and *sp */ bl SYM(__udivmoddi4) __PLT__ + .cfi_remember_state pop_for_divide negs xxl, xxl sbc xxh, xxh, xxh, lsl #1 /* Thumb-2 has no RSC, so use X - 2X */ RET 3: /* both xxh:xxl and yyh:yyl are negative */ + .cfi_restore_state negs yyl, yyl sbc yyh, yyh, yyh, lsl #1 /* Thumb-2 has no RSC, so use X - 2X */ /* arguments in (r0:r1), (r2:r3) and *sp */ @@ -218,7 +229,7 @@ ARM_FUNC_START aeabi_ldivmod sbc yyh, yyh, yyh, lsl #1 /* Thumb-2 has no RSC, so use X - 2X */ RET - cfi_end LSYM(Lend_aeabi_ldivmod) + .cfi_endproc #endif /* L_aeabi_ldivmod */ @@ -233,7 +244,7 @@ ARM_FUNC_START aeabi_ldivmod r2:r3 remainder */ ARM_FUNC_START aeabi_uldivmod - cfi_start __aeabi_uldivmod, LSYM(Lend_aeabi_uldivmod) + .cfi_startproc test_div_by_zero unsigned push_for_divide __aeabi_uldivmod @@ -241,7 +252,7 @@ ARM_FUNC_START aeabi_uldivmod bl SYM(__udivmoddi4) __PLT__ pop_for_divide RET - cfi_end LSYM(Lend_aeabi_uldivmod) + .cfi_endproc #endif /* L_aeabi_divmod */ |