]> Zhao Yanbai Git Server - minix.git/commitdiff
ARM divsi3.S: raise(SIGFPE) when called for 23/323/1
authorBen Gras <ben@minix3.org>
Sat, 9 Feb 2013 19:38:45 +0000 (20:38 +0100)
committerBen Gras <ben@minix3.org>
Sat, 9 Feb 2013 21:24:59 +0000 (22:24 +0100)
. raise(SIGFPE) for modulo-0/divide-0 operations in
  internal int division functions
. gcc: do not link with -lgcc anywhere so these internal
  functions are always used from libc instead of (sometimes)
  masked by -lgcc
. together fixes test53 on ARM

Change-Id: I31ec19dfdd68b8a92695595da901874e63106f9d

common/lib/libc/arch/arm/gen/divsi3.S
external/gpl3/gcc/files/arm-minix.h
kernel/arch/earm/pre_init.c
kernel/arch/i386/pre_init.c
share/mk/minix.bootprog.mk

index 04b1eac3acf98ae91fae2c9c10a52d2edd90e43d..c6d799c49763a061349d90af4df70a3c8daebc6b 100644 (file)
@@ -22,7 +22,7 @@
  */
 
 .L_overflow:
-#if !defined(_KERNEL) && !defined(_STANDALONE) && !defined(__minix)
+#if !defined(_KERNEL) && !defined(_STANDALONE) && !defined(_LIBMINC)
        mov     r0, #8                  /* SIGFPE */
        bl      PIC_SYM(_C_LABEL(raise), PLT)   /* raise it */
        mov     r0, #0
index 398279ef535026a0c66fb0d059bff12e5dfd6e02..4b27aa7339eabfaa1782aff32cc82de478e1d2df 100644 (file)
@@ -67,3 +67,7 @@
 
 #undef TARGET_VERSION
 #define TARGET_VERSION fputs (" (MINIX/arm ELF EABI)", stderr);
+
+/* suppress -lgcc - don't include %G (-lgcc) in the libraries */
+#undef LINK_GCC_C_SEQUENCE_SPEC
+#define LINK_GCC_C_SEQUENCE_SPEC "%L"
index 3a4f72da99d5ce4c629130f4fb3cc09f784415e6..4d9663434a9f1bbefca5d6a5ee43f092d38ba879 100644 (file)
@@ -284,3 +284,4 @@ kinfo_t *pre_init(u32_t magic, u32_t ebx)
 int send_sig(endpoint_t proc_nr, int sig_nr) { return 0; }
 void minix_shutdown(timer_t *t) { arch_shutdown(RBT_PANIC); }
 void busy_delay_ms(int x) { }
+int raise(int n) { panic("raise(%d)\n", n); }
index bf327adb3fffe38609baf4815f57a676c0766f14..03e068fc24b6ac6effc7b234113b3578f62b6a20 100644 (file)
@@ -243,3 +243,4 @@ kinfo_t *pre_init(u32_t magic, u32_t ebx)
 int send_sig(endpoint_t proc_nr, int sig_nr) { return 0; }
 void minix_shutdown(timer_t *t) { arch_shutdown(RBT_PANIC); }
 void busy_delay_ms(int x) { }
+int raise(int sig) { panic("raise(%d)\n", sig); }
index 2eabe6772beaed2f2fcf5c36d1978b8e45eeef20..effb181455ec8e8ec02356a1a4925ef21445e533 100644 (file)
@@ -10,7 +10,11 @@ LDADD+= -nodefaultlibs
 
 # 2. Compiler-specific libs
 .if !empty(CC:M*gcc)
+.if (${MACHINE_ARCH} == "earm")
+LDADD+= -lsys
+.else
 LDADD+= -lgcc -lsys -lgcc
+.endif
 .elif !empty(CC:M*clang)
 LDADD+= -L/usr/pkg/compiler-rt/lib -lCompilerRT-Generic -lsys -lCompilerRT-Generic
 .endif