Add support for %x and %lx formats to the linker's vinfo() function.

This commit is contained in:
Nick Clifton 2023-04-27 13:02:00 +01:00
parent 0bda45b270
commit c386bf4df5
2 changed files with 21 additions and 1 deletions

View File

@ -1,3 +1,7 @@
2023-04-27 Nick Clifton <nickc@redhat.com>
* ldmisc.c (vfinfo): Add support for %x and %lx.
2023-04-18 mengqinggang <mengqinggang@loongson.cn>
* testsuite/ld-loongarch-elf/macro_op.d: Regenerated.

View File

@ -52,6 +52,7 @@
%d integer, like printf
%ld long, like printf
%lu unsigned long, like printf
%lx unsigned long, like printf
%p native (host) void* pointer, like printf
%pA section name from a section
%pB filename from a bfd
@ -63,6 +64,7 @@
%s arbitrary string, like printf
%u integer, like printf
%v hex bfd_vma, no leading zeros
%x integer, like printf
*/
void
@ -152,11 +154,12 @@ vfinfo (FILE *fp, const char *fmt, va_list ap, bool is_warning)
case 'd':
case 'u':
case 'x':
arg_type = Int;
break;
case 'l':
if (*scan == 'd' || *scan == 'u')
if (*scan == 'd' || *scan == 'u' || *scan == 'x')
{
++scan;
arg_type = Long;
@ -544,6 +547,12 @@ vfinfo (FILE *fp, const char *fmt, va_list ap, bool is_warning)
++arg_count;
break;
case 'x':
/* unsigned integer, like printf */
fprintf (fp, "%x", args[arg_no].i);
++arg_count;
break;
case 'l':
if (*fmt == 'd')
{
@ -559,6 +568,13 @@ vfinfo (FILE *fp, const char *fmt, va_list ap, bool is_warning)
++fmt;
break;
}
else if (*fmt == 'x')
{
fprintf (fp, "%lx", args[arg_no].l);
++arg_count;
++fmt;
break;
}
/* Fallthru */
default: