This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
[PATCH] Add CFI entries for ARM Linux idiv0 / ldiv0
- From: James Lemke <jwlemke at codesourcery dot com>
- To: <gcc-patches at gcc dot gnu dot org>
- Date: Tue, 16 Jun 2015 17:25:49 -0400
- Subject: [PATCH] Add CFI entries for ARM Linux idiv0 / ldiv0
- Authentication-results: sourceware.org; auth=none
A divide by zero exception was not giving a proper traceback for LINUX
ARM_EABI. The attached patch fixes the problem on trunk (and several
local branches).
Tested on gcc-trunk for arm-none-linux-gnueabi.
OK to commit?
--
Jim Lemke, GNU Tools Sourcerer
Mentor Graphics / CodeSourcery
Orillia, Ontario
2015-06-16 James Lemke <jwlemke@codesourcery.com>
libgcc/config/arm/
* lib1funcs.S (aeabi_idiv0, aeabi_ldiv0): Add CFI entries for
Linux ARM_EABI.
Index: libgcc/config/arm/lib1funcs.S
===================================================================
--- libgcc/config/arm/lib1funcs.S (revision 224523)
+++ libgcc/config/arm/lib1funcs.S (working copy)
@@ -1336,23 +1336,30 @@ LSYM(Lover12):
#define SIGFPE 8
#ifdef __ARM_EABI__
+ cfi_start __aeabi_ldiv0, LSYM(Lend_aeabi_ldiv0)
WEAK aeabi_idiv0
WEAK aeabi_ldiv0
ARM_FUNC_START aeabi_idiv0
ARM_FUNC_START aeabi_ldiv0
+ do_push {r1, lr}
+98: cfi_push 98b - __aeabi_ldiv0, 0xe, -0x4, 0x8
#else
+ cfi_start __div0, LSYM(Lend_div0)
ARM_FUNC_START div0
+ do_push {r1, lr}
+98: cfi_push 98b - __div0, 0xe, -0x4, 0x8
#endif
- do_push {r1, lr}
mov r0, #SIGFPE
bl SYM(raise) __PLT__
- RETLDM r1
+ RETLDM r1 unwind=98b
#ifdef __ARM_EABI__
+ cfi_end LSYM(Lend_aeabi_ldiv0)
FUNC_END aeabi_ldiv0
FUNC_END aeabi_idiv0
#else
+ cfi_end LSYM(Lend_div0)
FUNC_END div0
#endif