[llvm] r243777 - [dsymutil] Support multiple input files on the command line
Frederic Riss
friss at apple.com
Fri Jul 31 13:22:20 PDT 2015
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
+RUN: llvm-dwarfdump %t2.dwarf \
+ | FileCheck %S/basic-linking-x86.test --check-prefix=CHECK --check-prefix=ARCHIVE
+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;
}
More information about the llvm-commits
mailing list