diff options
Diffstat (limited to 'results/scraper/fex/2645')
| -rw-r--r-- | results/scraper/fex/2645 | 39 |
1 files changed, 39 insertions, 0 deletions
diff --git a/results/scraper/fex/2645 b/results/scraper/fex/2645 new file mode 100644 index 000000000..9bdac7ee5 --- /dev/null +++ b/results/scraper/fex/2645 @@ -0,0 +1,39 @@ +libFEXCore dlopen/API improvements +Right now even though FEXCore is provided as a shared library, its API is not really something that works if you want to dlopen it. +Static linking and dynamic linking is fine with it though. This comes from FEXCore not ever fully being designed to have dlopen be the path of usage. + +- Experimental branch: https://github.com/Sonicadvance1/FEX/tree/dlopen_improvements +- This provides a little test application that can execute test code + - `LD_LIBRARY_PATH=./External/FEXCore/Source/ ./FEXCore_Test/APITest` + - Need to disable early return on the loader when it fails to find a symbol. + +Lots of thing need to be fixed to work with this. + +- [ ] Provide a loader API to make people's lives easier + - Test branch has this loader in the `FCL::LoadFEXCoreSymbols` function. + - Every symbol then gets exposed under `FCL::` prefix +- [ ] Fully qualify all types used in exported symbols. +- [ ] Remove all uses of class inheritance across the file boundary + - [ ] SignalDelegator + - [ ] SyscallHandler + - [ ] CodeLoader? + - [ ] FEXCore::Config::Layer + - [ ] More? + - This needs to be done because vtable expose across dlopen boundary is a broken mess. + - APITest.cpp has a hack to expose `RegisterFrontendHostSignalHandler` through `FCL` which is a nightmare. + - [ ] Need to provide a helper to expose locally visible `jemalloc` symbols that use `FCL::jemalloc` symbols + - APITest.cpp has a simple wrapper for this. This would need to be a in header that is included in all files that use `fexl::` + - Bit tricky + - [ ] Remove static initializers in FEXCore + - These can cause initialization problems in debug builds when symbols aren't fully loaded yet. + - [ ] Config.cpp + - [ ] More. + - [ ] Need some versioning so that if the loader tries to load a different versioned FEXCore, early exit. + - [ ] Remove duplicated symbol names where the only difference is arguments? + - Might be able to represent these with some thought? Haven't thought hard about it yet. + - [ ] FEXCore::Context::Context::InvalidateGuestCodeRange + - [ ] FEXCore::FileLoading::LoadFile + - [ ] Work towards lessening symbol leakage. If a symbol isn't actually necessary outside of FEXCore, ensure it isn't leaked. + - [ ] Add unit tests that test each aspect of the API individually in as small of chunks as possible + +This is going to be quite a bit of work, so delaying it until absolutely necessary will be nice. \ No newline at end of file |