Depends on: * https://github.com/llvm/llvm-project/pull/187229 (only second commit and onwards are relevant) This patch implements the base infrastructure described in this [RFC re. Moving libc++ data-formatters out of LLDB](https://discourse.llvm.org/t/rfc-lldb-moving-libc-data-formatters-out-of-lldb/89591) The intention is to provide vendors with a way to pre-configure a set of paths that LLDB can automatically ingest formatter scripts from. Three main changes: 1. Adds a CMake variable `LLDB_SAFE_AUTO_LOAD_PATHS` which is a semi-colon separated list of paths. This is intended to be set by vendors when building LLDB for distribution. 2. Adds a setting that only exists in asserts mode called `testing.safe-auto-load-paths` which allows setting the paths without a CMake configuration. Used for local development and, more crucially, the shell and unit tests 3. Adds a `LocateScriptingResourcesFromSafePaths` which `Platform::LocateExecutableScriptingResources` calls by default (and hence used by all platforms). I add a `LocateExecutableScriptingResourcesImpl` that platforms can override if they have platform-specific resource script locations (e.g., dSYMs on Darwin). Whenever we load an image, we check the safe path (starting with the last appended path) for a directory called `/safe/path/to/<module>/<module>.py`. If such script exists, we import it as a Python module. If not, we move on to the next safe path. Currently the default for `LLDB_SAFE_AUTO_LOAD_PATHS` is empty. Eventually the plan is to make those point to the libc++ installation (where the formatters will live) depending on platform/vendor. For macOS we'll add a special `$SDK_ROOT` that can be used in the path variable, which `LocateScriptingResourcesFromSafePaths` will resolve to an actual SDK path. *AI Usage*: * Claude assisted with the CMake machinery which I then reviewed and cleaned up. I'm not sure this is the most idiomatic way of letting a user provide lists of paths, but I couldn't find a better way. * Wrote the basic auto-load Shell tests myself and asked claude to stamp out a bunch more for different scenarios. Reviewed and cleaned those up myself.
2 lines
20 B
PHP
2 lines
20 B
PHP
@SAFE_PATH_ENTRIES@
|