Bug in 64-bit printf on PPC
Andreas Jaeger
aj@arthur.rhein-neckar.de
Thu Apr 1 00:00:00 GMT 1999
>>>>> Franz Sirl writes:
Franz> This should probably be added to the testsuite.
Ok, I've copied tiformat and added your examples. The appended
program tllformat.c should show the same bugs as your program - and
can easily be added to glibc.
Andreas
1999-02-14 Andreas Jaeger <aj@arthur.rhein-neckar.de>
* stdio-common/Makefile (tests): tllformat added.
* stdio-common/tllformat.c: New program, based on tiformat.c with
examples from Franz Sirl <Franz.Sirl-kernel@lauterbach.com>.
Program tllformat.c:
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
#include <stdio.h>
#include <string.h>
/* The original file was tiformat.c and it has been changed for long long tests. */
typedef struct {
int line;
long long value;
const char *result;
const char *format_string;
} sprint_int_type;
sprint_int_type sprint_ints[] =
{
{__LINE__, 0x00000000ULL, "0", "%llx"},
{__LINE__, 0xffff00000000208bULL, "ffff00000000208b", "%llx"},
{__LINE__, 0xffff00000000208bULL, "18446462598732849291", "%llu"},
{__LINE__, 18446462598732849291ULL, "ffff00000000208b", "%llx"},
{__LINE__, 18446462598732849291ULL, "18446462598732849291", "%llu"},
{__LINE__, 18359476226655002763ULL, "fec9f65b0000208b", "%llx"},
{__LINE__, 18359476226655002763ULL, "18359476226655002763", "%llu"},
{0},
};
int
main(void)
{
int errcount = 0;
int testcount = 0;
#define BSIZE 1024
char buffer[BSIZE];
sprint_int_type *iptr;
for (iptr = sprint_ints; iptr->line; iptr++) {
sprintf(buffer, iptr->format_string, iptr->value);
if (strcmp(buffer, iptr->result) != 0) {
errcount++;
printf(
"Error in line %d using \"%s\". Result is \"%s\"; should be: \"%s\".\n",
iptr->line, iptr->format_string, buffer, iptr->result);
}
testcount++;
}
if (errcount == 0) {
printf ("Encountered no errors in %d tests.\n", testcount);
return 0;
}
else {
printf ("Encountered %d errors in %d tests.\n",
errcount, testcount);
return 1;
}
}
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
--- stdio-common/Makefile.~1~ Sun Feb 7 12:29:12 1999
+++ stdio-common/Makefile Sun Feb 14 21:53:27 1999
@@ -47,7 +47,7 @@
temptest tst-fileno test-fwrite tst-ungetc tst-ferror \
xbug errnobug \
bug1 bug2 bug3 bug4 bug5 bug6 bug7 bug8 bug9 bug10 bug11 bug12 \
- tfformat tiformat tstdiomisc tst-printfsz tst-wc-printf \
+ tfformat tiformat tllformat tstdiomisc tst-printfsz tst-wc-printf \
scanf1 scanf2 scanf3 scanf4 scanf5 scanf7 scanf8 scanf9 scanf10 \
scanf12 tst-tmpnam
--
Andreas Jaeger aj@arthur.rhein-neckar.de jaeger@informatik.uni-kl.de
for pgp-key finger ajaeger@aixd1.rhrk.uni-kl.de
More information about the Libc-alpha
mailing list