Update prebuilt Clang to r416183b from Android.
https://android.googlesource.com/platform/prebuilts/clang/host/
linux-x86/+/06a71ddac05c22edb2d10b590e1769b3f8619bef
clang 12.0.5 (based on r416183b) from build 7284624.
Change-Id: I277a316abcf47307562d8b748b84870f31a72866
Signed-off-by: Olivier Deprez <olivier.deprez@arm.com>
diff --git a/linux-x64/clang/include/lldb/Symbol/ObjectFile.h b/linux-x64/clang/include/lldb/Symbol/ObjectFile.h
index 84683e3..080724c 100644
--- a/linux-x64/clang/include/lldb/Symbol/ObjectFile.h
+++ b/linux-x64/clang/include/lldb/Symbol/ObjectFile.h
@@ -6,8 +6,8 @@
//
//===----------------------------------------------------------------------===//
-#ifndef liblldb_ObjectFile_h_
-#define liblldb_ObjectFile_h_
+#ifndef LLDB_SYMBOL_OBJECTFILE_H
+#define LLDB_SYMBOL_OBJECTFILE_H
#include "lldb/Core/FileSpecList.h"
#include "lldb/Core/ModuleChild.h"
@@ -63,16 +63,22 @@
public:
enum Type {
eTypeInvalid = 0,
- eTypeCoreFile, /// A core file that has a checkpoint of a program's
- /// execution state
- eTypeExecutable, /// A normal executable
- eTypeDebugInfo, /// An object file that contains only debug information
- eTypeDynamicLinker, /// The platform's dynamic linker executable
- eTypeObjectFile, /// An intermediate object file
- eTypeSharedLibrary, /// A shared library that can be used during execution
- eTypeStubLibrary, /// A library that can be linked against but not used for
- /// execution
- eTypeJIT, /// JIT code that has symbols, sections and possibly debug info
+ /// A core file that has a checkpoint of a program's execution state.
+ eTypeCoreFile,
+ /// A normal executable.
+ eTypeExecutable,
+ /// An object file that contains only debug information.
+ eTypeDebugInfo,
+ /// The platform's dynamic linker executable.
+ eTypeDynamicLinker,
+ /// An intermediate object file.
+ eTypeObjectFile,
+ /// A shared library that can be used during execution.
+ eTypeSharedLibrary,
+ /// A library that can be linked against but not used for execution.
+ eTypeStubLibrary,
+ /// JIT code that has symbols, sections and possibly debug info.
+ eTypeJIT,
eTypeUnknown
};
@@ -85,6 +91,17 @@
eStrataJIT
};
+ /// If we have a corefile binary hint, this enum
+ /// specifies the binary type which we can use to
+ /// select the correct DynamicLoader plugin.
+ enum BinaryType {
+ eBinaryTypeInvalid = 0,
+ eBinaryTypeUnknown,
+ eBinaryTypeKernel, /// kernel binary
+ eBinaryTypeUser, /// user process binary
+ eBinaryTypeStandalone /// standalone binary / firmware
+ };
+
struct LoadableData {
lldb::addr_t Dest;
llvm::ArrayRef<uint8_t> Contents;
@@ -124,7 +141,7 @@
/// ObjectFile plug-in interface and returns the first instance that can
/// parse the file.
///
- /// \param[in] module
+ /// \param[in] module_sp
/// The parent module that owns this object file.
///
/// \param[in] file_spec
@@ -152,7 +169,7 @@
/// ObjectFile plug-in interface and returns the first instance that can
/// parse the file.
///
- /// \param[in] module
+ /// \param[in] module_sp
/// The parent module that owns this object file.
///
/// \param[in] process_sp
@@ -166,10 +183,10 @@
lldb::addr_t header_addr,
lldb::DataBufferSP &file_data_sp);
- static size_t GetModuleSpecifications(const FileSpec &file,
- lldb::offset_t file_offset,
- lldb::offset_t file_size,
- ModuleSpecList &specs);
+ static size_t
+ GetModuleSpecifications(const FileSpec &file, lldb::offset_t file_offset,
+ lldb::offset_t file_size, ModuleSpecList &specs,
+ lldb::DataBufferSP data_sp = lldb::DataBufferSP());
static size_t GetModuleSpecifications(const lldb_private::FileSpec &file,
lldb::DataBufferSP &data_sp,
@@ -201,9 +218,13 @@
/// \b false otherwise and \a archive_file and \a archive_object
/// are guaranteed to be remain unchanged.
static bool SplitArchivePathWithObject(
- const char *path_with_object, lldb_private::FileSpec &archive_file,
+ llvm::StringRef path_with_object, lldb_private::FileSpec &archive_file,
lldb_private::ConstString &archive_object, bool must_exist);
+ // LLVM RTTI support
+ static char ID;
+ virtual bool isA(const void *ClassID) const { return ClassID == &ID; }
+
/// Gets the address size in bytes for the current object file.
///
/// \return
@@ -346,13 +367,6 @@
/// Frees the symbol table.
///
/// This function should only be used when an object file is
- ///
- /// \param[in] flags
- /// eSymtabFromUnifiedSectionList: Whether to clear symbol table
- /// for unified module section list, or object file.
- ///
- /// \return
- /// The symbol table for this object file.
virtual void ClearSymtab();
/// Gets the UUID for this object file.
@@ -366,17 +380,6 @@
/// returned.
virtual UUID GetUUID() = 0;
- /// Gets the symbol file spec list for this object file.
- ///
- /// If the object file format contains a debug symbol file link, the values
- /// will be returned in the FileSpecList.
- ///
- /// \return
- /// Returns filespeclist.
- virtual lldb_private::FileSpecList GetDebugSymbolFilePaths() {
- return FileSpecList();
- }
-
/// Gets the file spec list of libraries re-exported by this object file.
///
/// If the object file format has the notion of one library re-exporting the
@@ -488,8 +491,8 @@
/// \return
/// Returns the identifier string if one exists, else an empty
/// string.
- virtual std::string GetIdentifierString () {
- return std::string();
+ virtual std::string GetIdentifierString () {
+ return std::string();
}
/// When the ObjectFile is a core file, lldb needs to locate the "binary" in
@@ -508,12 +511,17 @@
/// If the uuid of the binary is specified, this will be set.
/// If no UUID is available, will be cleared.
///
+ /// \param[out] type
+ /// Return the type of the binary, which will dictate which
+ /// DynamicLoader plugin should be used.
+ ///
/// \return
/// Returns true if either address or uuid has been set.
- virtual bool GetCorefileMainBinaryInfo (lldb::addr_t &address, UUID &uuid) {
- address = LLDB_INVALID_ADDRESS;
- uuid.Clear();
- return false;
+ virtual bool GetCorefileMainBinaryInfo(lldb::addr_t &address, UUID &uuid,
+ ObjectFile::BinaryType &type) {
+ address = LLDB_INVALID_ADDRESS;
+ uuid.Clear();
+ return false;
}
virtual lldb::RegisterContextSP
@@ -653,10 +661,11 @@
///
/// \param[in] target
/// Target where to load.
- ///
- /// \return
virtual std::vector<LoadableData> GetLoadableData(Target &target);
+ /// Creates a plugin-specific call frame info
+ virtual std::unique_ptr<CallFrameInfo> CreateCallFrameInfo();
+
protected:
// Member variables.
FileSpec m_file;
@@ -693,7 +702,8 @@
uint64_t Offset);
private:
- DISALLOW_COPY_AND_ASSIGN(ObjectFile);
+ ObjectFile(const ObjectFile &) = delete;
+ const ObjectFile &operator=(const ObjectFile &) = delete;
};
} // namespace lldb_private
@@ -710,4 +720,4 @@
};
} // namespace llvm
-#endif // liblldb_ObjectFile_h_
+#endif // LLDB_SYMBOL_OBJECTFILE_H