From fa1d29d5cce3d6acc70dcfa0445a4069f547f6e1 Mon Sep 17 00:00:00 2001
From: Ard Biesheuvel <ard.biesheuvel@linaro.org>
Date: Mon, 3 Aug 2015 08:21:39 +0000
Subject: [PATCH] BaseTools IA32/X64: move .rodata to PE/COFF .text section

The .rodata ELF section contains constant non-executable data that
should never be modified by the program itself. Since the risk of
inadvertent modification is typically higher than the risk of
inadvertent execution, it makes sense to put this data in the
R-X .text section rather than in the RW- .data section.
So move it there.

Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Ard Biesheuvel <ard.biesheuvel@linaro.org>
Reviewed-by: Jordan Justen <jordan.l.justen@intel.com>
Tested-by: Liming Gao <liming.gao@intel.com>

git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@18131 6f19259b-4bc3-4df7-8a09-765794883524
---
 BaseTools/Scripts/gcc-4K-align-ld-script | 2 +-
 BaseTools/Scripts/gcc4.4-ld-script       | 2 +-
 BaseTools/Scripts/gcc4.9-ld-script       | 2 +-
 3 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/BaseTools/Scripts/gcc-4K-align-ld-script b/BaseTools/Scripts/gcc-4K-align-ld-script
index 16cf623a33..1f0f1afb27 100644
--- a/BaseTools/Scripts/gcc-4K-align-ld-script
+++ b/BaseTools/Scripts/gcc-4K-align-ld-script
@@ -6,12 +6,12 @@ SECTIONS
   .text : ALIGN(0x1000)
   {
     *(.text .stub .text.* .gnu.linkonce.t.*)
+    *(.rodata .rodata.* .gnu.linkonce.r.*)
     . = ALIGN(0x20);
   }
   .data : ALIGN(0x1000)
   {
     *(
-      .rodata .rodata.* .gnu.linkonce.r.*
       .data .data.* .gnu.linkonce.d.*
       .bss .bss.*
       *COM*
diff --git a/BaseTools/Scripts/gcc4.4-ld-script b/BaseTools/Scripts/gcc4.4-ld-script
index c0aa621804..22b3220816 100644
--- a/BaseTools/Scripts/gcc4.4-ld-script
+++ b/BaseTools/Scripts/gcc4.4-ld-script
@@ -6,12 +6,12 @@ SECTIONS
   .text ALIGN(0x20) :
   {
     *(.text .stub .text.* .gnu.linkonce.t.*)
+    *(.rodata .rodata.* .gnu.linkonce.r.*)
     . = ALIGN(0x20);
   }
   .data ALIGN(0x20) :
   {
     *(
-      .rodata .rodata.* .gnu.linkonce.r.*
       .data .data.* .gnu.linkonce.d.*
       .bss .bss.*
       *COM*
diff --git a/BaseTools/Scripts/gcc4.9-ld-script b/BaseTools/Scripts/gcc4.9-ld-script
index 37a93cd85e..2ac86e38fa 100644
--- a/BaseTools/Scripts/gcc4.9-ld-script
+++ b/BaseTools/Scripts/gcc4.9-ld-script
@@ -6,12 +6,12 @@ SECTIONS
   .text ALIGN(0x20) :
   {
     *(.text .stub .text.* .gnu.linkonce.t.*)
+    *(.rodata .rodata.* .gnu.linkonce.r.*)
     . = ALIGN(0x20);
   }
   .data ALIGN(0x40) :
   {
     *(
-      .rodata .rodata.* .gnu.linkonce.r.*
       .data .data.* .gnu.linkonce.d.*
       .bss .bss.*
       *COM*