diff --git a/SOURCES/gts-annobin-plugin-select.sh b/SOURCES/gts-annobin-plugin-select.sh
new file mode 100644
index 0000000..8beac82
--- /dev/null
+++ b/SOURCES/gts-annobin-plugin-select.sh
@@ -0,0 +1,226 @@
+#!/usr/bin/sh
+# This is a script to switch the symlinks in a GTS gcc's plugin
+# directory so that they select either the GTS-annobin provided
+# plugin or the GTS-gcc provided plugin.
+
+# Author: Nick Clifton  <nickc@redhat.com>
+# Copyright (c) 2021-2022 Red Hat.
+#
+# This is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License as published
+# by the Free Software Foundation; either version 2, or (at your
+# option) any later version.
+
+# It is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# Usage:
+#   gts-annobin-plugin-select scl_root
+#
+
+# Set this variable to non-zero to enable the generation of debugging
+# messages.
+debug=0
+
+if test "x$1" = "x" ;
+then
+    if [ $debug -eq 1 ]
+    then
+	echo "  gts-annobin-plugin-select: Must provide a root directory"
+    fi
+    exit 1
+else
+    scl_root=$1
+fi
+
+# This script is similar to the redhat-annobin-plugin-select.sh script which
+# is part of the redhat-rpm-config package.  That scripts decides between two
+# versions of the annobin plugin for the system compiler and stores it choice
+# in a symlink in the /usr/lib/rpm/redhat directory.  The choice eventually
+# resolves into the system gcc attempting to load either a plugin called
+# annobin.so or a plugin called gcc-annobin.so.
+
+# In a GTS environment the choice made by redhat-annobin-plugin-select.sh
+# might not be appropriate (or even possible).  The choice cannot be changed
+# because the system compilation environment must remain instact.  So instead
+# the GTS versions of gcc and annobin install plugins called gts-annobin.so
+# and gts-gcc-annobin.so (into the GTS gcc's plugin directory) and this script
+# creates a pair of symlinks called annobin.so and gcc-annobin.so.  In this
+# way the decision made by redhat-annobin-plugin-select.sh is overridden
+# without affecting any system files.
+
+# We cannot be sure that this script will run inside a GTS enabled shell,
+# so we have to use absolute paths.
+gts_gcc=$scl_root/usr/bin/gcc
+
+if [ ! -x $gts_gcc ]
+then
+    if [ $debug -eq 1 ]
+    then
+	echo "  gts-annobin-plugin-select: Could not find gcc.  Expected: $gts_gcc"
+    fi
+    exit 0
+fi
+
+# This is where the annobin package stores the information on the version
+# of gcc that built the annobin plugin.
+aver=`$gts_gcc --print-file-name=plugin`/annobin-plugin-version-info
+
+# This is where the gcc package stores its version information.
+gver=`$gts_gcc --print-file-name=rpmver`
+
+aplugin=`$gts_gcc --print-file-name=plugin`/gts-annobin.so.0.0.0
+gplugin=`$gts_gcc --print-file-name=plugin`/gts-gcc-annobin.so.0.0.0
+
+install_annobin_version=0
+install_gcc_version=0
+
+if [ -f $aplugin ]
+then
+    if [ -f $gplugin ]
+    then
+	if [ $debug -eq 1 ]
+	then
+	    echo "  gts-annobin-plugin-select: Both plugins exist, checking version information"
+	fi
+
+	if [ -f $gver ]
+	then
+	    if [ -f $aver ]
+	    then
+		if [ $debug -eq 1 ]
+		then
+		    echo "  gts-annobin-plugin-select: Both plugin version files exist - comparing..."
+		fi
+
+		# Get the first line from the version info files.  This is just in
+		# case there are extra lines in the files.
+		avers=`head --lines=1 $aver`
+		gvers=`head --lines=1 $gver`
+
+		if [ $debug -eq 1 ]
+		then
+		    echo "  gts-annobin-plugin-select: Annobin plugin built by gcc $avers"
+		    echo "  gts-annobin-plugin-select: GCC     plugin built by gcc $gvers"
+		fi
+
+		# If both plugins were built by the same version of gcc then select
+		# the one from the annobin package (in case it is built from newer
+		# sources).  If the plugin builder versions differ, select the gcc
+		# built version instead.  This assumes that the gcc built version
+		# always matches the installed gcc, which should be true.
+		if [ $avers = $gvers ]
+		then
+		    if [ $debug -eq 1 ]
+		    then
+			echo "  gts-annobin-plugin-select: Both plugins built by the same compiler - using annobin-built plugin"
+		    fi
+		    install_annobin_version=1
+		else
+		    if [ $debug -eq 1 ]
+		    then
+			echo "  gts-annobin-plugin-select: Versions differ - using gcc-built plugin"
+		    fi
+		    install_gcc_version=1
+		fi
+	    else
+		if [ $debug -eq 1 ]
+		then
+		    echo "  gts-annobin-plugin-select: Annobin version file does not exist, using gcc-built plugin"
+		fi
+		install_gcc_version=1
+	    fi
+	else
+	    if [ -f $aver ]
+	    then
+		# FIXME: This is suspicious.  If the installed GCC does not supports plugins
+		# then enabling the annobin plugin will not work.
+		if [ $debug -eq 1 ]
+		then
+		    echo "  gts-annobin-plugin-select: GCC plugin version file does not exist, using annobin-built plugin"
+		fi
+		install_annobin_version=1
+	    else
+		if [ $debug -eq 1 ]
+		then
+		    echo "  gts-annobin-plugin-select: Neither version file exists - playing safe and using gcc-built plugin"
+		    echo "  gts-annobin-plugin-select: Note: expected to find $aver and/or $gver"
+		fi
+		install_gcc_version=1
+	    fi
+	fi
+    else
+	if [ $debug -eq 1 ]
+	then
+	    echo "  gts-annobin-plugin-select: Only the annobin plugin exists - using that"
+	fi
+	install_annobin_version=1
+    fi
+else
+    if [ -f $gplugin ]
+    then
+	if [ $debug -eq 1 ]
+	then
+	    echo "  gts-annobin-plugin-select: Only the gcc plugin exists - using that"
+	fi
+	install_gcc_version=1
+    else
+	aplugin=`$gts_gcc --print-file-name=plugin`/annobin.so.0.0.0
+
+	if [ -f $aplugin ]
+	then
+	    if [ $debug -eq 1 ]
+	    then
+		echo "  gts-annobin-plugin-select: Original annobin plugin exists - renaming"
+		echo "  gts-annobin-plugin-select: Using renamed original annobin plugin"
+	    fi
+	    pushd `$gts_gcc --print-file-name=plugin` > /dev/null
+	    mv annobin.so.0.0.0 gts-annobin.so.0.0.0
+	    popd > /dev/null
+	    install_annobin_version=1
+	else
+	    if [ $debug -eq 1 ]
+	    then
+		echo "  gts-annobin-plugin-select: Neither plugin exists - playing safe and not changing anything"
+		echo "  gts-annobin-plugin-select: Note: expected to find $aplugin and/or $gplugin"
+	    fi
+	fi
+    fi
+fi
+
+if [ $install_annobin_version -eq 1 ]
+then
+    if [ $debug -eq 1 ]
+    then
+	echo "  gts-annobin-plugin-select: Setting symlinks for the annobin version of the plugin"
+    fi
+    pushd `$gts_gcc --print-file-name=plugin` > /dev/null
+    rm -f gcc-annobin.so.0.0.0 annobin.so.0.0.0 gcc-annobin.so annobin.so
+    ln -s gts-annobin.so.0.0.0 annobin.so
+    ln -s gts-annobin.so.0.0.0 gcc-annobin.so
+    ln -s gts-annobin.so.0.0.0 annobin.so.0.0.0
+    ln -s gts-annobin.so.0.0.0 gcc-annobin.so.0.0.0
+    popd > /dev/null
+    
+else if [ $install_gcc_version -eq 1 ]
+then
+    if [ $debug -eq 1 ]
+    then
+	echo "  gts-annobin-plugin-select: Setting symlinks for the gcc version of the plugin"
+    fi
+    pushd `$gts_gcc --print-file-name=plugin` > /dev/null
+    rm -f gcc-annobin.so.0.0.0     annobin.so.0.0.0 gcc-annobin.so annobin.so
+    ln -s gts-gcc-annobin.so.0.0.0 annobin.so
+    ln -s gts-gcc-annobin.so.0.0.0 gcc-annobin.so
+    ln -s gts-gcc-annobin.so.0.0.0 annobin.so.0.0.0
+    ln -s gts-gcc-annobin.so.0.0.0 gcc-annobin.so.0.0.0
+    popd > /dev/null
+else
+    if [ $debug -eq 1 ]
+    then
+	echo "  gts-annobin-plugin-select: NOT CHANGING SYMLINKS"
+    fi
+fi
+fi
diff --git a/SPECS/gcc-toolset-12.spec b/SPECS/gcc-toolset-12.spec
index adf0d40..d187a65 100644
--- a/SPECS/gcc-toolset-12.spec
+++ b/SPECS/gcc-toolset-12.spec
@@ -5,12 +5,13 @@
 Summary: Package that installs %scl
 Name: %scl_name
 Version: 12.0
-Release: 5%{?dist}
+Release: 6%{?dist}
 License: GPLv2+
 Group: Applications/File
 BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
 Source0: README
 Source1: sudo.sh
+Source2: gts-annobin-plugin-select.sh
 
 Requires: %{scl_prefix}runtime
 Requires: %{scl_prefix}gcc %{scl_prefix}gcc-c++ %{scl_prefix}gcc-gfortran
@@ -28,6 +29,8 @@ BuildRequires: help2man
 BuildRequires: python3-devel
 %endif
 
+%global rrcdir %{_scl_root}/usr/lib/rpm/redhat
+
 %description
 This is the main package for %scl Software Collection.
 
@@ -142,11 +145,31 @@ install -d -m 755 %{buildroot}%{_libdir}/perl5/vendor_perl/auto
 install -d -m 755 %{buildroot}%{_mandir}/man7
 install -p -m 644 %{?scl_name}.7 %{buildroot}%{_mandir}/man7/
 
+# Install the plugin selector trigger script.
+mkdir -p %{buildroot}%{rrcdir}
+install -p -m 755 %{SOURCE2} %{buildroot}%{rrcdir}/
+
+# This trigger is used to decide which version of the annobin plugin for gcc
+# should be used.  See comments in the script for full details.
+
+%triggerin runtime -- %{scl_prefix}annobin-plugin-gcc %{scl_prefix}gcc-plugin-annobin
+%{rrcdir}/gts-annobin-plugin-select.sh %{_scl_root}
+%end
+
+# We also trigger when annobin is uninstalled.  This allows us to switch
+# over to the gcc generated version of the plugin.  It does not matter if
+# gcc is uninstalled, since if that happens the plugin cannot be used.
+
+%triggerpostun runtime -- %{scl_prefix}annobin-plugin-gcc
+%{rrcdir}/gts-annobin-plugin-select.sh %{_scl_root}
+%end
+
 %files
 %doc README
 %{_mandir}/man7/%{?scl_name}.*
 
 %files runtime
+%attr(0755,-,-) %{rrcdir}/gts-annobin-plugin-select.sh
 %scl_files
 %{_root_sysconfdir}/rpm/macros.%{scl}-enable
 %attr(0644,root,root) %verify(not md5 size mtime) %ghost %config(missingok,noreplace) %{_sysconfdir}/selinux-equiv.created
@@ -173,6 +196,9 @@ if [ $1 = 0 ]; then
 fi
 
 %changelog
+* Mon Dec 05 2022 Nick Clifton  <nickc@redhat.com> - 12.0-6
+- Use triggers to select which version of the annobin plugin should be used.  (#211175)
+
 * Wed Jun 29 2022 Marek Polacek <polacek@redhat.com> - 12.0-5
 - require -annobin-plugin-gcc (#2102356)