]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
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)
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

index 0bb64b97a0da9908e4c5fce007a267c28b84d405..47bf68b6b99c479c5dbafe1944abfa4de83ba550 100644 (file)
@@ -1,4 +1,4 @@
 %rename link sync_sync_link
 
 *link:
---defsym=__sync_synchronize=__sync_synchronize_cp15dmb %(sync_sync_link)
+%{!nostdlib|lgcc: --defsym=__sync_synchronize=__sync_synchronize_cp15dmb} %(sync_sync_link)
index 13e59bdd22d9b77cec49814cf6360e6b1f188cb9..cadad6d4626b99cc03ad01c8a8b9fd325601bd9c 100644 (file)
@@ -1,4 +1,4 @@
 %rename link sync_sync_link
 
 *link:
---defsym=__sync_synchronize=__sync_synchronize_dmb %(sync_sync_link)
+%{!nostdlib|lgcc: --defsym=__sync_synchronize=__sync_synchronize_dmb} %(sync_sync_link)
index 0aa49602c8b62046e541a5c186f510a55f1b0a65..46071ca7b04bc7e9e89bd1deb0080cff98ecaabf 100644 (file)
@@ -1,4 +1,4 @@
 %rename link sync_sync_link
 
 *link:
---defsym=__sync_synchronize=__sync_synchronize_none %(sync_sync_link)
+%{!nostdlib|lgcc: --defsym=__sync_synchronize=__sync_synchronize_none} %(sync_sync_link)