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.20-160-ga2887bd


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  a2887bdb2729e77786a56139d02a6d8cb1290bce (commit)
       via  da53d6dbc28d2a90d6e14dd661e68611c3b741cf (commit)
      from  9cf27b8d09aab26bd4693b10f281d64da779da83 (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=a2887bdb2729e77786a56139d02a6d8cb1290bce

commit a2887bdb2729e77786a56139d02a6d8cb1290bce
Author: Carlos O'Donell <carlos@redhat.com>
Date:   Thu Nov 6 15:58:52 2014 -0500

    manual/llio.texi: Comment on write atomicity.
    
    We add Linux-realted comments about the atomicity of
    write with respect to file offsets. As of Linux 3.14
    the file offset update is atomic. That means that
    multiple threads calling the write syscall can not possibly
    get the same file offset. Therefore the writes should
    not overlap and data should not be lost as is required
    by POSIX.

diff --git a/ChangeLog b/ChangeLog
index 3d7cf67..6f3a85f 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,8 @@
 2014-11-06  Carlos O'Donell  <carlos@redhat.com>
 
+	* manual/llio.texi: Add comment that write safety has been
+	fixed in Linux.
+
 	* elf/Makefile (all-built-dso): Add $(common-objpfx)elf/ld.so.
 	(localplt-build-dso): Add elf/ld.so.
 	* sysdeps/unix/sysv/linux/i386/localplt.data: Add ___tls_get_addr
diff --git a/manual/llio.texi b/manual/llio.texi
index 393ddf3..4f3fada 100644
--- a/manual/llio.texi
+++ b/manual/llio.texi
@@ -491,6 +491,11 @@ When the source file is compiled with @code{_FILE_OFFSET_BITS == 64} on a
 @c
 @c So we mark it thread safe, it doesn't blow up, but you might loose
 @c data, and we don't strictly meet the POSIX requirements.
+@c
+@c The fix for file offsets racing was merged in 3.14, the commits were:
+@c 9c225f2655e36a470c4f58dbbc99244c5fc7f2d4, and
+@c d7a15f8d0777955986a2ab00ab181795cab14b01.  Therefore after Linux 3.14 you
+@c should get mostly MT-safe writes.
 The @code{write} function writes up to @var{size} bytes from
 @var{buffer} to the file with descriptor @var{filedes}.  The data in
 @var{buffer} is not necessarily a character string and a null character is

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

commit da53d6dbc28d2a90d6e14dd661e68611c3b741cf
Author: Carlos O'Donell <carlos@redhat.com>
Date:   Thu Nov 6 15:48:44 2014 -0500

    Run check-localpltk/textrel/execstack over ld.so.
    
    For maximum paranoia we run ld.so through the normal set
    of tests for all of the shared libraries. This includes
    running ld.so through check-localplt, check-textrel, and
    check-execstack. While none of these should trigger any
    failures given the way ld.so is built, it might possibly
    fail if a developer does something wrong. This paranoia
    was triggered by a discussion over the use of __strcpy
    vs. strcpy [1] and if the symbol could leak and use the
    libc.so version.
    
    The check-localplt test fails right away because localplt.data
    needs updating for all arches. By default we add 6 new symbols:
    __tls_get_addr, __libc_memalign, malloc, calloc, realloc and
    free. Other machines like i386, power, and s390 require some
    different symbol sets e.g. ___tls_get_addr vs. __tls_get_addr
    for i386.
    
    Verified for i386
    Verified for x86_64
    Verified for ppc32
    Verified for ppc64
    Verified for ppc64le
    Verified for arm
    Verified for aarch64
    Verified for s390
    Verified for s390x
    Guessed for alpha
    Guessed for ia64
    Guessed for m68k
    Guessed for microblaze
    Guessed for sparc32
    Guessed for sparc64
    Defaults for sh
    Defaults for mips
    Defaults for hppa
    Defaults for tile
    
    Machine manintainers notified to double check the data
    used in localplt.data.
    
    [1] https://sourceware.org/ml/libc-alpha/2014-10/msg00548.html

diff --git a/ChangeLog b/ChangeLog
index 9ee1c0d..3d7cf67 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,28 @@
+2014-11-06  Carlos O'Donell  <carlos@redhat.com>
+
+	* elf/Makefile (all-built-dso): Add $(common-objpfx)elf/ld.so.
+	(localplt-build-dso): Add elf/ld.so.
+	* sysdeps/unix/sysv/linux/i386/localplt.data: Add ___tls_get_addr
+	i.e. 3 underscore version, __libc_memalign, malloc, calloc, realloc,
+	and free for ld.so.
+	* sysdeps/unix/sysv/linux/powerpc/powerpc64/localplt.data: Add
+	__libc_memalign, malloc, calloc, realloc, and free for ld.so.
+	* sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/localplt.data:
+	Likewise.
+	* sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/localplt.data:
+	Likewise.
+	* sysdeps/unix/sysv/linux/s390/localplt.data: Likewise.
+	* sysdeps/generic/localplt.data: Add __tls_get_addr i.e. 2 underscore
+	version, __libc_memalign, malloc, calloc, realloc and free for ld.so.
+	* sysdeps/unix/sysv/linux/aarch64/localplt.data: Likewise.
+	* sysdeps/unix/sysv/linux/arm/localplt.data: Likewise.
+	* sysdeps/unix/sysv/linux/alpha/localplt.data: Likewise.
+	* sysdeps/unix/sysv/linux/ia64/localplt.data: Likewise.
+	* sysdeps/unix/sysv/linux/m68k/localplt.data: Likewise.
+	* sysdeps/unix/sysv/linux/microblaze/localplt.data: Likewise.
+	* sysdeps/unix/sysv/linux/sparc/sparc32/localplt.data: Likewise.
+	* sysdeps/unix/sysv/linux/sparc/sparc64/localplt.data: Likewise.
+
 2014-11-05  Joseph Myers  <joseph@codesourcery.com>
 
 	[BZ #14132]
diff --git a/elf/Makefile b/elf/Makefile
index 94074f3..34f0b1f 100644
--- a/elf/Makefile
+++ b/elf/Makefile
@@ -904,7 +904,7 @@ CFLAGS-tst-pie2.c += $(pie-ccflag)
 $(objpfx)tst-pie1: $(objpfx)tst-piemod1.so
 
 ifeq (yes,$(build-shared))
-all-built-dso := $(common-objpfx)libc.so \
+all-built-dso := $(common-objpfx)elf/ld.so $(common-objpfx)libc.so \
 		 $(filter-out $(common-objpfx)linkobj/libc.so, \
 			      $(sort $(wildcard $(addprefix $(common-objpfx), \
 							    */lib*.so \
@@ -963,6 +963,7 @@ common-generated += $(all-built-dso:$(common-objpfx)%=%.jmprel)
 
 localplt-built-dso := $(addprefix $(common-objpfx),\
 				  libc.so \
+				  elf/ld.so \
 				  math/libm.so \
 				  rt/librt.so \
 				  dlfcn/libdl.so \
diff --git a/sysdeps/generic/localplt.data b/sysdeps/generic/localplt.data
index d296519..d7d6734 100644
--- a/sysdeps/generic/localplt.data
+++ b/sysdeps/generic/localplt.data
@@ -7,3 +7,12 @@ libc.so: malloc
 libc.so: memalign
 libc.so: realloc
 libm.so: matherr
+# The dynamic loader needs __tls_get_addr for TLS, and uses __libc_memalign
+# internally to allocate aligned TLS storage. The other malloc family of
+# functions are expected to allow user symbol interposition.
+ld.so: __tls_get_addr
+ld.so: __libc_memalign
+ld.so: malloc
+ld.so: calloc
+ld.so: realloc
+ld.so: free
diff --git a/sysdeps/unix/sysv/linux/aarch64/localplt.data b/sysdeps/unix/sysv/linux/aarch64/localplt.data
index dfca9a7..a3392d3 100644
--- a/sysdeps/unix/sysv/linux/aarch64/localplt.data
+++ b/sysdeps/unix/sysv/linux/aarch64/localplt.data
@@ -12,3 +12,12 @@ libm.so: matherr
 libm.so: __signbit
 libm.so: __signbitf
 libm.so: __signbitl
+# The dynamic loader needs __tls_get_addr for TLS, and uses __libc_memalign
+# internally to allocate aligned TLS storage. The other malloc family of
+# functions are expected to allow user symbol interposition.
+ld.so: __tls_get_addr
+ld.so: __libc_memalign
+ld.so: malloc
+ld.so: calloc
+ld.so: realloc
+ld.so: free
diff --git a/sysdeps/unix/sysv/linux/alpha/localplt.data b/sysdeps/unix/sysv/linux/alpha/localplt.data
index 6b2e515..e2a4311 100644
--- a/sysdeps/unix/sysv/linux/alpha/localplt.data
+++ b/sysdeps/unix/sysv/linux/alpha/localplt.data
@@ -24,3 +24,12 @@ libm.so: matherr
 # We used to offer inline functions that used this, so it must be exported.
 # Ought to reorg things such that carg isn't thus forced to use a plt.
 libm.so: __atan2
+# The dynamic loader needs __tls_get_addr for TLS, and uses __libc_memalign
+# internally to allocate aligned TLS storage. The other malloc family of
+# functions are expected to allow user symbol interposition.
+ld.so: __tls_get_addr
+ld.so: __libc_memalign
+ld.so: malloc
+ld.so: calloc
+ld.so: realloc
+ld.so: free
diff --git a/sysdeps/unix/sysv/linux/arm/localplt.data b/sysdeps/unix/sysv/linux/arm/localplt.data
index 109522e..85160bd 100644
--- a/sysdeps/unix/sysv/linux/arm/localplt.data
+++ b/sysdeps/unix/sysv/linux/arm/localplt.data
@@ -11,3 +11,12 @@ libm.so: __signbitf
 libm.so: matherr
 libpthread.so: __errno_location
 libpthread.so: raise
+# The dynamic loader needs __tls_get_addr for TLS, and uses __libc_memalign
+# internally to allocate aligned TLS storage. The other malloc family of
+# functions are expected to allow user symbol interposition.
+ld.so: __tls_get_addr
+ld.so: __libc_memalign
+ld.so: malloc
+ld.so: calloc
+ld.so: realloc
+ld.so: free
diff --git a/sysdeps/unix/sysv/linux/i386/localplt.data b/sysdeps/unix/sysv/linux/i386/localplt.data
index 8fb56b6..009797b 100644
--- a/sysdeps/unix/sysv/linux/i386/localplt.data
+++ b/sysdeps/unix/sysv/linux/i386/localplt.data
@@ -5,3 +5,14 @@ libc.so: malloc
 libc.so: memalign
 libc.so: realloc
 libm.so: matherr
+# The dynamic loader needs ___tls_get_addr for TLS, and uses __libc_memalign
+# internally to allocate aligned TLS storage. The other malloc family of
+# functions are expected to allow user symbol interposition.
+# Note that it is triple underscore for ___tls_get_addr e.g. the alternate
+# ABI.
+ld.so: ___tls_get_addr
+ld.so: __libc_memalign
+ld.so: malloc
+ld.so: calloc
+ld.so: realloc
+ld.so: free
diff --git a/sysdeps/unix/sysv/linux/ia64/localplt.data b/sysdeps/unix/sysv/linux/ia64/localplt.data
index ba48816..bc2ce41 100644
--- a/sysdeps/unix/sysv/linux/ia64/localplt.data
+++ b/sysdeps/unix/sysv/linux/ia64/localplt.data
@@ -6,3 +6,12 @@ libc.so: realloc
 libm.so: matherr
 libm.so: matherrf
 libm.so: matherrl
+# The dynamic loader needs __tls_get_addr for TLS, and uses __libc_memalign
+# internally to allocate aligned TLS storage. The other malloc family of
+# functions are expected to allow user symbol interposition.
+ld.so: __tls_get_addr
+ld.so: __libc_memalign
+ld.so: malloc
+ld.so: calloc
+ld.so: realloc
+ld.so: free
diff --git a/sysdeps/unix/sysv/linux/m68k/localplt.data b/sysdeps/unix/sysv/linux/m68k/localplt.data
index d266b8f..15a9fe5 100644
--- a/sysdeps/unix/sysv/linux/m68k/localplt.data
+++ b/sysdeps/unix/sysv/linux/m68k/localplt.data
@@ -6,3 +6,12 @@ libc.so: malloc
 libc.so: memalign
 libc.so: realloc
 libm.so: matherr
+# The dynamic loader needs __tls_get_addr for TLS, and uses __libc_memalign
+# internally to allocate aligned TLS storage. The other malloc family of
+# functions are expected to allow user symbol interposition.
+ld.so: __tls_get_addr
+ld.so: __libc_memalign
+ld.so: malloc
+ld.so: calloc
+ld.so: realloc
+ld.so: free
diff --git a/sysdeps/unix/sysv/linux/microblaze/localplt.data b/sysdeps/unix/sysv/linux/microblaze/localplt.data
index 6dd5bcb..f488c95 100644
--- a/sysdeps/unix/sysv/linux/microblaze/localplt.data
+++ b/sysdeps/unix/sysv/linux/microblaze/localplt.data
@@ -9,3 +9,12 @@ libm.so: __signbit
 libm.so: __signbitf
 libm.so: matherr
 libpthread.so: __errno_location
+# The dynamic loader needs __tls_get_addr for TLS, and uses __libc_memalign
+# internally to allocate aligned TLS storage. The other malloc family of
+# functions are expected to allow user symbol interposition.
+ld.so: __tls_get_addr
+ld.so: __libc_memalign
+ld.so: malloc
+ld.so: calloc
+ld.so: realloc
+ld.so: free
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/localplt.data b/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/localplt.data
index 8fb56b6..b25abf8 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/localplt.data
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/localplt.data
@@ -5,3 +5,11 @@ libc.so: malloc
 libc.so: memalign
 libc.so: realloc
 libm.so: matherr
+# The dynamic loader uses __libc_memalign internally to allocate aligned
+# TLS storage. The other malloc family of functions are expected to allow
+# user symbol interposition.
+ld.so: __libc_memalign
+ld.so: malloc
+ld.so: calloc
+ld.so: realloc
+ld.so: free
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/localplt.data b/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/localplt.data
index 6332a00..0b3b327 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/localplt.data
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/localplt.data
@@ -38,3 +38,11 @@ libm.so: __signbitl
 libm.so: copysignl ?
 libm.so: fabsl
 libm.so: matherr
+# The dynamic loader uses __libc_memalign internally to allocate aligned
+# TLS storage. The other malloc family of functions are expected to allow
+# user symbol interposition.
+ld.so: __libc_memalign
+ld.so: malloc
+ld.so: calloc
+ld.so: realloc
+ld.so: free
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/localplt.data b/sysdeps/unix/sysv/linux/powerpc/powerpc64/localplt.data
index 2219aa9..49d5de6 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/localplt.data
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/localplt.data
@@ -4,3 +4,11 @@ libc.so: malloc
 libc.so: memalign
 libc.so: realloc
 libm.so: matherr
+# The dynamic loader uses __libc_memalign internally to allocate aligned
+# TLS storage. The other malloc family of functions are expected to
+# allow user symbol interposition.
+ld.so: __libc_memalign
+ld.so: malloc
+ld.so: calloc
+ld.so: realloc
+ld.so: free
diff --git a/sysdeps/unix/sysv/linux/s390/localplt.data b/sysdeps/unix/sysv/linux/s390/localplt.data
index 8fb56b6..b25abf8 100644
--- a/sysdeps/unix/sysv/linux/s390/localplt.data
+++ b/sysdeps/unix/sysv/linux/s390/localplt.data
@@ -5,3 +5,11 @@ libc.so: malloc
 libc.so: memalign
 libc.so: realloc
 libm.so: matherr
+# The dynamic loader uses __libc_memalign internally to allocate aligned
+# TLS storage. The other malloc family of functions are expected to allow
+# user symbol interposition.
+ld.so: __libc_memalign
+ld.so: malloc
+ld.so: calloc
+ld.so: realloc
+ld.so: free
diff --git a/sysdeps/unix/sysv/linux/sparc/sparc32/localplt.data b/sysdeps/unix/sysv/linux/sparc/sparc32/localplt.data
index 15ba18b..81c1650 100644
--- a/sysdeps/unix/sysv/linux/sparc/sparc32/localplt.data
+++ b/sysdeps/unix/sysv/linux/sparc/sparc32/localplt.data
@@ -15,3 +15,12 @@ libc.so: malloc
 libc.so: memalign
 libc.so: realloc
 libm.so: matherr
+# The dynamic loader needs __tls_get_addr for TLS, and uses __libc_memalign
+# internally to allocate aligned TLS storage. The other malloc family of
+# functions are expected to allow user symbol interposition.
+ld.so: __tls_get_addr
+ld.so: __libc_memalign
+ld.so: malloc
+ld.so: calloc
+ld.so: realloc
+ld.so: free
diff --git a/sysdeps/unix/sysv/linux/sparc/sparc64/localplt.data b/sysdeps/unix/sysv/linux/sparc/sparc64/localplt.data
index 6f1769c..d6f9e02 100644
--- a/sysdeps/unix/sysv/linux/sparc/sparc64/localplt.data
+++ b/sysdeps/unix/sysv/linux/sparc/sparc64/localplt.data
@@ -17,3 +17,12 @@ libc.so: malloc
 libc.so: memalign
 libc.so: realloc
 libm.so: matherr
+# The dynamic loader needs __tls_get_addr for TLS, and uses __libc_memalign
+# internally to allocate aligned TLS storage. The other malloc family of
+# functions are expected to allow user symbol interposition.
+ld.so: __tls_get_addr
+ld.so: __libc_memalign
+ld.so: malloc
+ld.so: calloc
+ld.so: realloc
+ld.so: free

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

Summary of changes:
 ChangeLog                                          |   28 ++++++++++++++++++++
 elf/Makefile                                       |    3 +-
 manual/llio.texi                                   |    5 +++
 sysdeps/generic/localplt.data                      |    9 ++++++
 sysdeps/unix/sysv/linux/aarch64/localplt.data      |    9 ++++++
 sysdeps/unix/sysv/linux/alpha/localplt.data        |    9 ++++++
 sysdeps/unix/sysv/linux/arm/localplt.data          |    9 ++++++
 sysdeps/unix/sysv/linux/i386/localplt.data         |   11 ++++++++
 sysdeps/unix/sysv/linux/ia64/localplt.data         |    9 ++++++
 sysdeps/unix/sysv/linux/m68k/localplt.data         |    9 ++++++
 sysdeps/unix/sysv/linux/microblaze/localplt.data   |    9 ++++++
 .../sysv/linux/powerpc/powerpc32/fpu/localplt.data |    8 +++++
 .../linux/powerpc/powerpc32/nofpu/localplt.data    |    8 +++++
 .../sysv/linux/powerpc/powerpc64/localplt.data     |    8 +++++
 sysdeps/unix/sysv/linux/s390/localplt.data         |    8 +++++
 .../unix/sysv/linux/sparc/sparc32/localplt.data    |    9 ++++++
 .../unix/sysv/linux/sparc/sparc64/localplt.data    |    9 ++++++
 17 files changed, 159 insertions(+), 1 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]