[Lldb-commits] [lldb] [llvm] [lldb][RISCV] function calls support in lldb expressions (PR #99336)

David Spickett via lldb-commits lldb-commits at lists.llvm.org
Tue Sep 10 02:35:00 PDT 2024


================
@@ -0,0 +1,62 @@
+//===--- DirectCallReplacementPass.h - RISC-V specific pass ---------------===//
+//
+// 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 LLDB_SOURCE_PLUGINS_ARCHITECTURE_RISCV_DIRECTCALLREPLACEMENTPASS_H
+#define LLDB_SOURCE_PLUGINS_ARCHITECTURE_RISCV_DIRECTCALLREPLACEMENTPASS_H
+
+#include "lldb/lldb-types.h"
+
+#include "llvm/IR/Instructions.h"
+#include "llvm/Pass.h"
+
+namespace lldb_private {
+
+class ExecutionContext;
+
+// During the lldb expression execution lldb wraps a user expression, jittes
+// fabricated code and then puts it into the stack memory. Thus, if user tried
----------------
DavidSpickett wrote:

Are you sure it's using stack memory? This would require the stack to be executable.

Generally we find a way to memory map some chunk and use that instead.

Maybe you're referring to jumps from that JIT'd code back to code in the binary, that those jumps may be too large?

https://github.com/llvm/llvm-project/pull/99336


More information about the lldb-commits mailing list