v0.2.3
cross-libc dlopen v0.2.3
Load the host's GPU drivers into a process that carries its own libc.
See the README
for what the two gaps are and which one your symptom is.
Every artefact is held to its own build's glibc floor, read out of
build-manifest.json rather than stated here. An object needing a symbol
version above its floor would fail to load inside a bundle whose glibc is
older, so the build refuses to produce one and the packaging step refuses
to publish one.
| architecture | floor glibc |
|---|---|
| aarch64 | 2.31 |
| loongarch64 | 2.36 |
| ppc64 | 2.31 |
| ppc64le | 2.31 |
| riscv64 | 2.31 |
| x86_64 | 2.31 |
Changes
Since v0.2.2:
What each artefact needs
Read from build-manifest.json, which is built from the objects
themselves and ships inside both archives.
aarch64
| artefact | max GLIBC_ |
SONAME | entry points | sha256 |
|---|---|---|---|---|
cross-libc-dlopen.so |
2.17 | n/a | 2 | 66c327ca996db9f787f5b10ffa527ddbbd3e919d8ed26c230af2b614334e93cf |
gl-fwd.so |
2.17 | libGL.so.1 |
3470 | 1bfda51b9c417c00e702b905decf053fcb28159fa958b17ddc158606ccf0c884 |
egl-fwd.so |
2.17 | libEGL.so.1 |
44 | 839b65103b75da456ef0d2bd5c8f95c1f61bbfb5524b2d10f070b1648114fda2 |
gles-fwd.so |
2.17 | libGLESv2.so.2 |
358 | 79248f2db688432490e3ae0971ab94821d8aff5498ad752295d0b5a63daa64e9 |
runtime-select |
2.17 | n/a | 0 | 2998e21dfcf1f98791ecb679eb76dfc439bed4ef473a75abe8ea8293211e0d17 |
Compiler: aarch64-linux-gnu-gcc (Debian 10.2.1-6) 10.2.1 20210110
aarch64, portable variant
| artefact | max GLIBC_ |
SONAME | entry points | sha256 |
|---|---|---|---|---|
cross-libc-dlopen.so |
2.17 | n/a | 2 | 07b2c6e259663c5da6fbf080483cc3cc92919efa67f02381a88cbf601fcdc38a |
gl-fwd.so |
2.17 | libGL.so.1 |
3470 | 9850669c990dc3e6f5ea63264c050a75b31798e3e56fa4433d2f8403d5bac3b1 |
egl-fwd.so |
2.17 | libEGL.so.1 |
44 | cb6354c43f6b15be9af75f97aa2a07afe53916c54bb9301dfce960c16097c1f5 |
gles-fwd.so |
2.17 | libGLESv2.so.2 |
358 | 4b37f4b5b0181e3a3515cfbcca9f914d27777d6dd68f3074570827b47d942e69 |
runtime-select |
2.17 | n/a | 0 | 5c05a89941025f885c5bf9dbf541c070d573da78dc0cc314dfce51c9fa1dbcf8 |
Compiler: aarch64-linux-gnu-gcc (Debian 10.2.1-6) 10.2.1 20210110
loongarch64
| artefact | max GLIBC_ |
SONAME | entry points | sha256 |
|---|---|---|---|---|
cross-libc-dlopen.so |
2.36 | n/a | 2 | eaeb0f0c07484c2b6f06453d232c64b7577fe943b3f34375db53eb4fa75b8d4c |
gl-fwd.so |
2.36 | libGL.so.1 |
3470 | 453320ebe523e9c95d4d62bafc89e11b440b3a92a7692bc6e801f643695c97b8 |
egl-fwd.so |
2.36 | libEGL.so.1 |
44 | f772d3d0cb5d3878ede9f28a43523531b42e47e6e583dcf12a95dca599e6e6c5 |
gles-fwd.so |
2.36 | libGLESv2.so.2 |
358 | d1634741cd323fdfc349d7dd6dae93aee0a4936d9ba770cade0ed8e9995ee830 |
runtime-select |
2.36 | n/a | 0 | ec9223cae6872322a865f4b360b5e300f23dbc8b16f59429ed5fd774d97bf0fc |
Compiler: loongarch64-linux-gnu-gcc (Debian 14.2.0-19) 14.2.0
loongarch64, portable variant
| artefact | max GLIBC_ |
SONAME | entry points | sha256 |
|---|---|---|---|---|
cross-libc-dlopen.so |
2.36 | n/a | 2 | 2e777d530612abea4b6abe6925c172896c8c204e56bec2169c783f7c89e84e9c |
gl-fwd.so |
2.36 | libGL.so.1 |
3470 | 801458d26fa995ff8a3a3b941f00cab0a4c525e033fa3f3f03f34ed6e048d054 |
egl-fwd.so |
2.36 | libEGL.so.1 |
44 | a1ff8d9895b2c8d0c49b7786a7694ce23b3c19090e8faad39e5f181719079e22 |
gles-fwd.so |
2.36 | libGLESv2.so.2 |
358 | b1da791ea4be1974f54c329ac76d303d2b8be60fdc4c5ed3d37088918f434dde |
runtime-select |
2.36 | n/a | 0 | ce05261b2d869ac5ee7a641bf4a7350ad7d39a18aea75d1a716cac1e7fe4366b |
Compiler: loongarch64-linux-gnu-gcc (Debian 14.2.0-19) 14.2.0
ppc64
| artefact | max GLIBC_ |
SONAME | entry points | sha256 |
|---|---|---|---|---|
cross-libc-dlopen.so |
2.22 | n/a | 2 | 52dc3c4775e9a43e92c2e9db84340bb3d46c2003cffd52ff9da24f676aa83546 |
gl-fwd.so |
2.22 | libGL.so.1 |
3470 | d258ccad87894f68691826a186602af6466523c2558090124e184ddd67bb6741 |
egl-fwd.so |
2.22 | libEGL.so.1 |
44 | 156782f809e27944b2285c9f02b704b5a615e721fe34f4c7427f276b6049d53b |
gles-fwd.so |
2.22 | libGLESv2.so.2 |
358 | f4d03bf518635178125cb57771996ca06cc0400961c4eba592610f29cc2b0d0d |
runtime-select |
2.4 | n/a | 0 | 34e529001a2d7bf73a475f1470cedef3effe4090a708c2e9a60c9aa335021b12 |
Compiler: powerpc64-linux-gnu-gcc (Debian 10.2.1-6) 10.2.1 20210110
ppc64, portable variant
| artefact | max GLIBC_ |
SONAME | entry points | sha256 |
|---|---|---|---|---|
cross-libc-dlopen.so |
2.22 | n/a | 2 | 755aa83aaf0f467389e2fdbfdb46ff33b547065b4e9c09b97dbe542747811526 |
gl-fwd.so |
2.22 | libGL.so.1 |
3470 | c89772215b27b849905ed49f4ec0a4fca0c78e12dfe824a333bee7a112c9d257 |
egl-fwd.so |
2.22 | libEGL.so.1 |
44 | c56fab4c4f686955537cbb5b65bc6b1e31bd92a70baa80edc4c31bc0420418fd |
gles-fwd.so |
2.22 | libGLESv2.so.2 |
358 | 8f1b5b0dee53821e06ad306c69702093a09798390ffbbabd965e32dead4ff0d2 |
runtime-select |
2.4 | n/a | 0 | c36e0e054b38883681128f341abe9c942de403ba21c30ce54d514870c54a0493 |
Compiler: powerpc64-linux-gnu-gcc (Debian 10.2.1-6) 10.2.1 20210110
ppc64le
| artefact | max GLIBC_ |
SONAME | entry points | sha256 |
|---|---|---|---|---|
cross-libc-dlopen.so |
2.22 | n/a | 0 | d1183c52da20645f96a6435ac1dbd48349b0ee76ffbe359c53e4ce0dc0cfd438 |
gl-fwd.so |
2.22 | libGL.so.1 |
3470 | 7ddbbe306b667063043bb007b729c696e000c7c3f1dee86e3662953661fe4167 |
egl-fwd.so |
2.22 | libEGL.so.1 |
44 | 1333a78ab77caf55323ac05150cde1df09f0e54a37208abbf7290543feb82d2a |
gles-fwd.so |
2.22 | libGLESv2.so.2 |
358 | ac7b049eb5b95e93c3016c5694386e8ca0ce7501a07094a16be8246e3fc93b54 |
runtime-select |
2.17 | n/a | 0 | 898fba9baa9a6f026358264a422ee8c0985e491aa845fc3e949a9531818efc43 |
Compiler: powerpc64le-linux-gnu-gcc (Debian 10.2.1-6) 10.2.1 20210110
ppc64le, portable variant
| artefact | max GLIBC_ |
SONAME | entry points | sha256 |
|---|---|---|---|---|
cross-libc-dlopen.so |
2.22 | n/a | 0 | 86d2a9ebb4258268a22737cad28b9342280dcad51b4548a766e7f145cf74749d |
gl-fwd.so |
2.22 | libGL.so.1 |
3470 | 80f3a0fa309ffd7d0350429a5f5f576916d404dbc9de1d59e7c40013f0e05e58 |
egl-fwd.so |
2.22 | libEGL.so.1 |
44 | b92218f891d906b92a94a337062a086f1c7bc25b6dd652c7c25f1cb0ec7d3b3e |
gles-fwd.so |
2.22 | libGLESv2.so.2 |
358 | fd9bfbcbbaf140439f6d0f73de77f77580ddb569cc57b2196b2d12a525cab3b6 |
runtime-select |
2.17 | n/a | 0 | 1d4de53345172644423d35b4f8b3a644ad3e6fd0d784df48a8c3f814b2f9f649 |
Compiler: powerpc64le-linux-gnu-gcc (Debian 10.2.1-6) 10.2.1 20210110
riscv64
| artefact | max GLIBC_ |
SONAME | entry points | sha256 |
|---|---|---|---|---|
cross-libc-dlopen.so |
2.27 | n/a | 2 | b349f6a9fea2bd59879a231d1f9ed4c93e6a786b7a88b4e445d140366fe6bfc2 |
gl-fwd.so |
2.27 | libGL.so.1 |
3470 | c6d1fee9e969ff736a410955bc0b9e9b7ffde90a283b8bc434ca08f9b70b5a7d |
egl-fwd.so |
2.27 | libEGL.so.1 |
44 | cf1f79ca2c526b58359c5b874b3011baf4aa666cf6d52d58a04cdf6017a6bf19 |
gles-fwd.so |
2.27 | libGLESv2.so.2 |
358 | b131f76e8829b6142a569239155626716aa3bbaffe06626b668891e4b5052b14 |
runtime-select |
2.27 | n/a | 0 | 1ae8cec1042df5469974ccfcfa19b9915ae9ed074a002ea8f42bedd02a7223a3 |
Compiler: riscv64-linux-gnu-gcc (Debian 10.2.1-6) 10.2.1 20210110
riscv64, portable variant
| artefact | max GLIBC_ |
SONAME | entry points | sha256 |
|---|---|---|---|---|
cross-libc-dlopen.so |
2.27 | n/a | 2 | fc799e24054c88ef8cb6f076f41b5645db621bc95ba5e18d9e34fe4388d23836 |
gl-fwd.so |
2.27 | libGL.so.1 |
3470 | 4d8563209090edeae362cdb1c40b3731ebef135f8c21afd1a526ab2cfd0144f3 |
egl-fwd.so |
2.27 | libEGL.so.1 |
44 | aad412b5c76b72250a0cd55107a604becab798f0df956fefb97ad15c33384c2d |
gles-fwd.so |
2.27 | libGLESv2.so.2 |
358 | 1bdf358d9ae16c1ae890dc8907704d4897735bbb5169f6e80de756a9db3f188a |
runtime-select |
2.27 | n/a | 0 | aa98cc9cffe9cdd9f4822a618d9faa56054ff6916a5772483f20029cea01b02e |
Compiler: riscv64-linux-gnu-gcc (Debian 10.2.1-6) 10.2.1 20210110
x86_64
| artefact | max GLIBC_ |
SONAME | entry points | sha256 |
|---|---|---|---|---|
cross-libc-dlopen.so |
2.16 | n/a | 2 | 556c218b34b88d10e09a53ca6dfcab21673c612544874cc7e34084cc46bd441b |
gl-fwd.so |
2.14 | libGL.so.1 |
3470 | da241828e7e51a4237c6a6e6613f732c249151df4762efb31ede0600fc0bb0c3 |
egl-fwd.so |
2.14 | libEGL.so.1 |
44 | e908b407560968f61bf8348173325ce692f1f71b870706dfb58aea4cbbbb6464 |
gles-fwd.so |
2.14 | libGLESv2.so.2 |
358 | 06b3f49919e9029ae7a7f22c23141b6daf83cc84dae457509de899fa5ba85572 |
runtime-select |
2.14 | n/a | 0 | 7c32cd98f7aece42a55fa9d3b58f9ae88e6f6f60dfcfbec76d05f1a9f682575d |
Compiler: gcc (Debian 10.2.1-6) 10.2.1 20210110
x86_64, portable variant
| artefact | max GLIBC_ |
SONAME | entry points | sha256 |
|---|---|---|---|---|
cross-libc-dlopen.so |
2.16 | n/a | 2 | a3bf3eb6971c3a290e5afca3350142ef8952b9c27304fd74028faa2a7158c8e9 |
gl-fwd.so |
2.14 | libGL.so.1 |
3470 | cfaa4b9c3e97a860be0306f051d838102842d157bdb070e8b8c1b80923f84234 |
egl-fwd.so |
2.14 | libEGL.so.1 |
44 | baca405b8d66da30cba66e24424624ffcc8cba4f37a801b1aa1511ce92cbb96f |
gles-fwd.so |
2.14 | libGLESv2.so.2 |
358 | f755b48570f9f3b577290378c3aa171cd8834e4e470291d64df34157c9baf7d4 |
runtime-select |
2.14 | n/a | 0 | 8b743c78c94b001d9db4735e1b4317b519ba2dde0fad904cdb1c1c6b25a2ca7a |
Compiler: gcc (Debian 10.2.1-6) 10.2.1 20210110
Assets
Each artefact ships three ways: loose, in the .tar, and in the .zip.
⛔ No archive contains a directory, so an extract drops the files where
you are standing.
⭐ Two variants. The default reads CROSS_LIBC_DLOPEN_ROOT and also
APPDIR, which an AppImage runtime exports on its own, and is built
with -fcf-protection=full. The portable assets read
CROSS_LIBC_DLOPEN_ROOT and nothing else, and are built without that
flag. Take those if you want one spelling and no CET instrumentation.
⚠ The flag accounts for six of the shims 3478 endbr64; the rest are the trampolines, spelled as literal bytes, and no flag removes them.
All five objects differ between the two variants, so the variant ships
as archives rather than loose files.
| asset | sha256 |
|---|---|
aarch64-cross-libc-dlopen.so |
66c327ca996db9f787f5b10ffa527ddbbd3e919d8ed26c230af2b614334e93cf |
aarch64-egl-fwd.so |
839b65103b75da456ef0d2bd5c8f95c1f61bbfb5524b2d10f070b1648114fda2 |
aarch64-gl-fwd.so |
1bfda51b9c417c00e702b905decf053fcb28159fa958b17ddc158606ccf0c884 |
aarch64-gles-fwd.so |
79248f2db688432490e3ae0971ab94821d8aff5498ad752295d0b5a63daa64e9 |
aarch64-runtime-select |
2998e21dfcf1f98791ecb679eb76dfc439bed4ef473a75abe8ea8293211e0d17 |
cross-libc-dlopen-aarch64.tar |
15e380a9539003acefb5e6740554e4008f36bb30c4b2a480a842f5f1deeb77bc |
cross-libc-dlopen-aarch64.zip |
3c61513de3df0beec6d57d14c3d7b14a29410288ced22943b8b8391e4d8f7bc8 |
cross-libc-dlopen-loongarch64.tar |
5e7358c3c77dd75a2fd0d33924d0f793eb3f237911dc12aab8c9619f7a840ce6 |
cross-libc-dlopen-loongarch64.zip |
0e121d7f13d9564b7a4cd27a5d7834c05452a1c1a936067b601af11cf9e9b18c |
cross-libc-dlopen-portable-aarch64.tar |
acf3848a39e5de4c16cb268405dfc3f30d9d2d83c9d762b92e74adf89b15d035 |
cross-libc-dlopen-portable-aarch64.zip |
8df7ef280c956744d835b26b3573a658ce12e6123e50a2e05c4308a03a07e24d |
cross-libc-dlopen-portable-loongarch64.tar |
a95eb521ca94b530a3b9656ec803252190b31dc7d8693cc30d4b725733aa57ae |
cross-libc-dlopen-portable-loongarch64.zip |
87bf6e266e900637e19a9c99e14aa4af6c3275ade1a5d8014fc6d21926aa7629 |
cross-libc-dlopen-portable-ppc64.tar |
708354a8fdb60b2bf042eecfecf288e104b66361ed1292c90ac6bb349108ca9a |
cross-libc-dlopen-portable-ppc64.zip |
ae1a3f7a452a96c71d10c5335c389450f6017f754276ee52e9ff8ebabc08022b |
cross-libc-dlopen-portable-ppc64le.tar |
1471cd4928e1717793967902eb03f2287a3162dca227593a0ce1204b32c965d3 |
cross-libc-dlopen-portable-ppc64le.zip |
6ca227fd482d2bc9d4d26c3d6de9e15d4bab2786cc84426950b422c7b3c26954 |
cross-libc-dlopen-portable-riscv64.tar |
89dbfea19af49df7d6bfdd1d6d471b7161c8bd1ebdfbaa6982286df733e70b47 |
cross-libc-dlopen-portable-riscv64.zip |
04b9cab9632d06e05ab57f431b7c889a6e0508622c649b99ff992c948927cf6e |
cross-libc-dlopen-portable-x86_64.tar |
2ea3d9e395c0ad6b385b6b8e3fa0c6ddc132374ebc76d835e2e45535a95f18d1 |
cross-libc-dlopen-portable-x86_64.zip |
795d6141423a983458d84f146a271a4e5266d550f60548edacae69975c180b84 |
cross-libc-dlopen-ppc64.tar |
b86853d428537096aa5601dbb4cb4d06610578ba3733b08f0fe1a74bc0c4dd08 |
cross-libc-dlopen-ppc64.zip |
1b8ae62ef4822cf14a0ba007e4b59f753edc51c4e9619319932ee14fdd2e0fbf |
cross-libc-dlopen-ppc64le.tar |
a7874fc9619be7fe6844aca871de34b37152bd8a1f25725f82f41671f981bc9a |
cross-libc-dlopen-ppc64le.zip |
452ee2c51f21a62923dafd9a600e6d1b35e765e71755de3f62691eec9ca20499 |
cross-libc-dlopen-riscv64.tar |
90b541df9a648d22f968362e657b68d05c68bfbda15e829355dbd2e7a0a97db4 |
cross-libc-dlopen-riscv64.zip |
fa774587c18d5bd1f6bc5795a12576be627f755dec79762ecbf14677837cb340 |
cross-libc-dlopen-x86_64.tar |
3cd31619e92f0895bcfbc4eb1cf0ab5b5da24aa10c67815a427b58fd1eede0a5 |
cross-libc-dlopen-x86_64.zip |
eb5f2cfc7f0c4ee7e9a8db32d4f25b1181d6b980bf1bc6d702f0f47e24d0019f |
loongarch64-cross-libc-dlopen.so |
eaeb0f0c07484c2b6f06453d232c64b7577fe943b3f34375db53eb4fa75b8d4c |
loongarch64-egl-fwd.so |
f772d3d0cb5d3878ede9f28a43523531b42e47e6e583dcf12a95dca599e6e6c5 |
loongarch64-gl-fwd.so |
453320ebe523e9c95d4d62bafc89e11b440b3a92a7692bc6e801f643695c97b8 |
loongarch64-gles-fwd.so |
d1634741cd323fdfc349d7dd6dae93aee0a4936d9ba770cade0ed8e9995ee830 |
loongarch64-runtime-select |
ec9223cae6872322a865f4b360b5e300f23dbc8b16f59429ed5fd774d97bf0fc |
ppc64-cross-libc-dlopen.so |
52dc3c4775e9a43e92c2e9db84340bb3d46c2003cffd52ff9da24f676aa83546 |
ppc64-egl-fwd.so |
156782f809e27944b2285c9f02b704b5a615e721fe34f4c7427f276b6049d53b |
ppc64-gl-fwd.so |
d258ccad87894f68691826a186602af6466523c2558090124e184ddd67bb6741 |
ppc64-gles-fwd.so |
f4d03bf518635178125cb57771996ca06cc0400961c4eba592610f29cc2b0d0d |
ppc64-runtime-select |
34e529001a2d7bf73a475f1470cedef3effe4090a708c2e9a60c9aa335021b12 |
ppc64le-cross-libc-dlopen.so |
d1183c52da20645f96a6435ac1dbd48349b0ee76ffbe359c53e4ce0dc0cfd438 |
ppc64le-egl-fwd.so |
1333a78ab77caf55323ac05150cde1df09f0e54a37208abbf7290543feb82d2a |
ppc64le-gl-fwd.so |
7ddbbe306b667063043bb007b729c696e000c7c3f1dee86e3662953661fe4167 |
ppc64le-gles-fwd.so |
ac7b049eb5b95e93c3016c5694386e8ca0ce7501a07094a16be8246e3fc93b54 |
ppc64le-runtime-select |
898fba9baa9a6f026358264a422ee8c0985e491aa845fc3e949a9531818efc43 |
riscv64-cross-libc-dlopen.so |
b349f6a9fea2bd59879a231d1f9ed4c93e6a786b7a88b4e445d140366fe6bfc2 |
riscv64-egl-fwd.so |
cf1f79ca2c526b58359c5b874b3011baf4aa666cf6d52d58a04cdf6017a6bf19 |
riscv64-gl-fwd.so |
c6d1fee9e969ff736a410955bc0b9e9b7ffde90a283b8bc434ca08f9b70b5a7d |
riscv64-gles-fwd.so |
b131f76e8829b6142a569239155626716aa3bbaffe06626b668891e4b5052b14 |
riscv64-runtime-select |
1ae8cec1042df5469974ccfcfa19b9915ae9ed074a002ea8f42bedd02a7223a3 |
x86_64-cross-libc-dlopen.so |
556c218b34b88d10e09a53ca6dfcab21673c612544874cc7e34084cc46bd441b |
x86_64-egl-fwd.so |
e908b407560968f61bf8348173325ce692f1f71b870706dfb58aea4cbbbb6464 |
x86_64-gl-fwd.so |
da241828e7e51a4237c6a6e6613f732c249151df4762efb31ede0600fc0bb0c3 |
x86_64-gles-fwd.so |
06b3f49919e9029ae7a7f22c23141b6daf83cc84dae457509de899fa5ba85572 |
x86_64-runtime-select |
7c32cd98f7aece42a55fa9d3b58f9ae88e6f6f60dfcfbec76d05f1a9f682575d |
⚠ The artefact rows above come from the manifest. The archive rows are
computed here, because the archives did not exist when it was written.
Using it
LD_PRELOAD=/path/to/cross-libc-dlopen.so CROSS_LIBC_DLOPEN=1 ./your-program
For a bundle, put the objects in its lib/ and name them in .preload.
The switches are in the README and
docs/integrating.md
has the detail per target.