johanengelen added a comment.

In https://reviews.llvm.org/D44321#1034141, @timotheecour wrote:

> > It's a little more complicated for D because it's an out-of-tree compiler 
> > so it poses interesting challenges.
>
> the demangling itself is thoroughly tested in 
> https://github.com/dlang/druntime/blob/master/src/core/demangle.d


It's not the correct demangling of strings that needs to be tested. What needs 
testing:

- recognising D language and D mangled name
- loading of dynamic lib (plus testing that when loading fails lldb doesn't 
crash/exit; note: errmsg can be improved to e.g. "Failed to load D language 
plugin...")
- test that indeed the demangling function of the dyn lib is called

To test this, I think you can make a mock dynamic lib that implements the 
required interface, but in C++. The mock demangler could be something like this 
or even simpler:

  extern "C" char* lldbd_demangle(size_t length, const char* mangled) {
     if (mangled == "_D3fooFZv") // pseudo code
         return "void foo()";
     else
         return mangled;
  }

Then build that library in the test, and test loading and use on a fabricated 
piece of code (probably easiest to use C code with this in it: `extern "C" 
_D3fooFZv() { trap(); }`.


https://reviews.llvm.org/D44321



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

Reply via email to