labath added a reviewer: jingham.
labath added a comment.

In D78801#2050449 <https://reviews.llvm.org/D78801#2050449>, @paolosev wrote:

> Hello @clayborg , @labath,
>  Any thoughts on this latest patch? :-)


Sorry about the delay. I think that in terms of the design we've come as far as 
we can without making substantial changes to a lot of lldb interfaces. The 
question on my mind is.. is that enough?

Here, I am mainly thinking about the introduction of the ExecutionContext 
argument to `ReadMemory`. In a universe with static flat address spaces, the 
argument looks flat out wrong. If one thinks of "memory" as something more 
dynamic, it does not seem to be that bad, as it can be viewed as the context in 
which to interpret the memory addresses. However, I am having trouble assigning 
a semantic to it besides saying "it does what webassembly needs". Maybe it's 
just because I live in a flat universe and lack address space intuition...

Anyway, I think it would be good to get more people's opinions on this. For 
start, I nominate Jim. :)

The problem with "looking forward to implementing more cleanly in the future 
with AddressSpecifiers" is that _everyone_ is looking forward to having address 
spaces, but noone is actually working on implementing them. And I want to be 
careful about accumulating technical debt like this upstream, because it's the 
technical debt which makes future implementations hard.

In D78801#2026636 <https://reviews.llvm.org/D78801#2026636>, @paolosev wrote:

> Note that WasmDWARFEvaluator::Evaluate() not only needs to handle 
> Wasm-specific opcodes like DW_OP_WASM_location, but might also handle in a 
> Wasm-specific way some "standard" opcodes. For example, static variables are 
> generally encoded with `DW_OP_addr`, but for WebAssembly the corresponding 
> offset is the offset in the module Data section, which is mapped into an area 
> of the Memory section when the module is loaded. So, memory reads related to 
> DW_OP_addr refer to a different space and should be dealt differently by the 
> runtime.
>  This makes `target variable *global_ptr` work when we have multiple 
> modules., because we can retrieve the module_id from the Module associated to 
> the DWARFExpression.


I am confused by this line of reasoning. For a global variable, the DW_OP_addr 
describes the location of the variable itself (the value of `&global_ptr`). 
That is what makes it possible to display the value of the pointer 
(`global_ptr`). Displaying the value of the pointed-to object (`*global_ptr`) 
is a different thing, and AFAIK it completely bypasses any dwarf expressions. 
Are you saying that the value of the pointer somehow inherits the "address 
space" of the memory where the pointer itself is located?


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D78801/new/

https://reviews.llvm.org/D78801



_______________________________________________
lldb-commits mailing list
lldb-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits

Reply via email to