]> git.ipfire.org Git - thirdparty/gcc.git/commit
arm: libgcc: make -spec=sync-*.specs compatible with LTO [PR118642]
authorRichard Earnshaw <rearnsha@arm.com>
Tue, 28 Jan 2025 16:14:35 +0000 (16:14 +0000)
committerRichard Earnshaw <rearnsha@arm.com>
Tue, 28 Jan 2025 16:23:06 +0000 (16:23 +0000)
commit0204dcf930b5093d0811a007b7f47aa42e55e787
tree26746ed7184a1cbb9339ea03389d2602086d2e0e
parent54bdeca3c6214485d15454df30183a56ad3e473b
arm: libgcc: make -spec=sync-*.specs compatible with LTO [PR118642]

The arm-none-eabi port provides some alternative implementations of
__sync_synchronize for different implementations of the architecture.
These can be selected using one of -specs=sync-{none,dmb,cp15dmb}.specs.

These specs fragments fail, however, when LTO is used because they
unconditionally add a --defsym=__sync_synchronize=<implementation> to
the linker arguments and that fails if libgcc is not added to the list
of libraries.

Fix this by only adding the defsym if libgcc will be passed to the
linker.

libgcc/

PR target/118642
* config/arm/sync-none.specs (link): Only add the defsym if
libgcc will be used.
* config/arm/sync-dmb.specs: Likewise.
* config/arm/sync-cp15dmb.specs: Likewise.
libgcc/config/arm/sync-cp15dmb.specs
libgcc/config/arm/sync-dmb.specs
libgcc/config/arm/sync-none.specs