@@ -0,0 +1,83 @@
+//===-- PostMortemProcess.cpp ---*- 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: Apa
@@ -0,0 +1,83 @@
+//===-- PostMortemProcess.cpp ---*- 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: Apa
https://github.com/clayborg commented:
I am good with this if Jim and Pavel's issues have been resolved.
https://github.com/llvm/llvm-project/pull/102223
___
lldb-commits mailing list
lldb-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/l
https://github.com/clayborg requested changes to this pull request.
https://github.com/llvm/llvm-project/pull/102708
___
lldb-commits mailing list
lldb-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits
@@ -258,6 +258,9 @@ class TypeSummaryImpl {
virtual std::string GetDescription() = 0;
+ virtual ConstString GetName() = 0;
+ virtual ConstString GetImplType() = 0;
clayborg wrote:
Add header doc for these explaining what they are.
https://github.com/llv
@@ -145,15 +148,34 @@ std::string CXXFunctionSummaryFormat::GetDescription() {
return std::string(sstr.GetString());
}
+ConstString CXXFunctionSummaryFormat::GetName() {
+ return ConstString(m_description);
+}
+
+ConstString CXXFunctionSummaryFormat::GetImplType() {
+ retu
@@ -602,7 +602,7 @@ bool ValueObject::GetSummaryAsCString(TypeSummaryImpl
*summary_ptr,
actual_options.SetLanguage(GetPreferredDisplayLanguage());
// this is a hot path in code and we prefer to avoid setting this string all
- // too often also clearing out other inform
@@ -258,6 +258,9 @@ class TypeSummaryImpl {
virtual std::string GetDescription() = 0;
+ virtual ConstString GetName() = 0;
+ virtual ConstString GetImplType() = 0;
+
clayborg wrote:
We should switch to `std::string` instead of `ConstString.. These object
@@ -174,6 +176,83 @@ struct StatisticsOptions {
std::optional m_include_transcript;
};
+/// A class that represents statistics about a TypeSummaryProviders invocations
+class SummaryStatistics {
+public:
+ SummaryStatistics() = default;
+ SummaryStatistics(lldb_private::Co
@@ -116,6 +116,9 @@ std::string StringSummaryFormat::GetDescription() {
return std::string(sstr.GetString());
}
+ConstString StringSummaryFormat::GetName() { return ConstString(m_format_str);
}
+ConstString StringSummaryFormat::GetImplType() { return ConstString("string");
@@ -174,6 +177,84 @@ struct StatisticsOptions {
std::optional m_include_transcript;
};
+/// A class that represents statistics about a TypeSummaryProviders invocations
+class SummaryStatistics {
+public:
+ explicit SummaryStatistics(lldb_private::ConstString name,
+
https://github.com/clayborg commented:
I vote to leave this PR as is because `VMRangeToFileOffset` is a list of
VMRanges that map to file offsets and this list combines entries with
consecutive address ranges whose data is consecutive in the core file. And
`VMRangeToPermissions` does not break
clayborg wrote:
That being said, if there is something we can do to this PR to make it easy for
you (Pavel) to implement this feature, we can make those changes. Like I think
it would be fair to change all `PeekMemory/DoPeekMemory` over a virtual
`ReadMemory/DoReadMemory` that returns a `DataE
clayborg wrote:
Yes, this is primarily for performance of C++ coroutine detection where we must
search memory for magic values.
https://github.com/llvm/llvm-project/pull/102536
___
lldb-commits mailing list
lldb-commits@lists.llvm.org
https://lists.ll
https://github.com/clayborg requested changes to this pull request.
https://github.com/llvm/llvm-project/pull/102708
___
lldb-commits mailing list
lldb-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits
@@ -174,6 +177,86 @@ struct StatisticsOptions {
std::optional m_include_transcript;
};
+/// A class that represents statistics about a TypeSummaryProviders invocations
+class SummaryStatistics {
+public:
+ explicit SummaryStatistics(std::string name, std::string impl_type)
@@ -201,3 +216,12 @@ std::string ScriptSummaryFormat::GetDescription() {
}
return std::string(sstr.GetString());
}
+
+std::string ScriptSummaryFormat::GetName() { return m_script_formatter_name; }
+
+std::string ScriptSummaryFormat::GetSummaryKindName() {
+ if (!m_python_s
@@ -615,7 +615,16 @@ bool ValueObject::GetSummaryAsCString(TypeSummaryImpl
*summary_ptr,
m_synthetic_value->UpdateValueIfNeeded(); // the summary might depend on
// the synthetic children being
@@ -408,3 +410,21 @@ llvm::json::Value DebuggerStats::ReportStatistics(
return std::move(global_stats);
}
+
+llvm::json::Value SummaryStatistics::ToJSON() const {
+ return json::Object{{
+ {"name", GetName()},
+ {"type", GetSummaryKindName()},
+ {"invocationC
clayborg wrote:
> Could you please explain to me why we use different rules in symbol lookups?
> Namely:
>
> *
> [ClangExpressionDeclMap::GetSymbolAddress](https://github.com/llvm/llvm-project/pull/102835/files#diff-5d2da8306a4f4991885836925979f188658789adc8041c37811c243f2cdca24c)
> doesn't s
@@ -174,6 +177,83 @@ struct StatisticsOptions {
std::optional m_include_transcript;
};
+/// A class that represents statistics about a TypeSummaryProviders invocations
+class SummaryStatistics {
+public:
+ explicit SummaryStatistics(std::string name, std::string impl_type)
@@ -174,6 +177,83 @@ struct StatisticsOptions {
std::optional m_include_transcript;
};
+/// A class that represents statistics about a TypeSummaryProviders invocations
+class SummaryStatistics {
+public:
+ explicit SummaryStatistics(std::string name, std::string impl_type)
https://github.com/clayborg requested changes to this pull request.
https://github.com/llvm/llvm-project/pull/104317
___
lldb-commits mailing list
lldb-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits
@@ -1085,6 +1085,19 @@ std::string
VariableDescription::GetResult(llvm::StringRef context) {
return description.trim().str();
}
+lldb::addr_t GetMemoryReference(lldb::SBValue v) {
+ if (!v.GetType().IsPointerType() && !v.GetType().IsArrayType()) {
+return LLDB_INVALID_
@@ -4028,6 +4049,154 @@ void request_disassemble(const llvm::json::Object
&request) {
response.try_emplace("body", std::move(body));
g_dap.SendJSON(llvm::json::Value(std::move(response)));
}
+
+// "ReadMemoryRequest": {
+// "allOf": [ { "$ref": "#/definitions/Request" },
@@ -4028,6 +4049,154 @@ void request_disassemble(const llvm::json::Object
&request) {
response.try_emplace("body", std::move(body));
g_dap.SendJSON(llvm::json::Value(std::move(response)));
}
+
+// "ReadMemoryRequest": {
+// "allOf": [ { "$ref": "#/definitions/Request" },
@@ -1085,6 +1085,19 @@ std::string
VariableDescription::GetResult(llvm::StringRef context) {
return description.trim().str();
}
+lldb::addr_t GetMemoryReference(lldb::SBValue v) {
clayborg wrote:
If we return a `std::optional` it will clean up the call sit
@@ -3600,8 +3617,12 @@ void request_setVariable(const llvm::json::Object
&request) {
if (variable.MightHaveChildren())
newVariablesReference = g_dap.variables.InsertExpandableVariable(
variable, /*is_permanent=*/false);
-
body.try_emplace("vari
@@ -1411,6 +1422,10 @@ void request_evaluate(const llvm::json::Object &request)
{
} else {
body.try_emplace("variablesReference", (int64_t)0);
}
+ if (lldb::addr_t addr = GetMemoryReference(value);
+ addr != LLDB_INVALID_ADDRESS) {
+bo
@@ -1253,6 +1274,10 @@ llvm::json::Value CreateVariable(lldb::SBValue v,
int64_t variablesReference,
else
object.try_emplace("variablesReference", (int64_t)0);
+ if (lldb::addr_t addr = GetMemoryReference(v); addr != LLDB_INVALID_ADDRESS)
{
+object.try_emplace("me
@@ -411,6 +411,12 @@ struct VariableDescription {
std::string GetResult(llvm::StringRef context);
};
+/// Get the corresponding `memoryReference` for a value.
+///
+/// According to the DAP documentation, the `memoryReference` should
+/// refer to the pointee, not to the add
@@ -4028,6 +4049,154 @@ void request_disassemble(const llvm::json::Object
&request) {
response.try_emplace("body", std::move(body));
g_dap.SendJSON(llvm::json::Value(std::move(response)));
}
+
+// "ReadMemoryRequest": {
+// "allOf": [ { "$ref": "#/definitions/Request" },
@@ -4028,6 +4049,154 @@ void request_disassemble(const llvm::json::Object
&request) {
response.try_emplace("body", std::move(body));
g_dap.SendJSON(llvm::json::Value(std::move(response)));
}
+
+// "ReadMemoryRequest": {
+// "allOf": [ { "$ref": "#/definitions/Request" },
@@ -4028,6 +4049,154 @@ void request_disassemble(const llvm::json::Object
&request) {
response.try_emplace("body", std::move(body));
g_dap.SendJSON(llvm::json::Value(std::move(response)));
}
+
+// "ReadMemoryRequest": {
+// "allOf": [ { "$ref": "#/definitions/Request" },
@@ -4028,6 +4049,154 @@ void request_disassemble(const llvm::json::Object
&request) {
response.try_emplace("body", std::move(body));
g_dap.SendJSON(llvm::json::Value(std::move(response)));
}
+
+// "ReadMemoryRequest": {
+// "allOf": [ { "$ref": "#/definitions/Request" },
@@ -394,6 +420,107 @@ Status ELFLinuxPrPsInfo::Parse(const DataExtractor &data,
return error;
}
+std::optional
+ELFLinuxPrPsInfo::Populate(const lldb::ProcessSP &process_sp) {
+ ELFLinuxPrPsInfo prpsinfo{};
+ prpsinfo.pr_pid = process_sp->GetID();
+ ProcessInstanceInfo in
@@ -394,6 +420,107 @@ Status ELFLinuxPrPsInfo::Parse(const DataExtractor &data,
return error;
}
+std::optional
+ELFLinuxPrPsInfo::Populate(const lldb::ProcessSP &process_sp) {
+ ELFLinuxPrPsInfo prpsinfo{};
+ prpsinfo.pr_pid = process_sp->GetID();
+ ProcessInstanceInfo in
@@ -394,6 +420,107 @@ Status ELFLinuxPrPsInfo::Parse(const DataExtractor &data,
return error;
}
+std::optional
+ELFLinuxPrPsInfo::Populate(const lldb::ProcessSP &process_sp) {
+ ELFLinuxPrPsInfo prpsinfo{};
+ prpsinfo.pr_pid = process_sp->GetID();
+ ProcessInstanceInfo in
@@ -394,6 +420,107 @@ Status ELFLinuxPrPsInfo::Parse(const DataExtractor &data,
return error;
}
+std::optional
+ELFLinuxPrPsInfo::Populate(const lldb::ProcessSP &process_sp) {
+ ELFLinuxPrPsInfo prpsinfo{};
+ prpsinfo.pr_pid = process_sp->GetID();
+ ProcessInstanceInfo in
@@ -394,6 +420,107 @@ Status ELFLinuxPrPsInfo::Parse(const DataExtractor &data,
return error;
}
+std::optional
+ELFLinuxPrPsInfo::Populate(const lldb::ProcessSP &process_sp) {
+ ELFLinuxPrPsInfo prpsinfo{};
+ prpsinfo.pr_pid = process_sp->GetID();
+ ProcessInstanceInfo in
@@ -318,6 +318,32 @@ Status ELFLinuxPrStatus::Parse(const DataExtractor &data,
return error;
}
+static struct compat_timeval
+copy_timespecs(const ProcessInstanceInfo::timespec &oth) {
+ using sec_t = decltype(compat_timeval::tv_sec);
+ using usec_t = decltype(compat_timev
@@ -394,6 +420,107 @@ Status ELFLinuxPrPsInfo::Parse(const DataExtractor &data,
return error;
}
+std::optional
+ELFLinuxPrPsInfo::Populate(const lldb::ProcessSP &process_sp) {
+ ELFLinuxPrPsInfo prpsinfo{};
+ prpsinfo.pr_pid = process_sp->GetID();
+ ProcessInstanceInfo in
@@ -318,6 +318,32 @@ Status ELFLinuxPrStatus::Parse(const DataExtractor &data,
return error;
}
+static struct compat_timeval
+copy_timespecs(const ProcessInstanceInfo::timespec &oth) {
+ using sec_t = decltype(compat_timeval::tv_sec);
+ using usec_t = decltype(compat_timev
@@ -29,10 +29,10 @@
ThreadPlanSingleThreadTimeout::ThreadPlanSingleThreadTimeout(
: ThreadPlan(ThreadPlan::eKindSingleThreadTimeout, "Single thread timeout",
thread, eVoteNo, eVoteNoOpinion),
m_info(info), m_state(State::WaitTimeout) {
- // TODO: re
https://github.com/clayborg approved this pull request.
https://github.com/llvm/llvm-project/pull/104041
___
lldb-commits mailing list
lldb-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits
https://github.com/clayborg approved this pull request.
https://github.com/llvm/llvm-project/pull/102223
___
lldb-commits mailing list
lldb-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits
https://github.com/clayborg commented:
Looks good, just one {} left, see inline comment.
https://github.com/llvm/llvm-project/pull/104109
___
lldb-commits mailing list
lldb-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-com
@@ -318,6 +318,32 @@ Status ELFLinuxPrStatus::Parse(const DataExtractor &data,
return error;
}
+static struct compat_timeval
+copy_timespecs(const ProcessInstanceInfo::timespec &oth) {
+ using sec_t = decltype(compat_timeval::tv_sec);
+ using usec_t = decltype(compat_timev
https://github.com/clayborg edited
https://github.com/llvm/llvm-project/pull/104109
___
lldb-commits mailing list
lldb-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits
@@ -318,6 +318,32 @@ Status ELFLinuxPrStatus::Parse(const DataExtractor &data,
return error;
}
+static struct compat_timeval
+copy_timespecs(const ProcessInstanceInfo::timespec &oth) {
+ using sec_t = decltype(compat_timeval::tv_sec);
+ using usec_t = decltype(compat_timev
https://github.com/clayborg approved this pull request.
https://github.com/llvm/llvm-project/pull/104497
___
lldb-commits mailing list
lldb-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits
clayborg wrote:
Please make a follow up patch to remove the use of PATH_MAX in the SmallString.
It isn't needed. Just set the value to 1024 and let the SmallString allocate on
the heap if it goes over.
https://github.com/llvm/llvm-project/pull/104493
__
@@ -26,6 +27,8 @@ class Platform;
class ExecutionContext;
class RegisterFlags;
+typedef llvm::SmallString<128> PathSmallString;
clayborg wrote:
I would do 256 as a starting point for paths.
https://github.com/llvm/llvm-project/pull/104502
___
https://github.com/clayborg approved this pull request.
https://github.com/llvm/llvm-project/pull/104502
___
lldb-commits mailing list
lldb-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits
https://github.com/clayborg commented:
Looks good to me. Lets give Pavel a day to respond, if not I will approve.
https://github.com/llvm/llvm-project/pull/101086
___
lldb-commits mailing list
lldb-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/
https://github.com/clayborg requested changes to this pull request.
https://github.com/llvm/llvm-project/pull/104317
___
lldb-commits mailing list
lldb-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits
@@ -1085,6 +1084,17 @@ std::string
VariableDescription::GetResult(llvm::StringRef context) {
return description.trim().str();
}
+std::optional GetMemoryReference(lldb::SBValue v) {
+ if (!v.GetType().IsPointerType() && !v.GetType().IsArrayType())
+return std::nullopt;
@@ -4028,6 +4049,154 @@ void request_disassemble(const llvm::json::Object
&request) {
response.try_emplace("body", std::move(body));
g_dap.SendJSON(llvm::json::Value(std::move(response)));
}
+
+// "ReadMemoryRequest": {
+// "allOf": [ { "$ref": "#/definitions/Request" },
https://github.com/clayborg edited
https://github.com/llvm/llvm-project/pull/104532
___
lldb-commits mailing list
lldb-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits
https://github.com/clayborg commented:
Seems pretty clean, but we need to get Jim's opinion in case there is a better
way to do this that he would prefer.
https://github.com/llvm/llvm-project/pull/104532
___
lldb-commits mailing list
lldb-commits@list
@@ -103,6 +103,12 @@ bool ThreadPlanStepOverBreakpoint::ShouldStop(Event
*event_ptr) {
bool ThreadPlanStepOverBreakpoint::StopOthers() { return true; }
+// The ThreadPlanSingleThreadTimeout can interrupt and resume all threads
during
+// stepping, which may cause them to mi
https://github.com/clayborg approved this pull request.
https://github.com/llvm/llvm-project/pull/101086
___
lldb-commits mailing list
lldb-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits
@@ -3091,17 +3093,20 @@ void request_stackTrace(const llvm::json::Object
&request) {
// This will always return an invalid thread when
// libBacktraceRecording.dylib is not loaded or if there is no extended
// backtrace.
-lldb::SBThread queue_backtrace_thread =
@@ -3091,17 +3093,20 @@ void request_stackTrace(const llvm::json::Object
&request) {
// This will always return an invalid thread when
// libBacktraceRecording.dylib is not loaded or if there is no extended
// backtrace.
-lldb::SBThread queue_backtrace_thread =
@@ -45,7 +45,6 @@ class LLDB_API SBMemoryRegionInfoList {
private:
friend class SBProcess;
-
clayborg wrote:
revert whitespace only change
https://github.com/llvm/llvm-project/pull/105442
___
lldb-commits mailing
@@ -1222,6 +1222,7 @@ enum SaveCoreStyle {
eSaveCoreFull = 1,
eSaveCoreDirtyOnly = 2,
eSaveCoreStackOnly = 3,
+ eSaveCoreCustom = 4,
clayborg wrote:
Should we name this `eSaveCoreCustomOnly`? We should add some header doc for
each of these above ones a
@@ -6686,9 +6710,12 @@ Status Process::CalculateCoreFileSaveRanges(const
SaveCoreOptions &options,
if (err.Fail())
return err;
- if (ranges.empty())
+ if (ranges.IsEmpty())
return Status("no valid address ranges found for core style");
+ // Sort the range data
@@ -101,6 +103,18 @@ bool SaveCoreOptions::ShouldThreadBeSaved(lldb::tid_t tid)
const {
return m_threads_to_save.count(tid) > 0;
}
+bool SaveCoreOptions::HasSpecifiedThreads() const {
+ return !m_threads_to_save.empty();
+}
+
+void SaveCoreOptions::AddMemoryRegionToSave(co
@@ -80,6 +80,17 @@ class LLDB_API SBSaveCoreOptions {
/// \return True if the thread was removed, false if it was not in the list.
bool RemoveThread(lldb::SBThread thread);
+ /// Add a memory region to save in the core file.
+ ///
+ /// \param region The memory region t
@@ -6544,7 +6545,8 @@ static void AddRegion(const MemoryRegionInfo ®ion,
bool try_dirty_pages,
return;
if (try_dirty_pages && AddDirtyPages(region, ranges))
return;
- ranges.push_back(CreateCoreFileMemoryRange(region));
+
+ ranges.Append(region.GetRange().GetRangeB
@@ -101,6 +103,18 @@ bool SaveCoreOptions::ShouldThreadBeSaved(lldb::tid_t tid)
const {
return m_threads_to_save.count(tid) > 0;
}
+bool SaveCoreOptions::HasSpecifiedThreads() const {
+ return !m_threads_to_save.empty();
+}
+
+void SaveCoreOptions::AddMemoryRegionToSave(co
https://github.com/clayborg commented:
You didn't add the new launch config variable to the package.json. Please add
with a new PR with descriptions.
https://github.com/llvm/llvm-project/pull/104874
___
lldb-commits mailing list
lldb-commits@lists.llv
clayborg wrote:
>From the DAP protocol for "StackTraceRequest", I see this in the response:
```
/**
* The total number of frames available in the stack. If omitted or if
* `totalFrames` is larger than the available frames, a client is expected
* to request frames until a reques
@@ -3111,17 +3115,20 @@ void request_stackTrace(const llvm::json::Object
&request) {
// This will always return an invalid thread when
// libBacktraceRecording.dylib is not loaded or if there is no extended
// backtrace.
-lldb::SBThread queue_backtrace_thread =
@@ -1085,6 +1084,17 @@ std::string
VariableDescription::GetResult(llvm::StringRef context) {
return description.trim().str();
}
+std::optional GetMemoryReference(lldb::SBValue v) {
+ if (!v.GetType().IsPointerType() && !v.GetType().IsArrayType())
+return std::nullopt;
https://github.com/clayborg approved this pull request.
https://github.com/llvm/llvm-project/pull/105442
___
lldb-commits mailing list
lldb-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits
clayborg wrote:
I wonder if this needs to default to column 1? We might end up adding column
zero.
```
/**
* Start position of the range covered by the stack frame. It is measured in
* UTF-16 code units and the client capability `columnsStartAt1` determines
* whether it is 0- or 1-ba
https://github.com/clayborg commented:
I worry the assert will kill the LLDB library and cause issues. Can we add a
temporary setting that can override this in case it does cause crashes? I
really don't want LLDB crashing if we can help it. It will be hard to test all
of the error code paths t
https://github.com/clayborg approved this pull request.
https://github.com/llvm/llvm-project/pull/106030
___
lldb-commits mailing list
lldb-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits
clayborg wrote:
My concerns are addressed, thanks @adrian-prantl
https://github.com/llvm/llvm-project/pull/106163
___
lldb-commits mailing list
lldb-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits
https://github.com/clayborg commented:
LGTM. I will let others chime in.
https://github.com/llvm/llvm-project/pull/104193
___
lldb-commits mailing list
lldb-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits
https://github.com/clayborg edited
https://github.com/llvm/llvm-project/pull/104193
___
lldb-commits mailing list
lldb-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits
@@ -3367,21 +3340,48 @@ lldb::addr_t Process::FindInMemory(lldb::addr_t low,
lldb::addr_t high,
if (region_size < size)
return LLDB_INVALID_ADDRESS;
+ // See "Boyer-Moore string search algorithm".
std::vector bad_char_heuristic(256, size);
- ProcessMemoryIterator i
clayborg wrote:
> > What happens if we stop preferring the external symbols over internal ones
> > in IRExecutionUnit::FindInSymbols? What tests break?
>
> It looks like there are no failing tests.
We should always prefer symbols from the current module first, probably
external first, then fa
clayborg wrote:
Don't let us hold this patch up if returning the the original patch that fixes
things makes things work if you can't easily get the same functionality from
this version of the patch. Will one part of this patch work with the new stuff
and the other part not? If so, maybe we all
clayborg wrote:
Let me know what you think of my idea to always just show the load address of
any SBValue. I think that is the best for LLDB, but I am open to opinions.
https://github.com/llvm/llvm-project/pull/104317
___
lldb-commits mailing list
lld
clayborg wrote:
> I think Greg is saying that if we don't find a local symbol, and don't find
> the symbol in the global symbols of the current module, then we should search
> all the other modules, but in that case preferring external symbols to
> internal since those are the ones that are po
clayborg wrote:
Sorry for the delay, feel free to ping sooner next time! Lets start with this
and we can iterate on it!
https://github.com/llvm/llvm-project/pull/102111
___
lldb-commits mailing list
lldb-commits@lists.llvm.org
https://lists.llvm.org/c
https://github.com/clayborg approved this pull request.
https://github.com/llvm/llvm-project/pull/102111
___
lldb-commits mailing list
lldb-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits
https://github.com/clayborg approved this pull request.
https://github.com/llvm/llvm-project/pull/106532
___
lldb-commits mailing list
lldb-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits
https://github.com/clayborg commented:
Please fix and revert this, we do not want this in open source. Very easy to
fix and the warning does nothing to improve the situation and actually will be
bad for the product. Happy to discuss over VC and get a real fix in quickly
https://github.com/llvm
@@ -153,6 +153,10 @@ struct MinidumpContext_x86_64 {
llvm::support::ulittle64_t last_branch_from_rip;
llvm::support::ulittle64_t last_exception_to_rip;
llvm::support::ulittle64_t last_exception_from_rip;
+
+ // These registers are LLDB specific.
clayborg
@@ -473,7 +473,8 @@ GetThreadContext_x86_64(RegisterContext *reg_ctx) {
lldb_private::minidump::MinidumpContext_x86_64_Flags::x86_64_Flag |
lldb_private::minidump::MinidumpContext_x86_64_Flags::Control |
lldb_private::minidump::MinidumpContext_x86_64_Flags::Se
@@ -67,6 +67,18 @@ def verify_core_file(
self.assertIn(thread_id, stacks_to_registers_map)
register_val_list = stacks_to_registers_map[thread_id]
frame_register_list = frame.GetRegisters()
+# explicitly verify we collected fs and
https://github.com/clayborg approved this pull request.
LGTM.
https://github.com/llvm/llvm-project/pull/104193
___
lldb-commits mailing list
lldb-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits
https://github.com/clayborg commented:
We need the `DWARFFormValue::ExtractValue ` to work. We spoke about pointing
the `DWARFFormValue::ValueType::data` at the 16 bytes of data and have the
`DWARFFormValue::ValueType::value.uval` contain 16 as the length of the data in
`DWARFFormValue::ValueT
clayborg wrote:
Ping for my comments?
https://github.com/llvm/llvm-project/pull/104317
___
lldb-commits mailing list
lldb-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits
clayborg wrote:
Can we modify this patch to support both formats? It should be easy to see if
"env" is a dictionary, and if it is, use your new code. If it is an array, use
the old parsing code. I would like to make sure this change doesn't break
anyone that has existing launch configurations.
https://github.com/clayborg approved this pull request.
https://github.com/llvm/llvm-project/pull/104193
___
lldb-commits mailing list
lldb-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits
https://github.com/clayborg commented:
All symbol sizes are zero for mach-o symbols unless they come from the debug
map as there is no size field in nlist entries. This PR seems to just not do
the work of setting the symbol size at all. Does something try to set the
symbol sizes later? Does th
1701 - 1800 of 3323 matches
Mail list logo