LD: Add new %pU vfinfo format for printing linker script name
authorJozef Lawrynowicz <jozef.l@mittosystems.com>
Fri, 28 Aug 2020 12:56:53 +0000 (13:56 +0100)
committerJozef Lawrynowicz <jozef.l@mittosystems.com>
Fri, 28 Aug 2020 13:00:54 +0000 (14:00 +0100)
The %pT vfinfo format prints the linker script name with a line number,
however sometimes it may be necessary to print the linker script name
without any associated line number.

ld/ChangeLog:

* ldmisc.c (vfinfo): Support new "%pU" format specifier.

ld/ChangeLog
ld/ldmisc.c

index 16274e8327eba70386f536239687bfbebe92dd69..e2ca7f0df3da85843de6da8d099e54e03d3378cc 100644 (file)
@@ -1,3 +1,7 @@
+2020-08-28  Jozef Lawrynowicz  <jozef.l@mittosystems.com>
+
+       * ldmisc.c (vfinfo): Support new "%pU" format specifier.
+
 2020-08-28  Cooper Qu  <cooper.qu@linux.alibaba.com>
 
        * emulparams/cskyelf.sh: Support attribute section.
index 418e8d5c6eda8a3a570b90e39ce60eacd94939d4..9074a8333c86e4d80bd2abecd7662ce59d4836e4 100644 (file)
@@ -59,6 +59,7 @@
  %pR info about a relent
  %pS print script file and linenumber from etree_type.
  %pT symbol name
+ %pU print script file without linenumber from etree_type.
  %s arbitrary string, like printf
  %u integer, like printf
  %v hex bfd_vma, no leading zeros
@@ -483,9 +484,9 @@ vfinfo (FILE *fp, const char *fmt, va_list ap, bfd_boolean is_warning)
                          relent->addend,
                          relent->howto->name);
                }
-             else if (*fmt == 'S')
+             else if (*fmt == 'S' || *fmt == 'U')
                {
-                 /* Print script file and linenumber.  */
+                 /* Print script file and perhaps the associated linenumber.  */
                  etree_type node;
                  etree_type *tp = (etree_type *) args[arg_no].p;
 
@@ -497,8 +498,10 @@ vfinfo (FILE *fp, const char *fmt, va_list ap, bfd_boolean is_warning)
                      tp->type.filename = ldlex_filename ();
                      tp->type.lineno = lineno;
                    }
-                 if (tp->type.filename != NULL)
+                 if (tp->type.filename != NULL && fmt[-1] == 'S')
                    fprintf (fp, "%s:%u", tp->type.filename, tp->type.lineno);
+                 else if (tp->type.filename != NULL && fmt[-1] == 'U')
+                   fprintf (fp, "%s", tp->type.filename);
                }
              else if (*fmt == 'T')
                {