[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Commits] r21597 - in /fsf/trunk/libc: ./ elf/ sysdeps/s390/ sysdeps/unix/sysv/linux/s390/bits/ sysdeps/unix/sysv/linux/sparc/sparc64/...



Author: eglibc
Date: Fri Nov  9 00:01:55 2012
New Revision: 21597

Log:
Import glibc-mainline for 2012-11-09

Added:
    fsf/trunk/libc/sysdeps/unix/sysv/linux/sparc/sparc64/__start_context.S
Modified:
    fsf/trunk/libc/ChangeLog
    fsf/trunk/libc/elf/elf.h
    fsf/trunk/libc/sysdeps/s390/dl-procinfo.c
    fsf/trunk/libc/sysdeps/s390/dl-procinfo.h
    fsf/trunk/libc/sysdeps/unix/sysv/linux/s390/bits/hwcap.h
    fsf/trunk/libc/sysdeps/unix/sysv/linux/sparc/sparc64/Makefile
    fsf/trunk/libc/sysdeps/unix/sysv/linux/sparc/sparc64/makecontext.c
    fsf/trunk/libc/sysdeps/x86/Makefile
    fsf/trunk/libc/sysdeps/x86/tst-xmmymm.sh

Modified: fsf/trunk/libc/ChangeLog
==============================================================================
--- fsf/trunk/libc/ChangeLog (original)
+++ fsf/trunk/libc/ChangeLog Fri Nov  9 00:01:55 2012
@@ -1,3 +1,34 @@
+2012-11-08  Andreas Krebbel  <Andreas.Krebbel@xxxxxxxxxx>
+
+        * sysdeps/s390/dl-procinfo.c (_dl_s390_cap_flags): Add "te".
+	* sysdeps/s390/dl-procinfo.h (HWCAP_S390_TE): Add enum value.
+	* sysdeps/unix/sysv/linux/s390/hwcap.h (HWCAP_S390_TE): Add macro
+	definition.
+
+2012-11-08  Marcus Shawcroft  <marcus.shawcroft@xxxxxxxxxx>
+
+	* elf/elf.h: Update comment before AArch64 relocations.
+
+2012-11-07  David S. Miller  <davem@xxxxxxxxxxxxx>
+
+	* sysdeps/unix/sysv/linux/sparc/sparc64/__start_context.S: New file.
+	* sysdeps/unix/sysv/linux/sparc/sparc64/makecontext.c
+	(__start_context): Declare.
+	(__makecontext_ret): Delete.
+	(__makecontext): Hook up __start_context instead of
+	__makecontext_ret.
+	* sysdeps/unix/sysv/linux/sparc/sparc64/Makefile
+	(sysdep_routines): Add __start_context when in stdlib.
+
+2012-11-07  Joseph Myers  <joseph@xxxxxxxxxxxxxxxx>
+
+	* sysdeps/x86/Makefile ($(objpfx)tst-xmmymm.out): Pass $(NM),
+	$(OBJDUMP) and $(READELF) to tst-xmmymm.sh.
+	* sysdeps/x86/tst-xmmymm.sh (NM): New variable.  Use it instead of
+	hardcoded "nm".
+	(OBJDUMP): New variable.  Use it instead of hardcoded "objdump".
+	(READELF): New variable.  Use it instead of hardcoded "readelf".
+
 2012-11-07  H.J. Lu  <hongjiu.lu@xxxxxxxxx>
 
 	* sysdeps/x86_64/Makefile ($(objpfx)tst-xmmymm.out): Moved to ...

Modified: fsf/trunk/libc/elf/elf.h
==============================================================================
--- fsf/trunk/libc/elf/elf.h (original)
+++ fsf/trunk/libc/elf/elf.h Fri Nov  9 00:01:55 2012
@@ -2310,7 +2310,7 @@
 #define SHT_ARM_ATTRIBUTES	(SHT_LOPROC + 3) /* ARM attributes section.  */
 
 
-/* AArch64 specific declarations.  */
+/* AArch64 relocs.  */
 
 #define R_AARCH64_NONE            0	/* No relocation.  */
 #define R_AARCH64_ABS64         257	/* Direct 64 bit. */

Modified: fsf/trunk/libc/sysdeps/s390/dl-procinfo.c
==============================================================================
--- fsf/trunk/libc/sysdeps/s390/dl-procinfo.c (original)
+++ fsf/trunk/libc/sysdeps/s390/dl-procinfo.c Fri Nov  9 00:01:55 2012
@@ -46,11 +46,11 @@
 #if !defined PROCINFO_DECL && defined SHARED
   ._dl_s390_cap_flags
 #else
-PROCINFO_CLASS const char _dl_s390_cap_flags[10][9]
+PROCINFO_CLASS const char _dl_s390_cap_flags[11][9]
 #endif
 #ifndef PROCINFO_DECL
 = {
-     "esan3", "zarch", "stfle", "msa", "ldisp", "eimm", "dfp", "edat", "etf3eh", "highgprs"
+     "esan3", "zarch", "stfle", "msa", "ldisp", "eimm", "dfp", "edat", "etf3eh", "highgprs", "te"
   }
 #endif
 #if !defined SHARED || defined PROCINFO_DECL

Modified: fsf/trunk/libc/sysdeps/s390/dl-procinfo.h
==============================================================================
--- fsf/trunk/libc/sysdeps/s390/dl-procinfo.h (original)
+++ fsf/trunk/libc/sysdeps/s390/dl-procinfo.h Fri Nov  9 00:01:55 2012
@@ -33,7 +33,9 @@
 
 /* Hardware capablity bit numbers are derived directly from the
    facility indications as stored by the "store facility list" (STFL)
-   instruction.  */
+   instruction.
+   highgprs is an alien in that list.  It describes a *kernel*
+   capability.  */
 
 enum
 {
@@ -47,6 +49,7 @@
   HWCAP_S390_HPAGE = 1 << 7,
   HWCAP_S390_ETF3EH = 1 << 8,
   HWCAP_S390_HIGH_GPRS = 1 << 9,
+  HWCAP_S390_TE = 1 << 10,
 };
 
 #define HWCAP_IMPORTANT (HWCAP_S390_ZARCH | HWCAP_S390_LDISP \

Modified: fsf/trunk/libc/sysdeps/unix/sysv/linux/s390/bits/hwcap.h
==============================================================================
--- fsf/trunk/libc/sysdeps/unix/sysv/linux/s390/bits/hwcap.h (original)
+++ fsf/trunk/libc/sysdeps/unix/sysv/linux/s390/bits/hwcap.h Fri Nov  9 00:01:55 2012
@@ -34,3 +34,4 @@
 #define HWCAP_S390_HPAGE        128
 #define HWCAP_S390_ETF3EH       256
 #define HWCAP_S390_HIGH_GPRS    512
+#define HWCAP_S390_TE           1024

Modified: fsf/trunk/libc/sysdeps/unix/sysv/linux/sparc/sparc64/Makefile
==============================================================================
--- fsf/trunk/libc/sysdeps/unix/sysv/linux/sparc/sparc64/Makefile (original)
+++ fsf/trunk/libc/sysdeps/unix/sysv/linux/sparc/sparc64/Makefile Fri Nov  9 00:01:55 2012
@@ -3,3 +3,7 @@
 
 sysdep-CFLAGS += -fcall-used-g6
 LD += -melf64_sparc
+
+ifeq ($(subdir),stdlib)
+sysdep_routines += __start_context
+endif

Added: fsf/trunk/libc/sysdeps/unix/sysv/linux/sparc/sparc64/__start_context.S
==============================================================================
--- fsf/trunk/libc/sysdeps/unix/sysv/linux/sparc/sparc64/__start_context.S (added)
+++ fsf/trunk/libc/sysdeps/unix/sysv/linux/sparc/sparc64/__start_context.S Fri Nov  9 00:01:55 2012
@@ -1,0 +1,36 @@
+/* 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/>.  */
+
+#include <sysdep.h>
+
+	.text
+
+/* This is the helper code which gets called if a function which is
+   registered with 'makecontext' returns.  In this case we have to
+   install the context listed in the uc_link element of the context
+   'makecontext' manipulated at the time of the 'makecontext' call.
+   If the pointer is NULL the process must terminate.  */
+
+ENTRY(__start_context)
+	brz,pn	%i0, 1f
+	 mov	1, %o1
+	call	__setcontext
+	 mov	%i0, %o0
+1:	call	HIDDEN_JUMPTARGET(exit)
+	 mov	0, %o0
+	unimp	0
+END(__start_context)

Modified: fsf/trunk/libc/sysdeps/unix/sysv/linux/sparc/sparc64/makecontext.c
==============================================================================
--- fsf/trunk/libc/sysdeps/unix/sysv/linux/sparc/sparc64/makecontext.c (original)
+++ fsf/trunk/libc/sysdeps/unix/sysv/linux/sparc/sparc64/makecontext.c Fri Nov  9 00:01:55 2012
@@ -21,6 +21,8 @@
 #include <stdlib.h>
 #include <ucontext.h>
 
+extern void __start_context (struct ucontext *ucp);
+
 void
 __makecontext (ucontext_t *ucp, void (*func) (void), int argc, ...)
 {
@@ -37,7 +39,7 @@
   ucp->uc_mcontext.mc_gregs[MC_PC] = (long) func;
   ucp->uc_mcontext.mc_gregs[MC_NPC] = ((long) func) + 4;
   ucp->uc_mcontext.mc_gregs[MC_O6] = ((long) sp) - 0x7ff;
-  ucp->uc_mcontext.mc_gregs[MC_O7] = ((long) __makecontext_ret) - 8;
+  ucp->uc_mcontext.mc_gregs[MC_O7] = ((long) __start_context) - 8;
   ucp->uc_mcontext.mc_fp = ((long) topsp) - 0x7ff;
   ucp->uc_mcontext.mc_i7 = 0;
   topsp[14] = 0;
@@ -52,15 +54,4 @@
   va_end (ap);
 }
 
-asm ("							\n\
-	.text						\n\
-	.type	__makecontext_ret, #function		\n\
-__makecontext_ret:					\n\
-	mov	1, %o1					\n\
-	call	__setcontext				\n\
-	 mov	%i0, %o0				\n\
-	unimp	0					\n\
-	.size	__makecontext_ret, .-__makecontext_ret	\n\
-     ");
-
 weak_alias (__makecontext, makecontext)

Modified: fsf/trunk/libc/sysdeps/x86/Makefile
==============================================================================
--- fsf/trunk/libc/sysdeps/x86/Makefile (original)
+++ fsf/trunk/libc/sysdeps/x86/Makefile Fri Nov  9 00:01:55 2012
@@ -5,5 +5,5 @@
 tests: $(objpfx)tst-xmmymm.out
 $(objpfx)tst-xmmymm.out: ../sysdeps/x86/tst-xmmymm.sh $(objpfx)ld.so
 	@echo "Checking ld.so for SSE register use.  This will take a few seconds..."
-	$(SHELL) $< $(objpfx) > $@
+	$(SHELL) $< $(objpfx) '$(NM)' '$(OBJDUMP)' '$(READELF)' > $@
 endif

Modified: fsf/trunk/libc/sysdeps/x86/tst-xmmymm.sh
==============================================================================
--- fsf/trunk/libc/sysdeps/x86/tst-xmmymm.sh (original)
+++ fsf/trunk/libc/sysdeps/x86/tst-xmmymm.sh Fri Nov  9 00:01:55 2012
@@ -20,18 +20,21 @@
 set -e
 
 objpfx="$1"
+NM="$2"
+OBJDUMP="$3"
+READELF="$4"
 
 tmp=$(mktemp ${objpfx}tst-xmmymm.XXXXXX)
 trap 'rm -f "$tmp"' 1 2 3 15
 
 # List of object files we have to test
-rtldobjs=$(readelf -W -wi ${objpfx}dl-allobjs.os |
+rtldobjs=$($READELF -W -wi ${objpfx}dl-allobjs.os |
     awk '/^ </ { if ($5 == "(DW_TAG_compile_unit)") c=1; else c=0 } $2 == "DW_AT_name" { if (c == 1) print $NF }' |
     sed 's,\(.*/\|\)\([_[:alnum:]-]*[.]\).$,\2os,')
 rtldobjs="$rtldobjs $(ar t ${objpfx}rtld-libc.a)"
 
 # OBJECT symbols can be ignored.
-readelf -sW ${objpfx}dl-allobjs.os ${objpfx}rtld-libc.a |
+$READELF -sW ${objpfx}dl-allobjs.os ${objpfx}rtld-libc.a |
 egrep " OBJECT  *GLOBAL " |
 awk '{if ($7 != "ABS") print $8 }' |
 sort -u > "$tmp"
@@ -46,7 +49,7 @@
   objs=""
 
   for f in $this; do
-    undef=$(nm -u "$objpfx"../*/"$f" | awk '{print $2}')
+    undef=$($NM -u "$objpfx"../*/"$f" | awk '{print $2}')
     if test -n "$undef"; then
       for s in $undef; do
 	for obj in ${objects[*]} "_GLOBAL_OFFSET_TABLE_"; do
@@ -56,7 +59,7 @@
 	done
         for o in $rtldobjs; do
 	  ro=$(echo "$objpfx"../*/"$o")
-	  if nm -g --defined-only "$ro" | egrep -qs " $s\$"; then
+	  if $NM -g --defined-only "$ro" | egrep -qs " $s\$"; then
 	    if ! (echo "$tocheck $objs" | fgrep -qs "$o"); then
 	      echo "$o needed for $s"
 	      objs="$objs $o"
@@ -76,7 +79,7 @@
 
 cp /dev/null "$tmp"
 for f in $tocheck; do
-  objdump -d "$objpfx"../*/"$f" |
+  $OBJDUMP -d "$objpfx"../*/"$f" |
   awk 'BEGIN { last="" } /^[[:xdigit:]]* <[_[:alnum:]]*>:$/ { fct=substr($2, 2, length($2)-3) } /,%[xy]mm[[:digit:]]*$/ { if (last != fct) { print fct; last=fct} }' |
   while read fct; do
     if test "$fct" = "_dl_runtime_profile" -o "$fct" = "_dl_x86_64_restore_sse"; then

_______________________________________________
Commits mailing list
Commits@xxxxxxxxxx
http://eglibc.org/cgi-bin/mailman/listinfo/commits