diff --git a/m4/acx_lt_problems.m4 b/m4/acx_lt_problems.m4
index c775ff873744b2b0290826d8c65ab74537f02c61..99da19b3aaa8d256f77cb617a266f262fdf863bc 100644
--- a/m4/acx_lt_problems.m4
+++ b/m4/acx_lt_problems.m4
@@ -54,10 +54,10 @@ dnl     causes a duplicate exit handler that fails and clobbers the
 dnl     programs exit status (set to 128).
 dnl
 AC_DEFUN([_ACX_LT_PROBLEMS],
-  [AC_REQUIRE([AC_CANONICAL_HOST])
-   AC_LANG_CASE([Fortran],[acx_Comp=$FC],
-     [Fortran 77],[acx_Comp=$F77],
-     [C],[acx_Comp=$CC])
+  [AC_REQUIRE([AC_CANONICAL_HOST])dnl
+   AC_LANG_CASE([Fortran],[m4_pushdef([acx_Comp],[FC])m4_pushdef([acx_flags_var],[FCFLAGS])],
+     [Fortran 77],[m4_pushdef([acx_Comp],[F77])m4_pushdef([acx_flags_var],[FFLAGS])],
+     [C],[m4_pushdef([acx_Comp],[CC])m4_pushdef([acx_flags_var],[CFLAGS])])dnl
    _AS_ECHO_LOG([testing if $acx_Comp cannot build working shared objects])
    AS_CASE([$host],
      [*-ibm-aix*],
@@ -65,8 +65,11 @@ AC_DEFUN([_ACX_LT_PROBLEMS],
         [acx_cv_disable_shared=yes])],
      [x86_64-*-linux-*|i*86-*-linux-*|*-apple-darwin*|ia64-*-linux-*|x86_64-*-freebsd*|i*86-*-freebsd*],
      [AS_IF([$acx_Comp -V 2>&1 | grep '^Intel(R).*Fortran.*Compiler.*Version 15.0.@<:@123@:>@' >/dev/null],
-        [acx_cv_disable_shared=yes])])
-   _AS_ECHO_LOG([result: $acx_cv_disable_shared])])
+        [AS_CASE([" $acx_flags_var $LDFLAGS "],
+           [*\ -Qlocation,ld,*\ *],
+           [acx_cv_disable_shared=yes],
+           [acx_flags_var="$acx_flags_var -Qlocation,ld,$ac_abs_confdir/util/icomp15"])])])
+   _AS_ECHO_LOG([result: $acx_cv_disable_shared])m4_popdef([acx_Comp])m4_popdef([acx_flags_var])])
 dnl
 dnl run test for C and Fortran compilers
 AC_DEFUN([ACX_LT_PROBLEMS],
diff --git a/util/icomp15/ld b/util/icomp15/ld
new file mode 100755
index 0000000000000000000000000000000000000000..a2a4dc217bae934ad01c302b39ae23a91e198598
--- /dev/null
+++ b/util/icomp15/ld
@@ -0,0 +1,79 @@
+#! /bin/bash
+#
+#
+# ld --- wrapper of ld to work around a bug in ifort 15.0.1-15.0.3
+#
+# Copyright  (C)  2022  Thomas Jahns <jahns@dkrz.de>
+#
+# Version: 1.0
+# Author: Thomas Jahns <jahns@dkrz.de>
+# Keywords:
+# Maintainer: Thomas Jahns <jahns@dkrz.de>
+# URL: https://www.dkrz.de/redmine/projects/yaxt
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are  permitted provided that the following conditions are
+# met:
+#
+# Redistributions of source code must retain the above copyright notice,
+# this list of conditions and the following disclaimer.
+#
+# Redistributions in binary form must reproduce the above copyright
+# notice, this list of conditions and the following disclaimer in the
+# documentation and/or other materials provided with the distribution.
+#
+# Neither the name of the DKRZ GmbH nor the names of its contributors
+# may be used to endorse or promote products derived from this software
+# without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
+# IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
+# TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
+# PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
+# OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+# EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+# PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+# LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+# NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+#
+declare -a args=("$@")
+case " $* " in
+  # are we building a shared object?
+  (*\ -shared\ *)
+    # establish whether the user intended the inclusion of static intel
+    # libraries into shared object?
+    shared_intel=1
+    while IFS= read -r -d '' arg; do
+      case $arg in
+        (-shared-intel|-i-dynamic)
+          shared_intel=1
+          ;;
+        (-static-intel|-i-static|-fast)
+          shared_intel=0
+          ;;
+      esac
+    done <"/proc/$PPID/cmdline"
+    if ((shared_intel==1)); then
+      # if so, prevent core routines from being linked into the DSO
+      # directly.
+      declare -i i
+      for ((i=0; i<$#; ++i)); do
+        case ${args[i]} in
+          (-lifcoremt_pic|-lifcore_pic)
+            args[i]=${args[i]%_pic}
+          ;;
+        esac
+      done
+    fi
+    ;;
+esac
+exec ld "${args[@]}"
+#
+# Local Variables:
+# mode: sh
+# license-project-url: "https://www.dkrz.de/redmine/projects/yaxt"
+# license-default: "bsd"
+# End:
+#