Release v1.0.6
diff --git a/Include/stm32l552xx.h b/Include/stm32l552xx.h
index cddbae1..0f7b82a 100644
--- a/Include/stm32l552xx.h
+++ b/Include/stm32l552xx.h
@@ -16066,7 +16066,7 @@
 /******************  Bit definition for SYSCFG_CSLCKR register  ***************/
 #define SYSCFG_CSLCKR_LOCKSVTAIRCR_Pos  (0U)
 #define SYSCFG_CSLCKR_LOCKSVTAIRCR_Msk  (0x1UL << SYSCFG_CSLCKR_LOCKSVTAIRCR_Pos)/*!< 0x00000001 */
-#define SYSCFG_CSLCKR_LOCKSVTAIRCR      SYSCFG_CSLCKR_LOCKSVTAIRCR_Msk         /*!< Disable changes to the secure vectror table address, handling of system faults */
+#define SYSCFG_CSLCKR_LOCKSVTAIRCR      SYSCFG_CSLCKR_LOCKSVTAIRCR_Msk         /*!< Disable changes to the secure vector table address, handling of system faults */
 #define SYSCFG_CSLCKR_LOCKSMPU_Pos      (1U)
 #define SYSCFG_CSLCKR_LOCKSMPU_Msk      (0x1UL << SYSCFG_CSLCKR_LOCKSMPU_Pos)  /*!< 0x00000002 */
 #define SYSCFG_CSLCKR_LOCKSMPU          SYSCFG_CSLCKR_LOCKSMPU_Msk             /*!< Disable changes to the secure MPU registers writes by SW or debug agent */
diff --git a/Include/stm32l562xx.h b/Include/stm32l562xx.h
index 4fbb2bc..03bc23f 100644
--- a/Include/stm32l562xx.h
+++ b/Include/stm32l562xx.h
@@ -16805,7 +16805,7 @@
 /******************  Bit definition for SYSCFG_CSLCKR register  ***************/
 #define SYSCFG_CSLCKR_LOCKSVTAIRCR_Pos  (0U)
 #define SYSCFG_CSLCKR_LOCKSVTAIRCR_Msk  (0x1UL << SYSCFG_CSLCKR_LOCKSVTAIRCR_Pos)/*!< 0x00000001 */
-#define SYSCFG_CSLCKR_LOCKSVTAIRCR      SYSCFG_CSLCKR_LOCKSVTAIRCR_Msk         /*!< Disable changes to the secure vectror table address, handling of system faults */
+#define SYSCFG_CSLCKR_LOCKSVTAIRCR      SYSCFG_CSLCKR_LOCKSVTAIRCR_Msk         /*!< Disable changes to the secure vector table address, handling of system faults */
 #define SYSCFG_CSLCKR_LOCKSMPU_Pos      (1U)
 #define SYSCFG_CSLCKR_LOCKSMPU_Msk      (0x1UL << SYSCFG_CSLCKR_LOCKSMPU_Pos)  /*!< 0x00000002 */
 #define SYSCFG_CSLCKR_LOCKSMPU          SYSCFG_CSLCKR_LOCKSMPU_Msk             /*!< Disable changes to the secure MPU registers writes by SW or debug agent */
diff --git a/Include/stm32l5xx.h b/Include/stm32l5xx.h
index 05aa446..c558ff4 100644
--- a/Include/stm32l5xx.h
+++ b/Include/stm32l5xx.h
@@ -78,7 +78,7 @@
   */
 #define __STM32L5_CMSIS_VERSION_MAIN   (0x01U) /*!< [31:24] main version */
 #define __STM32L5_CMSIS_VERSION_SUB1   (0x00U) /*!< [23:16] sub1 version */
-#define __STM32L5_CMSIS_VERSION_SUB2   (0x05U) /*!< [15:8]  sub2 version */
+#define __STM32L5_CMSIS_VERSION_SUB2   (0x06U) /*!< [15:8]  sub2 version */
 #define __STM32L5_CMSIS_VERSION_RC     (0x00U) /*!< [7:0]  release candidate */
 #define __STM32L5_CMSIS_VERSION        ((__STM32L5_CMSIS_VERSION_MAIN << 24U)\
                                        |(__STM32L5_CMSIS_VERSION_SUB1 << 16U)\
diff --git a/Release_Notes.html b/Release_Notes.html
index 04c9169..78a8275 100644
--- a/Release_Notes.html
+++ b/Release_Notes.html
@@ -43,18 +43,14 @@
 <div class="col-sm-12 col-lg-8">
 <h1 id="update-history">Update History</h1>
 <div class="collapse">
-<input type="checkbox" id="collapse-section6" checked aria-hidden="true"> <label for="collapse-section6" aria-hidden="true"><strong>V1.0.5 / 04-November-2022</strong></label>
+<input type="checkbox" id="collapse-section7" checked aria-hidden="true"> <label for="collapse-section7" aria-hidden="true"><strong>V1.0.6 / 09-February-2024</strong></label>
 <div>
 <h2 id="main-changes">Main Changes</h2>
 <p><strong>Maintenance release</strong></p>
 <h2 id="contents">Contents</h2>
 <ul>
-<li>General updates to fix known defects and implementation enhancements.</li>
-<li>All source files: update disclaimer to add reference to the new license agreement.</li>
-<li>Add new atomic register access macros in stm32l5xx.h file.</li>
-<li>Update to fix compilation error “-Werror=undef” with ARMCC version.</li>
-<li>Add missing parameter after <span class="citation" data-cites="param">@param</span> in order to fix warning in generated documentation</li>
-<li>Change addresses of ROM symbols in <em><em>sram</em></em>.icf template files to code region alias in order to increase performance while running code from SRAM</li>
+<li>Fix the location of .size directive in STM32CubeIDE’s startup code to allow proper size information of vector table.</li>
+<li>Add the READONLY tag to sections containing lookup tables to avoid GCC12 linker warnings if a segment is marked RWX.</li>
 </ul>
 <h2 id="notes">Notes</h2>
 <p>Reminder:</p>
@@ -76,18 +72,18 @@
 </div>
 </div>
 <div class="collapse">
-<input type="checkbox" id="collapse-section5" aria-hidden="true"> <label for="collapse-section5" aria-hidden="true"><strong>V1.0.4 / 10-February-2021</strong></label>
+<input type="checkbox" id="collapse-section6" aria-hidden="true"> <label for="collapse-section6" aria-hidden="true"><strong>V1.0.5 / 04-November-2022</strong></label>
 <div>
 <h2 id="main-changes-1">Main Changes</h2>
 <p><strong>Maintenance release</strong></p>
 <h2 id="contents-1">Contents</h2>
-<p>Maintenance release of STM32L5xx CMSIS Device drivers to support <strong>STM32L552xx and STM32L562xx</strong> devices</p>
 <ul>
-<li>stm32l552xx.h and stm32l562xx.h updates
-<ul>
-<li>Add TAMP_CFGR configuration register and definitions for TMONEN, VMONEN and WUTMONEN monitoring functions</li>
-<li>Fix I2C4_EV_IRQn and I2C4_ER_IRQn order in IRQn_Type</li>
-</ul></li>
+<li>General updates to fix known defects and implementation enhancements.</li>
+<li>All source files: update disclaimer to add reference to the new license agreement.</li>
+<li>Add new atomic register access macros in stm32l5xx.h file.</li>
+<li>Update to fix compilation error “-Werror=undef” with ARMCC version.</li>
+<li>Add missing parameter after <span class="citation" data-cites="param">@param</span> in order to fix warning in generated documentation</li>
+<li>Change addresses of ROM symbols in <em><em>sram</em></em>.icf template files to code region alias in order to increase performance while running code from SRAM</li>
 </ul>
 <h2 id="notes-1">Notes</h2>
 <p>Reminder:</p>
@@ -109,25 +105,18 @@
 </div>
 </div>
 <div class="collapse">
-<input type="checkbox" id="collapse-section4" aria-hidden="true"> <label for="collapse-section4" aria-hidden="true"><strong>V1.0.3 / 26-June-2020</strong></label>
+<input type="checkbox" id="collapse-section5" aria-hidden="true"> <label for="collapse-section5" aria-hidden="true"><strong>V1.0.4 / 10-February-2021</strong></label>
 <div>
 <h2 id="main-changes-2">Main Changes</h2>
-<p><strong>Fourth release</strong></p>
+<p><strong>Maintenance release</strong></p>
 <h2 id="contents-2">Contents</h2>
-<p>Fourth release of STM32L5xx CMSIS Device drivers to support <strong>STM32L552xx and STM32L562xx</strong> devices</p>
+<p>Maintenance release of STM32L5xx CMSIS Device drivers to support <strong>STM32L552xx and STM32L562xx</strong> devices</p>
 <ul>
 <li>stm32l552xx.h and stm32l562xx.h updates
 <ul>
-<li>Fix ICACHE_FCR_CERRF bit definition</li>
-<li>Align DBGMCU_CR register and bits definitions with RM0438 revision 5</li>
-<li>Cleanup RCC_CFGR_* definitions to keep only bits definitions</li>
+<li>Add TAMP_CFGR configuration register and definitions for TMONEN, VMONEN and WUTMONEN monitoring functions</li>
+<li>Fix I2C4_EV_IRQn and I2C4_ER_IRQn order in IRQn_Type</li>
 </ul></li>
-<li>Templates\gcc\startup_stm32l552xx.s and startup_stm32l562xx.s
-<ul>
-<li>Call SystemInit() before RAM initialization in startup/Reset_Handler</li>
-</ul></li>
-<li>Add README.md and License.md files for GitHub publication</li>
-<li>Misspelled words corrections in driver descriptions</li>
 </ul>
 <h2 id="notes-2">Notes</h2>
 <p>Reminder:</p>
@@ -149,19 +138,25 @@
 </div>
 </div>
 <div class="collapse">
-<input type="checkbox" id="collapse-section3" aria-hidden="true"> <label for="collapse-section3" aria-hidden="true"><strong>V1.0.2 / 12-February-2020</strong></label>
+<input type="checkbox" id="collapse-section4" aria-hidden="true"> <label for="collapse-section4" aria-hidden="true"><strong>V1.0.3 / 26-June-2020</strong></label>
 <div>
 <h2 id="main-changes-3">Main Changes</h2>
-<p><strong>Third release</strong></p>
+<p><strong>Fourth release</strong></p>
 <h2 id="contents-3">Contents</h2>
-<p>Third official release of STM32L5xx CMSIS Device drivers to support <strong>STM32L552xx and STM32L562xx</strong> devices</p>
+<p>Fourth release of STM32L5xx CMSIS Device drivers to support <strong>STM32L552xx and STM32L562xx</strong> devices</p>
 <ul>
 <li>stm32l552xx.h and stm32l562xx.h updates
 <ul>
-<li>Add root secure services library (RSSLIB) definitions</li>
-<li>Add bootloader id address</li>
-<li>Align DBGMCU_APB2FZR register and bits definitions with RM0438</li>
+<li>Fix ICACHE_FCR_CERRF bit definition</li>
+<li>Align DBGMCU_CR register and bits definitions with RM0438 revision 5</li>
+<li>Cleanup RCC_CFGR_* definitions to keep only bits definitions</li>
 </ul></li>
+<li>Templates\gcc\startup_stm32l552xx.s and startup_stm32l562xx.s
+<ul>
+<li>Call SystemInit() before RAM initialization in startup/Reset_Handler</li>
+</ul></li>
+<li>Add README.md and License.md files for GitHub publication</li>
+<li>Misspelled words corrections in driver descriptions</li>
 </ul>
 <h2 id="notes-3">Notes</h2>
 <p>Reminder:</p>
@@ -183,16 +178,18 @@
 </div>
 </div>
 <div class="collapse">
-<input type="checkbox" id="collapse-section2" unchecked aria-hidden="true"> <label for="collapse-section2" aria-hidden="true"><strong>V1.0.1 / 22-January-2020</strong></label>
+<input type="checkbox" id="collapse-section3" aria-hidden="true"> <label for="collapse-section3" aria-hidden="true"><strong>V1.0.2 / 12-February-2020</strong></label>
 <div>
 <h2 id="main-changes-4">Main Changes</h2>
-<p><strong>Second release</strong></p>
+<p><strong>Third release</strong></p>
 <h2 id="contents-4">Contents</h2>
-<p>Second official release of STM32L5xx CMSIS Device drivers to support <strong>STM32L552xx and STM32L562xx</strong> devices</p>
+<p>Third official release of STM32L5xx CMSIS Device drivers to support <strong>STM32L552xx and STM32L562xx</strong> devices</p>
 <ul>
-<li>Templates system_stm32l5xx.c, system_stm32l5xx_s.c and system_stm32l5xx_ns.c
+<li>stm32l552xx.h and stm32l562xx.h updates
 <ul>
-<li>Add vector table relocation capability with conditional USER_VECT_TAB_ADDRESS</li>
+<li>Add root secure services library (RSSLIB) definitions</li>
+<li>Add bootloader id address</li>
+<li>Align DBGMCU_APB2FZR register and bits definitions with RM0438</li>
 </ul></li>
 </ul>
 <h2 id="notes-4">Notes</h2>
@@ -215,11 +212,43 @@
 </div>
 </div>
 <div class="collapse">
-<input type="checkbox" id="collapse-section1" unchecked aria-hidden="true"> <label for="collapse-section1" aria-hidden="true"><strong>V1.0.0 / 13-December-2019</strong></label>
+<input type="checkbox" id="collapse-section2" unchecked aria-hidden="true"> <label for="collapse-section2" aria-hidden="true"><strong>V1.0.1 / 22-January-2020</strong></label>
 <div>
 <h2 id="main-changes-5">Main Changes</h2>
-<p><strong>First release</strong></p>
+<p><strong>Second release</strong></p>
 <h2 id="contents-5">Contents</h2>
+<p>Second official release of STM32L5xx CMSIS Device drivers to support <strong>STM32L552xx and STM32L562xx</strong> devices</p>
+<ul>
+<li>Templates system_stm32l5xx.c, system_stm32l5xx_s.c and system_stm32l5xx_ns.c
+<ul>
+<li>Add vector table relocation capability with conditional USER_VECT_TAB_ADDRESS</li>
+</ul></li>
+</ul>
+<h2 id="notes-5">Notes</h2>
+<p>Reminder:</p>
+<ul>
+<li>When TrustZone is enabled in the system (Flash option bit TZEN=1)
+<ul>
+<li>template device partition_stm32l552xx.h or partition_stm32l562xx.h file must be copied and optionally updated in user application secure project to configure the system (SAU, interrupts, core).</li>
+<li>default Security Attribute Unit (SAU) configuration in the partition_stm32l552xx.h and partition_stm32l562xx.h:
+<ul>
+<li>SAU region 0: 0x0C03E000-0x0C03FFFF (Secure, Non-Secure Callable)</li>
+<li>SAU region 1: 0x08040000-0x0807FFFF (Non-Secure FLASH Bank2 (256 Kbytes))</li>
+<li>SAU region 2: 0x20018000-0x2003FFFF (Non-Secure RAM (2nd half SRAM1 + SRAM2 (160 Kbytes)))</li>
+<li>SAU region 3: 0x40000000-0x4FFFFFFF (Non-Secure Peripheral mapped memory)</li>
+<li>SAU region 4: 0x60000000-0x9FFFFFFF (Non-Secure external memories)</li>
+<li>SAU region 5: 0x0BF90000-0x0BFA8FFF (Non-Secure System memory)</li>
+</ul></li>
+</ul></li>
+</ul>
+</div>
+</div>
+<div class="collapse">
+<input type="checkbox" id="collapse-section1" unchecked aria-hidden="true"> <label for="collapse-section1" aria-hidden="true"><strong>V1.0.0 / 13-December-2019</strong></label>
+<div>
+<h2 id="main-changes-6">Main Changes</h2>
+<p><strong>First release</strong></p>
+<h2 id="contents-6">Contents</h2>
 <p>First official release of STM32L5xx CMSIS Device drivers to support <strong>STM32L552xx and STM32L562xx</strong> devices</p>
 <ul>
 <li>Templates
@@ -237,7 +266,7 @@
 <li>Linker files for 256 and 512 Kbytes Flash device configurations</li>
 </ul></li>
 </ul>
-<h2 id="notes-5">Notes</h2>
+<h2 id="notes-6">Notes</h2>
 <p>When TrustZone is enabled in the system (Flash option bit TZEN=1), template device partition_stm32l552xx.h or partition_stm32l562xx.h file must be copied and optionally updated in user application secure project to configure the system (SAU, interrupts, core)</p>
 </div>
 </div>
diff --git a/Source/Templates/gcc/linker/STM32L552xC_FLASH.ld b/Source/Templates/gcc/linker/STM32L552xC_FLASH.ld
index 14f979e..5e1a105 100644
--- a/Source/Templates/gcc/linker/STM32L552xC_FLASH.ld
+++ b/Source/Templates/gcc/linker/STM32L552xC_FLASH.ld
@@ -87,13 +87,15 @@
     . = ALIGN(8);
   } >ROM
 
-  .ARM.extab   : { 
+  .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+  {
     . = ALIGN(8);
     *(.ARM.extab* .gnu.linkonce.armextab.*)
     . = ALIGN(8);
   } >ROM
   
-  .ARM : {
+  .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+  {
     . = ALIGN(8);
     __exidx_start = .;
     *(.ARM.exidx*)
@@ -101,7 +103,7 @@
     . = ALIGN(8);
   } >ROM
 
-  .preinit_array     :
+  .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
   {
     . = ALIGN(8);
     PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@
     . = ALIGN(8);
   } >ROM
   
-  .init_array :
+  .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
   {
     . = ALIGN(8);
     PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@
     . = ALIGN(8);
   } >ROM
   
-  .fini_array :
+  .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
   {
     . = ALIGN(8);
     PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Source/Templates/gcc/linker/STM32L552xC_FLASH_ns.ld b/Source/Templates/gcc/linker/STM32L552xC_FLASH_ns.ld
index f738bc3..cfa7a52 100644
--- a/Source/Templates/gcc/linker/STM32L552xC_FLASH_ns.ld
+++ b/Source/Templates/gcc/linker/STM32L552xC_FLASH_ns.ld
@@ -86,13 +86,15 @@
     . = ALIGN(8);
   } >ROM
 
-  .ARM.extab   : { 
+  .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+  {
     . = ALIGN(8);
     *(.ARM.extab* .gnu.linkonce.armextab.*)
     . = ALIGN(8);
   } >ROM
   
-  .ARM : {
+  .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+  {
     . = ALIGN(8);
     __exidx_start = .;
     *(.ARM.exidx*)
@@ -100,7 +102,7 @@
     . = ALIGN(8);
   } >ROM
 
-  .preinit_array     :
+  .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
   {
     . = ALIGN(8);
     PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -109,7 +111,7 @@
     . = ALIGN(8);
   } >ROM
   
-  .init_array :
+  .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
   {
     . = ALIGN(8);
     PROVIDE_HIDDEN (__init_array_start = .);
@@ -119,7 +121,7 @@
     . = ALIGN(8);
   } >ROM
   
-  .fini_array :
+  .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
   {
     . = ALIGN(8);
     PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Source/Templates/gcc/linker/STM32L552xC_FLASH_s.ld b/Source/Templates/gcc/linker/STM32L552xC_FLASH_s.ld
index 68b970a..aa74934 100644
--- a/Source/Templates/gcc/linker/STM32L552xC_FLASH_s.ld
+++ b/Source/Templates/gcc/linker/STM32L552xC_FLASH_s.ld
@@ -88,13 +88,15 @@
     . = ALIGN(8);
   } >ROM
 
-  .ARM.extab   : { 
+  .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+  {
     . = ALIGN(8);
     *(.ARM.extab* .gnu.linkonce.armextab.*)
     . = ALIGN(8);
   } >ROM
   
-  .ARM : {
+  .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+  {
     . = ALIGN(8);
     __exidx_start = .;
     *(.ARM.exidx*)
@@ -102,7 +104,7 @@
     . = ALIGN(8);
   } >ROM
 
-  .preinit_array     :
+  .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
   {
     . = ALIGN(8);
     PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -111,7 +113,7 @@
     . = ALIGN(8);
   } >ROM
   
-  .init_array :
+  .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
   {
     . = ALIGN(8);
     PROVIDE_HIDDEN (__init_array_start = .);
@@ -121,7 +123,7 @@
     . = ALIGN(8);
   } >ROM
   
-  .fini_array :
+  .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
   {
     . = ALIGN(8);
     PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Source/Templates/gcc/linker/STM32L552xE_FLASH.ld b/Source/Templates/gcc/linker/STM32L552xE_FLASH.ld
index 6b1c72a..08b73d3 100644
--- a/Source/Templates/gcc/linker/STM32L552xE_FLASH.ld
+++ b/Source/Templates/gcc/linker/STM32L552xE_FLASH.ld
@@ -87,13 +87,15 @@
     . = ALIGN(8);
   } >ROM
 
-  .ARM.extab   : { 
+  .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+  {
     . = ALIGN(8);
     *(.ARM.extab* .gnu.linkonce.armextab.*)
     . = ALIGN(8);
   } >ROM
   
-  .ARM : {
+  .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+  {
     . = ALIGN(8);
     __exidx_start = .;
     *(.ARM.exidx*)
@@ -101,7 +103,7 @@
     . = ALIGN(8);
   } >ROM
 
-  .preinit_array     :
+  .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
   {
     . = ALIGN(8);
     PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@
     . = ALIGN(8);
   } >ROM
   
-  .init_array :
+  .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
   {
     . = ALIGN(8);
     PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@
     . = ALIGN(8);
   } >ROM
   
-  .fini_array :
+  .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
   {
     . = ALIGN(8);
     PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Source/Templates/gcc/linker/STM32L552xE_FLASH_ns.ld b/Source/Templates/gcc/linker/STM32L552xE_FLASH_ns.ld
index 1ce84ba..b0f3558 100644
--- a/Source/Templates/gcc/linker/STM32L552xE_FLASH_ns.ld
+++ b/Source/Templates/gcc/linker/STM32L552xE_FLASH_ns.ld
@@ -86,13 +86,15 @@
     . = ALIGN(8);
   } >ROM
 
-  .ARM.extab   : { 
+  .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+  {
     . = ALIGN(8);
     *(.ARM.extab* .gnu.linkonce.armextab.*)
     . = ALIGN(8);
   } >ROM
   
-  .ARM : {
+  .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+  {
     . = ALIGN(8);
     __exidx_start = .;
     *(.ARM.exidx*)
@@ -100,7 +102,7 @@
     . = ALIGN(8);
   } >ROM
 
-  .preinit_array     :
+  .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
   {
     . = ALIGN(8);
     PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -109,7 +111,7 @@
     . = ALIGN(8);
   } >ROM
   
-  .init_array :
+  .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
   {
     . = ALIGN(8);
     PROVIDE_HIDDEN (__init_array_start = .);
@@ -119,7 +121,7 @@
     . = ALIGN(8);
   } >ROM
   
-  .fini_array :
+  .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
   {
     . = ALIGN(8);
     PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Source/Templates/gcc/linker/STM32L552xE_FLASH_s.ld b/Source/Templates/gcc/linker/STM32L552xE_FLASH_s.ld
index bdf219d..01b4c33 100644
--- a/Source/Templates/gcc/linker/STM32L552xE_FLASH_s.ld
+++ b/Source/Templates/gcc/linker/STM32L552xE_FLASH_s.ld
@@ -88,13 +88,15 @@
     . = ALIGN(8);
   } >ROM
 
-  .ARM.extab   : { 
+  .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+  {
     . = ALIGN(8);
     *(.ARM.extab* .gnu.linkonce.armextab.*)
     . = ALIGN(8);
   } >ROM
   
-  .ARM : {
+  .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+  {
     . = ALIGN(8);
     __exidx_start = .;
     *(.ARM.exidx*)
@@ -102,7 +104,7 @@
     . = ALIGN(8);
   } >ROM
 
-  .preinit_array     :
+  .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
   {
     . = ALIGN(8);
     PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -111,7 +113,7 @@
     . = ALIGN(8);
   } >ROM
   
-  .init_array :
+  .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
   {
     . = ALIGN(8);
     PROVIDE_HIDDEN (__init_array_start = .);
@@ -121,7 +123,7 @@
     . = ALIGN(8);
   } >ROM
   
-  .fini_array :
+  .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
   {
     . = ALIGN(8);
     PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Source/Templates/gcc/linker/STM32L552xx_RAM.ld b/Source/Templates/gcc/linker/STM32L552xx_RAM.ld
index 48c0df3..1cafc79 100644
--- a/Source/Templates/gcc/linker/STM32L552xx_RAM.ld
+++ b/Source/Templates/gcc/linker/STM32L552xx_RAM.ld
@@ -85,13 +85,15 @@
     . = ALIGN(8);
   } >RAM
 
-  .ARM.extab   : { 
+  .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+  {
     . = ALIGN(8);
     *(.ARM.extab* .gnu.linkonce.armextab.*)
     . = ALIGN(8);
   } >RAM
   
-  .ARM : {
+  .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+  {
     . = ALIGN(8);
     __exidx_start = .;
     *(.ARM.exidx*)
@@ -99,7 +101,7 @@
     . = ALIGN(8);
   } >RAM
 
-  .preinit_array     :
+  .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
   {
     . = ALIGN(8);
     PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@
     . = ALIGN(8);
   } >RAM
   
-  .init_array :
+  .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
   {
     . = ALIGN(8);
     PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@
     . = ALIGN(8);
   } >RAM
   
-  .fini_array :
+  .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
   {
     . = ALIGN(8);
     PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Source/Templates/gcc/linker/STM32L552xx_RAM_ns.ld b/Source/Templates/gcc/linker/STM32L552xx_RAM_ns.ld
index b34279a..b5c304a 100644
--- a/Source/Templates/gcc/linker/STM32L552xx_RAM_ns.ld
+++ b/Source/Templates/gcc/linker/STM32L552xx_RAM_ns.ld
@@ -84,13 +84,15 @@
     . = ALIGN(8);
   } >RAM
 
-  .ARM.extab   : { 
+  .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+  {
     . = ALIGN(8);
     *(.ARM.extab* .gnu.linkonce.armextab.*)
     . = ALIGN(8);
   } >RAM
   
-  .ARM : {
+  .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+  {
     . = ALIGN(8);
     __exidx_start = .;
     *(.ARM.exidx*)
@@ -98,7 +100,7 @@
     . = ALIGN(8);
   } >RAM
 
-  .preinit_array     :
+  .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
   {
     . = ALIGN(8);
     PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -107,7 +109,7 @@
     . = ALIGN(8);
   } >RAM
   
-  .init_array :
+  .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
   {
     . = ALIGN(8);
     PROVIDE_HIDDEN (__init_array_start = .);
@@ -117,7 +119,7 @@
     . = ALIGN(8);
   } >RAM
   
-  .fini_array :
+  .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
   {
     . = ALIGN(8);
     PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Source/Templates/gcc/linker/STM32L552xx_RAM_s.ld b/Source/Templates/gcc/linker/STM32L552xx_RAM_s.ld
index 4661d17..c989563 100644
--- a/Source/Templates/gcc/linker/STM32L552xx_RAM_s.ld
+++ b/Source/Templates/gcc/linker/STM32L552xx_RAM_s.ld
@@ -86,13 +86,15 @@
     . = ALIGN(8);
   } >RAM
 
-  .ARM.extab   : { 
+  .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+  {
     . = ALIGN(8);
     *(.ARM.extab* .gnu.linkonce.armextab.*)
     . = ALIGN(8);
   } >RAM
   
-  .ARM : {
+  .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+  {
     . = ALIGN(8);
     __exidx_start = .;
     *(.ARM.exidx*)
@@ -100,7 +102,7 @@
     . = ALIGN(8);
   } >RAM
 
-  .preinit_array     :
+  .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
   {
     . = ALIGN(8);
     PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -109,7 +111,7 @@
     . = ALIGN(8);
   } >RAM
   
-  .init_array :
+  .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
   {
     . = ALIGN(8);
     PROVIDE_HIDDEN (__init_array_start = .);
@@ -119,7 +121,7 @@
     . = ALIGN(8);
   } >RAM
   
-  .fini_array :
+  .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
   {
     . = ALIGN(8);
     PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Source/Templates/gcc/linker/STM32L562xE_FLASH.ld b/Source/Templates/gcc/linker/STM32L562xE_FLASH.ld
index 6b1c72a..08b73d3 100644
--- a/Source/Templates/gcc/linker/STM32L562xE_FLASH.ld
+++ b/Source/Templates/gcc/linker/STM32L562xE_FLASH.ld
@@ -87,13 +87,15 @@
     . = ALIGN(8);
   } >ROM
 
-  .ARM.extab   : { 
+  .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+  {
     . = ALIGN(8);
     *(.ARM.extab* .gnu.linkonce.armextab.*)
     . = ALIGN(8);
   } >ROM
   
-  .ARM : {
+  .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+  {
     . = ALIGN(8);
     __exidx_start = .;
     *(.ARM.exidx*)
@@ -101,7 +103,7 @@
     . = ALIGN(8);
   } >ROM
 
-  .preinit_array     :
+  .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
   {
     . = ALIGN(8);
     PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -110,7 +112,7 @@
     . = ALIGN(8);
   } >ROM
   
-  .init_array :
+  .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
   {
     . = ALIGN(8);
     PROVIDE_HIDDEN (__init_array_start = .);
@@ -120,7 +122,7 @@
     . = ALIGN(8);
   } >ROM
   
-  .fini_array :
+  .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
   {
     . = ALIGN(8);
     PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Source/Templates/gcc/linker/STM32L562xE_FLASH_ns.ld b/Source/Templates/gcc/linker/STM32L562xE_FLASH_ns.ld
index 1ce84ba..b0f3558 100644
--- a/Source/Templates/gcc/linker/STM32L562xE_FLASH_ns.ld
+++ b/Source/Templates/gcc/linker/STM32L562xE_FLASH_ns.ld
@@ -86,13 +86,15 @@
     . = ALIGN(8);
   } >ROM
 
-  .ARM.extab   : { 
+  .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+  {
     . = ALIGN(8);
     *(.ARM.extab* .gnu.linkonce.armextab.*)
     . = ALIGN(8);
   } >ROM
   
-  .ARM : {
+  .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+  {
     . = ALIGN(8);
     __exidx_start = .;
     *(.ARM.exidx*)
@@ -100,7 +102,7 @@
     . = ALIGN(8);
   } >ROM
 
-  .preinit_array     :
+  .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
   {
     . = ALIGN(8);
     PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -109,7 +111,7 @@
     . = ALIGN(8);
   } >ROM
   
-  .init_array :
+  .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
   {
     . = ALIGN(8);
     PROVIDE_HIDDEN (__init_array_start = .);
@@ -119,7 +121,7 @@
     . = ALIGN(8);
   } >ROM
   
-  .fini_array :
+  .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
   {
     . = ALIGN(8);
     PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Source/Templates/gcc/linker/STM32L562xE_FLASH_s.ld b/Source/Templates/gcc/linker/STM32L562xE_FLASH_s.ld
index bdf219d..01b4c33 100644
--- a/Source/Templates/gcc/linker/STM32L562xE_FLASH_s.ld
+++ b/Source/Templates/gcc/linker/STM32L562xE_FLASH_s.ld
@@ -88,13 +88,15 @@
     . = ALIGN(8);
   } >ROM
 
-  .ARM.extab   : { 
+  .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+  {
     . = ALIGN(8);
     *(.ARM.extab* .gnu.linkonce.armextab.*)
     . = ALIGN(8);
   } >ROM
   
-  .ARM : {
+  .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+  {
     . = ALIGN(8);
     __exidx_start = .;
     *(.ARM.exidx*)
@@ -102,7 +104,7 @@
     . = ALIGN(8);
   } >ROM
 
-  .preinit_array     :
+  .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
   {
     . = ALIGN(8);
     PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -111,7 +113,7 @@
     . = ALIGN(8);
   } >ROM
   
-  .init_array :
+  .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
   {
     . = ALIGN(8);
     PROVIDE_HIDDEN (__init_array_start = .);
@@ -121,7 +123,7 @@
     . = ALIGN(8);
   } >ROM
   
-  .fini_array :
+  .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
   {
     . = ALIGN(8);
     PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Source/Templates/gcc/linker/STM32L562xx_RAM.ld b/Source/Templates/gcc/linker/STM32L562xx_RAM.ld
index 48c0df3..1cafc79 100644
--- a/Source/Templates/gcc/linker/STM32L562xx_RAM.ld
+++ b/Source/Templates/gcc/linker/STM32L562xx_RAM.ld
@@ -85,13 +85,15 @@
     . = ALIGN(8);
   } >RAM
 
-  .ARM.extab   : { 
+  .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+  {
     . = ALIGN(8);
     *(.ARM.extab* .gnu.linkonce.armextab.*)
     . = ALIGN(8);
   } >RAM
   
-  .ARM : {
+  .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+  {
     . = ALIGN(8);
     __exidx_start = .;
     *(.ARM.exidx*)
@@ -99,7 +101,7 @@
     . = ALIGN(8);
   } >RAM
 
-  .preinit_array     :
+  .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
   {
     . = ALIGN(8);
     PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -108,7 +110,7 @@
     . = ALIGN(8);
   } >RAM
   
-  .init_array :
+  .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
   {
     . = ALIGN(8);
     PROVIDE_HIDDEN (__init_array_start = .);
@@ -118,7 +120,7 @@
     . = ALIGN(8);
   } >RAM
   
-  .fini_array :
+  .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
   {
     . = ALIGN(8);
     PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Source/Templates/gcc/linker/STM32L562xx_RAM_ns.ld b/Source/Templates/gcc/linker/STM32L562xx_RAM_ns.ld
index b34279a..b5c304a 100644
--- a/Source/Templates/gcc/linker/STM32L562xx_RAM_ns.ld
+++ b/Source/Templates/gcc/linker/STM32L562xx_RAM_ns.ld
@@ -84,13 +84,15 @@
     . = ALIGN(8);
   } >RAM
 
-  .ARM.extab   : { 
+  .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+  {
     . = ALIGN(8);
     *(.ARM.extab* .gnu.linkonce.armextab.*)
     . = ALIGN(8);
   } >RAM
   
-  .ARM : {
+  .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+  {
     . = ALIGN(8);
     __exidx_start = .;
     *(.ARM.exidx*)
@@ -98,7 +100,7 @@
     . = ALIGN(8);
   } >RAM
 
-  .preinit_array     :
+  .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
   {
     . = ALIGN(8);
     PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -107,7 +109,7 @@
     . = ALIGN(8);
   } >RAM
   
-  .init_array :
+  .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
   {
     . = ALIGN(8);
     PROVIDE_HIDDEN (__init_array_start = .);
@@ -117,7 +119,7 @@
     . = ALIGN(8);
   } >RAM
   
-  .fini_array :
+  .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
   {
     . = ALIGN(8);
     PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Source/Templates/gcc/linker/STM32L562xx_RAM_s.ld b/Source/Templates/gcc/linker/STM32L562xx_RAM_s.ld
index 4661d17..c989563 100644
--- a/Source/Templates/gcc/linker/STM32L562xx_RAM_s.ld
+++ b/Source/Templates/gcc/linker/STM32L562xx_RAM_s.ld
@@ -86,13 +86,15 @@
     . = ALIGN(8);
   } >RAM
 
-  .ARM.extab   : { 
+  .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+  {
     . = ALIGN(8);
     *(.ARM.extab* .gnu.linkonce.armextab.*)
     . = ALIGN(8);
   } >RAM
   
-  .ARM : {
+  .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+  {
     . = ALIGN(8);
     __exidx_start = .;
     *(.ARM.exidx*)
@@ -100,7 +102,7 @@
     . = ALIGN(8);
   } >RAM
 
-  .preinit_array     :
+  .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
   {
     . = ALIGN(8);
     PROVIDE_HIDDEN (__preinit_array_start = .);
@@ -109,7 +111,7 @@
     . = ALIGN(8);
   } >RAM
   
-  .init_array :
+  .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
   {
     . = ALIGN(8);
     PROVIDE_HIDDEN (__init_array_start = .);
@@ -119,7 +121,7 @@
     . = ALIGN(8);
   } >RAM
   
-  .fini_array :
+  .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
   {
     . = ALIGN(8);
     PROVIDE_HIDDEN (__fini_array_start = .);
diff --git a/Source/Templates/gcc/startup_stm32l552xx.s b/Source/Templates/gcc/startup_stm32l552xx.s
index 28d51aa..746658a 100644
--- a/Source/Templates/gcc/startup_stm32l552xx.s
+++ b/Source/Templates/gcc/startup_stm32l552xx.s
@@ -124,7 +124,6 @@
 ******************************************************************************/
  	.section	.isr_vector,"a",%progbits
 	.type	g_pfnVectors, %object
-	.size	g_pfnVectors, .-g_pfnVectors
 
 
 g_pfnVectors:
@@ -254,6 +253,7 @@
 	.word	ICACHE_IRQHandler
 	.word	0
 
+	.size	g_pfnVectors, .-g_pfnVectors
 
 /*******************************************************************************
 *
diff --git a/Source/Templates/gcc/startup_stm32l562xx.s b/Source/Templates/gcc/startup_stm32l562xx.s
index ed9591f..f3b5189 100644
--- a/Source/Templates/gcc/startup_stm32l562xx.s
+++ b/Source/Templates/gcc/startup_stm32l562xx.s
@@ -124,7 +124,6 @@
 ******************************************************************************/
  	.section	.isr_vector,"a",%progbits
 	.type	g_pfnVectors, %object
-	.size	g_pfnVectors, .-g_pfnVectors
 
 
 g_pfnVectors:
@@ -254,6 +253,7 @@
 	.word	ICACHE_IRQHandler
 	.word	OTFDEC1_IRQHandler
 
+	.size	g_pfnVectors, .-g_pfnVectors
 
 /*******************************************************************************
 *