I have been investigating the failure of the ‘DynamicValueTestCase.test_get_dynamic_value_with_dwarf’ test on Linux, and to my surprise it seems to be failing because LLDB doesn’t find a C++ language runtime plug-in on Linux. I see that there is an ItaniumABI plug-in for C++, but no language runtimes get used on my x86_64-based Linux system. I’m guessing that on Mac OS’s this is handled by the ObjectiveC V2 plugin, but that doesn’t get used on Linux either.
Anyway, I was about to file an issue in Bugzilla to implement a C++ language runtime plug-in, but it seemed like a good idea to solicit input on history, design decisions and such first.
Does anyone know anything about this?
Apple uses the ItaniumABI for C++ on Mac OS X and iOS. I'm pretty sure Linux does as well. So if you wire that one up on Linux it should just work.
This is an easy fix. In lldb.cpp the inclusion and init/terminate routines for the itanium plug-in are hidden in "#if defined (__APPLE__)" and it shouldn't be.
Andrew: please try and remove the "#if defined (__APPLE__)" from the following plug-ins so that all systems load them. Can you try and remove all instances of "#if defined (__APPLE__)" from lldb.cpp and see if this compiles?
They should all compile and be available on other systems so that you can remote debug to MacOSX. Let us know if there are any issues.
When I remove all the "#if defined (__APPLE__)" lines it compiles, but I get unresolved externals, so I guess there are a few other build files changes that would be required.
If I move just the ItaniumABILanguageRuntime lines outside the 'if defined' blocks, that compiles and links and fixes the problem with the dynamic values test case.
We had talked about maybe being able to reuse most of the ItaniumABI implementation for a cpp language runtime, but hadn't gotten as far as seeing that it would all just work.
I'm sure there's a very interesting back story as to why 'Itanium ABI' is the thing that gets used everywhere....
Thanks for the help!