diff --git a/ChangeLog b/ChangeLog index 9ff887a06e..b00f5157eb 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,39 @@ +1998-08-31 15:56 Ulrich Drepper + + * db2/db_int.h: Use instead of "db.h" to find header in include. + + * include/stdio.h: Add __vsscanf. + + * libio/stdio.h: Make vfscanf, scanf, and vsscanf available if + __USE_ISOC9X. + Remove __vsscanf declaration. + Always declare fgetpos and fsetpos. + + * math/math.h: Define isinf as macro. + * math/bits/mathcalls.h: Change to declare __isinf all the time. + Don't declare scalb for ISO C 9x. + + * math/tgmath.h: Define fma. Rewrite the underlying macros. + + * stdlib/stdlib.h: Declare strtof and strtold is __USE_ISOC9X. + + * sysdeps/unix/sysv/linux/bits/sigcontext.h: Allow inclusion from + sys/ucontext.h. + + * sysdeps/wordsize-32/inttypes.h: Define missing PRI* and SCN* + macros. + +1998-08-31 Andreas Jaeger + + * sysdeps/standalone/bits/errno.h (ENOMSG): Remove duplicate. + Reported by jreising@frequentis.com [PR libc/767]. + +1998-08-31 Andreas Jaeger + + * io/lockf.c (lockf): Move initilisation of fl.l_whence and + fl.l_start at beginning of function. + Patch by Geoff. Dash [PR libc/769]. + 1998-08-31 Ulrich Drepper * io/sys/stat.h (ALLPERMS): Fix type (S_ISTXT -> S_ISVTX). diff --git a/db2/db_int.h b/db2/db_int.h index b48b104a91..92a3817764 100644 --- a/db2/db_int.h +++ b/db2/db_int.h @@ -10,7 +10,7 @@ #ifndef _DB_INTERNAL_H_ #define _DB_INTERNAL_H_ -#include "db.h" /* Standard DB include file. */ +#include /* Standard DB include file. */ #include "queue.h" /******************************************************* diff --git a/elf/Makefile b/elf/Makefile index 4fcb997b3e..7f2201dc0a 100644 --- a/elf/Makefile +++ b/elf/Makefile @@ -36,7 +36,7 @@ elide-routines.os = $(dl-routines) dl-support enbl-secure # interpreter and operating independent of libc. rtld-routines := rtld $(dl-routines) dl-sysdep dl-environ dl-minimal distribute = $(rtld-routines:=.c) dynamic-link.h do-rel.h dl-machine.h \ - dl-hash.h soinit.c sofini.c ldd.sh.in ldd.bash.in eval.c \ + dl-hash.h soinit.c sofini.c ldd.bash.in eval.c \ genrtldtbl.awk atomicity.h dl-procinfo.h ldsodefs.h \ dl-librecon.h interp.c sln.c dl-origin.h diff --git a/include/stdio.h b/include/stdio.h index c0ca6027e8..d09e29d1c1 100644 --- a/include/stdio.h +++ b/include/stdio.h @@ -18,6 +18,10 @@ extern int __vscanf __P ((__const char *__restrict __format, __attribute__ ((__format__ (__scanf__, 1, 0))); extern _IO_ssize_t __getline __P ((char **__lineptr, size_t *__n, FILE *__stream)); +extern int __vsscanf __P ((__const char *__restrict __s, + __const char *__restrict __format, + _G_va_list __arg)) + __attribute__ ((__format__ (__scanf__, 2, 0))); #endif #else diff --git a/io/lockf.c b/io/lockf.c index 6d5049027f..6e8851bed7 100644 --- a/io/lockf.c +++ b/io/lockf.c @@ -31,6 +31,11 @@ lockf (int fd, int cmd, off_t len) memset ((char *) &fl, '\0', sizeof (fl)); + /* lockf is always relative to the current file position. */ + fl.l_whence = SEEK_CUR; + fl.l_start = 0; + fl.l_len = len; + switch (cmd) { case F_TEST: @@ -61,11 +66,5 @@ lockf (int fd, int cmd, off_t len) return -1; } - /* lockf is always relative to the current file position. */ - fl.l_whence = SEEK_CUR; - fl.l_start = 0; - - fl.l_len = len; - return __fcntl (fd, cmd, &fl); } diff --git a/libio/stdio.h b/libio/stdio.h index 4d01061b3e..774003b490 100644 --- a/libio/stdio.h +++ b/libio/stdio.h @@ -334,7 +334,7 @@ extern int scanf __P ((__const char *__restrict __format, ...)); extern int sscanf __P ((__const char *__restrict __s, __const char *__restrict __format, ...)); -#ifdef __USE_GNU +#ifdef __USE_ISOC9X /* Read formatted input from S into argument list ARG. */ extern int vfscanf __P ((FILE *__restrict __s, __const char *__restrict __format, @@ -346,10 +346,6 @@ extern int vscanf __P ((__const char *__restrict __format, _G_va_list __arg)) __attribute__ ((__format__ (__scanf__, 1, 0))); /* Read formatted input from S into argument list ARG. */ -extern int __vsscanf __P ((__const char *__restrict __s, - __const char *__restrict __format, - _G_va_list __arg)) - __attribute__ ((__format__ (__scanf__, 2, 0))); extern int vsscanf __P ((__const char *__restrict __s, __const char *__restrict __format, _G_va_list __arg)) @@ -541,64 +537,70 @@ extern long int ftell __P ((FILE *__stream)); /* Rewind to the beginning of STREAM. */ extern void rewind __P ((FILE *__stream)); -#if (defined __USE_LARGEFILE || defined __USE_LARGEFILE64 \ - || defined __USE_FILE_OFFSET64) /* The Single Unix Specification, Version 2, specifies an alternative, more adequate interface for the two functions above which deal with file offset. `long int' is not the right type. These definitions are originally defined in the Large File Support API. */ /* Types needed in these functions. */ -# ifndef off_t -# ifndef __USE_FILE_OFFSET64 -typedef __off_t off_t; -# else -typedef __off64_t off_t; -# endif -# define off_t off_t -# endif - -# if defined __USE_LARGEFILE64 && !defined off64_t -typedef __off64_t off64_t; -# define off64_t off64_t -# endif - - +#ifndef off_t # ifndef __USE_FILE_OFFSET64 +typedef __off_t off_t; +# else +typedef __off64_t off_t; +# endif +# define off_t off_t +#endif + +#if defined __USE_LARGEFILE64 && !defined off64_t +typedef __off64_t off64_t; +# define off64_t off64_t +#endif + + +#ifndef __USE_FILE_OFFSET64 +# ifndef __USE_UNIX98 /* Seek to a certain position on STREAM. */ extern int fseeko __P ((FILE *__stream, __off_t __off, int __whence)); /* Return the current position of STREAM. */ extern __off_t ftello __P ((FILE *__stream)); +#endif + /* Get STREAM's position. */ extern int fgetpos __P ((FILE *__restrict __stream, fpos_t *__restrict __pos)); /* Set STREAM's position. */ extern int fsetpos __P ((FILE *__stream, __const fpos_t *__pos)); -# else +#else # ifdef __REDIRECT +# ifndef __USE_UNIX98 extern int __REDIRECT (fseeko, __P ((FILE *__stream, __off64_t __off, int __whence)), fseeko64); extern __off64_t __REDIRECT (ftello, __P ((FILE *__stream)), ftello64); +# endif extern int __REDIRECT (fgetpos, __P ((FILE *__restrict __stream, fpos_t *__restrict __pos)), fgetpos64); extern int __REDIRECT (fsetpos, __P ((FILE *__stream, __const fpos_t *__pos)), fsetpos64); -# else +# else +# ifndef __USE_UNIX98 # define fseeko fseeko64 # define ftello ftello64 -# define fgetpos fgetpos64 -# define fsetpos fsetpos64 # endif +# define fgetpos fgetpos64 +# define fsetpos fsetpos64 # endif +#endif -# ifdef __USE_LARGEFILE64 +#ifdef __USE_LARGEFILE64 +# ifndef __USE_UNIX98 extern int fseeko64 __P ((FILE *__stream, __off64_t __off, int __whence)); extern __off64_t ftello64 __P ((FILE *__stream)); +# endif extern int fgetpos64 __P ((FILE *__restrict __stream, fpos64_t *__restrict __pos)); extern int fsetpos64 __P ((FILE *__stream, __const fpos64_t *__pos)); -# endif #endif /* Clear the error and EOF indicators for STREAM. */ diff --git a/linuxthreads/ChangeLog b/linuxthreads/ChangeLog index b8cad4cbbf..88cf853c84 100644 --- a/linuxthreads/ChangeLog +++ b/linuxthreads/ChangeLog @@ -1,3 +1,8 @@ +1998-08-31 Ulrich Drepper + + * sysdeps/i386/pt-machine.h (testandset): Add memory clobber. + Suggested by Roland McGrath. + 1998-08-28 13:58 Ulrich Drepper * internals.h: Also define THREAD_GETMEM_NC and THREAD_SETMEM_NC to diff --git a/math/bits/mathcalls.h b/math/bits/mathcalls.h index a94707ffe3..d23a013ae6 100644 --- a/math/bits/mathcalls.h +++ b/math/bits/mathcalls.h @@ -171,10 +171,14 @@ __MATHCALL (floor,, (_Mdouble_ __x)); __MATHCALL (fmod,, (_Mdouble_ __x, _Mdouble_ __y)); +/* Return 0 if VALUE is finite or NaN, +1 if it + is +Infinity, -1 if it is -Infinity. */ +__MATHDECL_1 (int,__isinf,, (_Mdouble_ __value)) __attribute__ ((__const__)); + #ifdef __USE_MISC /* Return 0 if VALUE is finite or NaN, +1 if it is +Infinity, -1 if it is -Infinity. */ -__MATHDECLX (int,isinf,, (_Mdouble_ __value), (__const__)); +__MATHDECL_1 (int,isinf,, (_Mdouble_ __value)) __attribute__ ((__const__)); /* Return nonzero if VALUE is finite and not NaN. */ __MATHDECLX (int,finite,, (_Mdouble_ __value), (__const__)); @@ -248,15 +252,17 @@ __MATHCALL (rint,, (_Mdouble_ __x)); /* Return X + epsilon if X < Y, X - epsilon if X > Y. */ __MATHCALLX (nextafter,, (_Mdouble_ __x, _Mdouble_ __y), (__const__)); -#ifdef __USE_ISOC9X +# ifdef __USE_ISOC9X __MATHCALLX (nextafterx,, (_Mdouble_ __x, long double __y), (__const__)); -#endif +# endif /* Return the remainder of integer divison X / Y with infinite precision. */ __MATHCALL (remainder,, (_Mdouble_ __x, _Mdouble_ __y)); +#if defined __USE_MISC || defined __USE_XOPEN_EXTENDED /* Return X times (2 to the Nth power). */ __MATHCALL (scalb,, (_Mdouble_ __x, _Mdouble_ __n)); +#endif /* Return X times (2 to the Nth power). */ __MATHCALL (scalbn,, (_Mdouble_ __x, int __n)); diff --git a/math/math.h b/math/math.h index 5381f29e9a..d7487dda4a 100644 --- a/math/math.h +++ b/math/math.h @@ -196,6 +196,13 @@ enum : sizeof (x) == sizeof (double) ? \ __isnan (x) : __isnanl (x)) +/* Return nonzero value is X is positive or negative infinity. */ +# define isinf(x) \ + (sizeof (x) == sizeof (float) ? \ + __isinff (x) \ + : sizeof (x) == sizeof (double) ? \ + __isinf (x) : __isinfl (x)) + #endif /* Use ISO C 9X. */ #ifdef __USE_MISC diff --git a/math/tgmath.h b/math/tgmath.h index 5880e666d5..307a124afc 100644 --- a/math/tgmath.h +++ b/math/tgmath.h @@ -1,4 +1,4 @@ -/* Copyright (C) 1997 Free Software Foundation, Inc. +/* Copyright (C) 1997, 1998 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 @@ -40,70 +40,83 @@ only defined on real valued parameters and those which are defined for complex functions as well. */ # define __TGMATH_UNARY_REAL_ONLY(Val, Fct) \ - (__extension__ (sizeof (__real__ (Val)) == sizeof (double) \ + (__extension__ (sizeof (Val) == sizeof (double) \ ? Fct (Val) \ - : (sizeof (__real__ (Val)) == sizeof (long double) \ + : (sizeof (Val) == sizeof (long double) \ ? Fct##l (Val) \ : Fct##f (Val)))) # define __TGMATH_BINARY_FIRST_REAL_ONLY(Val1, Val2, Fct) \ - (__extension__ (sizeof (__real__ (Val1)) == sizeof (double) \ - ? Fct (Val1, Val2) \ - : (sizeof (__real__ (Val1)) == sizeof (long double) \ - ? Fct##l (Val1, Val2) \ + (__extension__ (sizeof (Val1) > sizeof (double) \ + ? Fct##l (Val1, Val2) \ + : (sizeof (Val1) == sizeof (double) \ + ? Fct (Val1, Val2) \ : Fct##f (Val1, Val2)))) # define __TGMATH_BINARY_REAL_ONLY(Val1, Val2, Fct) \ - (__extension__ (sizeof (Val1) == sizeof (double) \ - || sizeof (Val2) == sizeof (double) \ - ? Fct (Val1, Val2) \ - : (sizeof (Val1) == sizeof (long double) \ - || sizeof (Val2) == sizeof (long double) \ - ? Fct##l (Val1, Val2) \ + (__extension__ (sizeof (Val1) > sizeof (double) \ + || sizeof (Val2) > sizeof (double) \ + ? Fct##l (Val1, Val2) \ + : (sizeof (Val1) == sizeof (double) \ + || sizeof (Val2) == sizeof (double) \ + ? Fct (Val1, Val2) \ : Fct##f (Val1, Val2)))) # define __TGMATH_TERNARY_FIRST_SECOND_REAL_ONLY(Val1, Val2, Val3, Fct) \ - (__extension__ (sizeof (Val1) == sizeof (double) \ - || sizeof (Val2) == sizeof (double) \ - ? Fct (Val1, Val2, Val3) \ - : (sizeof (Val1) == sizeof (long double) \ - || sizeof (Val2) == sizeof (long double) \ - ? Fct##l (Val1, Val2, Val3) \ + (__extension__ (sizeof (Val1) > sizeof (double) \ + || sizeof (Val2) > sizeof (double) \ + ? Fct##l (Val1, Val2, Val3) \ + : (sizeof (Val1) == sizeof (double) \ + || sizeof (Val2) == sizeof (double) \ + ? Fct (Val1, Val2, Val3) \ + : Fct##f (Val1, Val2, Val3)))) + +# define __TGMATH_TERNARY_REAL_ONLY(Val1, Val2, Val3, Fct) \ + (__extension__ (sizeof (Val1) > sizeof (double) \ + || sizeof (Val2) > sizeof (double) \ + || sizeof (Val3) > sizeof (double) \ + ? Fct##l (Val1, Val2, Val3) \ + : (sizeof (Val1) == sizeof (double) \ + || sizeof (Val2) == sizeof (double) \ + || sizeof (Val3) == sizeof (double) \ + ? Fct (Val1, Val2, Val3) \ : Fct##f (Val1, Val2, Val3)))) # define __TGMATH_UNARY_REAL_IMAG(Val, Fct, Cfct) \ - (__extension__ (sizeof (__real__ (Val)) == sizeof (double) \ + (__extension__ (sizeof (__real__ (val)) > sizeof (double) \ ? (sizeof (__real__ (Val)) == sizeof (Val) \ - ? Fct (Val) \ - : Cfct (Val)) \ - : (sizeof (__real__ (Val)) == sizeof (long double) \ + ? Fct##l (Val) \ + : Cfct##l (Val)) \ + : (sizeof (__real__ (val)) == sizeof (double) \ ? (sizeof (__real__ (Val)) == sizeof (Val) \ - ? Fct##l (Val) \ - : Cfct##l (Val)) \ + ? Fct (Val) \ + : Cfct (Val)) \ : (sizeof (__real__ (Val)) == sizeof (Val) \ ? Fct##f (Val) \ : Cfct##f (Val))))) +/* XXX This definition has to be changed as soon as the compiler understands + the imaginary keyword. */ # define __TGMATH_UNARY_IMAG_ONLY(Val, Fct) \ - (__extension__ (sizeof (Val) == sizeof (__complex__ double) \ - ? Fct (Val) \ - : (sizeof (Val) == sizeof (__complex__ long double) \ - ? Fct##l (Val) \ + (__extension__ (sizeof (Val) > sizeof (__complex__ double) \ + ? Fct##l (Val) \ + : (sizeof (Val) == sizeof (__complex__ double) \ + ? Fct (Val) \ : Fct##f (Val)))) # define __TGMATH_BINARY_REAL_IMAG(Val1, Val2, Fct, Cfct) \ - (__extension__ (sizeof (__real__ (Val1)) == sizeof (double) \ - || sizeof (__real__ (Val2)) == sizeof (double) \ + (__extension__ (sizeof (__real__ (Val1)) > sizeof (double) \ + || sizeof (__real__ (Val2)) > sizeof (double) \ ? (sizeof (__real__ (Val1)) == sizeof (Val1) \ && sizeof (__real__ (Val2)) == sizeof (Val2) \ - ? Fct (Val1, Val2) \ - : Cfct (Val1, Val2)) \ - : (sizeof (__real__ (Val1)) == sizeof (long double) \ - || sizeof (__real__ (Val2)) == sizeof (long double) \ + ? Fct##l (Val1, Val2) \ + : Cfct##l (Val1, Val2)) \ + : (sizeof (__real__ (Val1)) == sizeof (double) \ + || sizeof (__real__ (Val2)) == sizeof (double) \ ? (sizeof (__real__ (Val1)) == sizeof (Val1) \ && sizeof (__real__ (Val2)) == sizeof (Val2) \ - ? Fct##l (Val1, Val2) \ - : Cfct##l (Val1, Val2)) \ + ? Fct (Val1, Val2) \ + : Cfct (Val1, Val2)) \ : (sizeof (__real__ (Val1)) == sizeof (Val1) \ && sizeof (__real__ (Val2)) == sizeof (Val2) \ ? Fct##f (Val1, Val2) \ @@ -293,6 +306,11 @@ #define fmin(Val1, Val2) __TGMATH_BINARY_REAL_ONLY (Val1, Val2, fmin) +/* Multiply-add function computed as a ternary operation. */ +#define fma(Vat1, Val2, Val3) \ + __TGMATH_TERNARY_REAL_ONLY (Val1, Val2, Val3, fma) + + /* Absolute value, conjugates, and projection. */ /* Argument value of Z. */ diff --git a/stdlib/stdlib.h b/stdlib/stdlib.h index a7488e0ce8..49374bd396 100644 --- a/stdlib/stdlib.h +++ b/stdlib/stdlib.h @@ -88,7 +88,7 @@ extern long long int atoll __P ((__const char *__nptr)); extern double strtod __P ((__const char *__restrict __nptr, char **__restrict __endptr)); -#ifdef __USE_GNU +#ifdef __USE_ISOC9X /* Likewise for `float' and `long double' sizes of floating-point numbers. */ extern float strtof __P ((__const char *__restrict __nptr, char **__restrict __endptr)); @@ -241,7 +241,7 @@ strtoul (__const char *__restrict __nptr, char **__restrict __endptr, return __strtoul_internal (__nptr, __endptr, __base, 0); } -# ifdef __USE_GNU +# ifdef __USE_ISOC9X extern __inline float strtof (__const char *__restrict __nptr, char **__restrict __endptr) { diff --git a/sysdeps/standalone/bits/errno.h b/sysdeps/standalone/bits/errno.h index d4030b7f44..d4f7879280 100644 --- a/sysdeps/standalone/bits/errno.h +++ b/sysdeps/standalone/bits/errno.h @@ -1,4 +1,4 @@ -/* Copyright (C) 1991, 1994, 1996, 1997 Free Software Foundation, Inc. +/* Copyright (C) 1991, 1994, 1996, 1997, 1998 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 @@ -39,7 +39,6 @@ # define ENOMSG 11 # define ENAMETOOLONG 12 # define ELOOP 13 -# define ENOMSG 14 # define E2BIG 15 # define EINTR 16 # define ENOEXEC 18 diff --git a/sysdeps/unix/sysv/linux/Dist b/sysdeps/unix/sysv/linux/Dist index dbe401de3f..e10e24a678 100644 --- a/sysdeps/unix/sysv/linux/Dist +++ b/sysdeps/unix/sysv/linux/Dist @@ -77,3 +77,5 @@ xstatconv.c getdents64.c getresuid.c getresgid.c +umount.S +umount2.S diff --git a/sysdeps/unix/sysv/linux/bits/sigcontext.h b/sysdeps/unix/sysv/linux/bits/sigcontext.h index 08960b6824..97cbf4b301 100644 --- a/sysdeps/unix/sysv/linux/bits/sigcontext.h +++ b/sysdeps/unix/sysv/linux/bits/sigcontext.h @@ -1,4 +1,4 @@ -/* Copyright (C) 1996, 1997 Free Software Foundation, Inc. +/* Copyright (C) 1996, 1997, 1998 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 @@ -16,13 +16,14 @@ write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ -#ifndef _SIGNAL_H +#if !defined _SIGNAL_H && !defined _SYS_UCONTEXT_H # error "Never use directly; include instead." #endif - +#ifndef sigcontext_struct /* Kernel headers before 2.1.1 define a struct sigcontext_struct, but we need sigcontext. */ -#define sigcontext_struct sigcontext +# define sigcontext_struct sigcontext -#include +# include +#endif diff --git a/sysdeps/wordsize-32/inttypes.h b/sysdeps/wordsize-32/inttypes.h index 79d3eed31c..250cbe31dd 100644 --- a/sysdeps/wordsize-32/inttypes.h +++ b/sysdeps/wordsize-32/inttypes.h @@ -82,6 +82,22 @@ # define PRIoFAST32 "o" # define PRIoFAST64 "llo" +/* Unsigned integers. */ +# define PRIu8 "u" +# define PRIu16 "u" +# define PRIu32 "u" +# define PRIu64 "llu" + +# define PRIuLEAST8 "u" +# define PRIuLEAST16 "u" +# define PRIuLEAST32 "u" +# define PRIuLEAST64 "llu" + +# define PRIuFAST8 "u" +# define PRIuFAST16 "u" +# define PRIuFAST32 "u" +# define PRIuFAST64 "llu" + /* lowercase hexadecimal notation. */ # define PRIx8 "x" # define PRIx16 "x" @@ -115,72 +131,119 @@ # define PRIXFAST64 "llX" -/* Unsigned integers. */ -# define PRIu8 "u" -# define PRIu16 "u" -# define PRIu32 "u" -# define PRIu64 "llu" - -# define PRIuLEAST8 "u" -# define PRIuLEAST16 "u" -# define PRIuLEAST32 "u" -# define PRIuLEAST64 "llu" - -# define PRIuFAST8 "u" -# define PRIuFAST16 "u" -# define PRIuFAST32 "u" -# define PRIuFAST64 "llu" - - /* Macros for printing `intmax_t' and `uintmax_t'. */ # define PRIdMAX "lld" +# define PRIiMAX "lli" # define PRIoMAX "llo" -# define PRIxMAX "llx" # define PRIuMAX "llu" +# define PRIxMAX "llx" +# define PRIXMAX "llX" /* Macros for printing `intptr_t' and `uintptr_t'. */ # define PRIdPTR "d" +# define PRIiPTR "i" # define PRIoPTR "o" -# define PRIxPTR "x" # define PRIuPTR "u" +# define PRIxPTR "x" +# define PRIXPTR "X" /* Macros for scanning format specifiers. */ -/* Decimal notation. */ +/* Signed decimal notation. */ # define SCNd8 "hhd" # define SCNd16 "hd" # define SCNd32 "d" # define SCNd64 "lld" +# define SCNdLEAST8 "hhd" +# define SCNdLEAST16 "hd" +# define SCNdLEAST32 "d" +# define SCNdLEAST64 "lld" + +# define SCNdFAST8 "hhd" +# define SCNdFAST16 "d" +# define SCNdFAST32 "d" +# define SCNdFAST64 "lld" + +/* Signed decimal notation. */ # define SCNi8 "hhi" # define SCNi16 "hi" # define SCNi32 "i" # define SCNi64 "lli" +# define SCNiLEAST8 "hhi" +# define SCNiLEAST16 "hi" +# define SCNiLEAST32 "i" +# define SCNiLEAST64 "lli" + +# define SCNiFAST8 "hhi" +# define SCNiFAST16 "i" +# define SCNiFAST32 "i" +# define SCNiFAST64 "lli" + +/* Unsigned decimal notation. */ # define SCNu8 "hhu" # define SCNu16 "hu" # define SCNu32 "u" # define SCNu64 "llu" +# define SCNuLEAST8 "hhu" +# define SCNuLEAST16 "hu" +# define SCNuLEAST32 "u" +# define SCNuLEAST64 "llu" + +# define SCNuFAST8 "hhu" +# define SCNuFAST16 "u" +# define SCNuFAST32 "u" +# define SCNuFAST64 "llu" + /* Octal notation. */ # define SCNo8 "hho" # define SCNo16 "ho" # define SCNo32 "o" # define SCNo64 "llo" +# define SCNoLEAST8 "hho" +# define SCNoLEAST16 "ho" +# define SCNoLEAST32 "o" +# define SCNoLEAST64 "llo" + +# define SCNoFAST8 "hho" +# define SCNoFAST16 "o" +# define SCNoFAST32 "o" +# define SCNoFAST64 "llo" + /* Hexadecimal notation. */ # define SCNx8 "hhx" # define SCNx16 "hx" # define SCNx32 "x" # define SCNx64 "llx" +# define SCNxLEAST8 "hhx" +# define SCNxLEAST16 "hx" +# define SCNxLEAST32 "x" +# define SCNxLEAST64 "llx" + +# define SCNxFAST8 "hhx" +# define SCNxFAST16 "x" +# define SCNxFAST32 "x" +# define SCNxFAST64 "llx" + + +/* Macros for scanning `intmax_t' and `uintmax_t'. */ +# define SCNdMAX "lld" +# define SCNiMAX "lli" +# define SCNoMAX "llo" +# define SCNuMAX "llu" +# define SCNxMAX "llx" /* Macros for scaning `intptr_t' and `uintptr_t'. */ # define SCNdPTR "d" # define SCNiPTR "i" # define SCNoPTR "o" +# define SCNuPTR "u" # define SCNxPTR "x" #endif /* C++ && format macros */ diff --git a/sysdeps/wordsize-64/inttypes.h b/sysdeps/wordsize-64/inttypes.h index c76d2c887d..61730bbc00 100644 --- a/sysdeps/wordsize-64/inttypes.h +++ b/sysdeps/wordsize-64/inttypes.h @@ -82,6 +82,22 @@ # define PRIoFAST32 "o" # define PRIoFAST64 "lo" + /* Unsigned integers. */ +# define PRIu8 "u" +# define PRIu16 "u" +# define PRIu32 "u" +# define PRIu64 "lu" + +# define PRIuLEAST8 "u" +# define PRIuLEAST16 "u" +# define PRIuLEAST32 "u" +# define PRIuLEAST64 "lu" + +# define PRIuFAST8 "u" +# define PRIuFAST16 "u" +# define PRIuFAST32 "u" +# define PRIuFAST64 "lu" + /* lowercase hexadecimal notation. */ # define PRIx8 "x" # define PRIx16 "x" @@ -115,54 +131,57 @@ # define PRIXFAST64 "lX" -/* Unsigned integers. */ -# define PRIu8 "u" -# define PRIu16 "u" -# define PRIu32 "u" -# define PRIu64 "lu" - -# define PRIuLEAST8 "u" -# define PRIuLEAST16 "u" -# define PRIuLEAST32 "u" -# define PRIuLEAST64 "lu" - -# define PRIuFAST8 "u" -# define PRIuFAST16 "u" -# define PRIuFAST32 "u" -# define PRIuFAST64 "lu" - - /* Macros for printing `intmax_t' and `uintmax_t'. */ # define PRIdMAX "ld" +# define PRIiMAX "li" # define PRIoMAX "lo" -# define PRIxMAX "lx" # define PRIuMAX "lu" +# define PRIxMAX "lx" +# define PRIXMAX "lX" /* Macros for printing `intptr_t' and `uintptr_t'. */ # define PRIdPTR "ld" +# define PRIiPTR "li" # define PRIoPTR "lo" -# define PRIxPTR "lx" # define PRIuPTR "lu" +# define PRIxPTR "lx" +# define PRIXPTR "lX" /* Macros for printing format specifiers. */ -/* Decimal notation. */ +/* Signed decimal notation. */ # define SCNd8 "hhd" # define SCNd16 "hd" # define SCNd32 "d" # define SCNd64 "ld" +# define SCNdLEAST8 "hhd" +# define SCNdLEAST16 "hd" +# define SCNdLEAST32 "d" +# define SCNdLEAST64 "ld" + +# define SCNdFAST8 "hhd" +# define SCNdFAST16 "ld" +# define SCNdFAST32 "ld" +# define SCNdFAST64 "ld" + +/* Signed decimal notation. */ # define SCNi8 "hhi" # define SCNi16 "hi" # define SCNi32 "i" # define SCNi64 "li" -# define SCNu8 "hhu" -# define SCNu16 "hu" -# define SCNu32 "u" -# define SCNu64 "lu" +# define SCNiLEAST8 "hhi" +# define SCNiLEAST16 "hi" +# define SCNiLEAST32 "i" +# define SCNiLEAST64 "li" + +# define SCNiFAST8 "hhi" +# define SCNiFAST16 "li" +# define SCNiFAST32 "li" +# define SCNiFAST64 "li" /* Octal notation. */ # define SCNo8 "hho" @@ -170,23 +189,61 @@ # define SCNo32 "o" # define SCNo64 "lo" +# define SCNoLEAST8 "hho" +# define SCNoLEAST16 "ho" +# define SCNoLEAST32 "o" +# define SCNoLEAST64 "lo" + +# define SCNoFAST8 "hho" +# define SCNoFAST16 "lo" +# define SCNoFAST32 "lo" +# define SCNoFAST64 "lo" + +/* Unsigned decimal notation. */ +# define SCNu8 "hhu" +# define SCNu16 "hu" +# define SCNu32 "u" +# define SCNu64 "lu" + +# define SCNuLEAST8 "hhu" +# define SCNuLEAST16 "hu" +# define SCNuLEAST32 "u" +# define SCNuLEAST64 "lu" + +# define SCNuFAST8 "hhu" +# define SCNuFAST16 "lu" +# define SCNuFAST32 "lu" +# define SCNuFAST64 "lu" + /* Hexadecimal notation. */ # define SCNx8 "hhx" # define SCNx16 "hx" # define SCNx32 "x" # define SCNx64 "lx" +# define SCNxLEAST8 "hhx" +# define SCNxLEAST16 "hx" +# define SCNxLEAST32 "x" +# define SCNxLEAST64 "lx" -/* Macros for scaning `intfast_t' and `uintfast_t'. */ -# define SCNdFAST "ld" -# define SCNiFAST "li" -# define SCNoFAST "lo" -# define SCNxFAST "lx" +# define SCNxFAST8 "hhx" +# define SCNxFAST16 "lx" +# define SCNxFAST32 "lx" +# define SCNxFAST64 "lx" -/* Macros for scaning `intptr_t' and `uintptr_t'. */ + +/* Macros for scanning `intmax_t' and `uintmax_t'. */ +# define SCNdMAX "ld" +# define SCNiMAX "li" +# define SCNoMAX "lo" +# define SCNuMAX "lu" +# define SCNxMAX "lx" + +/* Macros for scanning `intptr_t' and `uintptr_t'. */ # define SCNdPTR "ld" # define SCNiPTR "li" # define SCNoPTR "lo" +# define SCNuPTR "lu" # define SCNxPTR "lx" #endif /* C++ && format macros */