summaryrefslogtreecommitdiff
path: root/stdio-common
diff options
context:
space:
mode:
authorThomas Schwinge <thomas@codesourcery.com>2012-07-22 19:58:41 +0200
committerThomas Schwinge <thomas@codesourcery.com>2012-07-22 19:58:41 +0200
commitef724a37cdb3012efb5b7233eb8b450ad91d3d69 (patch)
tree2334455220f417223cc1a75aebe76302cdffdf5a /stdio-common
parent6f276c2517990f6569b961b4d4919cbce570ac45 (diff)
parent47e5dcdf349a1aea5c8997104ef785412f0d34fa (diff)
Merge branch 'baseline' into refs/top-bases/tschwinge/Roger_Whittaker
Conflicts: configure configure.in elf/rtld.c misc/syslog.c sysdeps/gnu/configure sysdeps/gnu/configure.in sysdeps/mach/hurd/accept4.c sysdeps/mach/hurd/bits/posix_opt.h sysdeps/mach/hurd/dup3.c sysdeps/mach/hurd/i386/init-first.c sysdeps/mach/hurd/kernel-features.h sysdeps/mach/hurd/readlinkat.c
Diffstat (limited to 'stdio-common')
-rw-r--r--stdio-common/Makefile6
-rw-r--r--stdio-common/_itoa.c34
-rw-r--r--stdio-common/asprintf.c5
-rw-r--r--stdio-common/bug15.c10
-rw-r--r--stdio-common/bug22.c30
-rw-r--r--stdio-common/bug25.c70
-rw-r--r--stdio-common/fxprintf.c4
-rw-r--r--stdio-common/getw.c4
-rw-r--r--stdio-common/isoc99_fscanf.c4
-rw-r--r--stdio-common/isoc99_scanf.c5
-rw-r--r--stdio-common/isoc99_vfscanf.c4
-rw-r--r--stdio-common/isoc99_vscanf.c4
-rw-r--r--stdio-common/isoc99_vsscanf.c4
-rw-r--r--stdio-common/itoa-digits.c6
-rw-r--r--stdio-common/itoa-udigits.c6
-rw-r--r--stdio-common/printf-parse.h23
-rw-r--r--stdio-common/printf-parsemb.c42
-rw-r--r--stdio-common/printf-prs.c5
-rw-r--r--stdio-common/printf_fp.c4
-rw-r--r--stdio-common/printf_fphex.c4
-rw-r--r--stdio-common/printf_size.c4
-rw-r--r--stdio-common/psiginfo.c9
-rw-r--r--stdio-common/psignal.c11
-rw-r--r--stdio-common/putw.c4
-rw-r--r--stdio-common/scanf.c5
-rw-r--r--stdio-common/sprintf.c5
-rw-r--r--stdio-common/tmpfile.c5
-rw-r--r--stdio-common/tst-sprintf3.c90
-rw-r--r--stdio-common/vfprintf.c108
-rw-r--r--stdio-common/vfscanf.c11
30 files changed, 371 insertions, 155 deletions
diff --git a/stdio-common/Makefile b/stdio-common/Makefile
index 8cf6335bb5..a29924bc7c 100644
--- a/stdio-common/Makefile
+++ b/stdio-common/Makefile
@@ -51,12 +51,13 @@ tests := tstscanf test_rdwr test-popen tstgetln test-fseek \
scanf1 scanf2 scanf3 scanf4 scanf5 scanf7 scanf8 scanf9 scanf10 \
scanf11 scanf12 tst-tmpnam tst-cookie tst-obprintf tst-sscanf \
tst-swprintf tst-fseek tst-fmemopen test-vfprintf tst-gets \
- tst-perror tst-sprintf tst-rndseek tst-fdopen tst-fphex bug14 bug15 \
+ tst-perror tst-sprintf tst-rndseek tst-fdopen tst-fphex bug14 \
tst-popen tst-unlockedio tst-fmemopen2 tst-put-error tst-fgets \
tst-fwrite bug16 bug17 tst-swscanf tst-sprintf2 bug18 bug18a \
bug19 bug19a tst-popen2 scanf13 scanf14 scanf15 bug20 bug21 bug22 \
scanf16 scanf17 tst-setvbuf1 tst-grouping bug23 bug24 \
- bug-vfprintf-nargs tst-long-dbl-fphex tst-fphex-wide
+ bug-vfprintf-nargs tst-long-dbl-fphex tst-fphex-wide tst-sprintf3 \
+ bug25
test-srcs = tst-unbputc tst-printf
@@ -120,7 +121,6 @@ tst-swprintf-ENV = LOCPATH=$(common-objpfx)localedata
test-vfprintf-ENV = LOCPATH=$(common-objpfx)localedata
scanf13-ENV = LOCPATH=$(common-objpfx)localedata
bug14-ENV = LOCPATH=$(common-objpfx)localedata
-bug15-ENV = LOCPATH=$(common-objpfx)localedata
tst-grouping-ENV = LOCPATH=$(common-objpfx)localedata
ifneq (,$(filter %REENTRANT, $(defines)))
diff --git a/stdio-common/_itoa.c b/stdio-common/_itoa.c
index 3dfff8ff64..ebb3e857c6 100644
--- a/stdio-common/_itoa.c
+++ b/stdio-common/_itoa.c
@@ -1,6 +1,5 @@
/* Internal function for converting integers to ASCII.
- Copyright (C) 1994, 1995, 1996, 1999, 2000, 2002, 2003, 2004, 2007
- Free Software Foundation, Inc.
+ Copyright (C) 1994-2012 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Torbjorn Granlund <tege@matematik.su.se>
and Ulrich Drepper <drepper@gnu.org>.
@@ -79,7 +78,7 @@ struct base_table_t
/* We do not compile _itoa if we always can use _itoa_word. */
-#if LLONG_MAX != LONG_MAX
+#if _ITOA_NEEDED
/* Local variables. */
const struct base_table_t _itoa_base_table[] attribute_hidden =
{
@@ -160,27 +159,13 @@ const struct base_table_t _itoa_base_table[] attribute_hidden =
};
#endif
-/* Lower-case digits. */
-extern const char _itoa_lower_digits[];
-extern const char _itoa_lower_digits_internal[] attribute_hidden;
-/* Upper-case digits. */
-extern const char _itoa_upper_digits[];
-extern const char _itoa_upper_digits_internal[] attribute_hidden;
-
-
char *
-_itoa_word (unsigned long value, char *buflim,
+_itoa_word (_ITOA_WORD_TYPE value, char *buflim,
unsigned int base, int upper_case)
{
const char *digits = (upper_case
-#if !defined NOT_IN_libc || defined IS_IN_rtld
- ? INTUSE(_itoa_upper_digits)
- : INTUSE(_itoa_lower_digits)
-#else
? _itoa_upper_digits
- : _itoa_lower_digits
-#endif
- );
+ : _itoa_lower_digits);
switch (base)
{
@@ -204,7 +189,7 @@ _itoa_word (unsigned long value, char *buflim,
#undef SPECIAL
-#if LLONG_MAX != LONG_MAX
+#if _ITOA_NEEDED
char *
_itoa (value, buflim, base, upper_case)
unsigned long long int value;
@@ -213,8 +198,8 @@ _itoa (value, buflim, base, upper_case)
int upper_case;
{
const char *digits = (upper_case
- ? INTUSE(_itoa_upper_digits)
- : INTUSE(_itoa_lower_digits));
+ ? _itoa_upper_digits
+ : _itoa_lower_digits);
const struct base_table_t *brec = &_itoa_base_table[base - 2];
switch (base)
@@ -470,7 +455,8 @@ _itoa (value, buflim, base, upper_case)
#endif
char *
-_fitoa_word (unsigned long value, char *buf, unsigned int base, int upper_case)
+_fitoa_word (_ITOA_WORD_TYPE value, char *buf, unsigned int base,
+ int upper_case)
{
char tmpbuf[sizeof (value) * 4]; /* Worst case length: base 2. */
char *cp = _itoa_word (value, tmpbuf + sizeof (value) * 4, base, upper_case);
@@ -479,7 +465,7 @@ _fitoa_word (unsigned long value, char *buf, unsigned int base, int upper_case)
return buf;
}
-#if LLONG_MAX != LONG_MAX
+#if _ITOA_NEEDED
char *
_fitoa (unsigned long long value, char *buf, unsigned int base, int upper_case)
{
diff --git a/stdio-common/asprintf.c b/stdio-common/asprintf.c
index 1f58a20678..c98de3f902 100644
--- a/stdio-common/asprintf.c
+++ b/stdio-common/asprintf.c
@@ -1,5 +1,4 @@
-/* Copyright (C) 1991, 1995, 1997, 1998, 2002, 2004, 2006
- Free Software Foundation, Inc.
+/* Copyright (C) 1991-2012 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
@@ -38,7 +37,7 @@ ___asprintf (char **string_ptr, const char *format, ...)
return done;
}
-INTDEF2(___asprintf, __asprintf)
+ldbl_hidden_def (___asprintf, __asprintf)
ldbl_strong_alias (___asprintf, __asprintf)
ldbl_weak_alias (___asprintf, asprintf)
diff --git a/stdio-common/bug15.c b/stdio-common/bug15.c
deleted file mode 100644
index 825ca2f980..0000000000
--- a/stdio-common/bug15.c
+++ /dev/null
@@ -1,10 +0,0 @@
-#include <stdio.h>
-#include <locale.h>
-
-int
-main (void)
-{
- char buf[10];
- setlocale (LC_ALL, "vi_VN.TCVN-5712");
- return sprintf (buf, "%.*s", 2, "vi") != 2;
-}
diff --git a/stdio-common/bug22.c b/stdio-common/bug22.c
index 2228388b47..b26399acb7 100644
--- a/stdio-common/bug22.c
+++ b/stdio-common/bug22.c
@@ -1,12 +1,22 @@
/* BZ #5424 */
#include <stdio.h>
+#include <errno.h>
+/* INT_MAX + 1 */
#define N 2147483648
+/* (INT_MAX / 2) + 2 */
+#define N2 1073741825
+
+/* INT_MAX - 3 */
+#define N3 2147483644
+
#define STRINGIFY(S) #S
#define MAKE_STR(S) STRINGIFY(S)
#define SN MAKE_STR(N)
+#define SN2 MAKE_STR(N2)
+#define SN3 MAKE_STR(N3)
static int
do_test (void)
@@ -20,13 +30,27 @@ do_test (void)
return 1;
}
- ret = fprintf (fp, "%" SN "d%" SN "d", 1, 1);
+ ret = fprintf (fp, "%" SN "d", 1);
+ printf ("ret = %d\n", ret);
+ if (ret != -1 || errno != EOVERFLOW)
+ return 1;
+
+ ret = fprintf (fp, "%." SN "d", 1);
+ printf ("ret = %d\n", ret);
+ if (ret != -1 || errno != EOVERFLOW)
+ return 1;
+
+ ret = fprintf (fp, "%." SN3 "d", 1);
+ printf ("ret = %d\n", ret);
+ if (ret != -1 || errno != EOVERFLOW)
+ return 1;
+ ret = fprintf (fp, "%" SN2 "d%" SN2 "d", 1, 1);
printf ("ret = %d\n", ret);
- return ret != -1;
+ return ret != -1 || errno != EOVERFLOW;
}
-#define TIMEOUT 30
+#define TIMEOUT 60
#define TEST_FUNCTION do_test ()
#include "../test-skeleton.c"
diff --git a/stdio-common/bug25.c b/stdio-common/bug25.c
new file mode 100644
index 0000000000..30c133974b
--- /dev/null
+++ b/stdio-common/bug25.c
@@ -0,0 +1,70 @@
+#include <stdio.h>
+#include <string.h>
+#include <unistd.h>
+
+static const char expected[] = "\
+\n\
+a\n\
+abbcd55\
+\n\
+a\n\
+abbcd55\
+\n\
+a\n\
+abbcd55\
+\n\
+a\n\
+abbcd55\
+\n\
+a\n\
+abbcd55\
+\n\
+a\n\
+abbcd55\
+\n\
+a\n\
+abbcd55\
+\n\
+a\n\
+abbcd55\
+\n\
+a\n\
+abbcd55\
+\n\
+a\n\
+abbcd55\
+\n\
+a\n\
+abbcd55\
+\n\
+a\n\
+abbcd55\
+\n\
+a\n\
+abbcd55%%%%%%%%%%%%%%%%%%%%%%%%%%\n";
+
+static int
+do_test (void)
+{
+ char *buf = malloc (strlen (expected) + 1);
+ snprintf (buf, strlen (expected) + 1,
+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d"
+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d"
+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d"
+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d"
+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d"
+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d"
+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d"
+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d"
+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d"
+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d"
+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d"
+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d"
+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d"
+ "%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%\n",
+ "a", "b", "c", "d", 5);
+ return strcmp (buf, expected) != 0;
+}
+
+#define TEST_FUNCTION do_test ()
+#include "../test-skeleton.c"
diff --git a/stdio-common/fxprintf.c b/stdio-common/fxprintf.c
index 3c1341485d..a63cf5426f 100644
--- a/stdio-common/fxprintf.c
+++ b/stdio-common/fxprintf.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 2005 Free Software Foundation, Inc.
+/* Copyright (C) 2005-2012 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@gnu.org>.
@@ -47,7 +47,7 @@ __fxprintf (FILE *fp, const char *fmt, ...)
res = __vfwprintf (fp, wfmt, ap);
}
else
- res = INTUSE(_IO_vfprintf) (fp, fmt, ap);
+ res = _IO_vfprintf (fp, fmt, ap);
va_end (ap);
diff --git a/stdio-common/getw.c b/stdio-common/getw.c
index 2cd5ab0a80..34b82c3de6 100644
--- a/stdio-common/getw.c
+++ b/stdio-common/getw.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 1991, 1997, 1998, 2002, 2004 Free Software Foundation, Inc.
+/* Copyright (C) 1991-2012 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
@@ -18,7 +18,7 @@
#include <stdio.h>
#include <libio/iolibio.h>
-#define fread(p, m, n, s) INTUSE(_IO_fread) (p, m, n, s)
+#define fread(p, m, n, s) _IO_fread (p, m, n, s)
/* Read a word (int) from STREAM. */
int
diff --git a/stdio-common/isoc99_fscanf.c b/stdio-common/isoc99_fscanf.c
index 6e5e33d68f..4b689fa0ba 100644
--- a/stdio-common/isoc99_fscanf.c
+++ b/stdio-common/isoc99_fscanf.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 1991, 1997, 2006, 2007 Free Software Foundation, Inc.
+/* Copyright (C) 1991-2012 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
@@ -31,7 +31,7 @@ __isoc99_fscanf (FILE *stream, const char *format, ...)
stream->_flags2 |= _IO_FLAGS2_SCANF_STD;
va_start (arg, format);
- done = INTUSE(_IO_vfscanf) (stream, format, arg, NULL);
+ done = _IO_vfscanf (stream, format, arg, NULL);
va_end (arg);
_IO_release_lock (stream);
diff --git a/stdio-common/isoc99_scanf.c b/stdio-common/isoc99_scanf.c
index d91ef94bbc..2e04e700e4 100644
--- a/stdio-common/isoc99_scanf.c
+++ b/stdio-common/isoc99_scanf.c
@@ -1,5 +1,4 @@
-/* Copyright (C) 1991, 1995, 1996, 1997, 2002, 2004, 2006, 2007
- Free Software Foundation, Inc.
+/* Copyright (C) 1991-2012 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
@@ -33,7 +32,7 @@ __isoc99_scanf (const char *format, ...)
stdin->_flags2 |= _IO_FLAGS2_SCANF_STD;
va_start (arg, format);
- done = INTUSE(_IO_vfscanf) (stdin, format, arg, NULL);
+ done = _IO_vfscanf (stdin, format, arg, NULL);
va_end (arg);
_IO_release_lock (stdin);
diff --git a/stdio-common/isoc99_vfscanf.c b/stdio-common/isoc99_vfscanf.c
index 658d5ff361..bd6087bd6e 100644
--- a/stdio-common/isoc99_vfscanf.c
+++ b/stdio-common/isoc99_vfscanf.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 1991, 1997, 2006, 2007 Free Software Foundation, Inc.
+/* Copyright (C) 1991-2012 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
@@ -27,7 +27,7 @@ __isoc99_vfscanf (FILE *stream, const char *format, _IO_va_list args)
_IO_acquire_lock_clear_flags2 (stream);
stream->_flags2 |= _IO_FLAGS2_SCANF_STD;
- done = INTUSE(_IO_vfscanf) (stream, format, args, NULL);
+ done = _IO_vfscanf (stream, format, args, NULL);
_IO_release_lock (stream);
return done;
}
diff --git a/stdio-common/isoc99_vscanf.c b/stdio-common/isoc99_vscanf.c
index c9c187cb3a..4d9f3b820b 100644
--- a/stdio-common/isoc99_vscanf.c
+++ b/stdio-common/isoc99_vscanf.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 1991, 1997, 2006, 2007 Free Software Foundation, Inc.
+/* Copyright (C) 1991-2012 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
@@ -27,7 +27,7 @@ __isoc99_vscanf (const char *format, _IO_va_list args)
_IO_acquire_lock_clear_flags2 (stdin);
stdin->_flags2 |= _IO_FLAGS2_SCANF_STD;
- done = INTUSE(_IO_vfscanf) (stdin, format, args, NULL);
+ done = _IO_vfscanf (stdin, format, args, NULL);
_IO_release_lock (stdin);
return done;
}
diff --git a/stdio-common/isoc99_vsscanf.c b/stdio-common/isoc99_vsscanf.c
index 628856a6d0..a6dc007dd2 100644
--- a/stdio-common/isoc99_vsscanf.c
+++ b/stdio-common/isoc99_vsscanf.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 1993,1997-2003,2006,2007,2009 Free Software Foundation, Inc.
+/* Copyright (C) 1993-2012 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,7 +40,7 @@ __isoc99_vsscanf (const char *string, const char *format, _IO_va_list args)
_IO_JUMPS (&sf._sbf) = &_IO_str_jumps;
_IO_str_init_static_internal (&sf, (char*)string, 0, NULL);
sf._sbf._f._flags2 |= _IO_FLAGS2_SCANF_STD;
- ret = INTUSE(_IO_vfscanf) (&sf._sbf._f, format, args, NULL);
+ ret = _IO_vfscanf (&sf._sbf._f, format, args, NULL);
return ret;
}
libc_hidden_def (__isoc99_vsscanf)
diff --git a/stdio-common/itoa-digits.c b/stdio-common/itoa-digits.c
index b0a652d6cf..e38f48405e 100644
--- a/stdio-common/itoa-digits.c
+++ b/stdio-common/itoa-digits.c
@@ -1,5 +1,5 @@
/* Digits.
- Copyright (C) 1994,1995,1996,1999,2000,2002 Free Software Foundation, Inc.
+ Copyright (C) 1994-2012 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,7 +16,9 @@
License along with the GNU C Library; if not, see
<http://www.gnu.org/licenses/>. */
+#include <_itoa.h>
+
/* Lower-case digits. */
const char _itoa_lower_digits[36]
= "0123456789abcdefghijklmnopqrstuvwxyz";
-INTVARDEF(_itoa_lower_digits)
+libc_hidden_data_def (_itoa_lower_digits)
diff --git a/stdio-common/itoa-udigits.c b/stdio-common/itoa-udigits.c
index 39f9549c9c..215af7126e 100644
--- a/stdio-common/itoa-udigits.c
+++ b/stdio-common/itoa-udigits.c
@@ -1,5 +1,5 @@
/* Digits.
- Copyright (C) 1994,1995,1996,1999,2000,2002 Free Software Foundation, Inc.
+ Copyright (C) 1994-2012 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,7 +16,9 @@
License along with the GNU C Library; if not, see
<http://www.gnu.org/licenses/>. */
+#include <_itoa.h>
+
/* Upper-case digits. */
const char _itoa_upper_digits[36]
= "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";
-INTVARDEF(_itoa_upper_digits)
+libc_hidden_data_def (_itoa_upper_digits)
diff --git a/stdio-common/printf-parse.h b/stdio-common/printf-parse.h
index 72665dcec2..3aa0274249 100644
--- a/stdio-common/printf-parse.h
+++ b/stdio-common/printf-parse.h
@@ -68,16 +68,27 @@ union printf_arg
#ifndef DONT_NEED_READ_INT
/* Read a simple integer from a string and update the string pointer.
It is assumed that the first character is a digit. */
-static unsigned int
+static int
read_int (const UCHAR_T * *pstr)
{
- unsigned int retval = **pstr - L_('0');
+ int retval = **pstr - L_('0');
while (ISDIGIT (*++(*pstr)))
- {
- retval *= 10;
- retval += **pstr - L_('0');
- }
+ if (retval >= 0)
+ {
+ if (INT_MAX / 10 < retval)
+ retval = -1;
+ else
+ {
+ int digit = **pstr - L_('0');
+
+ retval *= 10;
+ if (INT_MAX - digit < retval)
+ retval = -1;
+ else
+ retval += digit;
+ }
+ }
return retval;
}
diff --git a/stdio-common/printf-parsemb.c b/stdio-common/printf-parsemb.c
index 2bdb5e65ab..a45ac74e06 100644
--- a/stdio-common/printf-parsemb.c
+++ b/stdio-common/printf-parsemb.c
@@ -87,12 +87,15 @@ __parse_one_specmb (const UCHAR_T *format, size_t posn,
n = read_int (&format);
- if (n > 0 && *format == L_('$'))
+ if (n != 0 && *format == L_('$'))
/* Is positional parameter. */
{
++format; /* Skip the '$'. */
- spec->data_arg = n - 1;
- *max_ref_arg = MAX (*max_ref_arg, n);
+ if (n != -1)
+ {
+ spec->data_arg = n - 1;
+ *max_ref_arg = MAX (*max_ref_arg, n);
+ }
}
else
/* Oops; that was actually the width and/or 0 padding flag.
@@ -160,10 +163,13 @@ __parse_one_specmb (const UCHAR_T *format, size_t posn,
/* The width argument might be found in a positional parameter. */
n = read_int (&format);
- if (n > 0 && *format == L_('$'))
+ if (n != 0 && *format == L_('$'))
{
- spec->width_arg = n - 1;
- *max_ref_arg = MAX (*max_ref_arg, n);
+ if (n != -1)
+ {
+ spec->width_arg = n - 1;
+ *max_ref_arg = MAX (*max_ref_arg, n);
+ }
++format; /* Skip '$'. */
}
}
@@ -177,9 +183,13 @@ __parse_one_specmb (const UCHAR_T *format, size_t posn,
}
}
else if (ISDIGIT (*format))
- /* Constant width specification. */
- spec->info.width = read_int (&format);
+ {
+ int n = read_int (&format);
+ /* Constant width specification. */
+ if (n != -1)
+ spec->info.width = n;
+ }
/* Get the precision. */
spec->prec_arg = -1;
/* -1 means none given; 0 means explicit 0. */
@@ -196,10 +206,13 @@ __parse_one_specmb (const UCHAR_T *format, size_t posn,
{
n = read_int (&format);
- if (n > 0 && *format == L_('$'))
+ if (n != 0 && *format == L_('$'))
{
- spec->prec_arg = n - 1;
- *max_ref_arg = MAX (*max_ref_arg, n);
+ if (n != -1)
+ {
+ spec->prec_arg = n - 1;
+ *max_ref_arg = MAX (*max_ref_arg, n);
+ }
++format;
}
}
@@ -213,7 +226,12 @@ __parse_one_specmb (const UCHAR_T *format, size_t posn,
}
}
else if (ISDIGIT (*format))
- spec->info.prec = read_int (&format);
+ {
+ int n = read_int (&format);
+
+ if (n != -1)
+ spec->info.prec = n;
+ }
else
/* "%.?" is treated like "%.0?". */
spec->info.prec = 0;
diff --git a/stdio-common/printf-prs.c b/stdio-common/printf-prs.c
index 68a9c61a13..32f08bac16 100644
--- a/stdio-common/printf-prs.c
+++ b/stdio-common/printf-prs.c
@@ -1,5 +1,4 @@
-/* Copyright (C) 1991, 1992, 1995, 1996, 1999, 2000, 2002-2005, 2007, 2009
- Free Software Foundation, Inc.
+/* Copyright (C) 1991-2012 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
@@ -37,7 +36,7 @@
# define PUT(F, S, N) _IO_sputn (F, S, N)
# define PAD(Padchar) \
if (width > 0) \
- done += INTUSE(_IO_padn) (s, Padchar, width)
+ done += _IO_padn (s, Padchar, width)
#else
# define vfprintf vfwprintf
# define CHAR_T wchar_t
diff --git a/stdio-common/printf_fp.c b/stdio-common/printf_fp.c
index 46f9e3e904..5f3c904254 100644
--- a/stdio-common/printf_fp.c
+++ b/stdio-common/printf_fp.c
@@ -1,5 +1,5 @@
/* Floating point output for `printf'.
- Copyright (C) 1995-2003, 2006-2008, 2011 Free Software Foundation, Inc.
+ Copyright (C) 1995-2012 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Written by Ulrich Drepper <drepper@gnu.ai.mit.edu>, 1995.
@@ -56,7 +56,7 @@
/* This defines make it possible to use the same code for GNU C library and
the GNU I/O library. */
#define PUT(f, s, n) _IO_sputn (f, s, n)
-#define PAD(f, c, n) (wide ? _IO_wpadn (f, c, n) : INTUSE(_IO_padn) (f, c, n))
+#define PAD(f, c, n) (wide ? _IO_wpadn (f, c, n) : _IO_padn (f, c, n))
/* We use this file GNU C library and GNU I/O library. So make
names equal. */
#undef putc
diff --git a/stdio-common/printf_fphex.c b/stdio-common/printf_fphex.c
index 97ed83be98..13491455d1 100644
--- a/stdio-common/printf_fphex.c
+++ b/stdio-common/printf_fphex.c
@@ -1,5 +1,5 @@
/* Print floating point number in hexadecimal notation according to ISO C99.
- Copyright (C) 1997-2002,2004,2006,2011 Free Software Foundation, Inc.
+ Copyright (C) 1997-2012 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
@@ -36,7 +36,7 @@
the GNU I/O library. */
#include <libioP.h>
#define PUT(f, s, n) _IO_sputn (f, s, n)
-#define PAD(f, c, n) (wide ? _IO_wpadn (f, c, n) : INTUSE(_IO_padn) (f, c, n))
+#define PAD(f, c, n) (wide ? _IO_wpadn (f, c, n) : _IO_padn (f, c, n))
/* We use this file GNU C library and GNU I/O library. So make
names equal. */
#undef putc
diff --git a/stdio-common/printf_size.c b/stdio-common/printf_size.c
index 06cbb064ab..9f870065a3 100644
--- a/stdio-common/printf_size.c
+++ b/stdio-common/printf_size.c
@@ -1,5 +1,5 @@
/* Print size value using units for orders of magnitude.
- Copyright (C) 1997-2002, 2004, 2006, 2011 Free Software Foundation, Inc.
+ Copyright (C) 1997-2012 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
Based on a proposal by Larry McVoy <lm@sgi.com>.
@@ -28,7 +28,7 @@
/* This defines make it possible to use the same code for GNU C library and
the GNU I/O library. */
#define PUT(f, s, n) _IO_sputn (f, s, n)
-#define PAD(f, c, n) (wide ? _IO_wpadn (f, c, n) : INTUSE(_IO_padn) (f, c, n))
+#define PAD(f, c, n) (wide ? _IO_wpadn (f, c, n) : _IO_padn (f, c, n))
/* We use this file GNU C library and GNU I/O library. So make
names equal. */
#undef putc
diff --git a/stdio-common/psiginfo.c b/stdio-common/psiginfo.c
index eb758c481a..9701fcd8a7 100644
--- a/stdio-common/psiginfo.c
+++ b/stdio-common/psiginfo.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 2009, 2010 Free Software Foundation, Inc.
+/* Copyright (C) 2009-2012 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
@@ -26,11 +26,6 @@
#include <not-cancel.h>
-/* Defined in sys_siglist.c. */
-extern const char *const _sys_siglist[];
-extern const char *const _sys_siglist_internal[] attribute_hidden;
-
-
#define MF(l) MF1 (l)
#define MF1(l) str_##l
#define C(s1, s2) C1 (s1, s2)
@@ -84,7 +79,7 @@ psiginfo (const siginfo_t *pinfo, const char *s)
const char *desc;
if (pinfo->si_signo >= 0 && pinfo->si_signo < NSIG
- && ((desc = INTUSE(_sys_siglist)[pinfo->si_signo]) != NULL
+ && ((desc = _sys_siglist[pinfo->si_signo]) != NULL
#ifdef SIGRTMIN
|| (pinfo->si_signo >= SIGRTMIN && pinfo->si_signo < SIGRTMAX)
#endif
diff --git a/stdio-common/psignal.c b/stdio-common/psignal.c
index 23026f9b18..309803a978 100644
--- a/stdio-common/psignal.c
+++ b/stdio-common/psignal.c
@@ -1,5 +1,4 @@
-/* Copyright (C) 1991, 1992, 1995, 1996, 1997, 2001, 2002, 2004, 2005, 2009
- Free Software Foundation, Inc.
+/* Copyright (C) 1991-2012 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
@@ -22,12 +21,6 @@
#include <libintl.h>
#include <wchar.h>
-
-/* Defined in sys_siglist.c. */
-extern const char *const _sys_siglist[];
-extern const char *const _sys_siglist_internal[] attribute_hidden;
-
-
/* Print out on stderr a line consisting of the test in S, a colon, a space,
a message describing the meaning of the signal number SIG and a newline.
If S is NULL or "", the colon and space are omitted. */
@@ -41,7 +34,7 @@ psignal (int sig, const char *s)
else
colon = ": ";
- if (sig >= 0 && sig < NSIG && (desc = INTUSE(_sys_siglist)[sig]) != NULL)
+ if (sig >= 0 && sig < NSIG && (desc = _sys_siglist[sig]) != NULL)
(void) __fxprintf (NULL, "%s%s%s\n", s, colon, _(desc));
else
{
diff --git a/stdio-common/putw.c b/stdio-common/putw.c
index ecfdcd8b6d..09902bfc63 100644
--- a/stdio-common/putw.c
+++ b/stdio-common/putw.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 1991, 1997, 1998, 2002, 2004 Free Software Foundation, Inc.
+/* Copyright (C) 1991-2012 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
@@ -17,7 +17,7 @@
#include <stdio.h>
#include <libio/iolibio.h>
-#define fwrite(p, n, m, s) INTUSE(_IO_fwrite) (p, n, m, s)
+#define fwrite(p, n, m, s) _IO_fwrite (p, n, m, s)
/* Write the word (int) W to STREAM. */
int
diff --git a/stdio-common/scanf.c b/stdio-common/scanf.c
index e7ef18dcb7..0a8eecf01f 100644
--- a/stdio-common/scanf.c
+++ b/stdio-common/scanf.c
@@ -1,5 +1,4 @@
-/* Copyright (C) 1991, 1995, 1996, 1997, 2002, 2004, 2006
- Free Software Foundation, Inc.
+/* Copyright (C) 1991-2012 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
@@ -31,7 +30,7 @@ __scanf (const char *format, ...)
int done;
va_start (arg, format);
- done = INTUSE(_IO_vfscanf) (stdin, format, arg, NULL);
+ done = _IO_vfscanf (stdin, format, arg, NULL);
va_end (arg);
return done;
diff --git a/stdio-common/sprintf.c b/stdio-common/sprintf.c
index 817844a442..00be3bdcc0 100644
--- a/stdio-common/sprintf.c
+++ b/stdio-common/sprintf.c
@@ -1,5 +1,4 @@
-/* Copyright (C) 1991, 1995, 1997, 1998, 2002, 2004, 2006
- Free Software Foundation, Inc.
+/* Copyright (C) 1991-2012 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
@@ -19,7 +18,7 @@
#include <stdarg.h>
#include <stdio.h>
#include <libioP.h>
-#define vsprintf(s, f, a) INTUSE(_IO_vsprintf) (s, f, a)
+#define vsprintf(s, f, a) _IO_vsprintf (s, f, a)
/* Write formatted output into S, according to the format string FORMAT. */
/* VARARGS2 */
diff --git a/stdio-common/tmpfile.c b/stdio-common/tmpfile.c
index 113999b184..c6da9acb0b 100644
--- a/stdio-common/tmpfile.c
+++ b/stdio-common/tmpfile.c
@@ -1,6 +1,5 @@
/* Open a stdio stream on an anonymous temporary file. Generic/POSIX version.
- Copyright (C) 1991,1993,1996-2000,2002,2003,2007,2009,2011
- Free Software Foundation, Inc.
+ Copyright (C) 1991-2012 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
@@ -22,7 +21,7 @@
#include <unistd.h>
#include <iolibio.h>
-#define __fdopen INTUSE(_IO_fdopen)
+#define __fdopen _IO_fdopen
#ifndef tmpfile
# define tmpfile __new_tmpfile
#endif
diff --git a/stdio-common/tst-sprintf3.c b/stdio-common/tst-sprintf3.c
new file mode 100644
index 0000000000..d56f247310
--- /dev/null
+++ b/stdio-common/tst-sprintf3.c
@@ -0,0 +1,90 @@
+/* Copyright (C) 2012 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 Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, see
+ <http://www.gnu.org/licenses/>. */
+
+/* Test bug #13941. */
+
+#include <float.h>
+#include <math.h>
+#include <stdio.h>
+#include <string.h>
+
+int
+main (void)
+{
+#if LDBL_MANT_DIG >= 106
+ volatile union { long double l; long long x[2]; } u, v;
+ char buf[64];
+#endif
+ int result = 0;
+
+#if LDBL_MANT_DIG == 106 || LDBL_MANT_DIG == 113
+# define COMPARE_LDBL(u, v) \
+ ((u).l == (v).l && (u).x[0] == (v).x[0] && (u).x[1] == (v).x[1])
+#else
+# define COMPARE_LDBL(u, v) ((u).l == (v).l)
+#endif
+
+#define TEST(val) \
+ do \
+ { \
+ u.l = (val); \
+ snprintf (buf, sizeof buf, "%.30LgL", u.l); \
+ if (strcmp (buf, #val) != 0) \
+ { \
+ printf ("Error on line %d: %s != %s\n", __LINE__, buf, #val); \
+ result = 1; \
+ } \
+ if (sscanf (#val, "%Lg", &v.l) != 1 || !COMPARE_LDBL (u, v)) \
+ { \
+ printf ("Error sscanf on line %d: %.30Lg != %.30Lg\n", __LINE__, \
+ u.l, v.l); \
+ result = 1; \
+ } \
+ /* printf ("%s %Lg %016Lx %016Lx\n", #val, u.l, u.x[0], u.x[1]); */ \
+ } \
+ while (0)
+
+#if LDBL_MANT_DIG >= 106
+# if LDBL_MANT_DIG == 106
+ TEST (2.22507385850719347803989925739e-308L);
+ TEST (2.22507385850719397210554509863e-308L);
+ TEST (2.22507385850720088902458687609e-308L);
+# endif
+ TEST (2.22507385850720138309023271733e-308L);
+ TEST (2.22507385850720187715587855858e-308L);
+ TEST (2.2250738585074419930597574044e-308L);
+ TEST (4.45014771701440227211481959342e-308L);
+ TEST (4.45014771701440276618046543466e-308L);
+ TEST (4.45014771701440375431175711716e-308L);
+ TEST (4.45014771701440474244304879965e-308L);
+ TEST (7.12023634722304600689881138745e-307L);
+ TEST (1.13923781555569064960474854133e-305L);
+ TEST (1.13777777777777776389998996996L);
+ TEST (1.13777777777777765287768750745L);
+ TEST (20988295479420645138.2044444444L);
+ TEST (20988295479420643090.2044444444L);
+ TEST (2.14668699894294423266045294316e-292L);
+# if LDBL_MANT_DIG == 106
+ TEST (-2.35993711055432139266626434123e-292L);
+ TEST (6.26323524637968345414769634658e-302L);
+ TEST (1.49327164802066885331814201989e-308L);
+ TEST (3.71834550652787023640837473722e-308L);
+ TEST (9.51896449671134907001349268087e-306L);
+# endif
+#endif
+ return result;
+}
diff --git a/stdio-common/vfprintf.c b/stdio-common/vfprintf.c
index 1e904833a3..d569034253 100644
--- a/stdio-common/vfprintf.c
+++ b/stdio-common/vfprintf.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 1991-2011, 2012 Free Software Foundation, Inc.
+/* Copyright (C) 1991-2012 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
@@ -67,10 +67,10 @@
do { \
unsigned int _val = val; \
assert ((unsigned int) done < (unsigned int) INT_MAX); \
- if (__builtin_expect ((unsigned int) INT_MAX - (unsigned int) done \
- < _val, 0)) \
+ if (__builtin_expect (INT_MAX - done < _val, 0)) \
{ \
done = -1; \
+ __set_errno (EOVERFLOW); \
goto all_done; \
} \
done += _val; \
@@ -88,7 +88,7 @@
# define PUT(F, S, N) _IO_sputn ((F), (S), (N))
# define PAD(Padchar) \
if (width > 0) \
- done_add (INTUSE(_IO_padn) (s, (Padchar), width))
+ done_add (_IO_padn (s, (Padchar), width))
# define PUTC(C, F) _IO_putc_unlocked (C, F)
# define ORIENT if (_IO_vtable_offset (s) == 0 && _IO_fwide (s, -1) != -1)\
return -1
@@ -141,12 +141,17 @@
do \
{ \
assert ((size_t) done <= (size_t) INT_MAX); \
- if ((size_t) PUT (s, (String), (Len)) != (size_t) (Len) \
- || (size_t) INT_MAX - (size_t) done < (size_t) (Len)) \
+ if ((size_t) PUT (s, (String), (Len)) != (size_t) (Len)) \
{ \
done = -1; \
goto all_done; \
} \
+ if (__builtin_expect (INT_MAX - done < (Len), 0)) \
+ { \
+ done = -1; \
+ __set_errno (EOVERFLOW); \
+ goto all_done; \
+ } \
done += (Len); \
} \
while (0)
@@ -1435,10 +1440,21 @@ vfprintf (FILE *s, const CHAR_T *format, va_list ap)
const UCHAR_T *tmp; /* Temporary value. */
tmp = ++f;
- if (ISDIGIT (*tmp) && read_int (&tmp) && *tmp == L_('$'))
- /* The width comes from a positional parameter. */
- goto do_positional;
+ if (ISDIGIT (*tmp))
+ {
+ int pos = read_int (&tmp);
+ if (pos == -1)
+ {
+ __set_errno (EOVERFLOW);
+ done = -1;
+ goto all_done;
+ }
+
+ if (pos && *tmp == L_('$'))
+ /* The width comes from a positional parameter. */
+ goto do_positional;
+ }
width = va_arg (ap, int);
/* Negative width means left justified. */
@@ -1449,9 +1465,9 @@ vfprintf (FILE *s, const CHAR_T *format, va_list ap)
left = 1;
}
- if (__builtin_expect (width >= (size_t) -1 / sizeof (CHAR_T) - 32, 0))
+ if (__builtin_expect (width >= INT_MAX / sizeof (CHAR_T) - 32, 0))
{
- __set_errno (ERANGE);
+ __set_errno (EOVERFLOW);
done = -1;
goto all_done;
}
@@ -1481,9 +1497,10 @@ vfprintf (FILE *s, const CHAR_T *format, va_list ap)
LABEL (width):
width = read_int (&f);
- if (__builtin_expect (width >= (size_t) -1 / sizeof (CHAR_T) - 32, 0))
+ if (__builtin_expect (width == -1
+ || width >= INT_MAX / sizeof (CHAR_T) - 32, 0))
{
- __set_errno (ERANGE);
+ __set_errno (EOVERFLOW);
done = -1;
goto all_done;
}
@@ -1518,10 +1535,21 @@ vfprintf (FILE *s, const CHAR_T *format, va_list ap)
const UCHAR_T *tmp; /* Temporary value. */
tmp = ++f;
- if (ISDIGIT (*tmp) && read_int (&tmp) > 0 && *tmp == L_('$'))
- /* The precision comes from a positional parameter. */
- goto do_positional;
+ if (ISDIGIT (*tmp))
+ {
+ int pos = read_int (&tmp);
+
+ if (pos == -1)
+ {
+ __set_errno (EOVERFLOW);
+ done = -1;
+ goto all_done;
+ }
+ if (pos && *tmp == L_('$'))
+ /* The precision comes from a positional parameter. */
+ goto do_positional;
+ }
prec = va_arg (ap, int);
/* If the precision is negative the precision is omitted. */
@@ -1529,15 +1557,26 @@ vfprintf (FILE *s, const CHAR_T *format, va_list ap)
prec = -1;
}
else if (ISDIGIT (*f))
- prec = read_int (&f);
+ {
+ prec = read_int (&f);
+
+ /* The precision was specified in this case as an extremely
+ large positive value. */
+ if (prec == -1)
+ {
+ __set_errno (EOVERFLOW);
+ done = -1;
+ goto all_done;
+ }
+ }
else
prec = 0;
if (prec > width
&& prec > sizeof (work_buffer) / sizeof (work_buffer[0]) - 32)
{
- if (__builtin_expect (prec >= (size_t) -1 / sizeof (CHAR_T) - 32, 0))
+ if (__builtin_expect (prec >= INT_MAX / sizeof (CHAR_T) - 32, 0))
{
- __set_errno (ERANGE);
+ __set_errno (EOVERFLOW);
done = -1;
goto all_done;
}
@@ -1710,9 +1749,9 @@ do_positional:
+ sizeof (*args_type));
/* Check for potential integer overflow. */
- if (__builtin_expect (nargs > SIZE_MAX / bytes_per_arg, 0))
+ if (__builtin_expect (nargs > INT_MAX / bytes_per_arg, 0))
{
- __set_errno (ERANGE);
+ __set_errno (EOVERFLOW);
done = -1;
goto all_done;
}
@@ -2188,18 +2227,18 @@ _IO_helper_overflow (_IO_FILE *s, int c)
static const struct _IO_jump_t _IO_helper_jumps =
{
JUMP_INIT_DUMMY,
- JUMP_INIT (finish, INTUSE(_IO_wdefault_finish)),
+ JUMP_INIT (finish, _IO_wdefault_finish),
JUMP_INIT (overflow, _IO_helper_overflow),
JUMP_INIT (underflow, _IO_default_underflow),
- JUMP_INIT (uflow, INTUSE(_IO_default_uflow)),
- JUMP_INIT (pbackfail, (_IO_pbackfail_t) INTUSE(_IO_wdefault_pbackfail)),
- JUMP_INIT (xsputn, INTUSE(_IO_wdefault_xsputn)),
- JUMP_INIT (xsgetn, INTUSE(_IO_wdefault_xsgetn)),
+ JUMP_INIT (uflow, _IO_default_uflow),
+ JUMP_INIT (pbackfail, (_IO_pbackfail_t) _IO_wdefault_pbackfail),
+ JUMP_INIT (xsputn, _IO_wdefault_xsputn),
+ JUMP_INIT (xsgetn, _IO_wdefault_xsgetn),
JUMP_INIT (seekoff, _IO_default_seekoff),
JUMP_INIT (seekpos, _IO_default_seekpos),
JUMP_INIT (setbuf, _IO_default_setbuf),
JUMP_INIT (sync, _IO_default_sync),
- JUMP_INIT (doallocate, INTUSE(_IO_wdefault_doallocate)),
+ JUMP_INIT (doallocate, _IO_wdefault_doallocate),
JUMP_INIT (read, _IO_default_read),
JUMP_INIT (write, _IO_default_write),
JUMP_INIT (seek, _IO_default_seek),
@@ -2210,18 +2249,18 @@ static const struct _IO_jump_t _IO_helper_jumps =
static const struct _IO_jump_t _IO_helper_jumps =
{
JUMP_INIT_DUMMY,
- JUMP_INIT (finish, INTUSE(_IO_default_finish)),
+ JUMP_INIT (finish, _IO_default_finish),
JUMP_INIT (overflow, _IO_helper_overflow),
JUMP_INIT (underflow, _IO_default_underflow),
- JUMP_INIT (uflow, INTUSE(_IO_default_uflow)),
- JUMP_INIT (pbackfail, INTUSE(_IO_default_pbackfail)),
- JUMP_INIT (xsputn, INTUSE(_IO_default_xsputn)),
- JUMP_INIT (xsgetn, INTUSE(_IO_default_xsgetn)),
+ JUMP_INIT (uflow, _IO_default_uflow),
+ JUMP_INIT (pbackfail, _IO_default_pbackfail),
+ JUMP_INIT (xsputn, _IO_default_xsputn),
+ JUMP_INIT (xsgetn, _IO_default_xsgetn),
JUMP_INIT (seekoff, _IO_default_seekoff),
JUMP_INIT (seekpos, _IO_default_seekpos),
JUMP_INIT (setbuf, _IO_default_setbuf),
JUMP_INIT (sync, _IO_default_sync),
- JUMP_INIT (doallocate, INTUSE(_IO_default_doallocate)),
+ JUMP_INIT (doallocate, _IO_default_doallocate),
JUMP_INIT (read, _IO_default_read),
JUMP_INIT (write, _IO_default_write),
JUMP_INIT (seek, _IO_default_seek),
@@ -2267,7 +2306,7 @@ buffered_vfprintf (register _IO_FILE *s, const CHAR_T *format,
/* Now print to helper instead. */
#ifndef COMPILE_WPRINTF
- result = INTUSE(_IO_vfprintf) (hp, format, args);
+ result = _IO_vfprintf (hp, format, args);
#else
result = vfprintf (hp, format, args);
#endif
@@ -2308,4 +2347,5 @@ ldbl_weak_alias (_IO_vfwprintf, vfwprintf);
ldbl_strong_alias (_IO_vfprintf_internal, vfprintf);
ldbl_hidden_def (_IO_vfprintf_internal, vfprintf)
ldbl_strong_alias (_IO_vfprintf_internal, _IO_vfprintf);
+ldbl_hidden_def (_IO_vfprintf_internal, _IO_vfprintf)
#endif
diff --git a/stdio-common/vfscanf.c b/stdio-common/vfscanf.c
index ae251556e3..23a8ac7694 100644
--- a/stdio-common/vfscanf.c
+++ b/stdio-common/vfscanf.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 1991-2007, 2010, 2011, 2012 Free Software Foundation, Inc.
+/* Copyright (C) 1991-2012 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
@@ -77,9 +77,9 @@
#ifdef COMPILE_WSCANF
# define ungetc(c, s) ((void) (c == WEOF \
|| (--read_in, \
- INTUSE(_IO_sputbackwc) (s, c))))
+ _IO_sputbackwc (s, c))))
# define ungetc_not_eof(c, s) ((void) (--read_in, \
- INTUSE(_IO_sputbackwc) (s, c)))
+ _IO_sputbackwc (s, c)))
# define inchar() (c == WEOF ? ((errno = inchar_errno), WEOF) \
: ((c = _IO_getwc_unlocked (s)), \
(void) (c != WEOF \
@@ -109,9 +109,9 @@
#else
# define ungetc(c, s) ((void) ((int) c == EOF \
|| (--read_in, \
- INTUSE(_IO_sputbackc) (s, (unsigned char) c))))
+ _IO_sputbackc (s, (unsigned char) c))))
# define ungetc_not_eof(c, s) ((void) (--read_in, \
- INTUSE(_IO_sputbackc) (s, (unsigned char) c)))
+ _IO_sputbackc (s, (unsigned char) c)))
# define inchar() (c == EOF ? ((errno = inchar_errno), EOF) \
: ((c = _IO_getc_unlocked (s)), \
(void) (c != EOF \
@@ -2941,6 +2941,7 @@ ___vfscanf (FILE *s, const char *format, va_list argptr)
return _IO_vfscanf_internal (s, format, argptr, NULL);
}
ldbl_strong_alias (_IO_vfscanf_internal, _IO_vfscanf)
+ldbl_hidden_def (_IO_vfscanf_internal, _IO_vfscanf)
ldbl_strong_alias (___vfscanf, __vfscanf)
ldbl_hidden_def (___vfscanf, __vfscanf)
ldbl_weak_alias (___vfscanf, vfscanf)