diff --git a/valgrind-3.17.0-dwarf-atomic_type.patch b/valgrind-3.17.0-dwarf-atomic_type.patch
new file mode 100644
index 0000000..b41474f
--- /dev/null
+++ b/valgrind-3.17.0-dwarf-atomic_type.patch
@@ -0,0 +1,43 @@
+commit 10922b70b825a0a9b4df9694ceb9f20e93e2c11d
+Author: Mark Wielaard <mark@klomp.org>
+Date:   Sat Sep 18 02:19:13 2021 +0200
+
+    m_debuginfo: Handle DW_TAG_atomic_type
+    
+    DW_TAG_atomic_type is a DWARF5 qualifier tag like DW_TAG_volatile_type,
+    DW_TAG_const_type and DW_TAG_restrict_type.
+
+diff --git a/coregrind/m_debuginfo/readdwarf3.c b/coregrind/m_debuginfo/readdwarf3.c
+index 52c27d4bb..968c37bd6 100644
+--- a/coregrind/m_debuginfo/readdwarf3.c
++++ b/coregrind/m_debuginfo/readdwarf3.c
+@@ -4191,14 +4191,15 @@ static void parse_type_DIE ( /*MOD*/XArray* /* of TyEnt */ tyents,
+    }
+ 
+    if (dtag == DW_TAG_volatile_type || dtag == DW_TAG_const_type
+-       || dtag == DW_TAG_restrict_type) {
++       || dtag == DW_TAG_restrict_type || dtag == DW_TAG_atomic_type) {
+       Int have_ty = 0;
+       VG_(memset)(&typeE, 0, sizeof(typeE));
+       typeE.cuOff = D3_INVALID_CUOFF;
+       typeE.tag   = Te_TyQual;
+       typeE.Te.TyQual.qual
+          = (dtag == DW_TAG_volatile_type ? 'V'
+-            : (dtag == DW_TAG_const_type ? 'C' : 'R'));
++            : (dtag == DW_TAG_const_type ? 'C'
++               : (dtag == DW_TAG_restrict_type ? 'R' : 'A')));
+       /* target type defaults to 'void' */
+       typeE.Te.TyQual.typeR = D3_FAKEVOID_CUOFF;
+       nf_i = 0;
+diff --git a/coregrind/m_debuginfo/tytypes.c b/coregrind/m_debuginfo/tytypes.c
+index 75e4cf500..e356b92c9 100644
+--- a/coregrind/m_debuginfo/tytypes.c
++++ b/coregrind/m_debuginfo/tytypes.c
+@@ -295,6 +295,7 @@ void ML_(pp_TyEnt_C_ishly)( const XArray* /* of TyEnt */ tyents,
+             case 'C': VG_(printf)("const "); break;
+             case 'V': VG_(printf)("volatile "); break;
+             case 'R': VG_(printf)("restrict "); break;
++            case 'A': VG_(printf)("atomic "); break;
+             default: goto unhandled;
+          }
+          ML_(pp_TyEnt_C_ishly)(tyents, ent->Te.TyQual.typeR);
diff --git a/valgrind.spec b/valgrind.spec
index 2ceef8f..a314045 100644
--- a/valgrind.spec
+++ b/valgrind.spec
@@ -175,6 +175,10 @@ Patch21: valgrind-3.17.0-ppc64-pstxvp.patch
 # KDE#441534 Update the expected output for test_isa_3_1_VRT
 Patch22: valgrind-3.17.0-ppc64-test_isa_3_1_VRT.patch
 
+# commit 10922b70b825a0a9b4df9694ceb9f20e93e2c11d
+# m_debuginfo: Handle DW_TAG_atomic_type
+Patch23: valgrind-3.17.0-dwarf-atomic_type.patch
+
 BuildRequires: make
 BuildRequires: glibc-devel
 
@@ -336,6 +340,7 @@ touch memcheck/tests/s390x/vistr.stdout.exp
 %patch20 -p1
 %patch21 -p1
 %patch22 -p1
+%patch23 -p1
 
 %build
 # LTO triggers undefined symbols in valgrind.  Valgrind has a --enable-lto
@@ -561,6 +566,9 @@ fi
 %endif
 
 %changelog
+* Mon Sep 20 2021 Mark Wielaard <mjw@fedoraproject.org>
+- Add valgrind-3.17.0-dwarf-atomic_type.patch
+
 * Wed Sep  8 2021 Mark Wielaard <mjw@fedoraproject.org>
 - Add valgrind-3.17.0-ppc64-test_isa_3_1_VRT.patch