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 ibm/2.18/master updated. glibc-2.18-129-g96c5bbf


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, ibm/2.18/master has been updated
       via  96c5bbf7030c2b5e483485f8301f4b367e89db67 (commit)
       via  fe14043608be64ddf458b8fa49819b22406a5f5c (commit)
       via  ceca4209347d0639a7ed726822a21c33891ca15b (commit)
       via  01d6218aead2f93e81223097ad134a2999d84e2c (commit)
       via  a21742a515c18de4b46070b5eff5eedf43f9c7c5 (commit)
       via  4af3a9fb312d9fbbc5050f4a8cf70c70a86a050f (commit)
      from  a1db67c6c7fafc3d2ebd391d64837d54a994e5b9 (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=96c5bbf7030c2b5e483485f8301f4b367e89db67

commit 96c5bbf7030c2b5e483485f8301f4b367e89db67
Author: Adhemerval Zanella <azanella@linux.vnet.ibm.com>
Date:   Tue Feb 4 10:18:26 2014 -0600

    PowerPC: powerpc64le abilist for 2.17
    
    This patch is the abifiles for powerpc64le based on GLIBC 2.17.

diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/nptl/ld-le.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/nptl/ld-le.abilist
index 0f745f2..3530fb4 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/nptl/ld-le.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/nptl/ld-le.abilist
@@ -1,5 +1,5 @@
-GLIBC_2.18
- GLIBC_2.18 A
+GLIBC_2.17
+ GLIBC_2.17 A
  __libc_memalign F
  __libc_stack_end D 0x8
  __tls_get_addr F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/nptl/libBrokenLocale-le.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/nptl/libBrokenLocale-le.abilist
index 0ca5b6f..92c43d9 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/nptl/libBrokenLocale-le.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/nptl/libBrokenLocale-le.abilist
@@ -1,3 +1,3 @@
-GLIBC_2.18
- GLIBC_2.18 A
+GLIBC_2.17
+ GLIBC_2.17 A
  __ctype_get_mb_cur_max F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/nptl/libanl-le.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/nptl/libanl-le.abilist
index c25a1ab..0d32f2e 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/nptl/libanl-le.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/nptl/libanl-le.abilist
@@ -1,5 +1,5 @@
-GLIBC_2.18
- GLIBC_2.18 A
+GLIBC_2.17
+ GLIBC_2.17 A
  gai_cancel F
  gai_error F
  gai_suspend F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/nptl/libc-le.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/nptl/libc-le.abilist
index 691c8c0..20eac4e 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/nptl/libc-le.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/nptl/libc-le.abilist
@@ -1,5 +1,5 @@
-GLIBC_2.18
- GLIBC_2.18 A
+GLIBC_2.17
+ GLIBC_2.17 A
  _Exit F
  _IO_2_1_stderr_ D 0xe0
  _IO_2_1_stdin_ D 0xe0
@@ -161,7 +161,6 @@ GLIBC_2.18
  __cxa_at_quick_exit F
  __cxa_atexit F
  __cxa_finalize F
- __cxa_thread_atexit_impl F
  __cyg_profile_func_enter F
  __cyg_profile_func_exit F
  __daylight D 0x4
@@ -2167,3 +2166,6 @@ GLIBC_2.18
  xencrypt F
  xprt_register F
  xprt_unregister F
+GLIBC_2.18
+ GLIBC_2.18 A
+ __cxa_thread_atexit_impl F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/nptl/libcrypt-le.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/nptl/libcrypt-le.abilist
index 0ac28c5..177c536 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/nptl/libcrypt-le.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/nptl/libcrypt-le.abilist
@@ -1,5 +1,5 @@
-GLIBC_2.18
- GLIBC_2.18 A
+GLIBC_2.17
+ GLIBC_2.17 A
  crypt F
  crypt_r F
  encrypt F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/nptl/libdl-le.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/nptl/libdl-le.abilist
index aa89245..6caff88 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/nptl/libdl-le.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/nptl/libdl-le.abilist
@@ -1,5 +1,5 @@
-GLIBC_2.18
- GLIBC_2.18 A
+GLIBC_2.17
+ GLIBC_2.17 A
  dladdr F
  dladdr1 F
  dlclose F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/nptl/libm-le.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/nptl/libm-le.abilist
index 9bb4cbf..a820074 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/nptl/libm-le.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/nptl/libm-le.abilist
@@ -1,5 +1,5 @@
-GLIBC_2.18
- GLIBC_2.18 A
+GLIBC_2.17
+ GLIBC_2.17 A
  _LIB_VERSION D 0x4
  __acos_finite F
  __acosf_finite F
@@ -50,9 +50,6 @@ GLIBC_2.18
  __hypot_finite F
  __hypotf_finite F
  __hypotl_finite F
- __issignaling F
- __issignalingf F
- __issignalingl F
  __j0_finite F
  __j0f_finite F
  __j0l_finite F
@@ -403,3 +400,8 @@ GLIBC_2.18
  yn F
  ynf F
  ynl F
+GLIBC_2.18
+ GLIBC_2.18 A
+ __issignaling F
+ __issignalingf F
+ __issignalingl F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/nptl/libnsl-le.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/nptl/libnsl-le.abilist
index a476875..763b8dc 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/nptl/libnsl-le.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/nptl/libnsl-le.abilist
@@ -1,5 +1,5 @@
-GLIBC_2.18
- GLIBC_2.18 A
+GLIBC_2.17
+ GLIBC_2.17 A
  __free_fdresult F
  __nis_default_access F
  __nis_default_group F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/nptl/libpthread-le.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/nptl/libpthread-le.abilist
index f25407d..5520312 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/nptl/libpthread-le.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/nptl/libpthread-le.abilist
@@ -1,5 +1,5 @@
-GLIBC_2.18
- GLIBC_2.18 A
+GLIBC_2.17
+ GLIBC_2.17 A
  _IO_flockfile F
  _IO_ftrylockfile F
  _IO_funlockfile F
@@ -120,7 +120,6 @@ GLIBC_2.18
  pthread_equal F
  pthread_exit F
  pthread_getaffinity_np F
- pthread_getattr_default_np F
  pthread_getattr_np F
  pthread_getconcurrency F
  pthread_getcpuclockid F
@@ -176,7 +175,6 @@ GLIBC_2.18
  pthread_rwlockattr_setpshared F
  pthread_self F
  pthread_setaffinity_np F
- pthread_setattr_default_np F
  pthread_setcancelstate F
  pthread_setcanceltype F
  pthread_setconcurrency F
@@ -224,3 +222,7 @@ GLIBC_2.18
  wait F
  waitpid F
  write F
+GLIBC_2.18
+ GLIBC_2.18 A
+ pthread_getattr_default_np F
+ pthread_setattr_default_np F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/nptl/libresolv-le.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/nptl/libresolv-le.abilist
index 4dd7cd0..ed312c0 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/nptl/libresolv-le.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/nptl/libresolv-le.abilist
@@ -1,5 +1,5 @@
-GLIBC_2.18
- GLIBC_2.18 A
+GLIBC_2.17
+ GLIBC_2.17 A
  __b64_ntop F
  __b64_pton F
  __dn_comp F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/nptl/librt-le.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/nptl/librt-le.abilist
index 211e046..f89f83e 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/nptl/librt-le.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/nptl/librt-le.abilist
@@ -1,5 +1,5 @@
-GLIBC_2.18
- GLIBC_2.18 A
+GLIBC_2.17
+ GLIBC_2.17 A
  __mq_open_2 F
  aio_cancel F
  aio_cancel64 F
@@ -16,11 +16,6 @@ GLIBC_2.18
  aio_suspend64 F
  aio_write F
  aio_write64 F
- clock_getcpuclockid F
- clock_getres F
- clock_gettime F
- clock_nanosleep F
- clock_settime F
  lio_listio F
  lio_listio64 F
  mq_close F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/nptl/libthread_db-le.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/nptl/libthread_db-le.abilist
index 61d736a..52f8d07 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/nptl/libthread_db-le.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/nptl/libthread_db-le.abilist
@@ -1,5 +1,5 @@
-GLIBC_2.18
- GLIBC_2.18 A
+GLIBC_2.17
+ GLIBC_2.17 A
  td_init F
  td_log F
  td_symbol_list F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/nptl/libutil-le.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/nptl/libutil-le.abilist
index 5563672..7e75bb2 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/nptl/libutil-le.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/nptl/libutil-le.abilist
@@ -1,5 +1,5 @@
-GLIBC_2.18
- GLIBC_2.18 A
+GLIBC_2.17
+ GLIBC_2.17 A
  forkpty F
  login F
  login_tty F

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

commit fe14043608be64ddf458b8fa49819b22406a5f5c
Author: Adhemerval Zanella <azanella@linux.vnet.ibm.com>
Date:   Tue Feb 4 10:07:36 2014 -0600

    PowerPC: Change powerpc64le start ABI to 2.17.
    
    Backport of 0ff8246327401ae8779e2697d5c7348611cdbf8a.

diff --git a/ChangeLog b/ChangeLog
index 0575323..b190338 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+2014-02-04  Adhemerval Zanella  <azanella@linux.vnet.ibm.com>
+
+	* nptl/shlib-versions: Change powerpc*le start to 2.17.
+	* shlib-versions: Likewise.
+
 2014-02-04  Roland McGrath  <roland@hack.frob.com>
 	    Adhemerval Zanella  <azanella@linux.vnet.ibm.com>
 
diff --git a/nptl/shlib-versions b/nptl/shlib-versions
index 495b240..f6b9b9a 100644
--- a/nptl/shlib-versions
+++ b/nptl/shlib-versions
@@ -2,5 +2,5 @@ sparc64.*-.*-linux.*	libpthread=0		GLIBC_2.2
 sh.*-.*-linux.*		libpthread=0		GLIBC_2.2
 s390x-.*-linux.*	libpthread=0		GLIBC_2.2
 powerpc64-.*-linux.*	libpthread=0		GLIBC_2.3
-powerpc.*le-.*-linux.*	libpthread=0		GLIBC_2.18
+powerpc.*le-.*-linux.*	libpthread=0		GLIBC_2.17
 .*-.*-linux.*		libpthread=0
diff --git a/shlib-versions b/shlib-versions
index 51f5327..78b0ad7 100644
--- a/shlib-versions
+++ b/shlib-versions
@@ -23,7 +23,7 @@
 
 s390x-.*-linux.*        DEFAULT			GLIBC_2.2
 powerpc64-.*-linux.*	DEFAULT			GLIBC_2.3
-powerpc.*le-.*-linux.*	DEFAULT			GLIBC_2.18
+powerpc.*le-.*-linux.*	DEFAULT			GLIBC_2.17
 .*-.*-gnu-gnu.*		DEFAULT			GLIBC_2.2.6
 
 # Configuration		ABI			Identifier for ABI data files

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

commit ceca4209347d0639a7ed726822a21c33891ca15b
Author: Adhemerval Zanella <azanella@linux.vnet.ibm.com>
Date:   Tue Feb 4 10:06:41 2014 -0600

    abilist-pattern configurability
    
    This patch creates implicit rules to match the abifiles if
    abilist-pattern is defined in the architecture Makefile. This allows
    machine specific Makefiles to define different abifiles names
    (for instance *-le.abilist for powerpc64le).

diff --git a/ChangeLog b/ChangeLog
index ac1a76a..0575323 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,14 @@
+2014-02-04  Roland McGrath  <roland@hack.frob.com>
+	    Adhemerval Zanella  <azanella@linux.vnet.ibm.com>
+
+	* sysdeps/powerpc/Makefile [$(config-machine) ends with 'le']
+	(abilist-pattern): New variable, set to %-le.abilist.
+
+	* Makerules (abilist-pattern): New variable.
+	(vpath): Use $(abilist-pattern) in place of %.abilist.
+	(check-abi-% pattern rule): Likewise.
+	(check-abi, update-abi): Likewise.
+
 2014-01-23  Adhemerval Zanella  <azanella@linux.vnet.ibm.com>
 
 	[BZ#16431]
diff --git a/Makerules b/Makerules
index 7d0bc1b..bd8642a 100644
--- a/Makerules
+++ b/Makerules
@@ -1144,11 +1144,15 @@ ifeq ($(versioning),yes)
 	LC_ALL=C $(OBJDUMP) --dynamic-syms $< > $@T
 	mv -f $@T $@
 
-ifndef abilist
-abilist=.abilist
+# A sysdeps/.../Makefile can set abilist-pattern to something like
+# %-foo.abilist to look for libc-foo.abilist instead of libc.abilist.
+# This makes sense if multiple ABIs can be most cleanly supported by a
+# configuration without using separate sysdeps directories for each.
+ifdef abilist-pattern
+vpath $(abilist-pattern) $(+sysdep_dirs)
 endif
 
-vpath %$(abilist) $(+sysdep_dirs)
+vpath %.abilist $(+sysdep_dirs)
 
 # The .PRECIOUS rule prevents the files built by an implicit rule whose
 # target pattern is %.symlist from being considered "intermediate files"
@@ -1157,24 +1161,48 @@ vpath %$(abilist) $(+sysdep_dirs)
 .PRECIOUS: %.symlist
 generated += $(extra-libs:=.symlist)
 
-check-abi-%: $(common-objpfx)config.make %$(abilist) $(objpfx)%.symlist
+ifdef abilist-pattern
+check-abi-%: $(common-objpfx)config.make $(abilist-pattern) $(objpfx)%.symlist
+	$(check-abi-pattern)
+check-abi-%: $(common-objpfx)config.make $(abilist-pattern) \
+	     $(common-objpfx)%.symlist
+	$(check-abi-pattern)
+endif
+check-abi-%: $(common-objpfx)config.make %.abilist $(objpfx)%.symlist
 	$(check-abi)
-check-abi-%: $(common-objpfx)config.make %$(abilist) $(common-objpfx)%.symlist
+check-abi-%: $(common-objpfx)config.make %.abilist $(common-objpfx)%.symlist
 	$(check-abi)
+define check-abi-pattern
+	diff -p -U 0 $(filter $(abilist-pattern),$^) $(filter %.symlist,$^)
+endef
 define check-abi
-	diff -p -U 0 $(filter %$(abilist),$^) $(filter %.symlist,$^)
+	diff -p -U 0 $(filter %.abilist,$^) $(filter %.symlist,$^)
 endef
 
-update-abi-%: $(objpfx)%.symlist %$(abilist)
+ifdef abilist-pattern
+update-abi-%: $(objpfx)%.symlist $(abilist-pattern)
+	$(update-abi-pattern)
+update-abi-%: $(common-objpfx)%.symlist $(abilist-pattern)
+	$(update-abi-pattern)
+endif
+update-abi-%: $(objpfx)%.symlist %.abilist
 	$(update-abi)
-update-abi-%: $(common-objpfx)%.symlist %$(abilist)
+update-abi-%: $(common-objpfx)%.symlist %.abilist
 	$(update-abi)
+define update-abi-pattern
+@if cmp -s $^ 2> /dev/null; \
+ then \
+      echo '+++ $(filter $(abilist-pattern),$^) is unchanged'; \
+ else cp -f $^; \
+      echo '*** Now check $(filter $(abilist-pattern),$^) changes for correctness ***'; \
+ fi
+endef
 define update-abi
 @if cmp -s $^ 2> /dev/null; \
  then \
-      echo '+++ $(filter %$(abilist),$^) is unchanged'; \
+      echo '+++ $(filter %.abilist,$^) is unchanged'; \
  else cp -f $^; \
-      echo '*** Now check $(filter %$(abilist),$^) changes for correctness ***'; \
+      echo '*** Now check $(filter %.abilist,$^) changes for correctness ***'; \
  fi
 endef
 
diff --git a/sysdeps/powerpc/Makefile b/sysdeps/powerpc/Makefile
index f75e625..b11edd7 100644
--- a/sysdeps/powerpc/Makefile
+++ b/sysdeps/powerpc/Makefile
@@ -27,3 +27,7 @@ ifeq ($(subdir),misc)
 sysdep_headers += sys/platform/ppc.h
 tests += test-gettimebase
 endif
+
+ifneq (,$(filter %le,$(config-machine)))
+abilist-pattern = %-le.abilist
+endif

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

commit 01d6218aead2f93e81223097ad134a2999d84e2c
Author: Adhemerval Zanella <azanella@linux.vnet.ibm.com>
Date:   Thu Jan 23 11:07:47 2014 -0600

    PowerPC: Fix gettimeofday ifunc selection
    
    The IFUNC selector for gettimeofday runs before _libc_vdso_platform_setup where
    __vdso_gettimeofday is set. The selector then sets __gettimeofday (the internal
    version used within GLIBC) to use the system call version instead of the vDSO one.
    This patch changes the check if vDSO is available to get its value directly
    instead of rely on __vdso_gettimeofday.
    
    This patch changes it by getting the vDSO value directly.
    
    It fixes BZ#16431.

diff --git a/ChangeLog b/ChangeLog
index 47607ed..ac1a76a 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,12 @@
 2014-01-23  Adhemerval Zanella  <azanella@linux.vnet.ibm.com>
 
+	[BZ#16431]
+	* sysdeps/unix/sysv/linux/powerpc/gettimeofday.c (__gettimeofday):
+	Adjust the vDSO correctly for internal calls.
+	* sysdeps/unix/sysv/linux/powerpc/time.c (time): Likewise.
+
+2014-01-23  Adhemerval Zanella  <azanella@linux.vnet.ibm.com>
+
 	[BZ #16414]
 	* sysdeps/powerpc/powerpc64/fpu/s_truncl.S: Remove wrong
 	implementation.
diff --git a/NEWS b/NEWS
index 4190e85..5c2f07a 100644
--- a/NEWS
+++ b/NEWS
@@ -11,7 +11,7 @@ Version 2.18.1
 
   14143, 14155, 14547, 14699, 15532, 15427, 15522, 15680, 15723, 15734,
   15735, 15797, 15892, 15895, 15909, 15917, 15996, 16072, 16150, 16414,
-  16430.
+  16430, 16431.
 
 * Support for powerpc64le has been added.
 
diff --git a/sysdeps/unix/sysv/linux/powerpc/gettimeofday.c b/sysdeps/unix/sysv/linux/powerpc/gettimeofday.c
index 3ee063d..0313874 100644
--- a/sysdeps/unix/sysv/linux/powerpc/gettimeofday.c
+++ b/sysdeps/unix/sysv/linux/powerpc/gettimeofday.c
@@ -35,9 +35,12 @@ __gettimeofday_syscall (struct timeval *tv, struct timezone *tz)
 void *
 gettimeofday_ifunc (void)
 {
+  PREPARE_VERSION (linux2615, "LINUX_2.6.15", 123718565);
+
   /* If the vDSO is not available we fall back syscall.  */
-  return (__vdso_gettimeofday ? VDSO_IFUNC_RET (__vdso_gettimeofday)
-	  : __gettimeofday_syscall);
+  void *vdso_gettimeofday = _dl_vdso_vsym ("__kernel_gettimeofday", &linux2615);
+  return (vdso_gettimeofday ? VDSO_IFUNC_RET (vdso_gettimeofday)
+	  : (void*)__gettimeofday_syscall);
 }
 asm (".type __gettimeofday, %gnu_indirect_function");
 
diff --git a/sysdeps/unix/sysv/linux/powerpc/time.c b/sysdeps/unix/sysv/linux/powerpc/time.c
index 85cc20e..cd40a29 100644
--- a/sysdeps/unix/sysv/linux/powerpc/time.c
+++ b/sysdeps/unix/sysv/linux/powerpc/time.c
@@ -45,9 +45,12 @@ time_syscall (time_t *t)
 void *
 time_ifunc (void)
 {
+  PREPARE_VERSION (linux2615, "LINUX_2.6.15", 123718565);
+
   /* If the vDSO is not available we fall back to the syscall.  */
-  return (__vdso_time ? VDSO_IFUNC_RET (__vdso_time)
-	  : time_syscall);
+  void *vdso_time = _dl_vdso_vsym ("__kernel_time", &linux2615);
+  return (vdso_time ? VDSO_IFUNC_RET (vdso_time)
+	  : (void*)time_syscall);
 }
 asm (".type time, %gnu_indirect_function");
 

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

commit a21742a515c18de4b46070b5eff5eedf43f9c7c5
Author: Adhemerval Zanella <azanella@linux.vnet.ibm.com>
Date:   Thu Jan 23 11:06:58 2014 -0600

    PowerPC: remove wrong truncl implementation for PowerPC64
    
    The truncl assembly implementation (sysdeps/powerpc/powerpc64/fpu/s_truncl.S)
    returns wrong results for some inputs where first double is a exact integer
    and the precision is determined by second long double.
    
    Checking on implementation comments and history, I am very confident the
    assembly implementation was based on a version before commit
    5c68d401698a58cf7da150d9cce769fa6679ba5f that fixes BZ#2423 (Errors in
    long double (ldbl-128ibm) rounding functions in glibc-2.4).
    
    By just removing the implementation and make the build select
    sysdeps/ieee754/ldbl-128ibm/s_truncl.c instead it fixes tgammal
    issues regarding wrong result sign.

diff --git a/ChangeLog b/ChangeLog
index d839367..47607ed 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,12 @@
 2014-01-23  Adhemerval Zanella  <azanella@linux.vnet.ibm.com>
 
+	[BZ #16414]
+	* sysdeps/powerpc/powerpc64/fpu/s_truncl.S: Remove wrong
+	implementation.
+	* sysdeps/ieee754/ldbl-128ibm/s_truncl.c: Remove bogus comment.
+
+2014-01-23  Adhemerval Zanella  <azanella@linux.vnet.ibm.com>
+
 	[BZ #14143]
 	* sysdeps/powerpc/bits/fenv.h (__fe_nomask_env): Remove declaration.
 	(__fe_mask_env): Likewise.
diff --git a/NEWS b/NEWS
index 28b7755..4190e85 100644
--- a/NEWS
+++ b/NEWS
@@ -10,7 +10,8 @@ Version 2.18.1
 * The following bugs are resolved with this release:
 
   14143, 14155, 14547, 14699, 15532, 15427, 15522, 15680, 15723, 15734,
-  15735, 15797, 15892, 15895, 15909, 15917, 15996, 16072, 16150, 16430.
+  15735, 15797, 15892, 15895, 15909, 15917, 15996, 16072, 16150, 16414,
+  16430.
 
 * Support for powerpc64le has been added.
 
diff --git a/sysdeps/ieee754/ldbl-128ibm/s_truncl.c b/sysdeps/ieee754/ldbl-128ibm/s_truncl.c
index 2765b63..02bfc49 100644
--- a/sysdeps/ieee754/ldbl-128ibm/s_truncl.c
+++ b/sysdeps/ieee754/ldbl-128ibm/s_truncl.c
@@ -17,9 +17,6 @@
    License along with the GNU C Library; if not, see
    <http://www.gnu.org/licenses/>.  */
 
-/* This has been coded in assembler because GCC makes such a mess of it
-   when it's coded in C.  */
-
 #include <math.h>
 #include <math_ldbl_opt.h>
 #include <float.h>
diff --git a/sysdeps/powerpc/powerpc64/fpu/s_truncl.S b/sysdeps/powerpc/powerpc64/fpu/s_truncl.S
deleted file mode 100644
index 06fd7db..0000000
--- a/sysdeps/powerpc/powerpc64/fpu/s_truncl.S
+++ /dev/null
@@ -1,120 +0,0 @@
-/* long double trunc function.
-   IBM extended format long double version.
-   Copyright (C) 2004-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 <math_ldbl_opt.h>
-
-	.section	".toc","aw"
-.LC0:	/* 2**52 */
-	.tc FD_43300000_0[TC],0x4330000000000000
-.LC1:	/* 0.5 */
-	.tc FD_3fe00000_0[TC],0x3fe0000000000000
-	.section	".text"
-
-/* long double [fp1,fp2] truncl (long double x [fp1,fp2])  */
-
-ENTRY (__truncl)
-	mffs	fp11		/* Save current FPU rounding mode.  */
-	lfd	fp13,.LC0@toc(2)
-	fabs	fp0,fp1
-	fabs	fp9,fp2
-	fsub	fp12,fp13,fp13	/* generate 0.0  */
-	fcmpu	cr7,fp0,fp13	/* if (fabs(x) > TWO52)  */
-	fcmpu	cr6,fp1,fp12	/* if (x > 0.0)  */
-	bnl-	cr7,.L2
-	mtfsfi	7,1		/* Set rounding mode toward 0.  */
-	ble-	cr6,.L1
-	fneg	fp2,fp12
-	fadd	fp1,fp1,fp13	/* x+= TWO52;  */
-	fsub	fp1,fp1,fp13	/* x-= TWO52;  */
-	fabs	fp1,fp1		/* if (x == 0.0) x = 0.0;  */
-.L0:
-	mtfsf	0x01,fp11	/* restore previous rounding mode.  */
-	blr
-.L1:
-	fneg	fp2,fp12
-	bge-	cr6,.L0		/* if (x < 0.0)  */
-	fsub	fp1,fp1,fp13	/* x-= TWO52;  */
-	fadd	fp1,fp1,fp13	/* x+= TWO52;  */
-	fnabs	fp1,fp1		/* if (x == 0.0) x = -0.0;  */
-	mtfsf	0x01,fp11	/* restore previous rounding mode.  */
-	blr
-
-/* The high double is > TWO52 so we need to round the low double and
-   perhaps the high double.  In this case we have to round the low
-   double and handle any adjustment to the high double that may be
-   caused by rounding (up).  This is complicated by the fact that the
-   high double may already be rounded and the low double may have the
-   opposite sign to compensate.This gets a bit tricky so we use the
-   following algorithm:
-
-   tau = floor(x_high/TWO52);
-   x0 = x_high - tau;
-   x1 = x_low + tau;
-   r1 = rint(x1);
-   y_high = x0 + r1;
-   y_low = x0 - y_high + r1;
-   return y;  */
-.L2:
-	fcmpu	cr7,fp9,fp13	/* if (|x_low| > TWO52)  */
-	fcmpu	cr0,fp9,fp12	/* || (|x_low| == 0.0)  */
-	fcmpu	cr5,fp2,fp12	/* if (x_low > 0.0)  */
-	bgelr-	cr7		/*   return x;	*/
-	beqlr-  cr0
-	mtfsfi	7,1		/* Set rounding mode toward 0.  */
-	fdiv	fp8,fp1,fp13	/* x_high/TWO52  */
-
-	bng-	cr6,.L6		/* if (x > 0.0)  */
-	fctidz	fp0,fp8
-	fcfid	fp8,fp0		/* tau = floor(x_high/TWO52);  */
-	fadd	fp8,fp8,fp8	/* tau++; Make tau even  */
-	bng	cr5,.L4		/* if (x_low > 0.0)  */
-	fmr	fp3,fp1
-	fmr	fp4,fp2
-	b	.L5
-.L4:				/* if (x_low < 0.0)  */
-	fsub	fp3,fp1,fp8	/* x0 = x_high - tau;  */
-	fadd	fp4,fp2,fp8	/* x1 = x_low + tau;  */
-.L5:
-	fadd	fp5,fp4,fp13	/* r1 = r1 + TWO52;  */
-	fsub	fp5,fp5,fp13	/* r1 = r1 - TWO52;  */
-	b	.L9
-.L6:				/* if (x < 0.0)  */
-	fctidz	fp0,fp8
-	fcfid	fp8,fp0		/* tau = floor(x_high/TWO52);  */
-	fadd	fp8,fp8,fp8	/* tau++; Make tau even  */
-	bnl	cr5,.L7		/* if (x_low < 0.0)  */
-	fmr	fp3,fp1
-	fmr	fp4,fp2
-	b	.L8
-.L7:				/* if (x_low > 0.0)  */
-	fsub	fp3,fp1,fp8	/* x0 = x_high - tau;  */
-	fadd	fp4,fp2,fp8	/* x1 = x_low + tau;  */
-.L8:
-	fsub	fp5,fp4,fp13	/* r1-= TWO52;  */
-	fadd	fp5,fp5,fp13	/* r1+= TWO52;  */
-.L9:
-	mtfsf	0x01,fp11	/* restore previous rounding mode.  */
-	fadd	fp1,fp3,fp5	/* y_high = x0 + r1;  */
-	fsub	fp2,fp3,fp1	/* y_low = x0 - y_high + r1;  */
-	fadd	fp2,fp2,fp5
-	blr
-END (__truncl)
-
-long_double_symbol (libm, __truncl, truncl)

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

commit 4af3a9fb312d9fbbc5050f4a8cf70c70a86a050f
Author: Adhemerval Zanella <azanella@linux.vnet.ibm.com>
Date:   Thu Jan 23 11:04:51 2014 -0600

    PowerPC: Fix __fe_mask_env export
    
    This patch does not export __fe_mask_env anymore, only providing a
    compatibility symbol. It fixes BZ#14143.

diff --git a/ChangeLog b/ChangeLog
index 0992488..d839367 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,18 @@
+2014-01-23  Adhemerval Zanella  <azanella@linux.vnet.ibm.com>
+
+	[BZ #14143]
+	* sysdeps/powerpc/bits/fenv.h (__fe_nomask_env): Remove declaration.
+	(__fe_mask_env): Likewise.
+	* sysdeps/powerpc/fpu/fenv_libc.h (__fe_nomask_env): Remove
+	libm_hidden_proto and add function prototype.
+	(__fe_mask_env): Add function prototype.
+	* sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/fe_nomask.c
+	(__fe_nomask_env): Add compat symbol for GLIBC_2.1.
+	* sysdeps/unix/sysv/linux/powerpc/powerpc64/fpu/fe_mask.c
+	(__fe_mask_env): Remove compiler warnings regarding ununsed variables.
+	* sysdeps/unix/sysv/linux/powerpc/powerpc64/fpu/fe_nomask.c
+	(__fe_nomask_env): Add compat symbol for GLIBC_2.3.
+
 2014-01-16  Adhemerval Zanella  <azanella@linux.vnet.ibm.com>
 
 	[BZ#16430]
diff --git a/NEWS b/NEWS
index db471a4..28b7755 100644
--- a/NEWS
+++ b/NEWS
@@ -9,8 +9,8 @@ Version 2.18.1
 
 * The following bugs are resolved with this release:
 
-  14155, 14547, 14699, 15532, 15427, 15522, 15680, 15723, 15734, 15735,
-  15797, 15892, 15895, 15909, 15917, 15996, 16072, 16150, 16430.
+  14143, 14155, 14547, 14699, 15532, 15427, 15522, 15680, 15723, 15734,
+  15735, 15797, 15892, 15895, 15909, 15917, 15996, 16072, 16150, 16430.
 
 * Support for powerpc64le has been added.
 
diff --git a/sysdeps/powerpc/bits/fenv.h b/sysdeps/powerpc/bits/fenv.h
index 122edd3..86bf94e 100644
--- a/sysdeps/powerpc/bits/fenv.h
+++ b/sysdeps/powerpc/bits/fenv.h
@@ -153,15 +153,12 @@ extern const fenv_t __fe_enabled_env;
 extern const fenv_t __fe_nonieee_env;
 # define FE_NONIEEE_ENV	(&__fe_nonieee_env)
 
-__BEGIN_DECLS
-
 /* Floating-point environment with all exceptions enabled.  Note that
    just evaluating this value does not change the processor exception mode.
    Passing this mask to fesetenv will result in a prctl syscall to change
    the MSR FE0/FE1 bits to "Precise Mode".  On some processors this will
    result in slower floating point execution.  This will last until an
    fenv or exception mask is installed that disables all FP exceptions.  */
-extern const fenv_t *__fe_nomask_env (void);
 # define FE_NOMASK_ENV	FE_ENABLED_ENV
 
 /* Floating-point environment with all exceptions disabled.  Note that
@@ -169,9 +166,6 @@ extern const fenv_t *__fe_nomask_env (void);
    Passing this mask to fesetenv will result in a prctl syscall to change
    the MSR FE0/FE1 bits to "Ignore Exceptions Mode".  On most processors
    this allows the fastest possible floating point execution.*/
-extern const fenv_t *__fe_mask_env (void);
 # define FE_MASK_ENV	FE_DFL_ENV
 
-__END_DECLS
-
 #endif
diff --git a/sysdeps/powerpc/fpu/fenv_libc.h b/sysdeps/powerpc/fpu/fenv_libc.h
index baa2a7d..cb15c1c 100644
--- a/sysdeps/powerpc/fpu/fenv_libc.h
+++ b/sysdeps/powerpc/fpu/fenv_libc.h
@@ -23,7 +23,9 @@
 #include <ldsodefs.h>
 #include <sysdep.h>
 
-libm_hidden_proto (__fe_nomask_env)
+extern const fenv_t *__fe_nomask_env (void);
+
+extern const fenv_t *__fe_mask_env (void);
 
 /* The sticky bits in the FPSCR indicating exceptions have occurred.  */
 #define FPSCR_STICKY_BITS ((FE_ALL_EXCEPT | FE_ALL_INVALID) & ~FE_INVALID)
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/fe_nomask.c b/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/fe_nomask.c
index 94db79f..dd3ec46 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/fe_nomask.c
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/fe_nomask.c
@@ -23,6 +23,7 @@
 #include <sysdep.h>
 #include <sys/prctl.h>
 #include <kernel-features.h>
+#include <shlib-compat.h>
 
 const fenv_t *
 __fe_nomask_env (void)
@@ -32,4 +33,6 @@ __fe_nomask_env (void)
 
   return FE_ENABLED_ENV;
 }
-libm_hidden_def (__fe_nomask_env)
+#if SHLIB_COMPAT (libm, GLIBC_2_1, GLIBC_2_18)
+compat_symbol (libm, __fe_nomask_env, __fe_nomask_env, GLIBC_2_1);
+#endif
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/fpu/fe_mask.c b/sysdeps/unix/sysv/linux/powerpc/powerpc64/fpu/fe_mask.c
index 2ab5855..1d579bf 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/fpu/fe_mask.c
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/fpu/fe_mask.c
@@ -27,9 +27,8 @@ const fenv_t *
 __fe_mask_env (void)
 {
 #if defined PR_SET_FPEXC && defined PR_FP_EXC_DISABLED
-  int result;
   INTERNAL_SYSCALL_DECL (err);
-  result = INTERNAL_SYSCALL (prctl, err, 2, PR_SET_FPEXC, PR_FP_EXC_DISABLED);
+  INTERNAL_SYSCALL (prctl, err, 2, PR_SET_FPEXC, PR_FP_EXC_DISABLED);
 #else
   __set_errno (ENOSYS);
 #endif
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/fpu/fe_nomask.c b/sysdeps/unix/sysv/linux/powerpc/powerpc64/fpu/fe_nomask.c
index fd2ffb1..5172f65 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/fpu/fe_nomask.c
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/fpu/fe_nomask.c
@@ -22,17 +22,19 @@
 #include <sys/syscall.h>
 #include <sys/prctl.h>
 #include <kernel-features.h>
+#include <shlib-compat.h>
 
 const fenv_t *
 __fe_nomask_env (void)
 {
 #if defined PR_SET_FPEXC && defined PR_FP_EXC_PRECISE
-  int result;
   INTERNAL_SYSCALL_DECL (err);
-  result = INTERNAL_SYSCALL (prctl, err, 2, PR_SET_FPEXC, PR_FP_EXC_PRECISE);
+  INTERNAL_SYSCALL (prctl, err, 2, PR_SET_FPEXC, PR_FP_EXC_PRECISE);
 #else
   __set_errno (ENOSYS);
 #endif
   return FE_ENABLED_ENV;
 }
-libm_hidden_def (__fe_nomask_env)
+#if SHLIB_COMPAT (libm, GLIBC_2_3, GLIBC_2_18)
+compat_symbol (libm, __fe_nomask_env, __fe_nomask_env, GLIBC_2_3);
+#endif

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

Summary of changes:
 ChangeLog                                          |   45 ++++++++
 Makerules                                          |   48 ++++++--
 NEWS                                               |    5 +-
 nptl/shlib-versions                                |    2 +-
 shlib-versions                                     |    2 +-
 sysdeps/ieee754/ldbl-128ibm/s_truncl.c             |    3 -
 sysdeps/powerpc/Makefile                           |    4 +
 sysdeps/powerpc/bits/fenv.h                        |    6 -
 sysdeps/powerpc/fpu/fenv_libc.h                    |    4 +-
 sysdeps/powerpc/powerpc64/fpu/s_truncl.S           |  120 --------------------
 sysdeps/unix/sysv/linux/powerpc/gettimeofday.c     |    7 +-
 .../sysv/linux/powerpc/powerpc32/fpu/fe_nomask.c   |    5 +-
 .../sysv/linux/powerpc/powerpc64/fpu/fe_mask.c     |    3 +-
 .../sysv/linux/powerpc/powerpc64/fpu/fe_nomask.c   |    8 +-
 .../linux/powerpc/powerpc64/nptl/ld-le.abilist     |    4 +-
 .../powerpc64/nptl/libBrokenLocale-le.abilist      |    4 +-
 .../linux/powerpc/powerpc64/nptl/libanl-le.abilist |    4 +-
 .../linux/powerpc/powerpc64/nptl/libc-le.abilist   |    8 +-
 .../powerpc/powerpc64/nptl/libcrypt-le.abilist     |    4 +-
 .../linux/powerpc/powerpc64/nptl/libdl-le.abilist  |    4 +-
 .../linux/powerpc/powerpc64/nptl/libm-le.abilist   |   12 +-
 .../linux/powerpc/powerpc64/nptl/libnsl-le.abilist |    4 +-
 .../powerpc/powerpc64/nptl/libpthread-le.abilist   |   10 +-
 .../powerpc/powerpc64/nptl/libresolv-le.abilist    |    4 +-
 .../linux/powerpc/powerpc64/nptl/librt-le.abilist  |    9 +-
 .../powerpc/powerpc64/nptl/libthread_db-le.abilist |    4 +-
 .../powerpc/powerpc64/nptl/libutil-le.abilist      |    4 +-
 sysdeps/unix/sysv/linux/powerpc/time.c             |    7 +-
 28 files changed, 153 insertions(+), 191 deletions(-)
 delete mode 100644 sysdeps/powerpc/powerpc64/fpu/s_truncl.S


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]