You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
The Go-BLS build works for me, but when I run it on Alpine linux (no glibc, only musl), it fails to run.
Alpine is a widely used light-weight environment for docker-containers.
Can we build the Amd64 target without glibc, to enable Alpine linux?
This is what I get when I run it in my CI environment:
# github.com/herumi/bls-eth-go-binary/bls
/usr/lib/gcc/x86_64-alpine-linux-musl/9.2.0/../../../../x86_64-alpine-linux-musl/bin/ld: /go/pkg/mod/github.com/herumi/bls-eth-go-binary@v0.0.0-20200310092706-2b0aca401927/bls/lib/linux/amd64/libbls384_256.a(fp.o): in function `Xbyak::util::Pack::sub(unsigned long, unsigned long) const [clone .constprop.401]':
fp.cpp:(.text+0x201): undefined reference to `__fprintf_chk'
/usr/lib/gcc/x86_64-alpine-linux-musl/9.2.0/../../../../x86_64-alpine-linux-musl/bin/ld: /go/pkg/mod/github.com/herumi/bls-eth-go-binary@v0.0.0-20200310092706-2b0aca401927/bls/lib/linux/amd64/libbls384_256.a(fp.o): in function `mcl::fp::sha512(void*, unsigned int, void const*, unsigned int)':
fp.cpp:(.text+0xee9): undefined reference to `__memcpy_chk'
/usr/lib/gcc/x86_64-alpine-linux-musl/9.2.0/../../../../x86_64-alpine-linux-musl/bin/ld: /go/pkg/mod/github.com/herumi/bls-eth-go-binary@v0.0.0-20200310092706-2b0aca401927/bls/lib/linux/amd64/libbls384_256.a(fp.o): in function `mcl::fp::Op::init(mcl::VintT<mcl::vint::FixedBuffer<unsigned long, 768ul> > const&, unsigned long, int, mcl::fp::Mode, unsigned long)':
fp.cpp:(.text+0xb50f): undefined reference to `__memset_chk'
/usr/lib/gcc/x86_64-alpine-linux-musl/9.2.0/../../../../x86_64-alpine-linux-musl/bin/ld: /go/pkg/mod/github.com/herumi/bls-eth-go-binary@v0.0.0-20200310092706-2b0aca401927/bls/lib/linux/amd64/libbls384_256.a(fp.o): in function `Xbyak::util::Pack::append(Xbyak::Reg64 const&) [clone .part.58]':
fp.cpp:(.text.unlikely+0x1b1): undefined reference to `__fprintf_chk'
/usr/lib/gcc/x86_64-alpine-linux-musl/9.2.0/../../../../x86_64-alpine-linux-musl/bin/ld: /go/pkg/mod/github.com/herumi/bls-eth-go-binary@v0.0.0-20200310092706-2b0aca401927/bls/lib/linux/amd64/libbls384_256.a(fp.o): in function `Xbyak::util::Pack::init(Xbyak::Reg64 const*, unsigned long) [clone .part.59]':
fp.cpp:(.text.unlikely+0x209): undefined reference to `__fprintf_chk'
/usr/lib/gcc/x86_64-alpine-linux-musl/9.2.0/../../../../x86_64-alpine-linux-musl/bin/ld: /go/pkg/mod/github.com/herumi/bls-eth-go-binary@v0.0.0-20200310092706-2b0aca401927/bls/lib/linux/amd64/libbls384_256.a(fp.o): in function `mcl::fp::FpGenerator::mkLabel[abi:cxx11](char const*, int) const [clone .isra.296]':
fp.cpp:(.text._ZNK3mcl2fp11FpGenerator7mkLabelB5cxx11EPKci.isra.296[_ZN3mcl2fp11FpGenerator10gen_preInvEv]+0x49): undefined reference to `__snprintf_chk'
/usr/lib/gcc/x86_64-alpine-linux-musl/9.2.0/../../../../x86_64-alpine-linux-musl/bin/ld: /go/pkg/mod/github.com/herumi/bls-eth-go-binary@v0.0.0-20200310092706-2b0aca401927/bls/lib/linux/amd64/libbls384_256.a(fp.o): in function `cybozu::sha2_local::hmac256_inner(void*, void const*, unsigned long, void const*, unsigned long, bool)':
fp.cpp:(.text._ZN6cybozu10sha2_local13hmac256_innerEPvPKvmS3_mb[_ZN6cybozu10sha2_local13hmac256_innerEPvPKvmS3_mb]+0x66a): undefined reference to `__memcpy_chk'
/usr/lib/gcc/x86_64-alpine-linux-musl/9.2.0/../../../../x86_64-alpine-linux-musl/bin/ld: fp.cpp:(.text._ZN6cybozu10sha2_local13hmac256_innerEPvPKvmS3_mb[_ZN6cybozu10sha2_local13hmac256_innerEPvPKvmS3_mb]+0x889): undefined reference to `__memcpy_chk'
/usr/lib/gcc/x86_64-alpine-linux-musl/9.2.0/../../../../x86_64-alpine-linux-musl/bin/ld: /go/pkg/mod/github.com/herumi/bls-eth-go-binary@v0.0.0-20200310092706-2b0aca401927/bls/lib/linux/amd64/libbls384_256.a(fp.o): in function `Xbyak::util::Pack::operator[](unsigned long) const':
fp.cpp:(.text._ZNK5Xbyak4util4PackixEm[_ZNK5Xbyak4util4PackixEm]+0x2e): undefined reference to `__fprintf_chk'
/usr/lib/gcc/x86_64-alpine-linux-musl/9.2.0/../../../../x86_64-alpine-linux-musl/bin/ld: /go/pkg/mod/github.com/herumi/bls-eth-go-binary@v0.0.0-20200310092706-2b0aca401927/bls/lib/linux/amd64/libbls384_256.a(fp.o): in function `Xbyak::util::Pack::sub(unsigned long, unsigned long) const':
fp.cpp:(.text._ZNK5Xbyak4util4Pack3subEmm[_ZNK5Xbyak4util4Pack3subEmm]+0x17a): undefined reference to `__fprintf_chk'
/usr/lib/gcc/x86_64-alpine-linux-musl/9.2.0/../../../../x86_64-alpine-linux-musl/bin/ld: /go/pkg/mod/github.com/herumi/bls-eth-go-binary@v0.0.0-20200310092706-2b0aca401927/bls/lib/linux/amd64/libbls384_256.a(fp.o): in function `Xbyak::util::Profiler::set(char const*, void const*)':
fp.cpp:(.text._ZN5Xbyak4util8Profiler3setEPKcPKv[_ZN5Xbyak4util8Profiler3setEPKcPKv]+0x4c): undefined reference to `__fprintf_chk'
/usr/lib/gcc/x86_64-alpine-linux-musl/9.2.0/../../../../x86_64-alpine-linux-musl/bin/ld: /go/pkg/mod/github.com/herumi/bls-eth-go-binary@v0.0.0-20200310092706-2b0aca401927/bls/lib/linux/amd64/libbls384_256.a(fp.o): in function `mcl::fp::FpGenerator::cmovc_rr(Xbyak::util::Pack const&, Xbyak::util::Pack const&)':
fp.cpp:(.text._ZN3mcl2fp11FpGenerator8cmovc_rrERKN5Xbyak4util4PackES6_[_ZN3mcl2fp11FpGenerator8cmovc_rrERKN5Xbyak4util4PackES6_]+0x9d): undefined reference to `__fprintf_chk'
/usr/lib/gcc/x86_64-alpine-linux-musl/9.2.0/../../../../x86_64-alpine-linux-musl/bin/ld: fp.cpp:(.text._ZN3mcl2fp11FpGenerator8cmovc_rrERKN5Xbyak4util4PackES6_[_ZN3mcl2fp11FpGenerator8cmovc_rrERKN5Xbyak4util4PackES6_]+0xf4): undefined reference to `__fprintf_chk'
/usr/lib/gcc/x86_64-alpine-linux-musl/9.2.0/../../../../x86_64-alpine-linux-musl/bin/ld: /go/pkg/mod/github.com/herumi/bls-eth-go-binary@v0.0.0-20200310092706-2b0aca401927/bls/lib/linux/amd64/libbls384_256.a(fp.o):fp.cpp:(.text._ZN3mcl2fp11FpGenerator7load_rmIN5Xbyak6RegExpEEEvRKNS3_4util4PackERKT_[_ZN3mcl2fp11FpGenerator7load_rmIN5Xbyak6RegExpEEEvRKNS3_4util4PackERKT_]+0x28f): more undefined references to `__fprintf_chk' follow
/usr/lib/gcc/x86_64-alpine-linux-musl/9.2.0/../../../../x86_64-alpine-linux-musl/bin/ld: /go/pkg/mod/github.com/herumi/bls-eth-go-binary@v0.0.0-20200310092706-2b0aca401927/bls/lib/linux/amd64/libbls384_256.a(bls_c384_256.o): in function `void mcl::EcT<mcl::FpT<mcl::bn::local::FpTag, 384ul> >::save<cybozu::MemoryOutputStream>(bool*, cybozu::MemoryOutputStream&, int) const [clone .constprop.101]':
bls_c384_256.cpp:(.text+0x7559): undefined reference to `__memset_chk'
/usr/lib/gcc/x86_64-alpine-linux-musl/9.2.0/../../../../x86_64-alpine-linux-musl/bin/ld: bls_c384_256.cpp:(.text+0x7581): undefined reference to `__memset_chk'
/usr/lib/gcc/x86_64-alpine-linux-musl/9.2.0/../../../../x86_64-alpine-linux-musl/bin/ld: /go/pkg/mod/github.com/herumi/bls-eth-go-binary@v0.0.0-20200310092706-2b0aca401927/bls/lib/linux/amd64/libbls384_256.a(bls_c384_256.o): in function `mcl::FpT<mcl::bn::local::FpTag, 384ul>::init(bool*, int, mcl::VintT<mcl::vint::FixedBuffer<unsigned long, 768ul> > const&, mcl::fp::Mode)':
bls_c384_256.cpp:(.text._ZN3mcl3FpTINS_2bn5local5FpTagELm384EE4initEPbiRKNS_5VintTINS_4vint11FixedBufferImLm768EEEEENS_2fp4ModeE[_ZN3mcl3FpTINS_2bn5local5FpTagELm384EE4initEPbiRKNS_5VintTINS_4vint11FixedBufferImLm768EEEEENS_2fp4ModeE]+0x174): undefined reference to `__memcpy_chk'
/usr/lib/gcc/x86_64-alpine-linux-musl/9.2.0/../../../../x86_64-alpine-linux-musl/bin/ld: /go/pkg/mod/github.com/herumi/bls-eth-go-binary@v0.0.0-20200310092706-2b0aca401927/bls/lib/linux/amd64/libbls384_256.a(bls_c384_256.o): in function `mcl::FpT<mcl::bn::local::FrTag, 256ul>::init(bool*, int, mcl::VintT<mcl::vint::FixedBuffer<unsigned long, 768ul> > const&, mcl::fp::Mode)':
bls_c384_256.cpp:(.text._ZN3mcl3FpTINS_2bn5local5FrTagELm256EE4initEPbiRKNS_5VintTINS_4vint11FixedBufferImLm768EEEEENS_2fp4ModeE[_ZN3mcl3FpTINS_2bn5local5FrTagELm256EE4initEPbiRKNS_5VintTINS_4vint11FixedBufferImLm768EEEEENS_2fp4ModeE]+0x174): undefined reference to `__memcpy_chk'
/usr/lib/gcc/x86_64-alpine-linux-musl/9.2.0/../../../../x86_64-alpine-linux-musl/bin/ld: /go/pkg/mod/github.com/herumi/bls-eth-go-binary@v0.0.0-20200310092706-2b0aca401927/bls/lib/linux/amd64/libbls384_256.a(bls_c384_256.o): in function `unsigned long mcl::fp::readHexStr<cybozu::MemoryInputStream>(void*, unsigned long, cybozu::MemoryInputStream&)':
bls_c384_256.cpp:(.text._ZN3mcl2fp10readHexStrIN6cybozu17MemoryInputStreamEEEmPvmRT_[_ZN3mcl2fp10readHexStrIN6cybozu17MemoryInputStreamEEEmPvmRT_]+0x58): undefined reference to `__memcpy_chk'
/usr/lib/gcc/x86_64-alpine-linux-musl/9.2.0/../../../../x86_64-alpine-linux-musl/bin/ld: /go/pkg/mod/github.com/herumi/bls-eth-go-binary@v0.0.0-20200310092706-2b0aca401927/bls/lib/linux/amd64/libbls384_256.a(bls_c384_256.o): in function `unsigned long mcl::fp::arrayToDec<unsigned long>(char*, unsigned long, unsigned long const*, unsigned long)':
bls_c384_256.cpp:(.text._ZN3mcl2fp10arrayToDecImEEmPcmPKT_m[_ZN3mcl2fp10arrayToDecImEEmPcmPKT_m]+0x94): undefined reference to `__memcpy_chk'
/usr/lib/gcc/x86_64-alpine-linux-musl/9.2.0/../../../../x86_64-alpine-linux-musl/bin/ld: /go/pkg/mod/github.com/herumi/bls-eth-go-binary@v0.0.0-20200310092706-2b0aca401927/bls/lib/linux/amd64/libbls384_256.a(bls_c384_256.o): in function `void mcl::EcT<mcl::FpT<mcl::bn::local::FpTag, 384ul> >::save<cybozu::MemoryOutputStream>(bool*, cybozu::MemoryOutputStream&, int) const':
bls_c384_256.cpp:(.text._ZNK3mcl3EcTINS_3FpTINS_2bn5local5FpTagELm384EEEE4saveIN6cybozu18MemoryOutputStreamEEEvPbRT_i[_ZNK3mcl3EcTINS_3FpTINS_2bn5local5FpTagELm384EEEE4saveIN6cybozu18MemoryOutputStreamEEEvPbRT_i]+0x5a1): undefined reference to `__memset_chk'
/usr/lib/gcc/x86_64-alpine-linux-musl/9.2.0/../../../../x86_64-alpine-linux-musl/bin/ld: bls_c384_256.cpp:(.text._ZNK3mcl3EcTINS_3FpTINS_2bn5local5FpTagELm384EEEE4saveIN6cybozu18MemoryOutputStreamEEEvPbRT_i[_ZNK3mcl3EcTINS_3FpTINS_2bn5local5FpTagELm384EEEE4saveIN6cybozu18MemoryOutputStreamEEEvPbRT_i]+0x5ca): undefined reference to `__memset_chk'
/usr/lib/gcc/x86_64-alpine-linux-musl/9.2.0/../../../../x86_64-alpine-linux-musl/bin/ld: /go/pkg/mod/github.com/herumi/bls-eth-go-binary@v0.0.0-20200310092706-2b0aca401927/bls/lib/linux/amd64/libbls384_256.a(bls_c384_256.o): in function `void mcl::EcT<mcl::Fp2T<mcl::FpT<mcl::bn::local::FpTag, 384ul> > >::save<cybozu::MemoryOutputStream>(bool*, cybozu::MemoryOutputStream&, int) const':
bls_c384_256.cpp:(.text._ZNK3mcl3EcTINS_4Fp2TINS_3FpTINS_2bn5local5FpTagELm384EEEEEE4saveIN6cybozu18MemoryOutputStreamEEEvPbRT_i[_ZNK3mcl3EcTINS_4Fp2TINS_3FpTINS_2bn5local5FpTagELm384EEEEEE4saveIN6cybozu18MemoryOutputStreamEEEvPbRT_i]+0x60f): undefined reference to `__memset_chk'
/usr/lib/gcc/x86_64-alpine-linux-musl/9.2.0/../../../../x86_64-alpine-linux-musl/bin/ld: bls_c384_256.cpp:(.text._ZNK3mcl3EcTINS_4Fp2TINS_3FpTINS_2bn5local5FpTagELm384EEEEEE4saveIN6cybozu18MemoryOutputStreamEEEvPbRT_i[_ZNK3mcl3EcTINS_4Fp2TINS_3FpTINS_2bn5local5FpTagELm384EEEEEE4saveIN6cybozu18MemoryOutputStreamEEEvPbRT_i]+0x63e): undefined reference to `__memset_chk'
/usr/lib/gcc/x86_64-alpine-linux-musl/9.2.0/../../../../x86_64-alpine-linux-musl/bin/ld: /go/pkg/mod/github.com/herumi/bls-eth-go-binary@v0.0.0-20200310092706-2b0aca401927/bls/lib/linux/amd64/libbls384_256.a(bls_c384_256.o): in function `void mcl::EcT<mcl::Fp2T<mcl::FpT<mcl::bn::local::FpTag, 384ul> > >::load<cybozu::MemoryInputStream>(bool*, cybozu::MemoryInputStream&, int)':
bls_c384_256.cpp:(.text._ZN3mcl3EcTINS_4Fp2TINS_3FpTINS_2bn5local5FpTagELm384EEEEEE4loadIN6cybozu17MemoryInputStreamEEEvPbRT_i[_ZN3mcl3EcTINS_4Fp2TINS_3FpTINS_2bn5local5FpTagELm384EEEEEE4loadIN6cybozu17MemoryInputStreamEEEvPbRT_i]+0x112): undefined reference to `__memcpy_chk'
/usr/lib/gcc/x86_64-alpine-linux-musl/9.2.0/../../../../x86_64-alpine-linux-musl/bin/ld: /go/pkg/mod/github.com/herumi/bls-eth-go-binary@v0.0.0-20200310092706-2b0aca401927/bls/lib/linux/amd64/libbls384_256.a(bls_c384_256.o): in function `void mcl::EcT<mcl::FpT<mcl::bn::local::FpTag, 384ul> >::load<cybozu::MemoryInputStream>(bool*, cybozu::MemoryInputStream&, int)':
bls_c384_256.cpp:(.text._ZN3mcl3EcTINS_3FpTINS_2bn5local5FpTagELm384EEEE4loadIN6cybozu17MemoryInputStreamEEEvPbRT_i[_ZN3mcl3EcTINS_3FpTINS_2bn5local5FpTagELm384EEEE4loadIN6cybozu17MemoryInputStreamEEEvPbRT_i]+0xf3): undefined reference to `__memcpy_chk'
collect2: error: ld returned 1 exit status
A summary: a few glibc symbols like __memcpy_chk and __fprintf_chk cannot be found.
I tried adding glibc to alpine linux, but I think it didn't get picked up by the CGO build system.
Locally, on my dev machine with glibc, this all works. It would be great if we can make it work in lightweight environments like Alpine 👍
The text was updated successfully, but these errors were encountered:
protolambda
changed the title
Alpine linux support (link muslc,
Alpine linux support (link musl)
Mar 10, 2020
The Go-BLS build works for me, but when I run it on Alpine linux (no glibc, only musl), it fails to run.
Alpine is a widely used light-weight environment for docker-containers.
Can we build the Amd64 target without glibc, to enable Alpine linux?
This is what I get when I run it in my CI environment:
A summary: a few glibc symbols like
__memcpy_chk
and__fprintf_chk
cannot be found.I tried adding glibc to alpine linux, but I think it didn't get picked up by the CGO build system.
Locally, on my dev machine with glibc, this all works. It would be great if we can make it work in lightweight environments like Alpine 👍
The text was updated successfully, but these errors were encountered: