003 File Manager
Current Path:
/usr/src/contrib/llvm-project/llvm/tools/llvm-pdbutil
usr
/
src
/
contrib
/
llvm-project
/
llvm
/
tools
/
llvm-pdbutil
/
📁
..
📄
BytesOutputStyle.cpp
(14.1 KB)
📄
BytesOutputStyle.h
(1.61 KB)
📄
DumpOutputStyle.cpp
(63.95 KB)
📄
DumpOutputStyle.h
(2.94 KB)
📄
ExplainOutputStyle.cpp
(18.16 KB)
📄
ExplainOutputStyle.h
(1.64 KB)
📄
FormatUtil.cpp
(11.89 KB)
📄
FormatUtil.h
(4.47 KB)
📄
InputFile.cpp
(14.26 KB)
📄
InputFile.h
(4.31 KB)
📄
LinePrinter.cpp
(10 KB)
📄
LinePrinter.h
(4.37 KB)
📄
MinimalSymbolDumper.cpp
(34.92 KB)
📄
MinimalSymbolDumper.h
(2.52 KB)
📄
MinimalTypeDumper.cpp
(22.68 KB)
📄
MinimalTypeDumper.h
(2.73 KB)
📄
OutputStyle.h
(643 B)
📄
PdbYaml.cpp
(7.83 KB)
📄
PdbYaml.h
(3.6 KB)
📄
PrettyBuiltinDumper.cpp
(2.6 KB)
📄
PrettyBuiltinDumper.h
(856 B)
📄
PrettyClassDefinitionDumper.cpp
(3.7 KB)
📄
PrettyClassDefinitionDumper.h
(1.17 KB)
📄
PrettyClassLayoutGraphicalDumper.cpp
(6.81 KB)
📄
PrettyClassLayoutGraphicalDumper.h
(1.7 KB)
📄
PrettyCompilandDumper.cpp
(7.77 KB)
📄
PrettyCompilandDumper.h
(1.37 KB)
📄
PrettyEnumDumper.cpp
(2.38 KB)
📄
PrettyEnumDumper.h
(746 B)
📄
PrettyExternalSymbolDumper.cpp
(1.32 KB)
📄
PrettyExternalSymbolDumper.h
(842 B)
📄
PrettyFunctionDumper.cpp
(9.01 KB)
📄
PrettyFunctionDumper.h
(1.31 KB)
📄
PrettyTypeDumper.cpp
(11.3 KB)
📄
PrettyTypeDumper.h
(1.24 KB)
📄
PrettyTypedefDumper.cpp
(3.02 KB)
📄
PrettyTypedefDumper.h
(1.08 KB)
📄
PrettyVariableDumper.cpp
(7.29 KB)
📄
PrettyVariableDumper.h
(1.54 KB)
📄
StreamUtil.cpp
(7.81 KB)
📄
StreamUtil.h
(1.55 KB)
📄
TypeReferenceTracker.cpp
(5.53 KB)
📄
TypeReferenceTracker.h
(2.07 KB)
📄
YAMLOutputStyle.cpp
(10.96 KB)
📄
YAMLOutputStyle.h
(1.17 KB)
📄
llvm-pdbutil.cpp
(63.12 KB)
📄
llvm-pdbutil.h
(6.77 KB)
Editing: FormatUtil.h
//===- FormatUtil.h ------------------------------------------- *- C++ --*-===// // // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. // See https://llvm.org/LICENSE.txt for license information. // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception // //===----------------------------------------------------------------------===// #ifndef LLVM_TOOLS_LLVMPDBUTIL_FORMAT_UTIL_H #define LLVM_TOOLS_LLVMPDBUTIL_FORMAT_UTIL_H #include "llvm/ADT/ArrayRef.h" #include "llvm/ADT/StringRef.h" #include "llvm/DebugInfo/CodeView/CodeView.h" #include "llvm/Support/Endian.h" #include "llvm/Support/FormatAdapters.h" #include "llvm/Support/FormatVariadic.h" #include <string> #include <type_traits> namespace llvm { namespace pdb { std::string truncateStringBack(StringRef S, uint32_t MaxLen); std::string truncateStringMiddle(StringRef S, uint32_t MaxLen); std::string truncateStringFront(StringRef S, uint32_t MaxLen); std::string truncateQuotedNameFront(StringRef Label, StringRef Name, uint32_t MaxLen); std::string truncateQuotedNameBack(StringRef Label, StringRef Name, uint32_t MaxLen); #define PUSH_MASKED_FLAG(Enum, Mask, TheOpt, Value, Text) \ if (Enum::TheOpt == (Value & Mask)) \ Opts.push_back(Text); #define PUSH_FLAG(Enum, TheOpt, Value, Text) \ PUSH_MASKED_FLAG(Enum, Enum::TheOpt, TheOpt, Value, Text) #define RETURN_CASE(Enum, X, Ret) \ case Enum::X: \ return Ret; template <typename T> std::string formatUnknownEnum(T Value) { return formatv("unknown ({0})", static_cast<std::underlying_type_t<T>>(Value)) .str(); } std::string formatSegmentOffset(uint16_t Segment, uint32_t Offset); enum class CharacteristicStyle { HeaderDefinition, // format as windows header definition Descriptive, // format as human readable words }; std::string formatSectionCharacteristics( uint32_t IndentLevel, uint32_t C, uint32_t FlagsPerLine, StringRef Separator, CharacteristicStyle Style = CharacteristicStyle::HeaderDefinition); std::string typesetItemList(ArrayRef<std::string> Opts, uint32_t IndentLevel, uint32_t GroupSize, StringRef Sep); std::string typesetStringList(uint32_t IndentLevel, ArrayRef<StringRef> Strings); std::string formatChunkKind(codeview::DebugSubsectionKind Kind, bool Friendly = true); std::string formatSymbolKind(codeview::SymbolKind K); StringRef formatTypeLeafKind(codeview::TypeLeafKind K); /// Returns the number of digits in the given integer. inline int NumDigits(uint64_t N) { if (N < 10ULL) return 1; if (N < 100ULL) return 2; if (N < 1000ULL) return 3; if (N < 10000ULL) return 4; if (N < 100000ULL) return 5; if (N < 1000000ULL) return 6; if (N < 10000000ULL) return 7; if (N < 100000000ULL) return 8; if (N < 1000000000ULL) return 9; if (N < 10000000000ULL) return 10; if (N < 100000000000ULL) return 11; if (N < 1000000000000ULL) return 12; if (N < 10000000000000ULL) return 13; if (N < 100000000000000ULL) return 14; if (N < 1000000000000000ULL) return 15; if (N < 10000000000000000ULL) return 16; if (N < 100000000000000000ULL) return 17; if (N < 1000000000000000000ULL) return 18; if (N < 10000000000000000000ULL) return 19; return 20; } namespace detail { template <typename T> struct EndianAdapter final : public FormatAdapter<support::detail::packed_endian_specific_integral< T, support::little, support::unaligned>> { using EndianType = support::detail::packed_endian_specific_integral<T, support::little, support::unaligned>; explicit EndianAdapter(EndianType &&Item) : FormatAdapter<EndianType>(std::move(Item)) {} void format(llvm::raw_ostream &Stream, StringRef Style) { format_provider<T>::format(static_cast<T>(this->Item), Stream, Style); } }; } // namespace detail template <typename T> detail::EndianAdapter<T> fmtle(support::detail::packed_endian_specific_integral<T, support::little, support::unaligned> Value) { return detail::EndianAdapter<T>(std::move(Value)); } } } // namespace llvm #endif
Upload File
Create Folder