Hello community,

here is the log from the commit of package gcc48 for openSUSE:Factory checked 
in at 2014-04-11 13:23:39
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/gcc48 (Old)
 and      /work/SRC/openSUSE:Factory/.gcc48.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "gcc48"

Changes:
--------
--- 
/work/SRC/openSUSE:Factory/gcc48/cross-aarch64-gcc48-icecream-backend.changes   
    2014-03-27 09:28:29.000000000 +0100
+++ 
/work/SRC/openSUSE:Factory/.gcc48.new/cross-aarch64-gcc48-icecream-backend.changes
  2014-04-11 13:23:40.000000000 +0200
@@ -1,0 +2,20 @@
+Mon Apr  7 07:45:11 UTC 2014 - [email protected]
+
+- Update to gcc-4_8-brach head (r209122).
+  * pulls official backport of ppc64le support
+  * drops gcc48-ibm-power8.diff, gcc48-ibm-power8-testsuite.diff,
+  gcc48-ibm-power8-other.diff, gcc48-pr59844.diff, 
gcc48-ibm-power8-fixes1.diff,
+  gcc48-ibm-power8-fixes2.diff, gcc48-ibm-power8-disable-sanitizer.diff,
+  gcc48-ibm-power8-testsuite-fixes1.diff and gcc48-ibm-power8-fixes3.diff
+- tls-no-direct.diff, fix to only affect %ix86 similar to SLE11.  [bnc#185782]
+- refresh gcc41-ppc32-retaddr.patch
+- Drop old compatibility provide and conflict of/with libgcc%{libgcc_s}
+
+-------------------------------------------------------------------
+Fri Apr  4 08:04:28 UTC 2014 - [email protected]
+
+- gcc48-ibm-power8-bnc871635.diff, fix glibc math testsuite.  [bnc#871635]
+- gcc48-lto-plugin-short-readwrite.diff, backport lto-plugin changes
+  to work more reliably in virtualized environments.
+
+-------------------------------------------------------------------
cross-armv6hl-gcc48-icecream-backend.changes: same change
cross-armv7hl-gcc48-icecream-backend.changes: same change
cross-hppa-gcc48-icecream-backend.changes: same change
cross-i386-gcc48-icecream-backend.changes: same change
cross-ia64-gcc48-icecream-backend.changes: same change
cross-ppc-gcc48-icecream-backend.changes: same change
cross-ppc64-gcc48-icecream-backend.changes: same change
cross-ppc64le-gcc48-icecream-backend.changes: same change
cross-s390-gcc48-icecream-backend.changes: same change
cross-s390x-gcc48-icecream-backend.changes: same change
cross-x86_64-gcc48-icecream-backend.changes: same change
gcc48-testresults.changes: same change
gcc48.changes: same change
libffi48.changes: same change
libgcj48.changes: same change

Old:
----
  gcc-4.8.2-r208784.tar.bz2
  gcc48-ibm-power8-disable-sanitizer.diff
  gcc48-ibm-power8-fixes1.diff
  gcc48-ibm-power8-fixes2.diff
  gcc48-ibm-power8-fixes3.diff
  gcc48-ibm-power8-other.diff
  gcc48-ibm-power8-testsuite-fixes1.diff
  gcc48-ibm-power8-testsuite.diff
  gcc48-ibm-power8.diff

New:
----
  gcc-4.8.2-r209122.tar.bz2
  gcc48-ibm-power8-bnc871635.diff
  gcc48-lto-plugin-short-readwrite.diff

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ cross-aarch64-gcc48-icecream-backend.spec ++++++
--- /var/tmp/diff_new_pack.0UkVuT/_old  2014-04-11 13:23:47.000000000 +0200
+++ /var/tmp/diff_new_pack.0UkVuT/_new  2014-04-11 13:23:47.000000000 +0200
@@ -91,7 +91,7 @@
 %define biarch_targets x86_64 s390x powerpc64 powerpc sparc sparc64
 
 Url:            http://gcc.gnu.org/
-Version:        4.8.2+r208784
+Version:        4.8.2+r209122
 Release:        0
 %define gcc_version %(echo %version | sed 's/+.*//')
 %define gcc_dir_version %(echo %gcc_version | cut -d '.' -f 1-2)
@@ -121,6 +121,7 @@
 Patch34:        pr58369.patch
 Patch36:        stack-protector-aarch64.patch
 Patch37:        function-profiling-aarch64.patch
+Patch38:        gcc48-lto-plugin-short-readwrite.diff
 # A set of patches from the RH srpm
 Patch51:        gcc41-ia64-stack-protector.patch
 Patch55:        gcc41-java-slow_pthread_self.patch
@@ -128,16 +129,7 @@
 # Some patches taken from Debian
 Patch60:        gcc44-textdomain.patch
 Patch61:        gcc44-rename-info-files.patch
-# Patches for IBM features
-Patch70:        gcc48-ibm-power8.diff
-Patch71:        gcc48-ibm-power8-testsuite.diff
-Patch72:        gcc48-ibm-power8-other.diff
-Patch73:        gcc48-pr59844.diff
-Patch74:        gcc48-ibm-power8-fixes1.diff
-Patch75:        gcc48-ibm-power8-fixes2.diff
-Patch76:        gcc48-ibm-power8-disable-sanitizer.diff
-Patch77:        gcc48-ibm-power8-testsuite-fixes1.diff
-Patch78:        gcc48-ibm-power8-fixes3.diff
+Patch70:        gcc48-ibm-power8-bnc871635.diff
 
 #testpatch end
 
@@ -205,20 +197,13 @@
 %patch34 -p1
 %patch36 -p1
 %patch37 -p1
+%patch38
 %patch51
 %patch55
 %patch57
 %patch60
 %patch61
 %patch70
-%patch71
-%patch72
-%patch73
-%patch74
-%patch75
-%patch76
-%patch77
-%patch78
 
 #test patching end
 

cross-armv6hl-gcc48-icecream-backend.spec: same change
cross-armv7hl-gcc48-icecream-backend.spec: same change
cross-hppa-gcc48-icecream-backend.spec: same change
cross-i386-gcc48-icecream-backend.spec: same change
cross-ia64-gcc48-icecream-backend.spec: same change
cross-ppc-gcc48-icecream-backend.spec: same change
cross-ppc64-gcc48-icecream-backend.spec: same change
cross-ppc64le-gcc48-icecream-backend.spec: same change
cross-s390-gcc48-icecream-backend.spec: same change
cross-s390x-gcc48-icecream-backend.spec: same change
cross-x86_64-gcc48-icecream-backend.spec: same change
gcc48-testresults.spec: same change
++++++ gcc48.spec ++++++
--- /var/tmp/diff_new_pack.0UkVuT/_old  2014-04-11 13:23:47.000000000 +0200
+++ /var/tmp/diff_new_pack.0UkVuT/_new  2014-04-11 13:23:47.000000000 +0200
@@ -205,7 +205,7 @@
 %define biarch_targets x86_64 s390x powerpc64 powerpc sparc sparc64
 
 Url:            http://gcc.gnu.org/
-Version:        4.8.2+r208784
+Version:        4.8.2+r209122
 Release:        0
 %define gcc_version %(echo %version | sed 's/+.*//')
 %define gcc_dir_version %(echo %gcc_version | cut -d '.' -f 1-2)
@@ -261,6 +261,7 @@
 Patch34:        pr58369.patch
 Patch36:        stack-protector-aarch64.patch
 Patch37:        function-profiling-aarch64.patch
+Patch38:        gcc48-lto-plugin-short-readwrite.diff
 # A set of patches from the RH srpm
 Patch51:        gcc41-ia64-stack-protector.patch
 Patch55:        gcc41-java-slow_pthread_self.patch
@@ -268,16 +269,7 @@
 # Some patches taken from Debian
 Patch60:        gcc44-textdomain.patch
 Patch61:        gcc44-rename-info-files.patch
-# Patches for IBM features
-Patch70:        gcc48-ibm-power8.diff
-Patch71:        gcc48-ibm-power8-testsuite.diff
-Patch72:        gcc48-ibm-power8-other.diff
-Patch73:        gcc48-pr59844.diff
-Patch74:        gcc48-ibm-power8-fixes1.diff
-Patch75:        gcc48-ibm-power8-fixes2.diff
-Patch76:        gcc48-ibm-power8-disable-sanitizer.diff
-Patch77:        gcc48-ibm-power8-testsuite-fixes1.diff
-Patch78:        gcc48-ibm-power8-fixes3.diff
+Patch70:        gcc48-ibm-power8-bnc871635.diff
 
 #testpatch end
 
@@ -437,9 +429,6 @@
 # Only one package may provide this - allows multiple gcc versions
 # to co-exist without an overly large list of provides/obsoletes
 Conflicts:      %selfconflict libgcc_s%{libgcc_s}
-# Old libgcc packages provided a wrong shlib policy compatible name
-Provides:       libgcc%{libgcc_s} = %{version}-%{release}
-Conflicts:      %selfconflict libgcc%{libgcc_s}
 
 %description -n libgcc_s%{libgcc_s}%{libgcc_s_suffix}
 Libgcc is needed for dynamically linked C programs.
@@ -455,9 +444,6 @@
 # Only one package may provide this - allows multiple gcc versions
 # to co-exist without an overly large list of provides/obsoletes
 Conflicts:      %selfconflict libgcc_s%{libgcc_s}-32bit
-# Old libgcc packages provided a wrong shlib policy compatible name
-Provides:       libgcc%{libgcc_s}-32bit = %{version}-%{release}
-Conflicts:      %selfconflict libgcc%{libgcc_s}-32bit
 
 %description -n libgcc_s%{libgcc_s}%{libgcc_s_suffix}-32bit
 Libgcc is needed for dynamically linked C programs.
@@ -473,9 +459,6 @@
 # Only one package may provide this - allows multiple gcc versions
 # to co-exist without an overly large list of provides/obsoletes
 Conflicts:      %selfconflict libgcc_s%{libgcc_s}-64bit
-# Old libgcc packages provided a wrong shlib policy compatible name
-Provides:       libgcc%{libgcc_s}-64bit = %{version}-%{release}
-Conflicts:      %selfconflict libgcc%{libgcc_s}-64bit
 
 %description -n libgcc_s%{libgcc_s}%{libgcc_s_suffix}-64bit
 Libgcc is needed for dynamically linked C programs.
@@ -1497,20 +1480,13 @@
 %patch34 -p1
 %patch36 -p1
 %patch37 -p1
+%patch38
 %patch51
 %patch55
 %patch57
 %patch60
 %patch61
 %patch70
-%patch71
-%patch72
-%patch73
-%patch74
-%patch75
-%patch76
-%patch77
-%patch78
 
 #test patching end
 

++++++ libffi48.spec ++++++
--- /var/tmp/diff_new_pack.0UkVuT/_old  2014-04-11 13:23:47.000000000 +0200
+++ /var/tmp/diff_new_pack.0UkVuT/_new  2014-04-11 13:23:47.000000000 +0200
@@ -222,7 +222,7 @@
 %define biarch_targets x86_64 s390x powerpc64 powerpc sparc sparc64
 
 Url:            http://gcc.gnu.org/
-Version:        4.8.2+r208784
+Version:        4.8.2+r209122
 Release:        0
 %define gcc_version %(echo %version | sed 's/+.*//')
 %define gcc_dir_version %(echo %gcc_version | cut -d '.' -f 1-2)
@@ -278,6 +278,7 @@
 Patch34:        pr58369.patch
 Patch36:        stack-protector-aarch64.patch
 Patch37:        function-profiling-aarch64.patch
+Patch38:        gcc48-lto-plugin-short-readwrite.diff
 # A set of patches from the RH srpm
 Patch51:        gcc41-ia64-stack-protector.patch
 Patch55:        gcc41-java-slow_pthread_self.patch
@@ -285,16 +286,7 @@
 # Some patches taken from Debian
 Patch60:        gcc44-textdomain.patch
 Patch61:        gcc44-rename-info-files.patch
-# Patches for IBM features
-Patch70:        gcc48-ibm-power8.diff
-Patch71:        gcc48-ibm-power8-testsuite.diff
-Patch72:        gcc48-ibm-power8-other.diff
-Patch73:        gcc48-pr59844.diff
-Patch74:        gcc48-ibm-power8-fixes1.diff
-Patch75:        gcc48-ibm-power8-fixes2.diff
-Patch76:        gcc48-ibm-power8-disable-sanitizer.diff
-Patch77:        gcc48-ibm-power8-testsuite-fixes1.diff
-Patch78:        gcc48-ibm-power8-fixes3.diff
+Patch70:        gcc48-ibm-power8-bnc871635.diff
 
 #testpatch end
 
@@ -501,20 +493,13 @@
 %patch34 -p1
 %patch36 -p1
 %patch37 -p1
+%patch38
 %patch51
 %patch55
 %patch57
 %patch60
 %patch61
 %patch70
-%patch71
-%patch72
-%patch73
-%patch74
-%patch75
-%patch76
-%patch77
-%patch78
 
 #test patching end
 

libgcj48.spec: same change

++++++ gcc-4.8.2-r208784.tar.bz2 -> gcc-4.8.2-r209122.tar.bz2 ++++++
/work/SRC/openSUSE:Factory/gcc48/gcc-4.8.2-r208784.tar.bz2 
/work/SRC/openSUSE:Factory/.gcc48.new/gcc-4.8.2-r209122.tar.bz2 differ: char 
11, line 1

++++++ gcc.spec.in ++++++
--- /var/tmp/diff_new_pack.0UkVuT/_old  2014-04-11 13:23:47.000000000 +0200
+++ /var/tmp/diff_new_pack.0UkVuT/_new  2014-04-11 13:23:47.000000000 +0200
@@ -210,7 +210,7 @@
 %define biarch_targets x86_64 s390x powerpc64 powerpc sparc sparc64
 
 URL:          http://gcc.gnu.org/
-Version: 4.8.2+r208784
+Version: 4.8.2+r209122
 Release:      1
 %define gcc_version %(echo %version | sed 's/+.*//')
 %define gcc_dir_version %(echo %gcc_version | cut -d '.' -f 1-2)
@@ -268,6 +268,7 @@
 Patch34:        pr58369.patch
 Patch36:        stack-protector-aarch64.patch
 Patch37:        function-profiling-aarch64.patch
+Patch38:       gcc48-lto-plugin-short-readwrite.diff
 # A set of patches from the RH srpm
 Patch51:       gcc41-ia64-stack-protector.patch
 Patch55:       gcc41-java-slow_pthread_self.patch
@@ -275,16 +276,7 @@
 # Some patches taken from Debian
 Patch60:       gcc44-textdomain.patch
 Patch61:       gcc44-rename-info-files.patch
-# Patches for IBM features
-Patch70:       gcc48-ibm-power8.diff
-Patch71:       gcc48-ibm-power8-testsuite.diff
-Patch72:       gcc48-ibm-power8-other.diff
-Patch73:       gcc48-pr59844.diff
-Patch74:       gcc48-ibm-power8-fixes1.diff
-Patch75:       gcc48-ibm-power8-fixes2.diff
-Patch76:       gcc48-ibm-power8-disable-sanitizer.diff
-Patch77:       gcc48-ibm-power8-testsuite-fixes1.diff
-Patch78:       gcc48-ibm-power8-fixes3.diff
+Patch70:       gcc48-ibm-power8-bnc871635.diff
 
 #testpatch end
 
@@ -424,9 +416,6 @@
 # Only one package may provide this - allows multiple gcc versions
 # to co-exist without an overly large list of provides/obsoletes
 Conflicts:     %selfconflict libgcc_s%{libgcc_s}@variant@
-# Old libgcc packages provided a wrong shlib policy compatible name
-Provides:      libgcc%{libgcc_s}@variant@ = %{version}-%{release}
-Conflicts:     %selfconflict libgcc%{libgcc_s}@variant@
 
 %description -n libgcc_s%{libgcc_s}%{libgcc_s_suffix}@variant@
 Libgcc is needed for dynamically linked C programs.
@@ -1004,20 +993,13 @@
 %patch34 -p1
 %patch36 -p1
 %patch37 -p1
+%patch38
 %patch51
 %patch55
 %patch57
 %patch60
 %patch61
 %patch70
-%patch71
-%patch72
-%patch73
-%patch74
-%patch75
-%patch76
-%patch77
-%patch78
 
 #test patching end
 

++++++ gcc41-ppc32-retaddr.patch ++++++
--- /var/tmp/diff_new_pack.0UkVuT/_old  2014-04-11 13:23:47.000000000 +0200
+++ /var/tmp/diff_new_pack.0UkVuT/_new  2014-04-11 13:23:47.000000000 +0200
@@ -8,11 +8,11 @@
 
 Index: gcc/config/rs6000/rs6000.c
 ===================================================================
---- gcc/config/rs6000/rs6000.c.orig    2012-12-11 11:56:04.000000000 +0100
-+++ gcc/config/rs6000/rs6000.c 2012-12-11 12:52:22.803078827 +0100
-@@ -18325,18 +18325,22 @@ rs6000_return_addr (int count, rtx frame
-      don't try to be too clever here.  */
-   if (count != 0 || (DEFAULT_ABI != ABI_AIX && flag_pic))
+--- gcc/config/rs6000/rs6000.c.orig    2013-11-26 15:42:33.000000000 +0100
++++ gcc/config/rs6000/rs6000.c 2013-11-26 16:44:14.566089231 +0100
+@@ -20878,18 +20878,22 @@ rs6000_return_addr (int count, rtx frame
+   if (count != 0
+       || ((DEFAULT_ABI == ABI_V4 || DEFAULT_ABI == ABI_DARWIN) && flag_pic))
      {
 +      rtx x;
        cfun->machine->ra_needs_full_frame = 1;
@@ -46,7 +46,7 @@
 Index: gcc/testsuite/gcc.dg/20051128-1.c
 ===================================================================
 --- /dev/null  1970-01-01 00:00:00.000000000 +0000
-+++ gcc/testsuite/gcc.dg/20051128-1.c  2012-12-11 12:50:58.037081764 +0100
++++ gcc/testsuite/gcc.dg/20051128-1.c  2013-11-26 16:44:14.566089231 +0100
 @@ -0,0 +1,41 @@
 +/* { dg-do run } */
 +/* { dg-options "-O2 -fpic" } */

++++++ gcc48-ibm-power8-bnc871635.diff ++++++
2013-12-03  Adhemerval Zanella  <[email protected]>

        * config/rs6000/ibm-ldouble.c (__gcc_qadd): Fix add
        of normal number and qNaN to not raise an inexact exception.

        * gcc.target/powerpc/pr57363.c: New test.

Index: libgcc/config/rs6000/ibm-ldouble.c
===================================================================
--- libgcc/config/rs6000/ibm-ldouble.c  (revision 205644)
+++ libgcc/config/rs6000/ibm-ldouble.c  (revision 205645)
@@ -104,6 +104,8 @@ __gcc_qadd (double a, double aa, double
 
   if (nonfinite (z))
     {
+      if (fabs (z) != inf())
+       return z;
       z = cc + aa + c + a;
       if (nonfinite (z))
        return z;
Index: gcc/testsuite/gcc.target/powerpc/pr57363.c
===================================================================
--- gcc/testsuite/gcc.target/powerpc/pr57363.c  (revision 0)
+++ gcc/testsuite/gcc.target/powerpc/pr57363.c  (revision 205645)
@@ -0,0 +1,19 @@
+/* { dg-do run { target { powerpc*-*-linux* } } } */
+/* { dg-options "-mlong-double-128" } */
+
+/* Check if adding a qNAN and a normal long double does not generate a
+   inexact exception.  */
+
+#define _GNU_SOURCE
+#include <fenv.h>
+
+int main(void)
+{
+  double x = __builtin_nan ("");
+  long double y = 1.1L;
+
+  feenableexcept (FE_INEXACT);
+  feclearexcept (FE_ALL_EXCEPT);
+  x = x + y;
+  return fetestexcept(FE_INEXACT);
+}

++++++ gcc48-lto-plugin-short-readwrite.diff ++++++
2014-03-28  Richard Biener  <[email protected]>

        * simple-object.c (simple_object_internal_read): Handle
        EINTR and short reads.

        * lto-plugin.c (process_symtab): Handle EINTR and short reads.

2014-04-01  Richard Biener  <[email protected]>

        * simple-object.c (simple_object_internal_write): Handle
        EINTR and short writes.

Index: libiberty/simple-object.c
===================================================================
--- libiberty/simple-object.c   (revision 208897)
+++ libiberty/simple-object.c   (revision 208898)
@@ -63,8 +63,6 @@ simple_object_internal_read (int descrip
                             unsigned char *buffer, size_t size,
                             const char **errmsg, int *err)
 {
-  ssize_t got;
-
   if (lseek (descriptor, offset, SEEK_SET) < 0)
     {
       *errmsg = "lseek";
@@ -72,15 +70,26 @@ simple_object_internal_read (int descrip
       return 0;
     }
 
-  got = read (descriptor, buffer, size);
-  if (got < 0)
+  do
     {
-      *errmsg = "read";
-      *err = errno;
-      return 0;
+      ssize_t got = read (descriptor, buffer, size);
+      if (got == 0)
+       break;
+      else if (got > 0)
+       {
+         buffer += got;
+         size -= got;
+       }
+      else if (errno != EINTR)
+       {
+         *errmsg = "read";
+         *err = errno;
+         return 0;
+       }
     }
+  while (size > 0);
 
-  if ((size_t) got < size)
+  if (size > 0)
     {
       *errmsg = "file too short";
       *err = 0;
Index: lto-plugin/lto-plugin.c
===================================================================
--- lto-plugin/lto-plugin.c     (revision 208897)
+++ lto-plugin/lto-plugin.c     (revision 208898)
@@ -39,6 +39,7 @@ along with this program; see the file CO
 #include <stdint.h>
 #endif
 #include <assert.h>
+#include <errno.h>
 #include <string.h>
 #include <stdlib.h>
 #include <stdio.h>
@@ -817,7 +818,7 @@ process_symtab (void *data, const char *
 {
   struct plugin_objfile *obj = (struct plugin_objfile *)data;
   char *s;
-  char *secdata;
+  char *secdatastart, *secdata;
 
   if (strncmp (name, LTO_SECTION_PREFIX, LTO_SECTION_PREFIX_LEN) != 0)
     return 1;
@@ -825,23 +826,40 @@ process_symtab (void *data, const char *
   s = strrchr (name, '.');
   if (s)
     sscanf (s, ".%" PRI_LL "x", &obj->out->id);
-  secdata = xmalloc (length);
+  secdata = secdatastart = xmalloc (length);
   offset += obj->file->offset;
-  if (offset != lseek (obj->file->fd, offset, SEEK_SET)
-       || length != read (obj->file->fd, secdata, length))
+  if (offset != lseek (obj->file->fd, offset, SEEK_SET))
+    goto err;
+
+  do
     {
-      if (message)
-       message (LDPL_FATAL, "%s: corrupt object file", obj->file->name);
-      /* Force claim_file_handler to abandon this file.  */
-      obj->found = 0;
-      free (secdata);
-      return 0;
+      ssize_t got = read (obj->file->fd, secdata, length);
+      if (got == 0)
+       break;
+      else if (got > 0)
+       {
+         secdata += got;
+         length -= got;
+       }
+      else if (errno != EINTR)
+       goto err;
     }
+  while (length > 0);
+  if (length > 0)
+    goto err;
 
-  translate (secdata, secdata + length, obj->out);
+  translate (secdatastart, secdata, obj->out);
   obj->found++;
-  free (secdata);
+  free (secdatastart);
   return 1;
+
+err:
+  if (message)
+    message (LDPL_FATAL, "%s: corrupt object file", obj->file->name);
+  /* Force claim_file_handler to abandon this file.  */
+  obj->found = 0;
+  free (secdatastart);
+  return 0;
 }
 
 /* Callback used by gold to check if the plugin will claim FILE. Writes
Index: libiberty/simple-object.c
===================================================================
--- libiberty/simple-object.c   (revision 208971)
+++ libiberty/simple-object.c   (revision 208972)
@@ -107,8 +107,6 @@ simple_object_internal_write (int descri
                              const unsigned char *buffer, size_t size,
                              const char **errmsg, int *err)
 {
-  ssize_t wrote;
-
   if (lseek (descriptor, offset, SEEK_SET) < 0)
     {
       *errmsg = "lseek";
@@ -116,15 +114,26 @@ simple_object_internal_write (int descri
       return 0;
     }
 
-  wrote = write (descriptor, buffer, size);
-  if (wrote < 0)
+  do
     {
-      *errmsg = "write";
-      *err = errno;
-      return 0;
+      ssize_t wrote = write (descriptor, buffer, size);
+      if (wrote == 0)
+       break;
+      else if (wrote > 0)
+       {
+         buffer += wrote;
+         size -= wrote;
+       }
+      else if (errno != EINTR)
+       {
+         *errmsg = "write";
+         *err = errno;
+         return 0;
+       }
     }
+  while (size > 0);
 
-  if ((size_t) wrote < size)
+  if (size > 0)
     {
       *errmsg = "short write";
       *err = 0;
++++++ tls-no-direct.diff ++++++
--- /var/tmp/diff_new_pack.0UkVuT/_old  2014-04-11 13:23:47.000000000 +0200
+++ /var/tmp/diff_new_pack.0UkVuT/_new  2014-04-11 13:23:47.000000000 +0200
@@ -1,17 +1,20 @@
-Index: gcc/config/i386/gnu-user-common.h
+For i?86 negative offsets to %fs segment accesses cause a hypervisor
+trap for Xen.  Avoid this by making accesses indirect.
+
+???  Note that similar to the behavior on SLE11 this only affects
+the compiler built on %ix86, not that on x86_64, even with -m32.
+
+Index: gcc/config/i386/linux.h
 ===================================================================
---- gcc/config/i386/gnu-user-common.h.orig     2012-12-11 12:44:53.918094370 
+0100
-+++ gcc/config/i386/gnu-user-common.h  2012-12-11 12:44:55.467094317 +0100
-@@ -26,8 +26,12 @@ along with GCC; see the file COPYING3.
- #define DEFAULT_PCC_STRUCT_RETURN 1
+--- gcc/config/i386/linux.h    (revision 209175)
++++ gcc/config/i386/linux.h    (working copy)
+@@ -21,3 +21,9 @@ along with GCC; see the file COPYING3.
  
- /* We arrange for the whole %fs segment to map the tls area.  */
+ #define GNU_USER_LINK_EMULATION "elf_i386"
+ #define GLIBC_DYNAMIC_LINKER "/lib/ld-linux.so.2"
++
 +/* This slows down Xen, so take a very small general performance hit
 +   for not accessing the %fs segment with negative offsets by making
-+   GCC not emit direct accesses to %fs at all.
- #undef TARGET_TLS_DIRECT_SEG_REFS_DEFAULT
- #define TARGET_TLS_DIRECT_SEG_REFS_DEFAULT MASK_TLS_DIRECT_SEG_REFS
-+ */
- 
- #define TARGET_OS_CPP_BUILTINS()                              \
-   do                                                          \
++   GCC not emit direct accesses to %fs at all.  */
++#undef TARGET_TLS_DIRECT_SEG_REFS_DEFAULT
++#define TARGET_TLS_DIRECT_SEG_REFS_DEFAULT 0

-- 
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to