From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from ma1-aaemail-dr-lapp01.apple.com (ma1-aaemail-dr-lapp01.apple.com [17.171.2.60]) by mx.groups.io with SMTP id smtpd.web09.236.1628624991220549450 for ; Tue, 10 Aug 2021 12:49:51 -0700 Authentication-Results: mx.groups.io; dkim=pass header.i=@apple.com header.s=20180706 header.b=Qu6h599G; spf=pass (domain: apple.com, ip: 17.171.2.60, mailfrom: afish@apple.com) Received: from pps.filterd (ma1-aaemail-dr-lapp01.apple.com [127.0.0.1]) by ma1-aaemail-dr-lapp01.apple.com (8.16.0.42/8.16.0.42) with SMTP id 17AJmJIR044014; Tue, 10 Aug 2021 12:49:46 -0700 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=apple.com; h=from : message-id : content-type : mime-version : subject : date : in-reply-to : cc : to : references; s=20180706; bh=Q/KXyFUq373vWiYEk/1+NaNWi2gkxiP3Ti7aMgrJZ7k=; b=Qu6h599GrJWUCzIj3v4AQLvjhSg6TxPIZMXkEbOEOBAL/MuIu1l9Qs/0D1+L11Tkqv4G mMO7kXo7GZ0Jv42WKaruXln0SV+xcSuwHCMJwhK7hjZSoIyLN/f4epo1z9bd0mYyps0L F+gye5gtOoG2nDBkxowHexAzN3sKAGQV52lgbxczWg7mERDGBhvEeVOnkHcM1JmJLeLP gTvf5LtaLS/ni3vG3g7EoG3kNNyAgpNT9sbULG+f4d29gJOaXvhVmh7OaUJCrfa5Vv+T QGp3cPm3CC0w5v7cTGu681ELwSGSqR/x0AS4BzPTE9NcK+uUbMed6ptfX024EgICjIte iA== Received: from rn-mailsvcp-mta-lapp01.rno.apple.com (rn-mailsvcp-mta-lapp01.rno.apple.com [10.225.203.149]) by ma1-aaemail-dr-lapp01.apple.com with ESMTP id 3a9ru436w5-9 (version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128 verify=NO); Tue, 10 Aug 2021 12:49:45 -0700 Received: from rn-mailsvcp-mmp-lapp03.rno.apple.com (rn-mailsvcp-mmp-lapp03.rno.apple.com [17.179.253.16]) by rn-mailsvcp-mta-lapp01.rno.apple.com (Oracle Communications Messaging Server 8.1.0.9.20210415 64bit (built Apr 15 2021)) with ESMTPS id <0QXN009SQ32WAB70@rn-mailsvcp-mta-lapp01.rno.apple.com>; Tue, 10 Aug 2021 12:49:44 -0700 (PDT) Received: from process_milters-daemon.rn-mailsvcp-mmp-lapp03.rno.apple.com by rn-mailsvcp-mmp-lapp03.rno.apple.com (Oracle Communications Messaging Server 8.1.0.9.20210415 64bit (built Apr 15 2021)) id <0QXN000002V0J600@rn-mailsvcp-mmp-lapp03.rno.apple.com>; Tue, 10 Aug 2021 12:49:44 -0700 (PDT) X-Va-A: X-Va-T-CD: f900b3001c7ef03eb53e4f1f41858654 X-Va-E-CD: f4d0bb655782ab825c7a9328fb164ddf X-Va-R-CD: c72241e6c7ad74ea4fd9f173994aebfa X-Va-CD: 0 X-Va-ID: f84cca76-1959-431b-b836-d8eb3ac68020 X-V-A: X-V-T-CD: f900b3001c7ef03eb53e4f1f41858654 X-V-E-CD: f4d0bb655782ab825c7a9328fb164ddf X-V-R-CD: c72241e6c7ad74ea4fd9f173994aebfa X-V-CD: 0 X-V-ID: 7d905089-9f07-45c9-ba19-1ba7891f07ff X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10434:6.0.391,18.0.790 definitions=2021-08-10_08:2021-08-10,2021-08-10 signatures=0 Received: from [17.235.63.152] (unknown [17.235.63.152]) by rn-mailsvcp-mmp-lapp03.rno.apple.com (Oracle Communications Messaging Server 8.1.0.9.20210415 64bit (built Apr 15 2021)) with ESMTPSA id <0QXN0108C32U3K00@rn-mailsvcp-mmp-lapp03.rno.apple.com>; Tue, 10 Aug 2021 12:49:44 -0700 (PDT) From: "Andrew Fish" Message-id: <1C6A8E17-9B0E-4C61-B043-0DC67248AF22@apple.com> MIME-version: 1.0 (Mac OS X Mail 14.0 \(3654.20.0.2.1\)) Subject: Re: [edk2-devel] [PATCH v2 1/2] BaseTools: Define the read-only data section name per toolchain Date: Tue, 10 Aug 2021 12:49:42 -0700 In-reply-to: <169A090BBBBE12C1.15606@groups.io> Cc: =?utf-8?Q?Marvin_H=C3=A4user?= , Bob Feng , Liming Gao , Yuwei Chen , Vitaly Cheptsov To: edk2-devel-groups-io , Andrew Fish References: <252525969122e83d9fb9b83edc95c4f6dfd233b4.1628502434.git.mhaeuser@posteo.de> <7787F470-EEE0-4E13-93C1-508844167749@apple.com> <169A090BBBBE12C1.15606@groups.io> X-Mailer: Apple Mail (2.3654.20.0.2.1) X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10434:6.0.391,18.0.790 definitions=2021-08-10_08:2021-08-10,2021-08-10 signatures=0 Content-type: multipart/alternative; boundary="Apple-Mail=_FA64783E-62B8-4108-BA00-AAA333284BD0" --Apple-Mail=_FA64783E-62B8-4108-BA00-AAA333284BD0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset=utf-8 I forgot I have an Ubuntu VM so we can take a look at an ELF to PE/COFF to= olchain example =E2=80=A6. So it looks like nasm[1] =E2=80=9Cdoes the right thing=E2=80=9D(tm) and pla= ces a .rodata section in the object file=E2=80=A6. But it looks like GenFw[2] smashed the .rodata section into .data section w= hen it translated to PE/COFF. This was the issue I was worried about=E2=80= =A6.=20 Actually I should probably look at the ELF executable too[3]. Yikes no .rod= ata in the ELF. So it looks likely that the linker scripts are smashing .ro= data into .data. So there may be multiple issues with ELF toolchains that n= eed to change to end up with a .rodata in the PE/COFF.=20 [1]$ objdump -fh Build/OvmfX64/DEBUG_GCC5/X64/UefiCpuPkg/Library/BaseUefiC= puLib/BaseUefiCpuLib/OUTPUT/X64/InitializeFpu.obj Build/OvmfX64/DEBUG_GCC5/X64/UefiCpuPkg/Library/BaseUefiCpuLib/BaseUefiCpuL= ib/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 A= lgn 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/DEBU= G/CpuDxe.efi=20 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 A= lgn 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/DEB= UG/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 A= lgn 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 wrote: >=20 >=20 >=20 >> On Aug 10, 2021, at 1:27 AM, Marvin H=C3=A4user > wrote: >>=20 >> On 10/08/2021 06:19, Andrew Fish via groups.io wrote= : >>>=20 >>>=20 >>>> On Aug 9, 2021, at 2:51 AM, Marvin H=C3=A4user >> wrote: >>>>=20 >>>> REF: https://bugzilla.tianocore.org/show_bug.cgi?id=3D3318 > >>>>=20 >>>> 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. >>>>=20 >>>> Cc: Bob Feng >> >>>> Cc: Liming Gao >> >>>> Cc: Yuwei Chen >> >>>> Cc: Vitaly Cheptsov >> >>>> Signed-off-by: Marvin H=C3=A4user >> >>>> --- >>>> BaseTools/Conf/tools_def.template | 172 ++++++++++---------- >>>> 1 file changed, 86 insertions(+), 86 deletions(-) >>>>=20 >>>> 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 =3D /nologo /c /= WX /GS- /W4 /Gs32768 /D UNICODE >>>> RELEASE_VS2008_IA32_ASM_FLAGS =3D /nologo /c /WX /W3 /Cx /coff /Zd >>>>=20 >>>> NOOPT_VS2008_IA32_ASM_FLAGS =3D /nologo /c /WX /W3 /Cx /coff /Zd= /Zi >>>>=20 >>>>=20 >>>>=20 >>>> - DEBUG_VS2008_IA32_NASM_FLAGS =3D -Ox -f win32 -g >>>>=20 >>>> -RELEASE_VS2008_IA32_NASM_FLAGS =3D -Ox -f win32 >>>>=20 >>>> -NOOPT_VS2008_IA32_NASM_FLAGS =3D -O0 -f win32 -g >>>>=20 >>>> + DEBUG_VS2008_IA32_NASM_FLAGS =3D -Ox -f win32 -g -DRODATA_SECTIO= N_NAME=3D.rdata >>>>=20 >>>> +RELEASE_VS2008_IA32_NASM_FLAGS =3D -Ox -f win32 -DRODATA_SECTION_N= AME=3D.rdata >>>>=20 >>>> +NOOPT_VS2008_IA32_NASM_FLAGS =3D -O0 -f win32 -g -DRODATA_SECTIO= N_NAME=3D.rdata >>>>=20 >>>>=20 >>>>=20 >>>> DEBUG_VS2008_IA32_DLINK_FLAGS =3D /NOLOGO /NODEFAULTLIB /IGNORE:40= 01 /OPT:REF /OPT:ICF=3D10 /MAP /ALIGN:32 /SECTION:.xdata,D /SECTION:.pdata,= D /MACHINE:X86 /LTCG /DLL /ENTRY:$(IMAGE_ENTRY_POINT) /SUBSYSTEM:EFI_BOOT_S= ERVICE_DRIVER /SAFESEH:NO /BASE:0 /DRIVER /DEBUG >>>>=20 >>>> RELEASE_VS2008_IA32_DLINK_FLAGS =3D /NOLOGO /NODEFAULTLIB /IGNORE:40= 01 /IGNORE:4254 /OPT:REF /OPT:ICF=3D10 /MAP /ALIGN:32 /SECTION:.xdata,D /SE= CTION:.pdata,D /MACHINE:X86 /LTCG /DLL /ENTRY:$(IMAGE_ENTRY_POINT) /SUBSYST= EM:EFI_BOOT_SERVICE_DRIVER /SAFESEH:NO /BASE:0 /DRIVER /MERGE:.rdata=3D.dat= a >>>>=20 >>>> @@ -495,9 +495,9 @@ NOOPT_VS2008_X64_CC_FLAGS =3D /nologo /c /WX= /GS- /W4 /Gs32768 /D UNICODE /G >>>> RELEASE_VS2008_X64_ASM_FLAGS =3D /nologo /c /WX /W3 /Cx /Zd >>>>=20 >>>> NOOPT_VS2008_X64_ASM_FLAGS =3D /nologo /c /WX /W3 /Cx /Zd /Zi >>>>=20 >>>>=20 >>>>=20 >>>> - DEBUG_VS2008_X64_NASM_FLAGS =3D -Ox -f win64 -g >>>>=20 >>>> -RELEASE_VS2008_X64_NASM_FLAGS =3D -Ox -f win64 >>>>=20 >>>> -NOOPT_VS2008_X64_NASM_FLAGS =3D -O0 -f win64 -g >>>>=20 >>>> + DEBUG_VS2008_X64_NASM_FLAGS =3D -Ox -f win64 -g -DRODATA_SECTION_= NAME=3D.rdata >>>>=20 >>>> +RELEASE_VS2008_X64_NASM_FLAGS =3D -Ox -f win64 -DRODATA_SECTION_NAM= E=3D.rdata >>>>=20 >>>> +NOOPT_VS2008_X64_NASM_FLAGS =3D -O0 -f win64 -g -DRODATA_SECTION_= NAME=3D.rdata >>>>=20 >>>>=20 >>>>=20 >>>> DEBUG_VS2008_X64_DLINK_FLAGS =3D /NOLOGO /NODEFAULTLIB /IGNORE:4001= /OPT:REF /OPT:ICF=3D10 /MAP /ALIGN:32 /SECTION:.xdata,D /SECTION:.pdata,D = /Machine:X64 /LTCG /DLL /ENTRY:$(IMAGE_ENTRY_POINT) /SUBSYSTEM:EFI_BOOT_SER= VICE_DRIVER /SAFESEH:NO /BASE:0 /DRIVER /DEBUG >>>>=20 >>>> RELEASE_VS2008_X64_DLINK_FLAGS =3D /NOLOGO /NODEFAULTLIB /IGNORE:4001= /IGNORE:4254 /OPT:REF /OPT:ICF=3D10 /MAP /ALIGN:32 /SECTION:.xdata,D /SECT= ION:.pdata,D /Machine:X64 /LTCG /DLL /ENTRY:$(IMAGE_ENTRY_POINT) /SUBSYSTEM= :EFI_BOOT_SERVICE_DRIVER /SAFESEH:NO /BASE:0 /DRIVER /MERGE:.rdata=3D.data >>>>=20 >>>> @@ -574,9 +574,9 @@ NOOPT_VS2008x86_IA32_CC_FLAGS =3D /nologo /c = /WX /GS- /W4 /Gs32768 /D UNICODE >>>> RELEASE_VS2008x86_IA32_ASM_FLAGS =3D /nologo /c /WX /W3 /Cx /coff /Z= d >>>>=20 >>>> NOOPT_VS2008x86_IA32_ASM_FLAGS =3D /nologo /c /WX /W3 /Cx /coff /Z= d /Zi >>>>=20 >>>>=20 >>>>=20 >>>> - DEBUG_VS2008x86_IA32_NASM_FLAGS =3D -Ox -f win32 -g >>>>=20 >>>> -RELEASE_VS2008x86_IA32_NASM_FLAGS =3D -Ox -f win32 >>>>=20 >>>> -NOOPT_VS2008x86_IA32_NASM_FLAGS =3D -O0 -f win32 -g >>>>=20 >>>> + DEBUG_VS2008x86_IA32_NASM_FLAGS =3D -Ox -f win32 -g -DRODATA_SECTI= ON_NAME=3D.rdata >>>>=20 >>>> +RELEASE_VS2008x86_IA32_NASM_FLAGS =3D -Ox -f win32 -DRODATA_SECTION_= NAME=3D.rdata >>>>=20 >>>> +NOOPT_VS2008x86_IA32_NASM_FLAGS =3D -O0 -f win32 -g -DRODATA_SECTI= ON_NAME=3D.rdata >>>>=20 >>>>=20 >>>>=20 >>>> DEBUG_VS2008x86_IA32_DLINK_FLAGS =3D /NOLOGO /NODEFAULTLIB /IGNORE:4= 001 /OPT:REF /OPT:ICF=3D10 /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 >>>>=20 >>>> RELEASE_VS2008x86_IA32_DLINK_FLAGS =3D /NOLOGO /NODEFAULTLIB /IGNORE:4= 001 /IGNORE:4254 /OPT:REF /OPT:ICF=3D10 /MAP /ALIGN:32 /SECTION:.xdata,D /S= ECTION:.pdata,D /MACHINE:X86 /LTCG /DLL /ENTRY:$(IMAGE_ENTRY_POINT) /SUBSYS= TEM:EFI_BOOT_SERVICE_DRIVER /SAFESEH:NO /BASE:0 /DRIVER /MERGE:.rdata=3D.da= ta >>>>=20 >>>> @@ -605,9 +605,9 @@ NOOPT_VS2008x86_X64_CC_FLAGS =3D /nologo /c = /WX /GS- /W4 /Gs32768 /D UNICODE >>>> RELEASE_VS2008x86_X64_ASM_FLAGS =3D /nologo /c /WX /W3 /Cx /Zd >>>>=20 >>>> NOOPT_VS2008x86_X64_ASM_FLAGS =3D /nologo /c /WX /W3 /Cx /Zd /Zi >>>>=20 >>>>=20 >>>>=20 >>>> - DEBUG_VS2008x86_X64_NASM_FLAGS =3D -Ox -f win64 -g >>>>=20 >>>> -RELEASE_VS2008x86_X64_NASM_FLAGS =3D -Ox -f win64 >>>>=20 >>>> -NOOPT_VS2008x86_X64_NASM_FLAGS =3D -O0 -f win64 -g >>>>=20 >>>> + DEBUG_VS2008x86_X64_NASM_FLAGS =3D -Ox -f win64 -g -DRODATA_SECTI= ON_NAME=3D.rdata >>>>=20 >>>> +RELEASE_VS2008x86_X64_NASM_FLAGS =3D -Ox -f win64 -DRODATA_SECTION_= NAME=3D.rdata >>>>=20 >>>> +NOOPT_VS2008x86_X64_NASM_FLAGS =3D -O0 -f win64 -g -DRODATA_SECTI= ON_NAME=3D.rdata >>>>=20 >>>>=20 >>>>=20 >>>> DEBUG_VS2008x86_X64_DLINK_FLAGS =3D /NOLOGO /NODEFAULTLIB /IGNORE:4= 001 /OPT:REF /OPT:ICF=3D10 /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 >>>>=20 >>>> RELEASE_VS2008x86_X64_DLINK_FLAGS =3D /NOLOGO /NODEFAULTLIB /IGNORE:4= 001 /IGNORE:4254 /OPT:REF /OPT:ICF=3D10 /MAP /ALIGN:32 /SECTION:.xdata,D /S= ECTION:.pdata,D /Machine:X64 /LTCG /DLL /ENTRY:$(IMAGE_ENTRY_POINT) /SUBSYS= TEM:EFI_BOOT_SERVICE_DRIVER /SAFESEH:NO /BASE:0 /DRIVER /MERGE:.rdata=3D.da= ta >>>>=20 >>>> @@ -688,9 +688,9 @@ NOOPT_VS2010_IA32_CC_FLAGS =3D /nologo /c /= WX /GS- /W4 /Gs32768 /D UNICODE >>>> RELEASE_VS2010_IA32_ASM_FLAGS =3D /nologo /c /WX /W3 /Cx /coff /Zd >>>>=20 >>>> NOOPT_VS2010_IA32_ASM_FLAGS =3D /nologo /c /WX /W3 /Cx /coff /Zd= /Zi >>>>=20 >>>>=20 >>>>=20 >>>> - DEBUG_VS2010_IA32_NASM_FLAGS =3D -Ox -f win32 -g >>>>=20 >>>> -RELEASE_VS2010_IA32_NASM_FLAGS =3D -Ox -f win32 >>>>=20 >>>> -NOOPT_VS2010_IA32_NASM_FLAGS =3D -O0 -f win32 -g >>>>=20 >>>> + DEBUG_VS2010_IA32_NASM_FLAGS =3D -Ox -f win32 -g -DRODATA_SECTIO= N_NAME=3D.rdata >>>>=20 >>>> +RELEASE_VS2010_IA32_NASM_FLAGS =3D -Ox -f win32 -DRODATA_SECTION_N= AME=3D.rdata >>>>=20 >>>> +NOOPT_VS2010_IA32_NASM_FLAGS =3D -O0 -f win32 -g -DRODATA_SECTIO= N_NAME=3D.rdata >>>>=20 >>>>=20 >>>>=20 >>>> DEBUG_VS2010_IA32_DLINK_FLAGS =3D /NOLOGO /NODEFAULTLIB /IGNORE:40= 01 /OPT:REF /OPT:ICF=3D10 /MAP /ALIGN:32 /SECTION:.xdata,D /SECTION:.pdata,= D /MACHINE:X86 /LTCG /DLL /ENTRY:$(IMAGE_ENTRY_POINT) /SUBSYSTEM:EFI_BOOT_S= ERVICE_DRIVER /SAFESEH:NO /BASE:0 /DRIVER /DEBUG >>>>=20 >>>> RELEASE_VS2010_IA32_DLINK_FLAGS =3D /NOLOGO /NODEFAULTLIB /IGNORE:40= 01 /IGNORE:4254 /OPT:REF /OPT:ICF=3D10 /MAP /ALIGN:32 /SECTION:.xdata,D /SE= CTION:.pdata,D /MACHINE:X86 /LTCG /DLL /ENTRY:$(IMAGE_ENTRY_POINT) /SUBSYST= EM:EFI_BOOT_SERVICE_DRIVER /SAFESEH:NO /BASE:0 /DRIVER /MERGE:.rdata=3D.dat= a >>>>=20 >>>> @@ -720,9 +720,9 @@ NOOPT_VS2010_X64_CC_FLAGS =3D /nologo /c /WX= /GS- /W4 /Gs32768 /D UNICODE /G >>>> RELEASE_VS2010_X64_ASM_FLAGS =3D /nologo /c /WX /W3 /Cx /Zd >>>>=20 >>>> NOOPT_VS2010_X64_ASM_FLAGS =3D /nologo /c /WX /W3 /Cx /Zd /Zi >>>>=20 >>>>=20 >>>>=20 >>>> - DEBUG_VS2010_X64_NASM_FLAGS =3D -Ox -f win64 -g >>>>=20 >>>> -RELEASE_VS2010_X64_NASM_FLAGS =3D -Ox -f win64 >>>>=20 >>>> -NOOPT_VS2010_X64_NASM_FLAGS =3D -O0 -f win64 -g >>>>=20 >>>> + DEBUG_VS2010_X64_NASM_FLAGS =3D -Ox -f win64 -g -DRODATA_SECTION_= NAME=3D.rdata >>>>=20 >>>> +RELEASE_VS2010_X64_NASM_FLAGS =3D -Ox -f win64 -DRODATA_SECTION_NAM= E=3D.rdata >>>>=20 >>>> +NOOPT_VS2010_X64_NASM_FLAGS =3D -O0 -f win64 -g -DRODATA_SECTION_= NAME=3D.rdata >>>>=20 >>>>=20 >>>>=20 >>>> DEBUG_VS2010_X64_DLINK_FLAGS =3D /NOLOGO /NODEFAULTLIB /IGNORE:4001= /OPT:REF /OPT:ICF=3D10 /MAP /ALIGN:32 /SECTION:.xdata,D /SECTION:.pdata,D = /Machine:X64 /LTCG /DLL /ENTRY:$(IMAGE_ENTRY_POINT) /SUBSYSTEM:EFI_BOOT_SER= VICE_DRIVER /SAFESEH:NO /BASE:0 /DRIVER /DEBUG >>>>=20 >>>> RELEASE_VS2010_X64_DLINK_FLAGS =3D /NOLOGO /NODEFAULTLIB /IGNORE:4001= /IGNORE:4254 /OPT:REF /OPT:ICF=3D10 /MAP /ALIGN:32 /SECTION:.xdata,D /SECT= ION:.pdata,D /Machine:X64 /LTCG /DLL /ENTRY:$(IMAGE_ENTRY_POINT) /SUBSYSTEM= :EFI_BOOT_SERVICE_DRIVER /SAFESEH:NO /BASE:0 /DRIVER /MERGE:.rdata=3D.data >>>>=20 >>>> @@ -799,9 +799,9 @@ NOOPT_VS2010x86_IA32_CC_FLAGS =3D /nologo /c = /WX /GS- /W4 /Gs32768 /D UNICODE >>>> RELEASE_VS2010x86_IA32_ASM_FLAGS =3D /nologo /c /WX /W3 /Cx /coff /Z= d >>>>=20 >>>> NOOPT_VS2010x86_IA32_ASM_FLAGS =3D /nologo /c /WX /W3 /Cx /coff /Z= d /Zi >>>>=20 >>>>=20 >>>>=20 >>>> - DEBUG_VS2010x86_IA32_NASM_FLAGS =3D -Ox -f win32 -g >>>>=20 >>>> -RELEASE_VS2010x86_IA32_NASM_FLAGS =3D -Ox -f win32 >>>>=20 >>>> -NOOPT_VS2010x86_IA32_NASM_FLAGS =3D -O0 -f win32 -g >>>>=20 >>>> + DEBUG_VS2010x86_IA32_NASM_FLAGS =3D -Ox -f win32 -g -DRODATA_SECTI= ON_NAME=3D.rdata >>>>=20 >>>> +RELEASE_VS2010x86_IA32_NASM_FLAGS =3D -Ox -f win32 -DRODATA_SECTION_= NAME=3D.rdata >>>>=20 >>>> +NOOPT_VS2010x86_IA32_NASM_FLAGS =3D -O0 -f win32 -g -DRODATA_SECTI= ON_NAME=3D.rdata >>>>=20 >>>>=20 >>>>=20 >>>> DEBUG_VS2010x86_IA32_DLINK_FLAGS =3D /NOLOGO /NODEFAULTLIB /IGNORE:4= 001 /OPT:REF /OPT:ICF=3D10 /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 >>>>=20 >>>> RELEASE_VS2010x86_IA32_DLINK_FLAGS =3D /NOLOGO /NODEFAULTLIB /IGNORE:4= 001 /IGNORE:4254 /OPT:REF /OPT:ICF=3D10 /MAP /ALIGN:32 /SECTION:.xdata,D /S= ECTION:.pdata,D /MACHINE:X86 /LTCG /DLL /ENTRY:$(IMAGE_ENTRY_POINT) /SUBSYS= TEM:EFI_BOOT_SERVICE_DRIVER /SAFESEH:NO /BASE:0 /DRIVER /MERGE:.rdata=3D.da= ta >>>>=20 >>>> @@ -831,9 +831,9 @@ NOOPT_VS2010x86_X64_CC_FLAGS =3D /nologo /c = /WX /GS- /W4 /Gs32768 /D UNICODE >>>> RELEASE_VS2010x86_X64_ASM_FLAGS =3D /nologo /c /WX /W3 /Cx /Zd >>>>=20 >>>> NOOPT_VS2010x86_X64_ASM_FLAGS =3D /nologo /c /WX /W3 /Cx /Zd /Zi >>>>=20 >>>>=20 >>>>=20 >>>> - DEBUG_VS2010x86_X64_NASM_FLAGS =3D -Ox -f win64 -g >>>>=20 >>>> -RELEASE_VS2010x86_X64_NASM_FLAGS =3D -Ox -f win64 >>>>=20 >>>> -NOOPT_VS2010x86_X64_NASM_FLAGS =3D -O0 -f win64 -g >>>>=20 >>>> + DEBUG_VS2010x86_X64_NASM_FLAGS =3D -Ox -f win64 -g -DRODATA_SECTI= ON_NAME=3D.rdata >>>>=20 >>>> +RELEASE_VS2010x86_X64_NASM_FLAGS =3D -Ox -f win64 -DRODATA_SECTION_= NAME=3D.rdata >>>>=20 >>>> +NOOPT_VS2010x86_X64_NASM_FLAGS =3D -O0 -f win64 -g -DRODATA_SECTI= ON_NAME=3D.rdata >>>>=20 >>>>=20 >>>>=20 >>>> DEBUG_VS2010x86_X64_DLINK_FLAGS =3D /NOLOGO /NODEFAULTLIB /IGNORE:4= 001 /OPT:REF /OPT:ICF=3D10 /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 >>>>=20 >>>> RELEASE_VS2010x86_X64_DLINK_FLAGS =3D /NOLOGO /NODEFAULTLIB /IGNORE:4= 001 /IGNORE:4254 /OPT:REF /OPT:ICF=3D10 /MAP /ALIGN:32 /SECTION:.xdata,D /S= ECTION:.pdata,D /Machine:X64 /LTCG /DLL /ENTRY:$(IMAGE_ENTRY_POINT) /SUBSYS= TEM:EFI_BOOT_SERVICE_DRIVER /SAFESEH:NO /BASE:0 /DRIVER /MERGE:.rdata=3D.da= ta >>>>=20 >>>> @@ -913,9 +913,9 @@ NOOPT_VS2012_IA32_CC_FLAGS =3D /nologo /arc= h:IA32 /c /WX /GS- /W4 /Gs32768 >>>> RELEASE_VS2012_IA32_ASM_FLAGS =3D /nologo /c /WX /W3 /Cx /coff /Zd >>>>=20 >>>> NOOPT_VS2012_IA32_ASM_FLAGS =3D /nologo /c /WX /W3 /Cx /coff /Zd= /Zi >>>>=20 >>>>=20 >>>>=20 >>>> - DEBUG_VS2012_IA32_NASM_FLAGS =3D -Ox -f win32 -g >>>>=20 >>>> -RELEASE_VS2012_IA32_NASM_FLAGS =3D -Ox -f win32 >>>>=20 >>>> -NOOPT_VS2012_IA32_NASM_FLAGS =3D -O0 -f win32 -g >>>>=20 >>>> + DEBUG_VS2012_IA32_NASM_FLAGS =3D -Ox -f win32 -g -DRODATA_SECTIO= N_NAME=3D.rdata >>>>=20 >>>> +RELEASE_VS2012_IA32_NASM_FLAGS =3D -Ox -f win32 -DRODATA_SECTION_N= AME=3D.rdata >>>>=20 >>>> +NOOPT_VS2012_IA32_NASM_FLAGS =3D -O0 -f win32 -g -DRODATA_SECTIO= N_NAME=3D.rdata >>>>=20 >>>>=20 >>>>=20 >>>> DEBUG_VS2012_IA32_DLINK_FLAGS =3D /NOLOGO /NODEFAULTLIB /IGNORE:40= 01 /OPT:REF /OPT:ICF=3D10 /MAP /ALIGN:32 /SECTION:.xdata,D /SECTION:.pdata,= D /MACHINE:X86 /LTCG /DLL /ENTRY:$(IMAGE_ENTRY_POINT) /SUBSYSTEM:EFI_BOOT_S= ERVICE_DRIVER /SAFESEH:NO /BASE:0 /DRIVER /DEBUG >>>>=20 >>>> RELEASE_VS2012_IA32_DLINK_FLAGS =3D /NOLOGO /NODEFAULTLIB /IGNORE:40= 01 /IGNORE:4254 /OPT:REF /OPT:ICF=3D10 /MAP /ALIGN:32 /SECTION:.xdata,D /SE= CTION:.pdata,D /MACHINE:X86 /LTCG /DLL /ENTRY:$(IMAGE_ENTRY_POINT) /SUBSYST= EM:EFI_BOOT_SERVICE_DRIVER /SAFESEH:NO /BASE:0 /DRIVER /MERGE:.rdata=3D.dat= a >>>>=20 >>>> @@ -945,9 +945,9 @@ NOOPT_VS2012_X64_CC_FLAGS =3D /nologo /c /WX= /GS- /W4 /Gs32768 /D UNICODE /G >>>> RELEASE_VS2012_X64_ASM_FLAGS =3D /nologo /c /WX /W3 /Cx /Zd >>>>=20 >>>> NOOPT_VS2012_X64_ASM_FLAGS =3D /nologo /c /WX /W3 /Cx /Zd /Zi >>>>=20 >>>>=20 >>>>=20 >>>> - DEBUG_VS2012_X64_NASM_FLAGS =3D -Ox -f win64 -g >>>>=20 >>>> -RELEASE_VS2012_X64_NASM_FLAGS =3D -Ox -f win64 >>>>=20 >>>> -NOOPT_VS2012_X64_NASM_FLAGS =3D -O0 -f win64 -g >>>>=20 >>>> + DEBUG_VS2012_X64_NASM_FLAGS =3D -Ox -f win64 -g -DRODATA_SECTION_= NAME=3D.rdata >>>>=20 >>>> +RELEASE_VS2012_X64_NASM_FLAGS =3D -Ox -f win64 -DRODATA_SECTION_NAM= E=3D.rdata >>>>=20 >>>> +NOOPT_VS2012_X64_NASM_FLAGS =3D -O0 -f win64 -g -DRODATA_SECTION_= NAME=3D.rdata >>>>=20 >>>>=20 >>>>=20 >>>> DEBUG_VS2012_X64_DLINK_FLAGS =3D /NOLOGO /NODEFAULTLIB /IGNORE:4001= /OPT:REF /OPT:ICF=3D10 /MAP /ALIGN:32 /SECTION:.xdata,D /SECTION:.pdata,D = /Machine:X64 /LTCG /DLL /ENTRY:$(IMAGE_ENTRY_POINT) /SUBSYSTEM:EFI_BOOT_SER= VICE_DRIVER /SAFESEH:NO /BASE:0 /DRIVER /DEBUG >>>>=20 >>>> RELEASE_VS2012_X64_DLINK_FLAGS =3D /NOLOGO /NODEFAULTLIB /IGNORE:4001= /IGNORE:4254 /OPT:REF /OPT:ICF=3D10 /MAP /ALIGN:32 /SECTION:.xdata,D /SECT= ION:.pdata,D /Machine:X64 /LTCG /DLL /ENTRY:$(IMAGE_ENTRY_POINT) /SUBSYSTEM= :EFI_BOOT_SERVICE_DRIVER /SAFESEH:NO /BASE:0 /DRIVER /MERGE:.rdata=3D.data >>>>=20 >>>> @@ -1024,9 +1024,9 @@ NOOPT_VS2012x86_IA32_CC_FLAGS =3D /nologo /= arch:IA32 /c /WX /GS- /W4 /Gs32768 >>>> RELEASE_VS2012x86_IA32_ASM_FLAGS =3D /nologo /c /WX /W3 /Cx /coff /Z= d >>>>=20 >>>> NOOPT_VS2012x86_IA32_ASM_FLAGS =3D /nologo /c /WX /W3 /Cx /coff /Z= d /Zi >>>>=20 >>>>=20 >>>>=20 >>>> - DEBUG_VS2012x86_IA32_NASM_FLAGS =3D -Ox -f win32 -g >>>>=20 >>>> -RELEASE_VS2012x86_IA32_NASM_FLAGS =3D -Ox -f win32 >>>>=20 >>>> -NOOPT_VS2012x86_IA32_NASM_FLAGS =3D -O0 -f win32 -g >>>>=20 >>>> + DEBUG_VS2012x86_IA32_NASM_FLAGS =3D -Ox -f win32 -g -DRODATA_SECTI= ON_NAME=3D.rdata >>>>=20 >>>> +RELEASE_VS2012x86_IA32_NASM_FLAGS =3D -Ox -f win32 -DRODATA_SECTION_= NAME=3D.rdata >>>>=20 >>>> +NOOPT_VS2012x86_IA32_NASM_FLAGS =3D -O0 -f win32 -g -DRODATA_SECTI= ON_NAME=3D.rdata >>>>=20 >>>>=20 >>>>=20 >>>> DEBUG_VS2012x86_IA32_DLINK_FLAGS =3D /NOLOGO /NODEFAULTLIB /IGNORE:4= 001 /OPT:REF /OPT:ICF=3D10 /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 >>>>=20 >>>> RELEASE_VS2012x86_IA32_DLINK_FLAGS =3D /NOLOGO /NODEFAULTLIB /IGNORE:4= 001 /IGNORE:4254 /OPT:REF /OPT:ICF=3D10 /MAP /ALIGN:32 /SECTION:.xdata,D /S= ECTION:.pdata,D /MACHINE:X86 /LTCG /DLL /ENTRY:$(IMAGE_ENTRY_POINT) /SUBSYS= TEM:EFI_BOOT_SERVICE_DRIVER /SAFESEH:NO /BASE:0 /DRIVER /MERGE:.rdata=3D.da= ta >>>>=20 >>>> @@ -1056,9 +1056,9 @@ NOOPT_VS2012x86_X64_CC_FLAGS =3D /nologo /= c /WX /GS- /W4 /Gs32768 /D UNICODE >>>> RELEASE_VS2012x86_X64_ASM_FLAGS =3D /nologo /c /WX /W3 /Cx /Zd >>>>=20 >>>> NOOPT_VS2012x86_X64_ASM_FLAGS =3D /nologo /c /WX /W3 /Cx /Zd /Zi >>>>=20 >>>>=20 >>>>=20 >>>> - DEBUG_VS2012x86_X64_NASM_FLAGS =3D -Ox -f win64 -g >>>>=20 >>>> -RELEASE_VS2012x86_X64_NASM_FLAGS =3D -Ox -f win64 >>>>=20 >>>> -NOOPT_VS2012x86_X64_NASM_FLAGS =3D -O0 -f win64 -g >>>>=20 >>>> + DEBUG_VS2012x86_X64_NASM_FLAGS =3D -Ox -f win64 -g -DRODATA_SECTI= ON_NAME=3D.rdata >>>>=20 >>>> +RELEASE_VS2012x86_X64_NASM_FLAGS =3D -Ox -f win64 -DRODATA_SECTION_= NAME=3D.rdata >>>>=20 >>>> +NOOPT_VS2012x86_X64_NASM_FLAGS =3D -O0 -f win64 -g -DRODATA_SECTI= ON_NAME=3D.rdata >>>>=20 >>>>=20 >>>>=20 >>>> DEBUG_VS2012x86_X64_DLINK_FLAGS =3D /NOLOGO /NODEFAULTLIB /IGNORE:4= 001 /OPT:REF /OPT:ICF=3D10 /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 >>>>=20 >>>> RELEASE_VS2012x86_X64_DLINK_FLAGS =3D /NOLOGO /NODEFAULTLIB /IGNORE:4= 001 /IGNORE:4254 /OPT:REF /OPT:ICF=3D10 /MAP /ALIGN:32 /SECTION:.xdata,D /S= ECTION:.pdata,D /Machine:X64 /LTCG /DLL /ENTRY:$(IMAGE_ENTRY_POINT) /SUBSYS= TEM:EFI_BOOT_SERVICE_DRIVER /SAFESEH:NO /BASE:0 /DRIVER /MERGE:.rdata=3D.da= ta >>>>=20 >>>> @@ -1138,9 +1138,9 @@ NOOPT_VS2013_IA32_CC_FLAGS =3D /nologo /a= rch:IA32 /c /WX /GS- /W4 /Gs32768 >>>> RELEASE_VS2013_IA32_ASM_FLAGS =3D /nologo /c /WX /W3 /Cx /coff /Zd >>>>=20 >>>> NOOPT_VS2013_IA32_ASM_FLAGS =3D /nologo /c /WX /W3 /Cx /coff /Zd= /Zi >>>>=20 >>>>=20 >>>>=20 >>>> - DEBUG_VS2013_IA32_NASM_FLAGS =3D -Ox -f win32 -g >>>>=20 >>>> -RELEASE_VS2013_IA32_NASM_FLAGS =3D -Ox -f win32 >>>>=20 >>>> -NOOPT_VS2013_IA32_NASM_FLAGS =3D -O0 -f win32 -g >>>>=20 >>>> + DEBUG_VS2013_IA32_NASM_FLAGS =3D -Ox -f win32 -g -DRODATA_SECTIO= N_NAME=3D.rdata >>>>=20 >>>> +RELEASE_VS2013_IA32_NASM_FLAGS =3D -Ox -f win32 -DRODATA_SECTION_N= AME=3D.rdata >>>>=20 >>>> +NOOPT_VS2013_IA32_NASM_FLAGS =3D -O0 -f win32 -g -DRODATA_SECTIO= N_NAME=3D.rdata >>>>=20 >>>>=20 >>>>=20 >>>> DEBUG_VS2013_IA32_DLINK_FLAGS =3D /NOLOGO /NODEFAULTLIB /IGNORE:40= 01 /OPT:REF /OPT:ICF=3D10 /MAP /ALIGN:32 /SECTION:.xdata,D /SECTION:.pdata,= D /MACHINE:X86 /LTCG /DLL /ENTRY:$(IMAGE_ENTRY_POINT) /SUBSYSTEM:EFI_BOOT_S= ERVICE_DRIVER /SAFESEH:NO /BASE:0 /DRIVER /DEBUG >>>>=20 >>>> RELEASE_VS2013_IA32_DLINK_FLAGS =3D /NOLOGO /NODEFAULTLIB /IGNORE:40= 01 /IGNORE:4254 /OPT:REF /OPT:ICF=3D10 /MAP /ALIGN:32 /SECTION:.xdata,D /SE= CTION:.pdata,D /MACHINE:X86 /LTCG /DLL /ENTRY:$(IMAGE_ENTRY_POINT) /SUBSYST= EM:EFI_BOOT_SERVICE_DRIVER /SAFESEH:NO /BASE:0 /DRIVER /MERGE:.rdata=3D.dat= a >>>>=20 >>>> @@ -1170,9 +1170,9 @@ NOOPT_VS2013_X64_CC_FLAGS =3D /nologo /c /= WX /GS- /W4 /Gs32768 /D UNICODE /G >>>> RELEASE_VS2013_X64_ASM_FLAGS =3D /nologo /c /WX /W3 /Cx /Zd >>>>=20 >>>> NOOPT_VS2013_X64_ASM_FLAGS =3D /nologo /c /WX /W3 /Cx /Zd /Zi >>>>=20 >>>>=20 >>>>=20 >>>> - DEBUG_VS2013_X64_NASM_FLAGS =3D -Ox -f win64 -g >>>>=20 >>>> -RELEASE_VS2013_X64_NASM_FLAGS =3D -Ox -f win64 >>>>=20 >>>> -NOOPT_VS2013_X64_NASM_FLAGS =3D -O0 -f win64 -g >>>>=20 >>>> + DEBUG_VS2013_X64_NASM_FLAGS =3D -Ox -f win64 -g -DRODATA_SECTION_= NAME=3D.rdata >>>>=20 >>>> +RELEASE_VS2013_X64_NASM_FLAGS =3D -Ox -f win64 -DRODATA_SECTION_NAM= E=3D.rdata >>>>=20 >>>> +NOOPT_VS2013_X64_NASM_FLAGS =3D -O0 -f win64 -g -DRODATA_SECTION_= NAME=3D.rdata >>>>=20 >>>>=20 >>>>=20 >>>> DEBUG_VS2013_X64_DLINK_FLAGS =3D /NOLOGO /NODEFAULTLIB /IGNORE:4001= /OPT:REF /OPT:ICF=3D10 /MAP /ALIGN:32 /SECTION:.xdata,D /SECTION:.pdata,D = /Machine:X64 /LTCG /DLL /ENTRY:$(IMAGE_ENTRY_POINT) /SUBSYSTEM:EFI_BOOT_SER= VICE_DRIVER /SAFESEH:NO /BASE:0 /DRIVER /DEBUG >>>>=20 >>>> RELEASE_VS2013_X64_DLINK_FLAGS =3D /NOLOGO /NODEFAULTLIB /IGNORE:4001= /IGNORE:4254 /OPT:REF /OPT:ICF=3D10 /MAP /ALIGN:32 /SECTION:.xdata,D /SECT= ION:.pdata,D /Machine:X64 /LTCG /DLL /ENTRY:$(IMAGE_ENTRY_POINT) /SUBSYSTEM= :EFI_BOOT_SERVICE_DRIVER /SAFESEH:NO /BASE:0 /DRIVER /MERGE:.rdata=3D.data >>>>=20 >>>> @@ -1249,9 +1249,9 @@ NOOPT_VS2013x86_IA32_CC_FLAGS =3D /nologo /= arch:IA32 /c /WX /GS- /W4 /Gs32768 >>>> RELEASE_VS2013x86_IA32_ASM_FLAGS =3D /nologo /c /WX /W3 /Cx /coff /Z= d >>>>=20 >>>> NOOPT_VS2013x86_IA32_ASM_FLAGS =3D /nologo /c /WX /W3 /Cx /coff /Z= d /Zi >>>>=20 >>>>=20 >>>>=20 >>>> - DEBUG_VS2013x86_IA32_NASM_FLAGS =3D -Ox -f win32 -g >>>>=20 >>>> -RELEASE_VS2013x86_IA32_NASM_FLAGS =3D -Ox -f win32 >>>>=20 >>>> -NOOPT_VS2013x86_IA32_NASM_FLAGS =3D -O0 -f win32 -g >>>>=20 >>>> + DEBUG_VS2013x86_IA32_NASM_FLAGS =3D -Ox -f win32 -g -DRODATA_SECTI= ON_NAME=3D.rdata >>>>=20 >>>> +RELEASE_VS2013x86_IA32_NASM_FLAGS =3D -Ox -f win32 -DRODATA_SECTION_= NAME=3D.rdata >>>>=20 >>>> +NOOPT_VS2013x86_IA32_NASM_FLAGS =3D -O0 -f win32 -g -DRODATA_SECTI= ON_NAME=3D.rdata >>>>=20 >>>>=20 >>>>=20 >>>> DEBUG_VS2013x86_IA32_DLINK_FLAGS =3D /NOLOGO /NODEFAULTLIB /IGNORE:4= 001 /OPT:REF /OPT:ICF=3D10 /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 >>>>=20 >>>> RELEASE_VS2013x86_IA32_DLINK_FLAGS =3D /NOLOGO /NODEFAULTLIB /IGNORE:4= 001 /IGNORE:4254 /OPT:REF /OPT:ICF=3D10 /MAP /ALIGN:32 /SECTION:.xdata,D /S= ECTION:.pdata,D /MACHINE:X86 /LTCG /DLL /ENTRY:$(IMAGE_ENTRY_POINT) /SUBSYS= TEM:EFI_BOOT_SERVICE_DRIVER /SAFESEH:NO /BASE:0 /DRIVER /MERGE:.rdata=3D.da= ta >>>>=20 >>>> @@ -1281,9 +1281,9 @@ NOOPT_VS2013x86_X64_CC_FLAGS =3D /nologo /= c /WX /GS- /W4 /Gs32768 /D UNICODE >>>> RELEASE_VS2013x86_X64_ASM_FLAGS =3D /nologo /c /WX /W3 /Cx /Zd >>>>=20 >>>> NOOPT_VS2013x86_X64_ASM_FLAGS =3D /nologo /c /WX /W3 /Cx /Zd /Zi >>>>=20 >>>>=20 >>>>=20 >>>> - DEBUG_VS2013x86_X64_NASM_FLAGS =3D -Ox -f win64 -g >>>>=20 >>>> -RELEASE_VS2013x86_X64_NASM_FLAGS =3D -Ox -f win64 >>>>=20 >>>> -NOOPT_VS2013x86_X64_NASM_FLAGS =3D -O0 -f win64 -g >>>>=20 >>>> + DEBUG_VS2013x86_X64_NASM_FLAGS =3D -Ox -f win64 -g -DRODATA_SECTI= ON_NAME=3D.rdata >>>>=20 >>>> +RELEASE_VS2013x86_X64_NASM_FLAGS =3D -Ox -f win64 -DRODATA_SECTION_= NAME=3D.rdata >>>>=20 >>>> +NOOPT_VS2013x86_X64_NASM_FLAGS =3D -O0 -f win64 -g -DRODATA_SECTI= ON_NAME=3D.rdata >>>>=20 >>>>=20 >>>>=20 >>>> DEBUG_VS2013x86_X64_DLINK_FLAGS =3D /NOLOGO /NODEFAULTLIB /IGNORE:4= 001 /OPT:REF /OPT:ICF=3D10 /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 >>>>=20 >>>> RELEASE_VS2013x86_X64_DLINK_FLAGS =3D /NOLOGO /NODEFAULTLIB /IGNORE:4= 001 /IGNORE:4254 /OPT:REF /OPT:ICF=3D10 /MAP /ALIGN:32 /SECTION:.xdata,D /S= ECTION:.pdata,D /Machine:X64 /LTCG /DLL /ENTRY:$(IMAGE_ENTRY_POINT) /SUBSYS= TEM:EFI_BOOT_SERVICE_DRIVER /SAFESEH:NO /BASE:0 /DRIVER /MERGE:.rdata=3D.da= ta >>>>=20 >>>> @@ -1364,9 +1364,9 @@ NOOPT_VS2015_IA32_CC_FLAGS =3D /nologo /a= rch:IA32 /c /WX /GS- /W4 /Gs32768 >>>> RELEASE_VS2015_IA32_ASM_FLAGS =3D /nologo /c /WX /W3 /Cx /coff /Zd >>>>=20 >>>> NOOPT_VS2015_IA32_ASM_FLAGS =3D /nologo /c /WX /W3 /Cx /coff /Zd= /Zi >>>>=20 >>>>=20 >>>>=20 >>>> - DEBUG_VS2015_IA32_NASM_FLAGS =3D -Ox -f win32 -g >>>>=20 >>>> -RELEASE_VS2015_IA32_NASM_FLAGS =3D -Ox -f win32 >>>>=20 >>>> -NOOPT_VS2015_IA32_NASM_FLAGS =3D -O0 -f win32 -g >>>>=20 >>>> + DEBUG_VS2015_IA32_NASM_FLAGS =3D -Ox -f win32 -g -DRODATA_SECTIO= N_NAME=3D.rdata >>>>=20 >>>> +RELEASE_VS2015_IA32_NASM_FLAGS =3D -Ox -f win32 -DRODATA_SECTION_N= AME=3D.rdata >>>>=20 >>>> +NOOPT_VS2015_IA32_NASM_FLAGS =3D -O0 -f win32 -g -DRODATA_SECTIO= N_NAME=3D.rdata >>>>=20 >>>>=20 >>>>=20 >>>> DEBUG_VS2015_IA32_DLINK_FLAGS =3D /NOLOGO /NODEFAULTLIB /IGNORE:40= 01 /OPT:REF /OPT:ICF=3D10 /MAP /ALIGN:32 /SECTION:.xdata,D /SECTION:.pdata,= D /MACHINE:X86 /LTCG /DLL /ENTRY:$(IMAGE_ENTRY_POINT) /SUBSYSTEM:EFI_BOOT_S= ERVICE_DRIVER /SAFESEH:NO /BASE:0 /DRIVER /DEBUG >>>>=20 >>>> RELEASE_VS2015_IA32_DLINK_FLAGS =3D /NOLOGO /NODEFAULTLIB /IGNORE:40= 01 /IGNORE:4254 /OPT:REF /OPT:ICF=3D10 /MAP /ALIGN:32 /SECTION:.xdata,D /SE= CTION:.pdata,D /MACHINE:X86 /LTCG /DLL /ENTRY:$(IMAGE_ENTRY_POINT) /SUBSYST= EM:EFI_BOOT_SERVICE_DRIVER /SAFESEH:NO /BASE:0 /DRIVER /MERGE:.rdata=3D.dat= a >>>>=20 >>>> @@ -1396,9 +1396,9 @@ NOOPT_VS2015_X64_CC_FLAGS =3D /nologo /c /= WX /GS- /W4 /Gs32768 /D UNICODE /G >>>> RELEASE_VS2015_X64_ASM_FLAGS =3D /nologo /c /WX /W3 /Cx /Zd >>>>=20 >>>> NOOPT_VS2015_X64_ASM_FLAGS =3D /nologo /c /WX /W3 /Cx /Zd /Zi >>>>=20 >>>>=20 >>>>=20 >>>> - DEBUG_VS2015_X64_NASM_FLAGS =3D -Ox -f win64 -g >>>>=20 >>>> -RELEASE_VS2015_X64_NASM_FLAGS =3D -Ox -f win64 >>>>=20 >>>> -NOOPT_VS2015_X64_NASM_FLAGS =3D -O0 -f win64 -g >>>>=20 >>>> + DEBUG_VS2015_X64_NASM_FLAGS =3D -Ox -f win64 -g -DRODATA_SECTION_= NAME=3D.rdata >>>>=20 >>>> +RELEASE_VS2015_X64_NASM_FLAGS =3D -Ox -f win64 -DRODATA_SECTION_NAM= E=3D.rdata >>>>=20 >>>> +NOOPT_VS2015_X64_NASM_FLAGS =3D -O0 -f win64 -g -DRODATA_SECTION_= NAME=3D.rdata >>>>=20 >>>>=20 >>>>=20 >>>> DEBUG_VS2015_X64_DLINK_FLAGS =3D /NOLOGO /NODEFAULTLIB /IGNORE:4001= /OPT:REF /OPT:ICF=3D10 /MAP /ALIGN:32 /SECTION:.xdata,D /SECTION:.pdata,D = /Machine:X64 /LTCG /DLL /ENTRY:$(IMAGE_ENTRY_POINT) /SUBSYSTEM:EFI_BOOT_SER= VICE_DRIVER /SAFESEH:NO /BASE:0 /DRIVER /DEBUG >>>>=20 >>>> RELEASE_VS2015_X64_DLINK_FLAGS =3D /NOLOGO /NODEFAULTLIB /IGNORE:4001= /IGNORE:4254 /OPT:REF /OPT:ICF=3D10 /MAP /ALIGN:32 /SECTION:.xdata,D /SECT= ION:.pdata,D /Machine:X64 /LTCG /DLL /ENTRY:$(IMAGE_ENTRY_POINT) /SUBSYSTEM= :EFI_BOOT_SERVICE_DRIVER /SAFESEH:NO /BASE:0 /DRIVER /MERGE:.rdata=3D.data >>>>=20 >>>> @@ -1476,9 +1476,9 @@ NOOPT_VS2015x86_IA32_CC_FLAGS =3D /nologo /= arch:IA32 /c /WX /GS- /W4 /Gs32768 >>>> RELEASE_VS2015x86_IA32_ASM_FLAGS =3D /nologo /c /WX /W3 /Cx /coff /Z= d >>>>=20 >>>> NOOPT_VS2015x86_IA32_ASM_FLAGS =3D /nologo /c /WX /W3 /Cx /coff /Z= d /Zi >>>>=20 >>>>=20 >>>>=20 >>>> - DEBUG_VS2015x86_IA32_NASM_FLAGS =3D -Ox -f win32 -g >>>>=20 >>>> -RELEASE_VS2015x86_IA32_NASM_FLAGS =3D -Ox -f win32 >>>>=20 >>>> -NOOPT_VS2015x86_IA32_NASM_FLAGS =3D -O0 -f win32 -g >>>>=20 >>>> + DEBUG_VS2015x86_IA32_NASM_FLAGS =3D -Ox -f win32 -g -DRODATA_SECTI= ON_NAME=3D.rdata >>>>=20 >>>> +RELEASE_VS2015x86_IA32_NASM_FLAGS =3D -Ox -f win32 -DRODATA_SECTION_= NAME=3D.rdata >>>>=20 >>>> +NOOPT_VS2015x86_IA32_NASM_FLAGS =3D -O0 -f win32 -g -DRODATA_SECTI= ON_NAME=3D.rdata >>>>=20 >>>>=20 >>>>=20 >>>> DEBUG_VS2015x86_IA32_DLINK_FLAGS =3D /NOLOGO /NODEFAULTLIB /IGNORE:4= 001 /OPT:REF /OPT:ICF=3D10 /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 >>>>=20 >>>> RELEASE_VS2015x86_IA32_DLINK_FLAGS =3D /NOLOGO /NODEFAULTLIB /IGNORE:4= 001 /IGNORE:4254 /OPT:REF /OPT:ICF=3D10 /MAP /ALIGN:32 /SECTION:.xdata,D /S= ECTION:.pdata,D /MACHINE:X86 /LTCG /DLL /ENTRY:$(IMAGE_ENTRY_POINT) /SUBSYS= TEM:EFI_BOOT_SERVICE_DRIVER /SAFESEH:NO /BASE:0 /DRIVER /MERGE:.rdata=3D.da= ta >>>>=20 >>>> @@ -1508,9 +1508,9 @@ NOOPT_VS2015x86_X64_CC_FLAGS =3D /nologo /= c /WX /GS- /W4 /Gs32768 /D UNICODE >>>> RELEASE_VS2015x86_X64_ASM_FLAGS =3D /nologo /c /WX /W3 /Cx /Zd >>>>=20 >>>> NOOPT_VS2015x86_X64_ASM_FLAGS =3D /nologo /c /WX /W3 /Cx /Zd /Zi >>>>=20 >>>>=20 >>>>=20 >>>> - DEBUG_VS2015x86_X64_NASM_FLAGS =3D -Ox -f win64 -g >>>>=20 >>>> -RELEASE_VS2015x86_X64_NASM_FLAGS =3D -Ox -f win64 >>>>=20 >>>> -NOOPT_VS2015x86_X64_NASM_FLAGS =3D -O0 -f win64 -g >>>>=20 >>>> + DEBUG_VS2015x86_X64_NASM_FLAGS =3D -Ox -f win64 -g -DRODATA_SECTI= ON_NAME=3D.rdata >>>>=20 >>>> +RELEASE_VS2015x86_X64_NASM_FLAGS =3D -Ox -f win64 -DRODATA_SECTION_= NAME=3D.rdata >>>>=20 >>>> +NOOPT_VS2015x86_X64_NASM_FLAGS =3D -O0 -f win64 -g -DRODATA_SECTI= ON_NAME=3D.rdata >>>>=20 >>>>=20 >>>>=20 >>>> DEBUG_VS2015x86_X64_DLINK_FLAGS =3D /NOLOGO /NODEFAULTLIB /IGNORE:4= 001 /OPT:REF /OPT:ICF=3D10 /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 >>>>=20 >>>> RELEASE_VS2015x86_X64_DLINK_FLAGS =3D /NOLOGO /NODEFAULTLIB /IGNORE:4= 001 /IGNORE:4254 /OPT:REF /OPT:ICF=3D10 /MAP /ALIGN:32 /SECTION:.xdata,D /S= ECTION:.pdata,D /Machine:X64 /LTCG /DLL /ENTRY:$(IMAGE_ENTRY_POINT) /SUBSYS= TEM:EFI_BOOT_SERVICE_DRIVER /SAFESEH:NO /BASE:0 /DRIVER /MERGE:.rdata=3D.da= ta >>>>=20 >>>> @@ -1586,9 +1586,9 @@ NOOPT_VS2017_IA32_CC_FLAGS =3D /nologo /arc= h:IA32 /c /WX /GS- /W4 /Gs32768 /D >>>> RELEASE_VS2017_IA32_ASM_FLAGS =3D /nologo /c /WX /W3 /Cx /coff /Zd >>>>=20 >>>> NOOPT_VS2017_IA32_ASM_FLAGS =3D /nologo /c /WX /W3 /Cx /coff /Zd /= Zi >>>>=20 >>>>=20 >>>>=20 >>>> - DEBUG_VS2017_IA32_NASM_FLAGS =3D -Ox -f win32 -g >>>>=20 >>>> -RELEASE_VS2017_IA32_NASM_FLAGS =3D -Ox -f win32 >>>>=20 >>>> -NOOPT_VS2017_IA32_NASM_FLAGS =3D -O0 -f win32 -g >>>>=20 >>>> + DEBUG_VS2017_IA32_NASM_FLAGS =3D -Ox -f win32 -g -DRODATA_SECTION_= NAME=3D.rdata >>>>=20 >>>> +RELEASE_VS2017_IA32_NASM_FLAGS =3D -Ox -f win32 -DRODATA_SECTION_NAM= E=3D.rdata >>>>=20 >>>> +NOOPT_VS2017_IA32_NASM_FLAGS =3D -O0 -f win32 -g -DRODATA_SECTION_= NAME=3D.rdata >>>>=20 >>>>=20 >>>>=20 >>>> DEBUG_VS2017_IA32_DLINK_FLAGS =3D /NOLOGO /NODEFAULTLIB /IGNORE:4001= /OPT:REF /OPT:ICF=3D10 /MAP /ALIGN:32 /SECTION:.xdata,D /SECTION:.pdata,D = /MACHINE:X86 /LTCG /DLL /ENTRY:$(IMAGE_ENTRY_POINT) /SUBSYSTEM:EFI_BOOT_SER= VICE_DRIVER /SAFESEH:NO /BASE:0 /DRIVER /DEBUG >>>>=20 >>>> RELEASE_VS2017_IA32_DLINK_FLAGS =3D /NOLOGO /NODEFAULTLIB /IGNORE:4001= /IGNORE:4254 /OPT:REF /OPT:ICF=3D10 /MAP /ALIGN:32 /SECTION:.xdata,D /SECT= ION:.pdata,D /MACHINE:X86 /LTCG /DLL /ENTRY:$(IMAGE_ENTRY_POINT) /SUBSYSTEM= :EFI_BOOT_SERVICE_DRIVER /SAFESEH:NO /BASE:0 /DRIVER /MERGE:.rdata=3D.data >>>>=20 >>>> @@ -1616,9 +1616,9 @@ NOOPT_VS2017_X64_CC_FLAGS =3D /nologo /c /= WX /GS- /W4 /Gs32768 /D UNICODE /G >>>> RELEASE_VS2017_X64_ASM_FLAGS =3D /nologo /c /WX /W3 /Cx /Zd >>>>=20 >>>> NOOPT_VS2017_X64_ASM_FLAGS =3D /nologo /c /WX /W3 /Cx /Zd /Zi >>>>=20 >>>>=20 >>>>=20 >>>> - DEBUG_VS2017_X64_NASM_FLAGS =3D -Ox -f win64 -g >>>>=20 >>>> -RELEASE_VS2017_X64_NASM_FLAGS =3D -Ox -f win64 >>>>=20 >>>> -NOOPT_VS2017_X64_NASM_FLAGS =3D -O0 -f win64 -g >>>>=20 >>>> + DEBUG_VS2017_X64_NASM_FLAGS =3D -Ox -f win64 -g -DRODATA_SECTION_= NAME=3D.rdata >>>>=20 >>>> +RELEASE_VS2017_X64_NASM_FLAGS =3D -Ox -f win64 -DRODATA_SECTION_NAM= E=3D.rdata >>>>=20 >>>> +NOOPT_VS2017_X64_NASM_FLAGS =3D -O0 -f win64 -g -DRODATA_SECTION_= NAME=3D.rdata >>>>=20 >>>>=20 >>>>=20 >>>> DEBUG_VS2017_X64_DLINK_FLAGS =3D /NOLOGO /NODEFAULTLIB /IGNORE:4001= /IGNORE:4281 /OPT:REF /OPT:ICF=3D10 /MAP /ALIGN:32 /SECTION:.xdata,D /SECT= ION:.pdata,D /Machine:X64 /LTCG /DLL /ENTRY:$(IMAGE_ENTRY_POINT) /SUBSYSTEM= :EFI_BOOT_SERVICE_DRIVER /SAFESEH:NO /BASE:0 /DRIVER /DEBUG >>>>=20 >>>> RELEASE_VS2017_X64_DLINK_FLAGS =3D /NOLOGO /NODEFAULTLIB /IGNORE:4001= /IGNORE:4281 /IGNORE:4254 /OPT:REF /OPT:ICF=3D10 /MAP /ALIGN:32 /SECTION:.= xdata,D /SECTION:.pdata,D /Machine:X64 /LTCG /DLL /ENTRY:$(IMAGE_ENTRY_POIN= T) /SUBSYSTEM:EFI_BOOT_SERVICE_DRIVER /SAFESEH:NO /BASE:0 /DRIVER /MERGE:.r= data=3D.data >>>>=20 >>>> @@ -1744,9 +1744,9 @@ NOOPT_VS2019_IA32_CC_FLAGS =3D /nologo /arc= h:IA32 /c /WX /GS- /W4 /Gs32768 /D >>>> RELEASE_VS2019_IA32_ASM_FLAGS =3D /nologo /c /WX /W3 /Cx /coff /Zd >>>>=20 >>>> NOOPT_VS2019_IA32_ASM_FLAGS =3D /nologo /c /WX /W3 /Cx /coff /Zd /= Zi >>>>=20 >>>>=20 >>>>=20 >>>> - DEBUG_VS2019_IA32_NASM_FLAGS =3D -Ox -f win32 -g >>>>=20 >>>> -RELEASE_VS2019_IA32_NASM_FLAGS =3D -Ox -f win32 >>>>=20 >>>> -NOOPT_VS2019_IA32_NASM_FLAGS =3D -O0 -f win32 -g >>>>=20 >>>> + DEBUG_VS2019_IA32_NASM_FLAGS =3D -Ox -f win32 -g -DRODATA_SECTION_= NAME=3D.rdata >>>>=20 >>>> +RELEASE_VS2019_IA32_NASM_FLAGS =3D -Ox -f win32 -DRODATA_SECTION_NAM= E=3D.rdata >>>>=20 >>>> +NOOPT_VS2019_IA32_NASM_FLAGS =3D -O0 -f win32 -g -DRODATA_SECTION_= NAME=3D.rdata >>>>=20 >>>>=20 >>>>=20 >>>> DEBUG_VS2019_IA32_DLINK_FLAGS =3D /NOLOGO /NODEFAULTLIB /IGNORE:4001= /OPT:REF /OPT:ICF=3D10 /MAP /ALIGN:32 /SECTION:.xdata,D /SECTION:.pdata,D = /MACHINE:X86 /LTCG /DLL /ENTRY:$(IMAGE_ENTRY_POINT) /SUBSYSTEM:EFI_BOOT_SER= VICE_DRIVER /SAFESEH:NO /BASE:0 /DRIVER /DEBUG >>>>=20 >>>> RELEASE_VS2019_IA32_DLINK_FLAGS =3D /NOLOGO /NODEFAULTLIB /IGNORE:4001= /IGNORE:4254 /OPT:REF /OPT:ICF=3D10 /MAP /ALIGN:32 /SECTION:.xdata,D /SECT= ION:.pdata,D /MACHINE:X86 /LTCG /DLL /ENTRY:$(IMAGE_ENTRY_POINT) /SUBSYSTEM= :EFI_BOOT_SERVICE_DRIVER /SAFESEH:NO /BASE:0 /DRIVER /MERGE:.rdata=3D.data >>>>=20 >>>> @@ -1774,9 +1774,9 @@ NOOPT_VS2019_X64_CC_FLAGS =3D /nologo /c /= WX /GS- /W4 /Gs32768 /D UNICODE /G >>>> RELEASE_VS2019_X64_ASM_FLAGS =3D /nologo /c /WX /W3 /Cx /Zd >>>>=20 >>>> NOOPT_VS2019_X64_ASM_FLAGS =3D /nologo /c /WX /W3 /Cx /Zd /Zi >>>>=20 >>>>=20 >>>>=20 >>>> - DEBUG_VS2019_X64_NASM_FLAGS =3D -Ox -f win64 -g >>>>=20 >>>> -RELEASE_VS2019_X64_NASM_FLAGS =3D -Ox -f win64 >>>>=20 >>>> -NOOPT_VS2019_X64_NASM_FLAGS =3D -O0 -f win64 -g >>>>=20 >>>> + DEBUG_VS2019_X64_NASM_FLAGS =3D -Ox -f win64 -g -DRODATA_SECTION_= NAME=3D.rdata >>>>=20 >>>> +RELEASE_VS2019_X64_NASM_FLAGS =3D -Ox -f win64 -DRODATA_SECTION_NAM= E=3D.rdata >>>>=20 >>>> +NOOPT_VS2019_X64_NASM_FLAGS =3D -O0 -f win64 -g -DRODATA_SECTION_= NAME=3D.rdata >>>>=20 >>>>=20 >>>>=20 >>>> DEBUG_VS2019_X64_DLINK_FLAGS =3D /NOLOGO /NODEFAULTLIB /IGNORE:4001= /IGNORE:4281 /OPT:REF /OPT:ICF=3D10 /MAP /ALIGN:32 /SECTION:.xdata,D /SECT= ION:.pdata,D /Machine:X64 /LTCG /DLL /ENTRY:$(IMAGE_ENTRY_POINT) /SUBSYSTEM= :EFI_BOOT_SERVICE_DRIVER /SAFESEH:NO /BASE:0 /DRIVER /DEBUG >>>>=20 >>>> RELEASE_VS2019_X64_DLINK_FLAGS =3D /NOLOGO /NODEFAULTLIB /IGNORE:4001= /IGNORE:4281 /IGNORE:4254 /OPT:REF /OPT:ICF=3D10 /MAP /ALIGN:32 /SECTION:.= xdata,D /SECTION:.pdata,D /Machine:X64 /LTCG /DLL /ENTRY:$(IMAGE_ENTRY_POIN= T) /SUBSYSTEM:EFI_BOOT_SERVICE_DRIVER /SAFESEH:NO /BASE:0 /DRIVER /MERGE:.r= data=3D.data >>>>=20 >>>> @@ -2030,7 +2030,7 @@ DEFINE GCC_PP_FLAGS =3D -= E -x assembler-with-cpp -include A >>>> *_GCC48_IA32_DLINK2_FLAGS =3D DEF(GCC48_IA32_DLINK2_FLAGS) >>>>=20 >>>> *_GCC48_IA32_RC_FLAGS =3D DEF(GCC_IA32_RC_FLAGS) >>>>=20 >>>> *_GCC48_IA32_OBJCOPY_FLAGS =3D >>>>=20 >>>> -*_GCC48_IA32_NASM_FLAGS =3D -f elf32 >>>>=20 >>>> +*_GCC48_IA32_NASM_FLAGS =3D -f elf32 -DRODATA_SECTION_NAME= =3D.rodata >>>>=20 >>>>=20 >>>>=20 >>>> DEBUG_GCC48_IA32_CC_FLAGS =3D DEF(GCC48_IA32_CC_FLAGS) -Os >>>>=20 >>>> RELEASE_GCC48_IA32_CC_FLAGS =3D DEF(GCC48_IA32_CC_FLAGS) -Os -Wn= o-unused-but-set-variable >>>>=20 >>>> @@ -2058,7 +2058,7 @@ RELEASE_GCC48_IA32_CC_FLAGS =3D DEF(GCC48_= IA32_CC_FLAGS) -Os -Wno-unused-but >>>> *_GCC48_X64_DLINK2_FLAGS =3D DEF(GCC48_X64_DLINK2_FLAGS) >>>>=20 >>>> *_GCC48_X64_RC_FLAGS =3D DEF(GCC_X64_RC_FLAGS) >>>>=20 >>>> *_GCC48_X64_OBJCOPY_FLAGS =3D >>>>=20 >>>> -*_GCC48_X64_NASM_FLAGS =3D -f elf64 >>>>=20 >>>> +*_GCC48_X64_NASM_FLAGS =3D -f elf64 -DRODATA_SECTION_NAME= =3D.rodata >>>>=20 >>>>=20 >>>>=20 >>>> DEBUG_GCC48_X64_CC_FLAGS =3D DEF(GCC48_X64_CC_FLAGS) -Os >>>>=20 >>>> RELEASE_GCC48_X64_CC_FLAGS =3D DEF(GCC48_X64_CC_FLAGS) -Os -Wno-= unused-but-set-variable >>>>=20 >>>> @@ -2170,7 +2170,7 @@ RELEASE_GCC48_AARCH64_CC_FLAGS =3D DEF(GCC48_A= ARCH64_CC_FLAGS) -Wno-unused-but-s >>>> *_GCC49_IA32_DLINK2_FLAGS =3D DEF(GCC49_IA32_DLINK2_FLAGS) >>>>=20 >>>> *_GCC49_IA32_RC_FLAGS =3D DEF(GCC_IA32_RC_FLAGS) >>>>=20 >>>> *_GCC49_IA32_OBJCOPY_FLAGS =3D >>>>=20 >>>> -*_GCC49_IA32_NASM_FLAGS =3D -f elf32 >>>>=20 >>>> +*_GCC49_IA32_NASM_FLAGS =3D -f elf32 -DRODATA_SECTION_NAME= =3D.rodata >>>>=20 >>>>=20 >>>>=20 >>>> DEBUG_GCC49_IA32_CC_FLAGS =3D DEF(GCC49_IA32_CC_FLAGS) -Os >>>>=20 >>>> RELEASE_GCC49_IA32_CC_FLAGS =3D DEF(GCC49_IA32_CC_FLAGS) -Os -Wn= o-unused-but-set-variable -Wno-unused-const-variable >>>>=20 >>>> @@ -2198,7 +2198,7 @@ RELEASE_GCC49_IA32_CC_FLAGS =3D DEF(GCC49_= IA32_CC_FLAGS) -Os -Wno-unused-but >>>> *_GCC49_X64_DLINK2_FLAGS =3D DEF(GCC49_X64_DLINK2_FLAGS) >>>>=20 >>>> *_GCC49_X64_RC_FLAGS =3D DEF(GCC_X64_RC_FLAGS) >>>>=20 >>>> *_GCC49_X64_OBJCOPY_FLAGS =3D >>>>=20 >>>> -*_GCC49_X64_NASM_FLAGS =3D -f elf64 >>>>=20 >>>> +*_GCC49_X64_NASM_FLAGS =3D -f elf64 -DRODATA_SECTION_NAME= =3D.rodata >>>>=20 >>>>=20 >>>>=20 >>>> DEBUG_GCC49_X64_CC_FLAGS =3D DEF(GCC49_X64_CC_FLAGS) -Os >>>>=20 >>>> RELEASE_GCC49_X64_CC_FLAGS =3D DEF(GCC49_X64_CC_FLAGS) -Os -Wno-= unused-but-set-variable -Wno-unused-const-variable >>>>=20 >>>> @@ -2316,7 +2316,7 @@ RELEASE_GCC49_AARCH64_DLINK_XIPFLAGS =3D -z comm= on-page-size=3D0x20 >>>> *_GCC5_IA32_DLINK2_FLAGS =3D DEF(GCC5_IA32_DLINK2_FLAGS) -no-p= ie >>>>=20 >>>> *_GCC5_IA32_RC_FLAGS =3D DEF(GCC_IA32_RC_FLAGS) >>>>=20 >>>> *_GCC5_IA32_OBJCOPY_FLAGS =3D >>>>=20 >>>> -*_GCC5_IA32_NASM_FLAGS =3D -f elf32 >>>>=20 >>>> +*_GCC5_IA32_NASM_FLAGS =3D -f elf32 -DRODATA_SECTION_NAME= =3D.rodata >>>>=20 >>>>=20 >>>>=20 >>>> DEBUG_GCC5_IA32_CC_FLAGS =3D DEF(GCC5_IA32_CC_FLAGS) -flto -Os >>>>=20 >>>> DEBUG_GCC5_IA32_DLINK_FLAGS =3D DEF(GCC5_IA32_X64_DLINK_FLAGS) -f= lto -Os -Wl,-m,elf_i386,--oformat=3Delf32-i386 >>>>=20 >>>> @@ -2348,7 +2348,7 @@ RELEASE_GCC5_IA32_DLINK_FLAGS =3D DEF(GCC5_IA= 32_X64_DLINK_FLAGS) -flto -Os -Wl, >>>> *_GCC5_X64_DLINK2_FLAGS =3D DEF(GCC5_X64_DLINK2_FLAGS) >>>>=20 >>>> *_GCC5_X64_RC_FLAGS =3D DEF(GCC_X64_RC_FLAGS) >>>>=20 >>>> *_GCC5_X64_OBJCOPY_FLAGS =3D >>>>=20 >>>> -*_GCC5_X64_NASM_FLAGS =3D -f elf64 >>>>=20 >>>> +*_GCC5_X64_NASM_FLAGS =3D -f elf64 -DRODATA_SECTION_NAME= =3D.rodata >>>>=20 >>>>=20 >>>>=20 >>>> DEBUG_GCC5_X64_CC_FLAGS =3D DEF(GCC5_X64_CC_FLAGS) -flto -DUS= ING_LTO -Os >>>>=20 >>>> DEBUG_GCC5_X64_DLINK_FLAGS =3D DEF(GCC5_X64_DLINK_FLAGS) -flto -= Os >>>>=20 >>>> @@ -2589,7 +2589,7 @@ DEFINE CLANG38_ALL_CC_FLAGS =3D DEF(GCC4= 8_ALL_CC_FLAGS) DEF(CLANG38_WARNIN >>>> *_CLANG38_IA32_ASM_FLAGS =3D DEF(GCC5_ASM_FLAGS) -m32 -marc= h=3Di386 DEF(CLANG38_IA32_TARGET) >>>>=20 >>>> *_CLANG38_IA32_RC_FLAGS =3D DEF(GCC_IA32_RC_FLAGS) >>>>=20 >>>> *_CLANG38_IA32_OBJCOPY_FLAGS =3D >>>>=20 >>>> -*_CLANG38_IA32_NASM_FLAGS =3D -f elf32 >>>>=20 >>>> +*_CLANG38_IA32_NASM_FLAGS =3D -f elf32 -DRODATA_SECTION_NAM= E=3D.rodata >>>>=20 >>>> *_CLANG38_IA32_PP_FLAGS =3D DEF(GCC_PP_FLAGS) DEF(CLANG38_= IA32_TARGET) >>>>=20 >>>> *_CLANG38_IA32_ASLPP_FLAGS =3D DEF(GCC_ASLPP_FLAGS) DEF(CLANG= 38_IA32_TARGET) >>>>=20 >>>> *_CLANG38_IA32_VFRPP_FLAGS =3D DEF(GCC_VFRPP_FLAGS) DEF(CLANG= 38_IA32_TARGET) >>>>=20 >>>> @@ -2626,7 +2626,7 @@ NOOPT_CLANG38_IA32_DLINK2_FLAGS =3D DEF(GCC5= _IA32_DLINK2_FLAGS) -O0 >>>> *_CLANG38_X64_ASM_FLAGS =3D DEF(GCC5_ASM_FLAGS) -m64 DEF(CL= ANG38_X64_TARGET) >>>>=20 >>>> *_CLANG38_X64_RC_FLAGS =3D DEF(GCC_X64_RC_FLAGS) >>>>=20 >>>> *_CLANG38_X64_OBJCOPY_FLAGS =3D >>>>=20 >>>> -*_CLANG38_X64_NASM_FLAGS =3D -f elf64 >>>>=20 >>>> +*_CLANG38_X64_NASM_FLAGS =3D -f elf64 -DRODATA_SECTION_NAME= =3D.rodata >>>>=20 >>>> *_CLANG38_X64_PP_FLAGS =3D DEF(GCC_PP_FLAGS) DEF(CLANG38_X= 64_TARGET) >>>>=20 >>>> *_CLANG38_X64_ASLPP_FLAGS =3D DEF(GCC_ASLPP_FLAGS) DEF(CLANG3= 8_X64_TARGET) >>>>=20 >>>> *_CLANG38_X64_VFRPP_FLAGS =3D DEF(GCC_VFRPP_FLAGS) DEF(CLANG3= 8_X64_TARGET) >>>>=20 >>>> @@ -2777,7 +2777,7 @@ DEFINE CLANGPDB_ALL_CC_FLAGS =3D DEF(GCC= 48_ALL_CC_FLAGS) DEF(CLANGPDB_WARN >>>> *_CLANGPDB_IA32_ASLCC_FLAGS =3D DEF(GCC_ASLCC_FLAGS) -m32 -fn= o-lto DEF(CLANGPDB_IA32_TARGET) >>>>=20 >>>> *_CLANGPDB_IA32_ASM_FLAGS =3D DEF(GCC_ASM_FLAGS) -m32 -marc= h=3Di386 DEF(CLANGPDB_IA32_TARGET) >>>>=20 >>>> *_CLANGPDB_IA32_OBJCOPY_FLAGS =3D >>>>=20 >>>> -*_CLANGPDB_IA32_NASM_FLAGS =3D -f win32 >>>>=20 >>>> +*_CLANGPDB_IA32_NASM_FLAGS =3D -f win32 -DRODATA_SECTION_NA= ME=3D.rdata >>>>=20 >>>> *_CLANGPDB_IA32_PP_FLAGS =3D DEF(GCC_PP_FLAGS) DEF(CLANGPD= B_IA32_TARGET) >>>>=20 >>>> *_CLANGPDB_IA32_ASLPP_FLAGS =3D DEF(GCC_ASLPP_FLAGS) DEF(CLAN= GPDB_IA32_TARGET) >>>>=20 >>>> *_CLANGPDB_IA32_VFRPP_FLAGS =3D DEF(GCC_VFRPP_FLAGS) DEF(CLAN= GPDB_IA32_TARGET) >>>>=20 >>>> @@ -2811,7 +2811,7 @@ NOOPT_CLANGPDB_IA32_DLINK2_FLAGS =3D >>>> *_CLANGPDB_X64_ASLCC_FLAGS =3D DEF(GCC_ASLCC_FLAGS) -m64 -fno= -lto DEF(CLANGPDB_X64_TARGET) >>>>=20 >>>> *_CLANGPDB_X64_ASM_FLAGS =3D DEF(GCC_ASM_FLAGS) -m64 DEF(CL= ANGPDB_X64_TARGET) >>>>=20 >>>> *_CLANGPDB_X64_OBJCOPY_FLAGS =3D >>>>=20 >>>> -*_CLANGPDB_X64_NASM_FLAGS =3D -f win64 >>>>=20 >>>> +*_CLANGPDB_X64_NASM_FLAGS =3D -f win64 -DRODATA_SECTION_NAM= E=3D.rdata >>>>=20 >>>> *_CLANGPDB_X64_PP_FLAGS =3D DEF(GCC_PP_FLAGS) DEF(CLANGPDB= _X64_TARGET) >>>>=20 >>>> *_CLANGPDB_X64_ASLPP_FLAGS =3D DEF(GCC_ASLPP_FLAGS) DEF(CLANG= PDB_X64_TARGET) >>>>=20 >>>> *_CLANGPDB_X64_VFRPP_FLAGS =3D DEF(GCC_VFRPP_FLAGS) DEF(CLANG= PDB_X64_TARGET) >>>>=20 >>>> @@ -2878,7 +2878,7 @@ DEFINE CLANGDWARF_X64_DLINK2_FLAGS =3D -W= l,--defsym=3DPECOFF_HEADER_SIZE=3D0x22 >>>> *_CLANGDWARF_IA32_ASM_FLAGS =3D DEF(GCC5_ASM_FLAGS) -m32 -m= arch=3Di386 DEF(CLANG38_IA32_TARGET) >>>>=20 >>>> *_CLANGDWARF_IA32_RC_FLAGS =3D DEF(GCC_IA32_RC_FLAGS) >>>>=20 >>>> *_CLANGDWARF_IA32_OBJCOPY_FLAGS =3D >>>>=20 >>>> -*_CLANGDWARF_IA32_NASM_FLAGS =3D -f elf32 >>>>=20 >>>> +*_CLANGDWARF_IA32_NASM_FLAGS =3D -f elf32 -DRODATA_SECTION_= NAME=3D.rodata >>>>=20 >>>> *_CLANGDWARF_IA32_PP_FLAGS =3D DEF(GCC_PP_FLAGS) DEF(CLANG= 38_IA32_TARGET) >>>>=20 >>>> *_CLANGDWARF_IA32_ASLPP_FLAGS =3D DEF(GCC_ASLPP_FLAGS) DEF(CL= ANG38_IA32_TARGET) >>>>=20 >>>> *_CLANGDWARF_IA32_VFRPP_FLAGS =3D DEF(GCC_VFRPP_FLAGS) DEF(CL= ANG38_IA32_TARGET) >>>>=20 >>>> @@ -2914,7 +2914,7 @@ NOOPT_CLANGDWARF_IA32_DLINK2_FLAGS =3D DEF(C= LANGDWARF_IA32_DLINK2_FLAGS) -O0 - >>>> *_CLANGDWARF_X64_ASM_FLAGS =3D DEF(GCC5_ASM_FLAGS) -m64 DEF= (CLANG38_X64_TARGET) >>>>=20 >>>> *_CLANGDWARF_X64_RC_FLAGS =3D DEF(GCC_X64_RC_FLAGS) >>>>=20 >>>> *_CLANGDWARF_X64_OBJCOPY_FLAGS =3D >>>>=20 >>>> -*_CLANGDWARF_X64_NASM_FLAGS =3D -f elf64 >>>>=20 >>>> +*_CLANGDWARF_X64_NASM_FLAGS =3D -f elf64 -DRODATA_SECTION_N= AME=3D.rodata >>>>=20 >>>> *_CLANGDWARF_X64_PP_FLAGS =3D DEF(GCC_PP_FLAGS) DEF(CLANG3= 8_X64_TARGET) >>>>=20 >>>> *_CLANGDWARF_X64_ASLPP_FLAGS =3D DEF(GCC_ASLPP_FLAGS) DEF(CLA= NG38_X64_TARGET) >>>>=20 >>>> *_CLANGDWARF_X64_VFRPP_FLAGS =3D DEF(GCC_VFRPP_FLAGS) DEF(CLA= NG38_X64_TARGET) >>>>=20 >>>> @@ -2985,7 +2985,7 @@ RELEASE_XCODE5_IA32_DLINK_FLAGS =3D -arch i= 386 -u _$(IMAGE_ENTRY_POINT) -e _$ >>>> DEBUG_XCODE5_IA32_ASM_FLAGS =3D -arch i386 -g >>>>=20 >>>> NOOPT_XCODE5_IA32_ASM_FLAGS =3D -arch i386 -g >>>>=20 >>>> RELEASE_XCODE5_IA32_ASM_FLAGS =3D -arch i386 >>>>=20 >>>> - *_XCODE5_IA32_NASM_FLAGS =3D -f macho32 >>>>=20 >>>> + *_XCODE5_IA32_NASM_FLAGS =3D -f macho32 -DRODATA_SECTION_NAME= =3D.rodata >>>>=20 >>>>=20 >>>>=20 >>>=20 >>> An EFI Mach-O file does not contain a .rodata section. A Mach-O contain= s 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]. >>=20 >> Yes, and ".rodata" is almost a synonym for "__DATA,__const", with a smal= l exception [1]. Maybe it'd be clearer if the macro was renamed to "NASM_RO= DATA_SECTION_NAME", to indicate this is not just a "raw" name, but NASM giv= es it a semantic meaning? >>=20 >>>=20 >>> 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 a= dding any kind of new data section is a no-op at best. >>=20 >> This is a part I missed, because I do not have an Xcode toolchain at han= d, 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 betwe= en __TEXT,__const and __DATA,__const is whether the data is targeted by a r= elocation or not. Such a concept does not exist for PE/COFF (and I think no= t 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? >>=20 >> 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 anyth= ing. 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 fo= r ELF and Mach-O outputs, but not for PE/COFF. >>=20 >>>=20 >>> If you want something to be read only for Xcode/clang you are better of= f putting it in the __TEXT section [3]. The __TEXT section is read only and= for X64 can not even contain relocations. >>=20 >> 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 toolchain= s. Does the compiler emit an error when data in __TEXT,__const is targeted = by a relocation? >=20 > The Xcode linker emits a fatal error on X64 for a relocation in the __TEX= T section, everything needs to be RIP relative and the compiler does that f= or free. We generally only run into this for hand coded assembler and the f= ix is to use RIP relative addressing in the assembly.=20 >=20 >> Also see above regarding compiler-emitted __DATA,__const. >>=20 >=20 > OK so the current nasm `SECTION .rodata`[1] gets mapped to __TEXT,__cons= t[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 a= s they need to keep the layout the same and the relative layout between sec= tions the same, but in this case it is nasm placing the data in the text se= ction.=20 >=20 > So what I=E2=80=99d like to see in the patch is to define RODATA_SECTION_= NAME to match what is actually happening. So for XCODE that would be `__TEX= T,__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 s= imple as dumping the EFL object file in objdump or gdb for the given toolch= ain (like my Xcode example). >=20 > TL;DR It looks to me like nasm does some SECTION translations under the h= ood to make code portable, and I=E2=80=99d like to make sure we capture tho= se in the new NASM_RODATA_SECTION_NAME. If some one is doing a security rev= iew having NASM_RODATA_SECTION_NAME is going to imply that a .rodata sectio= n is being used by that specific toolchain, and I think that is much worse = than the current =E2=80=9Cmagic=E2=80=9D behavior in nasm. We are much bett= er off explaining what is really happening, since it is not very obvious. = =20 >=20 > [1] https://github.com/tianocore/edk2/blob/master/UefiCpuPkg/Library/Base= UefiCpuLib/X64/InitializeFpu.nasm#L14 >=20 > [2] $otool -V -s __TEXT __const Build/OvmfX64/DEBUG_XCODE5/X64/UefiCpuPk= g/Library/BaseUefiCpuLib/BaseUefiCpuLib/OUTPUT/X64/InitializeFpu.obj > Build//OvmfX64/DEBUG_XCODE5/X64/UefiCpuPkg/Library/BaseUefiCpuLib/BaseUef= iCpuLib/OUTPUT/X64/InitializeFpu.obj: > Contents of (__TEXT,__const) section > 0000001d 7f 03 80 1f 00 00 >=20 > $ otool -l Build//OvmfX64/DEBUG_XCODE5/X64/UefiCpuPkg/Library/BaseUefiCpu= Lib/BaseUefiCpuLib/OUTPUT/X64/InitializeFpu.obj > Build/OvmfX64/DEBUG_XCODE5/X64/UefiCpuPkg/Library/BaseUefiCpuLib/BaseUefi= CpuLib/OUTPUT/X64/InitializeFpu.obj: > Load command 0 > cmd LC_SEGMENT_64 > cmdsize 232 > segname=20 > 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 > =20 >=20 > Thanks, >=20 > Andrew Fish >=20 >=20 >> Thanks for your notes and insight! >>=20 >> Best regards, >> Marvin >>=20 >>=20 >> [1] >> "For compatibility with other Unix platforms, the following standard nam= es are also supported: >> [...] >> .rodata =3D __DATA,__const data >> [...] >> If the .rodata section contains no relocations, it is instead put into t= he __TEXT,__const section unless this section has already been specified ex= plicitly." >> https://www.nasm.us/xdoc/2.13.01/html/nasmdoc7.html >>=20 >>>=20 >>> [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 >>> =E2=80=A6 >>>=20 >>> [2] https://opensource.apple.com/source/cctools/cctools-698/efitools/mt= oc.c.auto.html =20 >>>=20 >>> [3] otool more output=E2=80=A6 >>> 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 >>>=20 >>> Thanks, >>>=20 >>> Andrew Fish >>>=20 >>>>=20 >>>>=20 >>>> DEBUG_XCODE5_IA32_CC_FLAGS =3D -arch i386 -c -g -Os -Wall -W= error -include AutoGen.h -funsigned-char -fno-stack-protector -fno-builtin = -fshort-wchar -fasm-blocks -mdynamic-no-pic -mno-implicit-float -mms-bitfie= lds -msoft-float -Wno-unused-parameter -Wno-missing-braces -Wno-missing-fie= ld-initializers -Wno-tautological-compare -Wno-sign-compare -Wno-varargs -f= trap-function=3Dundefined_behavior_has_been_optimized_away_by_clang $(PLATF= ORM_FLAGS) >>>>=20 >>>> @@ -3003,7 +3003,7 @@ RELEASE_XCODE5_X64_DLINK_FLAGS =3D -arch x8= 6_64 -u _$(IMAGE_ENTRY_POINT) -e _ >>>> DEBUG_XCODE5_X64_ASM_FLAGS =3D -arch x86_64 -g >>>>=20 >>>> NOOPT_XCODE5_X64_ASM_FLAGS =3D -arch x86_64 -g >>>>=20 >>>> RELEASE_XCODE5_X64_ASM_FLAGS =3D -arch x86_64 >>>>=20 >>>> - *_XCODE5_X64_NASM_FLAGS =3D -f macho64 >>>>=20 >>>> + *_XCODE5_X64_NASM_FLAGS =3D -f macho64 -DRODATA_SECTION_NAME=3D= .rodata >>>>=20 >>>> *_XCODE5_*_PP_FLAGS =3D -E -x assembler-with-cpp -include Auto= Gen.h >>>>=20 >>>> *_XCODE5_*_VFRPP_FLAGS =3D -x c -E -P -DVFRCOMPILE -include $(MOD= ULE_NAME)StrDefs.h >>>>=20 >>>>=20 >>>>=20 >>>> --=20 >>>> 2.31.1 >>>>=20 >>>>=20 >>>>=20 >>>>=20 >>>>=20 >>>>=20 >>>>=20 >>=20 >=20 >=20 --Apple-Mail=_FA64783E-62B8-4108-BA00-AAA333284BD0 Content-Transfer-Encoding: quoted-printable Content-Type: text/html; charset=utf-8 I forgot I have an Ubuntu = VM so we can take a look at an ELF to PE/COFF  toolchain example =E2= =80=A6.

So it looks lik= e nasm[1] =E2=80=9Cdoes the right thing=E2=80=9D(tm) and places a .rodata s= ection in the object file=E2=80=A6.

But it looks like GenFw[2] smashed the .rodata section i= nto .data section when it translated to PE/COFF. This was the issue I was w= orried about=E2=80=A6. 

Actually I should probably look at the ELF executable too[3]. Y= ikes no .rodata in the ELF. So it looks likely that the linker scripts are = smashing .rodata into .data. So there may be multiple issues with ELF toolc= hains that need to change to end up with a .rodata in the PE/COFF. 

[1]$ = objdump -fh  Build/OvmfX64/DEBUG_GCC5/X64/UefiCpuPkg/Library/BaseUefiC= puLib/BaseUefiCpuLib/OUTPUT/X64/InitializeFpu.obj

=
Build/OvmfX64/DEBUG_GCC5/X64/UefiCpuPkg/Library/BaseUefiCpuLib/B= aseUefiCpuLib/OUTPUT/X64/InitializeFpu.obj:     file format elf64= -x86-64
architecture: i386:x86-64, flags 0x00000011:
HA= S_RELOC, HAS_SYMS
start address 0x0000000000000000

Sections:
Idx Name       &nb= sp;  Size      VMA           &= nbsp;   LMA               File off =  Algn
  0 .rodata       00000006  0= 000000000000000  0000000000000000  00000200  2**2
=                   CONTENTS, AL= LOC, LOAD, READONLY, DATA
  1 .text       &nb= sp; 0000001d  0000000000000000  0000000000000000  00000210 &= nbsp;2**4
               =   CONTENTS, ALLOC, LOAD, RELOC, READONLY, CODE
<= br class=3D"">

[2]$ objdump -fh Build/O= vmfX64/DEBUG_GCC5/X64/UefiCpuPkg/CpuDxe/CpuDxe/DEBUG/CpuDxe.efi 
=

Build/OvmfX64/DEBUG_GC= C5/X64/UefiCpuPkg/CpuDxe/CpuDxe/DEBUG/CpuDxe.efi:     file format= pei-x86-64
architecture: i386:x86-64, flags 0x0000010= b:
HAS_RELOC, EXEC_P, HAS_DEBUG, D_PAGED
start address 0x0000000000008eb1

Sections:
Idx Name   &nbs= p;      Size      VMA       &n= bsp;       LMA             &nb= sp; File off  Algn
  0 .text     &= nbsp;   0000ff80  0000000000000240  0000000000000240  0= 0000240  2**4
          =         CONTENTS, ALLOC, LOAD, READONLY, CODE
  1 .data         00000540  00000= 000000101c0  00000000000101c0  000101c0  2**4
                  CONTE= NTS, ALLOC, LOAD, DATA
  2 .reloc     &= nbsp;  00000080  0000000000010700  0000000000010700  00= 010700  2**2
          &= nbsp;       CONTENTS, ALLOC, LOAD, READONLY, DATA

[3] $ objdump -fh Bui= ld/OvmfX64/DEBUG_GCC5/X64/UefiCpuPkg/CpuDxe/CpuDxe/DEBUG/CpuDxe.dll

Build/OvmfX64/DEBUG_GCC5= /X64/UefiCpuPkg/CpuDxe/CpuDxe/DEBUG/CpuDxe.dll:     file format e= lf64-x86-64
architecture: i386:x86-64, flags 0x0000001= 3:
HAS_RELOC, EXEC_P, HAS_SYMS
st= art address 0x0000000000008eb1

Sections:
Idx Name       =    Size      VMA          = ;     LMA               File o= ff  Algn
  0 .text       &nbs= p; 0000ff46  0000000000000240  0000000000000240  000000c0 &n= bsp;2**6
            &nb= sp;     CONTENTS, ALLOC, LOAD, RELOC, READONLY, CODE
  1 .data         00000490  00000000= 000101c0  00000000000101c0  00010040  2**6
                  CONTEN= TS, ALLOC, LOAD, RELOC, DATA
  2 .rela   &nb= sp;     000004f8  0000000000010680  0000000000010680 &n= bsp;000104d0  2**3
        &n= bsp;         CONTENTS, READONLY
&n= bsp; 3 .build-id     00000024  0000000000010b78  000000= 0000010b78  000109c8  2**2
    &nb= sp;             CONTENTS, READONLY
  4 .gnu_debuglink 00000014  0000000000000000  00= 00000000000000  000109ec  2**2
   =               CONTENTS, READONLY
<= div class=3D"">


Thanks,

Andrew Fish

On Aug 10, 2021,= at 12:35 PM, Andrew Fish via group= s.io <afis= h=3Dapple.com@groups.io> wrote:



<= div class=3D"">On Aug 10, 2021, at 1:27 AM, Marvin H=C3=A4user <mhaeuser@posteo.de> wrote:=

On 10/08/2021 06:19, Andrew Fish via groups.io wrote:


On Au= g 9, 2021, at 2:51 AM, Marvin H=C3=A4user <mhaeuser@posteo.de <mailto:mhaeuser@posteo.de>> wrote:

REF: https://bugzilla.tianocore.org/show_bug.cgi?id= =3D3318 <https://bugzilla.tianocore.org/show_bug.cgi?id=3D3318>

Different toolchains of the EDK II buil= d system may generate ELF or
Mach-O files, which use the ".ro= data" naming convention, or PE/COFF
files, which use the ".rd= ata" naming convention. Section permissions
are chosen based = on this name per file format by NASM. To harden
image permiss= ion security, and to save space by avoiding both
".rdata" and= ".rodata" sections being emitted, expose the appropriate
nam= e as a preprocessor constant.

Cc: Bob Feng <= ;
bob.c.feng@intel.com <mailto:bob.c.feng@= intel.com>>
Cc: Liming Gao <gaoliming@byosoft.com.cn <mailto:gaoliming@byosoft.co= m.cn>>
Cc: Yuwei Chen <yuwei.chen@intel.com <mailto:yuwei.chen@intel.com>>
Cc: Vitaly Cheptsov <vit9696@protonmail.com <mailto:vit9696@protonmail.com>>
Signed-off-by: Marvin H=C3=A4user <mhaeuser@posteo.de <mailto:mhaeuser@posteo.de>>
---
BaseTools/Conf/tools_def.template | 172 ++++++++++----------
1 file changed, 86 insertions(+), 86 deletions(-)
<= br class=3D"">diff --git a/BaseTools/Conf/tools_def.template b/BaseTools/Co= nf/tools_def.template
index 2e6b382ab623..84d464916c4d 100755=
--- a/BaseTools/Conf/tools_def.template
+++ b/= BaseTools/Conf/tools_def.template
@@ -463,9 +463,9 @@ NOOPT_V= S2008_IA32_CC_FLAGS        =3D /nologo /= c /WX /GS- /W4 /Gs32768 /D UNICODE
RELEASE_VS2008_IA32_ASM_FL= AGS     =3D /nologo /c /WX /W3 /Cx /coff /Zd

NOOPT_VS2008_IA32_ASM_FLAGS     &n= bsp; =3D /nologo /c /WX /W3 /Cx /coff /Zd /Zi



-  DEBUG_VS2008_IA32_NASM_FLAGS &n= bsp;  =3D -Ox -f win32 -g

-RELEASE_V= S2008_IA32_NASM_FLAGS    =3D -Ox -f win32

-NOOPT_VS2008_IA32_NASM_FLAGS      =3D = -O0 -f win32 -g

+  DEBUG_VS2008_IA32_NASM= _FLAGS    =3D -Ox -f win32 -g -DRODATA_SECTION_NAME=3D.rdata=

+RELEASE_VS2008_IA32_NASM_FLAGS   &= nbsp;=3D -Ox -f win32 -DRODATA_SECTION_NAME=3D.rdata

+NOOPT_VS2008_IA32_NASM_FLAGS      =3D -O0 = -f win32 -g -DRODATA_SECTION_NAME=3D.rdata


  DEBUG_VS2008_IA32_DLINK_FLAGS  =  =3D /NOLOGO /NODEFAULTLIB /IGNORE:4001 /OPT:REF /OPT:ICF=3D10 /MAP /A= LIGN: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_FLAG= S   =3D /NOLOGO /NODEFAULTLIB /IGNORE:4001 /IGNORE:4254 /OPT:REF = /OPT:ICF=3D10 /MAP /ALIGN:32 /SECTION:.xdata,D /SECTION:.pdata,D /MACHINE:X= 86 /LTCG /DLL /ENTRY:$(IMAGE_ENTRY_POINT) /SUBSYSTEM:EFI_BOOT_SERVICE_DRIVE= R /SAFESEH:NO /BASE:0 /DRIVER /MERGE:.rdata=3D.data

@@ -495,9 +495,9 @@ NOOPT_VS2008_X64_CC_FLAGS     = ;  =3D /nologo /c /WX /GS- /W4 /Gs32768 /D UNICODE /G
RELEASE_VS2008_X64_ASM_FLAGS    =3D /nologo /c /WX /W3 /C= x /Zd

NOOPT_VS2008_X64_ASM_FLAGS   &= nbsp;=3D /nologo /c /WX /W3 /Cx /Zd /Zi



-  DEBUG_VS2008_X64_NASM_FLAGS   =3D= -Ox -f win64 -g

-RELEASE_VS2008_X64_NASM_FLAG= S   =3D -Ox -f win64

-NOOPT_VS2008_X= 64_NASM_FLAGS     =3D -O0 -f win64 -g
+  DEBUG_VS2008_X64_NASM_FLAGS   =3D -Ox -f win6= 4 -g -DRODATA_SECTION_NAME=3D.rdata

+RELEASE_V= S2008_X64_NASM_FLAGS   =3D -Ox -f win64 -DRODATA_SECTION_NAME=3D.= rdata

+NOOPT_VS2008_X64_NASM_FLAGS   = ;  =3D -O0 -f win64 -g -DRODATA_SECTION_NAME=3D.rdata



  DEBUG_VS2008_X6= 4_DLINK_FLAGS  =3D /NOLOGO /NODEFAULTLIB /IGNORE:4001 /OPT:REF /OPT:IC= F=3D10 /MAP /ALIGN:32 /SECTION:.xdata,D /SECTION:.pdata,D /Machine:X64 /LTC= G /DLL /ENTRY:$(IMAGE_ENTRY_POINT) /SUBSYSTEM:EFI_BOOT_SERVICE_DRIVER /SAFE= SEH:NO /BASE:0 /DRIVER /DEBUG

RELEASE_VS2008_X= 64_DLINK_FLAGS  =3D /NOLOGO /NODEFAULTLIB /IGNORE:4001 /IGNORE:4254 /O= PT:REF /OPT:ICF=3D10 /MAP /ALIGN:32 /SECTION:.xdata,D /SECTION:.pdata,D /Ma= chine:X64 /LTCG /DLL /ENTRY:$(IMAGE_ENTRY_POINT) /SUBSYSTEM:EFI_BOOT_SERVIC= E_DRIVER /SAFESEH:NO /BASE:0 /DRIVER /MERGE:.rdata=3D.data
@@ -574,9 +574,9 @@ NOOPT_VS2008x86_IA32_CC_FLAGS   =    =3D /nologo /c /WX /GS- /W4 /Gs32768 /D UNICODE
RELEASE_VS2008x86_IA32_ASM_FLAGS   =3D /nologo /c /WX /W3 /= Cx /coff /Zd

NOOPT_VS2008x86_IA32_ASM_FLAGS &n= bsp;   =3D /nologo /c /WX /W3 /Cx /coff /Zd /Zi



-  DEBUG_VS2008x86_IA32= _NASM_FLAGS  =3D -Ox -f win32 -g

-RELEASE= _VS2008x86_IA32_NASM_FLAGS  =3D -Ox -f win32

-NOOPT_VS2008x86_IA32_NASM_FLAGS    =3D -O0 -f win32 -= g

+  DEBUG_VS2008x86_IA32_NASM_FLAGS &nbs= p;=3D -Ox -f win32 -g -DRODATA_SECTION_NAME=3D.rdata

+RELEASE_VS2008x86_IA32_NASM_FLAGS  =3D -Ox -f win32 -DRODATA_S= ECTION_NAME=3D.rdata

+NOOPT_VS2008x86_IA32_NAS= M_FLAGS    =3D -O0 -f win32 -g -DRODATA_SECTION_NAME=3D.rdat= a



  DE= BUG_VS2008x86_IA32_DLINK_FLAGS =3D /NOLOGO /NODEFAULTLIB /IGNORE:4001 /OPT:= REF /OPT:ICF=3D10 /MAP /ALIGN:32 /SECTION:.xdata,D /SECTION:.pdata,D /MACHI= NE:X86 /LTCG /DLL /ENTRY:$(IMAGE_ENTRY_POINT) /SUBSYSTEM:EFI_BOOT_SERVICE_D= RIVER /SAFESEH:NO /BASE:0 /DRIVER /DEBUG

RELEA= SE_VS2008x86_IA32_DLINK_FLAGS =3D /NOLOGO /NODEFAULTLIB /IGNORE:4001 /IGNOR= E:4254 /OPT:REF /OPT:ICF=3D10 /MAP /ALIGN:32 /SECTION:.xdata,D /SECTION:.pd= ata,D /MACHINE:X86 /LTCG /DLL /ENTRY:$(IMAGE_ENTRY_POINT) /SUBSYSTEM:EFI_BO= OT_SERVICE_DRIVER /SAFESEH:NO /BASE:0 /DRIVER /MERGE:.rdata=3D.data

@@ -605,9 +605,9 @@ NOOPT_VS2008x86_X64_CC_FLAGS &nbs= p;     =3D /nologo /c /WX /GS- /W4 /Gs32768 /D UNI= CODE
RELEASE_VS2008x86_X64_ASM_FLAGS    =3D /n= ologo /c /WX /W3 /Cx /Zd

NOOPT_VS2008x86_X64_A= SM_FLAGS      =3D /nologo /c /WX /W3 /Cx /Zd /Zi


-  DEBUG_VS2= 008x86_X64_NASM_FLAGS   =3D -Ox -f win64 -g

-RELEASE_VS2008x86_X64_NASM_FLAGS   =3D -Ox -f win64

-NOOPT_VS2008x86_X64_NASM_FLAGS    =  =3D -O0 -f win64 -g

+  DEBUG_VS2008= x86_X64_NASM_FLAGS   =3D -Ox -f win64 -g -DRODATA_SECTION_NAME=3D= .rdata

+RELEASE_VS2008x86_X64_NASM_FLAGS  = ; =3D -Ox -f win64 -DRODATA_SECTION_NAME=3D.rdata

+NOOPT_VS2008x86_X64_NASM_FLAGS     =3D -O0 -f= win64 -g -DRODATA_SECTION_NAME=3D.rdata



  DEBUG_VS2008x86_X64_DLINK_FLAGS  = =3D /NOLOGO /NODEFAULTLIB /IGNORE:4001 /OPT:REF /OPT:ICF=3D10 /MAP /ALIGN:3= 2 /SECTION:.xdata,D /SECTION:.pdata,D /Machine:X64 /LTCG /DLL /ENTRY:$(IMAG= E_ENTRY_POINT) /SUBSYSTEM:EFI_BOOT_SERVICE_DRIVER /SAFESEH:NO /BASE:0 /DRIV= ER /DEBUG

RELEASE_VS2008x86_X64_DLINK_FLAGS &n= bsp;=3D /NOLOGO /NODEFAULTLIB /IGNORE:4001 /IGNORE:4254 /OPT:REF /OPT:ICF= =3D10 /MAP /ALIGN:32 /SECTION:.xdata,D /SECTION:.pdata,D /Machine:X64 /LTCG= /DLL /ENTRY:$(IMAGE_ENTRY_POINT) /SUBSYSTEM:EFI_BOOT_SERVICE_DRIVER /SAFES= EH:NO /BASE:0 /DRIVER /MERGE:.rdata=3D.data

@@= -688,9 +688,9 @@ NOOPT_VS2010_IA32_CC_FLAGS      =   =3D /nologo /c /WX /GS- /W4 /Gs32768 /D UNICODE
R= ELEASE_VS2010_IA32_ASM_FLAGS     =3D /nologo /c /WX /W3= /Cx /coff /Zd

NOOPT_VS2010_IA32_ASM_FLAGS &nb= sp;     =3D /nologo /c /WX /W3 /Cx /coff /Zd /Zi


-  DEBUG_VS2= 010_IA32_NASM_FLAGS    =3D -Ox -f win32 -g
-RELEASE_VS2010_IA32_NASM_FLAGS    =3D -Ox -f wi= n32

-NOOPT_VS2010_IA32_NASM_FLAGS   =    =3D -O0 -f win32 -g

+  = DEBUG_VS2010_IA32_NASM_FLAGS    =3D -Ox -f win32 -g -DRODATA= _SECTION_NAME=3D.rdata

+RELEASE_VS2010_IA32_NA= SM_FLAGS    =3D -Ox -f win32 -DRODATA_SECTION_NAME=3D.rdata<= br class=3D"">
+NOOPT_VS2010_IA32_NASM_FLAGS   &nbs= p;  =3D -O0 -f win32 -g -DRODATA_SECTION_NAME=3D.rdata



  DEBUG_VS2010= _IA32_DLINK_FLAGS   =3D /NOLOGO /NODEFAULTLIB /IGNORE:4001 /OPT:R= EF /OPT:ICF=3D10 /MAP /ALIGN:32 /SECTION:.xdata,D /SECTION:.pdata,D /MACHIN= E:X86 /LTCG /DLL /ENTRY:$(IMAGE_ENTRY_POINT) /SUBSYSTEM:EFI_BOOT_SERVICE_DR= IVER /SAFESEH:NO /BASE:0 /DRIVER /DEBUG

RELEAS= E_VS2010_IA32_DLINK_FLAGS   =3D /NOLOGO /NODEFAULTLIB /IGNORE:400= 1 /IGNORE:4254 /OPT:REF /OPT:ICF=3D10 /MAP /ALIGN:32 /SECTION:.xdata,D /SEC= TION:.pdata,D /MACHINE:X86 /LTCG /DLL /ENTRY:$(IMAGE_ENTRY_POINT) /SUBSYSTE= M:EFI_BOOT_SERVICE_DRIVER /SAFESEH:NO /BASE:0 /DRIVER /MERGE:.rdata=3D.data=

@@ -720,9 +720,9 @@ NOOPT_VS2010_X64_CC_FLAGS=       =3D /nologo /c /WX /GS- /W4 /Gs32768 /= D UNICODE /G
RELEASE_VS2010_X64_ASM_FLAGS    = =3D /nologo /c /WX /W3 /Cx /Zd

NOOPT_VS2010_X6= 4_ASM_FLAGS    =3D /nologo /c /WX /W3 /Cx /Zd /Zi



-  DEBUG_VS2010_X64= _NASM_FLAGS   =3D -Ox -f win64 -g

-R= ELEASE_VS2010_X64_NASM_FLAGS   =3D -Ox -f win64
-NOOPT_VS2010_X64_NASM_FLAGS     =3D -O0 -f= win64 -g

+  DEBUG_VS2010_X64_NASM_FLAGS =   =3D -Ox -f win64 -g -DRODATA_SECTION_NAME=3D.rdata

+RELEASE_VS2010_X64_NASM_FLAGS   =3D -Ox -f win6= 4 -DRODATA_SECTION_NAME=3D.rdata

+NOOPT_VS2010= _X64_NASM_FLAGS     =3D -O0 -f win64 -g -DRODATA_SECTIO= N_NAME=3D.rdata



=   DEBUG_VS2010_X64_DLINK_FLAGS  =3D /NOLOGO /NODEFAULTLIB /I= GNORE:4001 /OPT:REF /OPT:ICF=3D10 /MAP /ALIGN:32 /SECTION:.xdata,D /SECTION= :.pdata,D /Machine:X64 /LTCG /DLL /ENTRY:$(IMAGE_ENTRY_POINT) /SUBSYSTEM:EF= I_BOOT_SERVICE_DRIVER /SAFESEH:NO /BASE:0 /DRIVER /DEBUG

RELEASE_VS2010_X64_DLINK_FLAGS  =3D /NOLOGO /NODEFAULTLIB /= IGNORE:4001 /IGNORE:4254 /OPT:REF /OPT:ICF=3D10 /MAP /ALIGN:32 /SECTION:.xd= ata,D /SECTION:.pdata,D /Machine:X64 /LTCG /DLL /ENTRY:$(IMAGE_ENTRY_POINT)= /SUBSYSTEM:EFI_BOOT_SERVICE_DRIVER /SAFESEH:NO /BASE:0 /DRIVER /MERGE:.rda= ta=3D.data

@@ -799,9 +799,9 @@ NOOPT_VS2010x86= _IA32_CC_FLAGS      =3D /nologo /c /WX /GS- /W4 /G= s32768 /D UNICODE
RELEASE_VS2010x86_IA32_ASM_FLAGS  &nbs= p;=3D /nologo /c /WX /W3 /Cx /coff /Zd

NOOPT_V= S2010x86_IA32_ASM_FLAGS     =3D /nologo /c /WX /W3 /Cx = /coff /Zd /Zi



- =  DEBUG_VS2010x86_IA32_NASM_FLAGS  =3D -Ox -f win32 -g

-RELEASE_VS2010x86_IA32_NASM_FLAGS  =3D -Ox -f win32=

-NOOPT_VS2010x86_IA32_NASM_FLAGS   =  =3D -O0 -f win32 -g

+  DEBUG_VS2010= x86_IA32_NASM_FLAGS  =3D -Ox -f win32 -g -DRODATA_SECTION_NAME=3D.rdat= a

+RELEASE_VS2010x86_IA32_NASM_FLAGS  =3D= -Ox -f win32 -DRODATA_SECTION_NAME=3D.rdata

+= NOOPT_VS2010x86_IA32_NASM_FLAGS    =3D -O0 -f win32 -g -DROD= ATA_SECTION_NAME=3D.rdata



  DEBUG_VS2010x86_IA32_DLINK_FLAGS =3D /NOLOGO /NODEFAU= LTLIB /IGNORE:4001 /OPT:REF /OPT:ICF=3D10 /MAP /ALIGN:32 /SECTION:.xdata,D = /SECTION:.pdata,D /MACHINE:X86 /LTCG /DLL /ENTRY:$(IMAGE_ENTRY_POINT) /SUBS= YSTEM:EFI_BOOT_SERVICE_DRIVER /SAFESEH:NO /BASE:0 /DRIVER /DEBUG

RELEASE_VS2010x86_IA32_DLINK_FLAGS =3D /NOLOGO /NODEFA= ULTLIB /IGNORE:4001 /IGNORE:4254 /OPT:REF /OPT:ICF=3D10 /MAP /ALIGN:32 /SEC= TION:.xdata,D /SECTION:.pdata,D /MACHINE:X86 /LTCG /DLL /ENTRY:$(IMAGE_ENTR= Y_POINT) /SUBSYSTEM:EFI_BOOT_SERVICE_DRIVER /SAFESEH:NO /BASE:0 /DRIVER /ME= RGE:.rdata=3D.data

@@ -831,9 +831,9 @@ NOOPT_V= S2010x86_X64_CC_FLAGS       =3D /nologo /c /W= X /GS- /W4 /Gs32768 /D UNICODE
RELEASE_VS2010x86_X64_ASM_FLAG= S    =3D /nologo /c /WX /W3 /Cx /Zd

NOOPT_VS2010x86_X64_ASM_FLAGS      =3D /nolo= go /c /WX /W3 /Cx /Zd /Zi



-  DEBUG_VS2010x86_X64_NASM_FLAGS   =3D -Ox -f win= 64 -g

-RELEASE_VS2010x86_X64_NASM_FLAGS  =  =3D -Ox -f win64

-NOOPT_VS2010x86_X64_NA= SM_FLAGS     =3D -O0 -f win64 -g

+  DEBUG_VS2010x86_X64_NASM_FLAGS   =3D -Ox -f win64 = -g -DRODATA_SECTION_NAME=3D.rdata

+RELEASE_VS2= 010x86_X64_NASM_FLAGS   =3D -Ox -f win64 -DRODATA_SECTION_NAME=3D= .rdata

+NOOPT_VS2010x86_X64_NASM_FLAGS  &= nbsp;  =3D -O0 -f win64 -g -DRODATA_SECTION_NAME=3D.rdata



  DEBUG_VS201= 0x86_X64_DLINK_FLAGS  =3D /NOLOGO /NODEFAULTLIB /IGNORE:4001 /OPT:REF = /OPT:ICF=3D10 /MAP /ALIGN:32 /SECTION:.xdata,D /SECTION:.pdata,D /Machine:X= 64 /LTCG /DLL /ENTRY:$(IMAGE_ENTRY_POINT) /SUBSYSTEM:EFI_BOOT_SERVICE_DRIVE= R /SAFESEH:NO /BASE:0 /DRIVER /DEBUG

RELEASE_V= S2010x86_X64_DLINK_FLAGS  =3D /NOLOGO /NODEFAULTLIB /IGNORE:4001 /IGNO= RE:4254 /OPT:REF /OPT:ICF=3D10 /MAP /ALIGN:32 /SECTION:.xdata,D /SECTION:.p= data,D /Machine:X64 /LTCG /DLL /ENTRY:$(IMAGE_ENTRY_POINT) /SUBSYSTEM:EFI_B= OOT_SERVICE_DRIVER /SAFESEH:NO /BASE:0 /DRIVER /MERGE:.rdata=3D.data

@@ -913,9 +913,9 @@ NOOPT_VS2012_IA32_CC_FLAGS  = ;      =3D /nologo /arch:IA32 /c /WX /GS- /W4= /Gs32768
RELEASE_VS2012_IA32_ASM_FLAGS    &nb= sp;=3D /nologo /c /WX /W3 /Cx /coff /Zd

NOOPT_= VS2012_IA32_ASM_FLAGS       =3D /nologo /c /W= X /W3 /Cx /coff /Zd /Zi



-  DEBUG_VS2012_IA32_NASM_FLAGS    =3D -Ox -f w= in32 -g

-RELEASE_VS2012_IA32_NASM_FLAGS  =   =3D -Ox -f win32

-NOOPT_VS2012_IA3= 2_NASM_FLAGS      =3D -O0 -f win32 -g

+  DEBUG_VS2012_IA32_NASM_FLAGS    =3D= -Ox -f win32 -g -DRODATA_SECTION_NAME=3D.rdata

+RELEASE_VS2012_IA32_NASM_FLAGS    =3D -Ox -f win32 -DRODA= TA_SECTION_NAME=3D.rdata

+NOOPT_VS2012_IA32_NA= SM_FLAGS      =3D -O0 -f win32 -g -DRODATA_SECTION= _NAME=3D.rdata



&= nbsp; DEBUG_VS2012_IA32_DLINK_FLAGS   =3D /NOLOGO /NODEFAULT= LIB /IGNORE:4001 /OPT:REF /OPT:ICF=3D10 /MAP /ALIGN:32 /SECTION:.xdata,D /S= ECTION:.pdata,D /MACHINE:X86 /LTCG /DLL /ENTRY:$(IMAGE_ENTRY_POINT) /SUBSYS= TEM:EFI_BOOT_SERVICE_DRIVER /SAFESEH:NO /BASE:0 /DRIVER /DEBUG

RELEASE_VS2012_IA32_DLINK_FLAGS   =3D /NOLOGO /N= ODEFAULTLIB /IGNORE:4001 /IGNORE:4254 /OPT:REF /OPT:ICF=3D10 /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 /DRIVE= R /MERGE:.rdata=3D.data

@@ -945,9 +945,9 @@ NO= OPT_VS2012_X64_CC_FLAGS       =3D /nologo /c = /WX /GS- /W4 /Gs32768 /D UNICODE /G
RELEASE_VS2012_X64_ASM_FL= AGS    =3D /nologo /c /WX /W3 /Cx /Zd

NOOPT_VS2012_X64_ASM_FLAGS    =3D /nologo /c /WX /W3 = /Cx /Zd /Zi



- &n= bsp;DEBUG_VS2012_X64_NASM_FLAGS   =3D -Ox -f win64 -g

-RELEASE_VS2012_X64_NASM_FLAGS   =3D -Ox -f win= 64

-NOOPT_VS2012_X64_NASM_FLAGS   &n= bsp; =3D -O0 -f win64 -g

+  DEBUG_VS= 2012_X64_NASM_FLAGS   =3D -Ox -f win64 -g -DRODATA_SECTION_NAME= =3D.rdata

+RELEASE_VS2012_X64_NASM_FLAGS  = ; =3D -Ox -f win64 -DRODATA_SECTION_NAME=3D.rdata

+NOOPT_VS2012_X64_NASM_FLAGS     =3D -O0 -f wi= n64 -g -DRODATA_SECTION_NAME=3D.rdata



  DEBUG_VS2012_X64_DLINK_FLAGS  =3D /N= OLOGO /NODEFAULTLIB /IGNORE:4001 /OPT:REF /OPT:ICF=3D10 /MAP /ALIGN:32 /SEC= TION:.xdata,D /SECTION:.pdata,D /Machine:X64 /LTCG /DLL /ENTRY:$(IMAGE_ENTR= Y_POINT) /SUBSYSTEM:EFI_BOOT_SERVICE_DRIVER /SAFESEH:NO /BASE:0 /DRIVER /DE= BUG

RELEASE_VS2012_X64_DLINK_FLAGS  =3D /= NOLOGO /NODEFAULTLIB /IGNORE:4001 /IGNORE:4254 /OPT:REF /OPT:ICF=3D10 /MAP = /ALIGN:32 /SECTION:.xdata,D /SECTION:.pdata,D /Machine:X64 /LTCG /DLL /ENTR= Y:$(IMAGE_ENTRY_POINT) /SUBSYSTEM:EFI_BOOT_SERVICE_DRIVER /SAFESEH:NO /BASE= :0 /DRIVER /MERGE:.rdata=3D.data

@@ -1024,9 +1= 024,9 @@ NOOPT_VS2012x86_IA32_CC_FLAGS      =3D /n= ologo /arch:IA32 /c /WX /GS- /W4 /Gs32768
RELEASE_VS2012x86_I= A32_ASM_FLAGS   =3D /nologo /c /WX /W3 /Cx /coff /Zd

NOOPT_VS2012x86_IA32_ASM_FLAGS     =3D= /nologo /c /WX /W3 /Cx /coff /Zd /Zi



-  DEBUG_VS2012x86_IA32_NASM_FLAGS  =3D -Ox= -f win32 -g

-RELEASE_VS2012x86_IA32_NASM_FLAG= S  =3D -Ox -f win32

-NOOPT_VS2012x86_IA32= _NASM_FLAGS    =3D -O0 -f win32 -g

+  DEBUG_VS2012x86_IA32_NASM_FLAGS  =3D -Ox -f win32 -g -DR= ODATA_SECTION_NAME=3D.rdata

+RELEASE_VS2012x86= _IA32_NASM_FLAGS  =3D -Ox -f win32 -DRODATA_SECTION_NAME=3D.rdata

+NOOPT_VS2012x86_IA32_NASM_FLAGS    = ;=3D -O0 -f win32 -g -DRODATA_SECTION_NAME=3D.rdata



  DEBUG_VS2012x86_IA32_DLINK_= FLAGS =3D /NOLOGO /NODEFAULTLIB /IGNORE:4001 /OPT:REF /OPT:ICF=3D10 /MAP /A= LIGN: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_F= LAGS =3D /NOLOGO /NODEFAULTLIB /IGNORE:4001 /IGNORE:4254 /OPT:REF /OPT:ICF= =3D10 /MAP /ALIGN:32 /SECTION:.xdata,D /SECTION:.pdata,D /MACHINE:X86 /LTCG= /DLL /ENTRY:$(IMAGE_ENTRY_POINT) /SUBSYSTEM:EFI_BOOT_SERVICE_DRIVER /SAFES= EH:NO /BASE:0 /DRIVER /MERGE:.rdata=3D.data

@@= -1056,9 +1056,9 @@ NOOPT_VS2012x86_X64_CC_FLAGS     &n= bsp; =3D /nologo /c /WX /GS- /W4 /Gs32768 /D UNICODE
REL= EASE_VS2012x86_X64_ASM_FLAGS    =3D /nologo /c /WX /W3 /Cx /= Zd

NOOPT_VS2012x86_X64_ASM_FLAGS   &= nbsp;  =3D /nologo /c /WX /W3 /Cx /Zd /Zi



-  DEBUG_VS2012x86_X64_NASM_FLAGS =   =3D -Ox -f win64 -g

-RELEASE_VS201= 2x86_X64_NASM_FLAGS   =3D -Ox -f win64

-NOOPT_VS2012x86_X64_NASM_FLAGS     =3D -O0 -f win64= -g

+  DEBUG_VS2012x86_X64_NASM_FLAGS &nb= sp; =3D -Ox -f win64 -g -DRODATA_SECTION_NAME=3D.rdata
<= br class=3D"">+RELEASE_VS2012x86_X64_NASM_FLAGS   =3D -Ox -f win6= 4 -DRODATA_SECTION_NAME=3D.rdata

+NOOPT_VS2012= x86_X64_NASM_FLAGS     =3D -O0 -f win64 -g -DRODATA_SEC= TION_NAME=3D.rdata



  DEBUG_VS2012x86_X64_DLINK_FLAGS  =3D /NOLOGO /NODEFAULT= LIB /IGNORE:4001 /OPT:REF /OPT:ICF=3D10 /MAP /ALIGN:32 /SECTION:.xdata,D /S= ECTION:.pdata,D /Machine:X64 /LTCG /DLL /ENTRY:$(IMAGE_ENTRY_POINT) /SUBSYS= TEM:EFI_BOOT_SERVICE_DRIVER /SAFESEH:NO /BASE:0 /DRIVER /DEBUG

RELEASE_VS2012x86_X64_DLINK_FLAGS  =3D /NOLOGO /NODEF= AULTLIB /IGNORE:4001 /IGNORE:4254 /OPT:REF /OPT:ICF=3D10 /MAP /ALIGN:32 /SE= CTION:.xdata,D /SECTION:.pdata,D /Machine:X64 /LTCG /DLL /ENTRY:$(IMAGE_ENT= RY_POINT) /SUBSYSTEM:EFI_BOOT_SERVICE_DRIVER /SAFESEH:NO /BASE:0 /DRIVER /M= ERGE:.rdata=3D.data

@@ -1138,9 +1138,9 @@ NOOP= T_VS2013_IA32_CC_FLAGS        =3D /nolog= o /arch:IA32 /c /WX /GS- /W4 /Gs32768
RELEASE_VS2013_IA32_ASM= _FLAGS     =3D /nologo /c /WX /W3 /Cx /coff /Zd

NOOPT_VS2013_IA32_ASM_FLAGS     &= nbsp; =3D /nologo /c /WX /W3 /Cx /coff /Zd /Zi



-  DEBUG_VS2013_IA32_NASM_FLAGS &n= bsp;  =3D -Ox -f win32 -g

-RELEASE_V= S2013_IA32_NASM_FLAGS    =3D -Ox -f win32

-NOOPT_VS2013_IA32_NASM_FLAGS      =3D = -O0 -f win32 -g

+  DEBUG_VS2013_IA32_NASM= _FLAGS    =3D -Ox -f win32 -g -DRODATA_SECTION_NAME=3D.rdata=

+RELEASE_VS2013_IA32_NASM_FLAGS   &= nbsp;=3D -Ox -f win32 -DRODATA_SECTION_NAME=3D.rdata

+NOOPT_VS2013_IA32_NASM_FLAGS      =3D -O0 = -f win32 -g -DRODATA_SECTION_NAME=3D.rdata


  DEBUG_VS2013_IA32_DLINK_FLAGS  =  =3D /NOLOGO /NODEFAULTLIB /IGNORE:4001 /OPT:REF /OPT:ICF=3D10 /MAP /A= LIGN: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_FLAG= S   =3D /NOLOGO /NODEFAULTLIB /IGNORE:4001 /IGNORE:4254 /OPT:REF = /OPT:ICF=3D10 /MAP /ALIGN:32 /SECTION:.xdata,D /SECTION:.pdata,D /MACHINE:X= 86 /LTCG /DLL /ENTRY:$(IMAGE_ENTRY_POINT) /SUBSYSTEM:EFI_BOOT_SERVICE_DRIVE= R /SAFESEH:NO /BASE:0 /DRIVER /MERGE:.rdata=3D.data

@@ -1170,9 +1170,9 @@ NOOPT_VS2013_X64_CC_FLAGS    &nb= sp;  =3D /nologo /c /WX /GS- /W4 /Gs32768 /D UNICODE /G
RELEASE_VS2013_X64_ASM_FLAGS    =3D /nologo /c /WX /W3= /Cx /Zd

NOOPT_VS2013_X64_ASM_FLAGS  &nbs= p; =3D /nologo /c /WX /W3 /Cx /Zd /Zi


-  DEBUG_VS2013_X64_NASM_FLAGS   = =3D -Ox -f win64 -g

-RELEASE_VS2013_X64_NASM_F= LAGS   =3D -Ox -f win64

-NOOPT_VS201= 3_X64_NASM_FLAGS     =3D -O0 -f win64 -g
=
+  DEBUG_VS2013_X64_NASM_FLAGS   =3D -Ox -f w= in64 -g -DRODATA_SECTION_NAME=3D.rdata

+RELEAS= E_VS2013_X64_NASM_FLAGS   =3D -Ox -f win64 -DRODATA_SECTION_NAME= =3D.rdata

+NOOPT_VS2013_X64_NASM_FLAGS  &= nbsp;  =3D -O0 -f win64 -g -DRODATA_SECTION_NAME=3D.rdata



  DEBUG_VS201= 3_X64_DLINK_FLAGS  =3D /NOLOGO /NODEFAULTLIB /IGNORE:4001 /OPT:REF /OP= T:ICF=3D10 /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_VS20= 13_X64_DLINK_FLAGS  =3D /NOLOGO /NODEFAULTLIB /IGNORE:4001 /IGNORE:425= 4 /OPT:REF /OPT:ICF=3D10 /MAP /ALIGN:32 /SECTION:.xdata,D /SECTION:.pdata,D= /Machine:X64 /LTCG /DLL /ENTRY:$(IMAGE_ENTRY_POINT) /SUBSYSTEM:EFI_BOOT_SE= RVICE_DRIVER /SAFESEH:NO /BASE:0 /DRIVER /MERGE:.rdata=3D.data

@@ -1249,9 +1249,9 @@ NOOPT_VS2013x86_IA32_CC_FLAGS  =     =3D /nologo /arch:IA32 /c /WX /GS- /W4 /Gs32768
RELEASE_VS2013x86_IA32_ASM_FLAGS   =3D /nologo /c /WX = /W3 /Cx /coff /Zd

NOOPT_VS2013x86_IA32_ASM_FLA= GS     =3D /nologo /c /WX /W3 /Cx /coff /Zd /Zi



-  DEBUG_VS2013x86= _IA32_NASM_FLAGS  =3D -Ox -f win32 -g

-RE= LEASE_VS2013x86_IA32_NASM_FLAGS  =3D -Ox -f win32

-NOOPT_VS2013x86_IA32_NASM_FLAGS    =3D -O0 -f win3= 2 -g

+  DEBUG_VS2013x86_IA32_NASM_FLAGS &= nbsp;=3D -Ox -f win32 -g -DRODATA_SECTION_NAME=3D.rdata

+RELEASE_VS2013x86_IA32_NASM_FLAGS  =3D -Ox -f win32 -DRODAT= A_SECTION_NAME=3D.rdata

+NOOPT_VS2013x86_IA32_= NASM_FLAGS    =3D -O0 -f win32 -g -DRODATA_SECTION_NAME=3D.r= data



  = ;DEBUG_VS2013x86_IA32_DLINK_FLAGS =3D /NOLOGO /NODEFAULTLIB /IGNORE:4001 /O= PT:REF /OPT:ICF=3D10 /MAP /ALIGN:32 /SECTION:.xdata,D /SECTION:.pdata,D /MA= CHINE:X86 /LTCG /DLL /ENTRY:$(IMAGE_ENTRY_POINT) /SUBSYSTEM:EFI_BOOT_SERVIC= E_DRIVER /SAFESEH:NO /BASE:0 /DRIVER /DEBUG

RE= LEASE_VS2013x86_IA32_DLINK_FLAGS =3D /NOLOGO /NODEFAULTLIB /IGNORE:4001 /IG= NORE:4254 /OPT:REF /OPT:ICF=3D10 /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=3D.data

@@ -1281,9 +1281,9 @@ NOOPT_VS2013x86_X64_CC_FLAGS=       =3D /nologo /c /WX /GS- /W4 /Gs32768 /= D UNICODE
RELEASE_VS2013x86_X64_ASM_FLAGS    = =3D /nologo /c /WX /W3 /Cx /Zd

NOOPT_VS2013x86= _X64_ASM_FLAGS      =3D /nologo /c /WX /W3 /Cx /Zd= /Zi



-  DEB= UG_VS2013x86_X64_NASM_FLAGS   =3D -Ox -f win64 -g
<= br class=3D"">-RELEASE_VS2013x86_X64_NASM_FLAGS   =3D -Ox -f win6= 4

-NOOPT_VS2013x86_X64_NASM_FLAGS   =   =3D -O0 -f win64 -g

+  DEBUG_= VS2013x86_X64_NASM_FLAGS   =3D -Ox -f win64 -g -DRODATA_SECTION_N= AME=3D.rdata

+RELEASE_VS2013x86_X64_NASM_FLAGS=   =3D -Ox -f win64 -DRODATA_SECTION_NAME=3D.rdata
=
+NOOPT_VS2013x86_X64_NASM_FLAGS     =3D = -O0 -f win64 -g -DRODATA_SECTION_NAME=3D.rdata



  DEBUG_VS2013x86_X64_DLINK_FLAGS =  =3D /NOLOGO /NODEFAULTLIB /IGNORE:4001 /OPT:REF /OPT:ICF=3D10 /MAP /A= LIGN: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_FL= AGS  =3D /NOLOGO /NODEFAULTLIB /IGNORE:4001 /IGNORE:4254 /OPT:REF /OPT= :ICF=3D10 /MAP /ALIGN:32 /SECTION:.xdata,D /SECTION:.pdata,D /Machine:X64 /= LTCG /DLL /ENTRY:$(IMAGE_ENTRY_POINT) /SUBSYSTEM:EFI_BOOT_SERVICE_DRIVER /S= AFESEH:NO /BASE:0 /DRIVER /MERGE:.rdata=3D.data

@@ -1364,9 +1364,9 @@ NOOPT_VS2015_IA32_CC_FLAGS     =    =3D /nologo /arch:IA32 /c /WX /GS- /W4 /Gs32768
RELEASE_VS2015_IA32_ASM_FLAGS     =3D /nologo /c = /WX /W3 /Cx /coff /Zd

NOOPT_VS2015_IA32_ASM_FL= AGS       =3D /nologo /c /WX /W3 /Cx /coff /Z= d /Zi



-  DE= BUG_VS2015_IA32_NASM_FLAGS    =3D -Ox -f win32 -g

-RELEASE_VS2015_IA32_NASM_FLAGS    =3D = -Ox -f win32

-NOOPT_VS2015_IA32_NASM_FLAGS &nb= sp;    =3D -O0 -f win32 -g

+  DEBUG_VS2015_IA32_NASM_FLAGS    =3D -Ox -f win32 -g= -DRODATA_SECTION_NAME=3D.rdata

+RELEASE_VS201= 5_IA32_NASM_FLAGS    =3D -Ox -f win32 -DRODATA_SECTION_NAME= =3D.rdata

+NOOPT_VS2015_IA32_NASM_FLAGS  =     =3D -O0 -f win32 -g -DRODATA_SECTION_NAME=3D.rdata<= br class=3D"">


  DEBU= G_VS2015_IA32_DLINK_FLAGS   =3D /NOLOGO /NODEFAULTLIB /IGNORE:400= 1 /OPT:REF /OPT:ICF=3D10 /MAP /ALIGN:32 /SECTION:.xdata,D /SECTION:.pdata,D= /MACHINE:X86 /LTCG /DLL /ENTRY:$(IMAGE_ENTRY_POINT) /SUBSYSTEM:EFI_BOOT_SE= RVICE_DRIVER /SAFESEH:NO /BASE:0 /DRIVER /DEBUG

RELEASE_VS2015_IA32_DLINK_FLAGS   =3D /NOLOGO /NODEFAULTLIB /IG= NORE:4001 /IGNORE:4254 /OPT:REF /OPT:ICF=3D10 /MAP /ALIGN:32 /SECTION:.xdat= a,D /SECTION:.pdata,D /MACHINE:X86 /LTCG /DLL /ENTRY:$(IMAGE_ENTRY_POINT) /= SUBSYSTEM:EFI_BOOT_SERVICE_DRIVER /SAFESEH:NO /BASE:0 /DRIVER /MERGE:.rdata= =3D.data

@@ -1396,9 +1396,9 @@ NOOPT_VS2015_X6= 4_CC_FLAGS       =3D /nologo /c /WX /GS- /W4 = /Gs32768 /D UNICODE /G
RELEASE_VS2015_X64_ASM_FLAGS  &nb= sp; =3D /nologo /c /WX /W3 /Cx /Zd

NOOPT_= VS2015_X64_ASM_FLAGS    =3D /nologo /c /WX /W3 /Cx /Zd /Zi


-  DEBUG_VS2= 015_X64_NASM_FLAGS   =3D -Ox -f win64 -g

-RELEASE_VS2015_X64_NASM_FLAGS   =3D -Ox -f win64

-NOOPT_VS2015_X64_NASM_FLAGS     = =3D -O0 -f win64 -g

+  DEBUG_VS2015_X64_N= ASM_FLAGS   =3D -Ox -f win64 -g -DRODATA_SECTION_NAME=3D.rdata
+RELEASE_VS2015_X64_NASM_FLAGS   =3D -= Ox -f win64 -DRODATA_SECTION_NAME=3D.rdata

+NO= OPT_VS2015_X64_NASM_FLAGS     =3D -O0 -f win64 -g -DROD= ATA_SECTION_NAME=3D.rdata



  DEBUG_VS2015_X64_DLINK_FLAGS  =3D /NOLOGO /NODEF= AULTLIB /IGNORE:4001 /OPT:REF /OPT:ICF=3D10 /MAP /ALIGN:32 /SECTION:.xdata,= D /SECTION:.pdata,D /Machine:X64 /LTCG /DLL /ENTRY:$(IMAGE_ENTRY_POINT) /SU= BSYSTEM:EFI_BOOT_SERVICE_DRIVER /SAFESEH:NO /BASE:0 /DRIVER /DEBUG

RELEASE_VS2015_X64_DLINK_FLAGS  =3D /NOLOGO /NODE= FAULTLIB /IGNORE:4001 /IGNORE:4254 /OPT:REF /OPT:ICF=3D10 /MAP /ALIGN:32 /S= ECTION:.xdata,D /SECTION:.pdata,D /Machine:X64 /LTCG /DLL /ENTRY:$(IMAGE_EN= TRY_POINT) /SUBSYSTEM:EFI_BOOT_SERVICE_DRIVER /SAFESEH:NO /BASE:0 /DRIVER /= MERGE:.rdata=3D.data

@@ -1476,9 +1476,9 @@ NOO= PT_VS2015x86_IA32_CC_FLAGS      =3D /nologo /arch:= IA32 /c /WX /GS- /W4 /Gs32768
RELEASE_VS2015x86_IA32_ASM_FLAG= S   =3D /nologo /c /WX /W3 /Cx /coff /Zd

NOOPT_VS2015x86_IA32_ASM_FLAGS     =3D /nologo /c= /WX /W3 /Cx /coff /Zd /Zi



-  DEBUG_VS2015x86_IA32_NASM_FLAGS  =3D -Ox -f win32 -= g

-RELEASE_VS2015x86_IA32_NASM_FLAGS  =3D= -Ox -f win32

-NOOPT_VS2015x86_IA32_NASM_FLAGS=    =3D -O0 -f win32 -g

+  = ;DEBUG_VS2015x86_IA32_NASM_FLAGS  =3D -Ox -f win32 -g -DRODATA_SECTION= _NAME=3D.rdata

+RELEASE_VS2015x86_IA32_NASM_FL= AGS  =3D -Ox -f win32 -DRODATA_SECTION_NAME=3D.rdata
+NOOPT_VS2015x86_IA32_NASM_FLAGS    =3D -O0 -f w= in32 -g -DRODATA_SECTION_NAME=3D.rdata



  DEBUG_VS2015x86_IA32_DLINK_FLAGS =3D /NO= LOGO /NODEFAULTLIB /IGNORE:4001 /OPT:REF /OPT:ICF=3D10 /MAP /ALIGN:32 /SECT= ION:.xdata,D /SECTION:.pdata,D /MACHINE:X86 /LTCG /DLL /ENTRY:$(IMAGE_ENTRY= _POINT) /SUBSYSTEM:EFI_BOOT_SERVICE_DRIVER /SAFESEH:NO /BASE:0 /DRIVER /DEB= UG

RELEASE_VS2015x86_IA32_DLINK_FLAGS =3D /NOL= OGO /NODEFAULTLIB /IGNORE:4001 /IGNORE:4254 /OPT:REF /OPT:ICF=3D10 /MAP /AL= IGN: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=3D.data

@@ -1508,9 +1508= ,9 @@ NOOPT_VS2015x86_X64_CC_FLAGS       =3D = /nologo /c /WX /GS- /W4 /Gs32768 /D UNICODE
RELEASE_VS2015x86= _X64_ASM_FLAGS    =3D /nologo /c /WX /W3 /Cx /Zd

NOOPT_VS2015x86_X64_ASM_FLAGS     &nb= sp;=3D /nologo /c /WX /W3 /Cx /Zd /Zi



-  DEBUG_VS2015x86_X64_NASM_FLAGS   = =3D -Ox -f win64 -g

-RELEASE_VS2015x86_X64_NAS= M_FLAGS   =3D -Ox -f win64

-NOOPT_VS= 2015x86_X64_NASM_FLAGS     =3D -O0 -f win64 -g

+  DEBUG_VS2015x86_X64_NASM_FLAGS   =3D= -Ox -f win64 -g -DRODATA_SECTION_NAME=3D.rdata

+RELEASE_VS2015x86_X64_NASM_FLAGS   =3D -Ox -f win64 -DRODATA_S= ECTION_NAME=3D.rdata

+NOOPT_VS2015x86_X64_NASM= _FLAGS     =3D -O0 -f win64 -g -DRODATA_SECTION_NAME=3D= .rdata



 &nb= sp;DEBUG_VS2015x86_X64_DLINK_FLAGS  =3D /NOLOGO /NODEFAULTLIB /IGNORE:= 4001 /OPT:REF /OPT:ICF=3D10 /MAP /ALIGN:32 /SECTION:.xdata,D /SECTION:.pdat= a,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  =3D /NOLOGO /NODEFAULTLIB /IG= NORE:4001 /IGNORE:4254 /OPT:REF /OPT:ICF=3D10 /MAP /ALIGN:32 /SECTION:.xdat= a,D /SECTION:.pdata,D /Machine:X64 /LTCG /DLL /ENTRY:$(IMAGE_ENTRY_POINT) /= SUBSYSTEM:EFI_BOOT_SERVICE_DRIVER /SAFESEH:NO /BASE:0 /DRIVER /MERGE:.rdata= =3D.data

@@ -1586,9 +1586,9 @@ NOOPT_VS2017_IA= 32_CC_FLAGS      =3D /nologo /arch:IA32 /c /WX /GS= - /W4 /Gs32768 /D
RELEASE_VS2017_IA32_ASM_FLAGS   = =3D /nologo /c /WX /W3 /Cx /coff /Zd

NOOPT_VS2= 017_IA32_ASM_FLAGS     =3D /nologo /c /WX /W3 /Cx /coff= /Zd /Zi



-  = ;DEBUG_VS2017_IA32_NASM_FLAGS  =3D -Ox -f win32 -g

-RELEASE_VS2017_IA32_NASM_FLAGS  =3D -Ox -f win32

-NOOPT_VS2017_IA32_NASM_FLAGS    =3D -O= 0 -f win32 -g

+  DEBUG_VS2017_IA32_NASM_F= LAGS  =3D -Ox -f win32 -g -DRODATA_SECTION_NAME=3D.rdata

+RELEASE_VS2017_IA32_NASM_FLAGS  =3D -Ox -f win32 -DRO= DATA_SECTION_NAME=3D.rdata

+NOOPT_VS2017_IA32_= NASM_FLAGS    =3D -O0 -f win32 -g -DRODATA_SECTION_NAME=3D.r= data



  = ;DEBUG_VS2017_IA32_DLINK_FLAGS =3D /NOLOGO /NODEFAULTLIB /IGNORE:4001 /OPT:= REF /OPT:ICF=3D10 /MAP /ALIGN:32 /SECTION:.xdata,D /SECTION:.pdata,D /MACHI= NE:X86 /LTCG /DLL /ENTRY:$(IMAGE_ENTRY_POINT) /SUBSYSTEM:EFI_BOOT_SERVICE_D= RIVER /SAFESEH:NO /BASE:0 /DRIVER /DEBUG

RELEA= SE_VS2017_IA32_DLINK_FLAGS =3D /NOLOGO /NODEFAULTLIB /IGNORE:4001 /IGNORE:4= 254 /OPT:REF /OPT:ICF=3D10 /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=3D.data

@@ -1616,9 +1616,9 @@ NOOPT_VS2017_X64_CC_FLAGS  =      =3D /nologo /c /WX /GS- /W4 /Gs32768 /D UNICO= DE /G
RELEASE_VS2017_X64_ASM_FLAGS    =3D /nol= ogo /c /WX /W3 /Cx /Zd

NOOPT_VS2017_X64_ASM_FL= AGS      =3D /nologo /c /WX /W3 /Cx /Zd /Zi



-  DEBUG_VS2017_X= 64_NASM_FLAGS   =3D -Ox -f win64 -g

= -RELEASE_VS2017_X64_NASM_FLAGS   =3D -Ox -f win64
<= br class=3D"">-NOOPT_VS2017_X64_NASM_FLAGS     =3D -O0 = -f win64 -g

+  DEBUG_VS2017_X64_NASM_FLAG= S   =3D -Ox -f win64 -g -DRODATA_SECTION_NAME=3D.rdata

+RELEASE_VS2017_X64_NASM_FLAGS   =3D -Ox -f = win64 -DRODATA_SECTION_NAME=3D.rdata

+NOOPT_VS= 2017_X64_NASM_FLAGS     =3D -O0 -f win64 -g -DRODATA_SE= CTION_NAME=3D.rdata



  DEBUG_VS2017_X64_DLINK_FLAGS  =3D /NOLOGO /NODEFAULT= LIB /IGNORE:4001 /IGNORE:4281 /OPT:REF /OPT:ICF=3D10 /MAP /ALIGN:32 /SECTIO= N:.xdata,D /SECTION:.pdata,D /Machine:X64 /LTCG /DLL /ENTRY:$(IMAGE_ENTRY_P= OINT) /SUBSYSTEM:EFI_BOOT_SERVICE_DRIVER /SAFESEH:NO /BASE:0 /DRIVER /DEBUG=

RELEASE_VS2017_X64_DLINK_FLAGS  =3D /NOL= OGO /NODEFAULTLIB /IGNORE:4001 /IGNORE:4281 /IGNORE:4254 /OPT:REF /OPT:ICF= =3D10 /MAP /ALIGN:32 /SECTION:.xdata,D /SECTION:.pdata,D /Machine:X64 /LTCG= /DLL /ENTRY:$(IMAGE_ENTRY_POINT) /SUBSYSTEM:EFI_BOOT_SERVICE_DRIVER /SAFES= EH:NO /BASE:0 /DRIVER /MERGE:.rdata=3D.data

@@= -1744,9 +1744,9 @@ NOOPT_VS2019_IA32_CC_FLAGS     &nbs= p;=3D /nologo /arch:IA32 /c /WX /GS- /W4 /Gs32768 /D
RELEASE_= VS2019_IA32_ASM_FLAGS   =3D /nologo /c /WX /W3 /Cx /coff /Zd

NOOPT_VS2019_IA32_ASM_FLAGS    &nbs= p;=3D /nologo /c /WX /W3 /Cx /coff /Zd /Zi


-  DEBUG_VS2019_IA32_NASM_FLAGS  =3D -= Ox -f win32 -g

-RELEASE_VS2019_IA32_NASM_FLAGS=  =3D -Ox -f win32

-NOOPT_VS2019_IA32_NAS= M_FLAGS    =3D -O0 -f win32 -g

= +  DEBUG_VS2019_IA32_NASM_FLAGS  =3D -Ox -f win32 -g -DRODATA_SEC= TION_NAME=3D.rdata

+RELEASE_VS2019_IA32_NASM_F= LAGS  =3D -Ox -f win32 -DRODATA_SECTION_NAME=3D.rdata
+NOOPT_VS2019_IA32_NASM_FLAGS    =3D -O0 -f win= 32 -g -DRODATA_SECTION_NAME=3D.rdata



  DEBUG_VS2019_IA32_DLINK_FLAGS =3D /NOLOGO = /NODEFAULTLIB /IGNORE:4001 /OPT:REF /OPT:ICF=3D10 /MAP /ALIGN:32 /SECTION:.= xdata,D /SECTION:.pdata,D /MACHINE:X86 /LTCG /DLL /ENTRY:$(IMAGE_ENTRY_POIN= T) /SUBSYSTEM:EFI_BOOT_SERVICE_DRIVER /SAFESEH:NO /BASE:0 /DRIVER /DEBUG
RELEASE_VS2019_IA32_DLINK_FLAGS =3D /NOLOGO /NOD= EFAULTLIB /IGNORE:4001 /IGNORE:4254 /OPT:REF /OPT:ICF=3D10 /MAP /ALIGN:32 /= SECTION:.xdata,D /SECTION:.pdata,D /MACHINE:X86 /LTCG /DLL /ENTRY:$(IMAGE_E= NTRY_POINT) /SUBSYSTEM:EFI_BOOT_SERVICE_DRIVER /SAFESEH:NO /BASE:0 /DRIVER = /MERGE:.rdata=3D.data

@@ -1774,9 +1774,9 @@ NO= OPT_VS2019_X64_CC_FLAGS       =3D /nologo /c = /WX /GS- /W4 /Gs32768 /D UNICODE /G
RELEASE_VS2019_X64_ASM_FL= AGS    =3D /nologo /c /WX /W3 /Cx /Zd

NOOPT_VS2019_X64_ASM_FLAGS      =3D /nologo= /c /WX /W3 /Cx /Zd /Zi



-  DEBUG_VS2019_X64_NASM_FLAGS   =3D -Ox -f win64 -g=

-RELEASE_VS2019_X64_NASM_FLAGS   = =3D -Ox -f win64

-NOOPT_VS2019_X64_NASM_FLAGS =     =3D -O0 -f win64 -g

+ =  DEBUG_VS2019_X64_NASM_FLAGS   =3D -Ox -f win64 -g -DRODATA_= SECTION_NAME=3D.rdata

+RELEASE_VS2019_X64_NASM= _FLAGS   =3D -Ox -f win64 -DRODATA_SECTION_NAME=3D.rdata

+NOOPT_VS2019_X64_NASM_FLAGS     = =3D -O0 -f win64 -g -DRODATA_SECTION_NAME=3D.rdata



  DEBUG_VS2019_X64_DLINK_FLAG= S  =3D /NOLOGO /NODEFAULTLIB /IGNORE:4001 /IGNORE:4281 /OPT:REF /OPT:I= CF=3D10 /MAP /ALIGN:32 /SECTION:.xdata,D /SECTION:.pdata,D /Machine:X64 /LT= CG /DLL /ENTRY:$(IMAGE_ENTRY_POINT) /SUBSYSTEM:EFI_BOOT_SERVICE_DRIVER /SAF= ESEH:NO /BASE:0 /DRIVER /DEBUG

RELEASE_VS2019_= X64_DLINK_FLAGS  =3D /NOLOGO /NODEFAULTLIB /IGNORE:4001 /IGNORE:4281 /= IGNORE:4254 /OPT:REF /OPT:ICF=3D10 /MAP /ALIGN:32 /SECTION:.xdata,D /SECTIO= N:.pdata,D /Machine:X64 /LTCG /DLL /ENTRY:$(IMAGE_ENTRY_POINT) /SUBSYSTEM:E= FI_BOOT_SERVICE_DRIVER /SAFESEH:NO /BASE:0 /DRIVER /MERGE:.rdata=3D.data
@@ -2030,7 +2030,7 @@ DEFINE GCC_PP_FLAGS  =             &nb= sp;         =3D -E -x assemble= r-with-cpp -include A
*_GCC48_IA32_DLINK2_FLAGS   &= nbsp;     =3D DEF(GCC48_IA32_DLINK2_FLAGS)

*_GCC48_IA32_RC_FLAGS      &= nbsp;      =3D DEF(GCC_IA32_RC_FLAGS)

*_GCC48_IA32_OBJCOPY_FLAGS     &n= bsp;  =3D

-*_GCC48_IA32_NASM_FLAGS &= nbsp;         =3D -f elf32

+*_GCC48_IA32_NASM_FLAGS     =       =3D -f elf32 -DRODATA_SECTION_NAME=3D.r= odata



 &nbs= p;DEBUG_GCC48_IA32_CC_FLAGS       =3D DEF(GCC= 48_IA32_CC_FLAGS) -Os

RELEASE_GCC48_IA32_CC_FL= AGS       =3D DEF(GCC48_IA32_CC_FLAGS) -Os -W= no-unused-but-set-variable

@@ -2058,7 +2058,7 = @@ RELEASE_GCC48_IA32_CC_FLAGS       =3D DEF(= GCC48_IA32_CC_FLAGS) -Os -Wno-unused-but
*_GCC48_X64_DLINK2_F= LAGS         =3D DEF(GCC48_X64_DLIN= K2_FLAGS)

*_GCC48_X64_RC_FLAGS   &nb= sp;         =3D DEF(GCC_X64_RC= _FLAGS)

*_GCC48_X64_OBJCOPY_FLAGS   =      =3D

-*_GCC48_X64= _NASM_FLAGS           =3D= -f elf64

+*_GCC48_X64_NASM_FLAGS   =         =3D -f elf64 -DRODATA_SECTI= ON_NAME=3D.rodata



  DEBUG_GCC48_X64_CC_FLAGS       = =3D DEF(GCC48_X64_CC_FLAGS) -Os

RELEASE_GCC48_= X64_CC_FLAGS       =3D DEF(GCC48_X64_CC_FLAGS= ) -Os -Wno-unused-but-set-variable

@@ -2170,7 = +2170,7 @@ RELEASE_GCC48_AARCH64_CC_FLAGS   =3D DEF(GCC48_AARCH64= _CC_FLAGS) -Wno-unused-but-s
*_GCC49_IA32_DLINK2_FLAGS  =        =3D DEF(GCC49_IA32_DLINK2_FLAGS)<= br class=3D"">
*_GCC49_IA32_RC_FLAGS     =         =3D DEF(GCC_IA32_RC_FLAGS)<= br class=3D"">
*_GCC49_IA32_OBJCOPY_FLAGS    &= nbsp;   =3D

-*_GCC49_IA32_NASM_= FLAGS           =3D -f el= f32

+*_GCC49_IA32_NASM_FLAGS    = ;       =3D -f elf32 -DRODATA_SECTION_NA= ME=3D.rodata



&nb= sp; DEBUG_GCC49_IA32_CC_FLAGS       =3D = DEF(GCC49_IA32_CC_FLAGS) -Os

RELEASE_GCC49_IA3= 2_CC_FLAGS       =3D DEF(GCC49_IA32_CC_FLAGS)= -Os -Wno-unused-but-set-variable -Wno-unused-const-variable
=
@@ -2198,7 +2198,7 @@ RELEASE_GCC49_IA32_CC_FLAGS  &nbs= p;    =3D DEF(GCC49_IA32_CC_FLAGS) -Os -Wno-unused-but<= br class=3D"">*_GCC49_X64_DLINK2_FLAGS       =   =3D DEF(GCC49_X64_DLINK2_FLAGS)

*_= GCC49_X64_RC_FLAGS          &n= bsp;  =3D DEF(GCC_X64_RC_FLAGS)

*_GC= C49_X64_OBJCOPY_FLAGS        =3D

-*_GCC49_X64_NASM_FLAGS      = ;     =3D -f elf64

+*= _GCC49_X64_NASM_FLAGS          = ; =3D -f elf64 -DRODATA_SECTION_NAME=3D.rodata



  DEBUG_GCC49_X64_CC_FLAGS &n= bsp;     =3D DEF(GCC49_X64_CC_FLAGS) -Os

RELEASE_GCC49_X64_CC_FLAGS     &nb= sp; =3D DEF(GCC49_X64_CC_FLAGS) -Os -Wno-unused-but-set-variable -Wno-= unused-const-variable

@@ -2316,7 +2316,7 @@ RE= LEASE_GCC49_AARCH64_DLINK_XIPFLAGS =3D -z common-page-size=3D0x20
*_GCC5_IA32_DLINK2_FLAGS        &n= bsp;=3D DEF(GCC5_IA32_DLINK2_FLAGS) -no-pie

*_= GCC5_IA32_RC_FLAGS          &n= bsp;  =3D DEF(GCC_IA32_RC_FLAGS)

*_G= CC5_IA32_OBJCOPY_FLAGS        =3D

-*_GCC5_IA32_NASM_FLAGS     &nbs= p;     =3D -f elf32

+= *_GCC5_IA32_NASM_FLAGS         &nbs= p; =3D -f elf32 -DRODATA_SECTION_NAME=3D.rodata



  DEBUG_GCC5_IA32_CC_FLAGS &= nbsp;     =3D DEF(GCC5_IA32_CC_FLAGS) -flto -Os
  DEBUG_GCC5_IA32_DLINK_FLAGS  &n= bsp; =3D DEF(GCC5_IA32_X64_DLINK_FLAGS) -flto -Os -Wl,-m,elf_i386,--of= ormat=3Delf32-i386

@@ -2348,7 +2348,7 @@ RELEA= SE_GCC5_IA32_DLINK_FLAGS    =3D DEF(GCC5_IA32_X64_DLINK_FLAG= S) -flto -Os -Wl,
*_GCC5_X64_DLINK2_FLAGS    &= nbsp;     =3D DEF(GCC5_X64_DLINK2_FLAGS)

*_GCC5_X64_RC_FLAGS      &nbs= p;       =3D DEF(GCC_X64_RC_FLAGS)

*_GCC5_X64_OBJCOPY_FLAGS     &n= bsp;   =3D

-*_GCC5_X64_NASM_FLA= GS            =3D -f= elf64

+*_GCC5_X64_NASM_FLAGS   &nbs= p;        =3D -f elf64 -DRODATA_SEC= TION_NAME=3D.rodata



  DEBUG_GCC5_X64_CC_FLAGS      &nb= sp; =3D DEF(GCC5_X64_CC_FLAGS) -flto -DUSING_LTO -Os
  DEBUG_GCC5_X64_DLINK_FLAGS     = =3D DEF(GCC5_X64_DLINK_FLAGS) -flto -Os

@@ -25= 89,7 +2589,7 @@ DEFINE CLANG38_ALL_CC_FLAGS      &= nbsp;  =3D DEF(GCC48_ALL_CC_FLAGS) DEF(CLANG38_WARNIN
*_CLANG38_IA32_ASM_FLAGS         = ;   =3D DEF(GCC5_ASM_FLAGS) -m32 -march=3Di386 DEF(CLANG38_I= A32_TARGET)

*_CLANG38_IA32_RC_FLAGS  &nbs= p;          =3D DEF(GCC_I= A32_RC_FLAGS)

*_CLANG38_IA32_OBJCOPY_FLAGS &nb= sp;      =3D

-*_= CLANG38_IA32_NASM_FLAGS         &nb= sp; =3D -f elf32

+*_CLANG38_IA32_NASM_FLA= GS           =3D -f elf32= -DRODATA_SECTION_NAME=3D.rodata

*_CLANG38_IA3= 2_PP_FLAGS           &nbs= p; =3D DEF(GCC_PP_FLAGS) DEF(CLANG38_IA32_TARGET)

*_CLANG38_IA32_ASLPP_FLAGS       &nb= sp;  =3D DEF(GCC_ASLPP_FLAGS) DEF(CLANG38_IA32_TARGET)

*_CLANG38_IA32_VFRPP_FLAGS     &nb= sp;    =3D DEF(GCC_VFRPP_FLAGS) DEF(CLANG38_IA32_TARGET= )

@@ -2626,7 +2626,7 @@ NOOPT_CLANG38_IA32_DLI= NK2_FLAGS     =3D DEF(GCC5_IA32_DLINK2_FLAGS) -O0
*_CLANG38_X64_ASM_FLAGS        =     =3D DEF(GCC5_ASM_FLAGS) -m64 DEF(CLANG38_X64_TARGET= )

*_CLANG38_X64_RC_FLAGS    &nb= sp;        =3D DEF(GCC_X64_RC_FLAGS= )

*_CLANG38_X64_OBJCOPY_FLAGS   &nbs= p;    =3D

-*_CLANG38_X64_N= ASM_FLAGS           =3D -= f elf64

+*_CLANG38_X64_NASM_FLAGS   =         =3D -f elf64 -DRODATA_SECTI= ON_NAME=3D.rodata

*_CLANG38_X64_PP_FLAGS  = ;           =3D DEF(= GCC_PP_FLAGS) DEF(CLANG38_X64_TARGET)

*_CLANG3= 8_X64_ASLPP_FLAGS          =3D= DEF(GCC_ASLPP_FLAGS) DEF(CLANG38_X64_TARGET)

= *_CLANG38_X64_VFRPP_FLAGS         &= nbsp;=3D DEF(GCC_VFRPP_FLAGS) DEF(CLANG38_X64_TARGET)

@@ -2777,7 +2777,7 @@ DEFINE CLANGPDB_ALL_CC_FLAGS   &nbs= p;     =3D DEF(GCC48_ALL_CC_FLAGS) DEF(CLANGPDB_WA= RN
*_CLANGPDB_IA32_ASLCC_FLAGS      =     =3D DEF(GCC_ASLCC_FLAGS) -m32 -fno-lto DEF(CLANGPDB= _IA32_TARGET)

*_CLANGPDB_IA32_ASM_FLAGS  =           =3D DEF(GCC_ASM= _FLAGS) -m32 -march=3Di386 DEF(CLANGPDB_IA32_TARGET)

*_CLANGPDB_IA32_OBJCOPY_FLAGS       &n= bsp;=3D

-*_CLANGPDB_IA32_NASM_FLAGS  &nbs= p;        =3D -f win32

+*_CLANGPDB_IA32_NASM_FLAGS      =      =3D -f win32 -DRODATA_SECTION_NAME=3D.rdata
*_CLANGPDB_IA32_PP_FLAGS    &nbs= p;        =3D DEF(GCC_PP_FLAGS) DEF= (CLANGPDB_IA32_TARGET)

*_CLANGPDB_IA32_ASLPP_F= LAGS          =3D DEF(GCC_ASLP= P_FLAGS) DEF(CLANGPDB_IA32_TARGET)

*_CLANGPDB_= IA32_VFRPP_FLAGS          =3D = DEF(GCC_VFRPP_FLAGS) DEF(CLANGPDB_IA32_TARGET)

@@ -2811,7 +2811,7 @@ NOOPT_CLANGPDB_IA32_DLINK2_FLAGS    &= nbsp;=3D
*_CLANGPDB_X64_ASLCC_FLAGS     &= nbsp;    =3D DEF(GCC_ASLCC_FLAGS) -m64 -fno-lto DEF(CLA= NGPDB_X64_TARGET)

*_CLANGPDB_X64_ASM_FLAGS &nb= sp;          =3D DEF(GCC_= ASM_FLAGS) -m64 DEF(CLANGPDB_X64_TARGET)

*_CLA= NGPDB_X64_OBJCOPY_FLAGS        =3D

-*_CLANGPDB_X64_NASM_FLAGS     =       =3D -f win64

+*_CLANGPDB_X64_NASM_FLAGS        &nb= sp;  =3D -f win64 -DRODATA_SECTION_NAME=3D.rdata
*_CLANGPDB_X64_PP_FLAGS       &n= bsp;     =3D DEF(GCC_PP_FLAGS) DEF(CLANGPDB_X64_TA= RGET)

*_CLANGPDB_X64_ASLPP_FLAGS   &= nbsp;      =3D DEF(GCC_ASLPP_FLAGS) DEF(CLANG= PDB_X64_TARGET)

*_CLANGPDB_X64_VFRPP_FLAGS &nb= sp;        =3D DEF(GCC_VFRPP_FLAGS)= DEF(CLANGPDB_X64_TARGET)

@@ -2878,7 +2878,7 @= @ DEFINE CLANGDWARF_X64_DLINK2_FLAGS       &n= bsp;=3D -Wl,--defsym=3DPECOFF_HEADER_SIZE=3D0x22
*_CLANGDWARF= _IA32_ASM_FLAGS           = ; =3D DEF(GCC5_ASM_FLAGS) -m32 -march=3Di386 DEF(CLANG38_IA32_TARGET)<= br class=3D"">
*_CLANGDWARF_IA32_RC_FLAGS    &= nbsp;        =3D DEF(GCC_IA32_RC_FL= AGS)

*_CLANGDWARF_IA32_OBJCOPY_FLAGS  &nb= sp;     =3D

-*_CLANGD= WARF_IA32_NASM_FLAGS          =  =3D -f elf32

+*_CLANGDWARF_IA32_NASM_FLA= GS           =3D -f elf32= -DRODATA_SECTION_NAME=3D.rodata

*_CLANGDWARF_= IA32_PP_FLAGS           &= nbsp; =3D DEF(GCC_PP_FLAGS) DEF(CLANG38_IA32_TARGET)
*_CLANGDWARF_IA32_ASLPP_FLAGS      &nb= sp;   =3D DEF(GCC_ASLPP_FLAGS) DEF(CLANG38_IA32_TARGET)

*_CLANGDWARF_IA32_VFRPP_FLAGS    &n= bsp;     =3D DEF(GCC_VFRPP_FLAGS) DEF(CLANG38_IA32= _TARGET)

@@ -2914,7 +2914,7 @@ NOOPT_CLANGDWAR= F_IA32_DLINK2_FLAGS     =3D DEF(CLANGDWARF_IA32_DLINK2_= FLAGS) -O0 -
*_CLANGDWARF_X64_ASM_FLAGS    &nb= sp;       =3D DEF(GCC5_ASM_FLAGS) -m64 D= EF(CLANG38_X64_TARGET)

*_CLANGDWARF_X64_RC_FLA= GS             = =3D DEF(GCC_X64_RC_FLAGS)

*_CLANGDWARF_X64_OBJ= COPY_FLAGS        =3D

-*_CLANGDWARF_X64_NASM_FLAGS       = ;    =3D -f elf64

+*_CLANG= DWARF_X64_NASM_FLAGS          =  =3D -f elf64 -DRODATA_SECTION_NAME=3D.rodata

*_CLANGDWARF_X64_PP_FLAGS        &= nbsp;    =3D DEF(GCC_PP_FLAGS) DEF(CLANG38_X64_TARGET)<= br class=3D"">
*_CLANGDWARF_X64_ASLPP_FLAGS    = ;      =3D DEF(GCC_ASLPP_FLAGS) DEF(CLANG38_X= 64_TARGET)

*_CLANGDWARF_X64_VFRPP_FLAGS  =         =3D DEF(GCC_VFRPP_FLAGS) DE= F(CLANG38_X64_TARGET)

@@ -2985,7 +2985,7 @@ RE= LEASE_XCODE5_IA32_DLINK_FLAGS      =3D -arch i386 = -u _$(IMAGE_ENTRY_POINT) -e _$
  DEBUG_XCODE5_IA32_= ASM_FLAGS  =3D -arch i386 -g

  = NOOPT_XCODE5_IA32_ASM_FLAGS  =3D -arch i386 -g

RELEASE_XCODE5_IA32_ASM_FLAGS  =3D -arch i386

-      *_XCODE5_IA32_NASM_FLAGS =3D -f = macho32

+      *_XCOD= E5_IA32_NASM_FLAGS =3D -f macho32 -DRODATA_SECTION_NAME=3D.rodata




An EFI Mach-O file does not contain a .rodata section. A Mach-O conta= ins a __DATA segment that is broken up into sections. For a typical EFI ima= ge there are __const, __data, __bss sections in the __DATA segment [1].

Yes, and ".rodata" is almost a synon= ym 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 mto= c [2] tool used to convert mach-O to PE/COFF converts the entire __DATA seg= ment (__const, __data, and __bss) into the .data section. Thus adding any k= ind of new data section is a no-op at best.

This is a part I missed, because I do not have an Xcode toolchai= n at hand, so thanks for investigating. However this, in my opinion, is a f= law with Mach-O/mtoc and not with my patch. It seems like the only differen= ce between __TEXT,__const and __DATA,__const is whether the data is targete= d 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 transitiv= ity). I could change the macro definition to explicitly declare __TEXT,__co= nst, but that would still put the compiler-emitted data in the wrong sectio= n. Does Xcode provide anything remotely similar to GNU linker scripts which= we can use to move the section?

Please also n= ote that .rodata is used for Xcode-based toolchains already (in fact, all t= oolchains, and this is the issue), I'm not regressing anything. I just expe= cted it to work fine as-is. This patch mainly fixed PE/COFF-based toolchain= s, 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 somet= hing 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 co= mpiler emit an error when data in __TEXT,__const is targeted by a relocatio= n?

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 th= at for free. We generally only run into this for hand coded assembler and t= he 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 m= apped to __TEXT,__const[2] for Xcode clang, and this is done by nasm (I du= mped the object file). GenFw and mtoc only run on executables, also they te= nd to be conservative as they need to keep the layout the same and the rela= tive layout between sections the same, but in this case it is nasm placing = the data in the text section. 

So what I=E2=80=99d like to see in the patch is to defin= e RODATA_SECTION_NAME to match what is actually happening. So for XCODE tha= t would be `__TEXT,__const` not `.rodata`. We should double check what is h= appening for ELF on x86, ARM, RiskV, etc. and do the same thing. I assume a= ll 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 SECTI= ON translations under the hood to make code portable, and I=E2=80=99d = 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 goin= g to imply that a .rodata section is being used by that specific toolchain,= and I think that is much worse than the current =E2=80=9Cmagic=E2=80=9D be= havior in nasm. We are much better off explaining what is really happening,= since it is not very obvious.   


[2] $otool -V -s __TEXT __const  Build/OvmfX64/DEBUG_XCODE= 5/X64/UefiCpuPkg/Library/BaseUefiCpuLib/BaseUefiCpuLib/OUTPUT/X64/Initializ= eFpu.obj
Build//OvmfX64/DEBUG_XCODE5/X64/UefiCpuPkg/Library/BaseUefiCpuLib/BaseUef= iCpuLib/OUTPUT/X64/InitializeFpu.obj:
Contents of (__TEXT,__const) section
0000001d  7f 03 80 1f 00 00
=

otool -l Build//OvmfX64/DEBU= G_XCODE5/X64/UefiCpuPkg/Library/BaseUefiCpuLib/BaseUefiCpuLib/OUTPUT/X64/In= itializeFpu.obj
Build/OvmfX64/= DEBUG_XCODE5/X64/UefiCpuPkg/Library/BaseUefiCpuLib/BaseUefiCpuLib/OUTPUT/X6= 4/InitializeFpu.obj:
Lo= ad command 0
  &nb= sp;   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<= /div>
      size 0x00= 0000000000001d
  &= nbsp; offset 288
 =     align 2^0 (1)
    reloff 328
    nreloc 2
     flags 0x80000500
 reserved1 0
 reserved2 0
Section
&nb= sp; sectname __const
&n= bsp;  segname __TEXT
      addr 0x000000000000001d
      size 0x0000000000000006
    offset 320
     align = 2^0 (1)
    r= eloff 0
    n= reloc 0
   &n= bsp; flags 0x00000000
&= nbsp;reserved1 0
 = reserved2 0
Load comman= d 1
    = cmd LC_SYMTAB
 cm= dsize 24
  symoff = 344
   nsyms = 3
  stroff 392
 strsize 63
     

Thanks,

Andrew Fish


Thanks for you= r notes and insight!

Best regards,
Marvin


[1]
"Fo= r compatibility with other Unix platforms, the following standard names are= also supported:
[...]
.rodata  =3D __DATA= ,__const data
[...]
If the .rodata section cont= ains no relocations, it is instead put into the __TEXT,__const section unle= ss this section has already been specified explicitly."
https= ://www.nasm.us/xdoc/2.13.01/html/nasmdoc7.html


[1] otool -lh Dxe= Core.dll
...
Load command 1
 = ;     cmd LC_SEGMENT_64
  cmdsize 312
  segname __DATA
   vmaddr 0x00000000000= 2b000
   vmsize 0x0000000000147000
&n= bsp; fileoff 180224
 filesize 8192
  = maxprot 0x00000003
 initprot 0x00000003
&n= bsp;  nsects 3
    flags 0x0
Sec= tion
  sectname __const
   segna= me __DATA
      addr 0x000000000002b000
      size 0x0000000000000718
  &= nbsp; offset 180224
     align 2^4 (16)
    reloff 0
    nreloc 0
     flags 0x00000000
 reserved1 0=
 reserved2 0
Section
 = sectname __data
   segname __DATA
&n= bsp;     addr 0x000000000002b720
    &nbs= p; size 0x00000000000014f0
    offset 182048
     align 2^4 (16)
    relo= ff 0
    nreloc 0
    = flags 0x00000000
 reserved1 0
 reser= ved2 0
Section
  sectname __bss
   segname __DATA
      addr 0= x000000000002cc10
      size 0x0000000000144e1= 1
    offset 0
     al= ign 2^4 (16)
    reloff 0
  &nbs= p; nreloc 0
     flags 0x00000001
 reserved1 0
 reserved2 0
=E2=80=A6=

[2] https://ope= nsource.apple.com/source/cctools/cctools-698/efitools/mtoc.c.auto.html = <https://opensource.apple.com/source/cctoo= ls/cctools-698/efitools/mtoc.c.auto.html>

[3] otool more output=E2=80=A6
Load command 0
      cmd LC_SEGMENT_64
  cmdsize 3= 92
  segname __TEXT
   vmaddr 0x= 0000000000000240
   vmsize 0x00000000000296c0
  fileoff 1184
 filesize 169664
  maxprot 0x00000005
 initprot 0x00000005
   nsects 4
    flags 0x0
Section
  sectname __text
 =   segname __TEXT
      addr 0x00000000000= 00240
      size 0x000000000002489f
    offset 1184
     align 2^3= (8)
    reloff 0
    nrelo= c 0
     flags 0x80000400
 = reserved1 0
 reserved2 0
Section
  sectname __cstring
   segname __TEXT      addr 0x0000000000024ae0
&nb= sp;     size 0x000000000000496d
    offse= t 150848
     align 2^4 (16)
&nb= sp;   reloff 0
    nreloc 0
&nbs= p;    flags 0x00000002
 reserved1 0
 reserved2 0
Section
  sectname= __ustring
   segname __TEXT
  &= nbsp;   addr 0x000000000002944e
      siz= e 0x0000000000000048
    offset 169646
     align 2^1 (2)
    reloff 0    nreloc 0
     flags = 0x00000000
 reserved1 0
 reserved2 0<= br class=3D"">Section
  sectname __const
&= nbsp;  segname __TEXT
      addr 0x000000= 00000294a0
      size 0x0000000000000448
    offset 169728
     alig= n 2^4 (16)
    reloff 0
   = nreloc 0
     flags 0x00000000
=  reserved1 0
 reserved2 0

Thanks,

Andrew Fish



  DEBUG_XCODE5_IA32_CC_FLAGS   =3D -arch i386 -c -g -O= s       -Wall -Werror -include AutoGen.h -fun= signed-char -fno-stack-protector -fno-builtin -fshort-wchar -fasm-blocks -m= dynamic-no-pic -mno-implicit-float -mms-bitfields -msoft-float -Wno-unused-= parameter -Wno-missing-braces -Wno-missing-field-initializers -Wno-tautolog= ical-compare -Wno-sign-compare -Wno-varargs -ftrap-function=3Dundefined_beh= avior_has_been_optimized_away_by_clang $(PLATFORM_FLAGS)

@@ -3003,7 +3003,7 @@ RELEASE_XCODE5_X64_DLINK_FLAGS   = ;   =3D -arch x86_64 -u _$(IMAGE_ENTRY_POINT) -e _
  DEBUG_XCODE5_X64_ASM_FLAGS  =3D -arch x86_64 -g

  NOOPT_XCODE5_X64_ASM_FLAGS  =3D -= arch x86_64 -g

RELEASE_XCODE5_X64_ASM_FLAGS &n= bsp;=3D -arch x86_64

-     = ; *_XCODE5_X64_NASM_FLAGS =3D -f macho64

= +      *_XCODE5_X64_NASM_FLAGS =3D -f macho64 -DRO= DATA_SECTION_NAME=3D.rodata

*_XCODE5_*_PP_FLAG= S         =3D -E -x assembler-with-= cpp -include AutoGen.h

*_XCODE5_*_VFRPP_FLAGS =      =3D -x c -E -P -DVFRCOMPILE -include $(MODULE= _NAME)StrDefs.h



= --
2.31.1









=20
--Apple-Mail=_FA64783E-62B8-4108-BA00-AAA333284BD0--