mold icon indicating copy to clipboard operation
mold copied to clipboard

mold 2.40.4 reporting duplicate symbols when using LTO to build git 2.52.0 with GCC 15.2

Open satmandu opened this issue 1 month ago • 1 comments

Sorry to necrobump, but i'm seeing this error again trying to compile the current version of git (2.52.0) on armv7l with mold 2.40.4 and GCC 15.2.

[771/1057] Linking target git-shell
FAILED: [code=1] git-shell 
cc  -o git-shell git-shell.p/shell.c.o -flto -Wl,--as-needed -Wl,--no-undefined -fuse-ld=mold -Wl,-O1 -pie -flto=auto '-Wl,-rpath,$ORIGIN/src' -Wl,--start-group libcommon-main.a libgit.a src/libgitcore.a /usr/local/lib/libz-ng.so -pthread /usr/local/lib/libpcre2-8.so /usr/local/lib/libexpat.so -lnsl -lresolv /usr/local/lib/libssl.so /usr/local/lib/libcrypto.so -lnsl -lresolv -lnsl -lresolv -Wl,--end-group
mold: error: duplicate symbol: /usr/local/lib/gcc/armv7l-cros-linux-gnueabihf/15/libgcc.a(_udivsi3.o): src/libgitcore.a(63f8a0b8a638da8c-udivsi3.o): __udivsi3
mold: error: duplicate symbol: /usr/local/lib/gcc/armv7l-cros-linux-gnueabihf/15/libgcc.a(_udivsi3.o): src/libgitcore.a(63f8a0b8a638da8c-udivsi3.o): __aeabi_uidiv
mold: error: duplicate symbol: /usr/local/lib/gcc/armv7l-cros-linux-gnueabihf/15/libgcc.a(_divsi3.o): src/libgitcore.a(63f8a0b8a638da8c-divsi3.o): __divsi3
mold: error: duplicate symbol: /usr/local/lib/gcc/armv7l-cros-linux-gnueabihf/15/libgcc.a(_divsi3.o): src/libgitcore.a(63f8a0b8a638da8c-divsi3.o): __aeabi_idiv
collect2: error: ld returned 1 exit status
[772/1057] Linking target git-sh-i18n--envsubst
FAILED: [code=1] git-sh-i18n--envsubst 
cc  -o git-sh-i18n--envsubst git-sh-i18n--envsubst.p/sh-i18n--envsubst.c.o -flto -Wl,--as-needed -Wl,--no-undefined -fuse-ld=mold -Wl,-O1 -pie -flto=auto '-Wl,-rpath,$ORIGIN/src' -Wl,--start-group libcommon-main.a libgit.a src/libgitcore.a /usr/local/lib/libz-ng.so -pthread /usr/local/lib/libpcre2-8.so /usr/local/lib/libexpat.so -lnsl -lresolv /usr/local/lib/libssl.so /usr/local/lib/libcrypto.so -lnsl -lresolv -lnsl -lresolv -Wl,--end-group
mold: error: duplicate symbol: /usr/local/lib/gcc/armv7l-cros-linux-gnueabihf/15/libgcc.a(_udivsi3.o): src/libgitcore.a(63f8a0b8a638da8c-udivsi3.o): __udivsi3
mold: error: duplicate symbol: /usr/local/lib/gcc/armv7l-cros-linux-gnueabihf/15/libgcc.a(_divsi3.o): src/libgitcore.a(63f8a0b8a638da8c-divsi3.o): __divsi3
mold: error: duplicate symbol: /usr/local/lib/gcc/armv7l-cros-linux-gnueabihf/15/libgcc.a(_divsi3.o): src/libgitcore.a(63f8a0b8a638da8c-divsi3.o): __aeabi_idiv
mold: error: duplicate symbol: /usr/local/lib/gcc/armv7l-cros-linux-gnueabihf/15/libgcc.a(_udivsi3.o): src/libgitcore.a(63f8a0b8a638da8c-udivsi3.o): __aeabi_uidiv
collect2: error: ld returned 1 exit status
[773/1057] Linking target git-daemon
FAILED: [code=1] git-daemon 
cc  -o git-daemon git-daemon.p/daemon.c.o -flto -Wl,--as-needed -Wl,--no-undefined -fuse-ld=mold -Wl,-O1 -pie -flto=auto '-Wl,-rpath,$ORIGIN/src' -Wl,--start-group libcommon-main.a libgit.a src/libgitcore.a /usr/local/lib/libz-ng.so -pthread /usr/local/lib/libpcre2-8.so /usr/local/lib/libexpat.so -lnsl -lresolv /usr/local/lib/libssl.so /usr/local/lib/libcrypto.so -lnsl -lresolv -lnsl -lresolv -Wl,--end-group
mold: error: duplicate symbol: /usr/local/lib/gcc/armv7l-cros-linux-gnueabihf/15/libgcc.a(_udivsi3.o): src/libgitcore.a(63f8a0b8a638da8c-udivsi3.o): __udivsi3
mold: error: duplicate symbol: /usr/local/lib/gcc/armv7l-cros-linux-gnueabihf/15/libgcc.a(_divsi3.o): src/libgitcore.a(63f8a0b8a638da8c-divsi3.o): __divsi3
mold: error: duplicate symbol: /usr/local/lib/gcc/armv7l-cros-linux-gnueabihf/15/libgcc.a(_divsi3.o): src/libgitcore.a(63f8a0b8a638da8c-divsi3.o): __aeabi_idiv
mold: error: duplicate symbol: /usr/local/lib/gcc/armv7l-cros-linux-gnueabihf/15/libgcc.a(_udivsi3.o): src/libgitcore.a(63f8a0b8a638da8c-udivsi3.o): __aeabi_uidiv
collect2: error: ld returned 1 exit status
[774/1057] Linking target git
FAILED: [code=1] git 
cc  -o git git.p/builtin_add.c.o git.p/builtin_am.c.o git.p/builtin_annotate.c.o git.p/builtin_apply.c.o git.p/builtin_archive.c.o git.p/builtin_backfill.c.o git.p/builtin_bisect.c.o git.p/builtin_blame.c.o git.p/builtin_branch.c.o git.p/builtin_bugreport.c.o git.p/builtin_bundle.c.o git.p/builtin_cat-file.c.o git.p/builtin_check-attr.c.o git.p/builtin_check-ignore.c.o git.p/builtin_check-mailmap.c.o git.p/builtin_check-ref-format.c.o git.p/builtin_checkout--worker.c.o git.p/builtin_checkout-index.c.o git.p/builtin_checkout.c.o git.p/builtin_clean.c.o git.p/builtin_clone.c.o git.p/builtin_column.c.o git.p/builtin_commit-graph.c.o git.p/builtin_commit-tree.c.o git.p/builtin_commit.c.o git.p/builtin_config.c.o git.p/builtin_count-objects.c.o git.p/builtin_credential-cache--daemon.c.o git.p/builtin_credential-cache.c.o git.p/builtin_credential-store.c.o git.p/builtin_credential.c.o git.p/builtin_describe.c.o git.p/builtin_diagnose.c.o git.p/builtin_diff-files.c.o git.p/builtin_diff-index.c.o git.p/builtin_diff-pairs.c.o git.p/builtin_diff-tree.c.o git.p/builtin_diff.c.o git.p/builtin_difftool.c.o git.p/builtin_fast-export.c.o git.p/builtin_fast-import.c.o git.p/builtin_fetch-pack.c.o git.p/builtin_fetch.c.o git.p/builtin_fmt-merge-msg.c.o git.p/builtin_for-each-ref.c.o git.p/builtin_for-each-repo.c.o git.p/builtin_fsck.c.o git.p/builtin_fsmonitor--daemon.c.o git.p/builtin_gc.c.o git.p/builtin_get-tar-commit-id.c.o git.p/builtin_grep.c.o git.p/builtin_hash-object.c.o git.p/builtin_help.c.o git.p/builtin_hook.c.o git.p/builtin_index-pack.c.o git.p/builtin_init-db.c.o git.p/builtin_interpret-trailers.c.o git.p/builtin_last-modified.c.o git.p/builtin_log.c.o git.p/builtin_ls-files.c.o git.p/builtin_ls-remote.c.o git.p/builtin_ls-tree.c.o git.p/builtin_mailinfo.c.o git.p/builtin_mailsplit.c.o git.p/builtin_merge-base.c.o git.p/builtin_merge-file.c.o git.p/builtin_merge-index.c.o git.p/builtin_merge-ours.c.o git.p/builtin_merge-recursive.c.o git.p/builtin_merge-tree.c.o git.p/builtin_merge.c.o git.p/builtin_mktag.c.o git.p/builtin_mktree.c.o git.p/builtin_multi-pack-index.c.o git.p/builtin_mv.c.o git.p/builtin_name-rev.c.o git.p/builtin_notes.c.o git.p/builtin_pack-objects.c.o git.p/builtin_pack-refs.c.o git.p/builtin_patch-id.c.o git.p/builtin_prune-packed.c.o git.p/builtin_prune.c.o git.p/builtin_pull.c.o git.p/builtin_push.c.o git.p/builtin_range-diff.c.o git.p/builtin_read-tree.c.o git.p/builtin_rebase.c.o git.p/builtin_receive-pack.c.o git.p/builtin_reflog.c.o git.p/builtin_refs.c.o git.p/builtin_remote-ext.c.o git.p/builtin_remote-fd.c.o git.p/builtin_remote.c.o git.p/builtin_repack.c.o git.p/builtin_replace.c.o git.p/builtin_replay.c.o git.p/builtin_repo.c.o git.p/builtin_rerere.c.o git.p/builtin_reset.c.o git.p/builtin_rev-list.c.o git.p/builtin_rev-parse.c.o git.p/builtin_revert.c.o git.p/builtin_rm.c.o git.p/builtin_send-pack.c.o git.p/builtin_shortlog.c.o git.p/builtin_show-branch.c.o git.p/builtin_show-index.c.o git.p/builtin_show-ref.c.o git.p/builtin_sparse-checkout.c.o git.p/builtin_stash.c.o git.p/builtin_stripspace.c.o git.p/builtin_submodule--helper.c.o git.p/builtin_symbolic-ref.c.o git.p/builtin_tag.c.o git.p/builtin_unpack-file.c.o git.p/builtin_unpack-objects.c.o git.p/builtin_update-index.c.o git.p/builtin_update-ref.c.o git.p/builtin_update-server-info.c.o git.p/builtin_upload-archive.c.o git.p/builtin_upload-pack.c.o git.p/builtin_var.c.o git.p/builtin_verify-commit.c.o git.p/builtin_verify-pack.c.o git.p/builtin_verify-tag.c.o git.p/builtin_worktree.c.o git.p/builtin_write-tree.c.o git.p/builtin_pack-redundant.c.o git.p/git.c.o -flto -Wl,--as-needed -Wl,--no-undefined -fuse-ld=mold -Wl,-O1 -pie -flto=auto '-Wl,-rpath,$ORIGIN/src' -Wl,--start-group libcommon-main.a libgit.a src/libgitcore.a /usr/local/lib/libz-ng.so -pthread /usr/local/lib/libpcre2-8.so /usr/local/lib/libexpat.so -lnsl -lresolv /usr/local/lib/libssl.so /usr/local/lib/libcrypto.so -lnsl -lresolv -lnsl -lresolv -Wl,--end-group
mold: error: duplicate symbol: /usr/local/lib/gcc/armv7l-cros-linux-gnueabihf/15/libgcc.a(_udivsi3.o): src/libgitcore.a(63f8a0b8a638da8c-udivsi3.o): __udivsi3
mold: error: duplicate symbol: /usr/local/lib/gcc/armv7l-cros-linux-gnueabihf/15/libgcc.a(_udivsi3.o): src/libgitcore.a(63f8a0b8a638da8c-udivsi3.o): __aeabi_uidiv
mold: error: duplicate symbol: /usr/local/lib/gcc/armv7l-cros-linux-gnueabihf/15/libgcc.a(_divsi3.o): src/libgitcore.a(63f8a0b8a638da8c-divsi3.o): __divsi3
mold: error: duplicate symbol: /usr/local/lib/gcc/armv7l-cros-linux-gnueabihf/15/libgcc.a(_divsi3.o): src/libgitcore.a(63f8a0b8a638da8c-divsi3.o): __aeabi_idiv
collect2: error: ld returned 1 exit status
ninja: build stopped: subcommand failed.
There was a build error.
`CFLAGS="-O3 -pipe -ffat-lto-objects -fPIC -fuse-ld=mold  -flto=auto -flto=auto" CXXFLAGS="-O3 -pipe -ffat-lto-objects -fPIC -fuse-ld=mold  -flto=auto -flto=auto" FCFLAGS="-O3 -pipe -ffat-lto-objects -fPIC -fuse-ld=mold  -flto=auto -flto=auto" FFLAGS="-O3 -pipe -ffat-lto-objects -fPIC -fuse-ld=mold  -flto=auto -flto=auto" LDFLAGS="-flto=auto" CREW_PRELOAD_ENABLE_COMPILE_HACKS="1" CC_LD="mold" CXX_LD="mold" CREW_PRELOAD_NO_MOLD="0" /usr/local/bin/jobserver_pool.py -j 4 ninja -C ./builddir` exited with 1

I did not have issues on i686 or x86_64.

Should I open a new issue?

Originally posted by @satmandu in #1421

Build log:

2_generate (armv7l, ubuntu-24.04-arm).txt

satmandu avatar Nov 17 '25 23:11 satmandu

For what it is worth, I was able to make the issue go away by setting -Drust=disabled in my meson options when building the current version of git (2.52.0) on armv7l. There's some sort of issue maybe with linking with the rust binaries during the build, which is independent of using mold. (I also had errors using bfd and lld.)

satmandu avatar Nov 20 '25 18:11 satmandu