1
0
mirror of https://sourceware.org/git/glibc.git synced 2025-07-29 11:41:21 +03:00
* sysdeps/ia64/bits/byteswap.h: New file.
	Patch by Dan Pop <Dan.Pop@cern.ch>.

	* misc/sys/cdefs.h: Define __attribute_format_arg__.
	* intl/libintl.h: Use it here instead of using __attribute__ directly.

2000-07-13  H.J. Lu  <hjl@gnu.org>

	* posix/regex.c (re_max_failures): Set to 4000.

2000-08-01  Ulrich Drepper  <drepper@redhat.com>
This commit is contained in:
Ulrich Drepper
2000-08-02 01:19:29 +00:00
parent 8fb81470d9
commit ca8d5a5f3d
6 changed files with 137 additions and 16 deletions

View File

@ -1,3 +1,15 @@
2000-08-01 Ulrich Drepper <drepper@redhat.com>
* sysdeps/ia64/bits/byteswap.h: New file.
Patch by Dan Pop <Dan.Pop@cern.ch>.
* misc/sys/cdefs.h: Define __attribute_format_arg__.
* intl/libintl.h: Use it here instead of using __attribute__ directly.
2000-07-13 H.J. Lu <hjl@gnu.org>
* posix/regex.c (re_max_failures): Set to 4000.
2000-08-01 Ulrich Drepper <drepper@redhat.com> 2000-08-01 Ulrich Drepper <drepper@redhat.com>
* gnulib/Makefile (tests): Add tst-gcc. * gnulib/Makefile (tests): Add tst-gcc.

View File

@ -31,41 +31,44 @@ __BEGIN_DECLS
/* Look up MSGID in the current default message catalog for the current /* Look up MSGID in the current default message catalog for the current
LC_MESSAGES locale. If not found, returns MSGID itself (the default LC_MESSAGES locale. If not found, returns MSGID itself (the default
text). */ text). */
extern char *gettext (__const char *__msgid) __THROW; extern char *gettext (__const char *__msgid)
__THROW __attribute_format_arg__ (1);
/* Look up MSGID in the DOMAINNAME message catalog for the current /* Look up MSGID in the DOMAINNAME message catalog for the current
LC_MESSAGES locale. */ LC_MESSAGES locale. */
extern char *dgettext (__const char *__domainname, extern char *dgettext (__const char *__domainname, __const char *__msgid)
__const char *__msgid) __THROW; __THROW __attribute_format_arg__ (2);
extern char *__dgettext (__const char *__domainname, extern char *__dgettext (__const char *__domainname, __const char *__msgid)
__const char *__msgid) __THROW; __THROW __attribute_format_arg__ (2);
/* Look up MSGID in the DOMAINNAME message catalog for the current CATEGORY /* Look up MSGID in the DOMAINNAME message catalog for the current CATEGORY
locale. */ locale. */
extern char *dcgettext (__const char *__domainname, extern char *dcgettext (__const char *__domainname,
__const char *__msgid, int __category) __THROW; __const char *__msgid, int __category)
__THROW __attribute_format_arg__ (2);
extern char *__dcgettext (__const char *__domainname, extern char *__dcgettext (__const char *__domainname,
__const char *__msgid, int __category) __THROW; __const char *__msgid, int __category)
__THROW __attribute_format_arg__ (2);
/* Similar to `gettext' but select the plural form corresponding to the /* Similar to `gettext' but select the plural form corresponding to the
number N. */ number N. */
extern char *ngettext (__const char *__msgid1, __const char *__msgid2, extern char *ngettext (__const char *__msgid1, __const char *__msgid2,
unsigned long int __n) unsigned long int __n)
__THROW __attribute__ ((__format_arg__ (1))); __THROW __attribute_format_arg__ (1);
/* Similar to `dgettext' but select the plural form corresponding to the /* Similar to `dgettext' but select the plural form corresponding to the
number N. */ number N. */
extern char *dngettext (__const char *__domainname, __const char *__msgid1, extern char *dngettext (__const char *__domainname, __const char *__msgid1,
__const char *__msgid2, unsigned long int __n) __const char *__msgid2, unsigned long int __n)
__THROW __attribute__ ((__format_arg__ (2))); __THROW __attribute_format_arg__ (2);
/* Similar to `dcgettext' but select the plural form corresponding to the /* Similar to `dcgettext' but select the plural form corresponding to the
number N. */ number N. */
extern char *dcngettext (__const char *__domainname, __const char *__msgid1, extern char *dcngettext (__const char *__domainname, __const char *__msgid1,
__const char *__msgid2, unsigned long int __n, __const char *__msgid2, unsigned long int __n,
int __category) int __category)
__THROW __attribute__ ((__format_arg__ (2))); __THROW __attribute_format_arg__ (2);
/* Set the current default message catalog to DOMAINNAME. /* Set the current default message catalog to DOMAINNAME.

View File

@ -128,7 +128,7 @@
# define __TGMATH_UNARY_REAL_IMAG(Val, Fct, Cfct) \ # define __TGMATH_UNARY_REAL_IMAG(Val, Fct, Cfct) \
(__extension__ ({ __tgmath_real_type (Val) __tgmres; \ (__extension__ ({ __tgmath_real_type (Val) __tgmres; \
if (sizeof (__real__ (Val)) > sizeof (double) \ if (sizeof (__real__ (Val)) > sizeof (double) \
&& __builtin_classify_type (Val) == 8) \ && __builtin_classify_type (__real__ (Val)) == 8) \
{ \ { \
if (sizeof (__real__ (Val)) == sizeof (Val)) \ if (sizeof (__real__ (Val)) == sizeof (Val)) \
__tgmres = Fct##l (Val); \ __tgmres = Fct##l (Val); \
@ -136,7 +136,8 @@
__tgmres = Cfct##l (Val); \ __tgmres = Cfct##l (Val); \
} \ } \
else if (sizeof (__real__ (Val)) == sizeof (double) \ else if (sizeof (__real__ (Val)) == sizeof (double) \
|| __builtin_classify_type (Val) != 8) \ || (__builtin_classify_type (__real__ (Val)) \
!= 8) \
{ \ { \
if (sizeof (__real__ (Val)) == sizeof (Val)) \ if (sizeof (__real__ (Val)) == sizeof (Val)) \
__tgmres = Fct (Val); \ __tgmres = Fct (Val); \
@ -157,7 +158,7 @@
# define __TGMATH_UNARY_IMAG_ONLY(Val, Fct) \ # define __TGMATH_UNARY_IMAG_ONLY(Val, Fct) \
(__extension__ ({ __tgmath_real_type (Val) __tgmres; \ (__extension__ ({ __tgmath_real_type (Val) __tgmres; \
if (sizeof (Val) == sizeof (__complex__ double) \ if (sizeof (Val) == sizeof (__complex__ double) \
|| __builtin_classify_type (Val) != 8) \ || __builtin_classify_type (__real__ (Val)) != 8) \
__tgmres = Fct (Val); \ __tgmres = Fct (Val); \
else if (sizeof (Val) == sizeof (__complex__ float)) \ else if (sizeof (Val) == sizeof (__complex__ float)) \
__tgmres = Fct##f (Val); \ __tgmres = Fct##f (Val); \
@ -171,7 +172,7 @@
(__extension__ ({ __tgmath_real_type ((Val1) + (Val2)) __tgmres; \ (__extension__ ({ __tgmath_real_type ((Val1) + (Val2)) __tgmres; \
if ((sizeof (__real__ (Val1)) > sizeof (double) \ if ((sizeof (__real__ (Val1)) > sizeof (double) \
|| sizeof (__real__ (Val2)) > sizeof (double)) \ || sizeof (__real__ (Val2)) > sizeof (double)) \
&& __builtin_classify_type (Val) == 8) \ && __builtin_classify_type (__real__ (Val)) == 8) \
{ \ { \
if (sizeof (__real__ (Val1)) == sizeof (Val1) \ if (sizeof (__real__ (Val1)) == sizeof (Val1) \
&& sizeof (__real__ (Val2)) == sizeof (Val2)) \ && sizeof (__real__ (Val2)) == sizeof (Val2)) \
@ -181,7 +182,8 @@
} \ } \
else if (sizeof (__real__ (Val1)) == sizeof (double) \ else if (sizeof (__real__ (Val1)) == sizeof (double) \
|| sizeof (__real__ (Val2)) == sizeof(double) \ || sizeof (__real__ (Val2)) == sizeof(double) \
|| __builtin_classify_type (Val) != 8) \ || (__builtin_classify_type (__real__ (Val)) \
!= 8) \
{ \ { \
if (sizeof (__real__ (Val1)) == sizeof (Val1) \ if (sizeof (__real__ (Val1)) == sizeof (Val1) \
&& sizeof (__real__ (Val2)) == sizeof (Val2)) \ && sizeof (__real__ (Val2)) == sizeof (Val2)) \

View File

@ -141,6 +141,15 @@
# define __attribute_pure__ /* Ignore */ # define __attribute_pure__ /* Ignore */
#endif #endif
/* At some point during the gcc 2.8 development the `format_arg' attribute
for functions was introduced. We don't want to use it unconditionally
(although this would be possible) since it generates warnings. */
#if __GNUC_PREREQ (2,8)
# define __attribute_format_arg__(x) __attribute__ ((__format_arg__ (x)))
#else
# define __attribute_format_arg__(x) /* Ignore */
#endif
/* It is possible to compile containing GCC extensions even if GCC is /* It is possible to compile containing GCC extensions even if GCC is
run in pedantic mode if the uses are carefully marked using the run in pedantic mode if the uses are carefully marked using the
`__extension__' keyword. But this is not generally available before `__extension__' keyword. But this is not generally available before

View File

@ -1234,7 +1234,7 @@ typedef struct
# if defined MATCH_MAY_ALLOCATE # if defined MATCH_MAY_ALLOCATE
/* 4400 was enough to cause a crash on Alpha OSF/1, /* 4400 was enough to cause a crash on Alpha OSF/1,
whose default stack limit is 2mb. */ whose default stack limit is 2mb. */
int re_max_failures = 20000; int re_max_failures = 4000;
# else # else
int re_max_failures = 2000; int re_max_failures = 2000;
# endif # endif

View File

@ -0,0 +1,95 @@
/* Macros to swap the order of bytes in integer values.
Copyright (C) 1997, 1998, 2000 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 Library General Public License as
published by the Free Software Foundation; either version 2 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
Library General Public License for more details.
You should have received a copy of the GNU Library General Public
License along with the GNU C Library; see the file COPYING.LIB. If not,
write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
Boston, MA 02111-1307, USA. */
#if !defined _BYTESWAP_H && !defined _NETINET_IN_H
# error "Never use <bits/byteswap.h> directly; include <byteswap.h> instead."
#endif
/* Swap bytes in 16 bit value. */
#define __bswap_constant_16(x) \
((((x) >> 8) & 0xff) | (((x) & 0xff) << 8))
#if defined __GNUC__ && __GNUC__ >= 2
# define __bswap_16(x) \
(__extension__ \
({ register unsigned short int __v; \
if (__builtin_constant_p (x)) \
__v = __bswap_constant_16 (x); \
else \
__asm__ __volatile__ ("shl %0 = %1, 48 ;;" \
"mux1 %0 = %2, @rev ;;" \
: "=r" (__v) \
: "r" ((unsigned short int) (x)), "0" (__v));\
__v; }))
#else
/* This is better than nothing. */
# define __bswap_16(x) __bswap_constant_16 (x)
#endif
/* Swap bytes in 32 bit value. */
#define __bswap_constant_32(x) \
((((x) & 0xff000000) >> 24) | (((x) & 0x00ff0000) >> 8) | \
(((x) & 0x0000ff00) << 8) | (((x) & 0x000000ff) << 24))
#if defined __GNUC__ && __GNUC__ >= 2
/* To swap the bytes in a word the i486 processors and up provide the
`bswap' opcode. On i386 we have to use three instructions. */
# define __bswap_32(x) \
(__extension__ \
({ register unsigned int __v; \
if (__builtin_constant_p (x)) \
__v = __bswap_constant_32 (x); \
else \
__asm__ __volatile__ ("shl %0 = %1, 32 ;;" \
"mux1 %0 = %2, @rev ;;" \
: "=r" (__v) \
: "r" ((unsigned int) (x)), "0" (__v)); \
__v; }))
#else
# define __bswap_32(x) __bswap_constant_32 (x)
#endif
/* Swap bytes in 64 bit value. */
#define __bswap_constant_64(x) \
((((x) & 0xff00000000000000ul) >> 56) \
| (((x) & 0x00ff000000000000ul) >> 40) \
| (((x) & 0x0000ff0000000000ul) >> 24) \
| (((x) & 0x000000ff00000000ul) >> 8) \
| (((x) & 0x00000000ff000000ul) << 8) \
| (((x) & 0x0000000000ff0000ul) << 24) \
| (((x) & 0x000000000000ff00ul) << 40) \
| (((x) & 0x00000000000000fful) << 56))
#if defined __GNUC__ && __GNUC__ >= 2
# define __bswap_64(x) \
(__extension__ \
({ register unsigned long int __v; \
if (__builtin_constant_p (x)) \
__v = __bswap_constant_64 (x); \
else \
__asm__ __volatile__ ("mux1 %0 = %1, @rev ;;" \
: "=r" (__v) \
: "r" ((unsigned long int) (x))); \
__v; }))
#else
# define __bswap_64(x) __bswap_constant_64 (x)
#endif