This new functionality is about controlling the usage of older LibreSSL
builds within Linux ports. The versions being overriden at the moment
actually come from 2015, hence having this directly in LSI.
Effectively we'll "solve" the issue of not being able to have both
LibreSSL and OpenSSL at the same time, by adding a shim mode. With this
mode we're able to provide new names for the LibreSSL libraries, so that
they can be provided explicitly for LSI usage.
For Solus we've opted to package this up as "libressl-shim", and suffixed
all of the libraries with "-libressl". This can be controlled within the
meson options for best results. For distributions already using LibreSSL
as their native SSL implementation, the `native` option will ensure that
the host libSSL (libressl) is used providing that it has the required
1.0.0 ABI compatibility symlinks.
Signed-off-by: Ikey Doherty <ikey@solus-project.com>
We can't properly track state within a big ugly main() function, so let's
start breaking it up into a proper object.
Signed-off-by: Ikey Doherty <ikey@solus-project.com>
Turns out Steam has a vendored x264 library to allow streaming, but right
now we're not whitelisting it. Fix that for issue #25.
Signed-off-by: Ikey Doherty <ikey@solus-project.com>
Some games are attempting (and failing) to load .dll.so and should be loading
the ".dll" directly (i.e. Mono games)
Signed-off-by: Ikey Doherty <ikey@solus-project.com>
This was found while testing Project Highrise, which somehow loads the
plugins from /x86/ and not /x86_64/. To combat that, whilst in 64-bit
intercept mode we'll redirect to the relative ../x86_64 directory if
it also has the same .so file present.
This allows Mono to properly "preload" things once more (such as screen
selector, Steam API, etc.).
Signed-off-by: Ikey Doherty <ikey@solus-project.com>
We add some new helpers to make it simpler to define a vtable and
populate it with some symbol binding helper functions.
Signed-off-by: Ikey Doherty <ikey@solus-project.com>
In the current build of Project Highrise, after the first start of the
game settings are stored. Once that leading structure exists, the game
is now able to see files/directories that weren't there on the first run.
The issue however is that instead of loading "prefs/prefs.txt" on Linux,
the game is loading "prefs" directory with fopen64() as if it were a file,
and then attempting to map it. Malloc bombs out and the game instantly
dies.
This is very likely down to an invalid escaping/path join in the game that
could trivially be fixed, however we'll carry this workaround for now until
such point as a new build is out.
Signed-off-by: Ikey Doherty <ikey@solus-project.com>
Unfortunately Nica is now very noisy and infects our symbol visibility,
so we'll now control exactly what symbols are exported in our .so's.
Signed-off-by: Ikey Doherty <ikey@solus-project.com>