Fix up long double fphex.

This commit is contained in:
Marek Polacek 2012-03-06 22:05:56 +01:00
parent e92584001a
commit a53b7a4e4b
6 changed files with 53 additions and 5 deletions

View File

@ -1,3 +1,11 @@
2012-03-06 Marek Polacek <polacek@redhat.com>
[BZ #13726]
* sysdeps/ieee754/ldbl-96/printf_fphex.c: Adjust position of wnumstr.
* sysdeps/x86_64/fpu/printf_fphex.c: Likewise.
* stdio-common/Makefile (tests): Add tst-long-dbl-fphex.
* stdio-common/tst-long-dbl-fphex.c: New file.
2012-03-06 David S. Miller <davem@davemloft.net>
* sysdeps/unix/sysv/linux/sparc/sparc64/get_clockfreq.c

4
NEWS
View File

@ -13,8 +13,8 @@ Version 2.16
5077, 5461, 5805, 5993, 6884, 6907, 9739, 9902, 10110, 10135, 10140,
10210, 11174, 11322, 11365, 11494, 12047, 13058, 13525, 13526, 13527,
13528, 13529, 13530, 13531, 13532, 13533, 13547, 13551, 13552, 13553,
13555, 13559, 13583, 13618, 13637, 13656, 13695, 13704, 13706, 13738,
13786, 13792
13555, 13559, 13583, 13618, 13637, 13656, 13695, 13704, 13706, 13726,
13738, 13786, 13792
* ISO C11 support:

View File

@ -60,7 +60,7 @@ tests := tstscanf test_rdwr test-popen tstgetln test-fseek \
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
bug-vfprintf-nargs tst-long-dbl-fphex
test-srcs = tst-unbputc tst-printf

View File

@ -0,0 +1,38 @@
/* This file is part of the GNU C Library.
Copyright (C) 2012 Free Software Foundation, Inc.
Contributed by Marek Polacek <polacek@redhat.com>, 2012.
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/>. */
#include <wchar.h>
/* Prototype for our test function. */
static int do_test (void);
static int
do_test (void)
{
const long double x = 24.5;
wchar_t a[16 * sizeof (wchar_t)];
swprintf (a, 16 * sizeof (wchar_t), L"%La\n", x);
wchar_t A[16 * sizeof (wchar_t)];
swprintf (A, 16 * sizeof (wchar_t), L"%LA\n", x);
return (wmemcmp (a, L"0xc.4p+1", 8) != 0
|| wmemcmp (A, L"0XC.4P+1", 8) != 0);
}
#define TEST_FUNCTION do_test ()
#include "../test-skeleton.c"

View File

@ -1,5 +1,5 @@
/* Print floating point number in hexadecimal notation according to ISO C99.
Copyright (C) 1997, 1998, 1999, 2000, 2005 Free Software Foundation, Inc.
Copyright (C) 1997-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
@ -58,6 +58,7 @@ do { \
\
/* We use a full nibble for the leading digit. */ \
leading = *numstr++; \
wnumstr++; \
\
/* We have 3 bits from the mantissa in the leading nibble. \
Therefore we are here using `IEEE854_LONG_DOUBLE_BIAS + 3'. */ \

View File

@ -1,5 +1,5 @@
/* Print floating point number in hexadecimal notation according to ISO C99.
Copyright (C) 1997,1998,1999,2000,2001,2005 Free Software Foundation, Inc.
Copyright (C) 1997-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
@ -57,6 +57,7 @@ do { \
\
/* We use a full nibble for the leading digit. */ \
leading = *numstr++; \
wnumstr++; \
\
/* We have 3 bits from the mantissa in the leading nibble. \
Therefore we are here using `IEEE854_LONG_DOUBLE_BIAS + 3'. */ \