Another _doprnt fix for %L handling
* bfd.c (_doprnt): Replace "L" with "ll" when printing bfd_vma as long long. Move code replacing "ll" with "I64", and simplify.
This commit is contained in:
parent
9691e722c6
commit
1cf9552bf1
@ -1,3 +1,8 @@
|
||||
2017-07-07 Alan Modra <amodra@gmail.com>
|
||||
|
||||
* bfd.c (_doprnt): Replace "L" with "ll" when printing bfd_vma
|
||||
as long long. Move code replacing "ll" with "I64", and simplify.
|
||||
|
||||
2017-07-06 H.J. Lu <hongjiu.lu@intel.com>
|
||||
|
||||
* bfd.c (_doprnt): Convert 'L' to 'l' when setting wide_width
|
||||
|
27
bfd/bfd.c
27
bfd/bfd.c
@ -725,11 +725,17 @@ _doprnt (FILE *stream, const char *format, va_list ap)
|
||||
{
|
||||
/* L modifier for bfd_vma or bfd_size_type may be
|
||||
either long long or long. */
|
||||
if ((BFD_ARCH_SIZE < 64 || BFD_HOST_64BIT_LONG)
|
||||
&& sptr[-2] == 'L')
|
||||
if (sptr[-2] == 'L')
|
||||
{
|
||||
wide_width = 1;
|
||||
sptr[-2] = 'l';
|
||||
if (BFD_ARCH_SIZE < 64 || BFD_HOST_64BIT_LONG)
|
||||
wide_width = 1;
|
||||
else
|
||||
{
|
||||
sptr[-1] = 'l';
|
||||
*sptr++ = ptr[-1];
|
||||
*sptr = '\0';
|
||||
}
|
||||
}
|
||||
|
||||
switch (wide_width)
|
||||
@ -742,17 +748,14 @@ _doprnt (FILE *stream, const char *format, va_list ap)
|
||||
break;
|
||||
case 2:
|
||||
default:
|
||||
#if defined (__GNUC__) || defined (HAVE_LONG_LONG)
|
||||
# if defined (__MSVCRT__)
|
||||
sptr--;
|
||||
while (sptr[-1] == 'L' || sptr[-1] == 'l')
|
||||
sptr--;
|
||||
*sptr++ = 'I';
|
||||
*sptr++ = '6';
|
||||
*sptr++ = '4';
|
||||
#if defined (__MSVCRT__)
|
||||
sptr[-3] = 'I';
|
||||
sptr[-2] = '6';
|
||||
sptr[-1] = '4';
|
||||
*sptr++ = ptr[-1];
|
||||
*sptr = '\0';
|
||||
# endif
|
||||
#endif
|
||||
#if defined (__GNUC__) || defined (HAVE_LONG_LONG)
|
||||
PRINT_TYPE (long long);
|
||||
#else
|
||||
/* Fake it and hope for the best. */
|
||||
|
Loading…
Reference in New Issue
Block a user