firmware: Move dynsym and reladyn sections to RX section
authorHimanshu Chauhan <hchauhan@ventanamicro.com>
Thu, 19 Jan 2023 15:18:23 +0000 (20:48 +0530)
committerAnup Patel <anup@brainfault.org>
Mon, 23 Jan 2023 04:36:14 +0000 (10:06 +0530)
Currently, the dynsym and reladyn sections are under RW data.
They are moved to the Read-only/Executable region.

Signed-off-by: Himanshu Chauhan <hchauhan@ventanamicro.com>
Reviewed-by: Anup Patel <anup@brainfault.org>
firmware/fw_base.ldS

index 5411bbd..9a1304e 100644 (file)
 
        /* Beginning of the read-only data sections */
 
+       PROVIDE(_rodata_start = .);
+
        .rodata :
        {
-               PROVIDE(_rodata_start = .);
                *(.rodata .rodata.*)
                . = ALIGN(8);
-               PROVIDE(_rodata_end = .);
        }
 
-       /* End of the read-only data sections */
-
        . = ALIGN(0x1000); /* Ensure next section is page aligned */
 
+       .dynsym : {
+               PROVIDE(__dyn_sym_start = .);
+               *(.dynsym)
+               PROVIDE(__dyn_sym_end = .);
+       }
+
+       .rela.dyn : {
+               PROVIDE(__rel_dyn_start = .);
+               *(.rela*)
+               . = ALIGN(8);
+               PROVIDE(__rel_dyn_end = .);
+       }
+
+       PROVIDE(_rodata_end = .);
+
+       /* End of the read-only data sections */
+
        /*
-        * PMP regions must be to be power-of-2. RO/RW will have separate
+        * PMP regions must be to be power-of-2. RX/RW will have separate
         * regions, so ensure that the split is power-of-2.
         */
-       . = ALIGN(1 << LOG2CEIL(SIZEOF(.rodata) + SIZEOF(.text)));
+       . = ALIGN(1 << LOG2CEIL((SIZEOF(.rodata) + SIZEOF(.text)
+                               + SIZEOF(.dynsym) + SIZEOF(.rela.dyn))));
 
        PROVIDE(_fw_rw_offset = (.  - _fw_start));
 
                PROVIDE(_data_end = .);
        }
 
-       .dynsym : {
-               PROVIDE(__dyn_sym_start = .);
-               *(.dynsym)
-               PROVIDE(__dyn_sym_end = .);
-       }
-
-       .rela.dyn : {
-               PROVIDE(__rel_dyn_start = .);
-               *(.rela*)
-               . = ALIGN(8);
-               PROVIDE(__rel_dyn_end = .);
-       }
-
        . = ALIGN(0x1000); /* Ensure next section is page aligned */
 
        .bss :