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.web11.60.1628624160462286917 for ; Tue, 10 Aug 2021 12:36:01 -0700 Authentication-Results: mx.groups.io; dkim=pass header.i=@apple.com header.s=20180706 header.b=aYBW6DEz; 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 17AJYILJ064844; Tue, 10 Aug 2021 12:35:56 -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=XtaKxk73mYyCTvqIdVHwKpzLDPSUbVRG9KXR3i6N0nM=; b=aYBW6DEz7baqq0q6XGoYdZtyPUVVjcED6HpD9b1WDtRDXVS0XkG5gJky1kCAEvPYRInX wk6r+QAzocAbWHoZdieODV6LEEGD6JO3fwbn+GKdCXmp9bp9a3+v0ZZ5YkIkthaUo0gY YTHJsXP+2bAjWDFrEDyCAUhWKupIchdZpEP6Wu/xxv4XdOER00Qe6n87T9k1FPizc+Hy E4XaJP+uKL9uLnd18VwIVbY9T9ERi6s0m+RICnYGgHTxF/ATMXYCjImnJA2V9G84EN+x gcIWR+DaVcSyv/WyU3vQkvhutJ5I6VSKmao8lewXmO5T5U4216KGQBsXBt6Qz999qeGi 5g== Received: from rn-mailsvcp-mta-lapp03.rno.apple.com (rn-mailsvcp-mta-lapp03.rno.apple.com [10.225.203.151]) by ma1-aaemail-dr-lapp01.apple.com with ESMTP id 3a9ru432a4-2 (version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128 verify=NO); Tue, 10 Aug 2021 12:35:56 -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-lapp03.rno.apple.com (Oracle Communications Messaging Server 8.1.0.9.20210415 64bit (built Apr 15 2021)) with ESMTPS id <0QXN007C82FV0WF0@rn-mailsvcp-mta-lapp03.rno.apple.com>; Tue, 10 Aug 2021 12:35:55 -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 <0QXN009002DGJZ00@rn-mailsvcp-mmp-lapp03.rno.apple.com>; Tue, 10 Aug 2021 12:35:55 -0700 (PDT) X-Va-A: X-Va-T-CD: cb83049425a79c8a5fb9f1dafa0fda92 X-Va-E-CD: f4d0bb655782ab825c7a9328fb164ddf X-Va-R-CD: c72241e6c7ad74ea4fd9f173994aebfa X-Va-CD: 0 X-Va-ID: 6cdd1eee-1fe4-4451-909e-4a093b6a1cea X-V-A: X-V-T-CD: cb83049425a79c8a5fb9f1dafa0fda92 X-V-E-CD: f4d0bb655782ab825c7a9328fb164ddf X-V-R-CD: c72241e6c7ad74ea4fd9f173994aebfa X-V-CD: 0 X-V-ID: f2831f71-0aab-4c3c-810d-4abf1a92ec07 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 <0QXN00OEH2FT6K00@rn-mailsvcp-mmp-lapp03.rno.apple.com>; Tue, 10 Aug 2021 12:35:55 -0700 (PDT) From: "Andrew Fish" Message-id: <15D26D2D-D4E8-485A-B40F-A89B3C67BF37@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:35:53 -0700 In-reply-to: Cc: edk2-devel-groups-io , Bob Feng , Liming Gao , Yuwei Chen , Vitaly Cheptsov To: =?utf-8?Q?Marvin_H=C3=A4user?= References: <252525969122e83d9fb9b83edc95c4f6dfd233b4.1628502434.git.mhaeuser@posteo.de> <7787F470-EEE0-4E13-93C1-508844167749@apple.com> 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=_EE73C4F2-C12F-4C79-8FF9-751E8F6A1B96" --Apple-Mail=_EE73C4F2-C12F-4C79-8FF9-751E8F6A1B96 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset=utf-8 > On Aug 10, 2021, at 1:27 AM, Marvin H=C3=A4user wrot= e: >=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_d= ef.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 /W= X /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_SECTION= _NAME=3D.rdata >>>=20 >>> +RELEASE_VS2008_IA32_NASM_FLAGS =3D -Ox -f win32 -DRODATA_SECTION_NA= ME=3D.rdata >>>=20 >>> +NOOPT_VS2008_IA32_NASM_FLAGS =3D -O0 -f win32 -g -DRODATA_SECTION= _NAME=3D.rdata >>>=20 >>>=20 >>>=20 >>> DEBUG_VS2008_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 >>>=20 >>> RELEASE_VS2008_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 >>>=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_N= AME=3D.rdata >>>=20 >>> +RELEASE_VS2008_X64_NASM_FLAGS =3D -Ox -f win64 -DRODATA_SECTION_NAME= =3D.rdata >>>=20 >>> +NOOPT_VS2008_X64_NASM_FLAGS =3D -O0 -f win64 -g -DRODATA_SECTION_N= AME=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_SERV= ICE_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 /SECTI= ON:.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 /Zd >>>=20 >>> NOOPT_VS2008x86_IA32_ASM_FLAGS =3D /nologo /c /WX /W3 /Cx /coff /Zd= /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_SECTIO= N_NAME=3D.rdata >>>=20 >>> +RELEASE_VS2008x86_IA32_NASM_FLAGS =3D -Ox -f win32 -DRODATA_SECTION_N= AME=3D.rdata >>>=20 >>> +NOOPT_VS2008x86_IA32_NASM_FLAGS =3D -O0 -f win32 -g -DRODATA_SECTIO= N_NAME=3D.rdata >>>=20 >>>=20 >>>=20 >>> DEBUG_VS2008x86_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_VS2008x86_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 >>> @@ -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_SECTIO= N_NAME=3D.rdata >>>=20 >>> +RELEASE_VS2008x86_X64_NASM_FLAGS =3D -Ox -f win64 -DRODATA_SECTION_N= AME=3D.rdata >>>=20 >>> +NOOPT_VS2008x86_X64_NASM_FLAGS =3D -O0 -f win64 -g -DRODATA_SECTIO= N_NAME=3D.rdata >>>=20 >>>=20 >>>=20 >>> DEBUG_VS2008x86_X64_DLINK_FLAGS =3D /NOLOGO /NODEFAULTLIB /IGNORE:40= 01 /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_S= ERVICE_DRIVER /SAFESEH:NO /BASE:0 /DRIVER /DEBUG >>>=20 >>> RELEASE_VS2008x86_X64_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:X64 /LTCG /DLL /ENTRY:$(IMAGE_ENTRY_POINT) /SUBSYST= EM:EFI_BOOT_SERVICE_DRIVER /SAFESEH:NO /BASE:0 /DRIVER /MERGE:.rdata=3D.dat= a >>>=20 >>> @@ -688,9 +688,9 @@ NOOPT_VS2010_IA32_CC_FLAGS =3D /nologo /c /W= X /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_SECTION= _NAME=3D.rdata >>>=20 >>> +RELEASE_VS2010_IA32_NASM_FLAGS =3D -Ox -f win32 -DRODATA_SECTION_NA= ME=3D.rdata >>>=20 >>> +NOOPT_VS2010_IA32_NASM_FLAGS =3D -O0 -f win32 -g -DRODATA_SECTION= _NAME=3D.rdata >>>=20 >>>=20 >>>=20 >>> DEBUG_VS2010_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 >>>=20 >>> RELEASE_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 >>>=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_N= AME=3D.rdata >>>=20 >>> +RELEASE_VS2010_X64_NASM_FLAGS =3D -Ox -f win64 -DRODATA_SECTION_NAME= =3D.rdata >>>=20 >>> +NOOPT_VS2010_X64_NASM_FLAGS =3D -O0 -f win64 -g -DRODATA_SECTION_N= AME=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_SERV= ICE_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 /SECTI= ON:.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 /Zd >>>=20 >>> NOOPT_VS2010x86_IA32_ASM_FLAGS =3D /nologo /c /WX /W3 /Cx /coff /Zd= /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_SECTIO= N_NAME=3D.rdata >>>=20 >>> +RELEASE_VS2010x86_IA32_NASM_FLAGS =3D -Ox -f win32 -DRODATA_SECTION_N= AME=3D.rdata >>>=20 >>> +NOOPT_VS2010x86_IA32_NASM_FLAGS =3D -O0 -f win32 -g -DRODATA_SECTIO= N_NAME=3D.rdata >>>=20 >>>=20 >>>=20 >>> DEBUG_VS2010x86_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_VS2010x86_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 >>> @@ -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_SECTIO= N_NAME=3D.rdata >>>=20 >>> +RELEASE_VS2010x86_X64_NASM_FLAGS =3D -Ox -f win64 -DRODATA_SECTION_N= AME=3D.rdata >>>=20 >>> +NOOPT_VS2010x86_X64_NASM_FLAGS =3D -O0 -f win64 -g -DRODATA_SECTIO= N_NAME=3D.rdata >>>=20 >>>=20 >>>=20 >>> DEBUG_VS2010x86_X64_DLINK_FLAGS =3D /NOLOGO /NODEFAULTLIB /IGNORE:40= 01 /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_S= ERVICE_DRIVER /SAFESEH:NO /BASE:0 /DRIVER /DEBUG >>>=20 >>> RELEASE_VS2010x86_X64_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:X64 /LTCG /DLL /ENTRY:$(IMAGE_ENTRY_POINT) /SUBSYST= EM:EFI_BOOT_SERVICE_DRIVER /SAFESEH:NO /BASE:0 /DRIVER /MERGE:.rdata=3D.dat= a >>>=20 >>> @@ -913,9 +913,9 @@ NOOPT_VS2012_IA32_CC_FLAGS =3D /nologo /arch= :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_SECTION= _NAME=3D.rdata >>>=20 >>> +RELEASE_VS2012_IA32_NASM_FLAGS =3D -Ox -f win32 -DRODATA_SECTION_NA= ME=3D.rdata >>>=20 >>> +NOOPT_VS2012_IA32_NASM_FLAGS =3D -O0 -f win32 -g -DRODATA_SECTION= _NAME=3D.rdata >>>=20 >>>=20 >>>=20 >>> DEBUG_VS2012_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 >>>=20 >>> RELEASE_VS2012_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 >>>=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_N= AME=3D.rdata >>>=20 >>> +RELEASE_VS2012_X64_NASM_FLAGS =3D -Ox -f win64 -DRODATA_SECTION_NAME= =3D.rdata >>>=20 >>> +NOOPT_VS2012_X64_NASM_FLAGS =3D -O0 -f win64 -g -DRODATA_SECTION_N= AME=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_SERV= ICE_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 /SECTI= ON:.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 /a= rch:IA32 /c /WX /GS- /W4 /Gs32768 >>> RELEASE_VS2012x86_IA32_ASM_FLAGS =3D /nologo /c /WX /W3 /Cx /coff /Zd >>>=20 >>> NOOPT_VS2012x86_IA32_ASM_FLAGS =3D /nologo /c /WX /W3 /Cx /coff /Zd= /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_SECTIO= N_NAME=3D.rdata >>>=20 >>> +RELEASE_VS2012x86_IA32_NASM_FLAGS =3D -Ox -f win32 -DRODATA_SECTION_N= AME=3D.rdata >>>=20 >>> +NOOPT_VS2012x86_IA32_NASM_FLAGS =3D -O0 -f win32 -g -DRODATA_SECTIO= N_NAME=3D.rdata >>>=20 >>>=20 >>>=20 >>> DEBUG_VS2012x86_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_VS2012x86_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 >>> @@ -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_SECTIO= N_NAME=3D.rdata >>>=20 >>> +RELEASE_VS2012x86_X64_NASM_FLAGS =3D -Ox -f win64 -DRODATA_SECTION_N= AME=3D.rdata >>>=20 >>> +NOOPT_VS2012x86_X64_NASM_FLAGS =3D -O0 -f win64 -g -DRODATA_SECTIO= N_NAME=3D.rdata >>>=20 >>>=20 >>>=20 >>> DEBUG_VS2012x86_X64_DLINK_FLAGS =3D /NOLOGO /NODEFAULTLIB /IGNORE:40= 01 /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_S= ERVICE_DRIVER /SAFESEH:NO /BASE:0 /DRIVER /DEBUG >>>=20 >>> RELEASE_VS2012x86_X64_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:X64 /LTCG /DLL /ENTRY:$(IMAGE_ENTRY_POINT) /SUBSYST= EM:EFI_BOOT_SERVICE_DRIVER /SAFESEH:NO /BASE:0 /DRIVER /MERGE:.rdata=3D.dat= a >>>=20 >>> @@ -1138,9 +1138,9 @@ NOOPT_VS2013_IA32_CC_FLAGS =3D /nologo /ar= ch: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_SECTION= _NAME=3D.rdata >>>=20 >>> +RELEASE_VS2013_IA32_NASM_FLAGS =3D -Ox -f win32 -DRODATA_SECTION_NA= ME=3D.rdata >>>=20 >>> +NOOPT_VS2013_IA32_NASM_FLAGS =3D -O0 -f win32 -g -DRODATA_SECTION= _NAME=3D.rdata >>>=20 >>>=20 >>>=20 >>> DEBUG_VS2013_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 >>>=20 >>> RELEASE_VS2013_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 >>>=20 >>> @@ -1170,9 +1170,9 @@ NOOPT_VS2013_X64_CC_FLAGS =3D /nologo /c /W= X /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_N= AME=3D.rdata >>>=20 >>> +RELEASE_VS2013_X64_NASM_FLAGS =3D -Ox -f win64 -DRODATA_SECTION_NAME= =3D.rdata >>>=20 >>> +NOOPT_VS2013_X64_NASM_FLAGS =3D -O0 -f win64 -g -DRODATA_SECTION_N= AME=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_SERV= ICE_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 /SECTI= ON:.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 /a= rch:IA32 /c /WX /GS- /W4 /Gs32768 >>> RELEASE_VS2013x86_IA32_ASM_FLAGS =3D /nologo /c /WX /W3 /Cx /coff /Zd >>>=20 >>> NOOPT_VS2013x86_IA32_ASM_FLAGS =3D /nologo /c /WX /W3 /Cx /coff /Zd= /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_SECTIO= N_NAME=3D.rdata >>>=20 >>> +RELEASE_VS2013x86_IA32_NASM_FLAGS =3D -Ox -f win32 -DRODATA_SECTION_N= AME=3D.rdata >>>=20 >>> +NOOPT_VS2013x86_IA32_NASM_FLAGS =3D -O0 -f win32 -g -DRODATA_SECTIO= N_NAME=3D.rdata >>>=20 >>>=20 >>>=20 >>> DEBUG_VS2013x86_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_VS2013x86_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 >>> @@ -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_SECTIO= N_NAME=3D.rdata >>>=20 >>> +RELEASE_VS2013x86_X64_NASM_FLAGS =3D -Ox -f win64 -DRODATA_SECTION_N= AME=3D.rdata >>>=20 >>> +NOOPT_VS2013x86_X64_NASM_FLAGS =3D -O0 -f win64 -g -DRODATA_SECTIO= N_NAME=3D.rdata >>>=20 >>>=20 >>>=20 >>> DEBUG_VS2013x86_X64_DLINK_FLAGS =3D /NOLOGO /NODEFAULTLIB /IGNORE:40= 01 /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_S= ERVICE_DRIVER /SAFESEH:NO /BASE:0 /DRIVER /DEBUG >>>=20 >>> RELEASE_VS2013x86_X64_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:X64 /LTCG /DLL /ENTRY:$(IMAGE_ENTRY_POINT) /SUBSYST= EM:EFI_BOOT_SERVICE_DRIVER /SAFESEH:NO /BASE:0 /DRIVER /MERGE:.rdata=3D.dat= a >>>=20 >>> @@ -1364,9 +1364,9 @@ NOOPT_VS2015_IA32_CC_FLAGS =3D /nologo /ar= ch: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_SECTION= _NAME=3D.rdata >>>=20 >>> +RELEASE_VS2015_IA32_NASM_FLAGS =3D -Ox -f win32 -DRODATA_SECTION_NA= ME=3D.rdata >>>=20 >>> +NOOPT_VS2015_IA32_NASM_FLAGS =3D -O0 -f win32 -g -DRODATA_SECTION= _NAME=3D.rdata >>>=20 >>>=20 >>>=20 >>> DEBUG_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 >>>=20 >>> RELEASE_VS2015_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 >>>=20 >>> @@ -1396,9 +1396,9 @@ NOOPT_VS2015_X64_CC_FLAGS =3D /nologo /c /W= X /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_N= AME=3D.rdata >>>=20 >>> +RELEASE_VS2015_X64_NASM_FLAGS =3D -Ox -f win64 -DRODATA_SECTION_NAME= =3D.rdata >>>=20 >>> +NOOPT_VS2015_X64_NASM_FLAGS =3D -O0 -f win64 -g -DRODATA_SECTION_N= AME=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_SERV= ICE_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 /SECTI= ON:.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 /a= rch:IA32 /c /WX /GS- /W4 /Gs32768 >>> RELEASE_VS2015x86_IA32_ASM_FLAGS =3D /nologo /c /WX /W3 /Cx /coff /Zd >>>=20 >>> NOOPT_VS2015x86_IA32_ASM_FLAGS =3D /nologo /c /WX /W3 /Cx /coff /Zd= /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_SECTIO= N_NAME=3D.rdata >>>=20 >>> +RELEASE_VS2015x86_IA32_NASM_FLAGS =3D -Ox -f win32 -DRODATA_SECTION_N= AME=3D.rdata >>>=20 >>> +NOOPT_VS2015x86_IA32_NASM_FLAGS =3D -O0 -f win32 -g -DRODATA_SECTIO= N_NAME=3D.rdata >>>=20 >>>=20 >>>=20 >>> DEBUG_VS2015x86_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_VS2015x86_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 >>> @@ -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_SECTIO= N_NAME=3D.rdata >>>=20 >>> +RELEASE_VS2015x86_X64_NASM_FLAGS =3D -Ox -f win64 -DRODATA_SECTION_N= AME=3D.rdata >>>=20 >>> +NOOPT_VS2015x86_X64_NASM_FLAGS =3D -O0 -f win64 -g -DRODATA_SECTIO= N_NAME=3D.rdata >>>=20 >>>=20 >>>=20 >>> DEBUG_VS2015x86_X64_DLINK_FLAGS =3D /NOLOGO /NODEFAULTLIB /IGNORE:40= 01 /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_S= ERVICE_DRIVER /SAFESEH:NO /BASE:0 /DRIVER /DEBUG >>>=20 >>> RELEASE_VS2015x86_X64_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:X64 /LTCG /DLL /ENTRY:$(IMAGE_ENTRY_POINT) /SUBSYST= EM:EFI_BOOT_SERVICE_DRIVER /SAFESEH:NO /BASE:0 /DRIVER /MERGE:.rdata=3D.dat= a >>>=20 >>> @@ -1586,9 +1586,9 @@ NOOPT_VS2017_IA32_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 >>>=20 >>> NOOPT_VS2017_IA32_ASM_FLAGS =3D /nologo /c /WX /W3 /Cx /coff /Zd /Z= i >>>=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_N= AME=3D.rdata >>>=20 >>> +RELEASE_VS2017_IA32_NASM_FLAGS =3D -Ox -f win32 -DRODATA_SECTION_NAME= =3D.rdata >>>=20 >>> +NOOPT_VS2017_IA32_NASM_FLAGS =3D -O0 -f win32 -g -DRODATA_SECTION_N= AME=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_SERV= ICE_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 /SECTI= ON:.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 /W= X /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_N= AME=3D.rdata >>>=20 >>> +RELEASE_VS2017_X64_NASM_FLAGS =3D -Ox -f win64 -DRODATA_SECTION_NAME= =3D.rdata >>>=20 >>> +NOOPT_VS2017_X64_NASM_FLAGS =3D -O0 -f win64 -g -DRODATA_SECTION_N= AME=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 /SECTI= ON:.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:.x= data,D /SECTION:.pdata,D /Machine:X64 /LTCG /DLL /ENTRY:$(IMAGE_ENTRY_POINT= ) /SUBSYSTEM:EFI_BOOT_SERVICE_DRIVER /SAFESEH:NO /BASE:0 /DRIVER /MERGE:.rd= ata=3D.data >>>=20 >>> @@ -1744,9 +1744,9 @@ NOOPT_VS2019_IA32_CC_FLAGS =3D /nologo /arch= :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 /Z= i >>>=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_N= AME=3D.rdata >>>=20 >>> +RELEASE_VS2019_IA32_NASM_FLAGS =3D -Ox -f win32 -DRODATA_SECTION_NAME= =3D.rdata >>>=20 >>> +NOOPT_VS2019_IA32_NASM_FLAGS =3D -O0 -f win32 -g -DRODATA_SECTION_N= AME=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_SERV= ICE_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 /SECTI= ON:.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 /W= X /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_N= AME=3D.rdata >>>=20 >>> +RELEASE_VS2019_X64_NASM_FLAGS =3D -Ox -f win64 -DRODATA_SECTION_NAME= =3D.rdata >>>=20 >>> +NOOPT_VS2019_X64_NASM_FLAGS =3D -O0 -f win64 -g -DRODATA_SECTION_N= AME=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 /SECTI= ON:.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:.x= data,D /SECTION:.pdata,D /Machine:X64 /LTCG /DLL /ENTRY:$(IMAGE_ENTRY_POINT= ) /SUBSYSTEM:EFI_BOOT_SERVICE_DRIVER /SAFESEH:NO /BASE:0 /DRIVER /MERGE:.rd= ata=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 -Wno= -unused-but-set-variable >>>=20 >>> @@ -2058,7 +2058,7 @@ RELEASE_GCC48_IA32_CC_FLAGS =3D DEF(GCC48_I= A32_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-u= nused-but-set-variable >>>=20 >>> @@ -2170,7 +2170,7 @@ RELEASE_GCC48_AARCH64_CC_FLAGS =3D DEF(GCC48_AA= RCH64_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 -Wno= -unused-but-set-variable -Wno-unused-const-variable >>>=20 >>> @@ -2198,7 +2198,7 @@ RELEASE_GCC49_IA32_CC_FLAGS =3D DEF(GCC49_I= A32_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-u= nused-but-set-variable -Wno-unused-const-variable >>>=20 >>> @@ -2316,7 +2316,7 @@ RELEASE_GCC49_AARCH64_DLINK_XIPFLAGS =3D -z commo= n-page-size=3D0x20 >>> *_GCC5_IA32_DLINK2_FLAGS =3D DEF(GCC5_IA32_DLINK2_FLAGS) -no-pi= e >>>=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) -fl= to -Os -Wl,-m,elf_i386,--oformat=3Delf32-i386 >>>=20 >>> @@ -2348,7 +2348,7 @@ RELEASE_GCC5_IA32_DLINK_FLAGS =3D DEF(GCC5_IA3= 2_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 -DUSI= NG_LTO -Os >>>=20 >>> DEBUG_GCC5_X64_DLINK_FLAGS =3D DEF(GCC5_X64_DLINK_FLAGS) -flto -O= s >>>=20 >>> @@ -2589,7 +2589,7 @@ DEFINE CLANG38_ALL_CC_FLAGS =3D DEF(GCC48= _ALL_CC_FLAGS) DEF(CLANG38_WARNIN >>> *_CLANG38_IA32_ASM_FLAGS =3D DEF(GCC5_ASM_FLAGS) -m32 -march= =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_NAME= =3D.rodata >>>=20 >>> *_CLANG38_IA32_PP_FLAGS =3D DEF(GCC_PP_FLAGS) DEF(CLANG38_I= A32_TARGET) >>>=20 >>> *_CLANG38_IA32_ASLPP_FLAGS =3D DEF(GCC_ASLPP_FLAGS) DEF(CLANG3= 8_IA32_TARGET) >>>=20 >>> *_CLANG38_IA32_VFRPP_FLAGS =3D DEF(GCC_VFRPP_FLAGS) DEF(CLANG3= 8_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(CLA= NG38_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_X6= 4_TARGET) >>>=20 >>> *_CLANG38_X64_ASLPP_FLAGS =3D DEF(GCC_ASLPP_FLAGS) DEF(CLANG38= _X64_TARGET) >>>=20 >>> *_CLANG38_X64_VFRPP_FLAGS =3D DEF(GCC_VFRPP_FLAGS) DEF(CLANG38= _X64_TARGET) >>>=20 >>> @@ -2777,7 +2777,7 @@ DEFINE CLANGPDB_ALL_CC_FLAGS =3D DEF(GCC4= 8_ALL_CC_FLAGS) DEF(CLANGPDB_WARN >>> *_CLANGPDB_IA32_ASLCC_FLAGS =3D DEF(GCC_ASLCC_FLAGS) -m32 -fno= -lto DEF(CLANGPDB_IA32_TARGET) >>>=20 >>> *_CLANGPDB_IA32_ASM_FLAGS =3D DEF(GCC_ASM_FLAGS) -m32 -march= =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_NAM= E=3D.rdata >>>=20 >>> *_CLANGPDB_IA32_PP_FLAGS =3D DEF(GCC_PP_FLAGS) DEF(CLANGPDB= _IA32_TARGET) >>>=20 >>> *_CLANGPDB_IA32_ASLPP_FLAGS =3D DEF(GCC_ASLPP_FLAGS) DEF(CLANG= PDB_IA32_TARGET) >>>=20 >>> *_CLANGPDB_IA32_VFRPP_FLAGS =3D DEF(GCC_VFRPP_FLAGS) DEF(CLANG= PDB_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(CLA= NGPDB_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_NAME= =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(CLANGP= DB_X64_TARGET) >>>=20 >>> *_CLANGPDB_X64_VFRPP_FLAGS =3D DEF(GCC_VFRPP_FLAGS) DEF(CLANGP= DB_X64_TARGET) >>>=20 >>> @@ -2878,7 +2878,7 @@ DEFINE CLANGDWARF_X64_DLINK2_FLAGS =3D -Wl= ,--defsym=3DPECOFF_HEADER_SIZE=3D0x22 >>> *_CLANGDWARF_IA32_ASM_FLAGS =3D DEF(GCC5_ASM_FLAGS) -m32 -ma= rch=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_N= AME=3D.rodata >>>=20 >>> *_CLANGDWARF_IA32_PP_FLAGS =3D DEF(GCC_PP_FLAGS) DEF(CLANG3= 8_IA32_TARGET) >>>=20 >>> *_CLANGDWARF_IA32_ASLPP_FLAGS =3D DEF(GCC_ASLPP_FLAGS) DEF(CLA= NG38_IA32_TARGET) >>>=20 >>> *_CLANGDWARF_IA32_VFRPP_FLAGS =3D DEF(GCC_VFRPP_FLAGS) DEF(CLA= NG38_IA32_TARGET) >>>=20 >>> @@ -2914,7 +2914,7 @@ NOOPT_CLANGDWARF_IA32_DLINK2_FLAGS =3D DEF(CL= ANGDWARF_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_NA= ME=3D.rodata >>>=20 >>> *_CLANGDWARF_X64_PP_FLAGS =3D DEF(GCC_PP_FLAGS) DEF(CLANG38= _X64_TARGET) >>>=20 >>> *_CLANGDWARF_X64_ASLPP_FLAGS =3D DEF(GCC_ASLPP_FLAGS) DEF(CLAN= G38_X64_TARGET) >>>=20 >>> *_CLANGDWARF_X64_VFRPP_FLAGS =3D DEF(GCC_VFRPP_FLAGS) DEF(CLAN= G38_X64_TARGET) >>>=20 >>> @@ -2985,7 +2985,7 @@ RELEASE_XCODE5_IA32_DLINK_FLAGS =3D -arch i3= 86 -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 contains= a __DATA segment that is broken up into sections. For a typical EFI image = there are __const, __data, __bss sections in the __DATA segment [1]. >=20 > Yes, and ".rodata" is almost a synonym for "__DATA,__const", with a small= exception [1]. Maybe it'd be clearer if the macro was renamed to "NASM_ROD= ATA_SECTION_NAME", to indicate this is not just a "raw" name, but NASM give= s 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 ad= ding 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 hand= , so thanks for investigating. However this, in my opinion, is a flaw with = Mach-O/mtoc and not with my patch. It seems like the only difference betwee= n __TEXT,__const and __DATA,__const is whether the data is targeted by a re= location 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 m= ay not be merged into .text in an earlier step, I assume transitivity). I c= ould change the macro definition to explicitly declare __TEXT,__const, but = that would still put the compiler-emitted data in the wrong section. Does X= code provide anything remotely similar to GNU linker scripts which we can u= se 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 anythi= ng. I just expected it to work fine as-is. This patch mainly fixed PE/COFF-= based toolchains, which get both .rdata from the compiler and .rodata with = RX permissions from NASM, because ".rodata" only has a semantic meaning for= ELF and Mach-O outputs, but not for PE/COFF. >=20 >>=20 >> If you want something to be read only for Xcode/clang you are better off= putting it in the __TEXT section [3]. The __TEXT section is read only and = for X64 can not even contain relocations. >=20 > Well, this kind of is an issue. We would need to introduce an arbitrary c= onstraint on the relocation part that holds only for Xcode-based toolchains= . Does the compiler emit an error when data in __TEXT,__const is targeted b= y a relocation? The Xcode linker emits a fatal error on X64 for a relocation in the __TEXT = section, everything needs to be RIP relative and the compiler does that for= free. We generally only run into this for hand coded assembler and the fix= is to use RIP relative addressing in the assembly.=20 > Also see above regarding compiler-emitted __DATA,__const. >=20 OK so the current nasm `SECTION .rodata`[1] gets mapped to __TEXT,__const[= 2] for Xcode clang, and this is done by nasm (I dumped the object file). Ge= nFw and mtoc only run on executables, also they tend to be conservative as = they need to keep the layout the same and the relative layout between secti= ons the same, but in this case it is nasm placing the data in the text sect= ion.=20 So what I=E2=80=99d like to see in the patch is to define RODATA_SECTION_NA= ME to match what is actually happening. So for XCODE that would be `__TEXT,= __const` not `.rodata`. We should double check what is happening for ELF on= x86, ARM, RiskV, etc. and do the same thing. I assume all the tools that g= enerate PE/COFF directly are good with .rodata? I think it is likely as sim= ple as dumping the EFL object file in objdump or gdb for the given toolchai= n (like my Xcode example). TL;DR It looks to me like nasm does some SECTION translations under the hoo= d 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 revie= w having NASM_RODATA_SECTION_NAME is going to imply that a .rodata section = is being used by that specific toolchain, and I think that is much worse th= an the current =E2=80=9Cmagic=E2=80=9D behavior in nasm. We are much better= off explaining what is really happening, since it is not very obvious. = =20 [1] https://github.com/tianocore/edk2/blob/master/UefiCpuPkg/Library/BaseUe= fiCpuLib/X64/InitializeFpu.nasm#L14 [2] $otool -V -s __TEXT __const Build/OvmfX64/DEBUG_XCODE5/X64/UefiCpuPkg/= Library/BaseUefiCpuLib/BaseUefiCpuLib/OUTPUT/X64/InitializeFpu.obj Build//OvmfX64/DEBUG_XCODE5/X64/UefiCpuPkg/Library/BaseUefiCpuLib/BaseUefiC= puLib/OUTPUT/X64/InitializeFpu.obj: Contents of (__TEXT,__const) section 0000001d 7f 03 80 1f 00 00 $ otool -l Build//OvmfX64/DEBUG_XCODE5/X64/UefiCpuPkg/Library/BaseUefiCpuLi= b/BaseUefiCpuLib/OUTPUT/X64/InitializeFpu.obj Build/OvmfX64/DEBUG_XCODE5/X64/UefiCpuPkg/Library/BaseUefiCpuLib/BaseUefiCp= uLib/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 Thanks, Andrew Fish > Thanks for your notes and insight! >=20 > Best regards, > Marvin >=20 >=20 > [1] > "For compatibility with other Unix platforms, the following standard name= s are also supported: > [...] > .rodata =3D __DATA,__const data > [...] > If the .rodata section contains no relocations, it is instead put into th= e __TEXT,__const section unless this section has already been specified exp= licitly." > 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/mto= c.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 -We= rror -include AutoGen.h -funsigned-char -fno-stack-protector -fno-builtin -= fshort-wchar -fasm-blocks -mdynamic-no-pic -mno-implicit-float -mms-bitfiel= ds -msoft-float -Wno-unused-parameter -Wno-missing-braces -Wno-missing-fiel= d-initializers -Wno-tautological-compare -Wno-sign-compare -Wno-varargs -ft= rap-function=3Dundefined_behavior_has_been_optimized_away_by_clang $(PLATFO= RM_FLAGS) >>>=20 >>> @@ -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 >>>=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 AutoG= en.h >>>=20 >>> *_XCODE5_*_VFRPP_FLAGS =3D -x c -E -P -DVFRCOMPILE -include $(MODU= LE_NAME)StrDefs.h >>>=20 >>>=20 >>>=20 >>> --=20 >>> 2.31.1 >>>=20 >>>=20 >>>=20 >>>=20 >>>=20 >>>=20 >>>=20 >>=20 >>=20 >=20 --Apple-Mail=_EE73C4F2-C12F-4C79-8FF9-751E8F6A1B96 Content-Transfer-Encoding: quoted-printable Content-Type: text/html; charset=utf-8

On Aug 10, 20= 21, at 1:27 AM, Marvin H=C3=A4user <mhaeuser@posteo.de> wrote:

On 10/08/2021 06:19, Andre= w Fish via groups.io wrote:


On Aug 9, 2021, at 2:51 AM, Marvin = H=C3=A4user <mhaeuser@p= osteo.de <mailto:mh= aeuser@posteo.de>> wrote:

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

Different toolchains of the EDK II build system may generate ELF or
Mach-O files, which use the ".rodata" naming convention, or PE/COF= F
files, which use the ".rdata" naming convention. Section pe= rmissions
are chosen based on this name per file format by NA= SM. To harden
image permission security, and to save space by= avoiding both
".rdata" and ".rodata" sections being emitted,= expose the appropriate
name as a preprocessor constant.

Cc: Bob Feng <bob.c.feng@intel.com <mailto:bob.c.feng@intel.com>>
Cc: Liming Gao <gaoliming@byosoft.com.cn <mailto:gaoliming@byosoft.com.cn>>
Cc:= Yuwei Chen <yuwei.ch= en@intel.com <mai= lto:yuwei.chen@intel.com>>
Cc: Vitaly Cheptsov <= vit9696@protonmail.com= <mailto:vit969= 6@protonmail.com>>
Signed-off-by: Marvin H=C3=A4use= r <mhaeuser@posteo.de <mailto:mhaeuser@pos= teo.de>>
---
BaseTools/Conf/tools_def= .template | 172 ++++++++++----------
1 file changed, 86 inser= tions(+), 86 deletions(-)

diff --git a/BaseToo= ls/Conf/tools_def.template b/BaseTools/Conf/tools_def.template
index 2e6b382ab623..84d464916c4d 100755
--- a/BaseTools/Con= f/tools_def.template
+++ b/BaseTools/Conf/tools_def.template<= br class=3D"">@@ -463,9 +463,9 @@ NOOPT_VS2008_IA32_CC_FLAGS   &n= bsp;    =3D /nologo /c /WX /GS- /W4 /Gs32768 /D UNICODE=
RELEASE_VS2008_IA32_ASM_FLAGS     =3D /n= ologo /c /WX /W3 /Cx /coff /Zd

NOOPT_VS2008_IA= 32_ASM_FLAGS       =3D /nologo /c /WX /W3 /Cx= /coff /Zd /Zi



-=  DEBUG_VS2008_IA32_NASM_FLAGS    =3D -Ox -f win32 -g
-RELEASE_VS2008_IA32_NASM_FLAGS   &nb= sp;=3D -Ox -f win32

-NOOPT_VS2008_IA32_NASM_FL= AGS      =3D -O0 -f win32 -g

+  DEBUG_VS2008_IA32_NASM_FLAGS    =3D -Ox -f w= in32 -g -DRODATA_SECTION_NAME=3D.rdata

+RELEAS= E_VS2008_IA32_NASM_FLAGS    =3D -Ox -f win32 -DRODATA_SECTIO= N_NAME=3D.rdata

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



 &nbs= p;DEBUG_VS2008_IA32_DLINK_FLAGS   =3D /NOLOGO /NODEFAULTLIB /IGNO= RE:4001 /OPT:REF /OPT:ICF=3D10 /MAP /ALIGN:32 /SECTION:.xdata,D /SECTION:.p= data,D /MACHINE:X86 /LTCG /DLL /ENTRY:$(IMAGE_ENTRY_POINT) /SUBSYSTEM:EFI_B= OOT_SERVICE_DRIVER /SAFESEH:NO /BASE:0 /DRIVER /DEBUG

RELEASE_VS2008_IA32_DLINK_FLAGS   =3D /NOLOGO /NODEFAULTL= IB /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_PO= INT) /SUBSYSTEM:EFI_BOOT_SERVICE_DRIVER /SAFESEH:NO /BASE:0 /DRIVER /MERGE:= .rdata=3D.data

@@ -495,9 +495,9 @@ NOOPT_VS200= 8_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

NO= OPT_VS2008_X64_ASM_FLAGS    =3D /nologo /c /WX /W3 /Cx /Zd /= Zi



-  DEBUG= _VS2008_X64_NASM_FLAGS   =3D -Ox -f win64 -g

-RELEASE_VS2008_X64_NASM_FLAGS   =3D -Ox -f win64

-NOOPT_VS2008_X64_NASM_FLAGS     = ;=3D -O0 -f win64 -g

+  DEBUG_VS2008_X64_= NASM_FLAGS   =3D -Ox -f win64 -g -DRODATA_SECTION_NAME=3D.rdata
+RELEASE_VS2008_X64_NASM_FLAGS   =3D = -Ox -f win64 -DRODATA_SECTION_NAME=3D.rdata

+N= OOPT_VS2008_X64_NASM_FLAGS     =3D -O0 -f win64 -g -DRO= DATA_SECTION_NAME=3D.rdata



  DEBUG_VS2008_X64_DLINK_FLAGS  =3D /NOLOGO /NODE= FAULTLIB /IGNORE:4001 /OPT:REF /OPT:ICF=3D10 /MAP /ALIGN:32 /SECTION:.xdata= ,D /SECTION:.pdata,D /Machine:X64 /LTCG /DLL /ENTRY:$(IMAGE_ENTRY_POINT) /S= UBSYSTEM:EFI_BOOT_SERVICE_DRIVER /SAFESEH:NO /BASE:0 /DRIVER /DEBUG

RELEASE_VS2008_X64_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:X64 /LTCG /DLL /ENTRY:$(IMAGE_E= NTRY_POINT) /SUBSYSTEM:EFI_BOOT_SERVICE_DRIVER /SAFESEH:NO /BASE:0 /DRIVER = /MERGE:.rdata=3D.data

@@ -574,9 +574,9 @@ NOOP= T_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     =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  =3D -Ox -f win32 -g -DRODATA_SECTION= _NAME=3D.rdata

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



  DEBUG_VS2008x86_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_VS2008x86_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

@@ -605,9 +605,9= @@ NOOPT_VS2008x86_X64_CC_FLAGS       =3D /n= ologo /c /WX /GS- /W4 /Gs32768 /D UNICODE
RELEASE_VS2008x86_X= 64_ASM_FLAGS    =3D /nologo /c /WX /W3 /Cx /Zd

NOOPT_VS2008x86_X64_ASM_FLAGS      = ;=3D /nologo /c /WX /W3 /Cx /Zd /Zi



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

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

-NOOPT_VS200= 8x86_X64_NASM_FLAGS     =3D -O0 -f win64 -g

+  DEBUG_VS2008x86_X64_NASM_FLAGS   =3D -O= x -f win64 -g -DRODATA_SECTION_NAME=3D.rdata

+= RELEASE_VS2008x86_X64_NASM_FLAGS   =3D -Ox -f win64 -DRODATA_SECT= ION_NAME=3D.rdata

+NOOPT_VS2008x86_X64_NASM_FL= AGS     =3D -O0 -f win64 -g -DRODATA_SECTION_NAME=3D.rd= ata



  = DEBUG_VS2008x86_X64_DLINK_FLAGS  =3D /NOLOGO /NODEFAULTLIB /IGNORE:400= 1 /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 /DEBUG

RELEASE_VS2008x86_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 /ENTRY:$(IMAGE_ENTRY_POINT) /SUBS= YSTEM:EFI_BOOT_SERVICE_DRIVER /SAFESEH: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
RELEASE_VS2010_IA32_ASM_FLAGS  &nbs= p;  =3D /nologo /c /WX /W3 /Cx /coff /Zd

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



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

-RELEASE_VS2010_IA32_NASM= _FLAGS    =3D -Ox -f win32

-NOO= PT_VS2010_IA32_NASM_FLAGS      =3D -O0 -f win32 -g=

+  DEBUG_VS2010_IA32_NASM_FLAGS  &n= bsp; =3D -Ox -f win32 -g -DRODATA_SECTION_NAME=3D.rdata
=
+RELEASE_VS2010_IA32_NASM_FLAGS    =3D -Ox -f= win32 -DRODATA_SECTION_NAME=3D.rdata

+NOOPT_V= S2010_IA32_NASM_FLAGS      =3D -O0 -f win32 -g -DR= ODATA_SECTION_NAME=3D.rdata


  DEBUG_VS2010_IA32_DLINK_FLAGS   =3D /NOLO= GO /NODEFAULTLIB /IGNORE:4001 /OPT:REF /OPT:ICF=3D10 /MAP /ALIGN:32 /SECTIO= N:.xdata,D /SECTION:.pdata,D /MACHINE:X86 /LTCG /DLL /ENTRY:$(IMAGE_ENTRY_P= OINT) /SUBSYSTEM:EFI_BOOT_SERVICE_DRIVER /SAFESEH:NO /BASE:0 /DRIVER /DEBUG=

RELEASE_VS2010_IA32_DLINK_FLAGS   = =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 /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_VS= 2010_X64_ASM_FLAGS    =3D /nologo /c /WX /W3 /Cx /Zd

NOOPT_VS2010_X64_ASM_FLAGS    =3D /nol= ogo /c /WX /W3 /Cx /Zd /Zi



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

-RELEASE_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_NAS= M_FLAGS   =3D -Ox -f win64 -DRODATA_SECTION_NAME=3D.rdata

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



  DEBUG_VS2010_X64_DLINK_FLAG= S  =3D /NOLOGO /NODEFAULTLIB /IGNORE:4001 /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 /DEBUG

RELEASE_VS2010_X64_DLINK_FLA= GS  =3D /NOLOGO /NODEFAULTLIB /IGNORE:4001 /IGNORE:4254 /OPT:REF /OPT:= ICF=3D10 /MAP /ALIGN:32 /SECTION:.xdata,D /SECTION:.pdata,D /Machine:X64 /L= TCG /DLL /ENTRY:$(IMAGE_ENTRY_POINT) /SUBSYSTEM:EFI_BOOT_SERVICE_DRIVER /SA= FESEH:NO /BASE:0 /DRIVER /MERGE:.rdata=3D.data

@@ -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 /Zd<= br class=3D"">
NOOPT_VS2010x86_IA32_ASM_FLAGS   &nb= sp; =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_VS2010x86_IA32_NASM_FLAGS  =3D -Ox -f = win32 -g -DRODATA_SECTION_NAME=3D.rdata

+RELEA= SE_VS2010x86_IA32_NASM_FLAGS  =3D -Ox -f win32 -DRODATA_SECTION_NAME= =3D.rdata

+NOOPT_VS2010x86_IA32_NASM_FLAGS &nb= sp;  =3D -O0 -f win32 -g -DRODATA_SECTION_NAME=3D.rdata



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

RELEASE_VS2010x= 86_IA32_DLINK_FLAGS =3D /NOLOGO /NODEFAULTLIB /IGNORE:4001 /IGNORE:4254 /OP= T:REF /OPT:ICF=3D10 /MAP /ALIGN:32 /SECTION:.xdata,D /SECTION:.pdata,D /MAC= HINE:X86 /LTCG /DLL /ENTRY:$(IMAGE_ENTRY_POINT) /SUBSYSTEM:EFI_BOOT_SERVICE= _DRIVER /SAFESEH:NO /BASE:0 /DRIVER /MERGE:.rdata=3D.data
@@ -831,9 +831,9 @@ NOOPT_VS2010x86_X64_CC_FLAGS   &n= bsp;   =3D /nologo /c /WX /GS- /W4 /Gs32768 /D UNICODE
RELEASE_VS2010x86_X64_ASM_FLAGS    =3D /nologo /c /= WX /W3 /Cx /Zd

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



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

-R= ELEASE_VS2010x86_X64_NASM_FLAGS   =3D -Ox -f win64
=
-NOOPT_VS2010x86_X64_NASM_FLAGS     =3D = -O0 -f win64 -g

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

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

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


=
  DEBUG_VS2010x86_X64_DLINK_FLAGS  =3D /NOLOG= O /NODEFAULTLIB /IGNORE:4001 /OPT:REF /OPT:ICF=3D10 /MAP /ALIGN:32 /SECTION= :.xdata,D /SECTION:.pdata,D /Machine:X64 /LTCG /DLL /ENTRY:$(IMAGE_ENTRY_PO= INT) /SUBSYSTEM:EFI_BOOT_SERVICE_DRIVER /SAFESEH:NO /BASE:0 /DRIVER /DEBUG<= br class=3D"">
RELEASE_VS2010x86_X64_DLINK_FLAGS  =3D /N= OLOGO /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 /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_VS201= 2_IA32_ASM_FLAGS     =3D /nologo /c /WX /W3 /Cx /coff /= Zd

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



-  DEBUG_VS2012_IA32_NAS= M_FLAGS    =3D -Ox -f win32 -g

= -RELEASE_VS2012_IA32_NASM_FLAGS    =3D -Ox -f win32

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

+  DEBUG_VS2012= _IA32_NASM_FLAGS    =3D -Ox -f win32 -g -DRODATA_SECTION_NAM= E=3D.rdata

+RELEASE_VS2012_IA32_NASM_FLAGS &nb= sp;  =3D -Ox -f win32 -DRODATA_SECTION_NAME=3D.rdata

+NOOPT_VS2012_IA32_NASM_FLAGS     &nbs= p;=3D -O0 -f win32 -g -DRODATA_SECTION_NAME=3D.rdata



  DEBUG_VS2012_IA32_DLINK_FL= AGS   =3D /NOLOGO /NODEFAULTLIB /IGNORE:4001 /OPT:REF /OPT:ICF=3D= 10 /MAP /ALIGN:32 /SECTION:.xdata,D /SECTION:.pdata,D /MACHINE:X86 /LTCG /D= LL /ENTRY:$(IMAGE_ENTRY_POINT) /SUBSYSTEM:EFI_BOOT_SERVICE_DRIVER /SAFESEH:= NO /BASE:0 /DRIVER /DEBUG

RELEASE_VS2012_IA32_= DLINK_FLAGS   =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_SER= VICE_DRIVER /SAFESEH:NO /BASE:0 /DRIVER /MERGE:.rdata=3D.data

@@ -945,9 +945,9 @@ NOOPT_VS2012_X64_CC_FLAGS   &= nbsp;   =3D /nologo /c /WX /GS- /W4 /Gs32768 /D UNICODE /GRELEASE_VS2012_X64_ASM_FLAGS    =3D /nologo /c = /WX /W3 /Cx /Zd

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



-  DEBUG_VS2012_X64_NASM_FLAGS &nb= sp; =3D -Ox -f win64 -g

-RELEASE_VS2012_X= 64_NASM_FLAGS   =3D -Ox -f win64

-NO= OPT_VS2012_X64_NASM_FLAGS     =3D -O0 -f win64 -g

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

+RELEASE_VS2012_X64_NASM_FLAGS   =3D -Ox -f win64 -DRODATA_SECT= ION_NAME=3D.rdata

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



  DEB= UG_VS2012_X64_DLINK_FLAGS  =3D /NOLOGO /NODEFAULTLIB /IGNORE:4001 /OPT= :REF /OPT:ICF=3D10 /MAP /ALIGN:32 /SECTION:.xdata,D /SECTION:.pdata,D /Mach= ine:X64 /LTCG /DLL /ENTRY:$(IMAGE_ENTRY_POINT) /SUBSYSTEM:EFI_BOOT_SERVICE_= DRIVER /SAFESEH:NO /BASE:0 /DRIVER /DEBUG

RELE= ASE_VS2012_X64_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:X64 /LTCG /DLL /ENTRY:$(IMAGE_ENTRY_POINT) /SUBSYSTEM:EFI= _BOOT_SERVICE_DRIVER /SAFESEH:NO /BASE:0 /DRIVER /MERGE:.rdata=3D.data

@@ -1024,9 +1024,9 @@ NOOPT_VS2012x86_IA32_CC_FLAG= S      =3D /nologo /arch:IA32 /c /WX /GS- /W4 /Gs3= 2768
RELEASE_VS2012x86_IA32_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_V= S2012x86_IA32_NASM_FLAGS  =3D -Ox -f win32 -g

-RELEASE_VS2012x86_IA32_NASM_FLAGS  =3D -Ox -f win32

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

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

+RELEASE_VS2012x86_IA32_NASM_FLAGS  =3D -Ox -f wi= n32 -DRODATA_SECTION_NAME=3D.rdata

+NOOPT_VS20= 12x86_IA32_NASM_FLAGS    =3D -O0 -f win32 -g -DRODATA_SECTIO= N_NAME=3D.rdata



=   DEBUG_VS2012x86_IA32_DLINK_FLAGS =3D /NOLOGO /NODEFAULTLIB /IGN= ORE: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_SERVICE_DRIVER /SAFESEH:NO /BASE:0 /DRIVER /DEBUG

RELEASE_VS2012x86_IA32_DLINK_FLAGS =3D /NOLOGO /NODEFAULTLIB /IGNO= RE: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) /SU= BSYSTEM:EFI_BOOT_SERVICE_DRIVER /SAFESEH:NO /BASE:0 /DRIVER /MERGE:.rdata= =3D.data

@@ -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

NOO= PT_VS2012x86_X64_ASM_FLAGS      =3D /nologo /c /WX= /W3 /Cx /Zd /Zi



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

-RELEASE_VS2012x86_X64_NASM_FLAGS   =3D= -Ox -f win64

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

+ =  DEBUG_VS2012x86_X64_NASM_FLAGS   =3D -Ox -f win64 -g -DRODA= TA_SECTION_NAME=3D.rdata

+RELEASE_VS2012x86_X6= 4_NASM_FLAGS   =3D -Ox -f win64 -DRODATA_SECTION_NAME=3D.rdata
+NOOPT_VS2012x86_X64_NASM_FLAGS   &nbs= p; =3D -O0 -f win64 -g -DRODATA_SECTION_NAME=3D.rdata


  DEBUG_VS2012x86_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_SERVICE_DRIVER /SAFES= EH:NO /BASE:0 /DRIVER /DEBUG

RELEASE_VS2012x86= _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 /ENTRY:$(IMAGE_ENTRY_POINT) /SUBSYSTEM:EFI_BOOT_SERV= ICE_DRIVER /SAFESEH:NO /BASE:0 /DRIVER /MERGE:.rdata=3D.data
=
@@ -1138,9 +1138,9 @@ NOOPT_VS2013_IA32_CC_FLAGS   = ;     =3D /nologo /arch:IA32 /c /WX /GS- /W4 /Gs32= 768
RELEASE_VS2013_IA32_ASM_FLAGS     =3D= /nologo /c /WX /W3 /Cx /coff /Zd

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



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

-RELEASE_VS2013_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

+REL= EASE_VS2013_IA32_NASM_FLAGS    =3D -Ox -f win32 -DRODATA_SEC= TION_NAME=3D.rdata

+NOOPT_VS2013_IA32_NASM_FLA= GS      =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 /ALIGN:32 /SECTION:.xdata,D /SECTIO= N:.pdata,D /MACHINE:X86 /LTCG /DLL /ENTRY:$(IMAGE_ENTRY_POINT) /SUBSYSTEM:E= FI_BOOT_SERVICE_DRIVER /SAFESEH:NO /BASE:0 /DRIVER /DEBUG
RELEASE_VS2013_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

@@ -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

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



- &nb= sp;DEBUG_VS2013_X64_NASM_FLAGS   =3D -Ox -f win64 -g

-RELEASE_VS2013_X64_NASM_FLAGS   =3D -Ox -f win6= 4

-NOOPT_VS2013_X64_NASM_FLAGS   &nb= sp; =3D -O0 -f win64 -g

+  DEBUG_VS2= 013_X64_NASM_FLAGS   =3D -Ox -f win64 -g -DRODATA_SECTION_NAME=3D= .rdata

+RELEASE_VS2013_X64_NASM_FLAGS  &n= bsp;=3D -Ox -f win64 -DRODATA_SECTION_NAME=3D.rdata

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



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

RELEASE_VS2013_X64_DLINK_FLAGS  =3D /N= OLOGO /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 /SAFESEH:NO /BASE:= 0 /DRIVER /MERGE:.rdata=3D.data

@@ -1249,9 +12= 49,9 @@ NOOPT_VS2013x86_IA32_CC_FLAGS      =3D /no= logo /arch:IA32 /c /WX /GS- /W4 /Gs32768
RELEASE_VS2013x86_IA= 32_ASM_FLAGS   =3D /nologo /c /WX /W3 /Cx /coff /Zd

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



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

-RELEASE_VS2013x86_IA32_NASM_FLAGS=  =3D -Ox -f win32

-NOOPT_VS2013x86_IA32_= NASM_FLAGS    =3D -O0 -f win32 -g

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

+RELEASE_VS2013x86_IA= 32_NASM_FLAGS  =3D -Ox -f win32 -DRODATA_SECTION_NAME=3D.rdata

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



  DEBUG_VS2013x86_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_VS2013x86_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

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

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



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

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

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

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

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



  DEBUG_VS2013x86_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_VS2013x86_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

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

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



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

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

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

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

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

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


  DEBUG_VS2015_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_VS2015_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

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

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


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

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

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

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

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



  DEBUG_VS201= 5_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= 15_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

@@ -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 /Zd

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



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

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

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

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

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

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



  = ;DEBUG_VS2015x86_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_VS2015x86_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

@@ -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      =3D /nologo /c /WX /W3 /Cx /Zd= /Zi



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

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

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

+RELEASE_VS2015x86_X64_NASM_FLAGS=   =3D -Ox -f win64 -DRODATA_SECTION_NAME=3D.rdata
=
+NOOPT_VS2015x86_X64_NASM_FLAGS     =3D = -O0 -f win64 -g -DRODATA_SECTION_NAME=3D.rdata



  DEBUG_VS2015x86_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_VS2015x86_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

@@ -1586,9 +1586,9 @@ NOOPT_VS2017_IA32_CC_FLAGS     =  =3D /nologo /arch:IA32 /c /WX /GS- /W4 /Gs32768 /D
RELE= ASE_VS2017_IA32_ASM_FLAGS   =3D /nologo /c /WX /W3 /Cx /coff /Zd<= br class=3D"">
NOOPT_VS2017_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_IA3= 2_NASM_FLAGS    =3D -O0 -f win32 -g

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

+RELEASE_VS2017_IA32_= NASM_FLAGS  =3D -Ox -f win32 -DRODATA_SECTION_NAME=3D.rdata

+NOOPT_VS2017_IA32_NASM_FLAGS    =3D -O= 0 -f win32 -g -DRODATA_SECTION_NAME=3D.rdata

<= br class=3D"">
  DEBUG_VS2017_IA32_DLINK_FLAGS =3D = /NOLOGO /NODEFAULTLIB /IGNORE:4001 /OPT:REF /OPT:ICF=3D10 /MAP /ALIGN:32 /S= ECTION:.xdata,D /SECTION:.pdata,D /MACHINE:X86 /LTCG /DLL /ENTRY:$(IMAGE_EN= TRY_POINT) /SUBSYSTEM:EFI_BOOT_SERVICE_DRIVER /SAFESEH:NO /BASE:0 /DRIVER /= DEBUG

RELEASE_VS2017_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

@@ -1616,9 +1616= ,9 @@ NOOPT_VS2017_X64_CC_FLAGS       =3D /no= logo /c /WX /GS- /W4 /Gs32768 /D UNICODE /G
RELEASE_VS2017_X6= 4_ASM_FLAGS    =3D /nologo /c /WX /W3 /Cx /Zd
=
NOOPT_VS2017_X64_ASM_FLAGS      =3D= /nologo /c /WX /W3 /Cx /Zd /Zi



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

-RELEASE_VS2017_X64_NASM_FLAGS  =  =3D -Ox -f win64

-NOOPT_VS2017_X64_NASM_= FLAGS     =3D -O0 -f win64 -g

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

+RELEASE_VS2017_= X64_NASM_FLAGS   =3D -Ox -f win64 -DRODATA_SECTION_NAME=3D.rdata<= br class=3D"">
+NOOPT_VS2017_X64_NASM_FLAGS    = ; =3D -O0 -f win64 -g -DRODATA_SECTION_NAME=3D.rdata


  DEBUG_VS2017_X64_DLIN= K_FLAGS  =3D /NOLOGO /NODEFAULTLIB /IGNORE:4001 /IGNORE:4281 /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= S2017_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_POINT) /SUBSY= STEM:EFI_BOOT_SERVICE_DRIVER /SAFESEH:NO /BASE:0 /DRIVER /MERGE:.rdata=3D.d= ata

@@ -1744,9 +1744,9 @@ NOOPT_VS2019_IA32_CC= _FLAGS      =3D /nologo /arch:IA32 /c /WX /GS- /W4= /Gs32768 /D
RELEASE_VS2019_IA32_ASM_FLAGS   =3D /n= ologo /c /WX /W3 /Cx /coff /Zd

NOOPT_VS2019_IA= 32_ASM_FLAGS     =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_NASM_FLAGS    =3D -O0 -f w= in32 -g

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

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

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


  DEBUG= _VS2019_IA32_DLINK_FLAGS =3D /NOLOGO /NODEFAULTLIB /IGNORE:4001 /OPT:REF /O= PT: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

RELEASE_VS2= 019_IA32_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:X86 /LTCG /DLL /ENTRY:$(IMAGE_ENTRY_POINT) /SUBSYSTEM:EFI_BOOT_SERVIC= E_DRIVER /SAFESEH:NO /BASE:0 /DRIVER /MERGE:.rdata=3D.data
@@ -1774,9 +1774,9 @@ NOOPT_VS2019_X64_CC_FLAGS   &n= bsp;   =3D /nologo /c /WX /GS- /W4 /Gs32768 /D UNICODE /GRELEASE_VS2019_X64_ASM_FLAGS    =3D /nologo /c /= WX /W3 /Cx /Zd

NOOPT_VS2019_X64_ASM_FLAGS &nbs= p;    =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 -DRO= DATA_SECTION_NAME=3D.rdata

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



 =  DEBUG_VS2019_X64_DLINK_FLAGS  =3D /NOLOGO /NODEFAULTLIB /IGNORE:= 4001 /IGNORE:4281 /OPT:REF /OPT:ICF=3D10 /MAP /ALIGN:32 /SECTION:.xdata,D /= SECTION:.pdata,D /Machine:X64 /LTCG /DLL /ENTRY:$(IMAGE_ENTRY_POINT) /SUBSY= STEM:EFI_BOOT_SERVICE_DRIVER /SAFESEH:NO /BASE:0 /DRIVER /DEBUG

RELEASE_VS2019_X64_DLINK_FLAGS  =3D /NOLOGO /NODEFAU= LTLIB /IGNORE:4001 /IGNORE:4281 /IGNORE:4254 /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 /MERGE:.rdata=3D.data

@@ -2030,7 +203= 0,7 @@ DEFINE GCC_PP_FLAGS         =             &nb= sp;  =3D -E -x assembler-with-cpp -include A
*_GCC4= 8_IA32_DLINK2_FLAGS         =3D DEF= (GCC48_IA32_DLINK2_FLAGS)

*_GCC48_IA32_RC_FLAG= S             = =3D DEF(GCC_IA32_RC_FLAGS)

*_GCC48_IA32_OBJCOP= Y_FLAGS        =3D

-*_GCC48_IA32_NASM_FLAGS        =    =3D -f elf32

+*_GCC48_IA32_N= ASM_FLAGS           =3D -= f elf32 -DRODATA_SECTION_NAME=3D.rodata



  DEBUG_GCC48_IA32_CC_FLAGS   &= nbsp;   =3D DEF(GCC48_IA32_CC_FLAGS) -Os

RELEASE_GCC48_IA32_CC_FLAGS       = =3D DEF(GCC48_IA32_CC_FLAGS) -Os -Wno-unused-but-set-variable

@@ -2058,7 +2058,7 @@ RELEASE_GCC48_IA32_CC_FLAGS  &nb= sp;    =3D DEF(GCC48_IA32_CC_FLAGS) -Os -Wno-unused-but=
*_GCC48_X64_DLINK2_FLAGS       = ;  =3D DEF(GCC48_X64_DLINK2_FLAGS)

*= _GCC48_X64_RC_FLAGS          &= nbsp;  =3D DEF(GCC_X64_RC_FLAGS)

*_G= CC48_X64_OBJCOPY_FLAGS        =3D

-*_GCC48_X64_NASM_FLAGS     &nbs= p;     =3D -f elf64

+= *_GCC48_X64_NASM_FLAGS         &nbs= p; =3D -f elf64 -DRODATA_SECTION_NAME=3D.rodata



  DEBUG_GCC48_X64_CC_FLAGS &= nbsp;     =3D DEF(GCC48_X64_CC_FLAGS) -Os

RELEASE_GCC48_X64_CC_FLAGS     &nb= sp; =3D DEF(GCC48_X64_CC_FLAGS) -Os -Wno-unused-but-set-variable

@@ -2170,7 +2170,7 @@ RELEASE_GCC48_AARCH64_CC_FLAG= S   =3D DEF(GCC48_AARCH64_CC_FLAGS) -Wno-unused-but-s
*_GCC49_IA32_DLINK2_FLAGS        &nbs= p;=3D DEF(GCC49_IA32_DLINK2_FLAGS)

*_GCC49_IA3= 2_RC_FLAGS           &nbs= p; =3D DEF(GCC_IA32_RC_FLAGS)

*_GCC49_IA3= 2_OBJCOPY_FLAGS        =3D

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

+*_GCC4= 9_IA32_NASM_FLAGS          &nb= sp;=3D -f elf32 -DRODATA_SECTION_NAME=3D.rodata



  DEBUG_GCC49_IA32_CC_FLAGS  = ;     =3D DEF(GCC49_IA32_CC_FLAGS) -Os

RELEASE_GCC49_IA32_CC_FLAGS      = ; =3D DEF(GCC49_IA32_CC_FLAGS) -Os -Wno-unused-but-set-variable -Wno-u= nused-const-variable

@@ -2198,7 +2198,7 @@ REL= EASE_GCC49_IA32_CC_FLAGS       =3D DEF(GCC49_= IA32_CC_FLAGS) -Os -Wno-unused-but
*_GCC49_X64_DLINK2_FLAGS &= nbsp;       =3D DEF(GCC49_X64_DLINK2_FLA= GS)

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

*_GCC49_X64_OBJCOPY_FLAGS    =     =3D

-*_GCC49_X64_NASM_= FLAGS           =3D -f el= f64

+*_GCC49_X64_NASM_FLAGS    =        =3D -f elf64 -DRODATA_SECTION_NAM= E=3D.rodata



&nbs= p; DEBUG_GCC49_X64_CC_FLAGS       =3D DE= F(GCC49_X64_CC_FLAGS) -Os

RELEASE_GCC49_X64_CC= _FLAGS       =3D DEF(GCC49_X64_CC_FLAGS) -Os = -Wno-unused-but-set-variable -Wno-unused-const-variable

@@ -2316,7 +2316,7 @@ RELEASE_GCC49_AARCH64_DLINK_XIPFLAGS =3D -z= common-page-size=3D0x20
*_GCC5_IA32_DLINK2_FLAGS   = ;      =3D DEF(GCC5_IA32_DLINK2_FLAGS) -no-pi= e

*_GCC5_IA32_RC_FLAGS     = ;        =3D DEF(GCC_IA32_RC_FLAGS)=

*_GCC5_IA32_OBJCOPY_FLAGS    &= nbsp;   =3D

-*_GCC5_IA32_NASM_F= LAGS           =3D -f elf= 32

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



 = ; DEBUG_GCC5_IA32_CC_FLAGS       =3D DEF= (GCC5_IA32_CC_FLAGS) -flto -Os

  DEB= UG_GCC5_IA32_DLINK_FLAGS    =3D DEF(GCC5_IA32_X64_DLINK_FLAG= S) -flto -Os -Wl,-m,elf_i386,--oformat=3Delf32-i386

@@ -2348,7 +2348,7 @@ RELEASE_GCC5_IA32_DLINK_FLAGS    = ;=3D DEF(GCC5_IA32_X64_DLINK_FLAGS) -flto -Os -Wl,
*_GCC5_X64= _DLINK2_FLAGS          =3D DEF= (GCC5_X64_DLINK2_FLAGS)

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

*_GCC5_X64_OBJCOPY_= FLAGS         =3D
-*_GCC5_X64_NASM_FLAGS       &nbs= p;    =3D -f elf64

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



  DEBUG_GCC5_X64_CC_FLAGS &nb= sp;      =3D DEF(GCC5_X64_CC_FLAGS) -flto -DU= SING_LTO -Os

  DEBUG_GCC5_X64_DLINK_= FLAGS     =3D DEF(GCC5_X64_DLINK_FLAGS) -flto -Os

@@ -2589,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) -m= 32 -march=3Di386 DEF(CLANG38_IA32_TARGET)

*_CL= ANG38_IA32_RC_FLAGS          &= nbsp;  =3D DEF(GCC_IA32_RC_FLAGS)

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

+*_CLANG38_IA32_NASM_FLAGS        =    =3D -f elf32 -DRODATA_SECTION_NAME=3D.rodata

*_CLANG38_IA32_PP_FLAGS      &nbs= p;      =3D DEF(GCC_PP_FLAGS) DEF(CLANG38_IA3= 2_TARGET)

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

*_CLANG38_IA32_VFRPP_FLAGS=          =3D DEF(GCC_VFRPP_FL= AGS) DEF(CLANG38_IA32_TARGET)

@@ -2626,7 +2626= ,7 @@ NOOPT_CLANG38_IA32_DLINK2_FLAGS     =3D DEF(GCC5_= IA32_DLINK2_FLAGS) -O0
*_CLANG38_X64_ASM_FLAGS   &n= bsp;        =3D DEF(GCC5_ASM_FLAGS)= -m64 DEF(CLANG38_X64_TARGET)

*_CLANG38_X64_RC= _FLAGS            &n= bsp;=3D DEF(GCC_X64_RC_FLAGS)

*_CLANG38_X64_OB= JCOPY_FLAGS        =3D
-*_CLANG38_X64_NASM_FLAGS       &= nbsp;   =3D -f elf64

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

= *_CLANG38_X64_PP_FLAGS         &nbs= p;   =3D DEF(GCC_PP_FLAGS) DEF(CLANG38_X64_TARGET)

*_CLANG38_X64_ASLPP_FLAGS     &nbs= p;    =3D DEF(GCC_ASLPP_FLAGS) DEF(CLANG38_X64_TARGET)<= br class=3D"">
*_CLANG38_X64_VFRPP_FLAGS    &n= bsp;     =3D DEF(GCC_VFRPP_FLAGS) DEF(CLANG38_X64_= TARGET)

@@ -2777,7 +2777,7 @@ DEFINE CLANGPDB_= ALL_CC_FLAGS         =3D DEF(GCC48_= ALL_CC_FLAGS) DEF(CLANGPDB_WARN
*_CLANGPDB_IA32_ASLCC_FLAGS &= nbsp;        =3D DEF(GCC_ASLCC_FLAG= S) -m32 -fno-lto DEF(CLANGPDB_IA32_TARGET)

*_C= LANGPDB_IA32_ASM_FLAGS         &nbs= p;  =3D DEF(GCC_ASM_FLAGS) -m32 -march=3Di386 DEF(CLANGPDB_IA32_T= ARGET)

*_CLANGPDB_IA32_OBJCOPY_FLAGS  &nb= sp;     =3D

-*_CLANGP= DB_IA32_NASM_FLAGS          &n= bsp;=3D -f win32

+*_CLANGPDB_IA32_NASM_FLAGS &= nbsp;         =3D -f win32 -DR= ODATA_SECTION_NAME=3D.rdata

*_CLANGPDB_IA32_PP= _FLAGS            &n= bsp;=3D DEF(GCC_PP_FLAGS) DEF(CLANGPDB_IA32_TARGET)

*_CLANGPDB_IA32_ASLPP_FLAGS        = ;  =3D DEF(GCC_ASLPP_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_DLI= NK2_FLAGS     =3D
*_CLANGPDB_X64_ASLCC_FL= AGS          =3D DEF(GCC_ASLCC= _FLAGS) -m64 -fno-lto DEF(CLANGPDB_X64_TARGET)

*_CLANGPDB_X64_ASM_FLAGS         &= nbsp;  =3D DEF(GCC_ASM_FLAGS) -m64 DEF(CLANGPDB_X64_TARGET)

*_CLANGPDB_X64_OBJCOPY_FLAGS    &nbs= p;   =3D

-*_CLANGPDB_X64_NASM_F= LAGS           =3D -f win= 64

+*_CLANGPDB_X64_NASM_FLAGS   &nbs= p;       =3D -f win64 -DRODATA_SECTION_N= AME=3D.rdata

*_CLANGPDB_X64_PP_FLAGS  &nb= sp;          =3D DEF(GCC_= PP_FLAGS) DEF(CLANGPDB_X64_TARGET)

*_CLANGPDB_= X64_ASLPP_FLAGS          =3D D= EF(GCC_ASLPP_FLAGS) DEF(CLANGPDB_X64_TARGET)

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

@@ -2878,7 +2878,7 @@ DEFINE CLANGDWARF_X64_DLINK2_FLAGS  &nb= sp;     =3D -Wl,--defsym=3DPECOFF_HEADER_SIZE=3D0x= 22
*_CLANGDWARF_IA32_ASM_FLAGS      =       =3D DEF(GCC5_ASM_FLAGS) -m32 -march=3Di= 386 DEF(CLANG38_IA32_TARGET)

*_CLANGDWARF_IA32= _RC_FLAGS            = ; =3D DEF(GCC_IA32_RC_FLAGS)

*_CLANGDWARF= _IA32_OBJCOPY_FLAGS        =3D

-*_CLANGDWARF_IA32_NASM_FLAGS     =       =3D -f elf32

+*_CLANGDWARF_IA32_NASM_FLAGS        =    =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_VF= RPP_FLAGS          =3D DEF(GCC= _VFRPP_FLAGS) DEF(CLANG38_IA32_TARGET)

@@ -291= 4,7 +2914,7 @@ NOOPT_CLANGDWARF_IA32_DLINK2_FLAGS     = =3D DEF(CLANGDWARF_IA32_DLINK2_FLAGS) -O0 -
*_CLANGDWARF_X64_= ASM_FLAGS            = ;=3D DEF(GCC5_ASM_FLAGS) -m64 DEF(CLANG38_X64_TARGET)

*_CLANGDWARF_X64_RC_FLAGS        = ;     =3D DEF(GCC_X64_RC_FLAGS)

*_CLANGDWARF_X64_OBJCOPY_FLAGS      &nb= sp; =3D

-*_CLANGDWARF_X64_NASM_FLAGS &nbs= p;         =3D -f elf64

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

*_CLANGDWARF_X64_PP_FLAGS   &= nbsp;         =3D DEF(GCC_PP_F= LAGS) DEF(CLANG38_X64_TARGET)

*_CLANGDWARF_X64= _ASLPP_FLAGS          =3D DEF(= GCC_ASLPP_FLAGS) DEF(CLANG38_X64_TARGET)

*_CLA= NGDWARF_X64_VFRPP_FLAGS         &nb= sp;=3D DEF(GCC_VFRPP_FLAGS) DEF(CLANG38_X64_TARGET)

@@ -2985,7 +2985,7 @@ RELEASE_XCODE5_IA32_DLINK_FLAGS   &nb= sp;  =3D -arch i386 -u _$(IMAGE_ENTRY_POINT) -e _$
=   DEBUG_XCODE5_IA32_ASM_FLAGS  =3D -arch i386 -g

  NOOPT_XCODE5_IA32_ASM_FLAGS  =3D -arch i= 386 -g

RELEASE_XCODE5_IA32_ASM_FLAGS  =3D= -arch i386

-      *_= XCODE5_IA32_NASM_FLAGS =3D -f macho32

+  =     *_XCODE5_IA32_NASM_FLAGS =3D -f macho32 -DRODATA_SE= CTION_NAME=3D.rodata




An EFI Mach-O file does not contain a .ro= data section. A Mach-O contains a __DATA segment that is broken up into sec= tions. For a typical EFI image there are __const, __data, __bss sections in= the __DATA segment [1].

Yes, and= ".rodata" is almost a synonym for "__DATA,__const", with a small exception= [1]. Maybe it'd be clearer if the macro was renamed to "NASM_RODATA_SECTIO= N_NAME", to indicate this is not just a "raw" name, but NASM gives it a sem= antic meaning?


The mtoc [2] tool used to convert mach-O to PE/COFF co= nverts the entire __DATA segment (__const, __data, and __bss) into the .dat= a section. Thus adding any kind of new data section is a no-op at best.

This is a part I missed, because I d= o not have an Xcode toolchain at hand, so thanks for investigating. However= this, in my opinion, is a flaw with Mach-O/mtoc and not with my patch. It = seems like the only difference between __TEXT,__const and __DATA,__const is= whether the data is targeted by a relocation or not. Such a concept does n= ot exist for PE/COFF (and I think not even for ELF, but I'm not too familia= r with it), thus the logical PE/COFF section __DATA,__const should be merge= d into is .rdata (and .rdata may or may not be merged into .text in an earl= ier step, I assume transitivity). I could change the macro definition to ex= plicitly declare __TEXT,__const, but that would still put the compiler-emit= ted data in the wrong section. Does Xcode provide anything remotely similar= to GNU linker scripts which we can use to move the section?
=
Please also note that .rodata is used for Xcode-based toolch= ains already (in fact, all toolchains, and this is the issue), I'm not regr= essing anything. I just expected it to work fine as-is. This patch mainly f= ixed PE/COFF-based toolchains, which get both .rdata from the compiler and = .rodata with RX permissions from NASM, because ".rodata" only has a semanti= c meaning for ELF and Mach-O outputs, but not for PE/COFF.
=

If you want something to be read only for Xcode/clang you are bett= er off putting it in the __TEXT section [3]. The __TEXT section is read onl= y and for X64 can not even contain relocations.
=
Well, this kind of is an issue. We would need to introduce a= n arbitrary constraint on the relocation part that holds only for Xcode-bas= ed toolchains. Does the compiler emit an error when data in __TEXT,__const = is targeted by a relocation?

The Xcode linker emits a fatal error on X64 for a relocation in th= e __TEXT section, everything needs to be RIP relative and the compiler does= that for free. We generally only run into this for hand coded assembler an= d the fix is to use RIP relative addressing in the assembly. 
Also see above regarding compiler-emitted __DATA,__const.


OK so the current nasm `SECTION .rodata`[1]  gets mapped to __TEXT,__const= [2] for Xcode clang, and this is done by nasm (I dumped the object f= ile). GenFw and mtoc only run on executables, also they tend to be conserva= tive as they need to keep the layout the same and the relative layout betwe= en sections the same, but in this case it is nasm placing the data in the t= ext section. 

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 `__TEXT,__const` not `.rodat= a`. We should double check what is happening for ELF on x86, ARM, RiskV, et= c. and do the same thing. I assume all the tools that generate PE/COFF dire= ctly are good with .rodata? I think it is likely as simple as dumping the E= FL object file in objdump or gdb for the given toolchain (like my Xcode exa= mple).

TL;DR It looks to me like nasm d= oes some SECTION translations under the hood to make code portable, an= d I=E2=80=99d like to make sure we capture those in the new NASM_RODATA_SEC= TION_NAME. If some one is doing a security review having NASM_RODATA_SECTIO= N_NAME is going to imply that a .rodata section is being used by that speci= fic toolchain, and I think that is much worse than the current =E2=80=9Cmag= ic=E2=80=9D behavior in nasm. We are much better off explaining what is rea= lly happening, since it is not very obvious.   


= [2] $otool = -V -s __TEXT __const  Build/OvmfX64/DEBUG_XCODE5/X64/UefiCpuPkg/Library/BaseUe= fiCpuLib/BaseUefiCpuLib/OUTPUT/X64/InitializeFpu.obj
Build//OvmfX64/DEBUG_XCODE5/X64/UefiCpuP= kg/Library/BaseUefiCpuLib/BaseUefiCpuLib/OUTPUT/X64/InitializeFpu.obj:
Contents of (__TEXT,__const= ) section
0000001d = ; 7f 03 80 1f 00 00
$ otool -l Build//OvmfX64/DEBUG_XCODE5/X64/UefiCpuPkg/Library/BaseUefiCpu= Lib/BaseUefiCpuLib/OUTPUT/X64/InitializeFpu.obj
Build/OvmfX64/DEBUG_XCODE5/X64/UefiCpuPkg/Library/BaseUef= iCpuLib/BaseUefiCpuLib/OUTPUT/X64/InitializeFpu.obj:
Load command 0
      cmd LC_SEGMENT_64
  cmdsize 232
  segname 
   vmaddr 0x0000000000000000
   vmsize 0x00000= 00000000026
  file= off 288
 filesize = 38
  maxprot 0x000= 00007
 initprot = 0x00000007
  = nsects 2
   = flags 0x0
Section
  sectname __text
   segname __TEXT=
      a= ddr 0x0000000000000000
      size 0x000000000000001d
    offset 288
     align 2^0 (1)
    reloff 328
<= div style=3D"margin: 0px; font-stretch: normal; font-size: 11px; line-heigh= t: normal; font-family: Menlo;" class=3D"">    nreloc 2<= div style=3D"margin: 0px; font-stretch: normal; font-size: 11px; line-heigh= t: normal; font-family: Menlo;" class=3D"">     flags 0x80000500=
 reserved1 0
 reserved2 0
Section
  sectname __const
   segname __TEXT
      addr 0x00000000000= 0001d
    &= nbsp; size 0x0000000000000006
    offset 320
     align 2^0 (1)
    reloff 0
    nreloc 0
     flags 0x00000000
 reserved1 0
 reserved2 0
Load command 1
     cmd LC_SYMTAB
 cmdsize 24
  symoff 344
   nsyms 3
  stroff 392
 strsize 63
     

Thanks,

Andrew Fish


Thanks for your notes and insight!

Best regards,
Marvin


[1]
"For compatibility with other U= nix platforms, the following standard names are also supported:
[...]
.rodata  =3D __DATA,__const data
= [...]
If the .rodata section contains no relocations, it is i= nstead put into the __TEXT,__const section unless this section has already = been specified explicitly."
https://www.nasm.us/xdoc/2.13.01/= html/nasmdoc7.html


[1] otool -lh DxeCore.dll
...Load command 1
      cmd LC_SEGMEN= T_64
  cmdsize 312
  segname __DATA   vmaddr 0x000000000002b000
 &nb= sp; vmsize 0x0000000000147000
  fileoff 180224
 filesize 8192
  maxprot 0x00000003
 initprot 0x00000003
   nsects 3
    flags 0x0
Section
  s= ectname __const
   segname __DATA
&nb= sp;     addr 0x000000000002b000
     = ; size 0x0000000000000718
    offset 180224
     align 2^4 (16)
    relof= f 0
    nreloc 0
     = flags 0x00000000
 reserved1 0
 reserv= ed2 0
Section
  sectname __data
   segname __DATA
      addr 0= x000000000002b720
      size 0x00000000000014f= 0
    offset 182048
   &nbs= p; align 2^4 (16)
    reloff 0
 =   nreloc 0
     flags 0x00000000
 reserved1 0
 reserved2 0
Sect= ion
  sectname __bss
   segname = __DATA
      addr 0x000000000002cc10
      size 0x0000000000144e11
  &nb= sp; offset 0
     align 2^4 (16)
    reloff 0
    nreloc 0
=      flags 0x00000001
 reserved1 0
 reserved2 0
=E2=80=A6

[2] https://opensource.apple.com/source/cctools/cctools-698/efitools/= mtoc.c.auto.html <https://opensource.apple.com/source/cctools/cctools-69= 8/efitools/mtoc.c.auto.html>

[3] otool mor= e output=E2=80=A6
Load command 0
    =   cmd LC_SEGMENT_64
  cmdsize 392
&nb= sp; segname __TEXT
   vmaddr 0x0000000000000240
   vmsize 0x00000000000296c0
  file= off 1184
 filesize 169664
  maxprot 0= x00000005
 initprot 0x00000005
  = ; nsects 4
    flags 0x0
Section
  sectname __text
   segname __TEXT<= br class=3D"">      addr 0x0000000000000240
&n= bsp;     size 0x000000000002489f
    offs= et 1184
     align 2^3 (8)
 = ;   reloff 0
    nreloc 0
 =     flags 0x80000400
 reserved1 0
 reserved2 0
Section
  sectname __c= string
   segname __TEXT
   = ;   addr 0x0000000000024ae0
      size 0x= 000000000000496d
    offset 150848
&n= bsp;    align 2^4 (16)
    reloff 0
    nreloc 0
     flags 0x0= 0000002
 reserved1 0
 reserved2 0
Section
  sectname __ustring
&n= bsp;  segname __TEXT
      addr 0x0000000= 00002944e
      size 0x0000000000000048
    offset 169646
     align= 2^1 (2)
    reloff 0
    n= reloc 0
     flags 0x00000000
&n= bsp;reserved1 0
 reserved2 0
Section
  sectname __const
   segname __TEXT<= br class=3D"">      addr 0x00000000000294a0
&n= bsp;     size 0x0000000000000448
    offs= et 169728
     align 2^4 (16)
&n= bsp;   reloff 0
    nreloc 0
&nb= sp;    flags 0x00000000
 reserved1 0
 reserved2 0

Thanks,
=
Andrew Fish



  DEBUG_XCODE5_IA= 32_CC_FLAGS   =3D -arch i386 -c -g -Os     &n= bsp; -Wall -Werror -include AutoGen.h -funsigned-char -fno-stack-prote= ctor -fno-builtin -fshort-wchar -fasm-blocks -mdynamic-no-pic -mno-implicit= -float -mms-bitfields -msoft-float -Wno-unused-parameter -Wno-missing-brace= s -Wno-missing-field-initializers -Wno-tautological-compare -Wno-sign-compa= re -Wno-varargs -ftrap-function=3Dundefined_behavior_has_been_optimized_awa= y_by_clang $(PLATFORM_FLAGS)

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

&nbs= p; NOOPT_XCODE5_X64_ASM_FLAGS  =3D -arch x86_64 -g
=
RELEASE_XCODE5_X64_ASM_FLAGS  =3D -arch x86_64

-      *_XCODE5_X64_NASM_FLAG= S =3D -f macho64

+     &nb= sp;*_XCODE5_X64_NASM_FLAGS =3D -f macho64 -DRODATA_SECTION_NAME=3D.rodata
*_XCODE5_*_PP_FLAGS     &nb= sp;   =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









--Apple-Mail=_EE73C4F2-C12F-4C79-8FF9-751E8F6A1B96--