[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Commits] r23290 - in /fsf/trunk/libc: ./ ports/ ports/sysdeps/arm/ ports/sysdeps/mips/ ports/sysdeps/mips/bits/ ports/sysdeps/mips/mi...



Author: eglibc
Date: Sat Jun 15 00:02:06 2013
New Revision: 23290

Log:
Import glibc-mainline for 2013-06-15

Added:
    fsf/trunk/libc/ports/sysdeps/mips/math-tests.h
    fsf/trunk/libc/sysdeps/x86_64/rtld-memset.S
Removed:
    fsf/trunk/libc/sysdeps/x86_64/rtld-memset.c
Modified:
    fsf/trunk/libc/ChangeLog
    fsf/trunk/libc/NEWS
    fsf/trunk/libc/ports/ChangeLog.arm
    fsf/trunk/libc/ports/ChangeLog.microblaze
    fsf/trunk/libc/ports/ChangeLog.mips
    fsf/trunk/libc/ports/sysdeps/arm/fpu_control.h
    fsf/trunk/libc/ports/sysdeps/mips/__longjmp.c
    fsf/trunk/libc/ports/sysdeps/mips/bits/setjmp.h
    fsf/trunk/libc/ports/sysdeps/mips/mips64/__longjmp.c
    fsf/trunk/libc/ports/sysdeps/mips/mips64/setjmp_aux.c
    fsf/trunk/libc/ports/sysdeps/mips/setjmp_aux.c
    fsf/trunk/libc/ports/sysdeps/unix/sysv/linux/microblaze/nptl/lowlevellock.h
    fsf/trunk/libc/stdlib/tst-strtod-round.c
    fsf/trunk/libc/sysdeps/x86_64/multiarch/init-arch.c

Modified: fsf/trunk/libc/ChangeLog
==============================================================================
--- fsf/trunk/libc/ChangeLog (original)
+++ fsf/trunk/libc/ChangeLog Sat Jun 15 00:02:06 2013
@@ -1,3 +1,23 @@
+2013-06-14  Liubov Dmitrieva  <liubov.dmitrieva@xxxxxxxxx>
+
+	* sysdeps/x86_64/multiarch/init-arch.c (__init_cpu_features):
+	Set bit_Fast_Unaligned_Load for Intel Silvermont architecture.
+
+2013-06-14  Siddhesh Poyarekar  <siddhesh@xxxxxxxxxx>
+	    H.J. Lu  <hjl.tools@xxxxxxxxx>
+
+	[BZ #15627]
+	* sysdeps/x86_64/rtld-memset.c: Remove file.
+	* sysdeps/x86_64/rtld-memset.S: New file.
+
+2013-06-14  Joseph Myers  <joseph@xxxxxxxxxxxxxxxx>
+
+	* stdlib/tst-strtod-round.c: Include <math-tests.h>.
+	(test_in_one_mode): Take arguments for whether the rounding mode
+	is supported for each floating-point type.
+	(do_test): Pass new arguments to test_in_one_mode using
+	ROUNDING_TESTS.
+
 2013-06-13  Roland McGrath  <roland@xxxxxxxxxxxxx>
 
 	* posix/tst-waitid.c (do_test): Distinguish different instances of

Modified: fsf/trunk/libc/NEWS
==============================================================================
--- fsf/trunk/libc/NEWS (original)
+++ fsf/trunk/libc/NEWS Sat Jun 15 00:02:06 2013
@@ -12,15 +12,15 @@
   2546, 2560, 5159, 6809, 10060, 10062, 10357, 10686, 11120, 11561, 12387,
   12515, 12723, 13550, 13889, 13951, 13988, 14142, 14176, 14200, 14256,
   14280, 14293, 14317, 14327, 14478, 14496, 14582, 14686, 14812, 14888,
-  14894, 14908, 14920, 14952, 14964, 14981, 14982, 14985, 14991, 14994,
-  14996, 15000, 15003, 15006, 15007, 15014, 15020, 15023, 15036, 15054,
-  15055, 15062, 15078, 15084, 15085, 15086, 15100, 15160, 15214, 15221,
-  15232, 15234, 15283, 15285, 15287, 15304, 15305, 15307, 15309, 15327,
-  15330, 15335, 15336, 15337, 15339, 15342, 15346, 15359, 15361, 15366,
-  15380, 15381, 15394, 15395, 15405, 15406, 15409, 15416, 15418, 15419,
-  15423, 15424, 15426, 15429, 15431, 15432, 15441, 15442, 15448, 15465,
-  15480, 15485, 15488, 15490, 15493, 15497, 15506, 15529, 15536, 15553,
-  15577, 15583, 15618.
+  14894, 14908, 14909, 14920, 14952, 14964, 14981, 14982, 14985, 14991,
+  14994, 14996, 15000, 15003, 15006, 15007, 15014, 15020, 15023, 15036,
+  15054, 15055, 15062, 15078, 15084, 15085, 15086, 15100, 15160, 15214,
+  15221, 15232, 15234, 15283, 15285, 15287, 15304, 15305, 15307, 15309,
+  15327, 15330, 15335, 15336, 15337, 15339, 15342, 15346, 15359, 15361,
+  15366, 15380, 15381, 15394, 15395, 15405, 15406, 15409, 15416, 15418,
+  15419, 15423, 15424, 15426, 15429, 15431, 15432, 15441, 15442, 15448,
+  15465, 15480, 15485, 15488, 15490, 15492, 15493, 15497, 15506, 15529,
+  15536, 15553, 15577, 15583, 15618, 15627.
 
 * CVE-2013-0242 Buffer overrun in regexp matcher has been fixed (Bugzilla
   #15078).

Modified: fsf/trunk/libc/ports/ChangeLog.arm
==============================================================================
--- fsf/trunk/libc/ports/ChangeLog.arm (original)
+++ fsf/trunk/libc/ports/ChangeLog.arm Sat Jun 15 00:02:06 2013
@@ -1,3 +1,9 @@
+2013-06-14  Joseph Myers  <joseph@xxxxxxxxxxxxxxxx>
+
+	[BZ #15492]
+	* sysdeps/arm/fpu_control.h [_LIBC || !__SOFTFP__]
+	(_FPU_RESERVED): Change value to 0x00086060.
+
 2013-06-11  Joseph Myers  <joseph@xxxxxxxxxxxxxxxx>
 
 	* sysdeps/arm/math-tests.h [__SOFTFP__] (EXCEPTION_TESTS_float):

Modified: fsf/trunk/libc/ports/ChangeLog.microblaze
==============================================================================
--- fsf/trunk/libc/ports/ChangeLog.microblaze (original)
+++ fsf/trunk/libc/ports/ChangeLog.microblaze Sat Jun 15 00:02:06 2013
@@ -1,3 +1,8 @@
+2013-06-14  David Holsgrove <david.holsgrove@xxxxxxxxxx>
+
+	* sysdeps/unix/sysv/linux/microblaze/nptl/lowlevellock.h: Correct
+	return from macros.
+
 2013-06-05  OndÃÂej BÃÂlka  <neleai@xxxxxxxxx>
 
 	* sysdeps/microblaze/bits/atomic.h: Remove executable mode.

Modified: fsf/trunk/libc/ports/ChangeLog.mips
==============================================================================
--- fsf/trunk/libc/ports/ChangeLog.mips (original)
+++ fsf/trunk/libc/ports/ChangeLog.mips Sat Jun 15 00:02:06 2013
@@ -1,3 +1,19 @@
+2013-06-14  Joseph Myers  <joseph@xxxxxxxxxxxxxxxx>
+
+	[BZ #14909]
+	* sysdeps/mips/bits/setjmp.h (struct __jmp_buf_internal_tag):
+	Rename __fpc_csr field to __glibc_reserved1.
+	* sysdeps/mips/setjmp_aux.c (__sigsetjmp_aux) [__mips_hard_float]:
+	Do not set __fpc_csr.
+	* sysdeps/mips/mips64/setjmp_aux.c (__sigsetjmp_aux)
+	[__mips_hard_float]: Likewise.
+	* sysdeps/mips/__longjmp.c (____longjmp) [__mips_hard_float]: Do
+	not use __fpc_csr.
+	* sysdeps/mips/mips64/__longjmp.c (__longjmp) [__mips_hard_float]:
+	Likewise.
+
+	* sysdeps/mips/math-tests.h: New file.
+
 2013-06-05  Joseph Myers  <joseph@xxxxxxxxxxxxxxxx>
 
 	* sysdeps/mips/fpu/fgetexcptflg.c: Remove trailing whitespace.

Modified: fsf/trunk/libc/ports/sysdeps/arm/fpu_control.h
==============================================================================
--- fsf/trunk/libc/ports/sysdeps/arm/fpu_control.h (original)
+++ fsf/trunk/libc/ports/sysdeps/arm/fpu_control.h Sat Jun 15 00:02:06 2013
@@ -39,7 +39,7 @@
 
 /* Some bits in the FPSCR are not yet defined.  They must be preserved when
    modifying the contents.  */
-#define _FPU_RESERVED	0x0e08e0e0
+#define _FPU_RESERVED	0x00086060
 #define _FPU_DEFAULT    0x00000000
 /* Default + exceptions enabled. */
 #define _FPU_IEEE	(_FPU_DEFAULT | 0x00001f00)

Modified: fsf/trunk/libc/ports/sysdeps/mips/__longjmp.c
==============================================================================
--- fsf/trunk/libc/ports/sysdeps/mips/__longjmp.c (original)
+++ fsf/trunk/libc/ports/sysdeps/mips/__longjmp.c Sat Jun 15 00:02:06 2013
@@ -47,10 +47,6 @@
   asm volatile ("l.d $f26, %0" : : "m" (env[0].__fpregs[3]));
   asm volatile ("l.d $f28, %0" : : "m" (env[0].__fpregs[4]));
   asm volatile ("l.d $f30, %0" : : "m" (env[0].__fpregs[5]));
-
-  /* Get and reconstruct the floating point csr.  */
-  asm volatile ("lw $2, %0" : : "m" (env[0].__fpc_csr));
-  asm volatile ("ctc1 $2, $31");
 #endif
 
   /* Get the GP. */

Modified: fsf/trunk/libc/ports/sysdeps/mips/bits/setjmp.h
==============================================================================
--- fsf/trunk/libc/ports/sysdeps/mips/bits/setjmp.h (original)
+++ fsf/trunk/libc/ports/sysdeps/mips/bits/setjmp.h Sat Jun 15 00:02:06 2013
@@ -59,8 +59,8 @@
     __extension__ long long __gp;
 #endif
 
-    /* Floating point status register.  */
-    int __fpc_csr;
+    /* Unused (was floating point status register).  */
+    int __glibc_reserved1;
 
     /* Callee-saved floating point registers.  */
 #if _MIPS_SIM == _ABI64

Added: fsf/trunk/libc/ports/sysdeps/mips/math-tests.h
==============================================================================
--- fsf/trunk/libc/ports/sysdeps/mips/math-tests.h (added)
+++ fsf/trunk/libc/ports/sysdeps/mips/math-tests.h Sat Jun 15 00:02:06 2013
@@ -1,0 +1,37 @@
+/* Configuration for math tests.  MIPS version.
+   Copyright (C) 2013 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 of the License, or (at your option) any later version.
+
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, see
+   <http://www.gnu.org/licenses/>.  */
+
+#include <sgidefs.h>
+
+/* MIPS soft float does not support exceptions and rounding modes, and
+   long double when wider than double is implemented using fp-bit
+   which does not integrate with hardware exceptions and rounding
+   modes.  */
+#ifdef __mips_soft_float
+# define ROUNDING_TESTS_float(MODE)	((MODE) == FE_TONEAREST)
+# define ROUNDING_TESTS_double(MODE)	((MODE) == FE_TONEAREST)
+# define ROUNDING_TESTS_long_double(MODE)	((MODE) == FE_TONEAREST)
+# define EXCEPTION_TESTS_float	0
+# define EXCEPTION_TESTS_double	0
+# define EXCEPTION_TESTS_long_double	0
+#elif _MIPS_SIM != _ABIO32
+# define ROUNDING_TESTS_long_double(MODE)	((MODE) == FE_TONEAREST)
+# define EXCEPTION_TESTS_long_double	0
+#endif
+
+#include_next <math-tests.h>

Modified: fsf/trunk/libc/ports/sysdeps/mips/mips64/__longjmp.c
==============================================================================
--- fsf/trunk/libc/ports/sysdeps/mips/mips64/__longjmp.c (original)
+++ fsf/trunk/libc/ports/sysdeps/mips/mips64/__longjmp.c Sat Jun 15 00:02:06 2013
@@ -59,10 +59,6 @@
   asm volatile ("l.d $f28, %0" : : "m" (env[0].__fpregs[4]));
   asm volatile ("l.d $f30, %0" : : "m" (env[0].__fpregs[5]));
 #endif
-
-  /* Get and reconstruct the floating point csr.  */
-  asm volatile ("lw $2, %0" : : "m" (env[0].__fpc_csr));
-  asm volatile ("ctc1 $2, $31");
 #endif
 
   /* Get the GP. */

Modified: fsf/trunk/libc/ports/sysdeps/mips/mips64/setjmp_aux.c
==============================================================================
--- fsf/trunk/libc/ports/sysdeps/mips/mips64/setjmp_aux.c (original)
+++ fsf/trunk/libc/ports/sysdeps/mips/mips64/setjmp_aux.c Sat Jun 15 00:02:06 2013
@@ -71,11 +71,6 @@
   asm volatile ("sd $22, %0" : : "m" (env[0].__jmpbuf[0].__regs[6]));
   asm volatile ("sd $23, %0" : : "m" (env[0].__jmpbuf[0].__regs[7]));
 
-#ifdef __mips_hard_float
-  /* .. and finally get and reconstruct the floating point csr.  */
-  asm ("cfc1 %0, $31" : "=r" (env[0].__jmpbuf[0].__fpc_csr));
-#endif
-
   /* Save the signal mask if requested.  */
   return __sigjmp_save (env, savemask);
 }

Modified: fsf/trunk/libc/ports/sysdeps/mips/setjmp_aux.c
==============================================================================
--- fsf/trunk/libc/ports/sysdeps/mips/setjmp_aux.c (original)
+++ fsf/trunk/libc/ports/sysdeps/mips/setjmp_aux.c Sat Jun 15 00:02:06 2013
@@ -58,11 +58,6 @@
   asm volatile ("sw $22, %0" : : "m" (env[0].__jmpbuf[0].__regs[6]));
   asm volatile ("sw $23, %0" : : "m" (env[0].__jmpbuf[0].__regs[7]));
 
-#ifdef __mips_hard_float
-  /* .. and finally get and reconstruct the floating point csr.  */
-  asm ("cfc1 %0, $31" : "=r" (env[0].__jmpbuf[0].__fpc_csr));
-#endif
-
   /* Save the signal mask if requested.  */
   return __sigjmp_save (env, savemask);
 }

Modified: fsf/trunk/libc/ports/sysdeps/unix/sysv/linux/microblaze/nptl/lowlevellock.h
==============================================================================
--- fsf/trunk/libc/ports/sysdeps/unix/sysv/linux/microblaze/nptl/lowlevellock.h (original)
+++ fsf/trunk/libc/ports/sysdeps/unix/sysv/linux/microblaze/nptl/lowlevellock.h Sat Jun 15 00:02:06 2013
@@ -87,7 +87,7 @@
     __ret = INTERNAL_SYSCALL (futex, __err, 4, (long) (futexp),                \
                   __lll_private_flag (FUTEX_WAIT, private),                    \
                   (val), (timespec));                                          \
-    INTERNAL_SYSCALL_ERROR_P (__ret, __err) ? -__ret : __ret;                  \
+    __ret;                                                                     \
   })
 
 #define lll_futex_timed_wait_bitset(futexp, val, timespec, clockbit, private)  \
@@ -99,7 +99,7 @@
                   __lll_private_flag (__op, private),                          \
                   (val), (timespec), NULL /* Unused.  */,                      \
                   FUTEX_BITSET_MATCH_ANY);                                     \
-    INTERNAL_SYSCALL_ERROR_P (__ret, __err) ? -__ret : __ret;                  \
+    __ret;                                                                     \
   })
 
 #define lll_futex_wake(futexp, nr, private)                                    \
@@ -109,7 +109,7 @@
     __ret = INTERNAL_SYSCALL (futex, __err, 4, (long) (futexp),                \
                   __lll_private_flag (FUTEX_WAKE, private),                    \
                   (nr), 0);                                                    \
-    INTERNAL_SYSCALL_ERROR_P (__ret, __err) ? -__ret : __ret;                  \
+    __ret;                                                                     \
   })
 
 #define lll_robust_dead(futexv, private)                                       \
@@ -160,7 +160,7 @@
     __ret = INTERNAL_SYSCALL (futex, __err, 5, (futexp),                       \
                   __lll_private_flag (__op, private),                          \
                   (val), (timespec), mutex);                                   \
-    INTERNAL_SYSCALL_ERROR_P (__ret, __err) ? -__ret : __ret;                  \
+    __ret;                                                                     \
   })
 
 #define lll_futex_cmp_requeue_pi(futexp, nr_wake, nr_move, mutex, val, priv)   \

Modified: fsf/trunk/libc/stdlib/tst-strtod-round.c
==============================================================================
--- fsf/trunk/libc/stdlib/tst-strtod-round.c (original)
+++ fsf/trunk/libc/stdlib/tst-strtod-round.c Sat Jun 15 00:02:06 2013
@@ -24,6 +24,7 @@
 #include <stdio.h>
 #include <stdlib.h>
 #include <string.h>
+#include <math-tests.h>
 
 struct exactness
 {
@@ -7538,7 +7539,9 @@
 
 static int
 test_in_one_mode (const char *s, const struct test_results *expected,
-		  const struct exactness *exact, const char *mode_name)
+		  const struct exactness *exact, const char *mode_name,
+		  bool float_round_ok, bool double_round_ok,
+		  bool long_double_round_ok)
 {
   int result = 0;
   float f = strtof (s, NULL);
@@ -7549,24 +7552,30 @@
     {
       printf ("strtof (%s) returned %a not %a (%s)\n", s, f,
 	      expected->f, mode_name);
-      result = 1;
+      if (float_round_ok || exact->f)
+	result = 1;
+      else
+	printf ("ignoring this inexact result\n");
     }
   if (d != expected->d
       || copysign (1.0, d) != copysign (1.0, expected->d))
     {
       printf ("strtod (%s) returned %a not %a (%s)\n", s, d,
 	      expected->d, mode_name);
-      result = 1;
+      if (double_round_ok || exact->d)
+	result = 1;
+      else
+	printf ("ignoring this inexact result\n");
     }
   if (ld != expected->ld
       || copysignl (1.0L, ld) != copysignl (1.0L, expected->ld))
     {
       printf ("strtold (%s) returned %La not %La (%s)\n", s, ld,
 	      expected->ld, mode_name);
-      if (LDBL_MANT_DIG != 106 || exact->ld)
+      if ((long_double_round_ok && LDBL_MANT_DIG != 106) || exact->ld)
 	result = 1;
       else
-	printf ("ignoring this inexact long double result\n");
+	printf ("ignoring this inexact result\n");
     }
   return result;
 }
@@ -7579,12 +7588,17 @@
   for (size_t i = 0; i < sizeof (tests) / sizeof (tests[0]); i++)
     {
       result |= test_in_one_mode (tests[i].s, &tests[i].rn, &tests[i].exact,
-				  "default rounding mode");
+				  "default rounding mode",
+				  true, true, true);
 #ifdef FE_DOWNWARD
       if (!fesetround (FE_DOWNWARD))
 	{
 	  result |= test_in_one_mode (tests[i].s, &tests[i].rd,
-				      &tests[i].exact, "FE_DOWNWARD");
+				      &tests[i].exact, "FE_DOWNWARD",
+				      ROUNDING_TESTS (float, FE_DOWNWARD),
+				      ROUNDING_TESTS (double, FE_DOWNWARD),
+				      ROUNDING_TESTS (long double,
+						      FE_DOWNWARD));
 	  fesetround (save_round_mode);
 	}
 #endif
@@ -7592,7 +7606,11 @@
       if (!fesetround (FE_TOWARDZERO))
 	{
 	  result |= test_in_one_mode (tests[i].s, &tests[i].rz,
-				      &tests[i].exact, "FE_TOWARDZERO");
+				      &tests[i].exact, "FE_TOWARDZERO",
+				      ROUNDING_TESTS (float, FE_TOWARDZERO),
+				      ROUNDING_TESTS (double, FE_TOWARDZERO),
+				      ROUNDING_TESTS (long double,
+						      FE_TOWARDZERO));
 	  fesetround (save_round_mode);
 	}
 #endif
@@ -7600,7 +7618,10 @@
       if (!fesetround (FE_UPWARD))
 	{
 	  result |= test_in_one_mode (tests[i].s, &tests[i].ru,
-				      &tests[i].exact, "FE_UPWARD");
+				      &tests[i].exact, "FE_UPWARD",
+				      ROUNDING_TESTS (float, FE_UPWARD),
+				      ROUNDING_TESTS (double, FE_UPWARD),
+				      ROUNDING_TESTS (long double, FE_UPWARD));
 	  fesetround (save_round_mode);
 	}
 #endif

Modified: fsf/trunk/libc/sysdeps/x86_64/multiarch/init-arch.c
==============================================================================
--- fsf/trunk/libc/sysdeps/x86_64/multiarch/init-arch.c (original)
+++ fsf/trunk/libc/sysdeps/x86_64/multiarch/init-arch.c Sat Jun 15 00:02:06 2013
@@ -76,6 +76,13 @@
 	    case 0x26:
 	      /* BSF is slow on Atom.  */
 	      __cpu_features.feature[index_Slow_BSF] |= bit_Slow_BSF;
+	      break;
+
+	    case 0x37:
+	      /* Unaligned load versions are faster than SSSE3
+		 on Silvermont.  */
+	      __cpu_features.feature[index_Fast_Unaligned_Load]
+		|= bit_Fast_Unaligned_Load;
 	      break;
 
 	    default:

Added: fsf/trunk/libc/sysdeps/x86_64/rtld-memset.S
==============================================================================
--- fsf/trunk/libc/sysdeps/x86_64/rtld-memset.S (added)
+++ fsf/trunk/libc/sysdeps/x86_64/rtld-memset.S Sat Jun 15 00:02:06 2013
@@ -1,0 +1,37 @@
+/* memset implementation for the dynamic linker.  This is separate from the
+   libc implementation to avoid writing to SSE registers.
+   Copyright (C) 2013 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 of the License, or (at your option) any later version.
+
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, see
+   <http://www.gnu.org/licenses/>.  */
+
+#include <sysdep.h>
+#include "asm-syntax.h"
+
+
+	.text
+/* void *memset (void *dest, char c, size_t count)
+   dest	 => %rdi
+   c	 => %rsi
+   count => %rdx  */
+ENTRY (memset)
+	mov	%rdx, %rcx
+	movzbl	%sil, %eax
+	mov	%rdi, %rdx
+	rep	stosb
+	mov	%rdx, %rax
+	ret
+END (memset)
+libc_hidden_builtin_def (memset)

Removed: fsf/trunk/libc/sysdeps/x86_64/rtld-memset.c
==============================================================================
--- fsf/trunk/libc/sysdeps/x86_64/rtld-memset.c (original)
+++ fsf/trunk/libc/sysdeps/x86_64/rtld-memset.c (removed)
@@ -1,1 +1,0 @@
-#include <string/memset.c>

_______________________________________________
Commits mailing list
Commits@xxxxxxxxxx
http://eglibc.org/cgi-bin/mailman/listinfo/commits