diff options
author | Alan Modra <amodra@gmail.com> | 2017-07-07 10:19:08 +0930 |
---|---|---|
committer | Alan Modra <amodra@gmail.com> | 2017-07-07 10:35:31 +0930 |
commit | 1cf9552bf1c77df8850de01d48e1057a27415314 (patch) | |
tree | 06eeab93031207a17f240a6b7c13988f898b2b49 /bfd | |
parent | 9691e722c654054cbf2a6992097c730b8cc50435 (diff) | |
download | gdb-1cf9552bf1c77df8850de01d48e1057a27415314.zip gdb-1cf9552bf1c77df8850de01d48e1057a27415314.tar.gz gdb-1cf9552bf1c77df8850de01d48e1057a27415314.tar.bz2 |
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.
Diffstat (limited to 'bfd')
-rw-r--r-- | bfd/ChangeLog | 5 | ||||
-rw-r--r-- | bfd/bfd.c | 27 |
2 files changed, 20 insertions, 12 deletions
diff --git a/bfd/ChangeLog b/bfd/ChangeLog index eda1e3e..4a3a3ac 100644 --- a/bfd/ChangeLog +++ b/bfd/ChangeLog @@ -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 @@ -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. */ |