diff --git a/eng/nativeSanitizers.targets b/eng/nativeSanitizers.targets
index 69ec76b93487c6..bcaec86914508a 100644
--- a/eng/nativeSanitizers.targets
+++ b/eng/nativeSanitizers.targets
@@ -12,7 +12,7 @@
   <PropertyGroup Condition="'$(TargetArchitecture)' == 'arm64'">
     <LLVMArchitectureSuffix>arm64</LLVMArchitectureSuffix>
   </PropertyGroup>
-  <ItemGroup Condition="'$(TargetOS)' != 'windows'">
+  <ItemGroup Condition="'$(TargetOS)' != 'windows' and '$(EnableNativeSanitizers)' != ''">
     <LinkerArg Include="-fsanitize=$(EnableNativeSanitizers)" />
   </ItemGroup>
   <ItemGroup Condition="'$(TargetOS)' == 'osx'">
diff --git a/eng/pipelines/common/platform-matrix.yml b/eng/pipelines/common/platform-matrix.yml
index 2dc00a29da5d35..085ba914a18e22 100644
--- a/eng/pipelines/common/platform-matrix.yml
+++ b/eng/pipelines/common/platform-matrix.yml
@@ -326,7 +326,7 @@ jobs:
       targetRid: linux-x64
       platform: linux_x64
       shouldContinueOnError: ${{ parameters.shouldContinueOnError }}
-      container: debian-12-gcc13-amd64
+      container: debian-12-gcc14-amd64
       jobParameters:
         runtimeFlavor: ${{ parameters.runtimeFlavor }}
         buildConfig: ${{ parameters.buildConfig }}
diff --git a/eng/pipelines/common/templates/pipeline-with-resources.yml b/eng/pipelines/common/templates/pipeline-with-resources.yml
index bedb0ff5121a4a..ac8f6eaf25b362 100644
--- a/eng/pipelines/common/templates/pipeline-with-resources.yml
+++ b/eng/pipelines/common/templates/pipeline-with-resources.yml
@@ -93,8 +93,8 @@ extends:
         env:
           ROOTFS_DIR: /crossrootfs/riscv64
 
-      debian-12-gcc13-amd64:
-        image: mcr.microsoft.com/dotnet-buildtools/prereqs:debian-12-gcc13-amd64
+      debian-12-gcc14-amd64:
+        image: mcr.microsoft.com/dotnet-buildtools/prereqs:debian-12-gcc14-amd64
 
       linux_x64_llvmaot:
         image: mcr.microsoft.com/dotnet-buildtools/prereqs:centos-stream8
diff --git a/src/coreclr/inc/corhlprpriv.h b/src/coreclr/inc/corhlprpriv.h
index 62298798d70178..f000e7334c58ac 100644
--- a/src/coreclr/inc/corhlprpriv.h
+++ b/src/coreclr/inc/corhlprpriv.h
@@ -474,12 +474,12 @@ template <class T> class CQuickArrayBase : public CQuickBytesBase
 template <class T> class CQuickArray : public CQuickArrayBase<T>
 {
 public:
-    CQuickArray<T>()
+    CQuickArray()
     {
         this->Init();
     }
 
-    ~CQuickArray<T>()
+    ~CQuickArray()
     {
         this->Destroy();
     }
diff --git a/src/coreclr/inc/utilcode.h b/src/coreclr/inc/utilcode.h
index bedd52d3b6d555..ca71af48a977dc 100644
--- a/src/coreclr/inc/utilcode.h
+++ b/src/coreclr/inc/utilcode.h
@@ -845,7 +845,7 @@ template<typename T>
 class SimpleListNode
 {
 public:
-    SimpleListNode<T>(const T& _t)
+    SimpleListNode(const T& _t)
     {
         data = _t;
         next = 0;
@@ -861,7 +861,7 @@ class SimpleList
 public:
     typedef SimpleListNode<T> NodeType;
 
-    SimpleList<T>()
+    SimpleList()
     {
         head = NULL;
     }
diff --git a/src/coreclr/nativeaot/Runtime/unix/UnwindHelpers.cpp b/src/coreclr/nativeaot/Runtime/unix/UnwindHelpers.cpp
index cfaa373fe42191..39bf9f024be60e 100644
--- a/src/coreclr/nativeaot/Runtime/unix/UnwindHelpers.cpp
+++ b/src/coreclr/nativeaot/Runtime/unix/UnwindHelpers.cpp
@@ -777,7 +777,7 @@ libunwind::v128 Registers_REGDISPLAY::getVectorRegister(int num) const
 {
     num -= UNW_ARM64_D8;
 
-    if (num < 0 || num >= sizeof(D) / sizeof(uint64_t))
+    if (num < 0 || (size_t)num >= sizeof(D) / sizeof(uint64_t))
     {
         PORTABILITY_ASSERT("unsupported arm64 vector register");
     }
@@ -796,7 +796,7 @@ void Registers_REGDISPLAY::setVectorRegister(int num, libunwind::v128 value)
 {
     num -= UNW_ARM64_D8;
 
-    if (num < 0 || num >= sizeof(D) / sizeof(uint64_t))
+    if (num < 0 || (size_t)num >= sizeof(D) / sizeof(uint64_t))
     {
         PORTABILITY_ASSERT("unsupported arm64 vector register");
     }
diff --git a/src/coreclr/pal/inc/pal.h b/src/coreclr/pal/inc/pal.h
index 340e4933bcd31a..e3c9955c26ab91 100644
--- a/src/coreclr/pal/inc/pal.h
+++ b/src/coreclr/pal/inc/pal.h
@@ -3371,8 +3371,9 @@ EXTERN_C PALIMPORT inline RETURN_TYPE PALAPI METHOD_DECL        \
 /* Function multiversioning will never inline a method that is  \
    marked such. However, just to make sure that we don't see    \
    surprises, explicitely mark them as noinline. */             \
-__attribute__((target("lse")))  __attribute__((noinline))       \
-EXTERN_C PALIMPORT inline RETURN_TYPE PALAPI Lse_##METHOD_DECL  \
+EXTERN_C PALIMPORT inline RETURN_TYPE PALAPI                    \
+__attribute__((target("+lse")))  __attribute__((noinline))      \
+Lse_##METHOD_DECL                                               \
 {                                                               \
     return INTRINSIC_NAME;                                      \
 }                                                               \
diff --git a/src/coreclr/unwinder/arm64/unwinder.cpp b/src/coreclr/unwinder/arm64/unwinder.cpp
index 8096204dffa6e7..c7d04a70255fa1 100644
--- a/src/coreclr/unwinder/arm64/unwinder.cpp
+++ b/src/coreclr/unwinder/arm64/unwinder.cpp
@@ -794,7 +794,7 @@ RtlpExpandCompactToFull (
         // or registers to lave left.
         //
 
-        for (intreg = 0; intreg < ((fnent_pdata->RegI / 2) * 2); intreg += 2) {
+        for (intreg = 0; intreg < (ULONG)((fnent_pdata->RegI / 2) * 2); intreg += 2) {
             if (!sav_predec_done) {
                 DBG_OP("save_regp_x\t(%s, %s, %i)\n", int_reg_names[intreg], int_reg_names[intreg + 1], -savsz * 8);
                 emit_save_regp_x(&op_buffer, intreg, -savsz * 8);
@@ -1484,7 +1484,7 @@ Return Value:
             Fpcr = MEMORY_READ_DWORD(UnwindParams, SourceAddress);
             SourceAddress = VfpStateAddress + FIELD_OFFSET(KARM64_VFP_STATE, Fpsr);
             Fpsr = MEMORY_READ_DWORD(UnwindParams, SourceAddress);
-            if (Fpcr != -1 && Fpsr != -1) {
+            if (Fpcr != (ULONG)-1 && Fpsr != (ULONG)-1) {
 
                 ContextRecord->Fpcr = Fpcr;
                 ContextRecord->Fpsr = Fpsr;
diff --git a/src/coreclr/vm/field.h b/src/coreclr/vm/field.h
index c37fa4244dadf9..042e699297d535 100644
--- a/src/coreclr/vm/field.h
+++ b/src/coreclr/vm/field.h
@@ -186,7 +186,7 @@ class FieldDesc
             // As of 4/11/2012 I could repro this by turning on the COMPLUS log and
             // the LOG() at line methodtablebuilder.cpp:7845
             // MethodTableBuilder::PlaceRegularStaticFields() calls GetOffset()
-            if((DWORD)(DWORD_PTR&)m_pMTOfEnclosingClass > 16)
+            if((DWORD)reinterpret_cast<DWORD_PTR&>(m_pMTOfEnclosingClass) > 16)
             {
                 _ASSERTE(!this->IsRVA() || (m_dwOffset == OutOfLine_BigRVAOffset()));
             }