Skip to content

argotorg/solc-bin/linux-amd64 contains non-static binaries #16189

@gsalzer

Description

@gsalzer

Description

According to the Solidity documentation, installation instructions, the repository solc-bin and its mirror at binaries.soliditylang.org are supposed to contain static builds of the compiler. However, the following binaries in the folder linux-amd64 are dynamically linked.

solc-linux-amd64-v0.7.6+commit.7338295f
solc-linux-amd64-v0.8.0+commit.c7dfd78e
solc-linux-amd64-v0.8.1+commit.df193b15
solc-linux-amd64-v0.8.2+commit.661d1103
solc-linux-amd64-v0.8.3+commit.8d00100c
solc-linux-amd64-v0.8.4+commit.c7e474f2
solc-linux-amd64-v0.8.5+commit.a4f2e591
solc-linux-amd64-v0.8.6+commit.11564f7e
solc-linux-amd64-v0.8.7+commit.e28d00a7
solc-linux-amd64-v0.8.8+commit.dddeac2f
solc-linux-amd64-v0.8.9+commit.e5eed63a
solc-linux-amd64-v0.8.10+commit.fc410830
solc-linux-amd64-v0.8.11+commit.d7f03943
solc-linux-amd64-v0.8.12+commit.f00d7308
solc-linux-amd64-v0.8.13+commit.abaa5c0e
solc-linux-amd64-v0.8.14+commit.80d49f37
solc-linux-amd64-v0.8.15+commit.e14f2714
solc-linux-amd64-v0.8.16+commit.07a7930e
solc-linux-amd64-v0.8.17+commit.8df45f5f
solc-linux-amd64-v0.8.18+commit.87f61d96
solc-linux-amd64-v0.8.19+commit.7dd6d404
solc-linux-amd64-v0.8.20+commit.a1b79de6
solc-linux-amd64-v0.8.21+commit.d9974bed
solc-linux-amd64-v0.8.22+commit.4fc1097e
solc-linux-amd64-v0.8.23+commit.f704f362
solc-linux-amd64-v0.8.24+commit.e11b9ed9
solc-linux-amd64-v0.8.25+commit.b61c2a91
solc-linux-amd64-v0.8.26+commit.8a97fa7a
solc-linux-amd64-v0.8.27+commit.40a35a09
solc-linux-amd64-v0.8.28+commit.7893614a

These dynamically linked binaries will not run on Linux versions built around a different libc.
E.g., such binaries won't run on Alpine Linux, which ships with musl libc instead of glibc.

Steps to Reproduce

Run ldd or file on the binaries.

$ ldd solc-linux-amd64-v0.7.6+commit.7338295f
        linux-vdso.so.1 (0x00007fffa6065000)
        libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007f16cf6ba000)
        libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007f16cf5d1000)
        libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f16ce600000)
        /lib64/ld-linux-x86-64.so.2 (0x00007f16cf6c8000)

$ file solc-linux-amd64-v0.7.6+commit.7338295f
solc-linux-amd64-v0.7.6+commit.7338295f: ELF 64-bit LSB shared object, x86-64, version 1 (GNU/Linux), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, for GNU/Linux 3.2.0, BuildID[sha1]=2636f404338a79ce71e1aad876a0c81db2a79ec0, stripped

Compare this to the output for solc-linux-amd64-v0.8.29+commit.ab55807c:

$ ldd solc-linux-amd64-v0.8.29+commit.ab55807c
	not a dynamic executable

$ file solc-linux-amd64-v0.8.29+commit.ab55807c
solc-linux-amd64-v0.8.29+commit.ab55807c: ELF 64-bit LSB executable, x86-64, version 1 (GNU/Linux), statically linked, BuildID[sha1]=c7faab9d676a0e196435eed8cfbe44bd0c2cd0b1, for GNU/Linux 3.2.0, stripped

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions