[PATCH] D57609: [DebugInfo] Don't use realpath when looking up debug binary locations.

Jordan Rupprecht via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Fri Feb 1 12:53:45 PST 2019


rupprecht updated this revision to Diff 184824.
rupprecht marked an inline comment as done.
rupprecht added a comment.

- Use real/syms instead of objs/runfiles


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D57609/new/

https://reviews.llvm.org/D57609

Files:
  llvm/lib/DebugInfo/Symbolize/Symbolize.cpp
  llvm/test/DebugInfo/symbolize-gnu-debuglink-no-realpath.test


Index: llvm/test/DebugInfo/symbolize-gnu-debuglink-no-realpath.test
===================================================================
--- /dev/null
+++ llvm/test/DebugInfo/symbolize-gnu-debuglink-no-realpath.test
@@ -0,0 +1,17 @@
+# REQUIRES: shell
+# Ensure that no realpath assumptions are made about .gnu_debuglink paths.
+
+# Copy inputs to some other location with arbitrary names, with the original
+# filenames just being symlinks to the copies. Real files go in the "real" dir,
+# symlinks (with original names) go in "syms".
+RUN: rm -rf %t/real %t/syms
+RUN: mkdir %t/real %t/syms
+RUN: cp %p/Inputs/dwarfdump-test.elf-x86-64 %t/real/prog
+RUN: cp %p/Inputs/dwarfdump-test.elf-x86-64.debuglink %t/real/link
+RUN: ln -s %t/real/prog %t/syms/dwarfdump-test.elf-x86-64
+RUN: ln -s %t/real/link %t/syms/dwarfdump-test.elf-x86-64.debuglink
+
+RUN: llvm-symbolizer --obj=%t/syms/dwarfdump-test.elf-x86-64.debuglink 0x40113f | FileCheck %s
+
+CHECK:       main
+CHECK-NEXT: /tmp/dbginfo{{[/\\]}}dwarfdump-test.cc:16
Index: llvm/lib/DebugInfo/Symbolize/Symbolize.cpp
===================================================================
--- llvm/lib/DebugInfo/Symbolize/Symbolize.cpp
+++ llvm/lib/DebugInfo/Symbolize/Symbolize.cpp
@@ -16,7 +16,6 @@
 
 #include "llvm/ADT/STLExtras.h"
 #include "llvm/BinaryFormat/COFF.h"
-#include "llvm/Config/config.h"
 #include "llvm/DebugInfo/DWARF/DWARFContext.h"
 #include "llvm/DebugInfo/PDB/PDB.h"
 #include "llvm/DebugInfo/PDB/PDBContext.h"
@@ -33,7 +32,6 @@
 #include "llvm/Support/Path.h"
 #include <algorithm>
 #include <cassert>
-#include <cstdlib>
 #include <cstring>
 
 #if defined(_MSC_VER)
@@ -168,14 +166,7 @@
 bool findDebugBinary(const std::string &OrigPath,
                      const std::string &DebuglinkName, uint32_t CRCHash,
                      std::string &Result) {
-  std::string OrigRealPath = OrigPath;
-#if defined(HAVE_REALPATH)
-  if (char *RP = realpath(OrigPath.c_str(), nullptr)) {
-    OrigRealPath = RP;
-    free(RP);
-  }
-#endif
-  SmallString<16> OrigDir(OrigRealPath);
+  SmallString<16> OrigDir(OrigPath);
   llvm::sys::path::remove_filename(OrigDir);
   SmallString<16> DebugPath = OrigDir;
   // Try /path/to/original_binary/debuglink_name


-------------- next part --------------
A non-text attachment was scrubbed...
Name: D57609.184824.patch
Type: text/x-patch
Size: 2226 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20190201/560b6427/attachment.bin>


More information about the llvm-commits mailing list