|
Igor Gnatenko |
082d5d |
From 387acd5cb74c968b4751a1c2c731964fc1ab6c3f Mon Sep 17 00:00:00 2001
|
|
Igor Gnatenko |
082d5d |
From: Mark Wielaard <mark@klomp.org>
|
|
Igor Gnatenko |
082d5d |
Date: Fri, 21 Apr 2017 17:33:26 +0200
|
|
Igor Gnatenko |
082d5d |
Subject: [PATCH 31/49] debugedit: Only output comp_dir under build dir (once).
|
|
Mark Wielaard |
968a56 |
|
|
Igor Gnatenko |
082d5d |
The fix for rhbz#444310 (commit c1a5eb - Include empty CU current dirs)
|
|
Igor Gnatenko |
082d5d |
was a little greedy. It would also include comp_dirs outside the build
|
|
Igor Gnatenko |
082d5d |
root. Those are unnecessary and we don't have a good way to store them.
|
|
Igor Gnatenko |
082d5d |
Such dirs (e.g. /tmp) would then show up at the root of /usr/src/debug.
|
|
Mark Wielaard |
968a56 |
|
|
Igor Gnatenko |
082d5d |
Fix this by including only comp_dirs under base_dir. Also only output
|
|
Igor Gnatenko |
082d5d |
all dirs once (during phase zero) and don't output empty dirs (which
|
|
Igor Gnatenko |
082d5d |
was harmless but would produce a warning from cpio).
|
|
Igor Gnatenko |
082d5d |
|
|
Igor Gnatenko |
082d5d |
This still includes all empty dirs from the original rhbz#444310
|
|
Igor Gnatenko |
082d5d |
nodir testcase and it is an alternative fix for rhbz#641022
|
|
Igor Gnatenko |
082d5d |
(commit c707ab).
|
|
Mark Wielaard |
968a56 |
|
|
Igor Gnatenko |
082d5d |
Both fixes are necessary in case of an unexpected mode for a directory
|
|
Igor Gnatenko |
082d5d |
actually in the build root that we want to include in the source list.
|
|
Mark Wielaard |
968a56 |
|
|
Igor Gnatenko |
082d5d |
Signed-off-by: Mark Wielaard <mark@klomp.org>
|
|
Igor Gnatenko |
082d5d |
(cherry picked from commit e795899780337dea751d85db8f381eff3fe75275)
|
|
Igor Gnatenko |
082d5d |
---
|
|
Igor Gnatenko |
082d5d |
tools/debugedit.c | 39 ++++++++++++++++-----------------------
|
|
Igor Gnatenko |
082d5d |
1 file changed, 16 insertions(+), 23 deletions(-)
|
|
Mark Wielaard |
968a56 |
|
|
Mark Wielaard |
968a56 |
diff --git a/tools/debugedit.c b/tools/debugedit.c
|
|
Igor Gnatenko |
082d5d |
index 8444e030e..bf115136c 100644
|
|
Mark Wielaard |
968a56 |
--- a/tools/debugedit.c
|
|
Mark Wielaard |
968a56 |
+++ b/tools/debugedit.c
|
|
Mark Wielaard |
968a56 |
@@ -1680,30 +1680,23 @@ edit_attributes (DSO *dso, unsigned char *ptr, struct abbrev_tag *t, int phase)
|
|
Mark Wielaard |
968a56 |
/* Ensure the CU current directory will exist even if only empty. Source
|
|
Mark Wielaard |
968a56 |
filenames possibly located in its parent directories refer relatively to
|
|
Mark Wielaard |
968a56 |
it and the debugger (GDB) cannot safely optimize out the missing
|
|
Mark Wielaard |
968a56 |
- CU current dir subdirectories. */
|
|
Mark Wielaard |
968a56 |
- if (comp_dir && list_file_fd != -1)
|
|
Mark Wielaard |
968a56 |
+ CU current dir subdirectories. Only do this once in phase one. And
|
|
Mark Wielaard |
968a56 |
+ only do this for dirs under our build/base_dir. Don't output the
|
|
Mark Wielaard |
968a56 |
+ empty string (in case the comp_dir == base_dir). */
|
|
Mark Wielaard |
968a56 |
+ if (phase == 0 && base_dir && comp_dir && list_file_fd != -1)
|
|
Mark Wielaard |
968a56 |
{
|
|
Mark Wielaard |
968a56 |
- const char *p = NULL;
|
|
Mark Wielaard |
968a56 |
- size_t size;
|
|
Mark Wielaard |
968a56 |
-
|
|
Mark Wielaard |
968a56 |
- if (base_dir)
|
|
Mark Wielaard |
968a56 |
- {
|
|
Mark Wielaard |
968a56 |
- p = skip_dir_prefix (comp_dir, base_dir);
|
|
Mark Wielaard |
968a56 |
- if (p == NULL && dest_dir != NULL)
|
|
Mark Wielaard |
968a56 |
- p = skip_dir_prefix (comp_dir, dest_dir);
|
|
Mark Wielaard |
968a56 |
- }
|
|
Mark Wielaard |
968a56 |
-
|
|
Mark Wielaard |
968a56 |
- if (p == NULL)
|
|
Mark Wielaard |
968a56 |
- p = comp_dir;
|
|
Mark Wielaard |
968a56 |
-
|
|
Mark Wielaard |
968a56 |
- size = strlen (p) + 1;
|
|
Mark Wielaard |
968a56 |
- while (size > 0)
|
|
Mark Wielaard |
968a56 |
- {
|
|
Mark Wielaard |
968a56 |
- ssize_t ret = write (list_file_fd, p, size);
|
|
Mark Wielaard |
968a56 |
- if (ret == -1)
|
|
Mark Wielaard |
968a56 |
- break;
|
|
Mark Wielaard |
968a56 |
- size -= ret;
|
|
Mark Wielaard |
968a56 |
- p += ret;
|
|
Mark Wielaard |
968a56 |
+ const char *p = skip_dir_prefix (comp_dir, base_dir);
|
|
Mark Wielaard |
968a56 |
+ if (p != NULL && p[0] != '\0')
|
|
Mark Wielaard |
968a56 |
+ {
|
|
Mark Wielaard |
968a56 |
+ size_t size = strlen (p) + 1;
|
|
Mark Wielaard |
968a56 |
+ while (size > 0)
|
|
Mark Wielaard |
968a56 |
+ {
|
|
Mark Wielaard |
968a56 |
+ ssize_t ret = write (list_file_fd, p, size);
|
|
Mark Wielaard |
968a56 |
+ if (ret == -1)
|
|
Mark Wielaard |
968a56 |
+ break;
|
|
Mark Wielaard |
968a56 |
+ size -= ret;
|
|
Mark Wielaard |
968a56 |
+ p += ret;
|
|
Mark Wielaard |
968a56 |
+ }
|
|
Mark Wielaard |
968a56 |
}
|
|
Mark Wielaard |
968a56 |
}
|
|
Mark Wielaard |
968a56 |
|
|
Igor Gnatenko |
082d5d |
--
|
|
Igor Gnatenko |
082d5d |
2.13.2
|
|
Igor Gnatenko |
082d5d |
|