[llvm] bd206a3 - [dsymutil] Keep DSYMUTIL_REPRODUCER_PATH in addition to LLVM_DIAGNOSTIC_DIR

Jonas Devlieghere via llvm-commits llvm-commits at lists.llvm.org
Tue Oct 10 15:45:47 PDT 2023


Author: Jonas Devlieghere
Date: 2023-10-10T15:45:40-07:00
New Revision: bd206a363af392fc802e8f6e1dde282ca4490eaa

URL: https://github.com/llvm/llvm-project/commit/bd206a363af392fc802e8f6e1dde282ca4490eaa
DIFF: https://github.com/llvm/llvm-project/commit/bd206a363af392fc802e8f6e1dde282ca4490eaa.diff

LOG: [dsymutil] Keep DSYMUTIL_REPRODUCER_PATH in addition to LLVM_DIAGNOSTIC_DIR

For LLVM_DIAGNOSTIC_DIR we want to create a subdirectory while for
DSYMUTIL_REPRODUCER_PATH we want to use the directory specified. The
latter makes writing a test a whole lot easier. Keep both to support
both scenarios.

Added: 
    

Modified: 
    llvm/test/tools/dsymutil/X86/reproducer.test
    llvm/tools/dsymutil/Reproducer.cpp

Removed: 
    


################################################################################
diff  --git a/llvm/test/tools/dsymutil/X86/reproducer.test b/llvm/test/tools/dsymutil/X86/reproducer.test
index 345bc38e6067499..99f8192b5079a53 100644
--- a/llvm/test/tools/dsymutil/X86/reproducer.test
+++ b/llvm/test/tools/dsymutil/X86/reproducer.test
@@ -21,9 +21,14 @@ RUN: env TMPDIR="%t/tempdir" dsymutil -o - -f %t/Inputs/basic.macho.x86_64
 RUN: not ls %t/tempdir/dsymutil-*
 
 # Create a reproducer.
-RUN: env LLVM_DIAGNOSTIC_DIR=%t.repro dsymutil -gen-reproducer -f -o %t.generate -oso-prepend-path=%t %t/Inputs/basic.macho.x86_64 2>&1 | FileCheck %s --check-prefixes=REPRODUCER
+RUN: rm -rf %t.repro
+RUN: env DSYMUTIL_REPRODUCER_PATH=%t.repro dsymutil -gen-reproducer -f -o %t.generate -oso-prepend-path=%t %t/Inputs/basic.macho.x86_64 2>&1 | FileCheck %s --check-prefixes=REPRODUCER
 RUN: llvm-dwarfdump -a %t.generate | FileCheck %s
 
+RUN: rm -rf %t.diags
+RUN: env LLVM_DIAGNOSTIC_DIR=%t.diags dsymutil -gen-reproducer -f -o %t.generate -oso-prepend-path=%t %t/Inputs/basic.macho.x86_64 2>&1 | FileCheck %s --check-prefixes=REPRODUCER
+RUN: ls %t.diags | grep 'dsymutil-' | count 1
+
 # Remove the input files and verify that was successful.
 RUN: rm -rf %t
 RUN: not dsymutil -f -o %t.error -oso-prepend-path=%t %t/Inputs/basic.macho.x86_64 2>&1 | FileCheck %s --check-prefix=ERROR
@@ -32,7 +37,6 @@ RUN: not dsymutil --linker llvm -f -o %t.error -oso-prepend-path=%t %t/Inputs/ba
 
 # Use the reproducer.
 RUN: dsymutil -use-reproducer %t.repro -f -o - -oso-prepend-path=%t %t/Inputs/basic.macho.x86_64 | llvm-dwarfdump -a - | FileCheck %s
-
 RUN: dsymutil --linker llvm -use-reproducer %t.repro -f -o - -oso-prepend-path=%t %t/Inputs/basic.macho.x86_64 | llvm-dwarfdump -a - | FileCheck %s
 
 # Using a reproducer takes precedence.

diff  --git a/llvm/tools/dsymutil/Reproducer.cpp b/llvm/tools/dsymutil/Reproducer.cpp
index 99a23fc8003e31b..a6cc10424dc524e 100644
--- a/llvm/tools/dsymutil/Reproducer.cpp
+++ b/llvm/tools/dsymutil/Reproducer.cpp
@@ -8,15 +8,21 @@
 
 #include "Reproducer.h"
 #include "llvm/Support/Path.h"
+#include "llvm/Support/Process.h"
 
 using namespace llvm;
 using namespace llvm::dsymutil;
 
 static std::string createReproducerDir(std::error_code &EC) {
   SmallString<128> Root;
-  if (const char *Path = getenv("LLVM_DIAGNOSTIC_DIR")) {
+  if (const char *Path = getenv("DSYMUTIL_REPRODUCER_PATH")) {
     Root.assign(Path);
-    EC = sys::fs::create_directory(Root);
+    EC = sys::fs::create_directories(Root);
+  } else if (const char *Path = getenv("LLVM_DIAGNOSTIC_DIR")) {
+    Root.assign(Path);
+    llvm::sys::path::append(
+        Root, "dsymutil-" + llvm::Twine(llvm::sys::Process::getProcessId()));
+    EC = sys::fs::create_directories(Root);
   } else {
     EC = sys::fs::createUniqueDirectory("dsymutil", Root);
   }


        


More information about the llvm-commits mailing list