[llvm] r243777 - [dsymutil] Support multiple input files on the command line

Alexander Kornienko alexfh at google.com
Mon Aug 3 03:51:44 PDT 2015


On Fri, Jul 31, 2015 at 10:22 PM, Frederic Riss <friss at apple.com> wrote:

> Author: friss
> Date: Fri Jul 31 15:22:20 2015
> New Revision: 243777
>
> URL: http://llvm.org/viewvc/llvm-project?rev=243777&view=rev
> Log:
> [dsymutil] Support multiple input files on the command line
>
> Added:
>     llvm/trunk/test/tools/dsymutil/X86/multiple-inputs.test
> Modified:
>     llvm/trunk/test/tools/dsymutil/basic-linking.test
>     llvm/trunk/tools/dsymutil/dsymutil.cpp
>
> Added: llvm/trunk/test/tools/dsymutil/X86/multiple-inputs.test
> URL:
> http://llvm.org/viewvc/llvm-project/llvm/trunk/test/tools/dsymutil/X86/multiple-inputs.test?rev=243777&view=auto
>
> ==============================================================================
> --- llvm/trunk/test/tools/dsymutil/X86/multiple-inputs.test (added)
> +++ llvm/trunk/test/tools/dsymutil/X86/multiple-inputs.test Fri Jul 31
> 15:22:20 2015
> @@ -0,0 +1,12 @@
> +REQUIRES: shell
> +RUN: cat %p/../Inputs/basic.macho.x86_64 > %t1
> +RUN: cat %p/../Inputs/basic-archive.macho.x86_64 > %t2
> +RUN: cat %p/../Inputs/basic-lto.macho.x86_64 > %t3
> +RUN: cat %p/../Inputs/basic-lto-dw4.macho.x86_64 > %t4
> +RUN: llvm-dsymutil -oso-prepend-path=%p/.. %t1 %t2 %t3 %t4
> +RUN: llvm-dwarfdump %t1.dwarf \
> + | FileCheck %S/basic-linking-x86.test --check-prefix=CHECK
> --check-prefix=BASIC
>

FYI, this line must be also prefixed with RUN:. Fixed in r243868.


> +RUN: llvm-dwarfdump %t2.dwarf \
> + | FileCheck %S/basic-linking-x86.test --check-prefix=CHECK
> --check-prefix=ARCHIVE
>

ditto


> +RUN: llvm-dwarfdump %t3.dwarf | FileCheck %S/basic-lto-linking-x86.test
> +RUN: llvm-dwarfdump %t4.dwarf | FileCheck
> %S/basic-lto-dw4-linking-x86.test
>
> Modified: llvm/trunk/test/tools/dsymutil/basic-linking.test
> URL:
> http://llvm.org/viewvc/llvm-project/llvm/trunk/test/tools/dsymutil/basic-linking.test?rev=243777&r1=243776&r2=243777&view=diff
>
> ==============================================================================
> --- llvm/trunk/test/tools/dsymutil/basic-linking.test (original)
> +++ llvm/trunk/test/tools/dsymutil/basic-linking.test Fri Jul 31 15:22:20
> 2015
> @@ -1,6 +1,7 @@
>  RUN: llvm-dsymutil -no-output -verbose -oso-prepend-path=%p
> %p/Inputs/basic.macho.x86_64 | FileCheck %s
>  RUN: llvm-dsymutil -no-output -verbose -oso-prepend-path=%p
> %p/Inputs/basic-lto.macho.x86_64 | FileCheck %s --check-prefix=CHECK-LTO
>  RUN: llvm-dsymutil -no-output -verbose -oso-prepend-path=%p
> %p/Inputs/basic-archive.macho.x86_64 | FileCheck %s
> --check-prefix=CHECK-ARCHIVE
> +RUN: llvm-dsymutil -no-output -verbose -oso-prepend-path=%p
> %p/Inputs/basic.macho.x86_64 %p/Inputs/basic-lto.macho.x86_64
> %p/Inputs/basic-archive.macho.x86_64 | FileCheck %s --check-prefix=CHECK
> --check-prefix=CHECK-LTO --check-prefix=CHECK-ARCHIVE
>
>  This test check the basic Dwarf linking process through the debug dumps.
>
>
> Modified: llvm/trunk/tools/dsymutil/dsymutil.cpp
> URL:
> http://llvm.org/viewvc/llvm-project/llvm/trunk/tools/dsymutil/dsymutil.cpp?rev=243777&r1=243776&r2=243777&view=diff
>
> ==============================================================================
> --- llvm/trunk/tools/dsymutil/dsymutil.cpp (original)
> +++ llvm/trunk/tools/dsymutil/dsymutil.cpp Fri Jul 31 15:22:20 2015
> @@ -31,8 +31,8 @@ OptionCategory DsymCategory("Specific Op
>  static opt<bool> Help("h", desc("Alias for -help"), Hidden);
>  static opt<bool> Version("v", desc("Alias for -version"), Hidden);
>
> -static opt<std::string> InputFile(Positional, desc("<input file>"),
> -                                  init("a.out"), cat(DsymCategory));
> +static list<std::string> InputFiles(Positional, OneOrMore,
> +                                    desc("<input files>"),
> cat(DsymCategory));
>
>  static opt<std::string>
>      OutputFileOpt("o",
> @@ -90,9 +90,6 @@ int main(int argc, char **argv) {
>      return 0;
>    }
>
> -  auto DebugMapPtrOrErr =
> -      parseDebugMap(InputFile, OsoPrependPath, Verbose,
> InputIsYAMLDebugMap);
> -
>    Options.Verbose = Verbose;
>    Options.NoOutput = NoOutput;
>    Options.NoODR = NoODR;
> @@ -102,27 +99,40 @@ int main(int argc, char **argv) {
>    llvm::InitializeAllTargets();
>    llvm::InitializeAllAsmPrinters();
>
> -  if (auto EC = DebugMapPtrOrErr.getError()) {
> -    llvm::errs() << "error: cannot parse the debug map for \"" <<
> InputFile
> -                 << "\": " << EC.message() << '\n';
> +  if (InputFiles.size() > 1 && !OutputFileOpt.empty()) {
> +    llvm::errs() << "error: cannot use -o with multiple inputs\n";
>      return 1;
>    }
>
> -  if (Verbose || DumpDebugMap)
> -    (*DebugMapPtrOrErr)->print(llvm::outs());
> -
> -  if (DumpDebugMap)
> -    return 0;
> +  for (auto &InputFile : InputFiles) {
> +    auto DebugMapPtrOrErr =
> +        parseDebugMap(InputFile, OsoPrependPath, Verbose,
> InputIsYAMLDebugMap);
> +
> +    if (auto EC = DebugMapPtrOrErr.getError()) {
> +      llvm::errs() << "error: cannot parse the debug map for \"" <<
> InputFile
> +                   << "\": " << EC.message() << '\n';
> +      return 1;
> +    }
> +
> +    if (Verbose || DumpDebugMap)
> +      (*DebugMapPtrOrErr)->print(llvm::outs());
> +
> +    if (DumpDebugMap)
> +      continue;
> +
> +    std::string OutputFile;
> +    if (OutputFileOpt.empty()) {
> +      if (InputFile == "-")
> +        OutputFile = "a.out.dwarf";
> +      else
> +        OutputFile = InputFile + ".dwarf";
> +    } else {
> +      OutputFile = OutputFileOpt;
> +    }
>
> -  std::string OutputFile;
> -  if (OutputFileOpt.empty()) {
> -    if (InputFile == "-")
> -      OutputFile = "a.out.dwarf";
> -    else
> -      OutputFile = InputFile + ".dwarf";
> -  } else {
> -    OutputFile = OutputFileOpt;
> +    if (!linkDwarf(OutputFile, **DebugMapPtrOrErr, Options))
> +      return 1;
>    }
>
> -  return !linkDwarf(OutputFile, **DebugMapPtrOrErr, Options);
> +  return 0;
>  }
>
>
> _______________________________________________
> llvm-commits mailing list
> llvm-commits at cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20150803/db043adf/attachment.html>


More information about the llvm-commits mailing list