> On Aug 10, 2021, at 2:30 PM, Marvin Häuser <mhaeu...@posteo.de> wrote:
>
> On 10/08/2021 21:35, Andrew Fish via groups.io wrote:
>>
>>
>>> On Aug 10, 2021, at 1:27 AM, Marvin Häuser <mhaeu...@posteo.de
>>> <mailto:mhaeu...@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 <mhaeu...@posteo.de
>>>>> <mailto:mhaeu...@posteo.de> <mailto:mhaeu...@posteo.de
>>>>> <mailto:mhaeu...@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.f...@intel.com <mailto:bob.c.f...@intel.com>
>>>>> <mailto:bob.c.f...@intel.com <mailto:bob.c.f...@intel.com>>>
>>>>> Cc: Liming Gao <gaolim...@byosoft.com.cn
>>>>> <mailto:gaolim...@byosoft.com.cn> <mailto:gaolim...@byosoft.com.cn
>>>>> <mailto:gaolim...@byosoft.com.cn>>>
>>>>> Cc: Yuwei Chen <yuwei.c...@intel.com <mailto:yuwei.c...@intel.com>
>>>>> <mailto:yuwei.c...@intel.com <mailto:yuwei.c...@intel.com>>>
>>>>> Cc: Vitaly Cheptsov <vit9...@protonmail.com
>>>>> <mailto:vit9...@protonmail.com> <mailto:vit9...@protonmail.com
>>>>> <mailto:vit9...@protonmail.com>>>
>>>>> Signed-off-by: Marvin Häuser <mhaeu...@posteo.de
>>>>> <mailto:mhaeu...@posteo.de> <mailto:mhaeu...@posteo.de
>>>>> <mailto:mhaeu...@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.
>
> Good, thanks for confirming! Still, this would be a bit of an awkward
> constraints for Xcode only.
>
It is a physics problem we can’t fix, so I end up writing some patches to fix
other peoples assembler from time to time. The CI building with Xcode helps
with this a lot.
>>
>>> 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 can do that, but what to do about compiler-emitted __DATA,__const?
Sorry I don’t understand what RODATA_SECTION_NAME has to do with the compiler?
I thought it was for nasm?
>
>> 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?
>
> They are not, that is the whole point of the patch in its current shape.
> .rodata is valid for ELF and Mach-O, PE/COFF needs .rdata.
>
>> 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.
>
> I feel like I'm too tired to get the point. Do you mean you want comments
> whenever this section name is used? Or comments in tools_def?
>
I think I’d settle for a more descriptive commit comment that better defines
what the define means like I mentioned in the other mail.
Thanks,
Andrew Fish
> Best regards,
> Marvin
>
>>
>> [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>
>>>>
>>>>
>>>> [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 (#79062): https://edk2.groups.io/g/devel/message/79062
Mute This Topic: https://groups.io/mt/84764902/21656
Group Owner: devel+ow...@edk2.groups.io
Unsubscribe: https://edk2.groups.io/g/devel/unsub [arch...@mail-archive.com]
-=-=-=-=-=-=-=-=-=-=-=-