labath added a comment.

Regardless of the future of the syscall approach, I think limiting ourselves to 
external mmap symbols is a good idea. And if it fixes your problem -- great.

It would be good to have a test for that, though. Maybe something like this 
would do?

  static void *mmap() { return (void *)47; }
  
  int call_me() { return 42; }
  
  int main() {
    mmap();
    return call_me();
  }

right now, I am unable to evaluate `call_me()` with lldb. I guess your patch 
should make that possible?



================
Comment at: lldb/source/Plugins/Process/Utility/InferiorCallPOSIX.cpp:54
+    if (sc_list.GetContextAtIndex(i, sc) &&
+        (sc.symbol->IsExternal() || sc.symbol->IsWeak())) {
       const uint32_t range_scope =
----------------
clayborg wrote:
> aadsm wrote:
> > clayborg wrote:
> > > Why are we checking "IsWeak()" here?
> > A weak symbol is also an external symbol, but it's weak in the sense that 
> > another external symbol with the same name will take precedence over it (as 
> > far as I understood).
> I think we only need to check for external here. Any weak symbol will also 
> need to be external, but if it isn't we don't want that symbol.
Your understanding is correct, at least at the object file level -- I'm not 
sure whether `IsWeak()` implies `IsExternal()` inside lldb. However, I would 
actually argue for removal of IsWeak() for a different reason -- any weak 
definition of mmap is not going to be used by the process since libc already 
has a strong definition of that symbol.

If we really end up in a situation where we only have a weak mmap symbol 
around, then this is probably a sufficiently strange setup that we don't want 
to be randomly calling that function.


Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D87868

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

Reply via email to