From: Jakub Jelinek <jakub@redhat.com>
To: Ulrich Drepper <drepper@redhat.com>, "H. J. Lu" <hjl@lucon.org>
Cc: Glibc hackers <libc-hacker@sources.redhat.com>
Subject: [PATCH] <bits/string2.h> changes for GCC 3.2+ and 3.4+ (followup)
Date: Thu, 27 May 2004 09:47:00 -0000 [thread overview]
Message-ID: <20040527071240.GU5191@sunsite.ms.mff.cuni.cz> (raw)
In-Reply-To: <20040527010102.GA8045@lucon.org>
On Wed, May 26, 2004 at 06:01:02PM -0700, H. J. Lu wrote:
> I think the patch is incomplete.
You are right, sorry. I haven't built glibc with it after doing all changes,
only tested whether apps using that header are ok.
Further testing revealed that at least on x86_64 there was one new
.plt slot, __bzero. This patch fixes that too.
Build/make check tested on x86_64 and i686.
2004-05-27 Jakub Jelinek <jakub@redhat.com>
* string/bits/string2.h (__bzero): Define even for GCC 3.0+.
* sysdeps/alpha/stpcpy.S (stpcpy): Add libc_hidden_builtin_def.
* sysdeps/alpha/alphaev67/stpcpy.S (stpcpy): Likewise.
* sysdeps/powerpc/powerpc32/stpcpy.S (stpcpy): Likewise.
* sysdeps/powerpc/powerpc64/stpcpy.S (stpcpy): Likewise.
* sysdeps/sparc/sparc32/stpcpy.S (stpcpy): Likewise.
* sysdeps/sparc/sparc64/stpcpy.S (stpcpy): Likewise.
* sysdeps/i386/stpcpy.S (stpcpy): Likewise.
* sysdeps/i386/i586/stpcpy.S (stpcpy): Likewise.
* sysdeps/generic/stpcpy.c (stpcpy): Likewise.
* sysdeps/x86_64/stpcpy.S (stpcpy): Likewise.
* sysdeps/i386/i586/memcpy.S (memcpy): Remove
libc_hidden_builtin_def if MEMPCPY_P.
* sysdeps/x86_64/memcpy.S (memcpy): Likewise.
* sysdeps/i386/i686/mempcpy.S (mempcpy): Add libc_hidden_builtin_def.
* sysdeps/i386/i586/mempcpy.S (mempcpy): Likewise.
* sysdeps/generic/mempcpy.c (mempcpy): Likewise.
* sysdeps/x86_64/mempcpy.S (mempcpy): Likewise.
--- libc/sysdeps/alpha/alphaev67/stpcpy.S.jj 2002-08-04 03:22:10.000000000 +0200
+++ libc/sysdeps/alpha/alphaev67/stpcpy.S 2004-05-27 09:33:56.000000000 +0200
@@ -1,4 +1,4 @@
-/* Copyright (C) 2000, 2002 Free Software Foundation, Inc.
+/* Copyright (C) 2000, 2002, 2004 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Richard Henderson <rth@redhat.com>.
@@ -51,3 +51,4 @@ ENTRY(__stpcpy)
weak_alias (__stpcpy, stpcpy)
libc_hidden_def (__stpcpy)
+libc_hidden_builtin_def (stpcpy)
--- libc/sysdeps/alpha/stpcpy.S.jj 2002-08-04 03:22:10.000000000 +0200
+++ libc/sysdeps/alpha/stpcpy.S 2004-05-27 09:25:26.000000000 +0200
@@ -1,4 +1,4 @@
-/* Copyright (C) 1996, 2002 Free Software Foundation, Inc.
+/* Copyright (C) 1996, 2002, 2004 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Richard Henderson <rth@tamu.edu>, 1996.
@@ -53,3 +53,4 @@ ENTRY(__stpcpy)
weak_alias (__stpcpy, stpcpy)
libc_hidden_def (__stpcpy)
+libc_hidden_builtin_def (stpcpy)
--- libc/sysdeps/powerpc/powerpc64/stpcpy.S.jj 2002-09-18 01:50:02.000000000 +0200
+++ libc/sysdeps/powerpc/powerpc64/stpcpy.S 2004-05-27 09:34:42.000000000 +0200
@@ -1,5 +1,5 @@
/* Optimized stpcpy implementation for PowerPC64.
- Copyright (C) 1997, 1999, 2000, 2002 Free Software Foundation, Inc.
+ Copyright (C) 1997, 1999, 2000, 2002, 2004 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
@@ -119,3 +119,4 @@ END (BP_SYM (__stpcpy))
weak_alias (BP_SYM (__stpcpy), BP_SYM (stpcpy))
libc_hidden_def (__stpcpy)
+libc_hidden_builtin_def (stpcpy)
--- libc/sysdeps/powerpc/powerpc32/stpcpy.S.jj 2002-09-05 10:26:37.000000000 +0200
+++ libc/sysdeps/powerpc/powerpc32/stpcpy.S 2004-05-27 09:34:21.000000000 +0200
@@ -1,5 +1,5 @@
/* Optimized stpcpy implementation for PowerPC.
- Copyright (C) 1997, 1999, 2000, 2002 Free Software Foundation, Inc.
+ Copyright (C) 1997, 1999, 2000, 2002, 2004 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
@@ -119,3 +119,4 @@ END (BP_SYM (__stpcpy))
weak_alias (BP_SYM (__stpcpy), BP_SYM (stpcpy))
libc_hidden_def (__stpcpy)
+libc_hidden_builtin_def (stpcpy)
--- libc/sysdeps/sparc/sparc32/stpcpy.S.jj 2002-08-04 03:22:11.000000000 +0200
+++ libc/sysdeps/sparc/sparc32/stpcpy.S 2004-05-27 09:24:28.000000000 +0200
@@ -1,6 +1,6 @@
/* Copy SRC to DEST returning the address of the terminating '\0' in DEST.
For SPARC v7.
- Copyright (C) 1996, 1999, 2002 Free Software Foundation, Inc.
+ Copyright (C) 1996, 1999, 2002, 2004 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Jakub Jelinek <jj@ultra.linux.cz>.
@@ -162,3 +162,4 @@ END(__stpcpy)
weak_alias(__stpcpy, stpcpy)
libc_hidden_def (__stpcpy)
+libc_hidden_builtin_def (stpcpy)
--- libc/sysdeps/sparc/sparc64/stpcpy.S.jj 2003-01-27 21:55:28.000000000 +0100
+++ libc/sysdeps/sparc/sparc64/stpcpy.S 2004-05-27 09:25:07.000000000 +0200
@@ -1,6 +1,6 @@
/* Copy SRC to DEST returning the address of the terminating '\0' in DEST.
For SPARC v9.
- Copyright (C) 1998, 1999, 2002, 2003 Free Software Foundation, Inc.
+ Copyright (C) 1998, 1999, 2002, 2003, 2004 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Jan Vondrak <jvon4518@ss1000.ms.mff.cuni.cz> and
Jakub Jelinek <jj@ultra.linux.cz>.
@@ -272,3 +272,4 @@ END(__stpcpy)
weak_alias (__stpcpy, stpcpy)
libc_hidden_def (__stpcpy)
+libc_hidden_builtin_def (stpcpy)
--- libc/sysdeps/i386/i686/mempcpy.S.jj 2002-08-03 08:41:06.000000000 +0200
+++ libc/sysdeps/i386/i686/mempcpy.S 2004-05-27 09:44:36.649392190 +0200
@@ -1,7 +1,7 @@
/* Copy memory block and return pointer to following byte.
For Intel 80x86, x>=6.
This file is part of the GNU C Library.
- Copyright (C) 1998, 1999, 2000, 2002 Free Software Foundation, Inc.
+ Copyright (C) 1998, 1999, 2000, 2002, 2004 Free Software Foundation, Inc.
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1998.
The GNU C Library is free software; you can redistribute it and/or
@@ -59,3 +59,4 @@ ENTRY (BP_SYM (__mempcpy))
END (BP_SYM (__mempcpy))
libc_hidden_def (BP_SYM (__mempcpy))
weak_alias (BP_SYM (__mempcpy), BP_SYM (mempcpy))
+libc_hidden_builtin_def (mempcpy)
--- libc/sysdeps/i386/i586/memcpy.S.jj 2003-04-30 00:47:20.000000000 +0200
+++ libc/sysdeps/i386/i586/memcpy.S 2004-05-27 08:01:30.918955620 +0200
@@ -116,4 +116,6 @@ L(1): rep; movsb
LEAVE
RET_PTR
END (BP_SYM (memcpy))
+#if !MEMPCPY_P
libc_hidden_builtin_def (memcpy)
+#endif
--- libc/sysdeps/i386/i586/mempcpy.S.jj 2002-08-03 08:41:05.000000000 +0200
+++ libc/sysdeps/i386/i586/mempcpy.S 2004-05-27 08:00:18.000000000 +0200
@@ -3,3 +3,4 @@
libc_hidden_def (BP_SYM (__mempcpy))
weak_alias (BP_SYM (__mempcpy), BP_SYM (mempcpy))
+libc_hidden_builtin_def (mempcpy)
--- libc/sysdeps/i386/i586/stpcpy.S.jj 2002-08-04 03:22:11.000000000 +0200
+++ libc/sysdeps/i386/i586/stpcpy.S 2004-05-27 09:23:46.000000000 +0200
@@ -5,3 +5,4 @@
weak_alias (__stpcpy, stpcpy)
libc_hidden_def (__stpcpy)
+libc_hidden_builtin_def (stpcpy)
--- libc/sysdeps/i386/stpcpy.S.jj 2002-08-04 03:22:10.000000000 +0200
+++ libc/sysdeps/i386/stpcpy.S 2004-05-27 09:23:21.000000000 +0200
@@ -1,6 +1,7 @@
/* Copy SRC to DEST returning the address of the terminating '\0' in DEST.
For Intel 80x86, x>=3.
- Copyright (C) 1994,1995,1996,1997,2000,2002 Free Software Foundation, Inc.
+ Copyright (C) 1994, 1995, 1996, 1997, 2000, 2002, 2004
+ Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper (drepper@gnu.ai.mit.edu).
@@ -94,3 +95,4 @@ END (BP_SYM (__stpcpy))
weak_alias (BP_SYM (__stpcpy), BP_SYM (stpcpy))
libc_hidden_def (__stpcpy)
+libc_hidden_builtin_def (stpcpy)
--- libc/sysdeps/generic/mempcpy.c.jj 2002-08-03 10:42:02.000000000 +0200
+++ libc/sysdeps/generic/mempcpy.c 2004-05-27 08:00:07.000000000 +0200
@@ -1,7 +1,7 @@
/* Copy memory to memory until the specified number of bytes
has been copied, return pointer to following byte.
Overlap is NOT handled correctly.
- Copyright (C) 1991, 1997, 1998, 2002 Free Software Foundation, Inc.
+ Copyright (C) 1991, 1997, 1998, 2002, 2004 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Torbjorn Granlund (tege@sics.se).
@@ -66,3 +66,4 @@ __mempcpy (dstpp, srcpp, len)
}
libc_hidden_def (__mempcpy)
weak_alias (__mempcpy, mempcpy)
+libc_hidden_builtin_def (mempcpy)
--- libc/sysdeps/generic/stpcpy.c.jj 2002-08-04 03:22:10.000000000 +0200
+++ libc/sysdeps/generic/stpcpy.c 2004-05-27 09:21:55.000000000 +0200
@@ -1,4 +1,4 @@
-/* Copyright (C) 1992, 1995, 1997, 2002 Free Software Foundation, Inc.
+/* Copyright (C) 1992, 1995, 1997, 2002, 2004 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
@@ -50,3 +50,6 @@ libc_hidden_def (__stpcpy)
#ifdef weak_alias
weak_alias (__stpcpy, stpcpy)
#endif
+#ifdef libc_hidden_builtin_def
+libc_hidden_builtin_def (stpcpy)
+#endif
--- libc/sysdeps/x86_64/memcpy.S.jj 2004-02-12 11:53:38.000000000 +0100
+++ libc/sysdeps/x86_64/memcpy.S 2004-05-27 08:03:31.249390840 +0200
@@ -1,5 +1,5 @@
/* Highly optimized version for x86-64.
- Copyright (C) 1997, 2000, 2002, 2003 Free Software Foundation, Inc.
+ Copyright (C) 1997, 2000, 2002, 2003, 2004 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Based on i586 version contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
@@ -90,4 +90,6 @@ ENTRY (BP_SYM (memcpy))
ret
END (BP_SYM (memcpy))
+#if !MEMPCPY_P
libc_hidden_builtin_def (memcpy)
+#endif
--- libc/sysdeps/x86_64/mempcpy.S.jj 2002-08-31 19:33:34.000000000 +0200
+++ libc/sysdeps/x86_64/mempcpy.S 2004-05-27 09:43:49.997752771 +0200
@@ -3,3 +3,4 @@
libc_hidden_def (BP_SYM (__mempcpy))
weak_alias (BP_SYM (__mempcpy), BP_SYM (mempcpy))
+libc_hidden_builtin_def (mempcpy)
--- libc/sysdeps/x86_64/stpcpy.S.jj 2002-08-31 19:41:24.000000000 +0200
+++ libc/sysdeps/x86_64/stpcpy.S 2004-05-27 09:22:26.614751714 +0200
@@ -5,3 +5,4 @@
weak_alias (__stpcpy, stpcpy)
libc_hidden_def (__stpcpy)
+libc_hidden_builtin_def (stpcpy)
--- libc/string/bits/string2.h.jj 2004-05-26 15:57:38.000000000 +0200
+++ libc/string/bits/string2.h 2004-05-27 10:08:28.008873934 +0200
@@ -94,9 +94,10 @@ __STRING2_COPY_TYPE (8);
((size_t)(const void *)((__x) + 1) - (size_t)(const void *)(__x) == 1)
/* Set N bytes of S to C. */
-#if !defined _HAVE_STRING_ARCH_memset && ! __GNUC_PREREQ (3, 0)
-# if _STRING_ARCH_unaligned
-# define memset(s, c, n) \
+#if !defined _HAVE_STRING_ARCH_memset
+# if !__GNUC_PREREQ (3, 0)
+# if _STRING_ARCH_unaligned
+# define memset(s, c, n) \
(__extension__ (__builtin_constant_p (n) && (n) <= 16 \
? ((n) == 1 \
? __memset_1 (s, c) \
@@ -105,10 +106,10 @@ __STRING2_COPY_TYPE (8);
? ({ void *__s = (s); __bzero (__s, n); __s; }) \
: memset (s, c, n))))
-# define __memset_1(s, c) ({ void *__s = (s); \
+# define __memset_1(s, c) ({ void *__s = (s); \
*((__uint8_t *) __s) = (__uint8_t) c; __s; })
-# define __memset_gc(s, c, n) \
+# define __memset_gc(s, c, n) \
({ void *__s = (s); \
union { \
unsigned int __ui; \
@@ -177,15 +178,19 @@ __STRING2_COPY_TYPE (8);
} \
\
__s; })
-# else
-# define memset(s, c, n) \
+# else
+# define memset(s, c, n) \
(__extension__ (__builtin_constant_p (c) && (c) == '\0' \
? ({ void *__s = (s); __bzero (__s, n); __s; }) \
: memset (s, c, n)))
+# endif
# endif
-/* GCC optimizes memset(s, 0, n) but not bzero(s, n).
- The optimization is broken before EGCS 1.1. */
+/* GCC < 3.0 optimizes memset(s, 0, n) but not bzero(s, n).
+ The optimization is broken before EGCS 1.1.
+ GCC 3.0+ has __builtin_bzero as well, but at least till GCC 3.4
+ if it decides to call the library function, it calls memset
+ and not bzero. */
# if __GNUC_PREREQ (2, 91)
# define __bzero(s, n) __builtin_memset (s, '\0', n)
# endif
Jakub
next prev parent reply other threads:[~2004-05-27 9:26 UTC|newest]
Thread overview: 7+ messages / expand[flat|nested] mbox.gz Atom feed top
2004-05-26 17:27 [PATCH] <bits/string2.h> changes for GCC 3.2+ and 3.4+ Jakub Jelinek
2004-05-26 20:36 ` Ulrich Drepper
2004-05-27 1:01 ` H. J. Lu
2004-05-27 9:26 ` H. J. Lu
2004-05-27 9:47 ` Jakub Jelinek [this message]
2004-05-28 6:40 ` [PATCH] <bits/string2.h> changes for GCC 3.2+ and 3.4+ (followup) H. J. Lu
2004-05-28 6:42 ` Ulrich Drepper
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20040527071240.GU5191@sunsite.ms.mff.cuni.cz \
--to=jakub@redhat.com \
--cc=drepper@redhat.com \
--cc=hjl@lucon.org \
--cc=libc-hacker@sources.redhat.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).