https://gcc.gnu.org/g:722bd6847643ae5d3f66af2a68cc83374730bee6

commit r16-5449-g722bd6847643ae5d3f66af2a68cc83374730bee6
Author: Xinhui Yang <[email protected]>
Date:   Tue Nov 11 10:19:35 2025 +0800

    gcc: check if target install name equals the full driver name
    
    When a major version program suffix is specified, along with
    --with-gcc-major-version-only, GCC tries to install $TRIPLE-gcc-tmp into
    the destination BINDIR and link it to TRIPLE-gcc-SUFFIX. However this
    executable is installed in the previous step, thus leaving the gcc-tmp
    unmodified.
    
    This is because when --program-suffix=15 (any major version) and
    --with-gcc-major-version-only, $(version) will be the major version
    number, thus making FULL_DRIVER_NAME and GCC_TARGET_INSTALL_NAME
    identical to each other. We check if these two is identical and skip the
    latter step if they are.
    
    gcc/
            PR bootstrap/105664
            * Makefile.in (install-driver): detect name collision when
            installing the driver program.
    
    Signed-off-by: Xinhui Yang <[email protected]>

Diff:
---
 gcc/Makefile.in | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/gcc/Makefile.in b/gcc/Makefile.in
index d05e15e2b6ce..02cc38ce57e0 100644
--- a/gcc/Makefile.in
+++ b/gcc/Makefile.in
@@ -4253,7 +4253,8 @@ install-driver: installdirs xgcc$(exeext)
              $(LN) $(GCC_INSTALL_NAME)$(exeext) $(FULL_DRIVER_NAME) ); \
          fi; \
          if [ ! -f gcc-cross$(exeext) ] \
-             && [ "$(GCC_INSTALL_NAME)" != "$(GCC_TARGET_INSTALL_NAME)" ]; 
then \
+             && [ "$(GCC_INSTALL_NAME)" != "$(GCC_TARGET_INSTALL_NAME)" ] \
+             && [ "$(GCC_TARGET_INSTALL_NAME)$(exeext)" != 
"$(FULL_DRIVER_NAME)" ] ; then \
            rm -f $(DESTDIR)$(bindir)/$(target_noncanonical)-gcc-tmp$(exeext); \
            ( cd $(DESTDIR)$(bindir) && \
              $(LN) $(GCC_INSTALL_NAME)$(exeext) 
$(target_noncanonical)-gcc-tmp$(exeext) && \

Reply via email to