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 master updated. glibc-2.17-512-ga01f19c


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, master has been updated
       via  a01f19c8fb12eef419d4112879bc715e2ab6f6d7 (commit)
      from  b7a329a5614d9001abcc3300a3da548a0865a3ac (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.

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

commit a01f19c8fb12eef419d4112879bc715e2ab6f6d7
Author: Carlos O'Donell <carlos@redhat.com>
Date:   Sat Apr 6 12:00:35 2013 -0400

    i386: Fail at configure time for i386 builds.
    
    This change does two things:
    
    * Treats a target i386-* as if it were i686.
    * Fails configure if the user is generating code
      for i386.
    
    We no longer support i386 code-generation because the i386
    lacks the atomic operations we need in glibc.
    
    You can still configure for i386-*, but you get i686 code.
    
    You can't build with --march=i386, --mtune=i386 or a compiler
    that defaults to i386 code-generation.
    
    I've added two i386 entries in the master todo list to discuss
    merging and renaming:
    http://sourceware.org/glibc/wiki/Development_Todo/Master#i386
    
    The failure modes are fail-safe here. You compile for i386,
    get i686, and try to run on i386 and it fails. The configure
    log has a warning saying we elided to i686. There is no situation
    that I can see where we run into any serious problems.
    
    The patch makes the current state better in that we get less
    confused users and we build successfully in more default
    configurations.
    
    The next enhancement would be to add --march=i?86
    as suggested in #c20 of BZ#10062 for any i?86-* builds, which
    would solve the problem of a 32-bit compiler that defaults to
    i386 code-gen and glibc configured for i686-* target. Which
    previously failed at build time, and now will fail at configure
    time (requires adding --march=i686).
    
    Updated NEWS with BZ #10060 and #10062.
    
    No regressions.
    
    ---
    
    2013-04-06  Carlos O'Donell  <carlos@redhat.com>
    
    	[BZ #10060, #10062]
    	* aclocal.m4 (LIBC_COMPILER_BUILTIN_INLINED): New macro.
    	* sysdeps/i386/configure.in: Use LIBC_COMPILER_BUILTIN_INLINED and
    	fail configure if __sync_val_compare_and_swap is not inlined.
    	* sysdeps/i386/configure: Regenerate.
    	* configure.in: Build for i686 when configured for i386.
    	* configure: Regenerate.
    	* README: Remove i386 reference.

diff --git a/ChangeLog b/ChangeLog
index f72c3e0..25203dc 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,16 @@
 2013-04-06  Carlos O'Donell  <carlos@redhat.com>
 
+	[BZ #10060, #10062]
+	* aclocal.m4 (LIBC_COMPILER_BUILTIN_INLINED): New macro.
+	* sysdeps/i386/configure.in: Use LIBC_COMPILER_BUILTIN_INLINED and
+	fail configure if __sync_val_compare_and_swap is not inlined.
+	* sysdeps/i386/configure: Regenerate.
+	* configure.in: Build for i686 when configured for i386.
+	* configure: Regenerate.
+	* README: Remove i386 reference.
+
+2013-04-06  Carlos O'Donell  <carlos@redhat.com>
+
 	* sysdeps/s390/s390-32/sysdep.h: Undefine PSEUDO before redefinition.
 	* sysdeps/s390/s390-64/sysdep.h: Likewise.
 
diff --git a/NEWS b/NEWS
index b85b67d..e5c8c86 100644
--- a/NEWS
+++ b/NEWS
@@ -9,11 +9,11 @@ Version 2.18
 
 * The following bugs are resolved with this release:
 
-  10357, 11120, 11561, 12723, 13550, 13889, 13951, 14142, 14176, 14200,
-  14317, 14327, 14478, 14496, 14686, 14812, 14920, 14964, 14981, 14982,
-  14985, 14994, 14996, 15003, 15006, 15020, 15023, 15036, 15054, 15055,
-  15062, 15078, 15160, 15214, 15232, 15234, 15283, 15285, 15287, 15304,
-  15305, 15307, 15327, 15330, 15335, 15336, 15337, 15342.
+  10060, 10062, 10357, 11120, 11561, 12723, 13550, 13889, 13951, 14142,
+  14176, 14200, 14317, 14327, 14478, 14496, 14686, 14812, 14920, 14964,
+  14981, 14982, 14985, 14994, 14996, 15003, 15006, 15020, 15023, 15036,
+  15054, 15055, 15062, 15078, 15160, 15214, 15232, 15234, 15283, 15285,
+  15287, 15304, 15305, 15307, 15327, 15330, 15335, 15336, 15337, 15342.
 
 * CVE-2013-0242 Buffer overrun in regexp matcher has been fixed (Bugzilla
   #15078).
diff --git a/README b/README
index 6fdfc03..bb4ccb8 100644
--- a/README
+++ b/README
@@ -12,7 +12,7 @@ implement the operating system behavior seen by user applications.
 In GNU/Hurd systems, it works with a microkernel and Hurd servers.
 
 The GNU C Library implements much of the POSIX.1 functionality in the
-GNU/Hurd system, using configurations i[34567]86-*-gnu.  The current
+GNU/Hurd system, using configurations i[4567]86-*-gnu.  The current
 GNU/Hurd support requires out-of-tree patches that will eventually be
 incorporated into an official GNU C Library release.
 
diff --git a/aclocal.m4 b/aclocal.m4
index 042a7e3..64351d0 100644
--- a/aclocal.m4
+++ b/aclocal.m4
@@ -248,3 +248,36 @@ dnl LIBC_CONFIG_VAR(make-variable, shell-value)
 AC_DEFUN([LIBC_CONFIG_VAR],
 [config_vars="$config_vars
 $1 = $2"])
+
+dnl Check that function FUNC was inlined as a builtin.  The code fragment
+dnl CODE is compiled with additional options CC_OPTION.  If FUNC is
+dnl not found in the assembly then it is assumed the compiler has support
+dnl for this builtin and has inlined the call.  If the compiler has the
+dnl feature then ACTION-IF-TRUE is called, otherwise ACTION-IF-FALSE.
+dnl It is up to the caller to provide a CC_OPTION that ensures the
+dnl builtin is inlined if present.
+dnl Warning: This may not work for some machines. For example on ARM the
+dnl ABI dictates that some functions should not be inlined and instead
+dnl should be provided by a compiler helper library e.g. __aeabi_memcpy.
+dnl This is done to reduce code size.
+dnl LIBC_COMPILER_BUILTIN([func], [code], [cc_option], [action-if-true], [action-if-false])
+AC_DEFUN([LIBC_COMPILER_BUILTIN_INLINED],
+[AC_MSG_CHECKING([for compiler support of inlined builtin function $1])
+libc_compiler_builtin_inlined=no
+cat > conftest.c <<EOF
+int _start (void) { $2 return 0; }
+EOF
+if ! AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS
+		     $3 -nostdlib -nostartfiles
+		     -S conftest.c -o - | fgrep "$1"
+		     1>&AS_MESSAGE_LOG_FD])
+then
+  libc_compiler_builtin_inlined=yes
+fi
+rm -f conftest*
+if test $libc_compiler_builtin_inlined = yes; then
+  $4
+else
+  $5
+fi
+AC_MSG_RESULT($libc_compiler_builtin_inlined)])
diff --git a/configure b/configure
index 088bef0..0b50df9 100755
--- a/configure
+++ b/configure
@@ -3741,6 +3741,15 @@ case "$machine-$host_os" in
     ;;
 esac
 
+# Configure for i686 if the user asks for i386. We don't support
+# i386 any more but it continues to be common for users to configure
+# 32-bit x86 as i386. We build for i686 instead.
+if test "$machine" = i386; then
+  machine="i686"
+  echo "\
+*** WARNING: Support for i386 is deprecated. Building for i686 instead."
+fi
+
 submachine=
 
 # Check whether --with-cpu was given.
diff --git a/configure.in b/configure.in
index bbdf156..d93ca5c 100644
--- a/configure.in
+++ b/configure.in
@@ -390,6 +390,15 @@ case "$machine-$host_os" in
     ;;
 esac
 
+# Configure for i686 if the user asks for i386. We don't support
+# i386 any more but it continues to be common for users to configure
+# 32-bit x86 as i386. We build for i686 instead.
+if test "$machine" = i386; then
+  machine="i686"
+  echo "\
+*** WARNING: Support for i386 is deprecated. Building for i686 instead."
+fi
+
 submachine=
 AC_ARG_WITH([cpu],
 	    AS_HELP_STRING([--with-cpu=CPU], [select code for CPU variant]),
diff --git a/sysdeps/i386/configure b/sysdeps/i386/configure
index d81b613..a1a0fe7 100644
--- a/sysdeps/i386/configure
+++ b/sysdeps/i386/configure
@@ -32,6 +32,45 @@ $as_echo "$ac_res" >&6; }
 # This file is generated from configure.in by Autoconf.  DO NOT EDIT!
  # Local configure fragment for sysdeps/i386.
 
+# The GNU C Library can't be built for i386.  There are several reasons for
+# this restriction.  The primary reason is that i386 lacks the atomic
+# operations required to support the current NPTL implementation.  While it is
+# possible that such atomic operations could be emulated in the kernel to date
+# no such work has been done to enable this.  Even with NPTL disabled you still
+# have no atomic.h implementation.  Given the declining use of i386 we disable
+# support for building with `-march=i386' or `-mcpu=i386.' We don't explicitly
+# check for i386, instead we make sure the compiler has support for inlining
+# the builtin __sync_val_compare_and_swap. If it does then we should have no
+# problem building for i386.
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for compiler support of inlined builtin function __sync_val_compare_and_swap" >&5
+$as_echo_n "checking for compiler support of inlined builtin function __sync_val_compare_and_swap... " >&6; }
+libc_compiler_builtin_inlined=no
+cat > conftest.c <<EOF
+int _start (void) { int a, b, c; __sync_val_compare_and_swap (&a, b, c); return 0; }
+EOF
+if ! { ac_try='${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS
+		     -O0 -nostdlib -nostartfiles
+		     -S conftest.c -o - | fgrep "__sync_val_compare_and_swap"
+		     1>&5'
+  { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; }
+then
+  libc_compiler_builtin_inlined=yes
+fi
+rm -f conftest*
+if test $libc_compiler_builtin_inlined = yes; then
+  libc_cv_unsupported_i386=no
+else
+  as_fn_error $? "
+*** Building with -march=i386/-mcpu=i386 is not supported.
+*** Please use host i786, i686, i586, or i486." "$LINENO" 5
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $libc_compiler_builtin_inlined" >&5
+$as_echo "$libc_compiler_builtin_inlined" >&6; }
+
 
 ac_fn_c_check_header_compile "$LINENO" "cpuid.h" "ac_cv_header_cpuid_h" "/* No default includes.  */
 "
diff --git a/sysdeps/i386/configure.in b/sysdeps/i386/configure.in
index 9967a16..56a7c1f 100644
--- a/sysdeps/i386/configure.in
+++ b/sysdeps/i386/configure.in
@@ -1,6 +1,25 @@
 GLIBC_PROVIDES dnl See aclocal.m4 in the top level source directory.
 # Local configure fragment for sysdeps/i386.
 
+# The GNU C Library can't be built for i386.  There are several reasons for
+# this restriction.  The primary reason is that i386 lacks the atomic
+# operations required to support the current NPTL implementation.  While it is
+# possible that such atomic operations could be emulated in the kernel to date
+# no such work has been done to enable this.  Even with NPTL disabled you still
+# have no atomic.h implementation.  Given the declining use of i386 we disable
+# support for building with `-march=i386' or `-mcpu=i386.' We don't explicitly
+# check for i386, instead we make sure the compiler has support for inlining
+# the builtin __sync_val_compare_and_swap. If it does then we should have no
+# problem building for i386.
+LIBC_COMPILER_BUILTIN_INLINED(
+  [__sync_val_compare_and_swap],
+  [int a, b, c; __sync_val_compare_and_swap (&a, b, c);],
+  [-O0],
+  [libc_cv_unsupported_i386=no],
+  [AC_MSG_ERROR([
+*** Building with -march=i386/-mcpu=i386 is not supported.
+*** Please use host i786, i686, i586, or i486.])])
+
 AC_CHECK_HEADER([cpuid.h], ,
   [AC_MSG_ERROR([gcc must provide the <cpuid.h> header])],
   [/* No default includes.  */])

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

Summary of changes:
 ChangeLog                 |   11 +++++++++++
 NEWS                      |   10 +++++-----
 README                    |    2 +-
 aclocal.m4                |   33 +++++++++++++++++++++++++++++++++
 configure                 |    9 +++++++++
 configure.in              |    9 +++++++++
 sysdeps/i386/configure    |   39 +++++++++++++++++++++++++++++++++++++++
 sysdeps/i386/configure.in |   19 +++++++++++++++++++
 8 files changed, 126 insertions(+), 6 deletions(-)


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]