diff --git a/llvm/test/tools/dsymutil/X86/reproducer.test b/llvm/test/tools/dsymutil/X86/reproducer.test --- a/llvm/test/tools/dsymutil/X86/reproducer.test +++ b/llvm/test/tools/dsymutil/X86/reproducer.test @@ -34,6 +34,8 @@ # Using a reproducer takes precedence. RUN: dsymutil -gen-reproducer -use-reproducer %t.repro -f -o - -oso-prepend-path=%t %t/Inputs/basic.macho.x86_64 | llvm-dwarfdump -a - | FileCheck %s +RUN: not dsymutil --reproducer Use -f -o - %t/Inputs/basic.macho.x86_64 2>&1 | FileCheck %s --check-prefix=INVALID_ARG + CHECK: .debug_info CHECK: DW_TAG_compile_unit CHECK-NEXT: DW_AT_producer ("Apple LLVM version 6.0 (clang-600.0.39) (based on LLVM 3.5svn)") @@ -84,3 +86,5 @@ REPRODUCER: Reproducer written ERROR: error: cannot parse the debug map + +INVALID_ARG: must specify --use-reproducer with a path when using '--reproducer Use'. diff --git a/llvm/tools/dsymutil/dsymutil.cpp b/llvm/tools/dsymutil/dsymutil.cpp --- a/llvm/tools/dsymutil/dsymutil.cpp +++ b/llvm/tools/dsymutil/dsymutil.cpp @@ -216,6 +216,12 @@ "cannot combine --gen-reproducer and --use-reproducer.", errc::invalid_argument); + if (Options.ReproducerPath.empty() && + Options.ReproMode == ReproducerMode::Use) + return make_error("must specify --use-reproducer with a path " + "when using '--reproducer Use'.", + errc::invalid_argument); + return Error::success(); } @@ -613,7 +619,7 @@ auto OptionsOrErr = getOptions(Args); if (!OptionsOrErr) { - WithColor::error() << toString(OptionsOrErr.takeError()); + WithColor::error() << toString(OptionsOrErr.takeError()) << '\n'; return EXIT_FAILURE; } @@ -627,7 +633,7 @@ auto Repro = Reproducer::createReproducer(Options.ReproMode, Options.ReproducerPath, argc, argv); if (!Repro) { - WithColor::error() << toString(Repro.takeError()); + WithColor::error() << toString(Repro.takeError()) << '\n'; return EXIT_FAILURE; }