[edk2-devel] [PATCH v2 1/2] BaseTools: Define the read-only data section name per toolchain

Andrew Fish via groups.io afish=apple.com at groups.io
Tue Aug 10 21:54:14 UTC 2021



> On Aug 10, 2021, at 2:24 PM, Marvin Häuser <mhaeuser at posteo.de> wrote:
> 
> On 10/08/2021 21:49, Andrew Fish wrote:
>> I forgot I have an Ubuntu VM so we can take a look at an ELF to PE/COFF  toolchain example ….
>> 
>> So it looks like nasm[1] “does the right thing”(tm) and places a .rodata section in the object file….
>> 
>> But it looks like GenFw[2] smashed the .rodata section into .data section when it translated to PE/COFF. This was the issue I was worried about….
>> 
>> Actually I should probably look at the ELF executable too[3]. Yikes no .rodata in the ELF. So it looks likely that the linker scripts are smashing .rodata into .data.
> 
> They smash it into .text, as linked in the other mail [1].

Sorry I get way to much email…..

> This is fine honestly, just I want some toggle that decides consistently for all toolchains what to do (merge into .text or let it live as a separate section). But that'd be a task for another patch.
> 

I’m still trying to wrap my head around the definition of the nasm RODATA_SECTION_NAME. Do we want it to track what ends up in the object file, the native executable, or the PE/COFF?

It seems like it is tracking the object file. If that is the case we can just fix the XCODE changes to use  `__TEXT,__const`and all the toolchains would be consistent. 

I’d like to see the commit message reworked to better define what is going on. RODATA_SECTION_NAME tracks what end up object file, and PE/COFF results are controlled by the linker script/GenFw or mtoc. 

Thanks,

Andrew Fish

> Best regards,
> Marvin
> 
> 
> [1] https://github.com/tianocore/edk2/blob/d02dbb53cd78de799e6afaa237e98771fb5148db/BaseTools/Scripts/GccBase.lds#L25
> 
>> So there may be multiple issues with ELF toolchains that need to change to end up with a .rodata in the PE/COFF.
>> 
>> [1]$ objdump -fh  Build/OvmfX64/DEBUG_GCC5/X64/UefiCpuPkg/Library/BaseUefiCpuLib/BaseUefiCpuLib/OUTPUT/X64/InitializeFpu.obj
>> 
>> Build/OvmfX64/DEBUG_GCC5/X64/UefiCpuPkg/Library/BaseUefiCpuLib/BaseUefiCpuLib/OUTPUT/X64/InitializeFpu.obj:     file format elf64-x86-64
>> architecture: i386:x86-64, flags 0x00000011:
>> HAS_RELOC, HAS_SYMS
>> start address 0x0000000000000000
>> 
>> Sections:
>> Idx Name          Size      VMA               LMA       File off  Algn
>>   0 .rodata       00000006  0000000000000000  0000000000000000  00000200  2**2
>>                   CONTENTS, ALLOC, LOAD, READONLY, DATA
>>   1 .text         0000001d  0000000000000000  0000000000000000  00000210  2**4
>>                   CONTENTS, ALLOC, LOAD, RELOC, READONLY, CODE
>> 
>> 
>> 
>> [2]$ objdump -fh Build/OvmfX64/DEBUG_GCC5/X64/UefiCpuPkg/CpuDxe/CpuDxe/DEBUG/CpuDxe.efi
>> 
>> Build/OvmfX64/DEBUG_GCC5/X64/UefiCpuPkg/CpuDxe/CpuDxe/DEBUG/CpuDxe.efi:     file format pei-x86-64
>> architecture: i386:x86-64, flags 0x0000010b:
>> HAS_RELOC, EXEC_P, HAS_DEBUG, D_PAGED
>> start address 0x0000000000008eb1
>> 
>> Sections:
>> Idx Name          Size      VMA LMA               File off  Algn
>>   0 .text         0000ff80  0000000000000240  0000000000000240  00000240  2**4
>>                   CONTENTS, ALLOC, LOAD, READONLY, CODE
>>   1 .data         00000540  00000000000101c0  00000000000101c0  000101c0  2**4
>>                   CONTENTS, ALLOC, LOAD, DATA
>>   2 .reloc        00000080  0000000000010700  0000000000010700  00010700  2**2
>>                   CONTENTS, ALLOC, LOAD, READONLY, DATA
>> 
>> [3] $ objdump -fh Build/OvmfX64/DEBUG_GCC5/X64/UefiCpuPkg/CpuDxe/CpuDxe/DEBUG/CpuDxe.dll
>> 
>> Build/OvmfX64/DEBUG_GCC5/X64/UefiCpuPkg/CpuDxe/CpuDxe/DEBUG/CpuDxe.dll:     file format elf64-x86-64
>> architecture: i386:x86-64, flags 0x00000013:
>> HAS_RELOC, EXEC_P, HAS_SYMS
>> start address 0x0000000000008eb1
>> 
>> Sections:
>> Idx Name          Size      VMA LMA               File off  Algn
>>   0 .text         0000ff46  0000000000000240  0000000000000240  000000c0  2**6
>>                   CONTENTS, ALLOC, LOAD, RELOC, READONLY, CODE
>>   1 .data         00000490  00000000000101c0  00000000000101c0  00010040  2**6
>>                   CONTENTS, ALLOC, LOAD, RELOC, DATA
>>   2 .rela         000004f8  0000000000010680  0000000000010680  000104d0  2**3
>>                   CONTENTS, READONLY
>>   3 .build-id     00000024  0000000000010b78  0000000000010b78  000109c8  2**2
>>                   CONTENTS, READONLY
>>   4 .gnu_debuglink 00000014  0000000000000000  0000000000000000  000109ec  2**2
>>                   CONTENTS, READONLY
>> 
>> 
>> 
>> Thanks,
>> 
>> Andrew Fish
>> 
>>> On Aug 10, 2021, at 12:35 PM, Andrew Fish via groups.io <http://groups.io> <afish=apple.com at groups.io <mailto:afish=apple.com at groups.io>> wrote:
>>> 
>>> 
>>> 
>>>> On Aug 10, 2021, at 1:27 AM, Marvin Häuser <mhaeuser at posteo.de <mailto:mhaeuser at posteo.de>> wrote:
>>>> 
>>>> On 10/08/2021 06:19, Andrew Fish via groups.io <http://groups.io/> wrote:
>>>>> 
>>>>> 
>>>>>> On Aug 9, 2021, at 2:51 AM, Marvin Häuser <mhaeuser at posteo.de <mailto:mhaeuser at posteo.de> <mailto:mhaeuser at posteo.de <mailto:mhaeuser at posteo.de>>> wrote:
>>>>>> 
>>>>>> REF: https://bugzilla.tianocore.org/show_bug.cgi?id=3318 <https://bugzilla.tianocore.org/show_bug.cgi?id=3318> <https://bugzilla.tianocore.org/show_bug.cgi?id=3318 <https://bugzilla.tianocore.org/show_bug.cgi?id=3318>>
>>>>>> 
>>>>>> Different toolchains of the EDK II build system may generate ELF or
>>>>>> Mach-O files, which use the ".rodata" naming convention, or PE/COFF
>>>>>> files, which use the ".rdata" naming convention. Section permissions
>>>>>> are chosen based on this name per file format by NASM. To harden
>>>>>> image permission security, and to save space by avoiding both
>>>>>> ".rdata" and ".rodata" sections being emitted, expose the appropriate
>>>>>> name as a preprocessor constant.
>>>>>> 
>>>>>> Cc: Bob Feng <bob.c.feng at intel.com <mailto:bob.c.feng at intel.com> <mailto:bob.c.feng at intel.com <mailto:bob.c.feng at intel.com>>>
>>>>>> Cc: Liming Gao <gaoliming at byosoft.com.cn <mailto:gaoliming at byosoft.com.cn> <mailto:gaoliming at byosoft.com.cn <mailto:gaoliming at byosoft.com.cn>>>
>>>>>> Cc: Yuwei Chen <yuwei.chen at intel.com <mailto:yuwei.chen at intel.com> <mailto:yuwei.chen at intel.com <mailto:yuwei.chen at intel.com>>>
>>>>>> Cc: Vitaly Cheptsov <vit9696 at protonmail.com <mailto:vit9696 at protonmail.com> <mailto:vit9696 at protonmail.com <mailto:vit9696 at protonmail.com>>>
>>>>>> Signed-off-by: Marvin Häuser <mhaeuser at posteo.de <mailto:mhaeuser at posteo.de> <mailto:mhaeuser at posteo.de <mailto:mhaeuser at posteo.de>>>
>>>>>> ---
>>>>>> BaseTools/Conf/tools_def.template | 172 ++++++++++----------
>>>>>> 1 file changed, 86 insertions(+), 86 deletions(-)
>>>>>> 
>>>>>> diff --git a/BaseTools/Conf/tools_def.template b/BaseTools/Conf/tools_def.template
>>>>>> index 2e6b382ab623..84d464916c4d 100755
>>>>>> --- a/BaseTools/Conf/tools_def.template
>>>>>> +++ b/BaseTools/Conf/tools_def.template
>>>>>> @@ -463,9 +463,9 @@ NOOPT_VS2008_IA32_CC_FLAGS        = /nologo /c /WX /GS- /W4 /Gs32768 /D UNICODE
>>>>>> RELEASE_VS2008_IA32_ASM_FLAGS     = /nologo /c /WX /W3 /Cx /coff /Zd
>>>>>> 
>>>>>> NOOPT_VS2008_IA32_ASM_FLAGS       = /nologo /c /WX /W3 /Cx /coff /Zd /Zi
>>>>>> 
>>>>>> 
>>>>>> 
>>>>>> -  DEBUG_VS2008_IA32_NASM_FLAGS    = -Ox -f win32 -g
>>>>>> 
>>>>>> -RELEASE_VS2008_IA32_NASM_FLAGS    = -Ox -f win32
>>>>>> 
>>>>>> -NOOPT_VS2008_IA32_NASM_FLAGS      = -O0 -f win32 -g
>>>>>> 
>>>>>> +  DEBUG_VS2008_IA32_NASM_FLAGS    = -Ox -f win32 -g -DRODATA_SECTION_NAME=.rdata
>>>>>> 
>>>>>> +RELEASE_VS2008_IA32_NASM_FLAGS    = -Ox -f win32 -DRODATA_SECTION_NAME=.rdata
>>>>>> 
>>>>>> +NOOPT_VS2008_IA32_NASM_FLAGS      = -O0 -f win32 -g -DRODATA_SECTION_NAME=.rdata
>>>>>> 
>>>>>> 
>>>>>> 
>>>>>>   DEBUG_VS2008_IA32_DLINK_FLAGS   = /NOLOGO /NODEFAULTLIB /IGNORE:4001 /OPT:REF /OPT:ICF=10 /MAP /ALIGN:32 /SECTION:.xdata,D /SECTION:.pdata,D /MACHINE:X86 /LTCG /DLL /ENTRY:$(IMAGE_ENTRY_POINT) /SUBSYSTEM:EFI_BOOT_SERVICE_DRIVER /SAFESEH:NO /BASE:0 /DRIVER /DEBUG
>>>>>> 
>>>>>> RELEASE_VS2008_IA32_DLINK_FLAGS   = /NOLOGO /NODEFAULTLIB /IGNORE:4001 /IGNORE:4254 /OPT:REF /OPT:ICF=10 /MAP /ALIGN:32 /SECTION:.xdata,D /SECTION:.pdata,D /MACHINE:X86 /LTCG /DLL /ENTRY:$(IMAGE_ENTRY_POINT) /SUBSYSTEM:EFI_BOOT_SERVICE_DRIVER /SAFESEH:NO /BASE:0 /DRIVER /MERGE:.rdata=.data
>>>>>> 
>>>>>> @@ -495,9 +495,9 @@ NOOPT_VS2008_X64_CC_FLAGS       = /nologo /c /WX /GS- /W4 /Gs32768 /D UNICODE /G
>>>>>> RELEASE_VS2008_X64_ASM_FLAGS    = /nologo /c /WX /W3 /Cx /Zd
>>>>>> 
>>>>>> NOOPT_VS2008_X64_ASM_FLAGS    = /nologo /c /WX /W3 /Cx /Zd /Zi
>>>>>> 
>>>>>> 
>>>>>> 
>>>>>> -  DEBUG_VS2008_X64_NASM_FLAGS   = -Ox -f win64 -g
>>>>>> 
>>>>>> -RELEASE_VS2008_X64_NASM_FLAGS   = -Ox -f win64
>>>>>> 
>>>>>> -NOOPT_VS2008_X64_NASM_FLAGS     = -O0 -f win64 -g
>>>>>> 
>>>>>> +  DEBUG_VS2008_X64_NASM_FLAGS   = -Ox -f win64 -g -DRODATA_SECTION_NAME=.rdata
>>>>>> 
>>>>>> +RELEASE_VS2008_X64_NASM_FLAGS   = -Ox -f win64 -DRODATA_SECTION_NAME=.rdata
>>>>>> 
>>>>>> +NOOPT_VS2008_X64_NASM_FLAGS     = -O0 -f win64 -g -DRODATA_SECTION_NAME=.rdata
>>>>>> 
>>>>>> 
>>>>>> 
>>>>>>   DEBUG_VS2008_X64_DLINK_FLAGS  = /NOLOGO /NODEFAULTLIB /IGNORE:4001 /OPT:REF /OPT:ICF=10 /MAP /ALIGN:32 /SECTION:.xdata,D /SECTION:.pdata,D /Machine:X64 /LTCG /DLL /ENTRY:$(IMAGE_ENTRY_POINT) /SUBSYSTEM:EFI_BOOT_SERVICE_DRIVER /SAFESEH:NO /BASE:0 /DRIVER /DEBUG
>>>>>> 
>>>>>> RELEASE_VS2008_X64_DLINK_FLAGS  = /NOLOGO /NODEFAULTLIB /IGNORE:4001 /IGNORE:4254 /OPT:REF /OPT:ICF=10 /MAP /ALIGN:32 /SECTION:.xdata,D /SECTION:.pdata,D /Machine:X64 /LTCG /DLL /ENTRY:$(IMAGE_ENTRY_POINT) /SUBSYSTEM:EFI_BOOT_SERVICE_DRIVER /SAFESEH:NO /BASE:0 /DRIVER /MERGE:.rdata=.data
>>>>>> 
>>>>>> @@ -574,9 +574,9 @@ NOOPT_VS2008x86_IA32_CC_FLAGS      = /nologo /c /WX /GS- /W4 /Gs32768 /D UNICODE
>>>>>> RELEASE_VS2008x86_IA32_ASM_FLAGS   = /nologo /c /WX /W3 /Cx /coff /Zd
>>>>>> 
>>>>>> NOOPT_VS2008x86_IA32_ASM_FLAGS     = /nologo /c /WX /W3 /Cx /coff /Zd /Zi
>>>>>> 
>>>>>> 
>>>>>> 
>>>>>> -  DEBUG_VS2008x86_IA32_NASM_FLAGS  = -Ox -f win32 -g
>>>>>> 
>>>>>> -RELEASE_VS2008x86_IA32_NASM_FLAGS  = -Ox -f win32
>>>>>> 
>>>>>> -NOOPT_VS2008x86_IA32_NASM_FLAGS    = -O0 -f win32 -g
>>>>>> 
>>>>>> +  DEBUG_VS2008x86_IA32_NASM_FLAGS  = -Ox -f win32 -g -DRODATA_SECTION_NAME=.rdata
>>>>>> 
>>>>>> +RELEASE_VS2008x86_IA32_NASM_FLAGS  = -Ox -f win32 -DRODATA_SECTION_NAME=.rdata
>>>>>> 
>>>>>> +NOOPT_VS2008x86_IA32_NASM_FLAGS    = -O0 -f win32 -g -DRODATA_SECTION_NAME=.rdata
>>>>>> 
>>>>>> 
>>>>>> 
>>>>>>   DEBUG_VS2008x86_IA32_DLINK_FLAGS = /NOLOGO /NODEFAULTLIB /IGNORE:4001 /OPT:REF /OPT:ICF=10 /MAP /ALIGN:32 /SECTION:.xdata,D /SECTION:.pdata,D /MACHINE:X86 /LTCG /DLL /ENTRY:$(IMAGE_ENTRY_POINT) /SUBSYSTEM:EFI_BOOT_SERVICE_DRIVER /SAFESEH:NO /BASE:0 /DRIVER /DEBUG
>>>>>> 
>>>>>> RELEASE_VS2008x86_IA32_DLINK_FLAGS = /NOLOGO /NODEFAULTLIB /IGNORE:4001 /IGNORE:4254 /OPT:REF /OPT:ICF=10 /MAP /ALIGN:32 /SECTION:.xdata,D /SECTION:.pdata,D /MACHINE:X86 /LTCG /DLL /ENTRY:$(IMAGE_ENTRY_POINT) /SUBSYSTEM:EFI_BOOT_SERVICE_DRIVER /SAFESEH:NO /BASE:0 /DRIVER /MERGE:.rdata=.data
>>>>>> 
>>>>>> @@ -605,9 +605,9 @@ NOOPT_VS2008x86_X64_CC_FLAGS       = /nologo /c /WX /GS- /W4 /Gs32768 /D UNICODE
>>>>>> RELEASE_VS2008x86_X64_ASM_FLAGS    = /nologo /c /WX /W3 /Cx /Zd
>>>>>> 
>>>>>> NOOPT_VS2008x86_X64_ASM_FLAGS      = /nologo /c /WX /W3 /Cx /Zd /Zi
>>>>>> 
>>>>>> 
>>>>>> 
>>>>>> -  DEBUG_VS2008x86_X64_NASM_FLAGS   = -Ox -f win64 -g
>>>>>> 
>>>>>> -RELEASE_VS2008x86_X64_NASM_FLAGS   = -Ox -f win64
>>>>>> 
>>>>>> -NOOPT_VS2008x86_X64_NASM_FLAGS     = -O0 -f win64 -g
>>>>>> 
>>>>>> +  DEBUG_VS2008x86_X64_NASM_FLAGS   = -Ox -f win64 -g -DRODATA_SECTION_NAME=.rdata
>>>>>> 
>>>>>> +RELEASE_VS2008x86_X64_NASM_FLAGS   = -Ox -f win64 -DRODATA_SECTION_NAME=.rdata
>>>>>> 
>>>>>> +NOOPT_VS2008x86_X64_NASM_FLAGS     = -O0 -f win64 -g -DRODATA_SECTION_NAME=.rdata
>>>>>> 
>>>>>> 
>>>>>> 
>>>>>>   DEBUG_VS2008x86_X64_DLINK_FLAGS  = /NOLOGO /NODEFAULTLIB /IGNORE:4001 /OPT:REF /OPT:ICF=10 /MAP /ALIGN:32 /SECTION:.xdata,D /SECTION:.pdata,D /Machine:X64 /LTCG /DLL /ENTRY:$(IMAGE_ENTRY_POINT) /SUBSYSTEM:EFI_BOOT_SERVICE_DRIVER /SAFESEH:NO /BASE:0 /DRIVER /DEBUG
>>>>>> 
>>>>>> RELEASE_VS2008x86_X64_DLINK_FLAGS  = /NOLOGO /NODEFAULTLIB /IGNORE:4001 /IGNORE:4254 /OPT:REF /OPT:ICF=10 /MAP /ALIGN:32 /SECTION:.xdata,D /SECTION:.pdata,D /Machine:X64 /LTCG /DLL /ENTRY:$(IMAGE_ENTRY_POINT) /SUBSYSTEM:EFI_BOOT_SERVICE_DRIVER /SAFESEH:NO /BASE:0 /DRIVER /MERGE:.rdata=.data
>>>>>> 
>>>>>> @@ -688,9 +688,9 @@ NOOPT_VS2010_IA32_CC_FLAGS        = /nologo /c /WX /GS- /W4 /Gs32768 /D UNICODE
>>>>>> RELEASE_VS2010_IA32_ASM_FLAGS     = /nologo /c /WX /W3 /Cx /coff /Zd
>>>>>> 
>>>>>> NOOPT_VS2010_IA32_ASM_FLAGS       = /nologo /c /WX /W3 /Cx /coff /Zd /Zi
>>>>>> 
>>>>>> 
>>>>>> 
>>>>>> -  DEBUG_VS2010_IA32_NASM_FLAGS    = -Ox -f win32 -g
>>>>>> 
>>>>>> -RELEASE_VS2010_IA32_NASM_FLAGS    = -Ox -f win32
>>>>>> 
>>>>>> -NOOPT_VS2010_IA32_NASM_FLAGS      = -O0 -f win32 -g
>>>>>> 
>>>>>> +  DEBUG_VS2010_IA32_NASM_FLAGS    = -Ox -f win32 -g -DRODATA_SECTION_NAME=.rdata
>>>>>> 
>>>>>> +RELEASE_VS2010_IA32_NASM_FLAGS    = -Ox -f win32 -DRODATA_SECTION_NAME=.rdata
>>>>>> 
>>>>>> +NOOPT_VS2010_IA32_NASM_FLAGS      = -O0 -f win32 -g -DRODATA_SECTION_NAME=.rdata
>>>>>> 
>>>>>> 
>>>>>> 
>>>>>>   DEBUG_VS2010_IA32_DLINK_FLAGS   = /NOLOGO /NODEFAULTLIB /IGNORE:4001 /OPT:REF /OPT:ICF=10 /MAP /ALIGN:32 /SECTION:.xdata,D /SECTION:.pdata,D /MACHINE:X86 /LTCG /DLL /ENTRY:$(IMAGE_ENTRY_POINT) /SUBSYSTEM:EFI_BOOT_SERVICE_DRIVER /SAFESEH:NO /BASE:0 /DRIVER /DEBUG
>>>>>> 
>>>>>> RELEASE_VS2010_IA32_DLINK_FLAGS   = /NOLOGO /NODEFAULTLIB /IGNORE:4001 /IGNORE:4254 /OPT:REF /OPT:ICF=10 /MAP /ALIGN:32 /SECTION:.xdata,D /SECTION:.pdata,D /MACHINE:X86 /LTCG /DLL /ENTRY:$(IMAGE_ENTRY_POINT) /SUBSYSTEM:EFI_BOOT_SERVICE_DRIVER /SAFESEH:NO /BASE:0 /DRIVER /MERGE:.rdata=.data
>>>>>> 
>>>>>> @@ -720,9 +720,9 @@ NOOPT_VS2010_X64_CC_FLAGS       = /nologo /c /WX /GS- /W4 /Gs32768 /D UNICODE /G
>>>>>> RELEASE_VS2010_X64_ASM_FLAGS    = /nologo /c /WX /W3 /Cx /Zd
>>>>>> 
>>>>>> NOOPT_VS2010_X64_ASM_FLAGS    = /nologo /c /WX /W3 /Cx /Zd /Zi
>>>>>> 
>>>>>> 
>>>>>> 
>>>>>> -  DEBUG_VS2010_X64_NASM_FLAGS   = -Ox -f win64 -g
>>>>>> 
>>>>>> -RELEASE_VS2010_X64_NASM_FLAGS   = -Ox -f win64
>>>>>> 
>>>>>> -NOOPT_VS2010_X64_NASM_FLAGS     = -O0 -f win64 -g
>>>>>> 
>>>>>> +  DEBUG_VS2010_X64_NASM_FLAGS   = -Ox -f win64 -g -DRODATA_SECTION_NAME=.rdata
>>>>>> 
>>>>>> +RELEASE_VS2010_X64_NASM_FLAGS   = -Ox -f win64 -DRODATA_SECTION_NAME=.rdata
>>>>>> 
>>>>>> +NOOPT_VS2010_X64_NASM_FLAGS     = -O0 -f win64 -g -DRODATA_SECTION_NAME=.rdata
>>>>>> 
>>>>>> 
>>>>>> 
>>>>>>   DEBUG_VS2010_X64_DLINK_FLAGS  = /NOLOGO /NODEFAULTLIB /IGNORE:4001 /OPT:REF /OPT:ICF=10 /MAP /ALIGN:32 /SECTION:.xdata,D /SECTION:.pdata,D /Machine:X64 /LTCG /DLL /ENTRY:$(IMAGE_ENTRY_POINT) /SUBSYSTEM:EFI_BOOT_SERVICE_DRIVER /SAFESEH:NO /BASE:0 /DRIVER /DEBUG
>>>>>> 
>>>>>> RELEASE_VS2010_X64_DLINK_FLAGS  = /NOLOGO /NODEFAULTLIB /IGNORE:4001 /IGNORE:4254 /OPT:REF /OPT:ICF=10 /MAP /ALIGN:32 /SECTION:.xdata,D /SECTION:.pdata,D /Machine:X64 /LTCG /DLL /ENTRY:$(IMAGE_ENTRY_POINT) /SUBSYSTEM:EFI_BOOT_SERVICE_DRIVER /SAFESEH:NO /BASE:0 /DRIVER /MERGE:.rdata=.data
>>>>>> 
>>>>>> @@ -799,9 +799,9 @@ NOOPT_VS2010x86_IA32_CC_FLAGS      = /nologo /c /WX /GS- /W4 /Gs32768 /D UNICODE
>>>>>> RELEASE_VS2010x86_IA32_ASM_FLAGS   = /nologo /c /WX /W3 /Cx /coff /Zd
>>>>>> 
>>>>>> NOOPT_VS2010x86_IA32_ASM_FLAGS     = /nologo /c /WX /W3 /Cx /coff /Zd /Zi
>>>>>> 
>>>>>> 
>>>>>> 
>>>>>> -  DEBUG_VS2010x86_IA32_NASM_FLAGS  = -Ox -f win32 -g
>>>>>> 
>>>>>> -RELEASE_VS2010x86_IA32_NASM_FLAGS  = -Ox -f win32
>>>>>> 
>>>>>> -NOOPT_VS2010x86_IA32_NASM_FLAGS    = -O0 -f win32 -g
>>>>>> 
>>>>>> +  DEBUG_VS2010x86_IA32_NASM_FLAGS  = -Ox -f win32 -g -DRODATA_SECTION_NAME=.rdata
>>>>>> 
>>>>>> +RELEASE_VS2010x86_IA32_NASM_FLAGS  = -Ox -f win32 -DRODATA_SECTION_NAME=.rdata
>>>>>> 
>>>>>> +NOOPT_VS2010x86_IA32_NASM_FLAGS    = -O0 -f win32 -g -DRODATA_SECTION_NAME=.rdata
>>>>>> 
>>>>>> 
>>>>>> 
>>>>>>   DEBUG_VS2010x86_IA32_DLINK_FLAGS = /NOLOGO /NODEFAULTLIB /IGNORE:4001 /OPT:REF /OPT:ICF=10 /MAP /ALIGN:32 /SECTION:.xdata,D /SECTION:.pdata,D /MACHINE:X86 /LTCG /DLL /ENTRY:$(IMAGE_ENTRY_POINT) /SUBSYSTEM:EFI_BOOT_SERVICE_DRIVER /SAFESEH:NO /BASE:0 /DRIVER /DEBUG
>>>>>> 
>>>>>> RELEASE_VS2010x86_IA32_DLINK_FLAGS = /NOLOGO /NODEFAULTLIB /IGNORE:4001 /IGNORE:4254 /OPT:REF /OPT:ICF=10 /MAP /ALIGN:32 /SECTION:.xdata,D /SECTION:.pdata,D /MACHINE:X86 /LTCG /DLL /ENTRY:$(IMAGE_ENTRY_POINT) /SUBSYSTEM:EFI_BOOT_SERVICE_DRIVER /SAFESEH:NO /BASE:0 /DRIVER /MERGE:.rdata=.data
>>>>>> 
>>>>>> @@ -831,9 +831,9 @@ NOOPT_VS2010x86_X64_CC_FLAGS       = /nologo /c /WX /GS- /W4 /Gs32768 /D UNICODE
>>>>>> RELEASE_VS2010x86_X64_ASM_FLAGS    = /nologo /c /WX /W3 /Cx /Zd
>>>>>> 
>>>>>> NOOPT_VS2010x86_X64_ASM_FLAGS      = /nologo /c /WX /W3 /Cx /Zd /Zi
>>>>>> 
>>>>>> 
>>>>>> 
>>>>>> -  DEBUG_VS2010x86_X64_NASM_FLAGS   = -Ox -f win64 -g
>>>>>> 
>>>>>> -RELEASE_VS2010x86_X64_NASM_FLAGS   = -Ox -f win64
>>>>>> 
>>>>>> -NOOPT_VS2010x86_X64_NASM_FLAGS     = -O0 -f win64 -g
>>>>>> 
>>>>>> +  DEBUG_VS2010x86_X64_NASM_FLAGS   = -Ox -f win64 -g -DRODATA_SECTION_NAME=.rdata
>>>>>> 
>>>>>> +RELEASE_VS2010x86_X64_NASM_FLAGS   = -Ox -f win64 -DRODATA_SECTION_NAME=.rdata
>>>>>> 
>>>>>> +NOOPT_VS2010x86_X64_NASM_FLAGS     = -O0 -f win64 -g -DRODATA_SECTION_NAME=.rdata
>>>>>> 
>>>>>> 
>>>>>> 
>>>>>>   DEBUG_VS2010x86_X64_DLINK_FLAGS  = /NOLOGO /NODEFAULTLIB /IGNORE:4001 /OPT:REF /OPT:ICF=10 /MAP /ALIGN:32 /SECTION:.xdata,D /SECTION:.pdata,D /Machine:X64 /LTCG /DLL /ENTRY:$(IMAGE_ENTRY_POINT) /SUBSYSTEM:EFI_BOOT_SERVICE_DRIVER /SAFESEH:NO /BASE:0 /DRIVER /DEBUG
>>>>>> 
>>>>>> RELEASE_VS2010x86_X64_DLINK_FLAGS  = /NOLOGO /NODEFAULTLIB /IGNORE:4001 /IGNORE:4254 /OPT:REF /OPT:ICF=10 /MAP /ALIGN:32 /SECTION:.xdata,D /SECTION:.pdata,D /Machine:X64 /LTCG /DLL /ENTRY:$(IMAGE_ENTRY_POINT) /SUBSYSTEM:EFI_BOOT_SERVICE_DRIVER /SAFESEH:NO /BASE:0 /DRIVER /MERGE:.rdata=.data
>>>>>> 
>>>>>> @@ -913,9 +913,9 @@ NOOPT_VS2012_IA32_CC_FLAGS        = /nologo /arch:IA32 /c /WX /GS- /W4 /Gs32768
>>>>>> RELEASE_VS2012_IA32_ASM_FLAGS     = /nologo /c /WX /W3 /Cx /coff /Zd
>>>>>> 
>>>>>> NOOPT_VS2012_IA32_ASM_FLAGS       = /nologo /c /WX /W3 /Cx /coff /Zd /Zi
>>>>>> 
>>>>>> 
>>>>>> 
>>>>>> -  DEBUG_VS2012_IA32_NASM_FLAGS    = -Ox -f win32 -g
>>>>>> 
>>>>>> -RELEASE_VS2012_IA32_NASM_FLAGS    = -Ox -f win32
>>>>>> 
>>>>>> -NOOPT_VS2012_IA32_NASM_FLAGS      = -O0 -f win32 -g
>>>>>> 
>>>>>> +  DEBUG_VS2012_IA32_NASM_FLAGS    = -Ox -f win32 -g -DRODATA_SECTION_NAME=.rdata
>>>>>> 
>>>>>> +RELEASE_VS2012_IA32_NASM_FLAGS    = -Ox -f win32 -DRODATA_SECTION_NAME=.rdata
>>>>>> 
>>>>>> +NOOPT_VS2012_IA32_NASM_FLAGS      = -O0 -f win32 -g -DRODATA_SECTION_NAME=.rdata
>>>>>> 
>>>>>> 
>>>>>> 
>>>>>>   DEBUG_VS2012_IA32_DLINK_FLAGS   = /NOLOGO /NODEFAULTLIB /IGNORE:4001 /OPT:REF /OPT:ICF=10 /MAP /ALIGN:32 /SECTION:.xdata,D /SECTION:.pdata,D /MACHINE:X86 /LTCG /DLL /ENTRY:$(IMAGE_ENTRY_POINT) /SUBSYSTEM:EFI_BOOT_SERVICE_DRIVER /SAFESEH:NO /BASE:0 /DRIVER /DEBUG
>>>>>> 
>>>>>> RELEASE_VS2012_IA32_DLINK_FLAGS   = /NOLOGO /NODEFAULTLIB /IGNORE:4001 /IGNORE:4254 /OPT:REF /OPT:ICF=10 /MAP /ALIGN:32 /SECTION:.xdata,D /SECTION:.pdata,D /MACHINE:X86 /LTCG /DLL /ENTRY:$(IMAGE_ENTRY_POINT) /SUBSYSTEM:EFI_BOOT_SERVICE_DRIVER /SAFESEH:NO /BASE:0 /DRIVER /MERGE:.rdata=.data
>>>>>> 
>>>>>> @@ -945,9 +945,9 @@ NOOPT_VS2012_X64_CC_FLAGS       = /nologo /c /WX /GS- /W4 /Gs32768 /D UNICODE /G
>>>>>> RELEASE_VS2012_X64_ASM_FLAGS    = /nologo /c /WX /W3 /Cx /Zd
>>>>>> 
>>>>>> NOOPT_VS2012_X64_ASM_FLAGS    = /nologo /c /WX /W3 /Cx /Zd /Zi
>>>>>> 
>>>>>> 
>>>>>> 
>>>>>> -  DEBUG_VS2012_X64_NASM_FLAGS   = -Ox -f win64 -g
>>>>>> 
>>>>>> -RELEASE_VS2012_X64_NASM_FLAGS   = -Ox -f win64
>>>>>> 
>>>>>> -NOOPT_VS2012_X64_NASM_FLAGS     = -O0 -f win64 -g
>>>>>> 
>>>>>> +  DEBUG_VS2012_X64_NASM_FLAGS   = -Ox -f win64 -g -DRODATA_SECTION_NAME=.rdata
>>>>>> 
>>>>>> +RELEASE_VS2012_X64_NASM_FLAGS   = -Ox -f win64 -DRODATA_SECTION_NAME=.rdata
>>>>>> 
>>>>>> +NOOPT_VS2012_X64_NASM_FLAGS     = -O0 -f win64 -g -DRODATA_SECTION_NAME=.rdata
>>>>>> 
>>>>>> 
>>>>>> 
>>>>>>   DEBUG_VS2012_X64_DLINK_FLAGS  = /NOLOGO /NODEFAULTLIB /IGNORE:4001 /OPT:REF /OPT:ICF=10 /MAP /ALIGN:32 /SECTION:.xdata,D /SECTION:.pdata,D /Machine:X64 /LTCG /DLL /ENTRY:$(IMAGE_ENTRY_POINT) /SUBSYSTEM:EFI_BOOT_SERVICE_DRIVER /SAFESEH:NO /BASE:0 /DRIVER /DEBUG
>>>>>> 
>>>>>> RELEASE_VS2012_X64_DLINK_FLAGS  = /NOLOGO /NODEFAULTLIB /IGNORE:4001 /IGNORE:4254 /OPT:REF /OPT:ICF=10 /MAP /ALIGN:32 /SECTION:.xdata,D /SECTION:.pdata,D /Machine:X64 /LTCG /DLL /ENTRY:$(IMAGE_ENTRY_POINT) /SUBSYSTEM:EFI_BOOT_SERVICE_DRIVER /SAFESEH:NO /BASE:0 /DRIVER /MERGE:.rdata=.data
>>>>>> 
>>>>>> @@ -1024,9 +1024,9 @@ NOOPT_VS2012x86_IA32_CC_FLAGS      = /nologo /arch:IA32 /c /WX /GS- /W4 /Gs32768
>>>>>> RELEASE_VS2012x86_IA32_ASM_FLAGS   = /nologo /c /WX /W3 /Cx /coff /Zd
>>>>>> 
>>>>>> NOOPT_VS2012x86_IA32_ASM_FLAGS     = /nologo /c /WX /W3 /Cx /coff /Zd /Zi
>>>>>> 
>>>>>> 
>>>>>> 
>>>>>> -  DEBUG_VS2012x86_IA32_NASM_FLAGS  = -Ox -f win32 -g
>>>>>> 
>>>>>> -RELEASE_VS2012x86_IA32_NASM_FLAGS  = -Ox -f win32
>>>>>> 
>>>>>> -NOOPT_VS2012x86_IA32_NASM_FLAGS    = -O0 -f win32 -g
>>>>>> 
>>>>>> +  DEBUG_VS2012x86_IA32_NASM_FLAGS  = -Ox -f win32 -g -DRODATA_SECTION_NAME=.rdata
>>>>>> 
>>>>>> +RELEASE_VS2012x86_IA32_NASM_FLAGS  = -Ox -f win32 -DRODATA_SECTION_NAME=.rdata
>>>>>> 
>>>>>> +NOOPT_VS2012x86_IA32_NASM_FLAGS    = -O0 -f win32 -g -DRODATA_SECTION_NAME=.rdata
>>>>>> 
>>>>>> 
>>>>>> 
>>>>>>   DEBUG_VS2012x86_IA32_DLINK_FLAGS = /NOLOGO /NODEFAULTLIB /IGNORE:4001 /OPT:REF /OPT:ICF=10 /MAP /ALIGN:32 /SECTION:.xdata,D /SECTION:.pdata,D /MACHINE:X86 /LTCG /DLL /ENTRY:$(IMAGE_ENTRY_POINT) /SUBSYSTEM:EFI_BOOT_SERVICE_DRIVER /SAFESEH:NO /BASE:0 /DRIVER /DEBUG
>>>>>> 
>>>>>> RELEASE_VS2012x86_IA32_DLINK_FLAGS = /NOLOGO /NODEFAULTLIB /IGNORE:4001 /IGNORE:4254 /OPT:REF /OPT:ICF=10 /MAP /ALIGN:32 /SECTION:.xdata,D /SECTION:.pdata,D /MACHINE:X86 /LTCG /DLL /ENTRY:$(IMAGE_ENTRY_POINT) /SUBSYSTEM:EFI_BOOT_SERVICE_DRIVER /SAFESEH:NO /BASE:0 /DRIVER /MERGE:.rdata=.data
>>>>>> 
>>>>>> @@ -1056,9 +1056,9 @@ NOOPT_VS2012x86_X64_CC_FLAGS       = /nologo /c /WX /GS- /W4 /Gs32768 /D UNICODE
>>>>>> RELEASE_VS2012x86_X64_ASM_FLAGS    = /nologo /c /WX /W3 /Cx /Zd
>>>>>> 
>>>>>> NOOPT_VS2012x86_X64_ASM_FLAGS      = /nologo /c /WX /W3 /Cx /Zd /Zi
>>>>>> 
>>>>>> 
>>>>>> 
>>>>>> -  DEBUG_VS2012x86_X64_NASM_FLAGS   = -Ox -f win64 -g
>>>>>> 
>>>>>> -RELEASE_VS2012x86_X64_NASM_FLAGS   = -Ox -f win64
>>>>>> 
>>>>>> -NOOPT_VS2012x86_X64_NASM_FLAGS     = -O0 -f win64 -g
>>>>>> 
>>>>>> +  DEBUG_VS2012x86_X64_NASM_FLAGS   = -Ox -f win64 -g -DRODATA_SECTION_NAME=.rdata
>>>>>> 
>>>>>> +RELEASE_VS2012x86_X64_NASM_FLAGS   = -Ox -f win64 -DRODATA_SECTION_NAME=.rdata
>>>>>> 
>>>>>> +NOOPT_VS2012x86_X64_NASM_FLAGS     = -O0 -f win64 -g -DRODATA_SECTION_NAME=.rdata
>>>>>> 
>>>>>> 
>>>>>> 
>>>>>>   DEBUG_VS2012x86_X64_DLINK_FLAGS  = /NOLOGO /NODEFAULTLIB /IGNORE:4001 /OPT:REF /OPT:ICF=10 /MAP /ALIGN:32 /SECTION:.xdata,D /SECTION:.pdata,D /Machine:X64 /LTCG /DLL /ENTRY:$(IMAGE_ENTRY_POINT) /SUBSYSTEM:EFI_BOOT_SERVICE_DRIVER /SAFESEH:NO /BASE:0 /DRIVER /DEBUG
>>>>>> 
>>>>>> RELEASE_VS2012x86_X64_DLINK_FLAGS  = /NOLOGO /NODEFAULTLIB /IGNORE:4001 /IGNORE:4254 /OPT:REF /OPT:ICF=10 /MAP /ALIGN:32 /SECTION:.xdata,D /SECTION:.pdata,D /Machine:X64 /LTCG /DLL /ENTRY:$(IMAGE_ENTRY_POINT) /SUBSYSTEM:EFI_BOOT_SERVICE_DRIVER /SAFESEH:NO /BASE:0 /DRIVER /MERGE:.rdata=.data
>>>>>> 
>>>>>> @@ -1138,9 +1138,9 @@ NOOPT_VS2013_IA32_CC_FLAGS        = /nologo /arch:IA32 /c /WX /GS- /W4 /Gs32768
>>>>>> RELEASE_VS2013_IA32_ASM_FLAGS     = /nologo /c /WX /W3 /Cx /coff /Zd
>>>>>> 
>>>>>> NOOPT_VS2013_IA32_ASM_FLAGS       = /nologo /c /WX /W3 /Cx /coff /Zd /Zi
>>>>>> 
>>>>>> 
>>>>>> 
>>>>>> -  DEBUG_VS2013_IA32_NASM_FLAGS    = -Ox -f win32 -g
>>>>>> 
>>>>>> -RELEASE_VS2013_IA32_NASM_FLAGS    = -Ox -f win32
>>>>>> 
>>>>>> -NOOPT_VS2013_IA32_NASM_FLAGS      = -O0 -f win32 -g
>>>>>> 
>>>>>> +  DEBUG_VS2013_IA32_NASM_FLAGS    = -Ox -f win32 -g -DRODATA_SECTION_NAME=.rdata
>>>>>> 
>>>>>> +RELEASE_VS2013_IA32_NASM_FLAGS    = -Ox -f win32 -DRODATA_SECTION_NAME=.rdata
>>>>>> 
>>>>>> +NOOPT_VS2013_IA32_NASM_FLAGS      = -O0 -f win32 -g -DRODATA_SECTION_NAME=.rdata
>>>>>> 
>>>>>> 
>>>>>> 
>>>>>>   DEBUG_VS2013_IA32_DLINK_FLAGS   = /NOLOGO /NODEFAULTLIB /IGNORE:4001 /OPT:REF /OPT:ICF=10 /MAP /ALIGN:32 /SECTION:.xdata,D /SECTION:.pdata,D /MACHINE:X86 /LTCG /DLL /ENTRY:$(IMAGE_ENTRY_POINT) /SUBSYSTEM:EFI_BOOT_SERVICE_DRIVER /SAFESEH:NO /BASE:0 /DRIVER /DEBUG
>>>>>> 
>>>>>> RELEASE_VS2013_IA32_DLINK_FLAGS   = /NOLOGO /NODEFAULTLIB /IGNORE:4001 /IGNORE:4254 /OPT:REF /OPT:ICF=10 /MAP /ALIGN:32 /SECTION:.xdata,D /SECTION:.pdata,D /MACHINE:X86 /LTCG /DLL /ENTRY:$(IMAGE_ENTRY_POINT) /SUBSYSTEM:EFI_BOOT_SERVICE_DRIVER /SAFESEH:NO /BASE:0 /DRIVER /MERGE:.rdata=.data
>>>>>> 
>>>>>> @@ -1170,9 +1170,9 @@ NOOPT_VS2013_X64_CC_FLAGS       = /nologo /c /WX /GS- /W4 /Gs32768 /D UNICODE /G
>>>>>> RELEASE_VS2013_X64_ASM_FLAGS    = /nologo /c /WX /W3 /Cx /Zd
>>>>>> 
>>>>>> NOOPT_VS2013_X64_ASM_FLAGS    = /nologo /c /WX /W3 /Cx /Zd /Zi
>>>>>> 
>>>>>> 
>>>>>> 
>>>>>> -  DEBUG_VS2013_X64_NASM_FLAGS   = -Ox -f win64 -g
>>>>>> 
>>>>>> -RELEASE_VS2013_X64_NASM_FLAGS   = -Ox -f win64
>>>>>> 
>>>>>> -NOOPT_VS2013_X64_NASM_FLAGS     = -O0 -f win64 -g
>>>>>> 
>>>>>> +  DEBUG_VS2013_X64_NASM_FLAGS   = -Ox -f win64 -g -DRODATA_SECTION_NAME=.rdata
>>>>>> 
>>>>>> +RELEASE_VS2013_X64_NASM_FLAGS   = -Ox -f win64 -DRODATA_SECTION_NAME=.rdata
>>>>>> 
>>>>>> +NOOPT_VS2013_X64_NASM_FLAGS     = -O0 -f win64 -g -DRODATA_SECTION_NAME=.rdata
>>>>>> 
>>>>>> 
>>>>>> 
>>>>>>   DEBUG_VS2013_X64_DLINK_FLAGS  = /NOLOGO /NODEFAULTLIB /IGNORE:4001 /OPT:REF /OPT:ICF=10 /MAP /ALIGN:32 /SECTION:.xdata,D /SECTION:.pdata,D /Machine:X64 /LTCG /DLL /ENTRY:$(IMAGE_ENTRY_POINT) /SUBSYSTEM:EFI_BOOT_SERVICE_DRIVER /SAFESEH:NO /BASE:0 /DRIVER /DEBUG
>>>>>> 
>>>>>> RELEASE_VS2013_X64_DLINK_FLAGS  = /NOLOGO /NODEFAULTLIB /IGNORE:4001 /IGNORE:4254 /OPT:REF /OPT:ICF=10 /MAP /ALIGN:32 /SECTION:.xdata,D /SECTION:.pdata,D /Machine:X64 /LTCG /DLL /ENTRY:$(IMAGE_ENTRY_POINT) /SUBSYSTEM:EFI_BOOT_SERVICE_DRIVER /SAFESEH:NO /BASE:0 /DRIVER /MERGE:.rdata=.data
>>>>>> 
>>>>>> @@ -1249,9 +1249,9 @@ NOOPT_VS2013x86_IA32_CC_FLAGS      = /nologo /arch:IA32 /c /WX /GS- /W4 /Gs32768
>>>>>> RELEASE_VS2013x86_IA32_ASM_FLAGS   = /nologo /c /WX /W3 /Cx /coff /Zd
>>>>>> 
>>>>>> NOOPT_VS2013x86_IA32_ASM_FLAGS     = /nologo /c /WX /W3 /Cx /coff /Zd /Zi
>>>>>> 
>>>>>> 
>>>>>> 
>>>>>> -  DEBUG_VS2013x86_IA32_NASM_FLAGS  = -Ox -f win32 -g
>>>>>> 
>>>>>> -RELEASE_VS2013x86_IA32_NASM_FLAGS  = -Ox -f win32
>>>>>> 
>>>>>> -NOOPT_VS2013x86_IA32_NASM_FLAGS    = -O0 -f win32 -g
>>>>>> 
>>>>>> +  DEBUG_VS2013x86_IA32_NASM_FLAGS  = -Ox -f win32 -g -DRODATA_SECTION_NAME=.rdata
>>>>>> 
>>>>>> +RELEASE_VS2013x86_IA32_NASM_FLAGS  = -Ox -f win32 -DRODATA_SECTION_NAME=.rdata
>>>>>> 
>>>>>> +NOOPT_VS2013x86_IA32_NASM_FLAGS    = -O0 -f win32 -g -DRODATA_SECTION_NAME=.rdata
>>>>>> 
>>>>>> 
>>>>>> 
>>>>>>   DEBUG_VS2013x86_IA32_DLINK_FLAGS = /NOLOGO /NODEFAULTLIB /IGNORE:4001 /OPT:REF /OPT:ICF=10 /MAP /ALIGN:32 /SECTION:.xdata,D /SECTION:.pdata,D /MACHINE:X86 /LTCG /DLL /ENTRY:$(IMAGE_ENTRY_POINT) /SUBSYSTEM:EFI_BOOT_SERVICE_DRIVER /SAFESEH:NO /BASE:0 /DRIVER /DEBUG
>>>>>> 
>>>>>> RELEASE_VS2013x86_IA32_DLINK_FLAGS = /NOLOGO /NODEFAULTLIB /IGNORE:4001 /IGNORE:4254 /OPT:REF /OPT:ICF=10 /MAP /ALIGN:32 /SECTION:.xdata,D /SECTION:.pdata,D /MACHINE:X86 /LTCG /DLL /ENTRY:$(IMAGE_ENTRY_POINT) /SUBSYSTEM:EFI_BOOT_SERVICE_DRIVER /SAFESEH:NO /BASE:0 /DRIVER /MERGE:.rdata=.data
>>>>>> 
>>>>>> @@ -1281,9 +1281,9 @@ NOOPT_VS2013x86_X64_CC_FLAGS       = /nologo /c /WX /GS- /W4 /Gs32768 /D UNICODE
>>>>>> RELEASE_VS2013x86_X64_ASM_FLAGS    = /nologo /c /WX /W3 /Cx /Zd
>>>>>> 
>>>>>> NOOPT_VS2013x86_X64_ASM_FLAGS      = /nologo /c /WX /W3 /Cx /Zd /Zi
>>>>>> 
>>>>>> 
>>>>>> 
>>>>>> -  DEBUG_VS2013x86_X64_NASM_FLAGS   = -Ox -f win64 -g
>>>>>> 
>>>>>> -RELEASE_VS2013x86_X64_NASM_FLAGS   = -Ox -f win64
>>>>>> 
>>>>>> -NOOPT_VS2013x86_X64_NASM_FLAGS     = -O0 -f win64 -g
>>>>>> 
>>>>>> +  DEBUG_VS2013x86_X64_NASM_FLAGS   = -Ox -f win64 -g -DRODATA_SECTION_NAME=.rdata
>>>>>> 
>>>>>> +RELEASE_VS2013x86_X64_NASM_FLAGS   = -Ox -f win64 -DRODATA_SECTION_NAME=.rdata
>>>>>> 
>>>>>> +NOOPT_VS2013x86_X64_NASM_FLAGS     = -O0 -f win64 -g -DRODATA_SECTION_NAME=.rdata
>>>>>> 
>>>>>> 
>>>>>> 
>>>>>>   DEBUG_VS2013x86_X64_DLINK_FLAGS  = /NOLOGO /NODEFAULTLIB /IGNORE:4001 /OPT:REF /OPT:ICF=10 /MAP /ALIGN:32 /SECTION:.xdata,D /SECTION:.pdata,D /Machine:X64 /LTCG /DLL /ENTRY:$(IMAGE_ENTRY_POINT) /SUBSYSTEM:EFI_BOOT_SERVICE_DRIVER /SAFESEH:NO /BASE:0 /DRIVER /DEBUG
>>>>>> 
>>>>>> RELEASE_VS2013x86_X64_DLINK_FLAGS  = /NOLOGO /NODEFAULTLIB /IGNORE:4001 /IGNORE:4254 /OPT:REF /OPT:ICF=10 /MAP /ALIGN:32 /SECTION:.xdata,D /SECTION:.pdata,D /Machine:X64 /LTCG /DLL /ENTRY:$(IMAGE_ENTRY_POINT) /SUBSYSTEM:EFI_BOOT_SERVICE_DRIVER /SAFESEH:NO /BASE:0 /DRIVER /MERGE:.rdata=.data
>>>>>> 
>>>>>> @@ -1364,9 +1364,9 @@ NOOPT_VS2015_IA32_CC_FLAGS        = /nologo /arch:IA32 /c /WX /GS- /W4 /Gs32768
>>>>>> RELEASE_VS2015_IA32_ASM_FLAGS     = /nologo /c /WX /W3 /Cx /coff /Zd
>>>>>> 
>>>>>> NOOPT_VS2015_IA32_ASM_FLAGS       = /nologo /c /WX /W3 /Cx /coff /Zd /Zi
>>>>>> 
>>>>>> 
>>>>>> 
>>>>>> -  DEBUG_VS2015_IA32_NASM_FLAGS    = -Ox -f win32 -g
>>>>>> 
>>>>>> -RELEASE_VS2015_IA32_NASM_FLAGS    = -Ox -f win32
>>>>>> 
>>>>>> -NOOPT_VS2015_IA32_NASM_FLAGS      = -O0 -f win32 -g
>>>>>> 
>>>>>> +  DEBUG_VS2015_IA32_NASM_FLAGS    = -Ox -f win32 -g -DRODATA_SECTION_NAME=.rdata
>>>>>> 
>>>>>> +RELEASE_VS2015_IA32_NASM_FLAGS    = -Ox -f win32 -DRODATA_SECTION_NAME=.rdata
>>>>>> 
>>>>>> +NOOPT_VS2015_IA32_NASM_FLAGS      = -O0 -f win32 -g -DRODATA_SECTION_NAME=.rdata
>>>>>> 
>>>>>> 
>>>>>> 
>>>>>>   DEBUG_VS2015_IA32_DLINK_FLAGS   = /NOLOGO /NODEFAULTLIB /IGNORE:4001 /OPT:REF /OPT:ICF=10 /MAP /ALIGN:32 /SECTION:.xdata,D /SECTION:.pdata,D /MACHINE:X86 /LTCG /DLL /ENTRY:$(IMAGE_ENTRY_POINT) /SUBSYSTEM:EFI_BOOT_SERVICE_DRIVER /SAFESEH:NO /BASE:0 /DRIVER /DEBUG
>>>>>> 
>>>>>> RELEASE_VS2015_IA32_DLINK_FLAGS   = /NOLOGO /NODEFAULTLIB /IGNORE:4001 /IGNORE:4254 /OPT:REF /OPT:ICF=10 /MAP /ALIGN:32 /SECTION:.xdata,D /SECTION:.pdata,D /MACHINE:X86 /LTCG /DLL /ENTRY:$(IMAGE_ENTRY_POINT) /SUBSYSTEM:EFI_BOOT_SERVICE_DRIVER /SAFESEH:NO /BASE:0 /DRIVER /MERGE:.rdata=.data
>>>>>> 
>>>>>> @@ -1396,9 +1396,9 @@ NOOPT_VS2015_X64_CC_FLAGS       = /nologo /c /WX /GS- /W4 /Gs32768 /D UNICODE /G
>>>>>> RELEASE_VS2015_X64_ASM_FLAGS    = /nologo /c /WX /W3 /Cx /Zd
>>>>>> 
>>>>>> NOOPT_VS2015_X64_ASM_FLAGS    = /nologo /c /WX /W3 /Cx /Zd /Zi
>>>>>> 
>>>>>> 
>>>>>> 
>>>>>> -  DEBUG_VS2015_X64_NASM_FLAGS   = -Ox -f win64 -g
>>>>>> 
>>>>>> -RELEASE_VS2015_X64_NASM_FLAGS   = -Ox -f win64
>>>>>> 
>>>>>> -NOOPT_VS2015_X64_NASM_FLAGS     = -O0 -f win64 -g
>>>>>> 
>>>>>> +  DEBUG_VS2015_X64_NASM_FLAGS   = -Ox -f win64 -g -DRODATA_SECTION_NAME=.rdata
>>>>>> 
>>>>>> +RELEASE_VS2015_X64_NASM_FLAGS   = -Ox -f win64 -DRODATA_SECTION_NAME=.rdata
>>>>>> 
>>>>>> +NOOPT_VS2015_X64_NASM_FLAGS     = -O0 -f win64 -g -DRODATA_SECTION_NAME=.rdata
>>>>>> 
>>>>>> 
>>>>>> 
>>>>>>   DEBUG_VS2015_X64_DLINK_FLAGS  = /NOLOGO /NODEFAULTLIB /IGNORE:4001 /OPT:REF /OPT:ICF=10 /MAP /ALIGN:32 /SECTION:.xdata,D /SECTION:.pdata,D /Machine:X64 /LTCG /DLL /ENTRY:$(IMAGE_ENTRY_POINT) /SUBSYSTEM:EFI_BOOT_SERVICE_DRIVER /SAFESEH:NO /BASE:0 /DRIVER /DEBUG
>>>>>> 
>>>>>> RELEASE_VS2015_X64_DLINK_FLAGS  = /NOLOGO /NODEFAULTLIB /IGNORE:4001 /IGNORE:4254 /OPT:REF /OPT:ICF=10 /MAP /ALIGN:32 /SECTION:.xdata,D /SECTION:.pdata,D /Machine:X64 /LTCG /DLL /ENTRY:$(IMAGE_ENTRY_POINT) /SUBSYSTEM:EFI_BOOT_SERVICE_DRIVER /SAFESEH:NO /BASE:0 /DRIVER /MERGE:.rdata=.data
>>>>>> 
>>>>>> @@ -1476,9 +1476,9 @@ NOOPT_VS2015x86_IA32_CC_FLAGS      = /nologo /arch:IA32 /c /WX /GS- /W4 /Gs32768
>>>>>> RELEASE_VS2015x86_IA32_ASM_FLAGS   = /nologo /c /WX /W3 /Cx /coff /Zd
>>>>>> 
>>>>>> NOOPT_VS2015x86_IA32_ASM_FLAGS     = /nologo /c /WX /W3 /Cx /coff /Zd /Zi
>>>>>> 
>>>>>> 
>>>>>> 
>>>>>> -  DEBUG_VS2015x86_IA32_NASM_FLAGS  = -Ox -f win32 -g
>>>>>> 
>>>>>> -RELEASE_VS2015x86_IA32_NASM_FLAGS  = -Ox -f win32
>>>>>> 
>>>>>> -NOOPT_VS2015x86_IA32_NASM_FLAGS    = -O0 -f win32 -g
>>>>>> 
>>>>>> +  DEBUG_VS2015x86_IA32_NASM_FLAGS  = -Ox -f win32 -g -DRODATA_SECTION_NAME=.rdata
>>>>>> 
>>>>>> +RELEASE_VS2015x86_IA32_NASM_FLAGS  = -Ox -f win32 -DRODATA_SECTION_NAME=.rdata
>>>>>> 
>>>>>> +NOOPT_VS2015x86_IA32_NASM_FLAGS    = -O0 -f win32 -g -DRODATA_SECTION_NAME=.rdata
>>>>>> 
>>>>>> 
>>>>>> 
>>>>>>   DEBUG_VS2015x86_IA32_DLINK_FLAGS = /NOLOGO /NODEFAULTLIB /IGNORE:4001 /OPT:REF /OPT:ICF=10 /MAP /ALIGN:32 /SECTION:.xdata,D /SECTION:.pdata,D /MACHINE:X86 /LTCG /DLL /ENTRY:$(IMAGE_ENTRY_POINT) /SUBSYSTEM:EFI_BOOT_SERVICE_DRIVER /SAFESEH:NO /BASE:0 /DRIVER /DEBUG
>>>>>> 
>>>>>> RELEASE_VS2015x86_IA32_DLINK_FLAGS = /NOLOGO /NODEFAULTLIB /IGNORE:4001 /IGNORE:4254 /OPT:REF /OPT:ICF=10 /MAP /ALIGN:32 /SECTION:.xdata,D /SECTION:.pdata,D /MACHINE:X86 /LTCG /DLL /ENTRY:$(IMAGE_ENTRY_POINT) /SUBSYSTEM:EFI_BOOT_SERVICE_DRIVER /SAFESEH:NO /BASE:0 /DRIVER /MERGE:.rdata=.data
>>>>>> 
>>>>>> @@ -1508,9 +1508,9 @@ NOOPT_VS2015x86_X64_CC_FLAGS       = /nologo /c /WX /GS- /W4 /Gs32768 /D UNICODE
>>>>>> RELEASE_VS2015x86_X64_ASM_FLAGS    = /nologo /c /WX /W3 /Cx /Zd
>>>>>> 
>>>>>> NOOPT_VS2015x86_X64_ASM_FLAGS      = /nologo /c /WX /W3 /Cx /Zd /Zi
>>>>>> 
>>>>>> 
>>>>>> 
>>>>>> -  DEBUG_VS2015x86_X64_NASM_FLAGS   = -Ox -f win64 -g
>>>>>> 
>>>>>> -RELEASE_VS2015x86_X64_NASM_FLAGS   = -Ox -f win64
>>>>>> 
>>>>>> -NOOPT_VS2015x86_X64_NASM_FLAGS     = -O0 -f win64 -g
>>>>>> 
>>>>>> +  DEBUG_VS2015x86_X64_NASM_FLAGS   = -Ox -f win64 -g -DRODATA_SECTION_NAME=.rdata
>>>>>> 
>>>>>> +RELEASE_VS2015x86_X64_NASM_FLAGS   = -Ox -f win64 -DRODATA_SECTION_NAME=.rdata
>>>>>> 
>>>>>> +NOOPT_VS2015x86_X64_NASM_FLAGS     = -O0 -f win64 -g -DRODATA_SECTION_NAME=.rdata
>>>>>> 
>>>>>> 
>>>>>> 
>>>>>>   DEBUG_VS2015x86_X64_DLINK_FLAGS  = /NOLOGO /NODEFAULTLIB /IGNORE:4001 /OPT:REF /OPT:ICF=10 /MAP /ALIGN:32 /SECTION:.xdata,D /SECTION:.pdata,D /Machine:X64 /LTCG /DLL /ENTRY:$(IMAGE_ENTRY_POINT) /SUBSYSTEM:EFI_BOOT_SERVICE_DRIVER /SAFESEH:NO /BASE:0 /DRIVER /DEBUG
>>>>>> 
>>>>>> RELEASE_VS2015x86_X64_DLINK_FLAGS  = /NOLOGO /NODEFAULTLIB /IGNORE:4001 /IGNORE:4254 /OPT:REF /OPT:ICF=10 /MAP /ALIGN:32 /SECTION:.xdata,D /SECTION:.pdata,D /Machine:X64 /LTCG /DLL /ENTRY:$(IMAGE_ENTRY_POINT) /SUBSYSTEM:EFI_BOOT_SERVICE_DRIVER /SAFESEH:NO /BASE:0 /DRIVER /MERGE:.rdata=.data
>>>>>> 
>>>>>> @@ -1586,9 +1586,9 @@ NOOPT_VS2017_IA32_CC_FLAGS      = /nologo /arch:IA32 /c /WX /GS- /W4 /Gs32768 /D
>>>>>> RELEASE_VS2017_IA32_ASM_FLAGS   = /nologo /c /WX /W3 /Cx /coff /Zd
>>>>>> 
>>>>>> NOOPT_VS2017_IA32_ASM_FLAGS     = /nologo /c /WX /W3 /Cx /coff /Zd /Zi
>>>>>> 
>>>>>> 
>>>>>> 
>>>>>> -  DEBUG_VS2017_IA32_NASM_FLAGS  = -Ox -f win32 -g
>>>>>> 
>>>>>> -RELEASE_VS2017_IA32_NASM_FLAGS  = -Ox -f win32
>>>>>> 
>>>>>> -NOOPT_VS2017_IA32_NASM_FLAGS    = -O0 -f win32 -g
>>>>>> 
>>>>>> +  DEBUG_VS2017_IA32_NASM_FLAGS  = -Ox -f win32 -g -DRODATA_SECTION_NAME=.rdata
>>>>>> 
>>>>>> +RELEASE_VS2017_IA32_NASM_FLAGS  = -Ox -f win32 -DRODATA_SECTION_NAME=.rdata
>>>>>> 
>>>>>> +NOOPT_VS2017_IA32_NASM_FLAGS    = -O0 -f win32 -g -DRODATA_SECTION_NAME=.rdata
>>>>>> 
>>>>>> 
>>>>>> 
>>>>>>   DEBUG_VS2017_IA32_DLINK_FLAGS = /NOLOGO /NODEFAULTLIB /IGNORE:4001 /OPT:REF /OPT:ICF=10 /MAP /ALIGN:32 /SECTION:.xdata,D /SECTION:.pdata,D /MACHINE:X86 /LTCG /DLL /ENTRY:$(IMAGE_ENTRY_POINT) /SUBSYSTEM:EFI_BOOT_SERVICE_DRIVER /SAFESEH:NO /BASE:0 /DRIVER /DEBUG
>>>>>> 
>>>>>> RELEASE_VS2017_IA32_DLINK_FLAGS = /NOLOGO /NODEFAULTLIB /IGNORE:4001 /IGNORE:4254 /OPT:REF /OPT:ICF=10 /MAP /ALIGN:32 /SECTION:.xdata,D /SECTION:.pdata,D /MACHINE:X86 /LTCG /DLL /ENTRY:$(IMAGE_ENTRY_POINT) /SUBSYSTEM:EFI_BOOT_SERVICE_DRIVER /SAFESEH:NO /BASE:0 /DRIVER /MERGE:.rdata=.data
>>>>>> 
>>>>>> @@ -1616,9 +1616,9 @@ NOOPT_VS2017_X64_CC_FLAGS       = /nologo /c /WX /GS- /W4 /Gs32768 /D UNICODE /G
>>>>>> RELEASE_VS2017_X64_ASM_FLAGS    = /nologo /c /WX /W3 /Cx /Zd
>>>>>> 
>>>>>> NOOPT_VS2017_X64_ASM_FLAGS      = /nologo /c /WX /W3 /Cx /Zd /Zi
>>>>>> 
>>>>>> 
>>>>>> 
>>>>>> -  DEBUG_VS2017_X64_NASM_FLAGS   = -Ox -f win64 -g
>>>>>> 
>>>>>> -RELEASE_VS2017_X64_NASM_FLAGS   = -Ox -f win64
>>>>>> 
>>>>>> -NOOPT_VS2017_X64_NASM_FLAGS     = -O0 -f win64 -g
>>>>>> 
>>>>>> +  DEBUG_VS2017_X64_NASM_FLAGS   = -Ox -f win64 -g -DRODATA_SECTION_NAME=.rdata
>>>>>> 
>>>>>> +RELEASE_VS2017_X64_NASM_FLAGS   = -Ox -f win64 -DRODATA_SECTION_NAME=.rdata
>>>>>> 
>>>>>> +NOOPT_VS2017_X64_NASM_FLAGS     = -O0 -f win64 -g -DRODATA_SECTION_NAME=.rdata
>>>>>> 
>>>>>> 
>>>>>> 
>>>>>>   DEBUG_VS2017_X64_DLINK_FLAGS  = /NOLOGO /NODEFAULTLIB /IGNORE:4001 /IGNORE:4281 /OPT:REF /OPT:ICF=10 /MAP /ALIGN:32 /SECTION:.xdata,D /SECTION:.pdata,D /Machine:X64 /LTCG /DLL /ENTRY:$(IMAGE_ENTRY_POINT) /SUBSYSTEM:EFI_BOOT_SERVICE_DRIVER /SAFESEH:NO /BASE:0 /DRIVER /DEBUG
>>>>>> 
>>>>>> RELEASE_VS2017_X64_DLINK_FLAGS  = /NOLOGO /NODEFAULTLIB /IGNORE:4001 /IGNORE:4281 /IGNORE:4254 /OPT:REF /OPT:ICF=10 /MAP /ALIGN:32 /SECTION:.xdata,D /SECTION:.pdata,D /Machine:X64 /LTCG /DLL /ENTRY:$(IMAGE_ENTRY_POINT) /SUBSYSTEM:EFI_BOOT_SERVICE_DRIVER /SAFESEH:NO /BASE:0 /DRIVER /MERGE:.rdata=.data
>>>>>> 
>>>>>> @@ -1744,9 +1744,9 @@ NOOPT_VS2019_IA32_CC_FLAGS      = /nologo /arch:IA32 /c /WX /GS- /W4 /Gs32768 /D
>>>>>> RELEASE_VS2019_IA32_ASM_FLAGS   = /nologo /c /WX /W3 /Cx /coff /Zd
>>>>>> 
>>>>>> NOOPT_VS2019_IA32_ASM_FLAGS     = /nologo /c /WX /W3 /Cx /coff /Zd /Zi
>>>>>> 
>>>>>> 
>>>>>> 
>>>>>> -  DEBUG_VS2019_IA32_NASM_FLAGS  = -Ox -f win32 -g
>>>>>> 
>>>>>> -RELEASE_VS2019_IA32_NASM_FLAGS  = -Ox -f win32
>>>>>> 
>>>>>> -NOOPT_VS2019_IA32_NASM_FLAGS    = -O0 -f win32 -g
>>>>>> 
>>>>>> +  DEBUG_VS2019_IA32_NASM_FLAGS  = -Ox -f win32 -g -DRODATA_SECTION_NAME=.rdata
>>>>>> 
>>>>>> +RELEASE_VS2019_IA32_NASM_FLAGS  = -Ox -f win32 -DRODATA_SECTION_NAME=.rdata
>>>>>> 
>>>>>> +NOOPT_VS2019_IA32_NASM_FLAGS    = -O0 -f win32 -g -DRODATA_SECTION_NAME=.rdata
>>>>>> 
>>>>>> 
>>>>>> 
>>>>>>   DEBUG_VS2019_IA32_DLINK_FLAGS = /NOLOGO /NODEFAULTLIB /IGNORE:4001 /OPT:REF /OPT:ICF=10 /MAP /ALIGN:32 /SECTION:.xdata,D /SECTION:.pdata,D /MACHINE:X86 /LTCG /DLL /ENTRY:$(IMAGE_ENTRY_POINT) /SUBSYSTEM:EFI_BOOT_SERVICE_DRIVER /SAFESEH:NO /BASE:0 /DRIVER /DEBUG
>>>>>> 
>>>>>> RELEASE_VS2019_IA32_DLINK_FLAGS = /NOLOGO /NODEFAULTLIB /IGNORE:4001 /IGNORE:4254 /OPT:REF /OPT:ICF=10 /MAP /ALIGN:32 /SECTION:.xdata,D /SECTION:.pdata,D /MACHINE:X86 /LTCG /DLL /ENTRY:$(IMAGE_ENTRY_POINT) /SUBSYSTEM:EFI_BOOT_SERVICE_DRIVER /SAFESEH:NO /BASE:0 /DRIVER /MERGE:.rdata=.data
>>>>>> 
>>>>>> @@ -1774,9 +1774,9 @@ NOOPT_VS2019_X64_CC_FLAGS       = /nologo /c /WX /GS- /W4 /Gs32768 /D UNICODE /G
>>>>>> RELEASE_VS2019_X64_ASM_FLAGS    = /nologo /c /WX /W3 /Cx /Zd
>>>>>> 
>>>>>> NOOPT_VS2019_X64_ASM_FLAGS      = /nologo /c /WX /W3 /Cx /Zd /Zi
>>>>>> 
>>>>>> 
>>>>>> 
>>>>>> -  DEBUG_VS2019_X64_NASM_FLAGS   = -Ox -f win64 -g
>>>>>> 
>>>>>> -RELEASE_VS2019_X64_NASM_FLAGS   = -Ox -f win64
>>>>>> 
>>>>>> -NOOPT_VS2019_X64_NASM_FLAGS     = -O0 -f win64 -g
>>>>>> 
>>>>>> +  DEBUG_VS2019_X64_NASM_FLAGS   = -Ox -f win64 -g -DRODATA_SECTION_NAME=.rdata
>>>>>> 
>>>>>> +RELEASE_VS2019_X64_NASM_FLAGS   = -Ox -f win64 -DRODATA_SECTION_NAME=.rdata
>>>>>> 
>>>>>> +NOOPT_VS2019_X64_NASM_FLAGS     = -O0 -f win64 -g -DRODATA_SECTION_NAME=.rdata
>>>>>> 
>>>>>> 
>>>>>> 
>>>>>>   DEBUG_VS2019_X64_DLINK_FLAGS  = /NOLOGO /NODEFAULTLIB /IGNORE:4001 /IGNORE:4281 /OPT:REF /OPT:ICF=10 /MAP /ALIGN:32 /SECTION:.xdata,D /SECTION:.pdata,D /Machine:X64 /LTCG /DLL /ENTRY:$(IMAGE_ENTRY_POINT) /SUBSYSTEM:EFI_BOOT_SERVICE_DRIVER /SAFESEH:NO /BASE:0 /DRIVER /DEBUG
>>>>>> 
>>>>>> RELEASE_VS2019_X64_DLINK_FLAGS  = /NOLOGO /NODEFAULTLIB /IGNORE:4001 /IGNORE:4281 /IGNORE:4254 /OPT:REF /OPT:ICF=10 /MAP /ALIGN:32 /SECTION:.xdata,D /SECTION:.pdata,D /Machine:X64 /LTCG /DLL /ENTRY:$(IMAGE_ENTRY_POINT) /SUBSYSTEM:EFI_BOOT_SERVICE_DRIVER /SAFESEH:NO /BASE:0 /DRIVER /MERGE:.rdata=.data
>>>>>> 
>>>>>> @@ -2030,7 +2030,7 @@ DEFINE GCC_PP_FLAGS                        = -E -x assembler-with-cpp -include A
>>>>>> *_GCC48_IA32_DLINK2_FLAGS         = DEF(GCC48_IA32_DLINK2_FLAGS)
>>>>>> 
>>>>>> *_GCC48_IA32_RC_FLAGS             = DEF(GCC_IA32_RC_FLAGS)
>>>>>> 
>>>>>> *_GCC48_IA32_OBJCOPY_FLAGS        =
>>>>>> 
>>>>>> -*_GCC48_IA32_NASM_FLAGS           = -f elf32
>>>>>> 
>>>>>> +*_GCC48_IA32_NASM_FLAGS           = -f elf32 -DRODATA_SECTION_NAME=.rodata
>>>>>> 
>>>>>> 
>>>>>> 
>>>>>>   DEBUG_GCC48_IA32_CC_FLAGS       = DEF(GCC48_IA32_CC_FLAGS) -Os
>>>>>> 
>>>>>> RELEASE_GCC48_IA32_CC_FLAGS       = DEF(GCC48_IA32_CC_FLAGS) -Os -Wno-unused-but-set-variable
>>>>>> 
>>>>>> @@ -2058,7 +2058,7 @@ RELEASE_GCC48_IA32_CC_FLAGS       = DEF(GCC48_IA32_CC_FLAGS) -Os -Wno-unused-but
>>>>>> *_GCC48_X64_DLINK2_FLAGS         = DEF(GCC48_X64_DLINK2_FLAGS)
>>>>>> 
>>>>>> *_GCC48_X64_RC_FLAGS             = DEF(GCC_X64_RC_FLAGS)
>>>>>> 
>>>>>> *_GCC48_X64_OBJCOPY_FLAGS        =
>>>>>> 
>>>>>> -*_GCC48_X64_NASM_FLAGS           = -f elf64
>>>>>> 
>>>>>> +*_GCC48_X64_NASM_FLAGS           = -f elf64 -DRODATA_SECTION_NAME=.rodata
>>>>>> 
>>>>>> 
>>>>>> 
>>>>>>   DEBUG_GCC48_X64_CC_FLAGS       = DEF(GCC48_X64_CC_FLAGS) -Os
>>>>>> 
>>>>>> RELEASE_GCC48_X64_CC_FLAGS       = DEF(GCC48_X64_CC_FLAGS) -Os -Wno-unused-but-set-variable
>>>>>> 
>>>>>> @@ -2170,7 +2170,7 @@ RELEASE_GCC48_AARCH64_CC_FLAGS   = DEF(GCC48_AARCH64_CC_FLAGS) -Wno-unused-but-s
>>>>>> *_GCC49_IA32_DLINK2_FLAGS         = DEF(GCC49_IA32_DLINK2_FLAGS)
>>>>>> 
>>>>>> *_GCC49_IA32_RC_FLAGS             = DEF(GCC_IA32_RC_FLAGS)
>>>>>> 
>>>>>> *_GCC49_IA32_OBJCOPY_FLAGS        =
>>>>>> 
>>>>>> -*_GCC49_IA32_NASM_FLAGS           = -f elf32
>>>>>> 
>>>>>> +*_GCC49_IA32_NASM_FLAGS           = -f elf32 -DRODATA_SECTION_NAME=.rodata
>>>>>> 
>>>>>> 
>>>>>> 
>>>>>>   DEBUG_GCC49_IA32_CC_FLAGS       = DEF(GCC49_IA32_CC_FLAGS) -Os
>>>>>> 
>>>>>> RELEASE_GCC49_IA32_CC_FLAGS       = DEF(GCC49_IA32_CC_FLAGS) -Os -Wno-unused-but-set-variable -Wno-unused-const-variable
>>>>>> 
>>>>>> @@ -2198,7 +2198,7 @@ RELEASE_GCC49_IA32_CC_FLAGS       = DEF(GCC49_IA32_CC_FLAGS) -Os -Wno-unused-but
>>>>>> *_GCC49_X64_DLINK2_FLAGS         = DEF(GCC49_X64_DLINK2_FLAGS)
>>>>>> 
>>>>>> *_GCC49_X64_RC_FLAGS             = DEF(GCC_X64_RC_FLAGS)
>>>>>> 
>>>>>> *_GCC49_X64_OBJCOPY_FLAGS        =
>>>>>> 
>>>>>> -*_GCC49_X64_NASM_FLAGS           = -f elf64
>>>>>> 
>>>>>> +*_GCC49_X64_NASM_FLAGS           = -f elf64 -DRODATA_SECTION_NAME=.rodata
>>>>>> 
>>>>>> 
>>>>>> 
>>>>>>   DEBUG_GCC49_X64_CC_FLAGS       = DEF(GCC49_X64_CC_FLAGS) -Os
>>>>>> 
>>>>>> RELEASE_GCC49_X64_CC_FLAGS       = DEF(GCC49_X64_CC_FLAGS) -Os -Wno-unused-but-set-variable -Wno-unused-const-variable
>>>>>> 
>>>>>> @@ -2316,7 +2316,7 @@ RELEASE_GCC49_AARCH64_DLINK_XIPFLAGS = -z common-page-size=0x20
>>>>>> *_GCC5_IA32_DLINK2_FLAGS         = DEF(GCC5_IA32_DLINK2_FLAGS) -no-pie
>>>>>> 
>>>>>> *_GCC5_IA32_RC_FLAGS             = DEF(GCC_IA32_RC_FLAGS)
>>>>>> 
>>>>>> *_GCC5_IA32_OBJCOPY_FLAGS        =
>>>>>> 
>>>>>> -*_GCC5_IA32_NASM_FLAGS           = -f elf32
>>>>>> 
>>>>>> +*_GCC5_IA32_NASM_FLAGS           = -f elf32 -DRODATA_SECTION_NAME=.rodata
>>>>>> 
>>>>>> 
>>>>>> 
>>>>>>   DEBUG_GCC5_IA32_CC_FLAGS       = DEF(GCC5_IA32_CC_FLAGS) -flto -Os
>>>>>> 
>>>>>>   DEBUG_GCC5_IA32_DLINK_FLAGS    = DEF(GCC5_IA32_X64_DLINK_FLAGS) -flto -Os -Wl,-m,elf_i386,--oformat=elf32-i386
>>>>>> 
>>>>>> @@ -2348,7 +2348,7 @@ RELEASE_GCC5_IA32_DLINK_FLAGS    = DEF(GCC5_IA32_X64_DLINK_FLAGS) -flto -Os -Wl,
>>>>>> *_GCC5_X64_DLINK2_FLAGS          = DEF(GCC5_X64_DLINK2_FLAGS)
>>>>>> 
>>>>>> *_GCC5_X64_RC_FLAGS              = DEF(GCC_X64_RC_FLAGS)
>>>>>> 
>>>>>> *_GCC5_X64_OBJCOPY_FLAGS         =
>>>>>> 
>>>>>> -*_GCC5_X64_NASM_FLAGS            = -f elf64
>>>>>> 
>>>>>> +*_GCC5_X64_NASM_FLAGS            = -f elf64 -DRODATA_SECTION_NAME=.rodata
>>>>>> 
>>>>>> 
>>>>>> 
>>>>>>   DEBUG_GCC5_X64_CC_FLAGS        = DEF(GCC5_X64_CC_FLAGS) -flto -DUSING_LTO -Os
>>>>>> 
>>>>>>   DEBUG_GCC5_X64_DLINK_FLAGS     = DEF(GCC5_X64_DLINK_FLAGS) -flto -Os
>>>>>> 
>>>>>> @@ -2589,7 +2589,7 @@ DEFINE CLANG38_ALL_CC_FLAGS         = DEF(GCC48_ALL_CC_FLAGS) DEF(CLANG38_WARNIN
>>>>>> *_CLANG38_IA32_ASM_FLAGS            = DEF(GCC5_ASM_FLAGS) -m32 -march=i386 DEF(CLANG38_IA32_TARGET)
>>>>>> 
>>>>>> *_CLANG38_IA32_RC_FLAGS             = DEF(GCC_IA32_RC_FLAGS)
>>>>>> 
>>>>>> *_CLANG38_IA32_OBJCOPY_FLAGS        =
>>>>>> 
>>>>>> -*_CLANG38_IA32_NASM_FLAGS           = -f elf32
>>>>>> 
>>>>>> +*_CLANG38_IA32_NASM_FLAGS           = -f elf32 -DRODATA_SECTION_NAME=.rodata
>>>>>> 
>>>>>> *_CLANG38_IA32_PP_FLAGS             = DEF(GCC_PP_FLAGS) DEF(CLANG38_IA32_TARGET)
>>>>>> 
>>>>>> *_CLANG38_IA32_ASLPP_FLAGS          = DEF(GCC_ASLPP_FLAGS) DEF(CLANG38_IA32_TARGET)
>>>>>> 
>>>>>> *_CLANG38_IA32_VFRPP_FLAGS          = DEF(GCC_VFRPP_FLAGS) DEF(CLANG38_IA32_TARGET)
>>>>>> 
>>>>>> @@ -2626,7 +2626,7 @@ NOOPT_CLANG38_IA32_DLINK2_FLAGS     = DEF(GCC5_IA32_DLINK2_FLAGS) -O0
>>>>>> *_CLANG38_X64_ASM_FLAGS            = DEF(GCC5_ASM_FLAGS) -m64 DEF(CLANG38_X64_TARGET)
>>>>>> 
>>>>>> *_CLANG38_X64_RC_FLAGS             = DEF(GCC_X64_RC_FLAGS)
>>>>>> 
>>>>>> *_CLANG38_X64_OBJCOPY_FLAGS        =
>>>>>> 
>>>>>> -*_CLANG38_X64_NASM_FLAGS           = -f elf64
>>>>>> 
>>>>>> +*_CLANG38_X64_NASM_FLAGS           = -f elf64 -DRODATA_SECTION_NAME=.rodata
>>>>>> 
>>>>>> *_CLANG38_X64_PP_FLAGS             = DEF(GCC_PP_FLAGS) DEF(CLANG38_X64_TARGET)
>>>>>> 
>>>>>> *_CLANG38_X64_ASLPP_FLAGS          = DEF(GCC_ASLPP_FLAGS) DEF(CLANG38_X64_TARGET)
>>>>>> 
>>>>>> *_CLANG38_X64_VFRPP_FLAGS          = DEF(GCC_VFRPP_FLAGS) DEF(CLANG38_X64_TARGET)
>>>>>> 
>>>>>> @@ -2777,7 +2777,7 @@ DEFINE CLANGPDB_ALL_CC_FLAGS         = DEF(GCC48_ALL_CC_FLAGS) DEF(CLANGPDB_WARN
>>>>>> *_CLANGPDB_IA32_ASLCC_FLAGS          = DEF(GCC_ASLCC_FLAGS) -m32 -fno-lto DEF(CLANGPDB_IA32_TARGET)
>>>>>> 
>>>>>> *_CLANGPDB_IA32_ASM_FLAGS            = DEF(GCC_ASM_FLAGS) -m32 -march=i386 DEF(CLANGPDB_IA32_TARGET)
>>>>>> 
>>>>>> *_CLANGPDB_IA32_OBJCOPY_FLAGS        =
>>>>>> 
>>>>>> -*_CLANGPDB_IA32_NASM_FLAGS           = -f win32
>>>>>> 
>>>>>> +*_CLANGPDB_IA32_NASM_FLAGS           = -f win32 -DRODATA_SECTION_NAME=.rdata
>>>>>> 
>>>>>> *_CLANGPDB_IA32_PP_FLAGS             = DEF(GCC_PP_FLAGS) DEF(CLANGPDB_IA32_TARGET)
>>>>>> 
>>>>>> *_CLANGPDB_IA32_ASLPP_FLAGS          = DEF(GCC_ASLPP_FLAGS) DEF(CLANGPDB_IA32_TARGET)
>>>>>> 
>>>>>> *_CLANGPDB_IA32_VFRPP_FLAGS          = DEF(GCC_VFRPP_FLAGS) DEF(CLANGPDB_IA32_TARGET)
>>>>>> 
>>>>>> @@ -2811,7 +2811,7 @@ NOOPT_CLANGPDB_IA32_DLINK2_FLAGS     =
>>>>>> *_CLANGPDB_X64_ASLCC_FLAGS          = DEF(GCC_ASLCC_FLAGS) -m64 -fno-lto DEF(CLANGPDB_X64_TARGET)
>>>>>> 
>>>>>> *_CLANGPDB_X64_ASM_FLAGS            = DEF(GCC_ASM_FLAGS) -m64 DEF(CLANGPDB_X64_TARGET)
>>>>>> 
>>>>>> *_CLANGPDB_X64_OBJCOPY_FLAGS        =
>>>>>> 
>>>>>> -*_CLANGPDB_X64_NASM_FLAGS           = -f win64
>>>>>> 
>>>>>> +*_CLANGPDB_X64_NASM_FLAGS           = -f win64 -DRODATA_SECTION_NAME=.rdata
>>>>>> 
>>>>>> *_CLANGPDB_X64_PP_FLAGS             = DEF(GCC_PP_FLAGS) DEF(CLANGPDB_X64_TARGET)
>>>>>> 
>>>>>> *_CLANGPDB_X64_ASLPP_FLAGS          = DEF(GCC_ASLPP_FLAGS) DEF(CLANGPDB_X64_TARGET)
>>>>>> 
>>>>>> *_CLANGPDB_X64_VFRPP_FLAGS          = DEF(GCC_VFRPP_FLAGS) DEF(CLANGPDB_X64_TARGET)
>>>>>> 
>>>>>> @@ -2878,7 +2878,7 @@ DEFINE CLANGDWARF_X64_DLINK2_FLAGS        = -Wl,--defsym=PECOFF_HEADER_SIZE=0x22
>>>>>> *_CLANGDWARF_IA32_ASM_FLAGS            = DEF(GCC5_ASM_FLAGS) -m32 -march=i386 DEF(CLANG38_IA32_TARGET)
>>>>>> 
>>>>>> *_CLANGDWARF_IA32_RC_FLAGS             = DEF(GCC_IA32_RC_FLAGS)
>>>>>> 
>>>>>> *_CLANGDWARF_IA32_OBJCOPY_FLAGS        =
>>>>>> 
>>>>>> -*_CLANGDWARF_IA32_NASM_FLAGS           = -f elf32
>>>>>> 
>>>>>> +*_CLANGDWARF_IA32_NASM_FLAGS           = -f elf32 -DRODATA_SECTION_NAME=.rodata
>>>>>> 
>>>>>> *_CLANGDWARF_IA32_PP_FLAGS             = DEF(GCC_PP_FLAGS) DEF(CLANG38_IA32_TARGET)
>>>>>> 
>>>>>> *_CLANGDWARF_IA32_ASLPP_FLAGS          = DEF(GCC_ASLPP_FLAGS) DEF(CLANG38_IA32_TARGET)
>>>>>> 
>>>>>> *_CLANGDWARF_IA32_VFRPP_FLAGS          = DEF(GCC_VFRPP_FLAGS) DEF(CLANG38_IA32_TARGET)
>>>>>> 
>>>>>> @@ -2914,7 +2914,7 @@ NOOPT_CLANGDWARF_IA32_DLINK2_FLAGS     = DEF(CLANGDWARF_IA32_DLINK2_FLAGS) -O0 -
>>>>>> *_CLANGDWARF_X64_ASM_FLAGS            = DEF(GCC5_ASM_FLAGS) -m64 DEF(CLANG38_X64_TARGET)
>>>>>> 
>>>>>> *_CLANGDWARF_X64_RC_FLAGS             = DEF(GCC_X64_RC_FLAGS)
>>>>>> 
>>>>>> *_CLANGDWARF_X64_OBJCOPY_FLAGS        =
>>>>>> 
>>>>>> -*_CLANGDWARF_X64_NASM_FLAGS           = -f elf64
>>>>>> 
>>>>>> +*_CLANGDWARF_X64_NASM_FLAGS           = -f elf64 -DRODATA_SECTION_NAME=.rodata
>>>>>> 
>>>>>> *_CLANGDWARF_X64_PP_FLAGS             = DEF(GCC_PP_FLAGS) DEF(CLANG38_X64_TARGET)
>>>>>> 
>>>>>> *_CLANGDWARF_X64_ASLPP_FLAGS          = DEF(GCC_ASLPP_FLAGS) DEF(CLANG38_X64_TARGET)
>>>>>> 
>>>>>> *_CLANGDWARF_X64_VFRPP_FLAGS          = DEF(GCC_VFRPP_FLAGS) DEF(CLANG38_X64_TARGET)
>>>>>> 
>>>>>> @@ -2985,7 +2985,7 @@ RELEASE_XCODE5_IA32_DLINK_FLAGS      = -arch i386 -u _$(IMAGE_ENTRY_POINT) -e _$
>>>>>>   DEBUG_XCODE5_IA32_ASM_FLAGS  = -arch i386 -g
>>>>>> 
>>>>>>   NOOPT_XCODE5_IA32_ASM_FLAGS  = -arch i386 -g
>>>>>> 
>>>>>> RELEASE_XCODE5_IA32_ASM_FLAGS  = -arch i386
>>>>>> 
>>>>>> -      *_XCODE5_IA32_NASM_FLAGS = -f macho32
>>>>>> 
>>>>>> +      *_XCODE5_IA32_NASM_FLAGS = -f macho32 -DRODATA_SECTION_NAME=.rodata
>>>>>> 
>>>>>> 
>>>>>> 
>>>>> 
>>>>> An EFI Mach-O file does not contain a .rodata section. A Mach-O contains a __DATA segment that is broken up into sections. For a typical EFI image there are __const, __data, __bss sections in the __DATA segment [1].
>>>> 
>>>> Yes, and ".rodata" is almost a synonym for "__DATA,__const", with a small exception [1]. Maybe it'd be clearer if the macro was renamed to "NASM_RODATA_SECTION_NAME", to indicate this is not just a "raw" name, but NASM gives it a semantic meaning?
>>>> 
>>>>> 
>>>>> The mtoc [2] tool used to convert mach-O to PE/COFF converts the entire __DATA segment (__const, __data, and __bss) into the .data section. Thus adding any kind of new data section is a no-op at best.
>>>> 
>>>> This is a part I missed, because I do not have an Xcode toolchain at hand, so thanks for investigating. However this, in my opinion, is a flaw with Mach-O/mtoc and not with my patch. It seems like the only difference between __TEXT,__const and __DATA,__const is whether the data is targeted by a relocation or not. Such a concept does not exist for PE/COFF (and I think not even for ELF, but I'm not too familiar with it), thus the logical PE/COFF section __DATA,__const should be merged into is .rdata (and .rdata may or may not be merged into .text in an earlier step, I assume transitivity). I could change the macro definition to explicitly declare __TEXT,__const, but that would still put the compiler-emitted data in the wrong section. Does Xcode provide anything remotely similar to GNU linker scripts which we can use to move the section?
>>>> 
>>>> Please also note that .rodata is used for Xcode-based toolchains already (in fact, all toolchains, and this is the issue), I'm not regressing anything. I just expected it to work fine as-is. This patch mainly fixed PE/COFF-based toolchains, which get both .rdata from the compiler and .rodata with RX permissions from NASM, because ".rodata" only has a semantic meaning for ELF and Mach-O outputs, but not for PE/COFF.
>>>> 
>>>>> 
>>>>> If you want something to be read only for Xcode/clang you are better off putting it in the __TEXT section [3]. The __TEXT section is read only and for X64 can not even contain relocations.
>>>> 
>>>> Well, this kind of is an issue. We would need to introduce an arbitrary constraint on the relocation part that holds only for Xcode-based toolchains. Does the compiler emit an error when data in __TEXT,__const is targeted by a relocation?
>>> 
>>> The Xcode linker emits a fatal error on X64 for a relocation in the __TEXT section, everything needs to be RIP relative and the compiler does that for free. We generally only run into this for hand coded assembler and the fix is to use RIP relative addressing in the assembly.
>>> 
>>>> Also see above regarding compiler-emitted __DATA,__const.
>>>> 
>>> 
>>> OK so the current nasm `SECTION .rodata`[1]  gets mapped to __TEXT,__const[2] for Xcode clang, and this is done by nasm (I dumped the object file). GenFw and mtoc only run on executables, also they tend to be conservative as they need to keep the layout the same and the relative layout between sections the same, but in this case it is nasm placing the data in the text section.
>>> 
>>> So what I’d like to see in the patch is to define RODATA_SECTION_NAME to match what is actually happening. So for XCODE that would be `__TEXT,__const` not `.rodata`. We should double check what is happening for ELF on x86, ARM, RiskV, etc. and do the same thing. I assume all the tools that generate PE/COFF directly are good with .rodata? I think it is likely as simple as dumping the EFL object file in objdump or gdb for the given toolchain (like my Xcode example).
>>> 
>>> TL;DR It looks to me like nasm does some SECTION translations under the hood to make code portable, and I’d like to make sure we capture those in the new NASM_RODATA_SECTION_NAME. If some one is doing a security review having NASM_RODATA_SECTION_NAME is going to imply that a .rodata section is being used by that specific toolchain, and I think that is much worse than the current “magic” behavior in nasm. We are much better off explaining what is really happening, since it is not very obvious.
>>> 
>>> [1] https://github.com/tianocore/edk2/blob/master/UefiCpuPkg/Library/BaseUefiCpuLib/X64/InitializeFpu.nasm#L14 <https://github.com/tianocore/edk2/blob/master/UefiCpuPkg/Library/BaseUefiCpuLib/X64/InitializeFpu.nasm#L14>
>>> 
>>> [2] $otool -V -s __TEXT __constBuild/OvmfX64/DEBUG_XCODE5/X64/UefiCpuPkg/Library/BaseUefiCpuLib/BaseUefiCpuLib/OUTPUT/X64/InitializeFpu.obj
>>> Build//OvmfX64/DEBUG_XCODE5/X64/UefiCpuPkg/Library/BaseUefiCpuLib/BaseUefiCpuLib/OUTPUT/X64/InitializeFpu.obj:
>>> Contents of (__TEXT,__const) section
>>> 0000001d  7f 03 80 1f 00 00
>>> 
>>> $ otool -l Build//OvmfX64/DEBUG_XCODE5/X64/UefiCpuPkg/Library/BaseUefiCpuLib/BaseUefiCpuLib/OUTPUT/X64/InitializeFpu.obj
>>> Build/OvmfX64/DEBUG_XCODE5/X64/UefiCpuPkg/Library/BaseUefiCpuLib/BaseUefiCpuLib/OUTPUT/X64/InitializeFpu.obj:
>>> Load command 0
>>>       cmd LC_SEGMENT_64
>>>   cmdsize 232
>>>   segname
>>>    vmaddr 0x0000000000000000
>>>    vmsize 0x0000000000000026
>>>   fileoff 288
>>>  filesize 38
>>>   maxprot 0x00000007
>>>  initprot 0x00000007
>>>    nsects 2
>>>     flags 0x0
>>> Section
>>>   sectname __text
>>>    segname __TEXT
>>>       addr 0x0000000000000000
>>>       size 0x000000000000001d
>>>     offset 288
>>>      align 2^0 (1)
>>>     reloff 328
>>>     nreloc 2
>>>      flags 0x80000500
>>>  reserved1 0
>>>  reserved2 0
>>> Section
>>>   sectname __const
>>>    segname __TEXT
>>>       addr 0x000000000000001d
>>>       size 0x0000000000000006
>>>     offset 320
>>>      align 2^0 (1)
>>>     reloff 0
>>>     nreloc 0
>>>      flags 0x00000000
>>>  reserved1 0
>>>  reserved2 0
>>> Load command 1
>>>      cmd LC_SYMTAB
>>>  cmdsize 24
>>>   symoff 344
>>>    nsyms 3
>>>   stroff 392
>>>  strsize 63
>>> 
>>> Thanks,
>>> 
>>> Andrew Fish
>>> 
>>> 
>>>> Thanks for your notes and insight!
>>>> 
>>>> Best regards,
>>>> Marvin
>>>> 
>>>> 
>>>> [1]
>>>> "For compatibility with other Unix platforms, the following standard names are also supported:
>>>> [...]
>>>> .rodata  = __DATA,__const data
>>>> [...]
>>>> If the .rodata section contains no relocations, it is instead put into the __TEXT,__const section unless this section has already been specified explicitly."
>>>> https://www.nasm.us/xdoc/2.13.01/html/nasmdoc7.html <https://www.nasm.us/xdoc/2.13.01/html/nasmdoc7.html>
>>>> 
>>>>> 
>>>>> [1] otool -lh DxeCore.dll
>>>>> ...
>>>>> Load command 1
>>>>>       cmd LC_SEGMENT_64
>>>>>   cmdsize 312
>>>>>   segname __DATA
>>>>>    vmaddr 0x000000000002b000
>>>>>    vmsize 0x0000000000147000
>>>>>   fileoff 180224
>>>>>  filesize 8192
>>>>>   maxprot 0x00000003
>>>>>  initprot 0x00000003
>>>>>    nsects 3
>>>>>     flags 0x0
>>>>> Section
>>>>>   sectname __const
>>>>>    segname __DATA
>>>>>       addr 0x000000000002b000
>>>>>       size 0x0000000000000718
>>>>>     offset 180224
>>>>>      align 2^4 (16)
>>>>>     reloff 0
>>>>>     nreloc 0
>>>>>      flags 0x00000000
>>>>>  reserved1 0
>>>>>  reserved2 0
>>>>> Section
>>>>>   sectname __data
>>>>>    segname __DATA
>>>>>       addr 0x000000000002b720
>>>>>       size 0x00000000000014f0
>>>>>     offset 182048
>>>>>      align 2^4 (16)
>>>>>     reloff 0
>>>>>     nreloc 0
>>>>>      flags 0x00000000
>>>>>  reserved1 0
>>>>>  reserved2 0
>>>>> Section
>>>>>   sectname __bss
>>>>>    segname __DATA
>>>>>       addr 0x000000000002cc10
>>>>>       size 0x0000000000144e11
>>>>>     offset 0
>>>>>      align 2^4 (16)
>>>>>     reloff 0
>>>>>     nreloc 0
>>>>>      flags 0x00000001
>>>>>  reserved1 0
>>>>>  reserved2 0
>>>>>>>>>> 
>>>>> [2] https://opensource.apple.com/source/cctools/cctools-698/efitools/mtoc.c.auto.html <https://opensource.apple.com/source/cctools/cctools-698/efitools/mtoc.c.auto.html> <https://opensource.apple.com/source/cctools/cctools-698/efitools/mtoc.c.auto.html <https://opensource.apple.com/source/cctools/cctools-698/efitools/mtoc.c.auto.html>> 
>>>>> 
>>>>> [3] otool more output…
>>>>> Load command 0
>>>>>       cmd LC_SEGMENT_64
>>>>>   cmdsize 392
>>>>>   segname __TEXT
>>>>>    vmaddr 0x0000000000000240
>>>>>    vmsize 0x00000000000296c0
>>>>>   fileoff 1184
>>>>>  filesize 169664
>>>>>   maxprot 0x00000005
>>>>>  initprot 0x00000005
>>>>>    nsects 4
>>>>>     flags 0x0
>>>>> Section
>>>>>   sectname __text
>>>>>    segname __TEXT
>>>>>       addr 0x0000000000000240
>>>>>       size 0x000000000002489f
>>>>>     offset 1184
>>>>>      align 2^3 (8)
>>>>>     reloff 0
>>>>>     nreloc 0
>>>>>      flags 0x80000400
>>>>>  reserved1 0
>>>>>  reserved2 0
>>>>> Section
>>>>>   sectname __cstring
>>>>>    segname __TEXT
>>>>>       addr 0x0000000000024ae0
>>>>>       size 0x000000000000496d
>>>>>     offset 150848
>>>>>      align 2^4 (16)
>>>>>     reloff 0
>>>>>     nreloc 0
>>>>>      flags 0x00000002
>>>>>  reserved1 0
>>>>>  reserved2 0
>>>>> Section
>>>>>   sectname __ustring
>>>>>    segname __TEXT
>>>>>       addr 0x000000000002944e
>>>>>       size 0x0000000000000048
>>>>>     offset 169646
>>>>>      align 2^1 (2)
>>>>>     reloff 0
>>>>>     nreloc 0
>>>>>      flags 0x00000000
>>>>>  reserved1 0
>>>>>  reserved2 0
>>>>> Section
>>>>>   sectname __const
>>>>>    segname __TEXT
>>>>>       addr 0x00000000000294a0
>>>>>       size 0x0000000000000448
>>>>>     offset 169728
>>>>>      align 2^4 (16)
>>>>>     reloff 0
>>>>>     nreloc 0
>>>>>      flags 0x00000000
>>>>>  reserved1 0
>>>>>  reserved2 0
>>>>> 
>>>>> Thanks,
>>>>> 
>>>>> Andrew Fish
>>>>> 
>>>>>> 
>>>>>> 
>>>>>>   DEBUG_XCODE5_IA32_CC_FLAGS   = -arch i386 -c -g -Os       -Wall -Werror -include AutoGen.h -funsigned-char -fno-stack-protector -fno-builtin -fshort-wchar -fasm-blocks -mdynamic-no-pic -mno-implicit-float -mms-bitfields -msoft-float -Wno-unused-parameter -Wno-missing-braces -Wno-missing-field-initializers -Wno-tautological-compare -Wno-sign-compare -Wno-varargs -ftrap-function=undefined_behavior_has_been_optimized_away_by_clang $(PLATFORM_FLAGS)
>>>>>> 
>>>>>> @@ -3003,7 +3003,7 @@ RELEASE_XCODE5_X64_DLINK_FLAGS      = -arch x86_64 -u _$(IMAGE_ENTRY_POINT) -e _
>>>>>>   DEBUG_XCODE5_X64_ASM_FLAGS  = -arch x86_64 -g
>>>>>> 
>>>>>>   NOOPT_XCODE5_X64_ASM_FLAGS  = -arch x86_64 -g
>>>>>> 
>>>>>> RELEASE_XCODE5_X64_ASM_FLAGS  = -arch x86_64
>>>>>> 
>>>>>> -      *_XCODE5_X64_NASM_FLAGS = -f macho64
>>>>>> 
>>>>>> +      *_XCODE5_X64_NASM_FLAGS = -f macho64 -DRODATA_SECTION_NAME=.rodata
>>>>>> 
>>>>>> *_XCODE5_*_PP_FLAGS         = -E -x assembler-with-cpp -include AutoGen.h
>>>>>> 
>>>>>> *_XCODE5_*_VFRPP_FLAGS      = -x c -E -P -DVFRCOMPILE -include $(MODULE_NAME)StrDefs.h
>>>>>> 
>>>>>> 
>>>>>> 
>>>>>> -- 
>>>>>> 2.31.1
>>>>>> 
>>>>>> 
>>>>>> 
>>>>>> 
>>>>>> 
>>>>>> 
>>>>>> 
>>>> 
>>> 
>> 
> 
> 
> 
> 
> 
> 



-=-=-=-=-=-=-=-=-=-=-=-
Groups.io Links: You receive all messages sent to this group.
View/Reply Online (#79061): https://edk2.groups.io/g/devel/message/79061
Mute This Topic: https://groups.io/mt/84764902/1813853
Group Owner: devel+owner at edk2.groups.io
Unsubscribe: https://edk2.groups.io/g/devel/unsub [edk2-devel-archive at redhat.com]
-=-=-=-=-=-=-=-=-=-=-=-






More information about the edk2-devel-archive mailing list