mold: Unable to build from source in docker on NVIDIA Jetson Xavier NX (aarch64)

Compilation command:

RUN sudo apt-get -y install software-properties-common \
        && sudo add-apt-repository ppa:ubuntu-toolchain-r/test \
        && if [ -f /etc/apt/sources.list.d/ubuntu-toolchain-r-ubuntu-test-lunar.list ]; then \
            ls -la /etc/apt/sources.list.d/;  \
            sudo sed 's/lunar/bionic/' /etc/apt/sources.list.d/ubuntu-toolchain-r-ubuntu-test-lunar.list | \
            sudo tee /etc/apt/sources.list.d/ubuntu-toolchain-r-ubuntu-test-bionic.list; \
        fi \
        && sudo apt-get update \
        && sudo apt-get -y install gcc-10 g++-10 \
    && git clone https://github.com/rui314/mold.git \
    && mkdir mold/build \
    && cd mold/build \
    && git checkout v1.7.0 \
    && sudo ../install-build-deps.sh \
    && cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_CXX_COMPILER=g++-10 .. \
    && cmake --build . -j $(nproc) \
    && sudo cmake --install . \
        && sudo apt -y remove gcc-10 g++-10 \
        && sudo apt-get clean \
        && sudo apt-get -y autoclean \
        && sudo apt-get -y autoremove \
        && sudo rm -rf /var/lib/apt/lists/* \
        && cd $HOME

See here to see why I have to manually screw with the apt sources.list file

So, it’s building and using GCC 10.

Snippet of output: (There are around 14,000 lines of linker failure in the build output)

❯ cat error.log   
[ 97%] Building CXX object CMakeFiles/mold.dir/macho/arch-arm64.cc.o
[ 98%] Building CXX object CMakeFiles/mold.dir/macho/arch-x86-64.cc.o
[ 98%] Building CXX object CMakeFiles/mold.dir/macho/yaml.cc.o
[ 98%] Building CXX object CMakeFiles/mold.dir/main.cc.o
[100%] Building CXX object CMakeFiles/mold.dir/multi-glob.cc.o
[100%] Building CXX object CMakeFiles/mold.dir/perf.cc.o
[100%] Building CXX object CMakeFiles/mold.dir/tar.cc.o
[100%] Building CXX object CMakeFiles/mold.dir/uuid.cc.o
[100%] Linking CXX executable mold
CMakeFiles/mold.dir/elf/lto.cc.X86_64.cc.o: In function `tbb::detail::d2::for_each_root_task_base<__gnu_cxx::__normal_iterator<mold::elf::ObjectFile<mold::elf::X86_64>**, std::vector<mold::elf::ObjectFile<mold::elf::X86_64>*, std::allocator<mold::elf::ObjectFile<mold::elf::X86_64>*> > >, mold::elf::do_lto<mold::elf::X86_64>(mold::elf::Context<mold::elf::X86_64>&)::{lambda(mold::elf::ObjectFile<mold::elf::X86_64>*)#1}, mold::elf::ObjectFile<mold::elf::X86_64>*>::cancel(tbb::detail::d1::execution_data&)':
lto.cc.X86_64.cc:(.text._ZN3tbb6detail2d223for_each_root_task_baseIN9__gnu_cxx17__normal_iteratorIPPN4mold3elf10ObjectFileINS6_6X86_64EEESt6vectorISA_SaISA_EEEEZNS6_6do_ltoIS8_EESC_IPNS7_IT_EESaISJ_EERNS6_7ContextISH_EEEUlSA_E_SA_E6cancelERNS0_2d114execution_dataE[_ZN3tbb6detail2d223for_each_root_task_baseIN9__gnu_cxx17__normal_iteratorIPPN4mold3elf10ObjectFileINS6_6X86_64EEESt6vectorISA_SaISA_EEEEZNS6_6do_ltoIS8_EESC_IPNS7_IT_EESaISJ_EERNS6_7ContextISH_EEEUlSA_E_SA_E6cancelERNS0_2d114execution_dataE]+0x1c): undefined reference to `__aarch64_ldadd8_acq_rel'
CMakeFiles/mold.dir/elf/lto.cc.X86_64.cc.o: In function `tbb::detail::d2::for_each_root_task<__gnu_cxx::__normal_iterator<mold::elf::ObjectFile<mold::elf::X86_64>**, std::vector<mold::elf::ObjectFile<mold::elf::X86_64>*, std::allocator<mold::elf::ObjectFile<mold::elf::X86_64>*> > >, mold::elf::do_lto<mold::elf::X86_64>(mold::elf::Context<mold::elf::X86_64>&)::{lambda(mold::elf::ObjectFile<mold::elf::X86_64>*)#1}, mold::elf::ObjectFile<mold::elf::X86_64>*, std::random_access_iterator_tag>::execute(tbb::detail::d1::execution_data&)':
lto.cc.X86_64.cc:(.text._ZN3tbb6detail2d218for_each_root_taskIN9__gnu_cxx17__normal_iteratorIPPN4mold3elf10ObjectFileINS6_6X86_64EEESt6vectorISA_SaISA_EEEEZNS6_6do_ltoIS8_EESC_IPNS7_IT_EESaISJ_EERNS6_7ContextISH_EEEUlSA_E_SA_St26random_access_iterator_tagE7executeERNS0_2d114execution_dataE[_ZN3tbb6detail2d218for_each_root_taskIN9__gnu_cxx17__normal_iteratorIPPN4mold3elf10ObjectFileINS6_6X86_64EEESt6vectorISA_SaISA_EEEEZNS6_6do_ltoIS8_EESC_IPNS7_IT_EESaISJ_EERNS6_7ContextISH_EEEUlSA_E_SA_St26random_access_iterator_tagE7executeERNS0_2d114execution_dataE]+0x48): undefined reference to `__aarch64_ldadd8_acq_rel'
lto.cc.X86_64.cc:(.text._ZN3tbb6detail2d218for_each_root_taskIN9__gnu_cxx17__normal_iteratorIPPN4mold3elf10ObjectFileINS6_6X86_64EEESt6vectorISA_SaISA_EEEEZNS6_6do_ltoIS8_EESC_IPNS7_IT_EESaISJ_EERNS6_7ContextISH_EEEUlSA_E_SA_St26random_access_iterator_tagE7executeERNS0_2d114execution_dataE[_ZN3tbb6detail2d218for_each_root_taskIN9__gnu_cxx17__normal_iteratorIPPN4mold3elf10ObjectFileINS6_6X86_64EEESt6vectorISA_SaISA_EEEEZNS6_6do_ltoIS8_EESC_IPNS7_IT_EESaISJ_EERNS6_7ContextISH_EEEUlSA_E_SA_St26random_access_iterator_tagE7executeERNS0_2d114execution_dataE]+0x134): undefined reference to `__aarch64_ldadd8_acq_rel'
CMakeFiles/mold.dir/elf/lto.cc.X86_64.cc.o: In function `void tbb::detail::d2::parallel_for_each<__gnu_cxx::__normal_iterator<mold::elf::ObjectFile<mold::elf::X86_64>**, std::vector<mold::elf::ObjectFile<mold::elf::X86_64>*, std::allocator<mold::elf::ObjectFile<mold::elf::X86_64>*> > >, mold::elf::do_lto<mold::elf::X86_64>(mold::elf::Context<mold::elf::X86_64>&)::{lambda(mold::elf::ObjectFile<mold::elf::X86_64>*)#1}>(__gnu_cxx::__normal_iterator<mold::elf::ObjectFile<mold::elf::X86_64>**, std::vector<mold::elf::ObjectFile<mold::elf::X86_64>*, std::allocator<mold::elf::ObjectFile<mold::elf::X86_64>*> > >, __gnu_cxx::__normal_iterator<mold::elf::ObjectFile<mold::elf::X86_64>**, std::vector<mold::elf::ObjectFile<mold::elf::X86_64>*, std::allocator<mold::elf::ObjectFile<mold::elf::X86_64>*> > >, mold::elf::do_lto<mold::elf::X86_64>(mold::elf::Context<mold::elf::X86_64>&)::{lambda(mold::elf::ObjectFile<mold::elf::X86_64>*)#1} const&)':
lto.cc.X86_64.cc:(.text._ZN3tbb6detail2d217parallel_for_eachIN9__gnu_cxx17__normal_iteratorIPPN4mold3elf10ObjectFileINS6_6X86_64EEESt6vectorISA_SaISA_EEEEZNS6_6do_ltoIS8_EESC_IPNS7_IT_EESaISJ_EERNS6_7ContextISH_EEEUlSA_E_EEvSH_SH_RKT0_[_ZN3tbb6detail2d217parallel_for_eachIN9__gnu_cxx17__normal_iteratorIPPN4mold3elf10ObjectFileINS6_6X86_64EEESt6vectorISA_SaISA_EEEEZNS6_6do_ltoIS8_EESC_IPNS7_IT_EESaISJ_EERNS6_7ContextISH_EEEUlSA_E_EEvSH_SH_RKT0_]+0x9c): undefined reference to `__aarch64_ldadd8_acq_rel'
CMakeFiles/mold.dir/elf/lto.cc.X86_64.cc.o: In function `mold::elf::ObjectFile<mold::elf::X86_64>* mold::elf::read_lto_object<mold::elf::X86_64>(mold::elf::Context<mold::elf::X86_64>&, mold::MappedFile<mold::elf::Context<mold::elf::X86_64> >*)':
lto.cc.X86_64.cc:(.text._ZN4mold3elf15read_lto_objectINS0_6X86_64EEEPNS0_10ObjectFileIT_EERNS0_7ContextIS4_EEPNS_10MappedFileIS8_EE[_ZN4mold3elf15read_lto_objectINS0_6X86_64EEEPNS0_10ObjectFileIT_EERNS0_7ContextIS4_EEPNS_10MappedFileIS8_EE]+0x1c0): undefined reference to `__aarch64_ldadd8_acq_rel'
CMakeFiles/mold.dir/elf/lto.cc.X86_64.cc.o:lto.cc.X86_64.cc:(.text._ZN4mold3elf15read_lto_objectINS0_6X86_64EEEPNS0_10ObjectFileIT_EERNS0_7ContextIS4_EEPNS_10MappedFileIS8_EE[_ZN4mold3elf15read_lto_objectINS0_6X86_64EEEPNS0_10ObjectFileIT_EERNS0_7ContextIS4_EEPNS_10MappedFileIS8_EE]+0x73c): more undefined references to `__aarch64_ldadd8_acq_rel' follow
CMakeFiles/mold.dir/elf/lto.cc.X86_64.cc.o: In function `mold::elf::ObjectFile<mold::elf::X86_64>* mold::elf::read_lto_object<mold::elf::X86_64>(mold::elf::Context<mold::elf::X86_64>&, mold::MappedFile<mold::elf::Context<mold::elf::X86_64> >*)':
lto.cc.X86_64.cc:(.text._ZN4mold3elf15read_lto_objectINS0_6X86_64EEEPNS0_10ObjectFileIT_EERNS0_7ContextIS4_EEPNS_10MappedFileIS8_EE[_ZN4mold3elf15read_lto_objectINS0_6X86_64EEEPNS0_10ObjectFileIT_EERNS0_7ContextIS4_EEPNS_10MappedFileIS8_EE]+0x830): undefined reference to `__aarch64_cas8_acq_rel'
lto.cc.X86_64.cc:(.text._ZN4mold3elf15read_lto_objectINS0_6X86_64EEEPNS0_10ObjectFileIT_EERNS0_7ContextIS4_EEPNS_10MappedFileIS8_EE[_ZN4mold3elf15read_lto_objectINS0_6X86_64EEEPNS0_10ObjectFileIT_EERNS0_7ContextIS4_EEPNS_10MappedFileIS8_EE]+0x8f0): undefined reference to `__aarch64_ldadd8_acq_rel'
lto.cc.X86_64.cc:(.text._ZN4mold3elf15read_lto_objectINS0_6X86_64EEEPNS0_10ObjectFileIT_EERNS0_7ContextIS4_EEPNS_10MappedFileIS8_EE[_ZN4mold3elf15read_lto_objectINS0_6X86_64EEEPNS0_10ObjectFileIT_EERNS0_7ContextIS4_EEPNS_10MappedFileIS8_EE]+0x900): undefined reference to `__aarch64_ldadd8_acq_rel'
lto.cc.X86_64.cc:(.text._ZN4mold3elf15read_lto_objectINS0_6X86_64EEEPNS0_10ObjectFileIT_EERNS0_7ContextIS4_EEPNS_10MappedFileIS8_EE[_ZN4mold3elf15read_lto_objectINS0_6X86_64EEEPNS0_10ObjectFileIT_EERNS0_7ContextIS4_EEPNS_10MappedFileIS8_EE]+0x964): undefined reference to `__aarch64_cas8_acq_rel'
lto.cc.X86_64.cc:(.text._ZN4mold3elf15read_lto_objectINS0_6X86_64EEEPNS0_10ObjectFileIT_EERNS0_7ContextIS4_EEPNS_10MappedFileIS8_EE[_ZN4mold3elf15read_lto_objectINS0_6X86_64EEEPNS0_10ObjectFileIT_EERNS0_7ContextIS4_EEPNS_10MappedFileIS8_EE]+0xa64): undefined reference to `__aarch64_ldadd8_acq_rel'
lto.cc.X86_64.cc:(.text._ZN4mold3elf15read_lto_objectINS0_6X86_64EEEPNS0_10ObjectFileIT_EERNS0_7ContextIS4_EEPNS_10MappedFileIS8_EE[_ZN4mold3elf15read_lto_objectINS0_6X86_64EEEPNS0_10ObjectFileIT_EERNS0_7ContextIS4_EEPNS_10MappedFileIS8_EE]+0xaf4): undefined reference to `__aarch64_ldadd8_acq_rel'
lto.cc.X86_64.cc:(.text._ZN4mold3elf15read_lto_objectINS0_6X86_64EEEPNS0_10ObjectFileIT_EERNS0_7ContextIS4_EEPNS_10MappedFileIS8_EE[_ZN4mold3elf15read_lto_objectINS0_6X86_64EEEPNS0_10ObjectFileIT_EERNS0_7ContextIS4_EEPNS_10MappedFileIS8_EE]+0xb38): undefined reference to `__aarch64_ldadd8_acq_rel'
lto.cc.X86_64.cc:(.text._ZN4mold3elf15read_lto_objectINS0_6X86_64EEEPNS0_10ObjectFileIT_EERNS0_7ContextIS4_EEPNS_10MappedFileIS8_EE[_ZN4mold3elf15read_lto_objectINS0_6X86_64EEEPNS0_10ObjectFileIT_EERNS0_7ContextIS4_EEPNS_10MappedFileIS8_EE]+0xb48): undefined reference to `__aarch64_ldadd8_acq_rel'
lto.cc.X86_64.cc:(.text._ZN4mold3elf15read_lto_objectINS0_6X86_64EEEPNS0_10ObjectFileIT_EERNS0_7ContextIS4_EEPNS_10MappedFileIS8_EE[_ZN4mold3elf15read_lto_objectINS0_6X86_64EEEPNS0_10ObjectFileIT_EERNS0_7ContextIS4_EEPNS_10MappedFileIS8_EE]+0xb5c): undefined reference to `__aarch64_ldclr8_acq_rel'
lto.cc.X86_64.cc:(.text._ZN4mold3elf15read_lto_objectINS0_6X86_64EEEPNS0_10ObjectFileIT_EERNS0_7ContextIS4_EEPNS_10MappedFileIS8_EE[_ZN4mold3elf15read_lto_objectINS0_6X86_64EEEPNS0_10ObjectFileIT_EERNS0_7ContextIS4_EEPNS_10MappedFileIS8_EE]+0xb80): undefined reference to `__aarch64_ldclr8_acq_rel'
lto.cc.X86_64.cc:(.text._ZN4mold3elf15read_lto_objectINS0_6X86_64EEEPNS0_10ObjectFileIT_EERNS0_7ContextIS4_EEPNS_10MappedFileIS8_EE[_ZN4mold3elf15read_lto_objectINS0_6X86_64EEEPNS0_10ObjectFileIT_EERNS0_7ContextIS4_EEPNS_10MappedFileIS8_EE]+0xba0): undefined reference to `__aarch64_ldadd8_acq_rel'
lto.cc.X86_64.cc:(.text._ZN4mold3elf15read_lto_objectINS0_6X86_64EEEPNS0_10ObjectFileIT_EERNS0_7ContextIS4_EEPNS_10MappedFileIS8_EE[_ZN4mold3elf15read_lto_objectINS0_6X86_64EEEPNS0_10ObjectFileIT_EERNS0_7ContextIS4_EEPNS_10MappedFileIS8_EE]+0xd08): undefined reference to `__aarch64_ldadd8_acq_rel'
lto.cc.X86_64.cc:(.text._ZN4mold3elf15read_lto_objectINS0_6X86_64EEEPNS0_10ObjectFileIT_EERNS0_7ContextIS4_EEPNS_10MappedFileIS8_EE[_ZN4mold3elf15read_lto_objectINS0_6X86_64EEEPNS0_10ObjectFileIT_EERNS0_7ContextIS4_EEPNS_10MappedFileIS8_EE]+0xd6c): undefined reference to `__aarch64_ldclr8_acq_rel'
lto.cc.X86_64.cc:(.text._ZN4mold3elf15read_lto_objectINS0_6X86_64EEEPNS0_10ObjectFileIT_EERNS0_7ContextIS4_EEPNS_10MappedFileIS8_EE[_ZN4mold3elf15read_lto_objectINS0_6X86_64EEEPNS0_10ObjectFileIT_EERNS0_7ContextIS4_EEPNS_10MappedFileIS8_EE]+0x1028): undefined reference to `__aarch64_ldadd8_acq_rel'
lto.cc.X86_64.cc:(.text._ZN4mold3elf15read_lto_objectINS0_6X86_64EEEPNS0_10ObjectFileIT_EERNS0_7ContextIS4_EEPNS_10MappedFileIS8_EE[_ZN4mold3elf15read_lto_objectINS0_6X86_64EEEPNS0_10ObjectFileIT_EERNS0_7ContextIS4_EEPNS_10MappedFileIS8_EE]+0x1044): undefined reference to `__aarch64_cas8_acq_rel'
lto.cc.X86_64.cc:(.text._ZN4mold3elf15read_lto_objectINS0_6X86_64EEEPNS0_10ObjectFileIT_EERNS0_7ContextIS4_EEPNS_10MappedFileIS8_EE[_ZN4mold3elf15read_lto_objectINS0_6X86_64EEEPNS0_10ObjectFileIT_EERNS0_7ContextIS4_EEPNS_10MappedFileIS8_EE]+0x1098): undefined reference to `__aarch64_ldadd8_acq_rel'

About this issue

  • Original URL
  • State: closed
  • Created 2 years ago
  • Comments: 22 (5 by maintainers)

Most upvoted comments

I also ran into an error for x86_64 under an 18.04 docker with gcc-11 but not gcc-10 (may belong in separate ticket):

#31 35.65 [ 14%] Building CXX object third-party/tbb/src/tbb/CMakeFiles/tbb.dir/task_dispatcher.cpp.o
#31 35.65 [ 14%] Building CXX object third-party/tbb/src/tbb/CMakeFiles/tbb.dir/task_group_context.cpp.o
#31 35.67 [ 15%] Building CXX object third-party/tbb/src/tbb/CMakeFiles/tbb.dir/version.cpp.o
#31 35.71 [ 15%] Building CXX object third-party/tbb/src/tbb/CMakeFiles/tbb.dir/queuing_rw_mutex.cpp.o
#31 36.03 [ 16%] Linking C static library libmimalloc.a
#31 36.06 [ 16%] Built target mimalloc-static
#31 37.44 /tmp/ccUc0hx4.s: Assembler messages:
#31 37.44 /tmp/ccUc0hx4.s:8949: Error: no such instruction: `tpause %ecx'
#31 37.44 /tmp/ccUc0hx4.s:10090: Error: no such instruction: `tpause %ecx'
#31 37.45 third-party/tbb/src/tbb/CMakeFiles/tbb.dir/build.make:107: recipe for target 'third-party/tbb/src/tbb/CMakeFiles/tbb.dir/arena.cpp.o' failed
#31 37.45 make[2]: *** [third-party/tbb/src/tbb/CMakeFiles/tbb.dir/arena.cpp.o] Error 1
#31 37.45 make[2]: *** Waiting for unfinished jobs....
#31 37.59 /tmp/ccIhTeFm.s: Assembler messages:
#31 37.59 /tmp/ccIhTeFm.s:4250: Error: no such instruction: `tpause %ecx'
#31 37.59 /tmp/ccIhTeFm.s:5795: Error: no such instruction: `tpause %ecx'
#31 37.59 /tmp/ccIhTeFm.s:8380: Error: no such instruction: `tpause %ecx'
#31 37.59 /tmp/ccIhTeFm.s:10437: Error: no such instruction: `tpause %ecx'
#31 37.59 make[2]: *** [third-party/tbb/src/tbb/CMakeFiles/tbb.dir/task_dispatcher.cpp.o] Error 1
#31 37.59 third-party/tbb/src/tbb/CMakeFiles/tbb.dir/build.make:393: recipe for target 'third-party/tbb/src/tbb/CMakeFiles/tbb.dir/task_dispatcher.cpp.o' failed
#31 37.59 CMakeFiles/Makefile2:1188: recipe for target 'third-party/tbb/src/tbb/CMakeFiles/tbb.dir/all' failed
#31 37.59 make[1]: *** [third-party/tbb/src/tbb/CMakeFiles/tbb.dir/all] Error 2
#31 37.59 Makefile:181: recipe for target 'all' failed
#31 37.59 make: *** [all] Error 2

Upgrade binutils can help.