Index: /trunk/Config.kmk
===================================================================
--- /trunk/Config.kmk	(revision 73501)
+++ /trunk/Config.kmk	(revision 73502)
@@ -2763,4 +2763,5 @@
 	$(QUIET)$(APPEND) '$@' 'VBOX_GCC_Wno-overlength-strings?= $(call VBOX_GCC_CHECK_CC,-Wno-overlength-strings,)'
 	$(QUIET)$(APPEND) '$@' 'VBOX_GCC_Wno-overloaded-virtual?= $(call VBOX_GCC_CHECK_CXX,-Wno-overloaded-virtual,)'
+	$(QUIET)$(APPEND) '$@' 'VBOX_GCC_Wno-ignored-qualifiers?= $(call VBOX_GCC_CHECK_CXX,-Wno-ignored-qualifiers,)'
 	$(QUIET)$(APPEND) '$@' 'VBOX_GCC_fno-stack-protector   ?= $(call VBOX_GCC_CHECK_CC,-fno-stack-protector,)'
 	$(QUIET)$(APPEND) '$@' 'VBOX_GCC_fno-dwarf2-cfi-asm    ?= $(call VBOX_GCC_CHECK_CC,-fno-dwarf2-cfi-asm,)'
@@ -2930,4 +2931,9 @@
  VBOX_GCC_PEDANTIC_CXX += $(VBOX_GCC_Wno-array_bounds)
 endif
+# Stupid problem with (__typeof__((*ppv)) casts in asm.h where volatile is involved and ignored.
+if $(VBOX_GCC_VERSION_CXX) >= 80000 && "$(VBOX_GCC_Wno-ignored-qualifiers)"
+ VBOX_GCC_PEDANTIC_CXX += $(VBOX_GCC_Wno-ignored-qualifiers)
+endif
+
 
 VBOX_GCC_NON_PEDANTIC_CXX ?= -Wno-sign-compare
Index: /trunk/include/iprt/asm.h
===================================================================
--- /trunk/include/iprt/asm.h	(revision 73501)
+++ /trunk/include/iprt/asm.h	(revision 73502)
@@ -553,5 +553,5 @@
  * @param   Type    The type of *ppv, sans volatile.
  */
-#ifdef __GNUC__
+#ifdef __GNUC__ /* 8.2.0 requires -Wno-ignored-qualifiers */
 # define ASMAtomicXchgPtrT(ppv, pv, Type) \
     __extension__ \
@@ -732,5 +732,5 @@
 DECLINLINE(bool) ASMAtomicCmpXchgS8(volatile int8_t RT_FAR *pi8, const int8_t i8New, const int8_t i8Old)
 {
-    return ASMAtomicCmpXchgU8((volatile uint8_t RT_FAR *)pi8, (const uint8_t)i8New, (const uint8_t)i8Old);
+    return ASMAtomicCmpXchgU8((volatile uint8_t RT_FAR *)pi8, (uint8_t)i8New, (uint8_t)i8Old);
 }
 
@@ -750,5 +750,5 @@
 DECLINLINE(bool) ASMAtomicCmpXchgBool(volatile bool RT_FAR *pf, const bool fNew, const bool fOld)
 {
-    return ASMAtomicCmpXchgU8((volatile uint8_t RT_FAR *)pf, (const uint8_t)fNew, (const uint8_t)fOld);
+    return ASMAtomicCmpXchgU8((volatile uint8_t RT_FAR *)pf, (uint8_t)fNew, (uint8_t)fOld);
 }
 
@@ -2030,5 +2030,5 @@
  * @param   Type    The type of *ppv, sans volatile.
  */
-#ifdef __GNUC__
+#ifdef __GNUC__ /* 8.2.0 requires -Wno-ignored-qualifiers */
 # define ASMAtomicReadPtrT(ppv, Type) \
     __extension__ \
@@ -2072,5 +2072,5 @@
  * @param   Type    The type of *ppv, sans volatile.
  */
-#ifdef __GNUC__
+#ifdef __GNUC__ /* 8.2.0 requires -Wno-ignored-qualifiers */
 # define ASMAtomicUoReadPtrT(ppv, Type) \
     __extension__ \
Index: /trunk/src/VBox/Devices/Storage/DevLsiLogicSCSI.cpp
===================================================================
--- /trunk/src/VBox/Devices/Storage/DevLsiLogicSCSI.cpp	(revision 73501)
+++ /trunk/src/VBox/Devices/Storage/DevLsiLogicSCSI.cpp	(revision 73502)
@@ -3615,5 +3615,5 @@
     strncpy((char *)pPages->ManufacturingPage0.u.fields.abBoardName,         "VBox MPT Fusion", 16);
     strncpy((char *)pPages->ManufacturingPage0.u.fields.abBoardAssembly,     "SUN", 8);
-    strncpy((char *)pPages->ManufacturingPage0.u.fields.abBoardTracerNumber, "CAFECAFECAFECAFE", 16);
+    memcpy(pPages->ManufacturingPage0.u.fields.abBoardTracerNumber, "CAFECAFECAFECAFE", 16);
 
     /* Manufacturing Page 1 - I don't know what this contains so we leave it 0 for now. */
Index: /trunk/src/VBox/Runtime/common/fs/RTFsCmdLs.cpp
===================================================================
--- /trunk/src/VBox/Runtime/common/fs/RTFsCmdLs.cpp	(revision 73501)
+++ /trunk/src/VBox/Runtime/common/fs/RTFsCmdLs.cpp	(revision 73502)
@@ -492,4 +492,5 @@
                 case RTCMDLSTIME_ATIME: pfnCmp = pOpts->fGroupDirectoriesFirst ? rtCmdLsEntryCmpDirFirstATime : rtCmdLsEntryCmpATime; break;
             }
+            break;
         case RTCMDLSSORT_VERSION:
             pfnCmp = pOpts->fGroupDirectoriesFirst ? rtCmdLsEntryCmpDirFirstVersion       : rtCmdLsEntryCmpVersion;
Index: /trunk/src/VBox/Runtime/common/zip/xarvfs.cpp
===================================================================
--- /trunk/src/VBox/Runtime/common/zip/xarvfs.cpp	(revision 73501)
+++ /trunk/src/VBox/Runtime/common/zip/xarvfs.cpp	(revision 73502)
@@ -1941,5 +1941,5 @@
                     Parser.read(pszOutput, cchToc, RTCString("xar-toc.xml"), *pDoc);
                 }
-                catch (xml::XmlError Err)
+                catch (xml::XmlError &Err)
                 {
                     rc = VERR_XAR_TOC_XML_PARSE_ERROR;
Index: /trunk/src/VBox/Runtime/r3/xml.cpp
===================================================================
--- /trunk/src/VBox/Runtime/r3/xml.cpp	(revision 73501)
+++ /trunk/src/VBox/Runtime/r3/xml.cpp	(revision 73502)
@@ -1941,5 +1941,5 @@
                 pThis->m_pStrDst->append(pachBuf, (size_t)cbToWrite);
             }
-            catch (std::bad_alloc)
+            catch (std::bad_alloc &)
             {
                 pThis->m_fOutOfMemory = true;
Index: /trunk/src/VBox/Runtime/testcase/tstRTHeapOffset.cpp
===================================================================
--- /trunk/src/VBox/Runtime/testcase/tstRTHeapOffset.cpp	(revision 73501)
+++ /trunk/src/VBox/Runtime/testcase/tstRTHeapOffset.cpp	(revision 73502)
@@ -101,5 +101,5 @@
     };
     uint32_t i;
-    RTHeapOffsetDump(Heap, (PFNRTHEAPOFFSETPRINTF)RTPrintf); /** @todo Add some detail info output with a signature identical to RTPrintf. */
+    RTHeapOffsetDump(Heap, (PFNRTHEAPOFFSETPRINTF)(uintptr_t)RTPrintf); /** @todo Add some detail info output with a signature identical to RTPrintf. */
     size_t cbBefore = RTHeapOffsetGetFreeSize(Heap);
     static char const s_szFill[] = "01234567890abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
@@ -185,5 +185,5 @@
                       "Warning: Either we've split out an alignment chunk at the start, or we've got\n"
                       "         an alloc/free accounting bug: cbBefore=%d cbAfter=%d\n", cbBefore, cbAfter);
-        RTHeapOffsetDump(Heap, (PFNRTHEAPOFFSETPRINTF)RTPrintf);
+        RTHeapOffsetDump(Heap, (PFNRTHEAPOFFSETPRINTF)(uintptr_t)RTPrintf);
     }
 
Index: /trunk/src/VBox/Runtime/testcase/tstRTHeapSimple.cpp
===================================================================
--- /trunk/src/VBox/Runtime/testcase/tstRTHeapSimple.cpp	(revision 73501)
+++ /trunk/src/VBox/Runtime/testcase/tstRTHeapSimple.cpp	(revision 73502)
@@ -98,5 +98,5 @@
     };
     unsigned i;
-    RTHeapSimpleDump(Heap, (PFNRTHEAPSIMPLEPRINTF)RTPrintf); /** @todo Add some detail info output with a signature identical to RTPrintf. */
+    RTHeapSimpleDump(Heap, (PFNRTHEAPSIMPLEPRINTF)(uintptr_t)RTPrintf); /** @todo Add some detail info output with a signature identical to RTPrintf. */
     size_t cbBefore = RTHeapSimpleGetFreeSize(Heap);
     static char szFill[] = "01234567890abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
@@ -181,5 +181,5 @@
                       "Warning: Either we've split out an alignment chunk at the start, or we've got\n"
                       "         an alloc/free accounting bug: cbBefore=%d cbAfter=%d\n", cbBefore, cbAfter);
-        RTHeapSimpleDump(Heap, (PFNRTHEAPSIMPLEPRINTF)RTPrintf);
+        RTHeapSimpleDump(Heap, (PFNRTHEAPSIMPLEPRINTF)(uintptr_t)RTPrintf);
     }
 
Index: /trunk/src/VBox/VMM/testcase/tstMMHyperHeap.cpp
===================================================================
--- /trunk/src/VBox/VMM/testcase/tstMMHyperHeap.cpp	(revision 73501)
+++ /trunk/src/VBox/VMM/testcase/tstMMHyperHeap.cpp	(revision 73502)
@@ -66,5 +66,4 @@
         return RTEXITCODE_FAILURE;
     }
-    memset(pVM, 0, sizeof(*pVM)); /* wtf? */
     pVM->paVMPagesR3 = aPages;
     pVM->pVMR0 = pvR0;
Index: /trunk/src/VBox/VMM/testcase/tstVMMR0CallHost-1.cpp
===================================================================
--- /trunk/src/VBox/VMM/testcase/tstVMMR0CallHost-1.cpp	(revision 73501)
+++ /trunk/src/VBox/VMM/testcase/tstVMMR0CallHost-1.cpp	(revision 73502)
@@ -133,5 +133,5 @@
     for (int i = iFrom, iItr = 0; i != iTo; i += iInc, iItr++)
     {
-        int rc = stackRandom(&g_Jmp, (PFNVMMR0SETJMP)tst2, (PVM)(uintptr_t)i, 0);
+        int rc = stackRandom(&g_Jmp, (PFNVMMR0SETJMP)(uintptr_t)tst2, (PVM)(uintptr_t)i, 0);
         RTTESTI_CHECK_MSG_RETV(rc == 0 || rc == 42, ("i=%d rc=%d setjmp; cbFoo=%#x cbFooUsed=%#x\n", i, rc, g_cbFoo, g_cbFooUsed));
 
