From c386bf4df5c4a6548278c5a03fc6a790da2e2bd4 Mon Sep 17 00:00:00 2001 From: Nick Clifton Date: Thu, 27 Apr 2023 13:02:00 +0100 Subject: [PATCH] Add support for %x and %lx formats to the linker's vinfo() function. --- ld/ChangeLog | 4 ++++ ld/ldmisc.c | 18 +++++++++++++++++- 2 files changed, 21 insertions(+), 1 deletion(-) diff --git a/ld/ChangeLog b/ld/ChangeLog index c4de3276784..f941b138c17 100644 --- a/ld/ChangeLog +++ b/ld/ChangeLog @@ -1,3 +1,7 @@ +2023-04-27 Nick Clifton + + * ldmisc.c (vfinfo): Add support for %x and %lx. + 2023-04-18 mengqinggang * testsuite/ld-loongarch-elf/macro_op.d: Regenerated. diff --git a/ld/ldmisc.c b/ld/ldmisc.c index 5d7012e50b1..ef46ad665e9 100644 --- a/ld/ldmisc.c +++ b/ld/ldmisc.c @@ -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: -- 2.30.2