summary refs log tree commit diff stats
path: root/results/scraper/fex/2645
diff options
context:
space:
mode:
Diffstat (limited to 'results/scraper/fex/2645')
-rw-r--r--results/scraper/fex/264539
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