Add support for %x and %lx formats to the linker's vinfo() function.
authorNick Clifton <nickc@redhat.com>
Thu, 27 Apr 2023 12:02:00 +0000 (13:02 +0100)
committerNick Clifton <nickc@redhat.com>
Thu, 27 Apr 2023 12:02:00 +0000 (13:02 +0100)
ld/ChangeLog
ld/ldmisc.c

index c4de32767843e9f7a38461e3529cf604055dc672..f941b138c174784780422a6eaa866dad37819cdf 100644 (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.
index 5d7012e50b12da9a54d3b891a86d3f6a8997e81c..ef46ad665e99e54c080856a700e53b01a2d5775e 100644 (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: