summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorjoseph <joseph@7b3dc134-2b1b-0410-93df-9e9f96275f8d>2012-07-03 19:42:25 +0000
committerjoseph <joseph@7b3dc134-2b1b-0410-93df-9e9f96275f8d>2012-07-03 19:42:25 +0000
commit20f73aac36c2b2c240dcc379d5117488fe44960c (patch)
treec92a56fb1b39fc4a7c9a012c36b668b2d200b0d0
parentf6c15fd48a4bf9a3675dc4570f9a06eef0e04096 (diff)
Merge changes between r19447 and r19464 from /fsf/trunk.
git-svn-id: svn://svn.eglibc.org/trunk@19465 7b3dc134-2b1b-0410-93df-9e9f96275f8d
-rw-r--r--libc/ChangeLog64
-rw-r--r--libc/Makeconfig68
-rw-r--r--libc/NEWS7
-rw-r--r--libc/Rules45
-rw-r--r--libc/elf/Makefile6
-rw-r--r--libc/elf/static-stubs.c46
-rw-r--r--libc/math/libm-test.inc9
-rw-r--r--libc/ports/.gitignore1
-rw-r--r--libc/ports/Banner1
-rw-r--r--libc/ports/ChangeLog6
-rw-r--r--libc/ports/ChangeLog.arm7
-rw-r--r--libc/ports/ChangeLog.powerpc13
-rw-r--r--libc/ports/Makefile43
-rw-r--r--libc/ports/sysdeps/arm/Makefile8
-rw-r--r--libc/ports/sysdeps/powerpc/dl-procinfo.c5
-rw-r--r--libc/ports/sysdeps/powerpc/dl-procinfo.h17
-rw-r--r--libc/sysdeps/i386/fpu/libm-test-ulps16
-rw-r--r--libc/sysdeps/ieee754/flt-32/k_rem_pio2f.c37
-rw-r--r--libc/version.h4
-rw-r--r--ports/ChangeLog4
-rw-r--r--ports/README.ports-moved-to-libc4
21 files changed, 313 insertions, 98 deletions
diff --git a/libc/ChangeLog b/libc/ChangeLog
index 75dea027a..dc750a570 100644
--- a/libc/ChangeLog
+++ b/libc/ChangeLog
@@ -1,3 +1,67 @@
+2012-07-03 Joseph Myers <joseph@codesourcery.com>
+
+ * Makeconfig [!+link] (+link-before-libc): New variable.
+ [!+link] (+link-after-libc): Likewise.
+ [!+link] (+link-tests): Likewise.
+ [!+link] (+link): Define in terms of $(+link-before-libc) and
+ $(+link-after-libc).
+ [!+link-static] (+link-static-before-libc): New variable.
+ [!+link-static] (+link-static-after-libc): Likewise.
+ [!+link-static] (+link-static-tests): Likewise.
+ [!+link-static] (+link-static): Define in terms of
+ $(+link-static-before-libc) and $(+link-static-after-libc).
+ [build-shared] (link-libc-before-gnulib): New variable.
+ [build-shared] (link-libc-tests): Likewise.
+ [build-shared] (link-libc): Define in terms of
+ $(link-libc-before-gnulib).
+ [!build-shared] (link-libc-tests): New variable.
+ (link-libc-static-tests): New variable.
+ [!gnulib] (gnulib-arch): New variable.
+ [!gnulib] (gnulib-tests): Likewise.
+ [!gnulib] (static-gnulib-arch): Likewise.
+ [!gnulib] (static-gnulib-tests): Likewise.
+ [!gnulib] (gnulib): Use $(gnulib-arch). Do not use $(libgcc_eh).
+ Define with "=" instead of ":=".
+ [!gnulib] (static-gnulib): Use $(static-gnulib-arch). Do not use
+ -lgcc_eh $(libunwind). Define with "=" instead of ":=".
+ * Rules (binaries-all-notests): New variable.
+ (binaries-all-tests): Likewise.
+ (binaries-static-notests): Likewise.
+ (binaries-static-tests): Likewise.
+ (binaries-all): Define using $(binaries-all-notests) and
+ $(binaries-all-tests).
+ (binaries-static): Define using $(binaries-static-notests) and
+ $(binaries-static-tests).
+ (binaries-shared-tests): New variable.
+ (binaries-shared-notests): Likewise.
+ (binaries-shared): Remove variable.
+ ($(addprefix $(objpfx),$(binaries-shared-notests))): New rule.
+ ($(addprefix $(objpfx),$(binaries-shared-tests))): Likewise.
+ ($(addprefix $(objpfx),$(binaries-shared))): Remove rule.
+ ($(addprefix $(objpfx),$(binaries-static-notests))): New rule.
+ ($(addprefix $(objpfx),$(binaries-static-tests))): Likewise.
+ ($(addprefix $(objpfx),$(binaries-static))): Remove rule.
+ * elf/Makefile (sln-modules): New variable.
+ (extra-objs): Add $(sln-modules:=.o).
+ (ldconfig-modules): Add static-stubs.
+ ($(objpfx)sln): Depend on $(sln-modules:%=$(objpfx)%.o).
+ * elf/static-stubs.c: New file.
+
+ [BZ #14283]
+ * sysdeps/ieee754/flt-32/k_rem_pio2f.c (__kernel_rem_pio2f): Shift
+ by 7 not 8 to examine high bit of fractional part. Use volatile
+ variables when splitting into final array of floats if
+ __FLT_EVAL_METHOD__ != 0.
+ * math/libm-test.inc (cos_test): Add another test.
+ (sin_test): Likewise.
+ * sysdeps/i386/fpu/libm-test-ulps: Update.
+
+ [BZ #14273]
+ * math/libm-test.inc (cosh_test): Add more tests.
+
+ * version.h (RELEASE): Set to "development".
+ (VERSION): Set to "2.16.90".
+
2012-06-30 Carlos O'Donell <carlos_odonell@mentor.com>
* NEWS: Update copyright. Remove last-updated date.
diff --git a/libc/Makeconfig b/libc/Makeconfig
index cdb94a5d6..c89fab0bc 100644
--- a/libc/Makeconfig
+++ b/libc/Makeconfig
@@ -415,9 +415,9 @@ LDFLAGS.so += $(hashstyle-LDFLAGS)
LDFLAGS-rtld += $(hashstyle-LDFLAGS)
endif
-# Command for linking programs with the C library.
+# Commands for linking programs with the C library.
ifndef +link
-+link = $(CC) -nostdlib -nostartfiles -o $@ \
++link-before-libc = $(CC) -nostdlib -nostartfiles -o $@ \
$(sysdep-LDFLAGS) $(config-LDFLAGS) $(LDFLAGS) $(LDFLAGS-$(@F)) \
$(combreloc-LDFLAGS) $(relro-LDFLAGS) $(hashstyle-LDFLAGS) \
$(addprefix $(csu-objpfx),$(start-installed-name)) \
@@ -426,7 +426,10 @@ ifndef +link
$(start-installed-name))\
$(+preinit) $(link-extra-libs) \
$(common-objpfx)libc% $(+postinit),$^) \
- $(link-extra-libs) $(link-libc) $(+postctor) $(+postinit)
+ $(link-extra-libs)
++link-after-libc = $(+postctor) $(+postinit)
++link = $(+link-before-libc) $(link-libc) $(+link-after-libc)
++link-tests = $(+link-before-libc) $(link-libc-tests) $(+link-after-libc)
endif
# Command for linking PIE programs with the C library.
ifndef +link-pie
@@ -443,7 +446,7 @@ ifndef +link-pie
endif
# Command for statically linking programs with the C library.
ifndef +link-static
-+link-static = $(CC) -nostdlib -nostartfiles -static -o $@ \
++link-static-before-libc = $(CC) -nostdlib -nostartfiles -static -o $@ \
$(sysdep-LDFLAGS) $(LDFLAGS) $(LDFLAGS-$(@F)) \
$(addprefix $(csu-objpfx),$(static-start-installed-name)) \
$(+preinit) $(+prector) \
@@ -451,7 +454,12 @@ ifndef +link-static
$(start-installed-name))\
$(+preinit) $(link-extra-libs-static) \
$(common-objpfx)libc% $(+postinit),$^) \
- $(link-extra-libs-static) $(link-libc-static) $(+postctor) $(+postinit)
+ $(link-extra-libs-static) $(link-libc-static)
++link-static-after-libc = $(+postctor) $(+postinit)
++link-static = $(+link-static-before-libc) $(link-libc-static) \
+ $(+link-static-after-libc)
++link-static-tests = $(+link-static-before-libc) $(link-libc-static-tests) \
+ $(+link-static-after-libc)
endif
# Command for statically linking bounded-pointer programs with the C library.
ifndef +link-bounded
@@ -475,10 +483,12 @@ ifeq (yes,$(build-shared))
# We need the versioned name of libc.so in the deps of $(others) et al
# so that the symlink to libc.so is created before anything tries to
# run the linked programs.
-link-libc = -Wl,-rpath-link=$(rpath-link) \
+link-libc-before-gnulib = -Wl,-rpath-link=$(rpath-link) \
$(common-objpfx)libc.so$(libc.so-version) \
$(common-objpfx)$(patsubst %,$(libtype.oS),c) \
- $(as-needed) $(common-objpfx)elf/ld.so $(no-as-needed) $(gnulib)
+ $(as-needed) $(common-objpfx)elf/ld.so $(no-as-needed)
+link-libc = $(link-libc-before-gnulib) $(gnulib)
+link-libc-tests = $(link-libc-before-gnulib) $(gnulib-tests)
# This is how to find at build-time things that will be installed there.
rpath-dirs = math elf dlfcn nss nis rt resolv crypt
rpath-link = \
@@ -488,6 +498,7 @@ else
nssobjdir := $(patsubst ../$(subdir),.,$(common-objpfx)nss)
resolvobjdir := $(patsubst ../$(subdir),.,$(common-objpfx)resolv)
link-libc = $(common-objpfx)libc.a $(otherlibs) $(gnulib) $(common-objpfx)libc.a $(gnulib)
+link-libc-tests = $(common-objpfx)libc.a $(otherlibs) $(gnulib-tests) $(common-objpfx)libc.a $(gnulib-tests)
endif
endif
@@ -513,8 +524,43 @@ endif
# The static libraries.
link-libc-static = -Wl,--start-group $(common-objpfx)libc.a $(static-gnulib) -Wl,--end-group
+link-libc-static-tests = -Wl,--start-group $(common-objpfx)libc.a $(static-gnulib-tests) -Wl,--end-group
link-libc-bounded = $(common-objpfx)libc_b.a $(gnulib) $(common-objpfx)libc_b.a
+# How to link against libgcc. Some libgcc functions, such as those
+# for "long long" arithmetic or software floating point, can always be
+# built without use of C library headers and do not have any global
+# state so can safely be linked statically into any executable or
+# shared library requiring them; these functions are in libgcc.a.
+# Other functions, relating to exception handling, may require C
+# library headers to build and it may not be safe to have more than
+# one copy of them in a process; these functions are only in
+# libgcc_s.so and libgcc_eh.a.
+#
+# To avoid circular dependencies when bootstrapping, it is desirable
+# to avoid use of libgcc_s and libgcc_eh in building glibc. Where any
+# glibc functionality (in particular, thread cancellation) requires
+# exception handling, this is implemented through dlopen of libgcc_s
+# to avoid unnecessary dependencies on libgcc_s by programs not using
+# that functionality; executables built with glibc do not use
+# exception handling other than through thread cancellation.
+#
+# Undefined references to functions from libgcc_eh or libgcc_s may
+# arise for code built with -fexceptions. In the case of statically
+# linked programs installed by glibc, unwinding will never actually
+# occur at runtime and the use of elf/static-stubs.c to resolve these
+# references is safe. In the case of statically linked test programs
+# and test programs built with -fexceptions, unwinding may occur in
+# some cases and it is preferable to link with libgcc_eh or libgcc_s
+# so that the testing is as similar as possible to how programs will
+# be built with the installed glibc.
+#
+# Some architectures have architecture-specific systems for exception
+# handling that may involve undefined references to
+# architecture-specific functions. On those architectures,
+# gnulib-arch and static-gnulib-arch may be defined in sysdeps
+# makefiles to use additional libraries for linking executables and
+# shared libraries built by glibc.
ifndef gnulib
ifneq ($(have-cc-with-libunwind),yes)
libunwind =
@@ -522,8 +568,12 @@ else
libunwind = -lunwind
endif
libgcc_eh := -Wl,--as-needed -lgcc_s $(libunwind) -Wl,--no-as-needed
-gnulib := -lgcc $(libgcc_eh)
-static-gnulib := -lgcc -lgcc_eh $(libunwind)
+gnulib-arch =
+gnulib = -lgcc $(gnulib-arch)
+gnulib-tests := -lgcc $(libgcc_eh)
+static-gnulib-arch =
+static-gnulib = -lgcc $(static-gnulib-arch)
+static-gnulib-tests := -lgcc -lgcc_eh $(libunwind)
libc.so-gnulib := -lgcc
endif
+preinit = $(addprefix $(csu-objpfx),crti.o)
diff --git a/libc/NEWS b/libc/NEWS
index a90d95599..a24c3fba2 100644
--- a/libc/NEWS
+++ b/libc/NEWS
@@ -5,6 +5,13 @@ See the end for copying conditions.
Please send GNU C library bug reports via <http://sources.redhat.com/bugzilla/>
using `glibc' in the "product" field.
+Version 2.17
+
+* The following bugs are resolved with this release:
+
+ 14283
+
+
Version 2.16
* The following bugs are resolved with this release:
diff --git a/libc/Rules b/libc/Rules
index de9dd2423..c7bdddb78 100644
--- a/libc/Rules
+++ b/libc/Rules
@@ -1,5 +1,4 @@
-# Copyright (C) 1991-2000,2002,2003,2004,2005,2006,2011
-# Free Software Foundation, Inc.
+# Copyright (C) 1991-2012 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
@@ -103,29 +102,46 @@ xtests: tests $(xtests:%=$(objpfx)%.out) $(xtests-bp.out)
# eglibc: endif
ifeq ($(build-programs),yes)
-binaries-all = $(others) $(sysdep-others) $(tests) $(xtests) $(test-srcs)
-binaries-static = $(others-static) $(tests-static) $(xtests-static)
+binaries-all-notests = $(others) $(sysdep-others)
+binaries-all-tests = $(tests) $(xtests) $(test-srcs)
+binaries-all = $(binaries-all-notests) $(binaries-all-tests)
+binaries-static-notests = $(others-static)
+binaries-static-tests = $(tests-static) $(xtests-static)
+binaries-static = $(binaries-static-notests) $(binaries-static-tests)
ifeq (yesyes,$(have-fpie)$(build-shared))
binaries-pie = $(others-pie) $(tests-pie) $(xtests-pie)
else
binaries-pie =
endif
else
-binaries-all = $(tests) $(xtests) $(test-srcs)
+binaries-all-notests =
+binaries-all-tests = $(tests) $(xtests) $(test-srcs)
+binaries-all = $(binaries-all-tests)
+binaries-static-notests =
+binaries-static-tests =
binaries-static =
binaries-pie =
endif
-binaries-shared = $(filter-out $(binaries-pie) $(binaries-static), \
- $(binaries-all))
+binaries-shared-tests = $(filter-out $(binaries-pie) $(binaries-static), \
+ $(binaries-all-tests))
+binaries-shared-notests = $(filter-out $(binaries-pie) $(binaries-static), \
+ $(binaries-all-notests))
-ifneq "$(strip $(binaries-shared))" ""
-$(addprefix $(objpfx),$(binaries-shared)): %: %.o \
+ifneq "$(strip $(binaries-shared-notests))" ""
+$(addprefix $(objpfx),$(binaries-shared-notests)): %: %.o \
$(sort $(filter $(common-objpfx)lib%,$(link-libc))) \
$(addprefix $(csu-objpfx),start.o) $(+preinit) $(+postinit)
$(+link)
endif
+ifneq "$(strip $(binaries-shared-tests))" ""
+$(addprefix $(objpfx),$(binaries-shared-tests)): %: %.o \
+ $(sort $(filter $(common-objpfx)lib%,$(link-libc))) \
+ $(addprefix $(csu-objpfx),start.o) $(+preinit) $(+postinit)
+ $(+link-tests)
+endif
+
ifneq "$(strip $(binaries-pie))" ""
$(addprefix $(objpfx),$(binaries-pie)): %: %.o \
$(sort $(filter $(common-objpfx)lib%,$(link-libc))) \
@@ -133,13 +149,20 @@ $(addprefix $(objpfx),$(binaries-pie)): %: %.o \
$(+link-pie)
endif
-ifneq "$(strip $(binaries-static))" ""
-$(addprefix $(objpfx),$(binaries-static)): %: %.o \
+ifneq "$(strip $(binaries-static-notests))" ""
+$(addprefix $(objpfx),$(binaries-static-notests)): %: %.o \
$(sort $(filter $(common-objpfx)lib%,$(link-libc-static))) \
$(addprefix $(csu-objpfx),start.o) $(+preinit) $(+postinit)
$(+link-static)
endif
+ifneq "$(strip $(binaries-static-tests))" ""
+$(addprefix $(objpfx),$(binaries-static-tests)): %: %.o \
+ $(sort $(filter $(common-objpfx)lib%,$(link-libc-static-tests))) \
+ $(addprefix $(csu-objpfx),start.o) $(+preinit) $(+postinit)
+ $(+link-static-tests)
+endif
+
ifeq ($(build-bounded),yes)
binaries-bounded = $(addsuffix -bp,$(tests) $(xtests) $(test-srcs))
$(addprefix $(objpfx),$(binaries-bounded)): %-bp: %.ob \
diff --git a/libc/elf/Makefile b/libc/elf/Makefile
index fd78f523d..2880e8089 100644
--- a/libc/elf/Makefile
+++ b/libc/elf/Makefile
@@ -71,6 +71,8 @@ others = sprof sln pldd
install-bin = sprof pldd
others-static = sln
install-rootsbin = sln
+sln-modules := static-stubs
+extra-objs += $(sln-modules:=.o)
ifeq (yes,$(use-ldconfig))
ifeq (yes,$(build-shared))
@@ -78,7 +80,7 @@ others-static += ldconfig
others += ldconfig
install-rootsbin += ldconfig
-ldconfig-modules := cache readlib xmalloc xstrdup chroot_canon
+ldconfig-modules := cache readlib xmalloc xstrdup chroot_canon static-stubs
extra-objs += $(ldconfig-modules:=.o)
endif
endif
@@ -417,6 +419,8 @@ $(objpfx)ldd: ldd.bash.in $(common-objpfx)soversions.mk \
$(objpfx)sprof: $(libdl)
+$(objpfx)sln: $(sln-modules:%=$(objpfx)%.o)
+
$(objpfx)ldconfig: $(ldconfig-modules:%=$(objpfx)%.o)
$(objpfx)pldd: $(pldd-modules:%=$(objpfx)%.o)
diff --git a/libc/elf/static-stubs.c b/libc/elf/static-stubs.c
new file mode 100644
index 000000000..6c5eebc3f
--- /dev/null
+++ b/libc/elf/static-stubs.c
@@ -0,0 +1,46 @@
+/* Stub implementations of functions to link into statically linked
+ programs without needing libgcc_eh.
+ Copyright (C) 2012 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/>. */
+
+/* Avoid backtrace (and so _Unwind_Backtrace) dependencies from
+ sysdeps/unix/sysv/linux/libc_fatal.c. */
+#include <sysdeps/posix/libc_fatal.c>
+
+#include <stdlib.h>
+#include <unwind.h>
+
+/* These programs do not use thread cancellation, so _Unwind_Resume
+ and the personality routine are never actually called. */
+
+void
+_Unwind_Resume (struct _Unwind_Exception *exc __attribute__ ((unused)))
+{
+ abort ();
+}
+
+_Unwind_Reason_Code
+__gcc_personality_v0 (int version __attribute__ ((unused)),
+ _Unwind_Action actions __attribute__ ((unused)),
+ _Unwind_Exception_Class exception_class
+ __attribute__ ((unused)),
+ struct _Unwind_Exception *ue_header
+ __attribute__ ((unused)),
+ struct _Unwind_Context *context __attribute__ ((unused)))
+{
+ abort ();
+}
diff --git a/libc/math/libm-test.inc b/libc/math/libm-test.inc
index 578cba245..92b2835ad 100644
--- a/libc/math/libm-test.inc
+++ b/libc/math/libm-test.inc
@@ -2597,6 +2597,8 @@ cos_test (void)
TEST_f_f (cos, 0.80190127184058835, 0.69534156199418473);
#endif
+ TEST_f_f (cos, 0x1.442f74p+15, 2.4407839902314016628485779006274989801517e-06L);
+
#ifndef TEST_FLOAT
TEST_f_f (cos, 1e22, 0.5232147853951389454975944733847094921409L);
TEST_f_f (cos, 0x1p1023, -0.826369834614147994500785680811743734805L);
@@ -2767,6 +2769,11 @@ cosh_test (void)
TEST_f_f (cosh, 0.75L, 1.29468328467684468784170818539018176L);
+#ifndef TEST_FLOAT
+ TEST_f_f (cosh, 709.8893558127259666434838436543941497802734375L, 9.9999998999995070652573675944761818416035e+307L);
+ TEST_f_f (cosh, -709.8893558127259666434838436543941497802734375L, 9.9999998999995070652573675944761818416035e+307L);
+#endif
+
END (cosh);
}
@@ -7700,6 +7707,8 @@ sin_test (void)
TEST_f_f (sin, 0x1p65, -0.047183876212354673805106149805700013943218L);
TEST_f_f (sin, -0x1p65, 0.047183876212354673805106149805700013943218L);
+ TEST_f_f (sin, 0x1.7f4134p+103, -6.6703229329788657073304190650534846045235e-08L);
+
#ifdef TEST_DOUBLE
TEST_f_f (sin, 0.80190127184058835, 0.71867942238767868);
TEST_f_f (sin, 2.522464e-1, 2.4957989804940911e-1);
diff --git a/libc/ports/.gitignore b/libc/ports/.gitignore
deleted file mode 100644
index 1c3f26029..000000000
--- a/libc/ports/.gitignore
+++ /dev/null
@@ -1 +0,0 @@
-autom4te*.cache
diff --git a/libc/ports/Banner b/libc/ports/Banner
deleted file mode 100644
index 6b9c1f0b4..000000000
--- a/libc/ports/Banner
+++ /dev/null
@@ -1 +0,0 @@
-Support for some architectures added on, not maintained in glibc core.
diff --git a/libc/ports/ChangeLog b/libc/ports/ChangeLog
index 4eb1e7f61..5adf0ec58 100644
--- a/libc/ports/ChangeLog
+++ b/libc/ports/ChangeLog
@@ -1,3 +1,9 @@
+2012-07-03 Joseph Myers <joseph@codesourcery.com>
+
+ * .gitignore: Remove file.
+ * Banner: Likewise.
+ * Makefile: Likewise.
+
2012-06-21 Carlos O'Donell <carlos_odonell@mentor.com>
* .gitignore: New file.
diff --git a/libc/ports/ChangeLog.arm b/libc/ports/ChangeLog.arm
index c411e1c1f..71e8b1b3d 100644
--- a/libc/ports/ChangeLog.arm
+++ b/libc/ports/ChangeLog.arm
@@ -1,3 +1,10 @@
+2012-07-03 Joseph Myers <joseph@codesourcery.com>
+
+ * sysdeps/arm/Makefile (gnulib-arch): New variable.
+ (static-gnulib-arch): Likewise.
+ [subdir = elf] ($(objpfx)libgcc-stubs.a): New rule.
+ [subdir = elf] (lib-noranlib): Depend on $(objpfx)libgcc-stubs.a.
+
2012-06-12 Joseph Myers <joseph@codesourcery.com>
* sysdeps/unix/sysv/linux/arm/setcontext.S (__startcontext): Use
diff --git a/libc/ports/ChangeLog.powerpc b/libc/ports/ChangeLog.powerpc
index 0c7d3af0e..7141bb279 100644
--- a/libc/ports/ChangeLog.powerpc
+++ b/libc/ports/ChangeLog.powerpc
@@ -1,3 +1,16 @@
+2012-07-03 Joseph Myers <joseph@codesourcery.com>
+
+ * sysdeps/powerpc/dl-procinfo.c (_dl_powerpc_platforms): Add
+ "ppca2".
+ * sysdeps/powerpc/dl-procinfo.h (_DL_PLATFORMS_COUNT): Increase to
+ 13.
+ (PPC_PLATFORM_PPCA2): Define.
+ (PPC_PLATFORM_PPC405): Increase value.
+ (PPC_PLATFORM_PPC440): Likewise.
+ (PPC_PLATFORM_PPC464): Likewise.
+ (PPC_PLATFORM_PPC476): Likewise.
+ (_dl_string_platform): Handle ppca2.
+
2012-06-13 Joseph Myers <joseph@codesourcery.com>
* data/localplt-powerpcsoft-linux-gnu.data: Allow abort and
diff --git a/libc/ports/Makefile b/libc/ports/Makefile
deleted file mode 100644
index 657fdeef7..000000000
--- a/libc/ports/Makefile
+++ /dev/null
@@ -1,43 +0,0 @@
-# This makefile is not used by the glibc build process.
-# It's purely for making ports tarballs.
-
-.PHONY: dist dist-ports
-dist: dist-ports
-
-# Do `make dist dist-version=X.Y.Z' to make tar files of an older version.
-dist-version = $(version)
-# Also try 'dist-tag=some="-r TAG"' (or -D DATE) to get some tag rather
-# than the release tag for X.Y.Z.
-dist-tag = -r glibc-$(subst .,_,$(dist-version))
-
-distname = glibc-ports-$(dist-version)
-
-do-export = cvs $(CVSOPTS) -Q export -d $(basename $@) $(dist-tag)
-
-dist-ports: $(foreach Z,.bz2 .gz,$(distname).tar$Z)
- md5sum $^
-$(distname).tar:
- @rm -fr $(basename $@)
- $(MAKE) -q `find sysdeps -name configure`
- $(do-export) ports
- find $(basename $@) -name configure -print | xargs touch
- tar cf $@ $(basename $@)
- rm -fr $(basename $@)
-
-sysdeps-of-stem = sysdeps/$* sysdeps/unix/sysv/linux/$*
-
-.PRECIOUS: %.gz %.bz2 # Don't delete output as intermediate files.
-dist-port-%: $(foreach Z,.bz2 .gz,glibc-port-%-$(dist-version).tar$Z)
- md5sum $^
-glibc-port-%-$(dist-version).tar: ChangeLog.%
- @rm -fr $(basename $@)
- $(MAKE) -q `find $(sysdeps-of-stem) -name configure`
- $(do-export) ports/ChangeLog.$* $(addprefix ports/,$(sysdeps-of-stem))
- mv $(basename $@)/ports/* $(basename $@)/
- rmdir $(basename $@)/ports
- find $(basename $@) -name configure -print | xargs touch
- tar cf $@ $(basename $@)
- rm -fr $(basename $@)
-
-%.bz2: %; bzip2 -9vk $<
-%.gz: %; gzip -9vnc $< > $@.new && mv -f $@.new $@
diff --git a/libc/ports/sysdeps/arm/Makefile b/libc/ports/sysdeps/arm/Makefile
index 69a5a6a11..355f5b309 100644
--- a/libc/ports/sysdeps/arm/Makefile
+++ b/libc/ports/sysdeps/arm/Makefile
@@ -1,8 +1,16 @@
+gnulib-arch = $(elfobjdir)/libgcc-stubs.a
+static-gnulib-arch = $(elfobjdir)/libgcc-stubs.a
+
ifeq ($(subdir),elf)
sysdep-dl-routines += tlsdesc dl-tlsdesc
sysdep_routines += aeabi_unwind_cpp_pr1 find_exidx tlsdesc dl-tlsdesc
sysdep-rtld-routines += aeabi_unwind_cpp_pr1 tlsdesc dl-tlsdesc
shared-only-routines += aeabi_unwind_cpp_pr1
+
+$(objpfx)libgcc-stubs.a: $(objpfx)aeabi_unwind_cpp_pr1.os
+ $(build-extra-lib)
+
+lib-noranlib: $(objpfx)libgcc-stubs.a
endif
ifeq ($(subdir),csu)
diff --git a/libc/ports/sysdeps/powerpc/dl-procinfo.c b/libc/ports/sysdeps/powerpc/dl-procinfo.c
index b1979ab1f..00cd497a2 100644
--- a/libc/ports/sysdeps/powerpc/dl-procinfo.c
+++ b/libc/ports/sysdeps/powerpc/dl-procinfo.c
@@ -1,5 +1,5 @@
/* Data for processor capability information. PowerPC version.
- Copyright (C) 2005, 2006, 2008 Free Software Foundation, Inc.
+ Copyright (C) 2005-2012 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
@@ -67,7 +67,7 @@ PROCINFO_CLASS const char _dl_powerpc_cap_flags[25][10]
#if !defined PROCINFO_DECL && defined SHARED
._dl_powerpc_platforms
#else
-PROCINFO_CLASS const char _dl_powerpc_platforms[12][12]
+PROCINFO_CLASS const char _dl_powerpc_platforms[13][12]
#endif
#ifndef PROCINFO_DECL
= {
@@ -79,6 +79,7 @@ PROCINFO_CLASS const char _dl_powerpc_platforms[12][12]
[PPC_PLATFORM_CELL_BE] = "ppc-cell-be",
[PPC_PLATFORM_POWER6X] = "power6x",
[PPC_PLATFORM_POWER7] = "power7",
+ [PPC_PLATFORM_PPCA2] = "ppca2",
[PPC_PLATFORM_PPC405] = "ppc405",
[PPC_PLATFORM_PPC440] = "ppc440",
[PPC_PLATFORM_PPC464] = "ppc464",
diff --git a/libc/ports/sysdeps/powerpc/dl-procinfo.h b/libc/ports/sysdeps/powerpc/dl-procinfo.h
index 785bd1ba0..98c37757a 100644
--- a/libc/ports/sysdeps/powerpc/dl-procinfo.h
+++ b/libc/ports/sysdeps/powerpc/dl-procinfo.h
@@ -1,5 +1,5 @@
/* Processor capability information handling macros. PowerPC version.
- Copyright (C) 2005, 2006, 2008 Free Software Foundation, Inc.
+ Copyright (C) 2005-2012 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
@@ -30,7 +30,7 @@
#define HWCAP_IMPORTANT (PPC_FEATURE_HAS_ALTIVEC \
+ PPC_FEATURE_HAS_DFP)
-#define _DL_PLATFORMS_COUNT 12
+#define _DL_PLATFORMS_COUNT 13
#define _DL_FIRST_PLATFORM 32
/* Mask to filter out platforms. */
@@ -46,10 +46,11 @@
#define PPC_PLATFORM_CELL_BE 5
#define PPC_PLATFORM_POWER6X 6
#define PPC_PLATFORM_POWER7 7
-#define PPC_PLATFORM_PPC405 8
-#define PPC_PLATFORM_PPC440 9
-#define PPC_PLATFORM_PPC464 10
-#define PPC_PLATFORM_PPC476 11
+#define PPC_PLATFORM_PPCA2 8
+#define PPC_PLATFORM_PPC405 9
+#define PPC_PLATFORM_PPC440 10
+#define PPC_PLATFORM_PPC464 11
+#define PPC_PLATFORM_PPC476 12
static inline const char *
__attribute__ ((unused))
@@ -127,6 +128,10 @@ _dl_string_platform (const char *str)
== 0)
return _DL_FIRST_PLATFORM + PPC_PLATFORM_CELL_BE;
else if (strcmp (str + 3,
+ GLRO(dl_powerpc_platforms)[PPC_PLATFORM_PPCA2] + 3)
+ == 0)
+ return _DL_FIRST_PLATFORM + PPC_PLATFORM_PPCA2;
+ else if (strcmp (str + 3,
GLRO(dl_powerpc_platforms)[PPC_PLATFORM_PPC405] + 3)
== 0)
return _DL_FIRST_PLATFORM + PPC_PLATFORM_PPC405;
diff --git a/libc/sysdeps/i386/fpu/libm-test-ulps b/libc/sysdeps/i386/fpu/libm-test-ulps
index 38a69e670..4661aea4a 100644
--- a/libc/sysdeps/i386/fpu/libm-test-ulps
+++ b/libc/sysdeps/i386/fpu/libm-test-ulps
@@ -1656,8 +1656,8 @@ Test "j1 (0.75) == 0.349243602174862192523281016426251335":
double: 1
idouble: 1
Test "j1 (0x1.3ffp+74) == 1.818984347516051243459364437186082741567e-12":
-float: 1
-ifloat: 1
+float: 2
+ifloat: 2
ildouble: 1
ldouble: 1
Test "j1 (0x1.ff00000000002p+840) == 1.846591691699331493194965158699937660696e-127":
@@ -2359,8 +2359,8 @@ float: 1
idouble: 1
ifloat: 1
Test "y0 (0x1.3ffp+74) == 1.818984347516051243459467456433028748678e-12":
-float: 1
-ifloat: 1
+float: 2
+ifloat: 2
ildouble: 1
ldouble: 1
Test "y0 (0x1.ff00000000002p+840) == 1.846591691699331493194965158699937660696e-127":
@@ -2956,9 +2956,9 @@ ldouble: 2
Function: "j1":
double: 2
-float: 1
+float: 2
idouble: 2
-ifloat: 1
+ifloat: 2
ildouble: 1
ldouble: 1
@@ -3128,9 +3128,9 @@ ldouble: 1
Function: "y0":
double: 2
-float: 1
+float: 2
idouble: 2
-ifloat: 1
+ifloat: 2
ildouble: 1
ldouble: 1
diff --git a/libc/sysdeps/ieee754/flt-32/k_rem_pio2f.c b/libc/sysdeps/ieee754/flt-32/k_rem_pio2f.c
index 06c2f378d..e54a0677e 100644
--- a/libc/sysdeps/ieee754/flt-32/k_rem_pio2f.c
+++ b/libc/sysdeps/ieee754/flt-32/k_rem_pio2f.c
@@ -88,7 +88,7 @@ recompute:
iq[jz-1] -= i<<(8-q0);
ih = iq[jz-1]>>(7-q0);
}
- else if(q0==0) ih = iq[jz-1]>>8;
+ else if(q0==0) ih = iq[jz-1]>>7;
else if(z>=(float)0.5) ih=2;
if(ih>0) { /* q > 0.5 */
@@ -166,24 +166,33 @@ recompute:
y[0] = (ih==0)? fw: -fw;
break;
case 1:
- case 2:
- fw = 0.0;
- for (i=jz;i>=0;i--) fw += fq[i];
- y[0] = (ih==0)? fw: -fw;
- fw = fq[0]-fw;
- for (i=1;i<=jz;i++) fw += fq[i];
- y[1] = (ih==0)? fw: -fw;
+ case 2:;
+#if __FLT_EVAL_METHOD__ != 0
+ volatile
+#endif
+ float fv = 0.0;
+ for (i=jz;i>=0;i--) fv += fq[i];
+ y[0] = (ih==0)? fv: -fv;
+ fv = fq[0]-fv;
+ for (i=1;i<=jz;i++) fv += fq[i];
+ y[1] = (ih==0)? fv: -fv;
break;
case 3: /* painful */
for (i=jz;i>0;i--) {
- fw = fq[i-1]+fq[i];
- fq[i] += fq[i-1]-fw;
- fq[i-1] = fw;
+#if __FLT_EVAL_METHOD__ != 0
+ volatile
+#endif
+ float fv = fq[i-1]+fq[i];
+ fq[i] += fq[i-1]-fv;
+ fq[i-1] = fv;
}
for (i=jz;i>1;i--) {
- fw = fq[i-1]+fq[i];
- fq[i] += fq[i-1]-fw;
- fq[i-1] = fw;
+#if __FLT_EVAL_METHOD__ != 0
+ volatile
+#endif
+ float fv = fq[i-1]+fq[i];
+ fq[i] += fq[i-1]-fv;
+ fq[i-1] = fv;
}
for (fw=0.0,i=jz;i>=2;i--) fw += fq[i];
if(ih==0) {
diff --git a/libc/version.h b/libc/version.h
index 25ae4f7c1..57b9ec22c 100644
--- a/libc/version.h
+++ b/libc/version.h
@@ -1,4 +1,4 @@
/* This file just defines the current version number of libc. */
-#define RELEASE "stable"
-#define VERSION "2.16"
+#define RELEASE "development"
+#define VERSION "2.16.90"
diff --git a/ports/ChangeLog b/ports/ChangeLog
index 4eb1e7f61..8a37d8408 100644
--- a/ports/ChangeLog
+++ b/ports/ChangeLog
@@ -1,3 +1,7 @@
+2012-07-03 Joseph Myers <joseph@codesourcery.com>
+
+ * README.ports-moved-to-libc: New file.
+
2012-06-21 Carlos O'Donell <carlos_odonell@mentor.com>
* .gitignore: New file.
diff --git a/ports/README.ports-moved-to-libc b/ports/README.ports-moved-to-libc
new file mode 100644
index 000000000..579a4de50
--- /dev/null
+++ b/ports/README.ports-moved-to-libc
@@ -0,0 +1,4 @@
+The "ports" files are now maintained in the "ports" subdirectory of
+the main glibc repository. The separate glibc-ports repository is now
+used only for 2.16 and older release branches and no further changes
+should be made to the files on the "master" branch in this repository.