Skip to content

Object file (lse.o) with __aarch64_have_lse_atomics symbol included several times in static library #443

Closed
@fxcoudert

Description

@fxcoudert

Hi, I'm a Homebrew maintainer, trying to build librsvg on macOS with the latest rust. The issue encountered is reported at librsvg (https://gitlab.gnome.org/GNOME/librsvg/-/issues/787) but my investigation makes me think it's a compiler-builtins issue.

The issue in short is this: a static library file, created by cargo in this way:

	PKG_CONFIG_ALLOW_CROSS=1						\
	PKG_CONFIG='/opt/homebrew/Library/Homebrew/shims/mac/super/pkg-config'						\
	CARGO_TARGET_DIR=/private/tmp/librsvg-20211127-15889-8ebs99/librsvg-2.50.7/target					\
	cargo --locked build   --release \
	&& cd /private/tmp/librsvg-20211127-15889-8ebs99/librsvg-2.50.7 && /bin/sh ./libtool --silent --tag=CC   --mode=link clang  -g -O2   -o librsvg_c_api.la _rsvg_dummy.lo && mv /private/tmp/librsvg-20211127-15889-8ebs99/librsvg-2.50.7/target/release/librsvg_c_api.a .libs/librsvg_c_api.a

The librsvg_c_api.a file that is produced contains many times the same object file (lse.o), which I think comes from this project, because of:

sources.extend(&[("__aarch64_have_lse_atomics", "cpu_model.c")]);

This, in turn, leads to build failure at the next step, because a static library is supposed to have object files with unique names (libtool enforces that).

I'm not a Rust user myself, just trying to help debug this issue and move forward so we can ship this new version. So I hope my deductions are valid…

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions