This is the mail archive of the glibc-cvs@sourceware.org mailing list for the glibc project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

GNU C Library master sources branch hjl/pr19463 created. glibc-2.22-674-g62e07f1


This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "GNU C Library master sources".

The branch, hjl/pr19463 has been created
        at  62e07f1cd82019c8cc5a493b8927db7d54ee053f (commit)

- Log -----------------------------------------------------------------
http://sourceware.org/git/gitweb.cgi?p=glibc.git;a=commitdiff;h=62e07f1cd82019c8cc5a493b8927db7d54ee053f

commit 62e07f1cd82019c8cc5a493b8927db7d54ee053f
Author: H.J. Lu <hjl.tools@gmail.com>
Date:   Thu Jan 14 12:49:13 2016 -0800

    Call math_opt_barrier inside if
    
    Since floating-point operation may trigger floating-point exceptions,
    we call math_opt_barrier inside if to prevent code motion.
    
    	[BZ #19465]
    	* sysdeps/ieee754/dbl-64/s_fma.c (__fma): Call math_opt_barrier
    	inside if.

diff --git a/sysdeps/ieee754/dbl-64/s_fma.c b/sysdeps/ieee754/dbl-64/s_fma.c
index bc3677d..a349243 100644
--- a/sysdeps/ieee754/dbl-64/s_fma.c
+++ b/sysdeps/ieee754/dbl-64/s_fma.c
@@ -175,7 +175,10 @@ __fma (double x, double y, double z)
 
   /* Ensure correct sign of exact 0 + 0.  */
   if (__glibc_unlikely ((x == 0 || y == 0) && z == 0))
-    return x * y + z;
+    {
+      x = math_opt_barrier (x);
+      return x * y + z;
+    }
 
   fenv_t env;
   libc_feholdexcept_setround (&env, FE_TONEAREST);

http://sourceware.org/git/gitweb.cgi?p=glibc.git;a=commitdiff;h=54bf044cd7ff1944c5a59d2daa97abfa2fb31061

commit 54bf044cd7ff1944c5a59d2daa97abfa2fb31061
Author: H.J. Lu <hjl.tools@gmail.com>
Date:   Wed Jan 13 15:03:46 2016 -0800

    Avoid strdup/strndup/strsep

diff --git a/include/string.h b/include/string.h
index e145bfd..151e420 100644
--- a/include/string.h
+++ b/include/string.h
@@ -71,6 +71,12 @@ extern __typeof (strncasecmp_l) __strncasecmp_l;
       __new[__len] = '\0';						      \
       (char *) memcpy (__new, __old, __len);				      \
     }))
+
+# ifdef __OPTIMIZE_SIZE__
+#  define strdup(s)		__strdup ((s))
+#  define strndup(s, n)		__strndup ((s), (n))
+#  define strsep(s, d)		__strsep ((s), (d))
+# endif
 #endif
 
 libc_hidden_proto (__mempcpy)
@@ -99,6 +105,7 @@ libc_hidden_proto (memmem)
 extern __typeof (memmem) __memmem;
 libc_hidden_proto (__memmem)
 libc_hidden_proto (__ffs)
+libc_hidden_proto (__strsep)
 
 libc_hidden_builtin_proto (memchr)
 libc_hidden_builtin_proto (memcpy)
diff --git a/string/strsep.c b/string/strsep.c
index 1054774..1d98885 100644
--- a/string/strsep.c
+++ b/string/strsep.c
@@ -66,4 +66,5 @@ __strsep (char **stringp, const char *delim)
 }
 weak_alias (__strsep, strsep)
 strong_alias (__strsep, __strsep_g)
+libc_hidden_def (__strsep)
 libc_hidden_def (__strsep_g)

http://sourceware.org/git/gitweb.cgi?p=glibc.git;a=commitdiff;h=0227d76ce0799fea0eb5cc9862ad73ddfc13810e

commit 0227d76ce0799fea0eb5cc9862ad73ddfc13810e
Author: H.J. Lu <hjl.tools@gmail.com>
Date:   Wed Jan 13 14:10:34 2016 -0800

    Allow inline in sys/sysmacros.h when building glibc

diff --git a/sysdeps/unix/sysv/linux/sys/sysmacros.h b/sysdeps/unix/sysv/linux/sys/sysmacros.h
index 4c4a697..f9e2696 100644
--- a/sysdeps/unix/sysv/linux/sys/sysmacros.h
+++ b/sysdeps/unix/sysv/linux/sys/sysmacros.h
@@ -34,7 +34,7 @@ extern unsigned long long int gnu_dev_makedev (unsigned int __major,
 					       unsigned int __minor)
      __THROW __attribute_const__;
 
-#ifdef __USE_EXTERN_INLINES
+#if defined __USE_EXTERN_INLINES || defined _LIBC
 __extension__ __extern_inline __attribute_const__ unsigned int
 __NTH (gnu_dev_major (unsigned long long int __dev))
 {

http://sourceware.org/git/gitweb.cgi?p=glibc.git;a=commitdiff;h=0a9b3b93f0a0868c518af7ebcc5b9a8126c7e0e5

commit 0a9b3b93f0a0868c518af7ebcc5b9a8126c7e0e5
Author: H.J. Lu <hjl.tools@gmail.com>
Date:   Wed Jan 13 13:31:34 2016 -0800

    Include <bits/stdio.h> when building glibc

diff --git a/libio/bits/stdio.h b/libio/bits/stdio.h
index df57e7c..0c60296 100644
--- a/libio/bits/stdio.h
+++ b/libio/bits/stdio.h
@@ -27,7 +27,7 @@
 #endif
 
 
-#ifdef __USE_EXTERN_INLINES
+#if defined __USE_EXTERN_INLINES || defined _LIBC
 /* For -D_FORTIFY_SOURCE{,=2} bits/stdio2.h will define a different
    inline.  */
 # if !(__USE_FORTIFY_LEVEL > 0 && defined __fortify_function)
@@ -138,7 +138,8 @@ __NTH (ferror_unlocked (FILE *__stream))
 #endif /* Use extern inlines.  */
 
 
-#if defined __USE_MISC && defined __GNUC__ && defined __OPTIMIZE__ \
+#if defined __USE_MISC && defined __GNUC__ \
+    && defined __OPTIMIZE__ && !defined __OPTIMIZE_SIZE__ \
     && !defined __cplusplus
 /* Perform some simple optimizations.  */
 # define fread_unlocked(ptr, size, n, stream) \
diff --git a/libio/stdio.h b/libio/stdio.h
index d8d7fa0..44738a4 100644
--- a/libio/stdio.h
+++ b/libio/stdio.h
@@ -929,7 +929,7 @@ extern void funlockfile (FILE *__stream) __THROW;
 
 /* If we are compiling with optimizing read this file.  It contains
    several optimizing inline functions and macros.  */
-#ifdef __USE_EXTERN_INLINES
+#if defined __USE_EXTERN_INLINES || defined _LIBC
 # include <bits/stdio.h>
 #endif
 #if __USE_FORTIFY_LEVEL > 0 && defined __fortify_function

http://sourceware.org/git/gitweb.cgi?p=glibc.git;a=commitdiff;h=c0d2afe47ec858e0363c15bb92078ead8edecd7d

commit c0d2afe47ec858e0363c15bb92078ead8edecd7d
Author: H.J. Lu <hjl.tools@gmail.com>
Date:   Thu Jan 14 10:16:35 2016 -0800

    Compile x86 syscalls with -fomit-frame-pointer

diff --git a/sysdeps/unix/sysv/linux/i386/Makefile b/sysdeps/unix/sysv/linux/i386/Makefile
index 71ba61e..7014829 100644
--- a/sysdeps/unix/sysv/linux/i386/Makefile
+++ b/sysdeps/unix/sysv/linux/i386/Makefile
@@ -10,6 +10,10 @@ CFLAGS-mmap.o += -fomit-frame-pointer
 CFLAGS-mmap.os += -fomit-frame-pointer
 CFLAGS-mmap64.o += -fomit-frame-pointer
 CFLAGS-mmap64.os += -fomit-frame-pointer
+CFLAGS-pselect.o += -fomit-frame-pointer
+CFLAGS-pselect.os += -fomit-frame-pointer
+CFLAGS-rtld-mmap.o += -fomit-frame-pointer
+CFLAGS-rtld-mmap.os += -fomit-frame-pointer
 endif
 
 ifeq ($(subdir),sysvipc)
@@ -26,11 +30,31 @@ endif
 # fallocate, posix_fallocate use six-argument inline syscalls.
 ifeq ($(subdir),io)
 sysdep_routines += libc-do-syscall
+# %ebp may be used to pass the 6th argument to syscall.
+CFLAGS-fallocate.o += -fomit-frame-pointer
+CFLAGS-fallocate.os += -fomit-frame-pointer
+CFLAGS-fallocate64.o += -fomit-frame-pointer
+CFLAGS-fallocate64.os += -fomit-frame-pointer
+CFLAGS-posix_fallocate.o += -fomit-frame-pointer
+CFLAGS-posix_fallocate.os += -fomit-frame-pointer
+CFLAGS-posix_fallocate64.o += -fomit-frame-pointer
+CFLAGS-posix_fallocate64.os += -fomit-frame-pointer
+CFLAGS-sync_file_range.o += -fomit-frame-pointer
+CFLAGS-sync_file_range.os += -fomit-frame-pointer
 endif
 
 # libpthread uses six-argument inline syscalls.
 ifeq ($(subdir),nptl)
 libpthread-sysdep_routines += libc-do-syscall
+# %ebp may be used to pass the 6th argument to syscall.
+CFLAGS-pthread_rwlock_timedrdlock.o += -fomit-frame-pointer
+CFLAGS-pthread_rwlock_timedrdlock.os += -fomit-frame-pointer
+CFLAGS-pthread_rwlock_timedwrlock.o += -fomit-frame-pointer
+CFLAGS-pthread_rwlock_timedwrlock.os += -fomit-frame-pointer
+CFLAGS-sem_timedwait.o += -fomit-frame-pointer
+CFLAGS-sem_timedwait.os += -fomit-frame-pointer
+CFLAGS-sem_wait.o += -fomit-frame-pointer
+CFLAGS-sem_wait.os += -fomit-frame-pointer
 endif
 
 ifeq ($(subdir),resource)

http://sourceware.org/git/gitweb.cgi?p=glibc.git;a=commitdiff;h=91c5dfa432a6be078105f8aacf8acd0eb26de8f4

commit 91c5dfa432a6be078105f8aacf8acd0eb26de8f4
Author: H.J. Lu <hjl.tools@gmail.com>
Date:   Thu Jan 14 04:15:03 2016 -0800

    Use TIME_T_MAX and TIME_T_MIN in tst-mktime2.c
    
    GCC 5.3 compiles
    
    for (time_t_max = 1; 0 < time_t_max; time_t_max *= 2)
        continue;
    
    into an infinite loop with -Os.  We can copy TIME_T_MAX and TIME_T_MIN
    from time/mktime.c.
    
    	[BZ #19466]
    	* time/tst-mktime2.c (TYPE_SIGNED): New.
    	(TYPE_MINIMUM): Likewise.
    	(TYPE_MAXIMUM): Likewise.
    	(TIME_T_MIN): Likewise.
    	(TIME_T_MAX): Likewise.
    	(do_test): Initialize time_t_max and time_t_min with TIME_T_MAX
    	and TIME_T_MIN.

diff --git a/time/tst-mktime2.c b/time/tst-mktime2.c
index bc7cc58..fd40ab7 100644
--- a/time/tst-mktime2.c
+++ b/time/tst-mktime2.c
@@ -5,6 +5,29 @@
 #include <stdlib.h>
 #include <unistd.h>
 
+/* True if the arithmetic type T is signed.  */
+#define TYPE_SIGNED(t) (! ((t) 0 < (t) -1))
+
+/* The maximum and minimum values for the integer type T.  These
+   macros have undefined behavior if T is signed and has padding bits.
+   If this is a problem for you, please let us know how to fix it for
+   your host.  */
+#define TYPE_MINIMUM(t) \
+  ((t) (! TYPE_SIGNED (t) \
+	? (t) 0 \
+	: ~ TYPE_MAXIMUM (t)))
+#define TYPE_MAXIMUM(t) \
+  ((t) (! TYPE_SIGNED (t) \
+	? (t) -1 \
+	: ((((t) 1 << (sizeof (t) * CHAR_BIT - 2)) - 1) * 2 + 1)))
+
+#ifndef TIME_T_MIN
+# define TIME_T_MIN TYPE_MINIMUM (time_t)
+#endif
+#ifndef TIME_T_MAX
+# define TIME_T_MAX TYPE_MAXIMUM (time_t)
+#endif
+
 static time_t time_t_max;
 static time_t time_t_min;
 
@@ -113,12 +136,8 @@ do_test (void)
      isn't worth using anyway.  */
   alarm (60);
 
-  for (time_t_max = 1; 0 < time_t_max; time_t_max *= 2)
-    continue;
-  time_t_max--;
-  if ((time_t) -1 < 0)
-    for (time_t_min = -1; (time_t) (time_t_min * 2) < 0; time_t_min *= 2)
-      continue;
+  time_t_max = TIME_T_MAX;
+  time_t_min = TIME_T_MIN;
   delta = time_t_max / 997; /* a suitable prime number */
   for (i = 0; i < N_STRINGS; i++)
     {

http://sourceware.org/git/gitweb.cgi?p=glibc.git;a=commitdiff;h=d00caa24e1fcda5e317e7dd825a4fa023aa27583

commit d00caa24e1fcda5e317e7dd825a4fa023aa27583
Author: H.J. Lu <hjl.tools@gmail.com>
Date:   Wed Jan 13 17:26:00 2016 -0800

    Add string_private.h to define _STRING_ARCH_unaligned
    
    _STRING_ARCH_unaligned is used unconditionally in glibc.  But
    <bits/string.h>, which defines _STRING_ARCH_unaligned, isn't
    included with -Os.  Since _STRING_ARCH_unaligned is internal to
    glibc and may change between glibc releases, it should be made
    private to glibc.  This patch adds string_private.h to define
    _STRING_ARCH_unaligned, which is included unconditionally from
    internal <string.h> for glibc build.
    
    	[BZ #19462]
    	* bits/string.h (_STRING_ARCH_unaligned): Removed.
    	* include/string.h: Include <string_private.h>.
    	* sysdeps/aarch64/bits/string.h: Renamed to ...
    	* sysdeps/aarch64/string_private.h: This.
    	* sysdeps/generic/string_private.h: New file.
    	* sysdeps/s390/string_private.h: Likewise.
    	* sysdeps/x86/string_private.h: Likewise.
    	* sysdeps/m68k/m680x0/m68020/bits/string.h: Renamed to ...
    	* sysdeps/m68k/m680x0/m68020/string_private.h: This.
    	* sysdeps/s390/bits/string.h (_STRING_ARCH_unaligned): Removed.
    	* sysdeps/sparc/bits/string.h (_STRING_ARCH_unaligned): Likewise.
    	* sysdeps/x86/bits/string.h (_STRING_ARCH_unaligned): Likewise.

diff --git a/bits/string.h b/bits/string.h
index b88a6bc..faa6870 100644
--- a/bits/string.h
+++ b/bits/string.h
@@ -8,7 +8,4 @@
 #ifndef _BITS_STRING_H
 #define _BITS_STRING_H	1
 
-/* Define if architecture can access unaligned multi-byte variables.  */
-#define _STRING_ARCH_unaligned   0
-
 #endif /* bits/string.h */
diff --git a/include/string.h b/include/string.h
index a684fd9..e145bfd 100644
--- a/include/string.h
+++ b/include/string.h
@@ -46,6 +46,9 @@ extern int __ffs (int __i) __attribute__ ((const));
 extern char *__strerror_r (int __errnum, char *__buf, size_t __buflen);
 #endif
 
+/* Get _STRING_ARCH_unaligned.  */
+#include <string_private.h>
+
 /* Now the real definitions.  We do this here since some of the functions
    above are defined as macros in the headers.  */
 #include <string/string.h>
diff --git a/sysdeps/aarch64/bits/string.h b/sysdeps/aarch64/string_private.h
similarity index 76%
copy from sysdeps/aarch64/bits/string.h
copy to sysdeps/aarch64/string_private.h
index 3c2a50b..7e2af74 100644
--- a/sysdeps/aarch64/bits/string.h
+++ b/sysdeps/aarch64/string_private.h
@@ -1,5 +1,5 @@
-/* Optimized, inlined string functions.  AArch64 version.
-   Copyright (C) 2015-2016 Free Software Foundation, Inc.
+/* Define _STRING_ARCH_unaligned.  AArch64 version.
+   Copyright (C) 2016 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
@@ -16,9 +16,5 @@
    License along with the GNU C Library; if not, see
    <http://www.gnu.org/licenses/>.  */
 
-#ifndef _STRING_H
-# error "Never use <bits/string.h> directly; include <string.h> instead."
-#endif
-
 /* AArch64 implementations support efficient unaligned access.  */
-#define _STRING_ARCH_unaligned 1
+#define _STRING_ARCH_unaligned   1
diff --git a/sysdeps/m68k/m680x0/m68020/bits/string.h b/sysdeps/generic/string_private.h
similarity index 60%
rename from sysdeps/m68k/m680x0/m68020/bits/string.h
rename to sysdeps/generic/string_private.h
index 88505bb..c880aae 100644
--- a/sysdeps/m68k/m680x0/m68020/bits/string.h
+++ b/sysdeps/generic/string_private.h
@@ -1,5 +1,5 @@
-/* Optimized, inlined string functions.  m680x0 version, x >= 2.
-   Copyright (C) 1997-2016 Free Software Foundation, Inc.
+/* Define _STRING_ARCH_unaligned.  Generic version.
+   Copyright (C) 2016 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
@@ -13,13 +13,9 @@
    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
+   License along with the GNU C Library; if not, see
    <http://www.gnu.org/licenses/>.  */
 
-#ifndef _STRING_H
-# error "Never use <bits/string.h> directly; include <string.h> instead."
-#endif
-
-/* Currently the only purpose of this file is to tell the generic inline
-   macros that unaligned memory access is possible.  */
-#define _STRING_ARCH_unaligned	1
+/* Define to 1 if architecture can access unaligned multi-byte
+   variables.  */
+#define _STRING_ARCH_unaligned   0
diff --git a/sysdeps/aarch64/bits/string.h b/sysdeps/m68k/m680x0/m68020/string_private.h
similarity index 69%
copy from sysdeps/aarch64/bits/string.h
copy to sysdeps/m68k/m680x0/m68020/string_private.h
index 3c2a50b..6846663 100644
--- a/sysdeps/aarch64/bits/string.h
+++ b/sysdeps/m68k/m680x0/m68020/string_private.h
@@ -1,5 +1,5 @@
-/* Optimized, inlined string functions.  AArch64 version.
-   Copyright (C) 2015-2016 Free Software Foundation, Inc.
+/* Define _STRING_ARCH_unaligned.  m680x0 version, x >= 2.
+   Copyright (C) 2016 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
@@ -16,9 +16,6 @@
    License along with the GNU C Library; if not, see
    <http://www.gnu.org/licenses/>.  */
 
-#ifndef _STRING_H
-# error "Never use <bits/string.h> directly; include <string.h> instead."
-#endif
-
-/* AArch64 implementations support efficient unaligned access.  */
-#define _STRING_ARCH_unaligned 1
+/* Tell the generic inline macros that unaligned memory access is
+   possible.  */
+#define _STRING_ARCH_unaligned   1
diff --git a/sysdeps/s390/bits/string.h b/sysdeps/s390/bits/string.h
index 09201d9..8e4d605 100644
--- a/sysdeps/s390/bits/string.h
+++ b/sysdeps/s390/bits/string.h
@@ -21,9 +21,6 @@
 # error "Never use <bits/string.h> directly; include <string.h> instead."
 #endif
 
-/* The s390 processors can access unaligned multi-byte variables.  */
-#define _STRING_ARCH_unaligned	1
-
 /* We only provide optimizations if the user selects them and if
    GNU CC is used.  */
 #if !defined __NO_STRING_INLINES && defined __USE_STRING_INLINES \
diff --git a/sysdeps/aarch64/bits/string.h b/sysdeps/s390/string_private.h
similarity index 69%
copy from sysdeps/aarch64/bits/string.h
copy to sysdeps/s390/string_private.h
index 3c2a50b..9e11eee 100644
--- a/sysdeps/aarch64/bits/string.h
+++ b/sysdeps/s390/string_private.h
@@ -1,5 +1,5 @@
-/* Optimized, inlined string functions.  AArch64 version.
-   Copyright (C) 2015-2016 Free Software Foundation, Inc.
+/* Define _STRING_ARCH_unaligned.  S/390 version.
+   Copyright (C) 2016 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
@@ -16,9 +16,5 @@
    License along with the GNU C Library; if not, see
    <http://www.gnu.org/licenses/>.  */
 
-#ifndef _STRING_H
-# error "Never use <bits/string.h> directly; include <string.h> instead."
-#endif
-
-/* AArch64 implementations support efficient unaligned access.  */
-#define _STRING_ARCH_unaligned 1
+/* The s390 processors can access unaligned multi-byte variables.  */
+#define _STRING_ARCH_unaligned   1
diff --git a/sysdeps/sparc/bits/string.h b/sysdeps/sparc/bits/string.h
index 3054f62..336b58e 100644
--- a/sysdeps/sparc/bits/string.h
+++ b/sysdeps/sparc/bits/string.h
@@ -20,9 +20,6 @@
 # error "Never use <bits/string.h> directly; include <string.h> instead."
 #endif
 
-/* Define if architecture can access unaligned multi-byte variables.  */
-#define _STRING_ARCH_unaligned   0
-
 /* sparc32 and sparc64 strchr(x, '\0') perform better than
    __rawmemchr(x, '\0').  */
 #define _HAVE_STRING_ARCH_strchr 1
diff --git a/sysdeps/x86/bits/string.h b/sysdeps/x86/bits/string.h
index 1a0682b..b952d38 100644
--- a/sysdeps/x86/bits/string.h
+++ b/sysdeps/x86/bits/string.h
@@ -20,9 +20,6 @@
 # error "Never use <bits/string.h> directly; include <string.h> instead."
 #endif
 
-/* The ix86 processors can access unaligned multi-byte variables.  */
-#define _STRING_ARCH_unaligned	1
-
 /* Enable inline functions only for i486 or better when compiling for
    ia32.  */
 #if !defined __x86_64__ && (defined __i486__ || defined __pentium__	      \
diff --git a/sysdeps/aarch64/bits/string.h b/sysdeps/x86/string_private.h
similarity index 69%
rename from sysdeps/aarch64/bits/string.h
rename to sysdeps/x86/string_private.h
index 3c2a50b..e7281eb 100644
--- a/sysdeps/aarch64/bits/string.h
+++ b/sysdeps/x86/string_private.h
@@ -1,5 +1,5 @@
-/* Optimized, inlined string functions.  AArch64 version.
-   Copyright (C) 2015-2016 Free Software Foundation, Inc.
+/* Define _STRING_ARCH_unaligned.  i486/x86-64 version.
+   Copyright (C) 2016 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
@@ -16,9 +16,5 @@
    License along with the GNU C Library; if not, see
    <http://www.gnu.org/licenses/>.  */
 
-#ifndef _STRING_H
-# error "Never use <bits/string.h> directly; include <string.h> instead."
-#endif
-
-/* AArch64 implementations support efficient unaligned access.  */
-#define _STRING_ARCH_unaligned 1
+/* The ix86 processors can access unaligned multi-byte variables.  */
+#define _STRING_ARCH_unaligned   1

-----------------------------------------------------------------------


hooks/post-receive
-- 
GNU C Library master sources


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]