https://bugs.winehq.org/show_bug.cgi?id=54635
--- Comment #3 from Andre Heider a.heider@gmail.com --- It's the Gallium Nine standalone release. I just pushed the v0.9 release, which was built with WINE v6.0 to make it work with >=v8.3: https://github.com/iXit/wine-nine-standalone/releases/tag/v0.9 But of course that breaks it on <v5.7, which I tried to avoid.
But our v0.8 release suffers from the effects described here.
FWIW, one of the things I tried is adding this locally: /* Building with WINE<v5.7 automatically links against winecrt, which adds a dependency on * libwine/__wine_dll_register@@WINE_1.0. * Add our own function of the same name, which prevents that dependency. This makes a * release work on WINE >=v8.3, which removed libwine altogether. * To keep a releases working with older WINE versions, register ourself if libwine exists. */ void DECLSPEC_HIDDEN __wine_dll_register(const IMAGE_NT_HEADERS *header, const char *filename) { void *h; void (*f)(const IMAGE_NT_HEADERS *header, const char *filename);
h = dlopen("libwine.so.1", RTLD_NOW | RTLD_GLOBAL);
if (!h) { ERR("no libwine handle for backwards compatibility\n"); return; }
f = dlvsym(h, "__wine_dll_register", "WINE_1.0");
if (!f) { ERR("no libwine __wine_dll_register function for backwards compatibility\n"); } else { ERR("registering DLL for WINE backwards compatibility\n"); f(header, filename); }
dlclose(h); }
And that indeed hacks around that one issue, there's no dependency on libwine anymore when building with e.g. WINE v5.0.
But then I ran into the next problem: __wine_spec_nt_header is not global and probably needs to be added to .dynsym. I stopped there, I'm not sure if there're more issues even when solving that one.