================
@@ -861,84 +861,159 @@ ResolveLoadAddress(ExecutionContext *exe_ctx, 
lldb::ModuleSP &module_sp,
   return load_addr;
 }
 
-static llvm::Error Evaluate_DW_OP_deref(DWARFExpression::Stack &stack,
-                                        ExecutionContext *exe_ctx,
-                                        lldb::ModuleSP module_sp,
-                                        Process *process) {
-  if (stack.empty())
-    return llvm::createStringError("expression stack empty for DW_OP_deref");
-
-  const Value::ValueType value_type = stack.back().GetValueType();
+/// Helper function to move common code used to load sized data from a uint8_t
+/// buffer.
+///
+/// \param addr_bytes uint8_t buffer containg raw data
+/// \param size_addr_bytes how large is the underlying raw data
+/// \param byte_order what is the byter order of the underlyig data
+/// \param size How much of the underlying data we want to use
+/// \return The underlying data converted into a Scalar
+static Scalar DerefSizeExtractDataHelper(uint8_t *addr_bytes,
+                                         size_t size_addr_bytes,
+                                         ByteOrder byte_order, size_t size) {
+  DataExtractor addr_data(addr_bytes, size_addr_bytes, byte_order, size);
+
+  lldb::offset_t addr_data_offset = 0;
+  if (size <= 8)
+    return addr_data.GetMaxU64(&addr_data_offset, size);
+  else
+    return addr_data.GetAddress(&addr_data_offset);
+}
+
+static llvm::Error Evaluate_DW_OP_deref_size(DWARFExpression::Stack &stack,
+                                             ExecutionContext *exe_ctx,
+                                             lldb::ModuleSP module_sp,
+                                             Process *process, Target *target,
+                                             uint8_t size) {
+  if (stack.empty()) {
+    return llvm::createStringError(
+        "expression stack empty for DW_OP_deref_size");
+  }
+
+  if (size > 8) {
+    return llvm::createStringError(
+        "Invalid address size for DW_OP_deref_size: %d\n", size);
+  }
----------------
JDevlieghere wrote:

No braces.

https://github.com/llvm/llvm-project/pull/169587
_______________________________________________
lldb-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits

Reply via email to