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/Target/StackFrameRecognizer.h b/linux-x64/clang/include/lldb/Target/StackFrameRecognizer.h
index 2021ac5..baffc89 100644
--- a/linux-x64/clang/include/lldb/Target/StackFrameRecognizer.h
+++ b/linux-x64/clang/include/lldb/Target/StackFrameRecognizer.h
@@ -6,16 +6,19 @@
//
//===----------------------------------------------------------------------===//
-#ifndef liblldb_StackFrameRecognizer_h_
-#define liblldb_StackFrameRecognizer_h_
+#ifndef LLDB_TARGET_STACKFRAMERECOGNIZER_H
+#define LLDB_TARGET_STACKFRAMERECOGNIZER_H
#include "lldb/Core/ValueObject.h"
#include "lldb/Core/ValueObjectList.h"
#include "lldb/Symbol/VariableList.h"
+#include "lldb/Target/StopInfo.h"
#include "lldb/Utility/StructuredData.h"
#include "lldb/lldb-private-forward.h"
#include "lldb/lldb-public.h"
+#include <vector>
+
namespace lldb_private {
/// \class RecognizedStackFrame
@@ -33,10 +36,14 @@
virtual lldb::ValueObjectSP GetExceptionObject() {
return lldb::ValueObjectSP();
}
+ virtual lldb::StackFrameSP GetMostRelevantFrame() { return nullptr; };
virtual ~RecognizedStackFrame(){};
+ std::string GetStopDescription() { return m_stop_desc; }
+
protected:
lldb::ValueObjectListSP m_arguments;
+ std::string m_stop_desc;
};
/// \class StackFrameRecognizer
@@ -85,39 +92,49 @@
lldb::StackFrameSP frame) override;
private:
- DISALLOW_COPY_AND_ASSIGN(ScriptedStackFrameRecognizer);
+ ScriptedStackFrameRecognizer(const ScriptedStackFrameRecognizer &) = delete;
+ const ScriptedStackFrameRecognizer &
+ operator=(const ScriptedStackFrameRecognizer &) = delete;
};
-/// \class StackFrameRecognizerManager
-///
-/// Static class that provides a registry of known stack frame recognizers.
-/// Has static methods to add, enumerate, remove, query and invoke recognizers.
-
+/// Class that provides a registry of known stack frame recognizers.
class StackFrameRecognizerManager {
public:
- static void AddRecognizer(lldb::StackFrameRecognizerSP recognizer,
- ConstString module,
- ConstString symbol,
- bool first_instruction_only = true);
+ void AddRecognizer(lldb::StackFrameRecognizerSP recognizer,
+ ConstString module, llvm::ArrayRef<ConstString> symbols,
+ bool first_instruction_only = true);
- static void AddRecognizer(lldb::StackFrameRecognizerSP recognizer,
- lldb::RegularExpressionSP module,
- lldb::RegularExpressionSP symbol,
- bool first_instruction_only = true);
+ void AddRecognizer(lldb::StackFrameRecognizerSP recognizer,
+ lldb::RegularExpressionSP module,
+ lldb::RegularExpressionSP symbol,
+ bool first_instruction_only = true);
- static void ForEach(
- std::function<void(uint32_t recognizer_id, std::string recognizer_name,
- std::string module, std::string symbol,
- bool regexp)> const &callback);
+ void ForEach(std::function<
+ void(uint32_t recognizer_id, std::string recognizer_name,
+ std::string module, llvm::ArrayRef<ConstString> symbols,
+ bool regexp)> const &callback);
- static bool RemoveRecognizerWithID(uint32_t recognizer_id);
+ bool RemoveRecognizerWithID(uint32_t recognizer_id);
- static void RemoveAllRecognizers();
+ void RemoveAllRecognizers();
- static lldb::StackFrameRecognizerSP GetRecognizerForFrame(
- lldb::StackFrameSP frame);
+ lldb::StackFrameRecognizerSP GetRecognizerForFrame(lldb::StackFrameSP frame);
- static lldb::RecognizedStackFrameSP RecognizeFrame(lldb::StackFrameSP frame);
+ lldb::RecognizedStackFrameSP RecognizeFrame(lldb::StackFrameSP frame);
+
+private:
+ struct RegisteredEntry {
+ uint32_t recognizer_id;
+ lldb::StackFrameRecognizerSP recognizer;
+ bool is_regexp;
+ ConstString module;
+ lldb::RegularExpressionSP module_regexp;
+ std::vector<ConstString> symbols;
+ lldb::RegularExpressionSP symbol_regexp;
+ bool first_instruction_only;
+ };
+
+ std::deque<RegisteredEntry> m_recognizers;
};
/// \class ValueObjectRecognizerSynthesizedValue
@@ -137,7 +154,9 @@
SetName(parent.GetName());
}
- uint64_t GetByteSize() override { return m_parent->GetByteSize(); }
+ llvm::Optional<uint64_t> GetByteSize() override {
+ return m_parent->GetByteSize();
+ }
lldb::ValueType GetValueType() const override { return m_type; }
bool UpdateValue() override {
if (!m_parent->UpdateValueIfNeeded()) return false;
@@ -158,4 +177,4 @@
} // namespace lldb_private
-#endif // liblldb_StackFrameRecognizer_h_
+#endif // LLDB_TARGET_STACKFRAMERECOGNIZER_H