aboutsummaryrefslogtreecommitdiffstats
path: root/meta/recipes-kernel/systemtap/systemtap/0001-sysroot-fix-short-release-r-option-handling.patch
blob: b31d6274e225b3f96e3032120d0abc105bbc8895 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
From a9ce89bcd2d78728faef59bda60e75510972cd56 Mon Sep 17 00:00:00 2001
From: Victor Kamensky <kamensky@cisco.com>
Date: Wed, 14 Mar 2018 17:09:44 -0500
Subject: [PATCH] sysroot: fix short release -r option handling

* setupdwfl.cxx (debuginfo_path_insert_sysroot): Add a '/' to the end of
  the sysroot for path_insert_sysroot().
  (setup_dwfl_kernel): Simplify logic when finding the kernel path to send
  to elfutils.

Upstream-Status: Backport
Signed-off-by: Victor Kamensky <kamensky@cisco.com>
---
 setupdwfl.cxx | 19 ++++++++++++-------
 1 file changed, 12 insertions(+), 7 deletions(-)

diff --git a/setupdwfl.cxx b/setupdwfl.cxx
index 2a87982..f6c3157 100644
--- a/setupdwfl.cxx
+++ b/setupdwfl.cxx
@@ -339,6 +339,13 @@ static char * path_insert_sysroot(string sysroot, string path)
 
 void debuginfo_path_insert_sysroot(string sysroot)
 {
+  // FIXME: This is a short-term fix, until we expect sysroot paths to
+  // always end with a '/' (and never be empty).
+  //
+  // The path_insert_sysroot() function assumes that sysroot has a '/'
+  // on the end. Make sure that is true.
+  if (sysroot.back() != '/')
+    sysroot.push_back('/');
   debuginfo_path = path_insert_sysroot(sysroot, debuginfo_path);
   debuginfo_usr_path = path_insert_sysroot(sysroot, debuginfo_usr_path);
 }
@@ -358,13 +365,11 @@ setup_dwfl_kernel (unsigned *modules_found, systemtap_session &s)
   // no way to set the dwfl_callback.debuginfo_path and always
   // passs the plain kernel_release here.  So instead we have to
   // hard-code this magic here.
-   string lib_path = "/lib/modules/" + s.kernel_release + "/build";
-   if (s.kernel_build_tree == string(s.sysroot + lib_path) ||
-       (s.kernel_build_tree == lib_path
-	&& s.sysroot == "/"))
-      elfutils_kernel_path = s.kernel_release;
-   else
-      elfutils_kernel_path = s.kernel_build_tree;
+  string lib_path = s.sysroot + "/lib/modules/" + s.kernel_release + "/build";
+  if (s.kernel_build_tree == lib_path)
+    elfutils_kernel_path = s.kernel_release;
+  else
+    elfutils_kernel_path = s.kernel_build_tree;
   offline_modules_found = 0;
 
   // First try to report full path modules.