unofficial mirror of libc-alpha@sourceware.org
 help / color / mirror / Atom feed
From: DJ Delorie <dj@redhat.com>
To: Joseph Myers <joseph@codesourcery.com>
Cc: libc-alpha@sourceware.org
Subject: Re: [patch] ldconfig: trace origin paths with -v
Date: Wed, 19 Feb 2020 15:45:06 -0500	[thread overview]
Message-ID: <xnd0aagvcd.fsf@greed.delorie.com> (raw)
In-Reply-To: <alpine.DEB.2.21.2002191808220.18335@digraph.polyomino.org.uk> (message from Joseph Myers on Wed, 19 Feb 2020 18:09:42 +0000)

Joseph Myers <joseph@codesourcery.com> writes:
> This looks like it's a message, for human readers rather than for 

There were two; the other was just "(from %s:%d)".  Marked.  Anything
else?  I note that the "(hwcap ...)" string is NOT marked up but that
may be... well, more correct than not.

From 7a59c4ddc48db342140e65a80bc5a00560d380d2 Mon Sep 17 00:00:00 2001
From: DJ Delorie <dj@redhat.com>
Date: Wed, 19 Feb 2020 12:31:38 -0500
Subject: ldconfig: trace origin paths with -v

With this patch, -v turns on a "from" trace for each directory
searched, that tells you WHY that directory is being searched -
is it a builtin, from the command line, or from some config file?

diff --git a/elf/ldconfig.c b/elf/ldconfig.c
index 681ed78496..71178d416b 100644
--- a/elf/ldconfig.c
+++ b/elf/ldconfig.c
@@ -79,6 +79,8 @@ struct dir_entry
   int flag;
   ino64_t ino;
   dev_t dev;
+  const char *from_file;
+  int from_line;
   struct dir_entry *next;
 };
 
@@ -344,7 +346,12 @@ add_single_dir (struct dir_entry *entry, int verbose)
       if (ptr->ino == entry->ino && ptr->dev == entry->dev)
 	{
 	  if (opt_verbose && verbose)
-	    error (0, 0, _("Path `%s' given more than once"), entry->path);
+	    {
+	      error (0, 0, _("Path `%s' given more than once"), entry->path);
+	      fprintf (stderr, _("(from %s:%d and %s:%d)\n"),
+		       entry->from_file, entry->from_line,
+		       ptr->from_file, ptr->from_line);
+	    }
 	  /* Use the newer information.  */
 	  ptr->flag = entry->flag;
 	  free (entry->path);
@@ -363,12 +370,15 @@ add_single_dir (struct dir_entry *entry, int verbose)
 
 /* Add one directory to the list of directories to process.  */
 static void
-add_dir (const char *line)
+add_dir_1 (const char *line, const char *from_file, int from_line)
 {
   unsigned int i;
   struct dir_entry *entry = xmalloc (sizeof (struct dir_entry));
   entry->next = NULL;
 
+  entry->from_file = strdup (from_file);
+  entry->from_line = from_line;
+
   /* Search for an '=' sign.  */
   entry->path = xstrdup (line);
   char *equal_sign = strchr (entry->path, '=');
@@ -428,6 +438,11 @@ add_dir (const char *line)
     free (path);
 }
 
+static void
+add_dir (const char *line)
+{
+  add_dir_1 (line, "<builtin>", 0);
+}
 
 static int
 chroot_stat (const char *real_path, const char *path, struct stat64 *st)
@@ -672,9 +687,10 @@ search_dir (const struct dir_entry *entry)
   if (opt_verbose)
     {
       if (hwcap != 0)
-	printf ("%s: (hwcap: %#.16" PRIx64 ")\n", entry->path, hwcap);
+	printf ("%s: (hwcap: %#.16" PRIx64 ")", entry->path, hwcap);
       else
-	printf ("%s:\n", entry->path);
+	printf ("%s:", entry->path);
+      printf (_(" (from %s:%d)\n"), entry->from_file, entry->from_line);
     }
 
   char *dir_name;
@@ -815,6 +831,8 @@ search_dir (const struct dir_entry *entry)
 	  struct dir_entry *new_entry;
 
 	  new_entry = xmalloc (sizeof (struct dir_entry));
+	  new_entry->from_file = entry->from_file;
+	  new_entry->from_line = entry->from_line;
 	  new_entry->path = xstrdup (file_name);
 	  new_entry->flag = entry->flag;
 	  new_entry->next = NULL;
@@ -1175,7 +1193,7 @@ Warning: ignoring configuration file that cannot be opened: %s"),
 	    }
 	}
       else
-	add_dir (cp);
+	add_dir_1 (cp, filename, lineno);
     }
   while (!feof_unlocked (file));
 
@@ -1283,7 +1301,7 @@ main (int argc, char **argv)
 		 _("relative path `%s' used to build cache"),
 		 argv[i]);
 	else
-	  add_dir (argv[i]);
+	  add_dir_1 (argv[i], "<cmdline>", 0);
     }
 
   /* The last entry in hwcap_extra is reserved for the "tls" pseudo-hwcap which


  reply	other threads:[~2020-02-19 20:45 UTC|newest]

Thread overview: 6+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-02-19 17:50 [patch] ldconfig: trace origin paths with -v DJ Delorie
2020-02-19 18:00 ` Carlos O'Donell
2020-02-19 18:09 ` Joseph Myers
2020-02-19 20:45   ` DJ Delorie [this message]
2020-03-12 15:26     ` Carlos O'Donell via Libc-alpha
2020-03-12 19:08       ` DJ Delorie via Libc-alpha

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

  List information: https://www.gnu.org/software/libc/involved.html

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=xnd0aagvcd.fsf@greed.delorie.com \
    --to=dj@redhat.com \
    --cc=joseph@codesourcery.com \
    --cc=libc-alpha@sourceware.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).