diff options
Diffstat (limited to 'tools')
| -rw-r--r-- | tools/gold/gold-plugin.cpp | 6 | ||||
| -rw-r--r-- | tools/llvm-nm/llvm-nm.cpp | 17 | ||||
| -rw-r--r-- | tools/llvm-pdbdump/PrettyClassLayoutGraphicalDumper.cpp | 3 | ||||
| -rw-r--r-- | tools/llvm-pdbdump/YAMLOutputStyle.cpp | 14 | ||||
| -rw-r--r-- | tools/llvm-pdbdump/llvm-pdbdump.cpp | 37 | ||||
| -rw-r--r-- | tools/llvm-pdbdump/llvm-pdbdump.h | 1 | ||||
| -rw-r--r-- | tools/llvm-profdata/llvm-profdata.cpp | 2 | ||||
| -rw-r--r-- | tools/llvm-readobj/COFFDumper.cpp | 4 |
8 files changed, 59 insertions, 25 deletions
diff --git a/tools/gold/gold-plugin.cpp b/tools/gold/gold-plugin.cpp index 9b783d19a283..cf207d9dbbb3 100644 --- a/tools/gold/gold-plugin.cpp +++ b/tools/gold/gold-plugin.cpp @@ -102,7 +102,7 @@ static ld_plugin_add_input_file add_input_file = nullptr; static ld_plugin_set_extra_library_path set_extra_library_path = nullptr; static ld_plugin_get_view get_view = nullptr; static bool IsExecutable = false; -static Optional<Reloc::Model> RelocationModel; +static Optional<Reloc::Model> RelocationModel = None; static std::string output_name = ""; static std::list<claimed_file> Modules; static DenseMap<int, void *> FDToLeaderHandle; @@ -282,6 +282,8 @@ ld_plugin_status onload(ld_plugin_tv *tv) { case LDPT_LINKER_OUTPUT: switch (tv->tv_u.tv_val) { case LDPO_REL: // .o + IsExecutable = false; + break; case LDPO_DYN: // .so IsExecutable = false; RelocationModel = Reloc::PIC_; @@ -726,7 +728,7 @@ static std::unique_ptr<LTO> createLTO() { Conf.Options.RelaxELFRelocations = false; Conf.MAttrs = MAttrs; - Conf.RelocModel = *RelocationModel; + Conf.RelocModel = RelocationModel; Conf.CGOptLevel = getCGOptLevel(); Conf.DisableVerify = options::DisableVerify; Conf.OptLevel = options::OptLevel; diff --git a/tools/llvm-nm/llvm-nm.cpp b/tools/llvm-nm/llvm-nm.cpp index a07fcef35ebe..b022c300756d 100644 --- a/tools/llvm-nm/llvm-nm.cpp +++ b/tools/llvm-nm/llvm-nm.cpp @@ -24,6 +24,7 @@ #include "llvm/IR/Module.h" #include "llvm/Object/Archive.h" #include "llvm/Object/COFF.h" +#include "llvm/Object/COFFImportFile.h" #include "llvm/Object/ELFObjectFile.h" #include "llvm/Object/IRObjectFile.h" #include "llvm/Object/MachO.h" @@ -269,7 +270,7 @@ static bool compareSymbolName(const NMSymbol &A, const NMSymbol &B) { static char isSymbolList64Bit(SymbolicFile &Obj) { if (auto *IRObj = dyn_cast<IRObjectFile>(&Obj)) return Triple(IRObj->getTargetTriple()).isArch64Bit(); - if (isa<COFFObjectFile>(Obj)) + if (isa<COFFObjectFile>(Obj) || isa<COFFImportFile>(Obj)) return false; if (isa<WasmObjectFile>(Obj)) return false; @@ -849,6 +850,18 @@ static char getSymbolNMTypeChar(COFFObjectFile &Obj, symbol_iterator I) { return '?'; } +static char getSymbolNMTypeChar(COFFImportFile &Obj) { + switch (Obj.getCOFFImportHeader()->getType()) { + case COFF::IMPORT_CODE: + return 't'; + case COFF::IMPORT_DATA: + return 'd'; + case COFF::IMPORT_CONST: + return 'r'; + } + return '?'; +} + static char getSymbolNMTypeChar(MachOObjectFile &Obj, basic_symbol_iterator I) { DataRefImpl Symb = I->getRawDataRefImpl(); uint8_t NType = Obj.is64Bit() ? Obj.getSymbol64TableEntry(Symb).n_type @@ -932,6 +945,8 @@ static char getNMTypeChar(SymbolicFile &Obj, basic_symbol_iterator I) { Ret = getSymbolNMTypeChar(*IR, I); else if (COFFObjectFile *COFF = dyn_cast<COFFObjectFile>(&Obj)) Ret = getSymbolNMTypeChar(*COFF, I); + else if (COFFImportFile *COFFImport = dyn_cast<COFFImportFile>(&Obj)) + Ret = getSymbolNMTypeChar(*COFFImport); else if (MachOObjectFile *MachO = dyn_cast<MachOObjectFile>(&Obj)) Ret = getSymbolNMTypeChar(*MachO, I); else if (WasmObjectFile *Wasm = dyn_cast<WasmObjectFile>(&Obj)) diff --git a/tools/llvm-pdbdump/PrettyClassLayoutGraphicalDumper.cpp b/tools/llvm-pdbdump/PrettyClassLayoutGraphicalDumper.cpp index 16cec82f718a..d11472679626 100644 --- a/tools/llvm-pdbdump/PrettyClassLayoutGraphicalDumper.cpp +++ b/tools/llvm-pdbdump/PrettyClassLayoutGraphicalDumper.cpp @@ -80,7 +80,8 @@ bool PrettyClassLayoutGraphicalDumper::start(const UDTLayoutBase &Layout) { if (Item->getLayoutSize() > 0) { uint32_t Prev = RelativeOffset + Item->getLayoutSize() - 1; - NextPaddingByte = UseMap.find_next_unset(Prev); + if (Prev < UseMap.size()) + NextPaddingByte = UseMap.find_next_unset(Prev); } } diff --git a/tools/llvm-pdbdump/YAMLOutputStyle.cpp b/tools/llvm-pdbdump/YAMLOutputStyle.cpp index 0573b23cdc76..652182e8e9b3 100644 --- a/tools/llvm-pdbdump/YAMLOutputStyle.cpp +++ b/tools/llvm-pdbdump/YAMLOutputStyle.cpp @@ -39,6 +39,20 @@ YAMLOutputStyle::YAMLOutputStyle(PDBFile &File) } Error YAMLOutputStyle::dump() { + if (opts::pdb2yaml::All) { + opts::pdb2yaml::StreamMetadata = true; + opts::pdb2yaml::StreamDirectory = true; + opts::pdb2yaml::PdbStream = true; + opts::pdb2yaml::StringTable = true; + opts::pdb2yaml::DbiStream = true; + opts::pdb2yaml::DbiModuleInfo = true; + opts::pdb2yaml::DbiModuleSyms = true; + opts::pdb2yaml::DbiModuleSourceFileInfo = true; + opts::pdb2yaml::DbiModuleSourceLineInfo = true; + opts::pdb2yaml::TpiStream = true; + opts::pdb2yaml::IpiStream = true; + } + if (opts::pdb2yaml::StreamDirectory) opts::pdb2yaml::StreamMetadata = true; if (opts::pdb2yaml::DbiModuleSyms) diff --git a/tools/llvm-pdbdump/llvm-pdbdump.cpp b/tools/llvm-pdbdump/llvm-pdbdump.cpp index 1767c3cfda85..ff14c39cbaab 100644 --- a/tools/llvm-pdbdump/llvm-pdbdump.cpp +++ b/tools/llvm-pdbdump/llvm-pdbdump.cpp @@ -378,6 +378,9 @@ cl::opt<std::string> InputFilename(cl::Positional, } namespace pdb2yaml { +cl::opt<bool> All("all", + cl::desc("Dump everything we know how to dump."), + cl::sub(PdbToYamlSubcommand), cl::init(false)); cl::opt<bool> NoFileHeaders("no-file-headers", cl::desc("Do not dump MSF file headers (you will not be able " @@ -500,6 +503,7 @@ static void yamlToPdb(StringRef Path) { pdb::yaml::PdbInfoStream DefaultInfoStream; pdb::yaml::PdbDbiStream DefaultDbiStream; pdb::yaml::PdbTpiStream DefaultTpiStream; + pdb::yaml::PdbTpiStream DefaultIpiStream; const auto &Info = YamlObj.PdbStream.getValueOr(DefaultInfoStream); @@ -524,12 +528,12 @@ static void yamlToPdb(StringRef Path) { DbiBuilder.setVersionHeader(Dbi.VerHeader); for (const auto &MI : Dbi.ModInfos) { auto &ModiBuilder = ExitOnErr(DbiBuilder.addModuleInfo(MI.Mod)); + ModiBuilder.setObjFileName(MI.Obj); for (auto S : MI.SourceFiles) ExitOnErr(DbiBuilder.addModuleSourceFile(MI.Mod, S)); if (MI.Modi.hasValue()) { const auto &ModiStream = *MI.Modi; - ModiBuilder.setObjFileName(MI.Obj); for (auto Symbol : ModiStream.Symbols) ModiBuilder.addSymbol(Symbol.Record); } @@ -601,11 +605,11 @@ static void yamlToPdb(StringRef Path) { for (const auto &R : Tpi.Records) TpiBuilder.addTypeRecord(R.Record.data(), R.Record.Hash); - const auto &Ipi = YamlObj.IpiStream.getValueOr(DefaultTpiStream); + const auto &Ipi = YamlObj.IpiStream.getValueOr(DefaultIpiStream); auto &IpiBuilder = Builder.getIpiBuilder(); IpiBuilder.setVersionHeader(Ipi.Version); for (const auto &R : Ipi.Records) - TpiBuilder.addTypeRecord(R.Record.data(), R.Record.Hash); + IpiBuilder.addTypeRecord(R.Record.data(), R.Record.Hash); ExitOnErr(Builder.commit(opts::yaml2pdb::YamlPdbOutputFile)); } @@ -852,18 +856,17 @@ static void mergePdbs() { for (const auto &Path : opts::merge::InputFilenames) { std::unique_ptr<IPDBSession> Session; auto &File = loadPDB(Path, Session); - SmallVector<TypeIndex, 128> SourceToDest; + SmallVector<TypeIndex, 128> TypeMap; + SmallVector<TypeIndex, 128> IdMap; if (File.hasPDBTpiStream()) { - SourceToDest.clear(); auto &Tpi = ExitOnErr(File.getPDBTpiStream()); - ExitOnErr(codeview::mergeTypeStreams(MergedIpi, MergedTpi, SourceToDest, - nullptr, Tpi.typeArray())); + ExitOnErr(codeview::mergeTypeRecords(MergedTpi, TypeMap, nullptr, + Tpi.typeArray())); } if (File.hasPDBIpiStream()) { - SourceToDest.clear(); auto &Ipi = ExitOnErr(File.getPDBIpiStream()); - ExitOnErr(codeview::mergeTypeStreams(MergedIpi, MergedTpi, SourceToDest, - nullptr, Ipi.typeArray())); + ExitOnErr(codeview::mergeIdRecords(MergedIpi, TypeMap, IdMap, + Ipi.typeArray())); } } @@ -877,14 +880,12 @@ static void mergePdbs() { auto &DestTpi = Builder.getTpiBuilder(); auto &DestIpi = Builder.getIpiBuilder(); - MergedTpi.ForEachRecord( - [&DestTpi](TypeIndex TI, MutableArrayRef<uint8_t> Data) { - DestTpi.addTypeRecord(Data, None); - }); - MergedIpi.ForEachRecord( - [&DestIpi](TypeIndex TI, MutableArrayRef<uint8_t> Data) { - DestIpi.addTypeRecord(Data, None); - }); + MergedTpi.ForEachRecord([&DestTpi](TypeIndex TI, ArrayRef<uint8_t> Data) { + DestTpi.addTypeRecord(Data, None); + }); + MergedIpi.ForEachRecord([&DestIpi](TypeIndex TI, ArrayRef<uint8_t> Data) { + DestIpi.addTypeRecord(Data, None); + }); SmallString<64> OutFile(opts::merge::PdbOutputFile); if (OutFile.empty()) { diff --git a/tools/llvm-pdbdump/llvm-pdbdump.h b/tools/llvm-pdbdump/llvm-pdbdump.h index e38b32c6a345..b344129d217a 100644 --- a/tools/llvm-pdbdump/llvm-pdbdump.h +++ b/tools/llvm-pdbdump/llvm-pdbdump.h @@ -115,6 +115,7 @@ extern llvm::cl::opt<bool> Pedantic; } namespace pdb2yaml { +extern llvm::cl::opt<bool> All; extern llvm::cl::opt<bool> NoFileHeaders; extern llvm::cl::opt<bool> Minimal; extern llvm::cl::opt<bool> StreamMetadata; diff --git a/tools/llvm-profdata/llvm-profdata.cpp b/tools/llvm-profdata/llvm-profdata.cpp index a257910ecf77..4867acf70983 100644 --- a/tools/llvm-profdata/llvm-profdata.cpp +++ b/tools/llvm-profdata/llvm-profdata.cpp @@ -572,7 +572,7 @@ static int showInstrProfile(const std::string &Filename, bool ShowCounts, } if (ShowMemOPSizes && NumMemOPCalls > 0) { - OS << " Memory Instrinsic Size Results:\n"; + OS << " Memory Intrinsic Size Results:\n"; traverseAllValueSites(Func, IPVK_MemOPSize, VPStats[IPVK_MemOPSize], OS, nullptr); } diff --git a/tools/llvm-readobj/COFFDumper.cpp b/tools/llvm-readobj/COFFDumper.cpp index 78bfa558e4a3..a59caa351e72 100644 --- a/tools/llvm-readobj/COFFDumper.cpp +++ b/tools/llvm-readobj/COFFDumper.cpp @@ -1073,8 +1073,8 @@ void COFFDumper::mergeCodeViewTypes(TypeTableBuilder &CVIDs, error(object_error::parse_failed); } SmallVector<TypeIndex, 128> SourceToDest; - if (auto EC = - mergeTypeStreams(CVIDs, CVTypes, SourceToDest, nullptr, Types)) + if (auto EC = mergeTypeAndIdRecords(CVIDs, CVTypes, SourceToDest, nullptr, + Types)) return error(std::move(EC)); } } |
