[COMMITTED] tile: add inhibit_loop_to_libcall to string functions

Message ID 201412112017.sBBKHCFC023406@farm-0002.internal.tilera.com
State Committed
Headers

Commit Message

Chris Metcalf Dec. 11, 2014, 8:13 p.m. UTC
  Without this, on gcc 4.8.2 the built glibc crashes when memcpy
or memset are invoked, since they call themselves recursively.
See commit 85c2e6110c9a01ec for the generic inhibit_loop_to_libcall.
---
 ChangeLog                     |    7 +++++++
 sysdeps/tile/tilegx/memcpy.c  |    2 +-
 sysdeps/tile/tilegx/memset.c  |    2 +-
 sysdeps/tile/tilepro/memset.c |    2 +-
 4 files changed, 10 insertions(+), 3 deletions(-)
  

Patch

diff --git a/ChangeLog b/ChangeLog
index 61ac73d..de2e7cc 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,10 @@ 
+2014-12-11  Chris Metcalf  <cmetcalf@ezchip.com>
+
+	* sysdeps/tile/tilegx/memset.c (__memcpy): Add
+	inhibit_loop_to_libcall to avoid recursive calls.
+	* sysdeps/tile/tilegx/memcpy.c (__memcpy): Likewise.
+	* sysdeps/tile/tilepro/memcpy.c (__memcpy): Likewise.
+
 2014-12-11  Adhemerval Zanella  <Azanella@linux.vnet.ibm.com>
 
 	* include/sys/socket.h (__sendmmsg): Add __USE_GNU guards on function
diff --git a/sysdeps/tile/tilegx/memcpy.c b/sysdeps/tile/tilegx/memcpy.c
index 5d5df19..abcaf4d 100644
--- a/sysdeps/tile/tilegx/memcpy.c
+++ b/sysdeps/tile/tilegx/memcpy.c
@@ -25,7 +25,7 @@ 
 /* How many cache lines ahead should we prefetch? */
 #define PREFETCH_LINES_AHEAD 3
 
-void *
+void * inhibit_loop_to_libcall
 __memcpy (void *__restrict dstv, const void *__restrict srcv, size_t n)
 {
   char *__restrict dst1 = (char *) dstv;
diff --git a/sysdeps/tile/tilegx/memset.c b/sysdeps/tile/tilegx/memset.c
index d41b205..b794bf2 100644
--- a/sysdeps/tile/tilegx/memset.c
+++ b/sysdeps/tile/tilegx/memset.c
@@ -21,7 +21,7 @@ 
 #include <stdint.h>
 #include "string-endian.h"
 
-void *
+void * inhibit_loop_to_libcall
 __memset (void *s, int c, size_t n)
 {
   uint64_t *out64;
diff --git a/sysdeps/tile/tilepro/memset.c b/sysdeps/tile/tilepro/memset.c
index 85d6b81..d248634 100644
--- a/sysdeps/tile/tilepro/memset.c
+++ b/sysdeps/tile/tilepro/memset.c
@@ -20,7 +20,7 @@ 
 #include <stdint.h>
 #include <arch/chip.h>
 
-void *
+void * inhibit_loop_to_libcall
 __memset (void *s, int c, size_t n)
 {
   uint32_t *out32;