Skip to content

v0.2.3

Choose a tag to compare

@github-actions github-actions released this 06 Sep 09:49
· 4 commits to main since this release
34482c7

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:

  • Make the evidence stages' apt bootstrap loud and https (#34)
  • Release all six architectures (#32)

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.