diff options
| author | ptitSeb <sebastien.chev@gmail.com> | 2024-12-02 10:25:12 +0100 |
|---|---|---|
| committer | ptitSeb <sebastien.chev@gmail.com> | 2024-12-02 10:25:12 +0100 |
| commit | 88aab487f111ba280048fd7e240e2b62d45eeba8 (patch) | |
| tree | 8ff231f143e4f894c73c9836d3fbfebd388f195c /src | |
| parent | 6d1e30cd3c0060a914b2bde43e7c8d832207e202 (diff) | |
| download | box64-88aab487f111ba280048fd7e240e2b62d45eeba8.tar.gz box64-88aab487f111ba280048fd7e240e2b62d45eeba8.zip | |
[BOX32] Some improvment on steam handling
Diffstat (limited to 'src')
| -rw-r--r-- | src/elfs/elfloader.c | 8 | ||||
| -rw-r--r-- | src/steam.c | 2 |
2 files changed, 9 insertions, 1 deletions
diff --git a/src/elfs/elfloader.c b/src/elfs/elfloader.c index 6c782c52..1bd0ba16 100644 --- a/src/elfs/elfloader.c +++ b/src/elfs/elfloader.c @@ -1078,6 +1078,10 @@ int LoadNeededLibs(elfheader_t* h, lib_t *maplib, int local, int bindnow, int de if(tag==DT_SONAME) h->soname = h->DynStrTab+h->delta+(box64_is32bits?h->Dynamic._32[i].d_un.d_val:h->Dynamic._64[i].d_un.d_val); } + #ifndef ANDROID + if(box64_is32bits && strstr(h->name, "lsteamclient.dll.so")) + ++cnt; + #endif h->needed = new_neededlib(cnt); if(h == my_context->elfs[0]) my_context->neededlibs = h->needed; @@ -1085,6 +1089,10 @@ int LoadNeededLibs(elfheader_t* h, lib_t *maplib, int local, int bindnow, int de for (size_t i=0; i<h->numDynamic; ++i) if((box64_is32bits?h->Dynamic._32[i].d_tag:h->Dynamic._64[i].d_tag)==DT_NEEDED) h->needed->names[j++] = h->DynStrTab+h->delta+(box64_is32bits?h->Dynamic._32[i].d_un.d_val:h->Dynamic._64[i].d_un.d_val); + #ifndef ANDROID + if(box64_is32bits && strstr(h->name, "lsteamclient.dll.so")) + h->needed->names[j++] = "libgcc_s.so"; + #endif if(h==my_context->elfs[0] && box64_addlibs.size) { for(int i=0; i<box64_addlibs.size; ++i) { printf_log(LOG_INFO, "BOX64, Adding %s to needed libs of %s\n", box64_addlibs.paths[i], h->name); diff --git a/src/steam.c b/src/steam.c index 84c18e45..710fb849 100644 --- a/src/steam.c +++ b/src/steam.c @@ -45,7 +45,7 @@ void pressure_vessel(int argc, const char** argv, int nextarg, const char* prog) *p ='\0'; ++p; setenv(tmp, p, 1); printf_log(LOG_DEBUG, "setenv(%s, %s, 1)\n", tmp, p); - strcpy(tmp, "BOX64_LD_LIBRARY_PATH=/lib/x86_64-linux-gnu:/usr/lib/x86_64-linux-gnu:/usr/lib/box64-x86_64-linux-gnu:"); + strcpy(tmp, "BOX64_LD_LIBRARY_PATH=/lib/x86_64-linux-gnu:/usr/lib/x86_64-linux-gnu:/usr/lib/box64-x86_64-linux-gnu:/usr/lib/box64-i386-linux-gnu:"); strcat(tmp, argv[nextarg]+strlen("--env-if-host=STEAM_RUNTIME_LIBRARY_PATH=")); p = strchr(tmp, '='); *p ='\0'; ++p; |