Version 2.14.0-225.0.dev

Merge commit 'c3880f466fb89c37c1163a1f36072abf066e5e70' into 'dev'
diff --git a/runtime/vm/elf.cc b/runtime/vm/elf.cc
index 0db0a6d..55b14e8 100644
--- a/runtime/vm/elf.cc
+++ b/runtime/vm/elf.cc
@@ -1219,7 +1219,7 @@
     (defined(TARGET_ARCH_ARM) || defined(TARGET_ARCH_ARM64))
   // Multiplier which will be used to scale operands of DW_CFA_offset and
   // DW_CFA_val_offset.
-  const intptr_t kDataAlignment = kWordSize;
+  const intptr_t kDataAlignment = compiler::target::kWordSize;
 
   const uint8_t DW_CFA_offset = 0x80;
   const uint8_t DW_CFA_val_offset = 0x14;
@@ -1241,7 +1241,7 @@
     const intptr_t start = stream.Position();
     stream.WriteFixed<uint32_t>(0);
     body();
-    stream.Align(kWordSize);
+    stream.Align(compiler::target::kWordSize);
     const intptr_t end = stream.Position();
     stream.SetPosition(start);
     // Write length not counting the length field itself.
@@ -1379,6 +1379,10 @@
   auto const hash = new (zone_) SymbolHashTable(zone_, dynstrtab_, dynsym_);
   AddSection(hash, ".hash");
 
+  // Must come before .dynamic, because .dynamic is writable and
+  // .eh_frame is not. See restriction in Elf::WriteProgramTable.
+  FinalizeEhFrame();
+
   auto const dynamic =
       new (zone_) DynamicTable(zone_, dynstrtab_, dynsym_, hash);
   AddSection(dynamic, ".dynamic");
@@ -1403,7 +1407,6 @@
   }
   AddSection(shstrtab_, ".shstrtab");
   FinalizeDwarfSections();
-  FinalizeEhFrame();
 
   // At this point, all non-programmatically calculated sections and segments
   // have been added. Add any programatically calculated sections and segments
diff --git a/tools/VERSION b/tools/VERSION
index ba5c6a0..230a736 100644
--- a/tools/VERSION
+++ b/tools/VERSION
@@ -27,5 +27,5 @@
 MAJOR 2
 MINOR 14
 PATCH 0
-PRERELEASE 224
+PRERELEASE 225
 PRERELEASE_PATCH 0
\ No newline at end of file