namespace {
struct OutputLocation {
+ OutputLocation(std::string DWARFFile, Optional<std::string> ResourceDir = {})
+ : DWARFFile(DWARFFile), ResourceDir(ResourceDir) {}
+ /// This method is a workaround for older compilers.
+ Optional<std::string> getResourceDir() const { return ResourceDir; }
std::string DWARFFile;
Optional<std::string> ResourceDir;
};
static Expected<OutputLocation> getOutputFileName(llvm::StringRef InputFile) {
if (OutputFileOpt == "-")
- return OutputLocation{OutputFileOpt, {}};
+ return OutputLocation(OutputFileOpt);
// When updating, do in place replacement.
if (OutputFileOpt.empty() && (Update || !SymbolMap.empty()))
- return OutputLocation{InputFile, {}};
+ return OutputLocation(InputFile);
// If a flat dSYM has been requested, things are pretty simple.
if (FlatOut) {
if (OutputFileOpt.empty()) {
if (InputFile == "-")
return OutputLocation{"a.out.dwarf", {}};
- return OutputLocation{(InputFile + ".dwarf").str(), {}};
+ return OutputLocation((InputFile + ".dwarf").str());
}
- return OutputLocation{OutputFileOpt, {}};
+ return OutputLocation(OutputFileOpt);
}
// We need to create/update a dSYM bundle.
llvm::sys::path::append(Path, "Contents", "Resources");
StringRef ResourceDir = Path;
llvm::sys::path::append(Path, "DWARF", llvm::sys::path::filename(DwarfFile));
- return OutputLocation{Path.str(), ResourceDir.str()};
+ return OutputLocation(Path.str(), ResourceDir.str());
}
/// Parses the command line options into the LinkOptions struct and performs
WithColor::error() << toString(OutputLocationOrErr.takeError());
return 1;
}
- OptionsOrErr->ResourceDir = OutputLocationOrErr->ResourceDir;
+ OptionsOrErr->ResourceDir = OutputLocationOrErr->getResourceDir();
std::string OutputFile = OutputLocationOrErr->DWARFFile;
if (NeedsTempFiles) {