From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from ma1-aaemail-dr-lapp03.apple.com (ma1-aaemail-dr-lapp03.apple.com [17.171.2.72]) by mx.groups.io with SMTP id smtpd.web08.30675.1629148394582832825 for ; Mon, 16 Aug 2021 14:13:15 -0700 Authentication-Results: mx.groups.io; dkim=pass header.i=@apple.com header.s=20180706 header.b=Axen2Hvl; spf=pass (domain: apple.com, ip: 17.171.2.72, mailfrom: afish@apple.com) Received: from pps.filterd (ma1-aaemail-dr-lapp03.apple.com [127.0.0.1]) by ma1-aaemail-dr-lapp03.apple.com (8.16.0.42/8.16.0.42) with SMTP id 17GL9CrG028166; Mon, 16 Aug 2021 14:13:08 -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=dYVRRzTF0+SMFv22Yb0kkXLbxuAXuYc5ETtRck9jJtU=; b=Axen2HvlGiuRisg/JLMBgpBmKz717dwgNjQFFLJgOGKgBQh4gxrOFaTt/U0C1etbx8SE +KHlNV7ejr41bfvbQxWv98CWdB7ygEgSxP6LD7Cxu6qm92JGTOdjJlLkvc1sCVwbolqo B83dgBKpTCs5l5/2V9Sk+jcYVwAtTayXCBi7AcRnBGgPLpEBEyefkPMYtpX2uFsTbwIE +iXIGAKBdF8ieuzFzZoSgSj/uG0KQdFG87XXSDoLOLM5WfLbM3lXeHbYUrE3j4xX8xyg 70DW4xWOt5oIPRSxrv3ZQy5ql5lvI7qNNa1nYpn6A7hhR9Z0cvpJX9IWHMkADGaCIly5 cQ== Received: from rn-mailsvcp-mta-lapp01.rno.apple.com (rn-mailsvcp-mta-lapp01.rno.apple.com [10.225.203.149]) by ma1-aaemail-dr-lapp03.apple.com with ESMTP id 3aectubute-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128 verify=NO); Mon, 16 Aug 2021 14:13:07 -0700 Received: from rn-mailsvcp-mmp-lapp03.rno.apple.com (rn-mailsvcp-mmp-lapp03.rno.apple.com [17.179.253.16]) by rn-mailsvcp-mta-lapp01.rno.apple.com (Oracle Communications Messaging Server 8.1.0.9.20210415 64bit (built Apr 15 2021)) with ESMTPS id <0QXY00BWFAXVEU00@rn-mailsvcp-mta-lapp01.rno.apple.com>; Mon, 16 Aug 2021 14:13:07 -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 <0QXY00G00AM3J200@rn-mailsvcp-mmp-lapp03.rno.apple.com>; Mon, 16 Aug 2021 14:13:07 -0700 (PDT) X-Va-A: X-Va-T-CD: f900b3001c7ef03eb53e4f1f41858654 X-Va-E-CD: f4d0bb655782ab825c7a9328fb164ddf X-Va-R-CD: c72241e6c7ad74ea4fd9f173994aebfa X-Va-CD: 0 X-Va-ID: 38575558-488f-4f30-9704-e6cc9abc1017 X-V-A: X-V-T-CD: f900b3001c7ef03eb53e4f1f41858654 X-V-E-CD: f4d0bb655782ab825c7a9328fb164ddf X-V-R-CD: c72241e6c7ad74ea4fd9f173994aebfa X-V-CD: 0 X-V-ID: c5853edf-ecc6-49cb-8aa2-951f9753d08b X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10434:6.0.391,18.0.790 definitions=2021-08-16_08:2021-08-16,2021-08-16 signatures=0 Received: from [17.235.25.2] (unknown [17.235.25.2]) 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 <0QXY00GB0AXTSK00@rn-mailsvcp-mmp-lapp03.rno.apple.com>; Mon, 16 Aug 2021 14:13:06 -0700 (PDT) From: "Andrew Fish" Message-id: <68731C03-A4BD-4252-BFEE-E6CDA134A71D@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: Mon, 16 Aug 2021 14:13:03 -0700 In-reply-to: <169AB0F8BD9C50BA.13770@groups.io> Cc: =?utf-8?Q?Marvin_H=C3=A4user?= , Bob Feng , Liming Gao , Yuwei Chen , Vitaly Cheptsov To: edk2-devel-groups-io , Andrew Fish References: <252525969122e83d9fb9b83edc95c4f6dfd233b4.1628502434.git.mhaeuser@posteo.de> <7787F470-EEE0-4E13-93C1-508844167749@apple.com> <15D26D2D-D4E8-485A-B40F-A89B3C67BF37@apple.com> <215befc7-a214-7c1d-4bba-94442d3f56aa@posteo.de> <347E6A0A-EFD9-4CA4-BBD3-67F4714747F6@apple.com> <544f4fca-40e8-4273-7d28-a581caa814a2@posteo.de> <25E4F188-3573-445A-B355-ADB79BA4E452@apple.com> <2b8a9ab8-1019-1ade-cde3-f4492432dc1d@posteo.de> <169AB0F8BD9C50BA.13770@groups.io> X-Mailer: Apple Mail (2.3654.20.0.2.1) X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10434:6.0.391,18.0.790 definitions=2021-08-16_08:2021-08-16,2021-08-16 signatures=0 Content-type: multipart/alternative; boundary="Apple-Mail=_65F43E33-64C3-49E0-8F3D-FDB710A91332" --Apple-Mail=_65F43E33-64C3-49E0-8F3D-FDB710A91332 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset=utf-8 Just ran across this today and wanted to share. The NASM Chapter 7 [1] defi= nes the behavior for .rodata for ELF and mach-O . So the behavior is well defined. From=20 7.8.1 macho extensions to the SECTION Directive ... The default is data, unless the section name is __text or __bss in which ca= se the default is text or bss, respectively. For compatibility with other Unix platforms, the following standard names a= re also supported: .text =3D __TEXT,__text text=20 .rodata =3D __DATA,__const data=20 .data =3D __DATA,__data data=20 .bss =3D __DATA,__bss bss If the .rodata section contains no relocations, it is instead put into the = __TEXT,__const section unless this section has already been specified expli= citly. However, it is probably better to specify __TEXT,__const and__DATA,_= _const explicitly as appropriate. [1] https://www.nasm.us/xdoc/2.13.02rc3/html/nasmdoc7.html > On Aug 12, 2021, at 3:53 PM, Andrew Fish via groups.io wrote: >=20 >=20 >=20 >> On Aug 12, 2021, at 12:26 AM, Marvin H=C3=A4user wr= ote: >>=20 >> On 11/08/2021 19:19, Andrew Fish wrote: >>>=20 >>>=20 >>>> On Aug 11, 2021, at 1:11 AM, Marvin H=C3=A4user > wrote: >>>>=20 >>>> On 10/08/2021 23:58, Andrew Fish wrote: >>>>>=20 >>>>>> On Aug 10, 2021, at 2:30 PM, Marvin H=C3=A4user > wrote: >>>>>>=20 >>>>>> On 10/08/2021 21:35, Andrew Fish via groups.io wr= ote: >>>>>>>=20 >>>>>>>> On Aug 10, 2021, at 1:27 AM, Marvin H=C3=A4user >> wrote: >>>>>>>>=20 >>>>>>>> On 10/08/2021 06:19, Andrew Fish via groups.io = > wrote: >>>>>>>>>=20 >>>>>>>>>> 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/C= OFF >>>>>>>>>> files, which use the ".rdata" naming convention. Section permiss= ions >>>>>>>>>> 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 approp= riate >>>>>>>>>> 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 > <= mailto:mhaeuser@posteo.de >>> >>>>>>>>>> --- >>>>>>>>>> BaseTools/Conf/tools_def.template | 172 ++++++++++---------- >>>>>>>>>> 1 file changed, 86 insertions(+), 86 deletions(-) >>>>>>>>>>=20 >>>>>>>>>> diff --git a/BaseTools/Conf/tools_def.template b/BaseTools/Conf/= tools_def.template >>>>>>>>>> index 2e6b382ab623..84d464916c4d 100755 >>>>>>>>>> --- a/BaseTools/Conf/tools_def.template >>>>>>>>>> +++ b/BaseTools/Conf/tools_def.template >>>>>>>>>> @@ -463,9 +463,9 @@ NOOPT_VS2008_IA32_CC_FLAGS =3D /nolog= o /c /WX /GS- /W4 /Gs32768 /D UNICODE >>>>>>>>>> RELEASE_VS2008_IA32_ASM_FLAGS =3D /nologo /c /WX /W3 /Cx /co= ff /Zd >>>>>>>>>>=20 >>>>>>>>>> NOOPT_VS2008_IA32_ASM_FLAGS =3D /nologo /c /WX /W3 /Cx /co= ff /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_SEC= TION_NAME=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 /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 >>>>>>>>>>=20 >>>>>>>>>> RELEASE_VS2008_IA32_DLINK_FLAGS =3D /NOLOGO /NODEFAULTLIB /IGN= ORE: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) /S= UBSYSTEM: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_SE= CTION_NAME=3D.rdata >>>>>>>>>>=20 >>>>>>>>>> +RELEASE_VS2008_X64_NASM_FLAGS =3D -Ox -f win64 -DRODATA_SECTI= ON_NAME=3D.rdata >>>>>>>>>>=20 >>>>>>>>>> +NOOPT_VS2008_X64_NASM_FLAGS =3D -O0 -f win64 -g -DRODATA_SE= CTION_NAME=3D.rdata >>>>>>>>>>=20 >>>>>>>>>>=20 >>>>>>>>>>=20 >>>>>>>>>> DEBUG_VS2008_X64_DLINK_FLAGS =3D /NOLOGO /NODEFAULTLIB /IGNORE= :4001 /OPT:REF /OPT:ICF=3D10 /MAP /ALIGN:32 /SECTION:.xdata,D /SECTION:.pda= ta,D /Machine:X64 /LTCG /DLL /ENTRY:$(IMAGE_ENTRY_POINT) /SUBSYSTEM:EFI_BOO= T_SERVICE_DRIVER /SAFESEH:NO /BASE:0 /DRIVER /DEBUG >>>>>>>>>>=20 >>>>>>>>>> RELEASE_VS2008_X64_DLINK_FLAGS =3D /NOLOGO /NODEFAULTLIB /IGNOR= E: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) /SUB= SYSTEM:EFI_BOOT_SERVICE_DRIVER /SAFESEH:NO /BASE:0 /DRIVER /MERGE:.rdata=3D= .data >>>>>>>>>>=20 >>>>>>>>>> @@ -574,9 +574,9 @@ NOOPT_VS2008x86_IA32_CC_FLAGS =3D /nolo= go /c /WX /GS- /W4 /Gs32768 /D UNICODE >>>>>>>>>> RELEASE_VS2008x86_IA32_ASM_FLAGS =3D /nologo /c /WX /W3 /Cx /c= off /Zd >>>>>>>>>>=20 >>>>>>>>>> NOOPT_VS2008x86_IA32_ASM_FLAGS =3D /nologo /c /WX /W3 /Cx /c= off /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= _SECTION_NAME=3D.rdata >>>>>>>>>>=20 >>>>>>>>>> +RELEASE_VS2008x86_IA32_NASM_FLAGS =3D -Ox -f win32 -DRODATA_SE= CTION_NAME=3D.rdata >>>>>>>>>>=20 >>>>>>>>>> +NOOPT_VS2008x86_IA32_NASM_FLAGS =3D -O0 -f win32 -g -DRODATA= _SECTION_NAME=3D.rdata >>>>>>>>>>=20 >>>>>>>>>>=20 >>>>>>>>>>=20 >>>>>>>>>> DEBUG_VS2008x86_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 >>>>>>>>>>=20 >>>>>>>>>> RELEASE_VS2008x86_IA32_DLINK_FLAGS =3D /NOLOGO /NODEFAULTLIB /IG= NORE:4001 /IGNORE:4254 /OPT:REF /OPT:ICF=3D10 /MAP /ALIGN:32 /SECTION:.xdat= a,D /SECTION:.pdata,D /MACHINE:X86 /LTCG /DLL /ENTRY:$(IMAGE_ENTRY_POINT) /= SUBSYSTEM:EFI_BOOT_SERVICE_DRIVER /SAFESEH:NO /BASE:0 /DRIVER /MERGE:.rdata= =3D.data >>>>>>>>>>=20 >>>>>>>>>> @@ -605,9 +605,9 @@ NOOPT_VS2008x86_X64_CC_FLAGS =3D /nolo= go /c /WX /GS- /W4 /Gs32768 /D UNICODE >>>>>>>>>> RELEASE_VS2008x86_X64_ASM_FLAGS =3D /nologo /c /WX /W3 /Cx /Z= d >>>>>>>>>>=20 >>>>>>>>>> NOOPT_VS2008x86_X64_ASM_FLAGS =3D /nologo /c /WX /W3 /Cx /Z= d /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= _SECTION_NAME=3D.rdata >>>>>>>>>>=20 >>>>>>>>>> +RELEASE_VS2008x86_X64_NASM_FLAGS =3D -Ox -f win64 -DRODATA_SE= CTION_NAME=3D.rdata >>>>>>>>>>=20 >>>>>>>>>> +NOOPT_VS2008x86_X64_NASM_FLAGS =3D -O0 -f win64 -g -DRODATA= _SECTION_NAME=3D.rdata >>>>>>>>>>=20 >>>>>>>>>>=20 >>>>>>>>>>=20 >>>>>>>>>> DEBUG_VS2008x86_X64_DLINK_FLAGS =3D /NOLOGO /NODEFAULTLIB /IGN= ORE: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 /SAFESEH:NO /BASE:0 /DRIVER /DEBUG >>>>>>>>>>=20 >>>>>>>>>> RELEASE_VS2008x86_X64_DLINK_FLAGS =3D /NOLOGO /NODEFAULTLIB /IG= NORE:4001 /IGNORE:4254 /OPT:REF /OPT:ICF=3D10 /MAP /ALIGN:32 /SECTION:.xdat= a,D /SECTION:.pdata,D /Machine:X64 /LTCG /DLL /ENTRY:$(IMAGE_ENTRY_POINT) /= SUBSYSTEM:EFI_BOOT_SERVICE_DRIVER /SAFESEH:NO /BASE:0 /DRIVER /MERGE:.rdata= =3D.data >>>>>>>>>>=20 >>>>>>>>>> @@ -688,9 +688,9 @@ NOOPT_VS2010_IA32_CC_FLAGS =3D /nolog= o /c /WX /GS- /W4 /Gs32768 /D UNICODE >>>>>>>>>> RELEASE_VS2010_IA32_ASM_FLAGS =3D /nologo /c /WX /W3 /Cx /co= ff /Zd >>>>>>>>>>=20 >>>>>>>>>> NOOPT_VS2010_IA32_ASM_FLAGS =3D /nologo /c /WX /W3 /Cx /co= ff /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_SEC= TION_NAME=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 /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 >>>>>>>>>>=20 >>>>>>>>>> RELEASE_VS2010_IA32_DLINK_FLAGS =3D /NOLOGO /NODEFAULTLIB /IGN= ORE: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) /S= UBSYSTEM: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_SE= CTION_NAME=3D.rdata >>>>>>>>>>=20 >>>>>>>>>> +RELEASE_VS2010_X64_NASM_FLAGS =3D -Ox -f win64 -DRODATA_SECTI= ON_NAME=3D.rdata >>>>>>>>>>=20 >>>>>>>>>> +NOOPT_VS2010_X64_NASM_FLAGS =3D -O0 -f win64 -g -DRODATA_SE= CTION_NAME=3D.rdata >>>>>>>>>>=20 >>>>>>>>>>=20 >>>>>>>>>>=20 >>>>>>>>>> DEBUG_VS2010_X64_DLINK_FLAGS =3D /NOLOGO /NODEFAULTLIB /IGNORE= :4001 /OPT:REF /OPT:ICF=3D10 /MAP /ALIGN:32 /SECTION:.xdata,D /SECTION:.pda= ta,D /Machine:X64 /LTCG /DLL /ENTRY:$(IMAGE_ENTRY_POINT) /SUBSYSTEM:EFI_BOO= T_SERVICE_DRIVER /SAFESEH:NO /BASE:0 /DRIVER /DEBUG >>>>>>>>>>=20 >>>>>>>>>> RELEASE_VS2010_X64_DLINK_FLAGS =3D /NOLOGO /NODEFAULTLIB /IGNOR= E: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) /SUB= SYSTEM:EFI_BOOT_SERVICE_DRIVER /SAFESEH:NO /BASE:0 /DRIVER /MERGE:.rdata=3D= .data >>>>>>>>>>=20 >>>>>>>>>> @@ -799,9 +799,9 @@ NOOPT_VS2010x86_IA32_CC_FLAGS =3D /nolo= go /c /WX /GS- /W4 /Gs32768 /D UNICODE >>>>>>>>>> RELEASE_VS2010x86_IA32_ASM_FLAGS =3D /nologo /c /WX /W3 /Cx /c= off /Zd >>>>>>>>>>=20 >>>>>>>>>> NOOPT_VS2010x86_IA32_ASM_FLAGS =3D /nologo /c /WX /W3 /Cx /c= off /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= _SECTION_NAME=3D.rdata >>>>>>>>>>=20 >>>>>>>>>> +RELEASE_VS2010x86_IA32_NASM_FLAGS =3D -Ox -f win32 -DRODATA_SE= CTION_NAME=3D.rdata >>>>>>>>>>=20 >>>>>>>>>> +NOOPT_VS2010x86_IA32_NASM_FLAGS =3D -O0 -f win32 -g -DRODATA= _SECTION_NAME=3D.rdata >>>>>>>>>>=20 >>>>>>>>>>=20 >>>>>>>>>>=20 >>>>>>>>>> DEBUG_VS2010x86_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 >>>>>>>>>>=20 >>>>>>>>>> RELEASE_VS2010x86_IA32_DLINK_FLAGS =3D /NOLOGO /NODEFAULTLIB /IG= NORE:4001 /IGNORE:4254 /OPT:REF /OPT:ICF=3D10 /MAP /ALIGN:32 /SECTION:.xdat= a,D /SECTION:.pdata,D /MACHINE:X86 /LTCG /DLL /ENTRY:$(IMAGE_ENTRY_POINT) /= SUBSYSTEM:EFI_BOOT_SERVICE_DRIVER /SAFESEH:NO /BASE:0 /DRIVER /MERGE:.rdata= =3D.data >>>>>>>>>>=20 >>>>>>>>>> @@ -831,9 +831,9 @@ NOOPT_VS2010x86_X64_CC_FLAGS =3D /nolo= go /c /WX /GS- /W4 /Gs32768 /D UNICODE >>>>>>>>>> RELEASE_VS2010x86_X64_ASM_FLAGS =3D /nologo /c /WX /W3 /Cx /Z= d >>>>>>>>>>=20 >>>>>>>>>> NOOPT_VS2010x86_X64_ASM_FLAGS =3D /nologo /c /WX /W3 /Cx /Z= d /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= _SECTION_NAME=3D.rdata >>>>>>>>>>=20 >>>>>>>>>> +RELEASE_VS2010x86_X64_NASM_FLAGS =3D -Ox -f win64 -DRODATA_SE= CTION_NAME=3D.rdata >>>>>>>>>>=20 >>>>>>>>>> +NOOPT_VS2010x86_X64_NASM_FLAGS =3D -O0 -f win64 -g -DRODATA= _SECTION_NAME=3D.rdata >>>>>>>>>>=20 >>>>>>>>>>=20 >>>>>>>>>>=20 >>>>>>>>>> DEBUG_VS2010x86_X64_DLINK_FLAGS =3D /NOLOGO /NODEFAULTLIB /IGN= ORE: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 /SAFESEH:NO /BASE:0 /DRIVER /DEBUG >>>>>>>>>>=20 >>>>>>>>>> RELEASE_VS2010x86_X64_DLINK_FLAGS =3D /NOLOGO /NODEFAULTLIB /IG= NORE:4001 /IGNORE:4254 /OPT:REF /OPT:ICF=3D10 /MAP /ALIGN:32 /SECTION:.xdat= a,D /SECTION:.pdata,D /Machine:X64 /LTCG /DLL /ENTRY:$(IMAGE_ENTRY_POINT) /= SUBSYSTEM:EFI_BOOT_SERVICE_DRIVER /SAFESEH:NO /BASE:0 /DRIVER /MERGE:.rdata= =3D.data >>>>>>>>>>=20 >>>>>>>>>> @@ -913,9 +913,9 @@ NOOPT_VS2012_IA32_CC_FLAGS =3D /nolog= o /arch:IA32 /c /WX /GS- /W4 /Gs32768 >>>>>>>>>> RELEASE_VS2012_IA32_ASM_FLAGS =3D /nologo /c /WX /W3 /Cx /co= ff /Zd >>>>>>>>>>=20 >>>>>>>>>> NOOPT_VS2012_IA32_ASM_FLAGS =3D /nologo /c /WX /W3 /Cx /co= ff /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_SEC= TION_NAME=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 /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 >>>>>>>>>>=20 >>>>>>>>>> RELEASE_VS2012_IA32_DLINK_FLAGS =3D /NOLOGO /NODEFAULTLIB /IGN= ORE: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) /S= UBSYSTEM: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_SE= CTION_NAME=3D.rdata >>>>>>>>>>=20 >>>>>>>>>> +RELEASE_VS2012_X64_NASM_FLAGS =3D -Ox -f win64 -DRODATA_SECTI= ON_NAME=3D.rdata >>>>>>>>>>=20 >>>>>>>>>> +NOOPT_VS2012_X64_NASM_FLAGS =3D -O0 -f win64 -g -DRODATA_SE= CTION_NAME=3D.rdata >>>>>>>>>>=20 >>>>>>>>>>=20 >>>>>>>>>>=20 >>>>>>>>>> DEBUG_VS2012_X64_DLINK_FLAGS =3D /NOLOGO /NODEFAULTLIB /IGNORE= :4001 /OPT:REF /OPT:ICF=3D10 /MAP /ALIGN:32 /SECTION:.xdata,D /SECTION:.pda= ta,D /Machine:X64 /LTCG /DLL /ENTRY:$(IMAGE_ENTRY_POINT) /SUBSYSTEM:EFI_BOO= T_SERVICE_DRIVER /SAFESEH:NO /BASE:0 /DRIVER /DEBUG >>>>>>>>>>=20 >>>>>>>>>> RELEASE_VS2012_X64_DLINK_FLAGS =3D /NOLOGO /NODEFAULTLIB /IGNOR= E: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) /SUB= SYSTEM:EFI_BOOT_SERVICE_DRIVER /SAFESEH:NO /BASE:0 /DRIVER /MERGE:.rdata=3D= .data >>>>>>>>>>=20 >>>>>>>>>> @@ -1024,9 +1024,9 @@ NOOPT_VS2012x86_IA32_CC_FLAGS =3D /no= logo /arch:IA32 /c /WX /GS- /W4 /Gs32768 >>>>>>>>>> RELEASE_VS2012x86_IA32_ASM_FLAGS =3D /nologo /c /WX /W3 /Cx /c= off /Zd >>>>>>>>>>=20 >>>>>>>>>> NOOPT_VS2012x86_IA32_ASM_FLAGS =3D /nologo /c /WX /W3 /Cx /c= off /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= _SECTION_NAME=3D.rdata >>>>>>>>>>=20 >>>>>>>>>> +RELEASE_VS2012x86_IA32_NASM_FLAGS =3D -Ox -f win32 -DRODATA_SE= CTION_NAME=3D.rdata >>>>>>>>>>=20 >>>>>>>>>> +NOOPT_VS2012x86_IA32_NASM_FLAGS =3D -O0 -f win32 -g -DRODATA= _SECTION_NAME=3D.rdata >>>>>>>>>>=20 >>>>>>>>>>=20 >>>>>>>>>>=20 >>>>>>>>>> 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 >>>>>>>>>>=20 >>>>>>>>>> RELEASE_VS2012x86_IA32_DLINK_FLAGS =3D /NOLOGO /NODEFAULTLIB /IG= NORE:4001 /IGNORE:4254 /OPT:REF /OPT:ICF=3D10 /MAP /ALIGN:32 /SECTION:.xdat= a,D /SECTION:.pdata,D /MACHINE:X86 /LTCG /DLL /ENTRY:$(IMAGE_ENTRY_POINT) /= SUBSYSTEM:EFI_BOOT_SERVICE_DRIVER /SAFESEH:NO /BASE:0 /DRIVER /MERGE:.rdata= =3D.data >>>>>>>>>>=20 >>>>>>>>>> @@ -1056,9 +1056,9 @@ NOOPT_VS2012x86_X64_CC_FLAGS =3D /no= logo /c /WX /GS- /W4 /Gs32768 /D UNICODE >>>>>>>>>> RELEASE_VS2012x86_X64_ASM_FLAGS =3D /nologo /c /WX /W3 /Cx /Z= d >>>>>>>>>>=20 >>>>>>>>>> NOOPT_VS2012x86_X64_ASM_FLAGS =3D /nologo /c /WX /W3 /Cx /Z= d /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= _SECTION_NAME=3D.rdata >>>>>>>>>>=20 >>>>>>>>>> +RELEASE_VS2012x86_X64_NASM_FLAGS =3D -Ox -f win64 -DRODATA_SE= CTION_NAME=3D.rdata >>>>>>>>>>=20 >>>>>>>>>> +NOOPT_VS2012x86_X64_NASM_FLAGS =3D -O0 -f win64 -g -DRODATA= _SECTION_NAME=3D.rdata >>>>>>>>>>=20 >>>>>>>>>>=20 >>>>>>>>>>=20 >>>>>>>>>> DEBUG_VS2012x86_X64_DLINK_FLAGS =3D /NOLOGO /NODEFAULTLIB /IGN= ORE: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 /SAFESEH:NO /BASE:0 /DRIVER /DEBUG >>>>>>>>>>=20 >>>>>>>>>> RELEASE_VS2012x86_X64_DLINK_FLAGS =3D /NOLOGO /NODEFAULTLIB /IG= NORE:4001 /IGNORE:4254 /OPT:REF /OPT:ICF=3D10 /MAP /ALIGN:32 /SECTION:.xdat= a,D /SECTION:.pdata,D /Machine:X64 /LTCG /DLL /ENTRY:$(IMAGE_ENTRY_POINT) /= SUBSYSTEM:EFI_BOOT_SERVICE_DRIVER /SAFESEH:NO /BASE:0 /DRIVER /MERGE:.rdata= =3D.data >>>>>>>>>>=20 >>>>>>>>>> @@ -1138,9 +1138,9 @@ NOOPT_VS2013_IA32_CC_FLAGS =3D /nol= ogo /arch:IA32 /c /WX /GS- /W4 /Gs32768 >>>>>>>>>> RELEASE_VS2013_IA32_ASM_FLAGS =3D /nologo /c /WX /W3 /Cx /co= ff /Zd >>>>>>>>>>=20 >>>>>>>>>> NOOPT_VS2013_IA32_ASM_FLAGS =3D /nologo /c /WX /W3 /Cx /co= ff /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_SEC= TION_NAME=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 /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 >>>>>>>>>>=20 >>>>>>>>>> RELEASE_VS2013_IA32_DLINK_FLAGS =3D /NOLOGO /NODEFAULTLIB /IGN= ORE: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) /S= UBSYSTEM:EFI_BOOT_SERVICE_DRIVER /SAFESEH:NO /BASE:0 /DRIVER /MERGE:.rdata= =3D.data >>>>>>>>>>=20 >>>>>>>>>> @@ -1170,9 +1170,9 @@ NOOPT_VS2013_X64_CC_FLAGS =3D /nolog= o /c /WX /GS- /W4 /Gs32768 /D UNICODE /G >>>>>>>>>> RELEASE_VS2013_X64_ASM_FLAGS =3D /nologo /c /WX /W3 /Cx /Zd >>>>>>>>>>=20 >>>>>>>>>> NOOPT_VS2013_X64_ASM_FLAGS =3D /nologo /c /WX /W3 /Cx /Zd /Zi >>>>>>>>>>=20 >>>>>>>>>>=20 >>>>>>>>>>=20 >>>>>>>>>> - DEBUG_VS2013_X64_NASM_FLAGS =3D -Ox -f win64 -g >>>>>>>>>>=20 >>>>>>>>>> -RELEASE_VS2013_X64_NASM_FLAGS =3D -Ox -f win64 >>>>>>>>>>=20 >>>>>>>>>> -NOOPT_VS2013_X64_NASM_FLAGS =3D -O0 -f win64 -g >>>>>>>>>>=20 >>>>>>>>>> + DEBUG_VS2013_X64_NASM_FLAGS =3D -Ox -f win64 -g -DRODATA_SE= CTION_NAME=3D.rdata >>>>>>>>>>=20 >>>>>>>>>> +RELEASE_VS2013_X64_NASM_FLAGS =3D -Ox -f win64 -DRODATA_SECTI= ON_NAME=3D.rdata >>>>>>>>>>=20 >>>>>>>>>> +NOOPT_VS2013_X64_NASM_FLAGS =3D -O0 -f win64 -g -DRODATA_SE= CTION_NAME=3D.rdata >>>>>>>>>>=20 >>>>>>>>>>=20 >>>>>>>>>>=20 >>>>>>>>>> DEBUG_VS2013_X64_DLINK_FLAGS =3D /NOLOGO /NODEFAULTLIB /IGNORE= :4001 /OPT:REF /OPT:ICF=3D10 /MAP /ALIGN:32 /SECTION:.xdata,D /SECTION:.pda= ta,D /Machine:X64 /LTCG /DLL /ENTRY:$(IMAGE_ENTRY_POINT) /SUBSYSTEM:EFI_BOO= T_SERVICE_DRIVER /SAFESEH:NO /BASE:0 /DRIVER /DEBUG >>>>>>>>>>=20 >>>>>>>>>> RELEASE_VS2013_X64_DLINK_FLAGS =3D /NOLOGO /NODEFAULTLIB /IGNOR= E: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) /SUB= SYSTEM:EFI_BOOT_SERVICE_DRIVER /SAFESEH:NO /BASE:0 /DRIVER /MERGE:.rdata=3D= .data >>>>>>>>>>=20 >>>>>>>>>> @@ -1249,9 +1249,9 @@ NOOPT_VS2013x86_IA32_CC_FLAGS =3D /no= logo /arch:IA32 /c /WX /GS- /W4 /Gs32768 >>>>>>>>>> RELEASE_VS2013x86_IA32_ASM_FLAGS =3D /nologo /c /WX /W3 /Cx /c= off /Zd >>>>>>>>>>=20 >>>>>>>>>> NOOPT_VS2013x86_IA32_ASM_FLAGS =3D /nologo /c /WX /W3 /Cx /c= off /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= _SECTION_NAME=3D.rdata >>>>>>>>>>=20 >>>>>>>>>> +RELEASE_VS2013x86_IA32_NASM_FLAGS =3D -Ox -f win32 -DRODATA_SE= CTION_NAME=3D.rdata >>>>>>>>>>=20 >>>>>>>>>> +NOOPT_VS2013x86_IA32_NASM_FLAGS =3D -O0 -f win32 -g -DRODATA= _SECTION_NAME=3D.rdata >>>>>>>>>>=20 >>>>>>>>>>=20 >>>>>>>>>>=20 >>>>>>>>>> DEBUG_VS2013x86_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 >>>>>>>>>>=20 >>>>>>>>>> RELEASE_VS2013x86_IA32_DLINK_FLAGS =3D /NOLOGO /NODEFAULTLIB /IG= NORE:4001 /IGNORE:4254 /OPT:REF /OPT:ICF=3D10 /MAP /ALIGN:32 /SECTION:.xdat= a,D /SECTION:.pdata,D /MACHINE:X86 /LTCG /DLL /ENTRY:$(IMAGE_ENTRY_POINT) /= SUBSYSTEM:EFI_BOOT_SERVICE_DRIVER /SAFESEH:NO /BASE:0 /DRIVER /MERGE:.rdata= =3D.data >>>>>>>>>>=20 >>>>>>>>>> @@ -1281,9 +1281,9 @@ NOOPT_VS2013x86_X64_CC_FLAGS =3D /no= logo /c /WX /GS- /W4 /Gs32768 /D UNICODE >>>>>>>>>> RELEASE_VS2013x86_X64_ASM_FLAGS =3D /nologo /c /WX /W3 /Cx /Z= d >>>>>>>>>>=20 >>>>>>>>>> NOOPT_VS2013x86_X64_ASM_FLAGS =3D /nologo /c /WX /W3 /Cx /Z= d /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= _SECTION_NAME=3D.rdata >>>>>>>>>>=20 >>>>>>>>>> +RELEASE_VS2013x86_X64_NASM_FLAGS =3D -Ox -f win64 -DRODATA_SE= CTION_NAME=3D.rdata >>>>>>>>>>=20 >>>>>>>>>> +NOOPT_VS2013x86_X64_NASM_FLAGS =3D -O0 -f win64 -g -DRODATA= _SECTION_NAME=3D.rdata >>>>>>>>>>=20 >>>>>>>>>>=20 >>>>>>>>>>=20 >>>>>>>>>> DEBUG_VS2013x86_X64_DLINK_FLAGS =3D /NOLOGO /NODEFAULTLIB /IGN= ORE: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 /SAFESEH:NO /BASE:0 /DRIVER /DEBUG >>>>>>>>>>=20 >>>>>>>>>> RELEASE_VS2013x86_X64_DLINK_FLAGS =3D /NOLOGO /NODEFAULTLIB /IG= NORE:4001 /IGNORE:4254 /OPT:REF /OPT:ICF=3D10 /MAP /ALIGN:32 /SECTION:.xdat= a,D /SECTION:.pdata,D /Machine:X64 /LTCG /DLL /ENTRY:$(IMAGE_ENTRY_POINT) /= SUBSYSTEM:EFI_BOOT_SERVICE_DRIVER /SAFESEH:NO /BASE:0 /DRIVER /MERGE:.rdata= =3D.data >>>>>>>>>>=20 >>>>>>>>>> @@ -1364,9 +1364,9 @@ NOOPT_VS2015_IA32_CC_FLAGS =3D /nol= ogo /arch:IA32 /c /WX /GS- /W4 /Gs32768 >>>>>>>>>> RELEASE_VS2015_IA32_ASM_FLAGS =3D /nologo /c /WX /W3 /Cx /co= ff /Zd >>>>>>>>>>=20 >>>>>>>>>> NOOPT_VS2015_IA32_ASM_FLAGS =3D /nologo /c /WX /W3 /Cx /co= ff /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_SEC= TION_NAME=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 /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 >>>>>>>>>>=20 >>>>>>>>>> RELEASE_VS2015_IA32_DLINK_FLAGS =3D /NOLOGO /NODEFAULTLIB /IGN= ORE: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) /S= UBSYSTEM:EFI_BOOT_SERVICE_DRIVER /SAFESEH:NO /BASE:0 /DRIVER /MERGE:.rdata= =3D.data >>>>>>>>>>=20 >>>>>>>>>> @@ -1396,9 +1396,9 @@ NOOPT_VS2015_X64_CC_FLAGS =3D /nolog= o /c /WX /GS- /W4 /Gs32768 /D UNICODE /G >>>>>>>>>> RELEASE_VS2015_X64_ASM_FLAGS =3D /nologo /c /WX /W3 /Cx /Zd >>>>>>>>>>=20 >>>>>>>>>> NOOPT_VS2015_X64_ASM_FLAGS =3D /nologo /c /WX /W3 /Cx /Zd /Zi >>>>>>>>>>=20 >>>>>>>>>>=20 >>>>>>>>>>=20 >>>>>>>>>> - DEBUG_VS2015_X64_NASM_FLAGS =3D -Ox -f win64 -g >>>>>>>>>>=20 >>>>>>>>>> -RELEASE_VS2015_X64_NASM_FLAGS =3D -Ox -f win64 >>>>>>>>>>=20 >>>>>>>>>> -NOOPT_VS2015_X64_NASM_FLAGS =3D -O0 -f win64 -g >>>>>>>>>>=20 >>>>>>>>>> + DEBUG_VS2015_X64_NASM_FLAGS =3D -Ox -f win64 -g -DRODATA_SE= CTION_NAME=3D.rdata >>>>>>>>>>=20 >>>>>>>>>> +RELEASE_VS2015_X64_NASM_FLAGS =3D -Ox -f win64 -DRODATA_SECTI= ON_NAME=3D.rdata >>>>>>>>>>=20 >>>>>>>>>> +NOOPT_VS2015_X64_NASM_FLAGS =3D -O0 -f win64 -g -DRODATA_SE= CTION_NAME=3D.rdata >>>>>>>>>>=20 >>>>>>>>>>=20 >>>>>>>>>>=20 >>>>>>>>>> DEBUG_VS2015_X64_DLINK_FLAGS =3D /NOLOGO /NODEFAULTLIB /IGNORE= :4001 /OPT:REF /OPT:ICF=3D10 /MAP /ALIGN:32 /SECTION:.xdata,D /SECTION:.pda= ta,D /Machine:X64 /LTCG /DLL /ENTRY:$(IMAGE_ENTRY_POINT) /SUBSYSTEM:EFI_BOO= T_SERVICE_DRIVER /SAFESEH:NO /BASE:0 /DRIVER /DEBUG >>>>>>>>>>=20 >>>>>>>>>> RELEASE_VS2015_X64_DLINK_FLAGS =3D /NOLOGO /NODEFAULTLIB /IGNOR= E: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) /SUB= SYSTEM:EFI_BOOT_SERVICE_DRIVER /SAFESEH:NO /BASE:0 /DRIVER /MERGE:.rdata=3D= .data >>>>>>>>>>=20 >>>>>>>>>> @@ -1476,9 +1476,9 @@ NOOPT_VS2015x86_IA32_CC_FLAGS =3D /no= logo /arch:IA32 /c /WX /GS- /W4 /Gs32768 >>>>>>>>>> RELEASE_VS2015x86_IA32_ASM_FLAGS =3D /nologo /c /WX /W3 /Cx /c= off /Zd >>>>>>>>>>=20 >>>>>>>>>> NOOPT_VS2015x86_IA32_ASM_FLAGS =3D /nologo /c /WX /W3 /Cx /c= off /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= _SECTION_NAME=3D.rdata >>>>>>>>>>=20 >>>>>>>>>> +RELEASE_VS2015x86_IA32_NASM_FLAGS =3D -Ox -f win32 -DRODATA_SE= CTION_NAME=3D.rdata >>>>>>>>>>=20 >>>>>>>>>> +NOOPT_VS2015x86_IA32_NASM_FLAGS =3D -O0 -f win32 -g -DRODATA= _SECTION_NAME=3D.rdata >>>>>>>>>>=20 >>>>>>>>>>=20 >>>>>>>>>>=20 >>>>>>>>>> DEBUG_VS2015x86_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 >>>>>>>>>>=20 >>>>>>>>>> RELEASE_VS2015x86_IA32_DLINK_FLAGS =3D /NOLOGO /NODEFAULTLIB /IG= NORE:4001 /IGNORE:4254 /OPT:REF /OPT:ICF=3D10 /MAP /ALIGN:32 /SECTION:.xdat= a,D /SECTION:.pdata,D /MACHINE:X86 /LTCG /DLL /ENTRY:$(IMAGE_ENTRY_POINT) /= SUBSYSTEM:EFI_BOOT_SERVICE_DRIVER /SAFESEH:NO /BASE:0 /DRIVER /MERGE:.rdata= =3D.data >>>>>>>>>>=20 >>>>>>>>>> @@ -1508,9 +1508,9 @@ NOOPT_VS2015x86_X64_CC_FLAGS =3D /no= logo /c /WX /GS- /W4 /Gs32768 /D UNICODE >>>>>>>>>> RELEASE_VS2015x86_X64_ASM_FLAGS =3D /nologo /c /WX /W3 /Cx /Z= d >>>>>>>>>>=20 >>>>>>>>>> NOOPT_VS2015x86_X64_ASM_FLAGS =3D /nologo /c /WX /W3 /Cx /Z= d /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= _SECTION_NAME=3D.rdata >>>>>>>>>>=20 >>>>>>>>>> +RELEASE_VS2015x86_X64_NASM_FLAGS =3D -Ox -f win64 -DRODATA_SE= CTION_NAME=3D.rdata >>>>>>>>>>=20 >>>>>>>>>> +NOOPT_VS2015x86_X64_NASM_FLAGS =3D -O0 -f win64 -g -DRODATA= _SECTION_NAME=3D.rdata >>>>>>>>>>=20 >>>>>>>>>>=20 >>>>>>>>>>=20 >>>>>>>>>> DEBUG_VS2015x86_X64_DLINK_FLAGS =3D /NOLOGO /NODEFAULTLIB /IGN= ORE: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 /SAFESEH:NO /BASE:0 /DRIVER /DEBUG >>>>>>>>>>=20 >>>>>>>>>> RELEASE_VS2015x86_X64_DLINK_FLAGS =3D /NOLOGO /NODEFAULTLIB /IG= NORE:4001 /IGNORE:4254 /OPT:REF /OPT:ICF=3D10 /MAP /ALIGN:32 /SECTION:.xdat= a,D /SECTION:.pdata,D /Machine:X64 /LTCG /DLL /ENTRY:$(IMAGE_ENTRY_POINT) /= SUBSYSTEM:EFI_BOOT_SERVICE_DRIVER /SAFESEH:NO /BASE:0 /DRIVER /MERGE:.rdata= =3D.data >>>>>>>>>>=20 >>>>>>>>>> @@ -1586,9 +1586,9 @@ NOOPT_VS2017_IA32_CC_FLAGS =3D /nolog= o /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 /Zi >>>>>>>>>>=20 >>>>>>>>>>=20 >>>>>>>>>>=20 >>>>>>>>>> - DEBUG_VS2017_IA32_NASM_FLAGS =3D -Ox -f win32 -g >>>>>>>>>>=20 >>>>>>>>>> -RELEASE_VS2017_IA32_NASM_FLAGS =3D -Ox -f win32 >>>>>>>>>>=20 >>>>>>>>>> -NOOPT_VS2017_IA32_NASM_FLAGS =3D -O0 -f win32 -g >>>>>>>>>>=20 >>>>>>>>>> + DEBUG_VS2017_IA32_NASM_FLAGS =3D -Ox -f win32 -g -DRODATA_SE= CTION_NAME=3D.rdata >>>>>>>>>>=20 >>>>>>>>>> +RELEASE_VS2017_IA32_NASM_FLAGS =3D -Ox -f win32 -DRODATA_SECTI= ON_NAME=3D.rdata >>>>>>>>>>=20 >>>>>>>>>> +NOOPT_VS2017_IA32_NASM_FLAGS =3D -O0 -f win32 -g -DRODATA_SE= CTION_NAME=3D.rdata >>>>>>>>>>=20 >>>>>>>>>>=20 >>>>>>>>>>=20 >>>>>>>>>> DEBUG_VS2017_IA32_DLINK_FLAGS =3D /NOLOGO /NODEFAULTLIB /IGNORE= :4001 /OPT:REF /OPT:ICF=3D10 /MAP /ALIGN:32 /SECTION:.xdata,D /SECTION:.pda= ta,D /MACHINE:X86 /LTCG /DLL /ENTRY:$(IMAGE_ENTRY_POINT) /SUBSYSTEM:EFI_BOO= T_SERVICE_DRIVER /SAFESEH:NO /BASE:0 /DRIVER /DEBUG >>>>>>>>>>=20 >>>>>>>>>> RELEASE_VS2017_IA32_DLINK_FLAGS =3D /NOLOGO /NODEFAULTLIB /IGNOR= E: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) /SUB= SYSTEM:EFI_BOOT_SERVICE_DRIVER /SAFESEH:NO /BASE:0 /DRIVER /MERGE:.rdata=3D= .data >>>>>>>>>>=20 >>>>>>>>>> @@ -1616,9 +1616,9 @@ NOOPT_VS2017_X64_CC_FLAGS =3D /nolog= o /c /WX /GS- /W4 /Gs32768 /D UNICODE /G >>>>>>>>>> RELEASE_VS2017_X64_ASM_FLAGS =3D /nologo /c /WX /W3 /Cx /Zd >>>>>>>>>>=20 >>>>>>>>>> NOOPT_VS2017_X64_ASM_FLAGS =3D /nologo /c /WX /W3 /Cx /Zd /= Zi >>>>>>>>>>=20 >>>>>>>>>>=20 >>>>>>>>>>=20 >>>>>>>>>> - DEBUG_VS2017_X64_NASM_FLAGS =3D -Ox -f win64 -g >>>>>>>>>>=20 >>>>>>>>>> -RELEASE_VS2017_X64_NASM_FLAGS =3D -Ox -f win64 >>>>>>>>>>=20 >>>>>>>>>> -NOOPT_VS2017_X64_NASM_FLAGS =3D -O0 -f win64 -g >>>>>>>>>>=20 >>>>>>>>>> + DEBUG_VS2017_X64_NASM_FLAGS =3D -Ox -f win64 -g -DRODATA_SE= CTION_NAME=3D.rdata >>>>>>>>>>=20 >>>>>>>>>> +RELEASE_VS2017_X64_NASM_FLAGS =3D -Ox -f win64 -DRODATA_SECTI= ON_NAME=3D.rdata >>>>>>>>>>=20 >>>>>>>>>> +NOOPT_VS2017_X64_NASM_FLAGS =3D -O0 -f win64 -g -DRODATA_SE= CTION_NAME=3D.rdata >>>>>>>>>>=20 >>>>>>>>>>=20 >>>>>>>>>>=20 >>>>>>>>>> DEBUG_VS2017_X64_DLINK_FLAGS =3D /NOLOGO /NODEFAULTLIB /IGNORE= :4001 /IGNORE:4281 /OPT:REF /OPT:ICF=3D10 /MAP /ALIGN:32 /SECTION:.xdata,D = /SECTION:.pdata,D /Machine:X64 /LTCG /DLL /ENTRY:$(IMAGE_ENTRY_POINT) /SUBS= YSTEM:EFI_BOOT_SERVICE_DRIVER /SAFESEH:NO /BASE:0 /DRIVER /DEBUG >>>>>>>>>>=20 >>>>>>>>>> RELEASE_VS2017_X64_DLINK_FLAGS =3D /NOLOGO /NODEFAULTLIB /IGNOR= E:4001 /IGNORE:4281 /IGNORE:4254 /OPT:REF /OPT:ICF=3D10 /MAP /ALIGN:32 /SEC= TION:.xdata,D /SECTION:.pdata,D /Machine:X64 /LTCG /DLL /ENTRY:$(IMAGE_ENTR= Y_POINT) /SUBSYSTEM:EFI_BOOT_SERVICE_DRIVER /SAFESEH:NO /BASE:0 /DRIVER /ME= RGE:.rdata=3D.data >>>>>>>>>>=20 >>>>>>>>>> @@ -1744,9 +1744,9 @@ NOOPT_VS2019_IA32_CC_FLAGS =3D /nolog= o /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 /Zi >>>>>>>>>>=20 >>>>>>>>>>=20 >>>>>>>>>>=20 >>>>>>>>>> - DEBUG_VS2019_IA32_NASM_FLAGS =3D -Ox -f win32 -g >>>>>>>>>>=20 >>>>>>>>>> -RELEASE_VS2019_IA32_NASM_FLAGS =3D -Ox -f win32 >>>>>>>>>>=20 >>>>>>>>>> -NOOPT_VS2019_IA32_NASM_FLAGS =3D -O0 -f win32 -g >>>>>>>>>>=20 >>>>>>>>>> + DEBUG_VS2019_IA32_NASM_FLAGS =3D -Ox -f win32 -g -DRODATA_SE= CTION_NAME=3D.rdata >>>>>>>>>>=20 >>>>>>>>>> +RELEASE_VS2019_IA32_NASM_FLAGS =3D -Ox -f win32 -DRODATA_SECTI= ON_NAME=3D.rdata >>>>>>>>>>=20 >>>>>>>>>> +NOOPT_VS2019_IA32_NASM_FLAGS =3D -O0 -f win32 -g -DRODATA_SE= CTION_NAME=3D.rdata >>>>>>>>>>=20 >>>>>>>>>>=20 >>>>>>>>>>=20 >>>>>>>>>> DEBUG_VS2019_IA32_DLINK_FLAGS =3D /NOLOGO /NODEFAULTLIB /IGNORE= :4001 /OPT:REF /OPT:ICF=3D10 /MAP /ALIGN:32 /SECTION:.xdata,D /SECTION:.pda= ta,D /MACHINE:X86 /LTCG /DLL /ENTRY:$(IMAGE_ENTRY_POINT) /SUBSYSTEM:EFI_BOO= T_SERVICE_DRIVER /SAFESEH:NO /BASE:0 /DRIVER /DEBUG >>>>>>>>>>=20 >>>>>>>>>> RELEASE_VS2019_IA32_DLINK_FLAGS =3D /NOLOGO /NODEFAULTLIB /IGNOR= E: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) /SUB= SYSTEM:EFI_BOOT_SERVICE_DRIVER /SAFESEH:NO /BASE:0 /DRIVER /MERGE:.rdata=3D= .data >>>>>>>>>>=20 >>>>>>>>>> @@ -1774,9 +1774,9 @@ NOOPT_VS2019_X64_CC_FLAGS =3D /nolog= o /c /WX /GS- /W4 /Gs32768 /D UNICODE /G >>>>>>>>>> RELEASE_VS2019_X64_ASM_FLAGS =3D /nologo /c /WX /W3 /Cx /Zd >>>>>>>>>>=20 >>>>>>>>>> NOOPT_VS2019_X64_ASM_FLAGS =3D /nologo /c /WX /W3 /Cx /Zd /= Zi >>>>>>>>>>=20 >>>>>>>>>>=20 >>>>>>>>>>=20 >>>>>>>>>> - DEBUG_VS2019_X64_NASM_FLAGS =3D -Ox -f win64 -g >>>>>>>>>>=20 >>>>>>>>>> -RELEASE_VS2019_X64_NASM_FLAGS =3D -Ox -f win64 >>>>>>>>>>=20 >>>>>>>>>> -NOOPT_VS2019_X64_NASM_FLAGS =3D -O0 -f win64 -g >>>>>>>>>>=20 >>>>>>>>>> + DEBUG_VS2019_X64_NASM_FLAGS =3D -Ox -f win64 -g -DRODATA_SE= CTION_NAME=3D.rdata >>>>>>>>>>=20 >>>>>>>>>> +RELEASE_VS2019_X64_NASM_FLAGS =3D -Ox -f win64 -DRODATA_SECTI= ON_NAME=3D.rdata >>>>>>>>>>=20 >>>>>>>>>> +NOOPT_VS2019_X64_NASM_FLAGS =3D -O0 -f win64 -g -DRODATA_SE= CTION_NAME=3D.rdata >>>>>>>>>>=20 >>>>>>>>>>=20 >>>>>>>>>>=20 >>>>>>>>>> DEBUG_VS2019_X64_DLINK_FLAGS =3D /NOLOGO /NODEFAULTLIB /IGNORE= :4001 /IGNORE:4281 /OPT:REF /OPT:ICF=3D10 /MAP /ALIGN:32 /SECTION:.xdata,D = /SECTION:.pdata,D /Machine:X64 /LTCG /DLL /ENTRY:$(IMAGE_ENTRY_POINT) /SUBS= YSTEM:EFI_BOOT_SERVICE_DRIVER /SAFESEH:NO /BASE:0 /DRIVER /DEBUG >>>>>>>>>>=20 >>>>>>>>>> RELEASE_VS2019_X64_DLINK_FLAGS =3D /NOLOGO /NODEFAULTLIB /IGNOR= E:4001 /IGNORE:4281 /IGNORE:4254 /OPT:REF /OPT:ICF=3D10 /MAP /ALIGN:32 /SEC= TION:.xdata,D /SECTION:.pdata,D /Machine:X64 /LTCG /DLL /ENTRY:$(IMAGE_ENTR= Y_POINT) /SUBSYSTEM:EFI_BOOT_SERVICE_DRIVER /SAFESEH:NO /BASE:0 /DRIVER /ME= RGE:.rdata=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_FLAG= S) >>>>>>>>>>=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) -O= s >>>>>>>>>>=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_IA32_CC_FLAGS) -Os -Wno-unused-but >>>>>>>>>> *_GCC48_X64_DLINK2_FLAGS =3D DEF(GCC48_X64_DLINK2_FLAGS) >>>>>>>>>>=20 >>>>>>>>>> *_GCC48_X64_RC_FLAGS =3D DEF(GCC_X64_RC_FLAGS) >>>>>>>>>>=20 >>>>>>>>>> *_GCC48_X64_OBJCOPY_FLAGS =3D >>>>>>>>>>=20 >>>>>>>>>> -*_GCC48_X64_NASM_FLAGS =3D -f elf64 >>>>>>>>>>=20 >>>>>>>>>> +*_GCC48_X64_NASM_FLAGS =3D -f elf64 -DRODATA_SECTION_= NAME=3D.rodata >>>>>>>>>>=20 >>>>>>>>>>=20 >>>>>>>>>>=20 >>>>>>>>>> DEBUG_GCC48_X64_CC_FLAGS =3D DEF(GCC48_X64_CC_FLAGS) -Os >>>>>>>>>>=20 >>>>>>>>>> RELEASE_GCC48_X64_CC_FLAGS =3D DEF(GCC48_X64_CC_FLAGS) -Os= -Wno-unused-but-set-variable >>>>>>>>>>=20 >>>>>>>>>> @@ -2170,7 +2170,7 @@ RELEASE_GCC48_AARCH64_CC_FLAGS =3D DEF(G= CC48_AARCH64_CC_FLAGS) -Wno-unused-but-s >>>>>>>>>> *_GCC49_IA32_DLINK2_FLAGS =3D DEF(GCC49_IA32_DLINK2_FLAG= S) >>>>>>>>>>=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) -O= s >>>>>>>>>>=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_IA32_CC_FLAGS) -Os -Wno-unused-but >>>>>>>>>> *_GCC49_X64_DLINK2_FLAGS =3D DEF(GCC49_X64_DLINK2_FLAGS) >>>>>>>>>>=20 >>>>>>>>>> *_GCC49_X64_RC_FLAGS =3D DEF(GCC_X64_RC_FLAGS) >>>>>>>>>>=20 >>>>>>>>>> *_GCC49_X64_OBJCOPY_FLAGS =3D >>>>>>>>>>=20 >>>>>>>>>> -*_GCC49_X64_NASM_FLAGS =3D -f elf64 >>>>>>>>>>=20 >>>>>>>>>> +*_GCC49_X64_NASM_FLAGS =3D -f elf64 -DRODATA_SECTION_= NAME=3D.rodata >>>>>>>>>>=20 >>>>>>>>>>=20 >>>>>>>>>>=20 >>>>>>>>>> DEBUG_GCC49_X64_CC_FLAGS =3D DEF(GCC49_X64_CC_FLAGS) -Os >>>>>>>>>>=20 >>>>>>>>>> RELEASE_GCC49_X64_CC_FLAGS =3D DEF(GCC49_X64_CC_FLAGS) -Os= -Wno-unused-but-set-variable -Wno-unused-const-variable >>>>>>>>>>=20 >>>>>>>>>> @@ -2316,7 +2316,7 @@ RELEASE_GCC49_AARCH64_DLINK_XIPFLAGS =3D -= z common-page-size=3D0x20 >>>>>>>>>> *_GCC5_IA32_DLINK2_FLAGS =3D DEF(GCC5_IA32_DLINK2_FLAGS)= -no-pie >>>>>>>>>>=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) -flt= o -Os >>>>>>>>>>=20 >>>>>>>>>> DEBUG_GCC5_IA32_DLINK_FLAGS =3D DEF(GCC5_IA32_X64_DLINK_FLAG= S) -flto -Os -Wl,-m,elf_i386,--oformat=3Delf32-i386 >>>>>>>>>>=20 >>>>>>>>>> @@ -2348,7 +2348,7 @@ RELEASE_GCC5_IA32_DLINK_FLAGS =3D DEF(G= CC5_IA32_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= -DUSING_LTO -Os >>>>>>>>>>=20 >>>>>>>>>> DEBUG_GCC5_X64_DLINK_FLAGS =3D DEF(GCC5_X64_DLINK_FLAGS) -f= lto -Os >>>>>>>>>>=20 >>>>>>>>>> @@ -2589,7 +2589,7 @@ DEFINE CLANG38_ALL_CC_FLAGS =3D DE= F(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_SECTI= ON_NAME=3D.rodata >>>>>>>>>>=20 >>>>>>>>>> *_CLANG38_IA32_PP_FLAGS =3D DEF(GCC_PP_FLAGS) DEF(CL= ANG38_IA32_TARGET) >>>>>>>>>>=20 >>>>>>>>>> *_CLANG38_IA32_ASLPP_FLAGS =3D DEF(GCC_ASLPP_FLAGS) DEF= (CLANG38_IA32_TARGET) >>>>>>>>>>=20 >>>>>>>>>> *_CLANG38_IA32_VFRPP_FLAGS =3D DEF(GCC_VFRPP_FLAGS) DEF= (CLANG38_IA32_TARGET) >>>>>>>>>>=20 >>>>>>>>>> @@ -2626,7 +2626,7 @@ NOOPT_CLANG38_IA32_DLINK2_FLAGS =3D DE= F(GCC5_IA32_DLINK2_FLAGS) -O0 >>>>>>>>>> *_CLANG38_X64_ASM_FLAGS =3D DEF(GCC5_ASM_FLAGS) -m64 = DEF(CLANG38_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_SECTIO= N_NAME=3D.rodata >>>>>>>>>>=20 >>>>>>>>>> *_CLANG38_X64_PP_FLAGS =3D DEF(GCC_PP_FLAGS) DEF(CLA= NG38_X64_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 D= EF(GCC48_ALL_CC_FLAGS) DEF(CLANGPDB_WARN >>>>>>>>>> *_CLANGPDB_IA32_ASLCC_FLAGS =3D DEF(GCC_ASLCC_FLAGS) -m= 32 -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_SECT= ION_NAME=3D.rdata >>>>>>>>>>=20 >>>>>>>>>> *_CLANGPDB_IA32_PP_FLAGS =3D DEF(GCC_PP_FLAGS) DEF(C= LANGPDB_IA32_TARGET) >>>>>>>>>>=20 >>>>>>>>>> *_CLANGPDB_IA32_ASLPP_FLAGS =3D DEF(GCC_ASLPP_FLAGS) DE= F(CLANGPDB_IA32_TARGET) >>>>>>>>>>=20 >>>>>>>>>> *_CLANGPDB_IA32_VFRPP_FLAGS =3D DEF(GCC_VFRPP_FLAGS) DE= F(CLANGPDB_IA32_TARGET) >>>>>>>>>>=20 >>>>>>>>>> @@ -2811,7 +2811,7 @@ NOOPT_CLANGPDB_IA32_DLINK2_FLAGS =3D >>>>>>>>>> *_CLANGPDB_X64_ASLCC_FLAGS =3D DEF(GCC_ASLCC_FLAGS) -m6= 4 -fno-lto DEF(CLANGPDB_X64_TARGET) >>>>>>>>>>=20 >>>>>>>>>> *_CLANGPDB_X64_ASM_FLAGS =3D DEF(GCC_ASM_FLAGS) -m64 = DEF(CLANGPDB_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_SECTI= ON_NAME=3D.rdata >>>>>>>>>>=20 >>>>>>>>>> *_CLANGPDB_X64_PP_FLAGS =3D DEF(GCC_PP_FLAGS) DEF(CL= ANGPDB_X64_TARGET) >>>>>>>>>>=20 >>>>>>>>>> *_CLANGPDB_X64_ASLPP_FLAGS =3D DEF(GCC_ASLPP_FLAGS) DEF= (CLANGPDB_X64_TARGET) >>>>>>>>>>=20 >>>>>>>>>> *_CLANGPDB_X64_VFRPP_FLAGS =3D DEF(GCC_VFRPP_FLAGS) DEF= (CLANGPDB_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 -march=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_SE= CTION_NAME=3D.rodata >>>>>>>>>>=20 >>>>>>>>>> *_CLANGDWARF_IA32_PP_FLAGS =3D DEF(GCC_PP_FLAGS) DEF= (CLANG38_IA32_TARGET) >>>>>>>>>>=20 >>>>>>>>>> *_CLANGDWARF_IA32_ASLPP_FLAGS =3D DEF(GCC_ASLPP_FLAGS) = DEF(CLANG38_IA32_TARGET) >>>>>>>>>>=20 >>>>>>>>>> *_CLANGDWARF_IA32_VFRPP_FLAGS =3D DEF(GCC_VFRPP_FLAGS) = DEF(CLANG38_IA32_TARGET) >>>>>>>>>>=20 >>>>>>>>>> @@ -2914,7 +2914,7 @@ NOOPT_CLANGDWARF_IA32_DLINK2_FLAGS =3D= DEF(CLANGDWARF_IA32_DLINK2_FLAGS) -O0 - >>>>>>>>>> *_CLANGDWARF_X64_ASM_FLAGS =3D DEF(GCC5_ASM_FLAGS) -m= 64 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_SEC= TION_NAME=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) D= EF(CLANG38_X64_TARGET) >>>>>>>>>>=20 >>>>>>>>>> *_CLANGDWARF_X64_VFRPP_FLAGS =3D DEF(GCC_VFRPP_FLAGS) D= EF(CLANG38_X64_TARGET) >>>>>>>>>>=20 >>>>>>>>>> @@ -2985,7 +2985,7 @@ RELEASE_XCODE5_IA32_DLINK_FLAGS =3D -= arch i386 -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 >>>>>>>>> An EFI Mach-O file does not contain a .rodata section. A Mach-O c= ontains a __DATA segment that is broken up into sections. For a typical EFI= image there are __const, __data, __bss sections in the __DATA segment [1]. >>>>>>>> Yes, and ".rodata" is almost a synonym for "__DATA,__const", with = a small exception [1]. Maybe it'd be clearer if the macro was renamed to "N= ASM_RODATA_SECTION_NAME", to indicate this is not just a "raw" name, but NA= SM gives it a semantic meaning? >>>>>>>>=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 adding any kind of new data section is a no-op at best. >>>>>>>> This is a part I missed, because I do not have an Xcode toolchain = at hand, so thanks for investigating. However this, in my opinion, is a fla= w with Mach-O/mtoc and not with my patch. It seems like the only difference= between __TEXT,__const and __DATA,__const is whether the data is targeted = by a relocation or not. Such a concept does not exist for PE/COFF (and I th= ink not even for ELF, but I'm not too familiar with it), thus the logical P= E/COFF section __DATA,__const should be merged into is .rdata (and .rdata m= ay or may not be merged into .text in an earlier step, I assume transitivit= y). I could change the macro definition to explicitly declare __TEXT,__cons= t, but that would still put the compiler-emitted data in the wrong section.= Does Xcode provide anything remotely similar to GNU linker scripts which w= e can use to move the section? >>>>>>>>=20 >>>>>>>> Please also note that .rodata is used for Xcode-based toolchains a= lready (in fact, all toolchains, and this is the issue), I'm not regressing= anything. I just expected it to work fine as-is. This patch mainly fixed P= E/COFF-based toolchains, which get both .rdata from the compiler and .rodat= a with RX permissions from NASM, because ".rodata" only has a semantic mean= ing for ELF and Mach-O outputs, but not for PE/COFF. >>>>>>>>=20 >>>>>>>>> If you want something to be read only for Xcode/clang you are bet= ter off putting it in the __TEXT section [3]. The __TEXT section is read on= ly and for X64 can not even contain relocations. >>>>>>>> Well, this kind of is an issue. We would need to introduce an arbi= trary constraint on the relocation part that holds only for Xcode-based too= lchains. Does the compiler emit an error when data in __TEXT,__const is tar= geted by a relocation? >>>>>>> The Xcode linker emits a fatal error on X64 for a relocation in the= __TEXT section, everything needs to be RIP relative and the compiler does = that for free. We generally only run into this for hand coded assembler and= the fix is to use RIP relative addressing in the assembly. >>>>>> Good, thanks for confirming! Still, this would be a bit of an awkwar= d constraints for Xcode only. >>>>>>=20 >>>>> It is a physics problem we can=E2=80=99t fix, so I end up writing som= e patches to fix other peoples assembler from time to time. The CI building= with Xcode helps with this a lot. >>>>=20 >>>> (I think all open ends of the other threads are in here too, so let's = drop them and go on only here?) >>>>=20 >>>> Right, ok, thanks! >>>>=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 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. >>>>>>>=20 >>>>>>> So what I=E2=80=99d like to see in the patch is to define RODATA_SE= CTION_NAME to match what is actually happening. So for XCODE that would be = `__TEXT,__const` not `.rodata`. >>>>>> We can do that, but what to do about compiler-emitted __DATA,__const= ? >>>>> Sorry I don=E2=80=99t understand what RODATA_SECTION_NAME has to do w= ith the compiler? I thought it was for nasm? >>>>=20 >>>> Yes, it is for NASM. My point is, the actual issue is not that my macr= o uses __DATA,__const, but that __DATA,__const is not merged into .text, bu= t into .data. Fixing the macro fixes where the NASM definitions go, but wha= t about the C definitions? I cannot test it, as I said, because I don't hav= e an Xcode machine, but let's say we have a stupid example like this: >>>>=20 >>>> volatile UINT32 a; >>>> volatile UINT32 *CONST p =3D &a; >>>>=20 >>>=20 >>> In this case p ends up in a __DATA__,__const section since &a requires = a relocation. >>=20 >> OK, good, thanks! >>=20 >>>=20 >>>=20 >>>> The value of p is constant, so it can be placed in a constant data sec= tion. p points to a global variable, so if the compiler does not manage to = somehow turn this into relative addressing (let's assume it does not), it n= eeds to generate a relocation. This means the compiler cannot put it in __T= EXT,__const, so it has to put it in __DATA,__const (of course it could put = it in other __DATA sections, but let's assume the compiler agrees this shou= ld be read-only). The very same issue will arise and no matter the choice o= f the compiler, this will end up in .data. Do you agree? Or do we have some= guarantee that Apple Clang cannot emit __DATA,__const? >>>=20 >>> I don=E2=80=99t see your bigger point. The compiler is free to implemen= t as it sees fit. Which section some code ends up in is more of an implemen= tation detail for the compiler, and we can=E2=80=99t really depend on that? >>=20 >> Your point, rightfully, was that things that we request to be read-only = (may) end up being read-write. My issue is that, if the compiler requests t= his pointer to be read-only (it may not, but also it may), our PE executabl= e does not honour it either. __DATA,__const is a section for constant data,= and we put it into a read-write section. The bigger point is, whenever the= compile stack wants something read-only (be that NASM or be that Apple Cla= ng, anything really), we should actually ensure it is read-only. I can do t= hat for only NASM by forcing the __TEXT,__const section name (at the cost o= f prohibiting relocs), but I do not know how to do it for Apple Clang. At w= orst we could take a hacked-ish solution, where all Mach-O segments are con= verted to PE/COFF sections - with the exception of the __DATA,__const secti= on, which, if aligned on a segment alignment boundary, can be inserted betw= een the two other parts .data is split into. I read in the XNU source that = the ARM protection code does something roughly like this [1], but I'm reall= y far from well-versed in the deep details of macOS. >>=20 >> Sorry for this not being "integrated" in above text, but I found two mor= e things while looking for citation 1. >>=20 >> 1) Mach-O sections can be renamed, including the preceding segment name = [2]. According to the very next line, the example actually creates a new se= gment. Does it allow merging into another, existing segment? What if I did = something like: >>=20 >> -Wl,-rename_section,__DATA,__const,__TEXT,__const2 >>=20 >> or even >>=20 >> -Wl,-rename_section,__DATA,__const,__TEXT,__const >>=20 >> i.e. can it merge two sections together? if __DATA,__const had data with= relocs, would the renaming trigger the "no relocs" error of __TEXT, or doe= s that happen before section renaming? Any chance it can be turned off? >>=20 >> 1.1) Actually, for the standalone .rodata section, we can just rename it= to __DATA_CONST,__const, as I have seen elsewhere in XNU. No hacked-ish so= lution needed. :) >>=20 >> 2) We actually can force the compiler to put data in the constant data s= egment [3]. This is of course not used in EDK II, and probably neither port= able nor necessary, but an interesting detail. I really think we should hon= our it either way. >>=20 >> I will likely try to get my hands on some sort of Apple development envi= ronment soon, but I cannot promise much right now. I think it really is bet= ter if I can test through all toolchains myself. If you release Apple Clang= for Linux, I also won't complain of course. :) >>=20 >=20 > When I ask compiler questions to my compiler peeps they sometime answer v= ia: https://godbolt.org . You can pas -emit-llvm, -S,= or actually run code all from the webpage. It lets you compare the output = of lots of versions of clang and compare it with other compilers too. You m= ight find that useful for your research.=20 >=20 > For EFI/EDKII clang is mostly just clang (strange triple for x86_64). It = is ld64 that is macOS specific, and there is not cross version of ld64 tha= t I know about.=20 >=20 > FYI I worked really closely with the owner of ld64, Nick, when we got EFI= working. What looks like the strange set of args is what is required to ma= ke ld64 =E2=80=9Cdo the right thing=E2=80=9D. The biggest portability issue= with ld64 is it does not support the GCC ld linker scripts. >=20 >=20 > I think I=E2=80=99ve forgotten to mention one, relevant, historical point= . One of the reasons that sections got collapsed together was to save size.= This is the same reason you see the page size/section alignment set to 0x2= 0 (32 bytes). 32 bytes was the smallest alignment the VC++ would support ba= ck in the day. In recent times the runtime code got converted to 4K section= alignment so the OS could provide better page based protection. That ended= up not being too bad as all that code is stored compressed, and it compres= ses well. Usually the biggest size risk is PEI as it is common for chunks o= f that code to run directly from ROM, and you would be surprised how much c= omplexity can be involved in turning on DRAM, and that makes for larger PEI= Ms.=20 >=20 > Thanks, >=20 > Andrew Fish >=20 >>>=20 >>>>=20 >>>>>>> We should double check what is happening for ELF on x86, ARM, RiskV= , etc. and do the same thing. I assume all the tools that generate PE/COFF = directly are good with .rodata? >>>>>> They are not, that is the whole point of the patch in its current sh= ape. .rodata is valid for ELF and Mach-O, PE/COFF needs .rdata. >>>>>>=20 >>>>>>> I think it is likely as simple as dumping the EFL object file in ob= jdump or gdb for the given toolchain (like my Xcode example). >>>>>>>=20 >>>>>>> TL;DR It looks to me like nasm does some SECTION translations under= the hood to make code portable, and I=E2=80=99d like to make sure we captu= re those in the new NASM_RODATA_SECTION_NAME. If some one is doing a securi= ty review having NASM_RODATA_SECTION_NAME is going to imply that a .rodata = section is being used by that specific toolchain, and I think that is much = worse than the current =E2=80=9Cmagic=E2=80=9D behavior in nasm. We are muc= h better off explaining what is really happening, since it is not very obvi= ous. >>>>>> I feel like I'm too tired to get the point. Do you mean you want com= ments whenever this section name is used? Or comments in tools_def? >>>>>>=20 >>>>> I think I=E2=80=99d settle for a more descriptive commit comment that= better defines what the define means like I mentioned in the other mail. >>>>=20 >>>> Hmm no, we can do that too, but in that case I really want comments in= the code. tools_def is not really documented at all, maybe it is time to i= ntroduce an example comment so at least new things get commented? Maybe jus= t the start of a macro list. Relying on "git blame" to figure out simple th= ings is rather awful. >>>>=20 >>>> One more thing from another thread: Yes, the new macro should refer to= object file section naming. I want this patch to get object file sections = proper and sound. From there on we can fix the linking stage to emit proper= and sound executables in a later patch. >>>>=20 >>>=20 >>> OK then please refactor the commit message to make it clear that this p= atch is to get the correct section in the object files, and work is still n= eed to get this into executable images. >>=20 >> Sure. >>=20 >>>=20 >>> For Xcode you can make it __DATA__,__const since that is the closest th= ing to read only data and I think that is your intent. >>=20 >> I would like to do that, but only if we can ensure __DATA,__const is mer= ged into .text, or is a separate RNX section. >>=20 >>>=20 >>> GenFW is part of EDKII BaseTools and mtoc is part of the open source CC= TOOLS project and both those tools would need to be modified to create a .r= odata section in PE/COFF. >>=20 >> Yes, that should not be a big problem. Remaining issues for me: >> 1) How to merge __DATA,__const into .text, or how to emit a standalone .= rodata section, for Xcode-based toolchains? (Some ideas above, will ping Vi= taly soon as well) >> 2) How to submit modified mtoc? Any chance it could be maintained in EDK= II like GenFw? (Would be nice if you could provide some insight) >> 3) How to merge .rdata into .text for MSVC? (I will try to research this= soon-ish, but no promises) >> 4) How to design a toggle for the platform maintainer to choose between = .text merge and standalone .rodata? >>=20 >> Please note that I'm not asking you to research any of those questions (= but 2) would be nice :) ), this is merely a summary of open points till the= second stage (correct executables, not just correct object sections) can b= e properly approached. >>=20 >> Thanks for your time and insight! >>=20 >> Best regards, >> Marvin >>=20 >>=20 >> [1] https://github.com/apple/darwin-xnu/blob/a1babec6b135d1f35b2590a1990= af3c5c5393479/osfmk/arm/arm_vm_init.c#L318-L324 >>=20 >> [2] https://github.com/apple/darwin-xnu/blob/2ff845c2e033bd0ff64b5b6aa60= 63a1f8f65aa32/makedefs/MakeInc.def#L578 >>=20 >> [3] https://github.com/apple/darwin-xnu/blob/8f02f2a044b9bb1ad951987ef5b= ab20ec9486310/libsa/lastkerneldataconst.c#L48 >>=20 >>>=20 >>> Thanks, >>>=20 >>> Andrew Fish >>>=20 >>>> Best regards, >>>> Marvin >>>>=20 >>>>>=20 >>>>> Thanks, >>>>>=20 >>>>> Andrew Fish >>>>>=20 >>>>>> Best regards, >>>>>> Marvin >>>>>>=20 >>>>>>> [1] https://github.com/tianocore/edk2/blob/master/UefiCpuPkg/Librar= y/BaseUefiCpuLib/X64/InitializeFpu.nasm#L14 > >>>>>>>=20 >>>>>>> [2] $otool -V -s __TEXT __constBuild/OvmfX64/DEBUG_XCODE5/X64/UefiC= puPkg/Library/BaseUefiCpuLib/BaseUefiCpuLib/OUTPUT/X64/InitializeFpu.obj >>>>>>> Build//OvmfX64/DEBUG_XCODE5/X64/UefiCpuPkg/Library/BaseUefiCpuLib/B= aseUefiCpuLib/OUTPUT/X64/InitializeFpu.obj: >>>>>>> Contents of (__TEXT,__const) section >>>>>>> 0000001d 7f 03 80 1f 00 00 >>>>>>>=20 >>>>>>> $ otool -l Build//OvmfX64/DEBUG_XCODE5/X64/UefiCpuPkg/Library/BaseU= efiCpuLib/BaseUefiCpuLib/OUTPUT/X64/InitializeFpu.obj >>>>>>> Build/OvmfX64/DEBUG_XCODE5/X64/UefiCpuPkg/Library/BaseUefiCpuLib/Ba= seUefiCpuLib/OUTPUT/X64/InitializeFpu.obj: >>>>>>> Load command 0 >>>>>>> cmd LC_SEGMENT_64 >>>>>>> cmdsize 232 >>>>>>> segname >>>>>>> vmaddr 0x0000000000000000 >>>>>>> vmsize 0x0000000000000026 >>>>>>> fileoff 288 >>>>>>> filesize 38 >>>>>>> maxprot 0x00000007 >>>>>>> initprot 0x00000007 >>>>>>> nsects 2 >>>>>>> flags 0x0 >>>>>>> Section >>>>>>> sectname __text >>>>>>> segname __TEXT >>>>>>> addr 0x0000000000000000 >>>>>>> size 0x000000000000001d >>>>>>> offset 288 >>>>>>> align 2^0 (1) >>>>>>> reloff 328 >>>>>>> nreloc 2 >>>>>>> flags 0x80000500 >>>>>>> reserved1 0 >>>>>>> reserved2 0 >>>>>>> Section >>>>>>> sectname __const >>>>>>> segname __TEXT >>>>>>> addr 0x000000000000001d >>>>>>> size 0x0000000000000006 >>>>>>> offset 320 >>>>>>> align 2^0 (1) >>>>>>> reloff 0 >>>>>>> nreloc 0 >>>>>>> flags 0x00000000 >>>>>>> reserved1 0 >>>>>>> reserved2 0 >>>>>>> Load command 1 >>>>>>> cmd LC_SYMTAB >>>>>>> cmdsize 24 >>>>>>> symoff 344 >>>>>>> nsyms 3 >>>>>>> stroff 392 >>>>>>> strsize 63 >>>>>>>=20 >>>>>>> Thanks, >>>>>>>=20 >>>>>>> Andrew Fish >>>>>>>=20 >>>>>>>=20 >>>>>>>> Thanks for your notes and insight! >>>>>>>>=20 >>>>>>>> Best regards, >>>>>>>> Marvin >>>>>>>>=20 >>>>>>>>=20 >>>>>>>> [1] >>>>>>>> "For compatibility with other Unix platforms, the following standa= rd names are also supported: >>>>>>>> [...] >>>>>>>> .rodata =3D __DATA,__const data >>>>>>>> [...] >>>>>>>> If the .rodata section contains no relocations, it is instead put = into the __TEXT,__const section unless this section has already been specif= ied explicitly." >>>>>>>> https://www.nasm.us/xdoc/2.13.01/html/nasmdoc7.html > >>>>>>>>=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/efito= ols/mtoc.c.auto.html > >>>>>>>>>=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 >>>>>>>>>> DEBUG_XCODE5_IA32_CC_FLAGS =3D -arch i386 -c -g -Os -Wa= ll -Werror -include AutoGen.h -funsigned-char -fno-stack-protector -fno-bui= ltin -fshort-wchar -fasm-blocks -mdynamic-no-pic -mno-implicit-float -mms-b= itfields -msoft-float -Wno-unused-parameter -Wno-missing-braces -Wno-missin= g-field-initializers -Wno-tautological-compare -Wno-sign-compare -Wno-varar= gs -ftrap-function=3Dundefined_behavior_has_been_optimized_away_by_clang $(= PLATFORM_FLAGS) >>>>>>>>>>=20 >>>>>>>>>> @@ -3003,7 +3003,7 @@ RELEASE_XCODE5_X64_DLINK_FLAGS =3D -a= rch 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_N= AME=3D.rodata >>>>>>>>>>=20 >>>>>>>>>> *_XCODE5_*_PP_FLAGS =3D -E -x assembler-with-cpp -includ= e AutoGen.h >>>>>>>>>>=20 >>>>>>>>>> *_XCODE5_*_VFRPP_FLAGS =3D -x c -E -P -DVFRCOMPILE -include= $(MODULE_NAME)StrDefs.h >>>>>>>>>>=20 >>>>>>>>>>=20 >>>>>>>>>>=20 >>>>>>>>>> -- >>>>>>>>>> 2.31.1 >>>>>>>>>>=20 >>>>>>>>>>=20 >>>>>>>>>>=20 >>>>>>>>>>=20 >>>>>>>>>>=20 >>>>>>>>>>=20 >>>>>>>>>>=20 >>>>>>=20 >>>>>>=20 >>>>>>=20 >>>>>>=20 >>>>=20 >>>>=20 >>>>=20 >>>>=20 >>>=20 >>=20 >=20 >=20 >=20 >=20 --Apple-Mail=_65F43E33-64C3-49E0-8F3D-FDB710A91332 Content-Transfer-Encoding: quoted-printable Content-Type: text/html; charset=utf-8 Just ran across this today= and wanted to share. The NASM Chapter 7 [1] defines the behavior for .roda= ta for ELF and mach-O .

So the behavior is well defined. From 

7.8.1 macho extensions to the SECTION Directive

...

The default is data, unless the section name is=  __text or __bss in which case the default is&n= bsp;text or bss, respectively.

For compatibility with other Unix p= latforms, the following standard names are also supported:

.text    =3D __TEX=
T,__text  text=20
.rodata  =3D __DATA,__const data=20
.data    =3D __DATA,__data  data=20
.bss     =3D __DATA,__bss   bss

If the=  .rodata section contains no relocations, it is instead put i= nto the __TEXT,__const section unless this section has alread= y been specified explicitly. However, it is probably better to specify = ;__= TEXT,__const and__DATA,__const explicitly as appropria= te.


[1] = https://www.nasm.us/xdoc/2.13.02rc3/html/nasmdoc7.html

O= n Aug 12, 2021, at 3:53 PM, Andrew Fish via groups.io <afish=3Dapple.com@groups.io> wrote:

<= br style=3D"caret-color: rgb(0, 0, 0); font-family: Helvetica; font-size: 1= 2px; font-style: normal; font-variant-caps: normal; font-weight: normal; le= tter-spacing: normal; text-align: start; text-indent: 0px; text-transform: = none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0p= x; text-decoration: none;" class=3D"">
On Aug 12, 2021, at 12:26 AM, Marvin H=C3=A4user <= mhaeuser@posteo.de>= wrote:

On 11/08/2021 19:19, Andrew Fish wrote= :


On Aug 11, 2021, at 1:11 AM, M= arvin H=C3=A4user <mhae= user@posteo.de <mai= lto:mhaeuser@posteo.de>> wrote:

On 1= 0/08/2021 23:58, Andrew Fish wrote:

On Aug 10, = 2021, at 2:30 PM, Marvin H=C3=A4user <mhaeuser@posteo.de <mailto:mhaeuser@posteo.de>> wrote:
=
On 10/08/2021 21:35, Andrew Fish via groups.io <= http://groups.io> wrote:

On Aug 10, 2021= , at 1:27 AM, Marvin H=C3=A4user <mhaeuser@posteo.de <mailto:mhaeuser@posteo.de> <mailto:mhaeuser@posteo.de <mailto:mhaeuser@posteo.de>>> w= rote:

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

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

REF: https://bugzilla.tianocore.org/show_bug.cgi?id=3D3= 318 <https://bugzilla.tianocore.org/show_bug.cgi?id=3D3318>= <https://bugzilla.tianocore.org/show_bug.cgi?id=3D3318 <http= s://bugzilla.tianocore.org/show_bug.cgi?id=3D3318>> <https= ://bugzilla.tianocore.org/show_bug.cgi?id=3D3318 <https://bugzilla= .tianocore.org/show_bug.cgi?id=3D3318> <https://bugzilla.tianoc= ore.org/show_bug.cgi?id=3D3318 <https://bugzilla.tianocore.org/sho= w_bug.cgi?id=3D3318>>>

Different = toolchains of the EDK II build system may generate ELF or
Mac= h-O files, which use the ".rodata" naming convention, or PE/COFF
files, which use the ".rdata" naming convention. Section permissions<= br class=3D"">are chosen based on this name per file format by NASM. To har= den
image permission security, and to save space by avoiding = both
".rdata" and ".rodata" sections being emitted, expose th= e appropriate
name as a preprocessor constant.
=
Cc: Bob Feng <bob.c.feng@intel.com <mailto:bob.c.feng@intel.com> <mailto:bob.c.feng@intel.com <mailto:bob.c.feng@intel.com>= ;> <mailto:bob.c.f= eng@intel.com <ma= ilto:bob.c.feng@intel.com> <mailto:bob.c.feng@intel.com <mailto:bob.c.feng@intel.com>>>>Cc: Liming Gao <gaoliming@byosoft.com.cn <mailto:gaoliming@byosoft.com.cn> <mailto:gaoliming@byosoft.c= om.cn <mailto= :gaoliming@byosoft.com.cn>> <mailto:gaoliming@byosoft.com.cn <mailto:gaoliming@byosoft.com.cn> <mailto:ga= oliming@byosoft.com.cn <mailto:gaoliming@byosoft.com.cn>>>>
Cc: Yuwei Chen <yuw= ei.chen@intel.com <mailto:yuwei.chen@intel.com> <mailto:yuwei.chen@intel.com <mailto:yuwei.chen@intel.com>> <<= a href=3D"mailto:yuwei.chen@intel.com" class=3D"">mailto:yuwei.chen@intel.c= om <mailto:yuwei.= chen@intel.com> <mailto:yuwei.chen@intel.com <mailto:yuwei.chen@intel.com>>>>
Cc: Vitaly Cheptsov <vit9696@protonmail.com <mailto:vit9696@protonmail.com> <mailto:vit9696@protonmail.com <mailto:vit9696@protonmai= l.com>> <= mailto:vit9696@protonmail.com <mailto:vit9696@protonmail.com> <mailto:vit9696@protonmail.com <<= a href=3D"mailto:vit9696@protonmail.com" class=3D"">mailto:vit9696@protonma= il.com>>>>
Signed-off-by: Marvin H=C3=A4user = <mhaeuser@posteo.de= <mailto:mhaeuser@poste= o.de> <mailto:mh= aeuser@posteo.de <m= ailto:mhaeuser@posteo.de>> <mailto:mhaeuser@posteo.de <mailto:mhaeuser@posteo.de> <mailto:mhaeuser@posteo.de <mailto:mhaeuser@posteo.de>= ;>>>
---
BaseTools/Conf/tools_def.temp= late | 172 ++++++++++----------
1 file changed, 86 insertions= (+), 86 deletions(-)

diff --git a/BaseTools/Co= nf/tools_def.template b/BaseTools/Conf/tools_def.template
ind= ex 2e6b382ab623..84d464916c4d 100755
--- a/BaseTools/Conf/too= ls_def.template
+++ b/BaseTools/Conf/tools_def.template
@@ -463,9 +463,9 @@ NOOPT_VS2008_IA32_CC_FLAGS    &= nbsp;   =3D /nologo /c /WX /GS- /W4 /Gs32768 /D UNICODE
RELEASE_VS2008_IA32_ASM_FLAGS     =3D /nologo= /c /WX /W3 /Cx /coff /Zd

NOOPT_VS2008_IA32_AS= M_FLAGS       =3D /nologo /c /WX /W3 /Cx /cof= f /Zd /Zi



- &nbs= p;DEBUG_VS2008_IA32_NASM_FLAGS    =3D -Ox -f win32 -g

-RELEASE_VS2008_IA32_NASM_FLAGS    = =3D -Ox -f win32

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

+  DEBUG_VS2008_IA32_NASM_FLAGS    =3D -Ox -f win= 32 -g -DRODATA_SECTION_NAME=3D.rdata

+RELEASE_= VS2008_IA32_NASM_FLAGS    =3D -Ox -f win32 -DRODATA_SECTION_= NAME=3D.rdata

+NOOPT_VS2008_IA32_NASM_FLAGS &n= bsp;    =3D -O0 -f win32 -g -DRODATA_SECTION_NAME=3D.rd= ata



 DEBUG_= VS2008_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

= RELEASE_VS2008_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

@@ -495,9 +495,9 @@ NOOPT_VS2008_X64_= CC_FLAGS       =3D /nologo /c /WX /GS- /W4 /G= s32768 /D UNICODE /G
RELEASE_VS2008_X64_ASM_FLAGS   = ; =3D /nologo /c /WX /W3 /Cx /Zd

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



-  DEBUG_VS200= 8_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_F= LAGS   =3D -Ox -f win64 -g -DRODATA_SECTION_NAME=3D.rdata

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

+NOOPT_V= S2008_X64_NASM_FLAGS     =3D -O0 -f win64 -g -DRODATA_S= ECTION_NAME=3D.rdata



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

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

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

NOOPT_V= S2008x86_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_VS2008= x86_IA32_NASM_FLAGS  =3D -Ox -f win32 -g -DRODATA_SECTION_NAME=3D.rdat= a

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

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



 DEBUG_VS2008x86_IA32_DLINK_FLAGS =3D /NOLOGO /NODEFAULTLIB = /IGNORE:4001 /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 /DEBUG
RELEASE_VS2008x86_IA32_DLINK_FLAGS =3D /NOLOGO /NODEFAULTLIB /= IGNORE:4001 /IGNORE:4254 /OPT:REF /OPT:ICF=3D10 /MAP /ALIGN:32 /SECTION:.xd= ata,D /SECTION:.pdata,D /MACHINE:X86 /LTCG /DLL /ENTRY:$(IMAGE_ENTRY_POINT)= /SUBSYSTEM:EFI_BOOT_SERVICE_DRIVER /SAFESEH:NO /BASE:0 /DRIVER /MERGE:.rda= ta=3D.data

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

NOO= PT_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_FLAGS   =3D= -Ox -f win64

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

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

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


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

RELEASE_VS2008x86_X64_DL= INK_FLAGS  =3D /NOLOGO /NODEFAULTLIB /IGNORE:4001 /IGNORE:4254 /OPT:RE= F /OPT:ICF=3D10 /MAP /ALIGN:32 /SECTION:.xdata,D /SECTION:.pdata,D /Machine= :X64 /LTCG /DLL /ENTRY:$(IMAGE_ENTRY_POINT) /SUBSYSTEM:EFI_BOOT_SERVICE_DRI= VER /SAFESEH:NO /BASE:0 /DRIVER /MERGE:.rdata=3D.data

@@ -688,9 +688,9 @@ NOOPT_VS2010_IA32_CC_FLAGS    &n= bsp;   =3D /nologo /c /WX /GS- /W4 /Gs32768 /D UNICODE
RELEASE_VS2010_IA32_ASM_FLAGS     =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

-NOOPT_VS2010_IA32_NASM_FLAGS &n= bsp;    =3D -O0 -f win32 -g

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

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

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


 DEBUG_VS20= 10_IA32_DLINK_FLAGS   =3D /NOLOGO /NODEFAULTLIB /IGNORE:4001 /OPT= :REF /OPT:ICF=3D10 /MAP /ALIGN:32 /SECTION:.xdata,D /SECTION:.pdata,D /MACH= INE:X86 /LTCG /DLL /ENTRY:$(IMAGE_ENTRY_POINT) /SUBSYSTEM:EFI_BOOT_SERVICE_= DRIVER /SAFESEH:NO /BASE:0 /DRIVER /DEBUG

RELE= ASE_VS2010_IA32_DLINK_FLAGS   =3D /NOLOGO /NODEFAULTLIB /IGNORE:4= 001 /IGNORE:4254 /OPT:REF /OPT:ICF=3D10 /MAP /ALIGN:32 /SECTION:.xdata,D /S= ECTION:.pdata,D /MACHINE:X86 /LTCG /DLL /ENTRY:$(IMAGE_ENTRY_POINT) /SUBSYS= TEM:EFI_BOOT_SERVICE_DRIVER /SAFESEH:NO /BASE:0 /DRIVER /MERGE:.rdata=3D.da= ta

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

NOOPT_VS2010_X= 64_ASM_FLAGS    =3D /nologo /c /WX /W3 /Cx /Zd /Zi



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

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

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

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

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



=  DEBUG_VS2010_X64_DLINK_FLAGS  =3D /NOLOGO /NODEFAULTLIB /IGNORE:= 4001 /OPT:REF /OPT:ICF=3D10 /MAP /ALIGN:32 /SECTION:.xdata,D /SECTION:.pdat= a,D /Machine:X64 /LTCG /DLL /ENTRY:$(IMAGE_ENTRY_POINT) /SUBSYSTEM:EFI_BOOT= _SERVICE_DRIVER /SAFESEH:NO /BASE:0 /DRIVER /DEBUG

RELEASE_VS2010_X64_DLINK_FLAGS  =3D /NOLOGO /NODEFAULTLIB /IGNOR= E: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) /SUB= SYSTEM:EFI_BOOT_SERVICE_DRIVER /SAFESEH:NO /BASE:0 /DRIVER /MERGE:.rdata=3D= .data

@@ -799,9 +799,9 @@ NOOPT_VS2010x86_IA32= _CC_FLAGS      =3D /nologo /c /WX /GS- /W4 /Gs3276= 8 /D UNICODE
RELEASE_VS2010x86_IA32_ASM_FLAGS   =3D= /nologo /c /WX /W3 /Cx /coff /Zd

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



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

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

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

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

+NOOPT= _VS2010x86_IA32_NASM_FLAGS    =3D -O0 -f win32 -g -DRODATA_S= ECTION_NAME=3D.rdata



 DEBUG_VS2010x86_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_VS2010x86_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

@@ -831,9 +831,9 @@ NOOPT_VS2010x86_X= 64_CC_FLAGS       =3D /nologo /c /WX /GS- /W4= /Gs32768 /D UNICODE
RELEASE_VS2010x86_X64_ASM_FLAGS  &n= bsp; =3D /nologo /c /WX /W3 /Cx /Zd

NOOPT= _VS2010x86_X64_ASM_FLAGS      =3D /nologo /c /WX /= W3 /Cx /Zd /Zi



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

-RELEASE_VS2010x86_X64_NASM_FLAGS   =3D -= Ox -f win64

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

+ &n= bsp;DEBUG_VS2010x86_X64_NASM_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_FL= AGS  =3D /NOLOGO /NODEFAULTLIB /IGNORE:4001 /OPT:REF /OPT:ICF=3D10 /MA= P /ALIGN:32 /SECTION:.xdata,D /SECTION:.pdata,D /Machine:X64 /LTCG /DLL /EN= TRY:$(IMAGE_ENTRY_POINT) /SUBSYSTEM:EFI_BOOT_SERVICE_DRIVER /SAFESEH:NO /BA= SE:0 /DRIVER /DEBUG

RELEASE_VS2010x86_X64_DLIN= K_FLAGS  =3D /NOLOGO /NODEFAULTLIB /IGNORE:4001 /IGNORE:4254 /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 /MERGE:.rdata=3D.data

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

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



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

-RELEASE_VS2012_IA32_NASM_FLAGS    =3D = -Ox -f win32

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

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

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

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


 DEBUG_VS20= 12_IA32_DLINK_FLAGS   =3D /NOLOGO /NODEFAULTLIB /IGNORE:4001 /OPT= :REF /OPT:ICF=3D10 /MAP /ALIGN:32 /SECTION:.xdata,D /SECTION:.pdata,D /MACH= INE:X86 /LTCG /DLL /ENTRY:$(IMAGE_ENTRY_POINT) /SUBSYSTEM:EFI_BOOT_SERVICE_= DRIVER /SAFESEH:NO /BASE:0 /DRIVER /DEBUG

RELE= ASE_VS2012_IA32_DLINK_FLAGS   =3D /NOLOGO /NODEFAULTLIB /IGNORE:4= 001 /IGNORE:4254 /OPT:REF /OPT:ICF=3D10 /MAP /ALIGN:32 /SECTION:.xdata,D /S= ECTION:.pdata,D /MACHINE:X86 /LTCG /DLL /ENTRY:$(IMAGE_ENTRY_POINT) /SUBSYS= TEM:EFI_BOOT_SERVICE_DRIVER /SAFESEH:NO /BASE:0 /DRIVER /MERGE:.rdata=3D.da= ta

@@ -945,9 +945,9 @@ NOOPT_VS2012_X64_CC_FLA= GS       =3D /nologo /c /WX /GS- /W4 /Gs32768= /D UNICODE /G
RELEASE_VS2012_X64_ASM_FLAGS    = ;=3D /nologo /c /WX /W3 /Cx /Zd

NOOPT_VS2012_X= 64_ASM_FLAGS    =3D /nologo /c /WX /W3 /Cx /Zd /Zi



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

-R= ELEASE_VS2012_X64_NASM_FLAGS   =3D -Ox -f win64
-NOOPT_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 win6= 4 -DRODATA_SECTION_NAME=3D.rdata

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



=  DEBUG_VS2012_X64_DLINK_FLAGS  =3D /NOLOGO /NODEFAULTLIB /IGNORE:= 4001 /OPT:REF /OPT:ICF=3D10 /MAP /ALIGN:32 /SECTION:.xdata,D /SECTION:.pdat= a,D /Machine:X64 /LTCG /DLL /ENTRY:$(IMAGE_ENTRY_POINT) /SUBSYSTEM:EFI_BOOT= _SERVICE_DRIVER /SAFESEH:NO /BASE:0 /DRIVER /DEBUG

RELEASE_VS2012_X64_DLINK_FLAGS  =3D /NOLOGO /NODEFAULTLIB /IGNOR= E: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) /SUB= SYSTEM:EFI_BOOT_SERVICE_DRIVER /SAFESEH:NO /BASE:0 /DRIVER /MERGE:.rdata=3D= .data

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

NOOPT_VS2= 012x86_IA32_ASM_FLAGS     =3D /nologo /c /WX /W3 /Cx /c= off /Zd /Zi



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

-RELEASE_VS2012x86_IA32_NASM_FLAGS  =3D -Ox -f win32
-NOOPT_VS2012x86_IA32_NASM_FLAGS   &n= bsp;=3D -O0 -f win32 -g

+  DEBUG_VS2012x8= 6_IA32_NASM_FLAGS  =3D -Ox -f win32 -g -DRODATA_SECTION_NAME=3D.rdata<= br class=3D"">
+RELEASE_VS2012x86_IA32_NASM_FLAGS  =3D -= Ox -f win32 -DRODATA_SECTION_NAME=3D.rdata

+NO= OPT_VS2012x86_IA32_NASM_FLAGS    =3D -O0 -f win32 -g -DRODAT= A_SECTION_NAME=3D.rdata



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

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

@@ -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 /SAFESEH:NO /= BASE:0 /DRIVER /DEBUG

RELEASE_VS2012x86_X64_DL= INK_FLAGS  =3D /NOLOGO /NODEFAULTLIB /IGNORE:4001 /IGNORE:4254 /OPT:RE= F /OPT:ICF=3D10 /MAP /ALIGN:32 /SECTION:.xdata,D /SECTION:.pdata,D /Machine= :X64 /LTCG /DLL /ENTRY:$(IMAGE_ENTRY_POINT) /SUBSYSTEM:EFI_BOOT_SERVICE_DRI= VER /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 /Gs32768
RELEASE_VS2013_IA32_ASM_FLAGS     =3D /nolog= o /c /WX /W3 /Cx /coff /Zd

NOOPT_VS2013_IA32_A= SM_FLAGS       =3D /nologo /c /WX /W3 /Cx /co= ff /Zd /Zi



- &nb= sp;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 win= 32 -g -DRODATA_SECTION_NAME=3D.rdata

+RELEASE_= VS2013_IA32_NASM_FLAGS    =3D -Ox -f win32 -DRODATA_SECTION_= NAME=3D.rdata

+NOOPT_VS2013_IA32_NASM_FLAGS &n= bsp;    =3D -O0 -f win32 -g -DRODATA_SECTION_NAME=3D.rd= ata



 DEBUG_= VS2013_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

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

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

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


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

-RELEASE_VS2013_X64_NASM_FLAGS   =3D -Ox -f win64

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

+  DEBUG_VS2013_X64_N= ASM_FLAGS   =3D -Ox -f win64 -g -DRODATA_SECTION_NAME=3D.rdata
+RELEASE_VS2013_X64_NASM_FLAGS   =3D -= Ox -f win64 -DRODATA_SECTION_NAME=3D.rdata

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



 DEBUG_VS2013_X64_DLINK_FLAGS  =3D /NOLOGO /NODEFAULTLI= B /IGNORE:4001 /OPT:REF /OPT:ICF=3D10 /MAP /ALIGN:32 /SECTION:.xdata,D /SEC= TION:.pdata,D /Machine:X64 /LTCG /DLL /ENTRY:$(IMAGE_ENTRY_POINT) /SUBSYSTE= M:EFI_BOOT_SERVICE_DRIVER /SAFESEH:NO /BASE:0 /DRIVER /DEBUG
=
RELEASE_VS2013_X64_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:X64 /LTCG /DLL /ENTRY:$(IMAGE_ENTRY_PO= INT) /SUBSYSTEM:EFI_BOOT_SERVICE_DRIVER /SAFESEH:NO /BASE:0 /DRIVER /MERGE:= .rdata=3D.data

@@ -1249,9 +1249,9 @@ NOOPT_VS2= 013x86_IA32_CC_FLAGS      =3D /nologo /arch:IA32 /= c /WX /GS- /W4 /Gs32768
RELEASE_VS2013x86_IA32_ASM_FLAGS &nbs= p; =3D /nologo /c /WX /W3 /Cx /coff /Zd

N= OOPT_VS2013x86_IA32_ASM_FLAGS     =3D /nologo /c /WX /W= 3 /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 &nbs= p;  =3D -O0 -f win32 -g

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

+RELEASE_VS2013x86_IA32_NASM_FLAGS &= nbsp;=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 /NODEF= AULTLIB /IGNORE:4001 /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 /DEBUG

RELEASE_VS2013x86_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

@@ -1281,9 +1281,9 @@ NOOPT= _VS2013x86_X64_CC_FLAGS       =3D /nologo /c = /WX /GS- /W4 /Gs32768 /D UNICODE
RELEASE_VS2013x86_X64_ASM_FL= AGS    =3D /nologo /c /WX /W3 /Cx /Zd

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



-  DEBUG_VS2013x86_X64_NASM_FLAGS   =3D -Ox -f wi= n64 -g

-RELEASE_VS2013x86_X64_NASM_FLAGS  = ; =3D -Ox -f win64

-NOOPT_VS2013x86_X64_N= ASM_FLAGS     =3D -O0 -f win64 -g

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

+RELEASE_VS= 2013x86_X64_NASM_FLAGS   =3D -Ox -f win64 -DRODATA_SECTION_NAME= =3D.rdata

+NOOPT_VS2013x86_X64_NASM_FLAGS &nbs= p;   =3D -O0 -f win64 -g -DRODATA_SECTION_NAME=3D.rdata



 DEBUG_VS2013x8= 6_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= 13x86_X64_DLINK_FLAGS  =3D /NOLOGO /NODEFAULTLIB /IGNORE:4001 /IGNORE:= 4254 /OPT:REF /OPT:ICF=3D10 /MAP /ALIGN:32 /SECTION:.xdata,D /SECTION:.pdat= a,D /Machine:X64 /LTCG /DLL /ENTRY:$(IMAGE_ENTRY_POINT) /SUBSYSTEM:EFI_BOOT= _SERVICE_DRIVER /SAFESEH:NO /BASE:0 /DRIVER /MERGE:.rdata=3D.data

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

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



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

-RELEASE_VS2015_IA32_NASM_FLAGS  =   =3D -Ox -f win32

-NOOPT_VS2015_IA3= 2_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    =3D -Ox -f win32 -DRODA= TA_SECTION_NAME=3D.rdata

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



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

RELEASE_VS2015_IA32_DLINK_FLAGS   =3D /NOLOGO /NODEFAU= LTLIB /IGNORE:4001 /IGNORE:4254 /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 /MER= GE:.rdata=3D.data

@@ -1396,9 +1396,9 @@ NOOPT_= VS2015_X64_CC_FLAGS       =3D /nologo /c /WX = /GS- /W4 /Gs32768 /D UNICODE /G
RELEASE_VS2015_X64_ASM_FLAGS =    =3D /nologo /c /WX /W3 /Cx /Zd

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



-  = DEBUG_VS2015_X64_NASM_FLAGS   =3D -Ox -f win64 -g
<= br class=3D"">-RELEASE_VS2015_X64_NASM_FLAGS   =3D -Ox -f win64
-NOOPT_VS2015_X64_NASM_FLAGS    =  =3D -O0 -f win64 -g

+  DEBUG_VS2015= _X64_NASM_FLAGS   =3D -Ox -f win64 -g -DRODATA_SECTION_NAME=3D.rd= ata

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

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



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

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

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

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



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

-RELEASE_VS2015x86_IA32_NASM_FLAGS  =3D= -Ox -f win32

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

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

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



 DEBUG_VS2015x86_IA32_DLINK_FLAGS =3D /NOLOGO /= NODEFAULTLIB /IGNORE:4001 /OPT:REF /OPT:ICF=3D10 /MAP /ALIGN:32 /SECTION:.x= data,D /SECTION:.pdata,D /MACHINE:X86 /LTCG /DLL /ENTRY:$(IMAGE_ENTRY_POINT= ) /SUBSYSTEM:EFI_BOOT_SERVICE_DRIVER /SAFESEH:NO /BASE:0 /DRIVER /DEBUG

RELEASE_VS2015x86_IA32_DLINK_FLAGS =3D /NOLOGO /N= ODEFAULTLIB /IGNORE:4001 /IGNORE:4254 /OPT:REF /OPT:ICF=3D10 /MAP /ALIGN:32= /SECTION:.xdata,D /SECTION:.pdata,D /MACHINE:X86 /LTCG /DLL /ENTRY:$(IMAGE= _ENTRY_POINT) /SUBSYSTEM:EFI_BOOT_SERVICE_DRIVER /SAFESEH:NO /BASE:0 /DRIVE= R /MERGE:.rdata=3D.data

@@ -1508,9 +1508,9 @@ = NOOPT_VS2015x86_X64_CC_FLAGS       =3D /nolog= o /c /WX /GS- /W4 /Gs32768 /D UNICODE
RELEASE_VS2015x86_X64_A= SM_FLAGS    =3D /nologo /c /WX /W3 /Cx /Zd
NOOPT_VS2015x86_X64_ASM_FLAGS      =3D= /nologo /c /WX /W3 /Cx /Zd /Zi



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

-RELEASE_VS2015x86_X64_NASM_FLAGS =   =3D -Ox -f win64

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

+RELEA= SE_VS2015x86_X64_NASM_FLAGS   =3D -Ox -f win64 -DRODATA_SECTION_N= AME=3D.rdata

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


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

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

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

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



-  DEBUG_VS2017_IA= 32_NASM_FLAGS  =3D -Ox -f win32 -g

-RELEA= SE_VS2017_IA32_NASM_FLAGS  =3D -Ox -f win32

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

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

+R= ELEASE_VS2017_IA32_NASM_FLAGS  =3D -Ox -f win32 -DRODATA_SECTION_NAME= =3D.rdata

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



 DEBUG_VS2017_IA32_DLIN= K_FLAGS =3D /NOLOGO /NODEFAULTLIB /IGNORE:4001 /OPT:REF /OPT:ICF=3D10 /MAP = /ALIGN:32 /SECTION:.xdata,D /SECTION:.pdata,D /MACHINE:X86 /LTCG /DLL /ENTR= Y:$(IMAGE_ENTRY_POINT) /SUBSYSTEM:EFI_BOOT_SERVICE_DRIVER /SAFESEH:NO /BASE= :0 /DRIVER /DEBUG

RELEASE_VS2017_IA32_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:X86 /LTCG= /DLL /ENTRY:$(IMAGE_ENTRY_POINT) /SUBSYSTEM:EFI_BOOT_SERVICE_DRIVER /SAFES= EH:NO /BASE:0 /DRIVER /MERGE:.rdata=3D.data

@@= -1616,9 +1616,9 @@ NOOPT_VS2017_X64_CC_FLAGS      = ; =3D /nologo /c /WX /GS- /W4 /Gs32768 /D UNICODE /G
REL= EASE_VS2017_X64_ASM_FLAGS    =3D /nologo /c /WX /W3 /Cx /Zd<= br class=3D"">
NOOPT_VS2017_X64_ASM_FLAGS    &= nbsp; =3D /nologo /c /WX /W3 /Cx /Zd /Zi

=

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

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

-NOOPT_VS= 2017_X64_NASM_FLAGS     =3D -O0 -f win64 -g

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

+REL= EASE_VS2017_X64_NASM_FLAGS   =3D -Ox -f win64 -DRODATA_SECTION_NA= ME=3D.rdata

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



 DEBUG_VS2017_X6= 4_DLINK_FLAGS  =3D /NOLOGO /NODEFAULTLIB /IGNORE:4001 /IGNORE:4281 /OP= T:REF /OPT:ICF=3D10 /MAP /ALIGN:32 /SECTION:.xdata,D /SECTION:.pdata,D /Mac= hine:X64 /LTCG /DLL /ENTRY:$(IMAGE_ENTRY_POINT) /SUBSYSTEM:EFI_BOOT_SERVICE= _DRIVER /SAFESEH:NO /BASE:0 /DRIVER /DEBUG

REL= EASE_VS2017_X64_DLINK_FLAGS  =3D /NOLOGO /NODEFAULTLIB /IGNORE:4001 /I= GNORE:4281 /IGNORE:4254 /OPT:REF /OPT:ICF=3D10 /MAP /ALIGN:32 /SECTION:.xda= ta,D /SECTION:.pdata,D /Machine:X64 /LTCG /DLL /ENTRY:$(IMAGE_ENTRY_POINT) = /SUBSYSTEM:EFI_BOOT_SERVICE_DRIVER /SAFESEH:NO /BASE:0 /DRIVER /MERGE:.rdat= a=3D.data

@@ -1744,9 +1744,9 @@ NOOPT_VS2019_I= A32_CC_FLAGS      =3D /nologo /arch:IA32 /c /WX /G= S- /W4 /Gs32768 /D
RELEASE_VS2019_IA32_ASM_FLAGS   = =3D /nologo /c /WX /W3 /Cx /coff /Zd

NOOPT_VS2= 019_IA32_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 -O= 0 -f win32 -g

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

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

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



 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 /SECTIO= N:.pdata,D /Machine:X64 /LTCG /DLL /ENTRY:$(IMAGE_ENTRY_POINT) /SUBSYSTEM:E= FI_BOOT_SERVICE_DRIVER /SAFESEH:NO /BASE:0 /DRIVER /DEBUG
RELEASE_VS2019_X64_DLINK_FLAGS  =3D /NOLOGO /NODEFAULTLIB = /IGNORE:4001 /IGNORE:4281 /IGNORE:4254 /OPT:REF /OPT:ICF=3D10 /MAP /ALIGN:3= 2 /SECTION:.xdata,D /SECTION:.pdata,D /Machine:X64 /LTCG /DLL /ENTRY:$(IMAG= E_ENTRY_POINT) /SUBSYSTEM:EFI_BOOT_SERVICE_DRIVER /SAFESEH:NO /BASE:0 /DRIV= ER /MERGE:.rdata=3D.data

@@ -2030,7 +2030,7 @@= DEFINE GCC_PP_FLAGS          =             &nb= sp; =3D -E -x assembler-with-cpp -include A
*_GCC48_IA32= _DLINK2_FLAGS         =3D DEF(GCC48= _IA32_DLINK2_FLAGS)

*_GCC48_IA32_RC_FLAGS &nbs= p;           =3D DEF= (GCC_IA32_RC_FLAGS)

*_GCC48_IA32_OBJCOPY_FLAGS=        =3D

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

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



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

REL= EASE_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     = ;  =3D DEF(GCC48_IA32_CC_FLAGS) -Os -Wno-unused-but
*_GCC48_X64_DLINK2_FLAGS         = =3D DEF(GCC48_X64_DLINK2_FLAGS)

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

*_GCC48_X64_OBJC= OPY_FLAGS        =3D

-*_GCC48_X64_NASM_FLAGS        = ;   =3D -f elf64

+*_GCC48_X64_N= ASM_FLAGS           =3D -= f elf64 -DRODATA_SECTION_NAME=3D.rodata



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

RELEASE_GCC48_X64_CC_FLAGS       =3D DEF(GC= C48_X64_CC_FLAGS) -Os -Wno-unused-but-set-variable

@@ -2170,7 +2170,7 @@ RELEASE_GCC48_AARCH64_CC_FLAGS   =3D = DEF(GCC48_AARCH64_CC_FLAGS) -Wno-unused-but-s
*_GCC49_IA32_DL= INK2_FLAGS         =3D DEF(GCC49_IA= 32_DLINK2_FLAGS)

*_GCC49_IA32_RC_FLAGS  &= nbsp;          =3D DEF(GC= C_IA32_RC_FLAGS)

*_GCC49_IA32_OBJCOPY_FLAGS &n= bsp;      =3D

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

+*_GCC49_IA32_NASM_FLAGS =           =3D -f elf32 -D= RODATA_SECTION_NAME=3D.rodata


<= br class=3D""> DEBUG_GCC49_IA32_CC_FLAGS      = ; =3D DEF(GCC49_IA32_CC_FLAGS) -Os

RELEAS= E_GCC49_IA32_CC_FLAGS       =3D DEF(GCC49_IA3= 2_CC_FLAGS) -Os -Wno-unused-but-set-variable -Wno-unused-const-variable

@@ -2198,7 +2198,7 @@ RELEASE_GCC49_IA32_CC_FLAGS=       =3D DEF(GCC49_IA32_CC_FLAGS) -Os -Wno-= unused-but
*_GCC49_X64_DLINK2_FLAGS     &= nbsp;   =3D DEF(GCC49_X64_DLINK2_FLAGS)

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

*_GCC49_X64_OBJCOPY_FLAGS        = =3D

-*_GCC49_X64_NASM_FLAGS    =        =3D -f elf64

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



 DEBUG_GCC49_X64_CC_FLA= GS       =3D DEF(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-pie

*_GCC5_IA32_RC_FLAGS          = ;   =3D DEF(GCC_IA32_RC_FLAGS)

= *_GCC5_IA32_OBJCOPY_FLAGS        =3D

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

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



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

 DEBUG_GCC5_IA32_DLINK_FLAGS    = ;=3D DEF(GCC5_IA32_X64_DLINK_FLAGS) -flto -Os -Wl,-m,elf_i386,--oformat=3De= lf32-i386

@@ -2348,7 +2348,7 @@ RELEASE_GCC5_I= A32_DLINK_FLAGS    =3D DEF(GCC5_IA32_X64_DLINK_FLAGS) -flto = -Os -Wl,
*_GCC5_X64_DLINK2_FLAGS     &nbs= p;    =3D DEF(GCC5_X64_DLINK2_FLAGS)

*_GCC5_X64_RC_FLAGS        &n= bsp;     =3D DEF(GCC_X64_RC_FLAGS)
<= br class=3D"">*_GCC5_X64_OBJCOPY_FLAGS       =   =3D

-*_GCC5_X64_NASM_FLAGS  &= nbsp;         =3D -f elf64

+*_GCC5_X64_NASM_FLAGS     &n= bsp;      =3D -f elf64 -DRODATA_SECTION_NAME= =3D.rodata



 = ;DEBUG_GCC5_X64_CC_FLAGS        =3D DEF(= GCC5_X64_CC_FLAGS) -flto -DUSING_LTO -Os

 = ;DEBUG_GCC5_X64_DLINK_FLAGS     =3D DEF(GCC5_X64_DLINK_= FLAGS) -flto -Os

@@ -2589,7 +2589,7 @@ DEFINE = CLANG38_ALL_CC_FLAGS         =3D DE= F(GCC48_ALL_CC_FLAGS) DEF(CLANG38_WARNIN
*_CLANG38_IA32_ASM_F= LAGS            =3D = DEF(GCC5_ASM_FLAGS) -m32 -march=3Di386 DEF(CLANG38_IA32_TARGET)

*_CLANG38_IA32_RC_FLAGS      &nb= sp;      =3D DEF(GCC_IA32_RC_FLAGS)

*_CLANG38_IA32_OBJCOPY_FLAGS     &= nbsp;  =3D

-*_CLANG38_IA32_NASM_FLAG= S           =3D -f elf32<= br class=3D"">
+*_CLANG38_IA32_NASM_FLAGS    &= nbsp;      =3D -f elf32 -DRODATA_SECTION_NAME= =3D.rodata

*_CLANG38_IA32_PP_FLAGS   = ;          =3D DEF(GCC_PP= _FLAGS) DEF(CLANG38_IA32_TARGET)

*_CLANG38_IA3= 2_ASLPP_FLAGS          =3D DEF= (GCC_ASLPP_FLAGS) DEF(CLANG38_IA32_TARGET)

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

@@ -2626,7 +2626,7 @@ NOOPT_CLANG38_IA32_DLINK2_FLAGS   &n= bsp; =3D DEF(GCC5_IA32_DLINK2_FLAGS) -O0
*_CLANG38_X64_A= SM_FLAGS            = =3D DEF(GCC5_ASM_FLAGS) -m64 DEF(CLANG38_X64_TARGET)

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

*_CLANG38_X64_OBJCOPY_FLAGS       &nbs= p;=3D

-*_CLANG38_X64_NASM_FLAGS   &n= bsp;       =3D -f elf64
+*_CLANG38_X64_NASM_FLAGS       =     =3D -f elf64 -DRODATA_SECTION_NAME=3D.rodata

*_CLANG38_X64_PP_FLAGS      = ;       =3D DEF(GCC_PP_FLAGS) DEF(CLANG3= 8_X64_TARGET)

*_CLANG38_X64_ASLPP_FLAGS  =         =3D DEF(GCC_ASLPP_FLAGS) DE= F(CLANG38_X64_TARGET)

*_CLANG38_X64_VFRPP_FLAG= S          =3D DEF(GCC_VFRPP_F= LAGS) DEF(CLANG38_X64_TARGET)

@@ -2777,7 +2777= ,7 @@ DEFINE CLANGPDB_ALL_CC_FLAGS       &nbs= p; =3D DEF(GCC48_ALL_CC_FLAGS) DEF(CLANGPDB_WARN
*_CLANG= PDB_IA32_ASLCC_FLAGS          = =3D DEF(GCC_ASLCC_FLAGS) -m32 -fno-lto DEF(CLANGPDB_IA32_TARGET)

*_CLANGPDB_IA32_ASM_FLAGS     &nbs= p;      =3D DEF(GCC_ASM_FLAGS) -m32 -march=3D= i386 DEF(CLANGPDB_IA32_TARGET)

*_CLANGPDB_IA32= _OBJCOPY_FLAGS        =3D
=
-*_CLANGPDB_IA32_NASM_FLAGS      &n= bsp;    =3D -f win32

+*_CL= ANGPDB_IA32_NASM_FLAGS         &nbs= p; =3D -f win32 -DRODATA_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) D= EF(CLANGPDB_IA32_TARGET)

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

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

*_CLANGPDB_X64_OBJCOPY_FLAG= S        =3D

-*_CLANGPDB_X64_NASM_FLAGS        &nbs= p;  =3D -f win64

+*_CLANGPDB_X64_NAS= M_FLAGS           =3D -f = win64 -DRODATA_SECTION_NAME=3D.rdata

*_CLANGPD= B_X64_PP_FLAGS           =   =3D DEF(GCC_PP_FLAGS) DEF(CLANGPDB_X64_TARGET)
*_CLANGPDB_X64_ASLPP_FLAGS       = ;   =3D DEF(GCC_ASLPP_FLAGS) DEF(CLANGPDB_X64_TARGET)

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

@@ -2878,7 +2878,7 @@ DEFINE CLANGDWARF_X6= 4_DLINK2_FLAGS        =3D -Wl,--defsym= =3DPECOFF_HEADER_SIZE=3D0x22
*_CLANGDWARF_IA32_ASM_FLAGS &nbs= p;          =3D DEF(GCC5_= ASM_FLAGS) -m32 -march=3Di386 DEF(CLANG38_IA32_TARGET)

*_CLANGDWARF_IA32_RC_FLAGS       &nb= sp;     =3D DEF(GCC_IA32_RC_FLAGS)
<= br class=3D"">*_CLANGDWARF_IA32_OBJCOPY_FLAGS      = ;  =3D

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

*_CLANGDWARF_IA32_PP_FLAGS  =            =3D DEF(G= CC_PP_FLAGS) DEF(CLANG38_IA32_TARGET)

*_CLANGD= WARF_IA32_ASLPP_FLAGS          = ;=3D DEF(GCC_ASLPP_FLAGS) DEF(CLANG38_IA32_TARGET)

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

@@ -2914,7 +2914,7 @@ NOOPT_CLANGDWARF_IA32_DLINK2_FLA= GS     =3D DEF(CLANGDWARF_IA32_DLINK2_FLAGS) -O0 -
*_CLANGDWARF_X64_ASM_FLAGS       &n= bsp;    =3D DEF(GCC5_ASM_FLAGS) -m64 DEF(CLANG38_X64_TA= RGET)

*_CLANGDWARF_X64_RC_FLAGS   &n= bsp;         =3D DEF(GCC_X64_R= C_FLAGS)

*_CLANGDWARF_X64_OBJCOPY_FLAGS  =       =3D

-*_CLA= NGDWARF_X64_NASM_FLAGS         &nbs= p; =3D -f elf64

+*_CLANGDWARF_X64_NASM_FL= AGS           =3D -f elf6= 4 -DRODATA_SECTION_NAME=3D.rodata

*_CLANGDWARF= _X64_PP_FLAGS           &= nbsp; =3D DEF(GCC_PP_FLAGS) DEF(CLANG38_X64_TARGET)

*_CLANGDWARF_X64_ASLPP_FLAGS       = ;   =3D DEF(GCC_ASLPP_FLAGS) DEF(CLANG38_X64_TARGET)

*_CLANGDWARF_X64_VFRPP_FLAGS     =      =3D DEF(GCC_VFRPP_FLAGS) DEF(CLANG38_X64_TARG= ET)

@@ -2985,7 +2985,7 @@ RELEASE_XCODE5_IA32_= DLINK_FLAGS      =3D -arch i386 -u _$(IMAGE_ENTRY_= POINT) -e _$
 DEBUG_XCODE5_IA32_ASM_FLAGS  =3D -arc= h i386 -g

 NOOPT_XCODE5_IA32_ASM_FLAGS &n= bsp;=3D -arch i386 -g

RELEASE_XCODE5_IA32_ASM_= FLAGS  =3D -arch i386

-    = ;  *_XCODE5_IA32_NASM_FLAGS =3D -f macho32

+      *_XCODE5_IA32_NASM_FLAGS =3D -f mach= o32 -DRODATA_SECTION_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 a= lmost a synonym for "__DATA,__const", with a small exception [1]. Maybe it'= d be clearer if the macro was renamed to "NASM_RODATA_SECTION_NAME", to ind= icate this is not just a "raw" name, but NASM gives it a semantic meaning?<= br class=3D"">
The mtoc = [2] tool used to convert mach-O to PE/COFF converts the entire __DATA segme= nt (__const, __data, and __bss) into the .data section. Thus adding any kin= d of new data section is a no-op at best.
This i= s a part I missed, because I do not have an Xcode toolchain at hand, so tha= nks for investigating. However this, in my opinion, is a flaw with Mach-O/m= toc and not with my patch. It seems like the only difference between __TEXT= ,__const and __DATA,__const is whether the data is targeted by a relocation= or not. Such a concept does not exist for PE/COFF (and I think not even fo= r ELF, but I'm not too familiar with it), thus the logical PE/COFF section = __DATA,__const should be merged into is .rdata (and .rdata may or may not b= e merged into .text in an earlier step, I assume transitivity). I could cha= nge the macro definition to explicitly declare __TEXT,__const, but that wou= ld still put the compiler-emitted data in the wrong section. Does Xcode pro= vide anything remotely similar to GNU linker scripts which we can use to mo= ve the section?

Please also note that .rodata = is used for Xcode-based toolchains already (in fact, all toolchains, and th= is is the issue), I'm not regressing anything. I just expected it to work f= ine as-is. This patch mainly fixed PE/COFF-based toolchains, which get both= .rdata from the compiler and .rodata with RX permissions from NASM, becaus= e ".rodata" only has a semantic meaning for ELF and Mach-O outputs, but not= for PE/COFF.

If you want something to be read only for Xcode/clang you are better = off putting it in the __TEXT section [3]. The __TEXT section is read only a= nd for X64 can not even contain relocations.
Wel= l, this kind of is an issue. We would need to introduce an arbitrary constr= aint on the relocation part that holds only for Xcode-based toolchains. Doe= s the compiler emit an error when data in __TEXT,__const is targeted by a r= elocation?
The Xcode linker emits a fatal error = on X64 for a relocation in the __TEXT section, everything needs to be RIP r= elative and the compiler does that for free. We generally only run into thi= s for hand coded assembler and the fix is to use RIP relative addressing in= the assembly.
Good, thanks for confirming! Stil= l, this would be a bit of an awkward constraints for Xcode only.

It is a physics problem we can=E2=80=99t = fix, so I end up writing some patches to fix other peoples assembler from t= ime to time. The CI building with Xcode helps with this a lot.

(I think all open ends of the other threads a= re in here too, so let's drop them and go on only here?)

Right, ok, thanks!

Also see above re= garding 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 obj= ect file). GenFw and mtoc only run on executables, also they tend to be con= servative as they need to keep the layout the same and the relative layout = between sections the same, but in this case it is nasm placing the data in = the text section.

So what I=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 `.rodata`.
We can do that, but what to do about compiler-emitte= d __DATA,__const?
Sorry I don=E2=80=99t understa= nd what RODATA_SECTION_NAME has to do with the compiler? I thought it was f= or nasm?

Yes, it is for NASM. My = point is, the actual issue is not that my macro uses __DATA,__const, but th= at __DATA,__const is not merged into .text, but into .data. Fixing the macr= o fixes where the NASM definitions go, but what about the C definitions? I = cannot test it, as I said, because I don't have an Xcode machine, but let's= say we have a stupid example like this:

volat= ile UINT32 a;
volatile UINT32 *CONST p =3D &a;


In this case p ends up in = a __DATA__,__const section since &a requires a relocation.

OK, good, thanks!



The value of p is constant, so it can be pla= ced in a constant data section. p points to a global variable, so if the co= mpiler does not manage to somehow turn this into relative addressing (let's= assume it does not), it needs to generate a relocation. This means the com= piler cannot put it in __TEXT,__const, so it has to put it in __DATA,__cons= t (of course it could put it in other __DATA sections, but let's assume the= compiler agrees this should be read-only). The very same issue will arise = and no matter the choice of the compiler, this will end up in .data. Do you= agree? Or do we have some guarantee that Apple Clang cannot emit __DATA,__= const?

I don=E2=80=99t see your b= igger point. The compiler is free to implement as it sees fit. Which sectio= n some code ends up in is more of an implementation detail for the compiler= , and we can=E2=80=99t really depend on that?
Your point, rightfully, was that things that we request to be = read-only (may) end up being read-write. My issue is that, if the compiler = requests this pointer to be read-only (it may not, but also it may), our PE= executable does not honour it either. __DATA,__const is a section for cons= tant data, and we put it into a read-write section. The bigger point is, wh= enever the compile stack wants something read-only (be that NASM or be that= Apple Clang, anything really), we should actually ensure it is read-only. = I can do that for only NASM by forcing the __TEXT,__const section name (at = the cost of prohibiting relocs), but I do not know how to do it for Apple C= lang. At worst we could take a hacked-ish solution, where all Mach-O segmen= ts are converted to PE/COFF sections - with the exception of the __DATA,__c= onst section, which, if aligned on a segment alignment boundary, can be ins= erted between the two other parts .data is split into. I read in the XNU so= urce that the ARM protection code does something roughly like this [1], but= I'm really far from well-versed in the deep details of macOS.

Sorry for this not being "integrated" in above text, but I= found two more things while looking for citation 1.

1) Mach-O sections can be renamed, including the preceding segment n= ame [2]. According to the very next line, the example actually creates a ne= w segment. Does it allow merging into another, existing segment? What if I = did something like:

-Wl,-rename_section,__DATA= ,__const,__TEXT,__const2

or even

-Wl,-rename_section,__DATA,__const,__TEXT,__const

i.e. can it merge two sections together? if __DATA,__c= onst had data with relocs, would the renaming trigger the "no relocs" error= of __TEXT, or does that happen before section renaming? Any chance it can = be turned off?

1.1) Actually, for the standalo= ne .rodata section, we can just rename it to __DATA_CONST,__const, as I hav= e seen elsewhere in XNU. No hacked-ish solution needed. :)
2) We actually can force the compiler to put data in the const= ant data segment [3]. This is of course not used in EDK II, and probably ne= ither portable nor necessary, but an interesting detail. I really think we = should honour it either way.

I will likely try= to get my hands on some sort of Apple development environment soon, but I = cannot promise much right now. I think it really is better if I can test th= rough all toolchains myself. If you release Apple Clang for Linux, I also w= on't complain of course. :)


When I ask compiler questions to m= y compiler peeps they sometime answer via: https://godbolt.org. You can pas -e= mit-llvm, -S, or actually run code all from the webpage. It lets you compar= e the output of lots of versions of clang and compare it with other compile= rs too. You might find that useful for your research. 
=
For EFI/EDKII clang is mostly= just clang (strange triple for x86_64). It is ld64 that is macOS specific,= and there is not  cross version of ld64 that I know about. 

FYI I worked reall= y closely with the owner of ld64, Nick, when we got EFI working. What looks= like the strange set of args is what is required to make ld64 =E2=80=9Cdo = the right thing=E2=80=9D. The biggest portability issue with ld64 is it doe= s not support the GCC ld linker scripts.


I think I=E2=80=99ve forgotten to mention one, relevan= t, historical point. One of the reasons that sections got collapsed togethe= r was to save size. This is the same reason you see the page size/section a= lignment set to 0x20 (32 bytes). 32 bytes was the smallest alignment the VC= ++ would support back in the day. In recent times the runtime code got conv= erted to 4K section alignment so the OS could provide better page based pro= tection. That ended up not being too bad as all that code is stored compres= sed, and it compresses well. Usually the biggest size risk is PEI as it is = common for chunks of that code to run directly from ROM, and you would be s= urprised how much complexity can be involved in turning on DRAM, and that m= akes for larger PEIMs. 

Thanks,

Andrew Fish



We = should double check what is happening for ELF on x86, ARM, RiskV, etc. and = do the same thing. I assume all the tools that generate PE/COFF directly ar= e good with .rodata?
They are not, that is the w= hole point of the patch in its current shape. .rodata is valid for ELF and = Mach-O, PE/COFF needs .rdata.

I think it is likely as simple as dumping the EFL obje= ct file in objdump or gdb for the given toolchain (like my Xcode example).<= br class=3D"">
TL;DR It looks to me like nasm does some SECTI= ON translations under the hood to make code portable, and I=E2=80=99d like = to make sure we capture those in the new NASM_RODATA_SECTION_NAME. If some = one is doing a security review having NASM_RODATA_SECTION_NAME is going to = imply that a .rodata section is being used by that specific toolchain, and = I think that is much worse than the current =E2=80=9Cmagic=E2=80=9D behavio= r in nasm. We are much better off explaining what is really happening, sinc= e it is not very obvious.
I feel like I'm too ti= red to get the point. Do you mean you want comments whenever this section n= ame is used? Or comments in tools_def?

I think I=E2=80=99d settle for a more descriptive commit comment that= better defines what the define means like I mentioned in the other mail.

Hmm no, we can do that too, but in= that case I really want comments in the code. tools_def is not really docu= mented at all, maybe it is time to introduce an example comment so at least= new things get commented? Maybe just the start of a macro list. Relying on= "git blame" to figure out simple things is rather awful.
One more thing from another thread: Yes, the new macro should r= efer to object file section naming. I want this patch to get object file se= ctions proper and sound. From there on we can fix the linking stage to emit= proper and sound executables in a later patch.


OK then please refactor the commit message to= make it clear that this patch is to get the correct section in the object = files, and work is still need to get this into executable images.

Sure.


For Xcode you can make it __D= ATA__,__const since that is the closest thing to read only data and I think= that is your intent.

I would lik= e to do that, but only if we can ensure __DATA,__const is merged into .text= , or is a separate RNX section.


GenFW is part of EDKII BaseTools and = mtoc is part of the open source CCTOOLS project and both those tools would = need to be modified to create a .rodata section in PE/COFF.
<= /blockquote>
Yes, that should not be a big problem. Remaining= issues for me:
1) How to merge __DATA,__const into .text, or= how to emit a standalone .rodata section, for Xcode-based toolchains? (Som= e ideas above, will ping Vitaly soon as well)
2) How to submi= t modified mtoc? Any chance it could be maintained in EDK II like GenFw? (W= ould be nice if you could provide some insight)
3) How to mer= ge .rdata into .text for MSVC? (I will try to research this soon-ish, but n= o promises)
4) How to design a toggle for the platform mainta= iner to choose between .text merge and standalone .rodata?
Please note that I'm not asking you to research any of those q= uestions (but 2) would be nice :) ), this is merely a summary of open point= s till the second stage (correct executables, not just correct object secti= ons) can be properly approached.

Thanks for yo= ur time and insight!

Best regards,
Marvin


[1] https://github.com/apple/dar= win-xnu/blob/a1babec6b135d1f35b2590a1990af3c5c5393479/osfmk/arm/arm_vm_init= .c#L318-L324

[2] https://github.com/apple/darwin-xnu/blob/2ff= 845c2e033bd0ff64b5b6aa6063a1f8f65aa32/makedefs/MakeInc.def#L578

[3] https://github.com/apple/darwin-xnu/blob/8f02f2a044b9bb1ad9519= 87ef5bab20ec9486310/libsa/lastkerneldataconst.c#L48


Thanks,

Andrew Fish

Best regards,
Marvin


Thanks,=

Andrew Fish

Best regards,
Marvin

[1] https://github.com/tianocore/edk= 2/blob/master/UefiCpuPkg/Library/BaseUefiCpuLib/X64/InitializeFpu.nasm#L14<= /a> <https://gith= ub.com/tianocore/edk2/blob/master/UefiCpuPkg/Library/BaseUefiCpuLib/X64/Ini= tializeFpu.nasm#L14> <https://github.com/tianocore/edk2/blob/master/UefiCpuPkg/Librar= y/BaseUefiCpuLib/X64/InitializeFpu.nasm#L14 <https://github.com/tianocore/edk2/blob/mast= er/UefiCpuPkg/Library/BaseUefiCpuLib/X64/InitializeFpu.nasm#L14>>=

[2] $otool -V -s __TEXT __constBuild/OvmfX64/= DEBUG_XCODE5/X64/UefiCpuPkg/Library/BaseUefiCpuLib/BaseUefiCpuLib/OUTPUT/X6= 4/InitializeFpu.obj
Build//OvmfX64/DEBUG_XCODE5/X64/UefiCpuPk= g/Library/BaseUefiCpuLib/BaseUefiCpuLib/OUTPUT/X64/InitializeFpu.obj:
Contents of (__TEXT,__const) section
0000001d  = 7f 03 80 1f 00 00

$ otool -l Build//OvmfX64/DE= BUG_XCODE5/X64/UefiCpuPkg/Library/BaseUefiCpuLib/BaseUefiCpuLib/OUTPUT/X64/= InitializeFpu.obj
Build/OvmfX64/DEBUG_XCODE5/X64/UefiCpuPkg/L= ibrary/BaseUefiCpuLib/BaseUefiCpuLib/OUTPUT/X64/InitializeFpu.obj:
Load command 0
     cmd LC_SEG= MENT_64
 cmdsize 232
 segname
  vmaddr 0x0000000000000000
  vmsi= ze 0x0000000000000026
 fileoff 288
filesiz= e 38
 maxprot 0x00000007
initprot 0x000000= 07
  nsects 2
   flags= 0x0
Section
 sectname __text
  segname __TEXT
     ad= dr 0x0000000000000000
     size 0x00= 0000000000001d
   offset 288
&nb= sp;   align 2^0 (1)
   reloff 3= 28
   nreloc 2
   = ; flags 0x80000500
reserved1 0
reserved2 0=
Section
 sectname __const
&= nbsp; segname __TEXT
     addr = 0x000000000000001d
     size 0x00000= 00000000006
   offset 320
 =    align 2^0 (1)
   reloff 0   nreloc 0
   &nbs= p;flags 0x00000000
reserved1 0
reserved2 0
Load command 1
    cmd LC_SYMTA= B
cmdsize 24
 symoff 344
&nb= sp; nsyms 3
 stroff 392
strsize 63
Thanks,

Andrew Fish=


Thanks for your notes and insight!

Best= regards,
Marvin


= [1]
"For compatibility with other Unix platforms, the followi= ng standard names are also supported:
[...]
.ro= data  =3D __DATA,__const data
[...]
If the= .rodata section contains no relocations, it is instead put into the __TEXT= ,__const section unless this section has already been specified explicitly.= "
https://www.nasm.us/xdoc/2.13.01/html/nasmdoc7.html <= ;https://www.nasm.us/xdoc/2.13.01/html/nasmdoc7.html> <https://ww= w.nasm.us/xdoc/2.13.01/html/nasmdoc7.html <https://www.nasm.us/xdoc/= 2.13.01/html/nasmdoc7.html>>

[1] otool -lh DxeCore.dll
...Load command 1
     cmd= LC_SEGMENT_64
 cmdsize 312
 segname = __DATA
  vmaddr 0x000000000002b000
&n= bsp; vmsize 0x0000000000147000
 fileoff 180224
filesize 8192
 maxprot 0x00000003
initprot 0x00000003
  nsects 3
&nbs= p;  flags 0x0
Section
 sectname = __const
  segname __DATA
  =    addr 0x000000000002b000
   &= nbsp; size 0x0000000000000718
   offset 1= 80224
    align 2^4 (16)
&n= bsp;  reloff 0
   nreloc 0
    flags 0x00000000
reserved1 0reserved2 0
Section
 sectname = __data
  segname __DATA
  &= nbsp;  addr 0x000000000002b720
   &n= bsp; size 0x00000000000014f0
   offset 18= 2048
    align 2^4 (16)
&nb= sp;  reloff 0
   nreloc 0
    flags 0x00000000
reserved1 0reserved2 0
Section
 sectname = __bss
  segname __DATA
  &n= bsp;  addr 0x000000000002cc10
   &nb= sp; size 0x0000000000144e11
   offset 0    align 2^4 (16)
 &nb= sp; reloff 0
   nreloc 0
&n= bsp;   flags 0x00000001
reserved1 0
reserved2 0
=E2=80=A6

[2] = https://opensource.apple.com/source/cctools/c= ctools-698/efitools/mtoc.c.auto.html <= https://opensource.apple.com/source/cctools/cctools-698/efitools/mtoc.c.aut= o.html> <https://opensource.apple.c= om/source/cctools/cctools-698/efitools/mtoc.c.auto.html <https://opensource.apple.com/source/cctools/cctools-698/= efitools/mtoc.c.auto.html>>

[3] otoo= l more output=E2=80=A6
Load command 0
 &nb= sp;   cmd LC_SEGMENT_64
 cmdsize 392
 segname __TEXT
  vmaddr 0x000000000= 0000240
  vmsize 0x00000000000296c0
&= nbsp;fileoff 1184
filesize 169664
 maxprot= 0x00000005
initprot 0x00000005
  nse= cts 4
   flags 0x0
Section
 sectname __text
  segname __TEXT
     addr 0x0000000000000240
     size 0x000000000002489f
&= nbsp;  offset 1184
    align 2^= 3 (8)
   reloff 0
  &n= bsp;nreloc 0
    flags 0x80000400
reserved1 0
reserved2 0
Section
 sectname __cstring
  segname __TEXT
     addr 0x0000000000024ae0
     size 0x000000000000496d
&= nbsp;  offset 150848
    align = 2^4 (16)
   reloff 0
  = ; nreloc 0
    flags 0x00000002
reserved1 0
reserved2 0
Section
 sectname __ustring
  segname __TEXT<= br class=3D"">     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
&= nbsp;  offset 169728
    align = 2^4 (16)
   reloff 0
  = ; nreloc 0
    flags 0x00000000
reserved1 0
reserved2 0

Thanks,

Andrew Fish


 DEBUG_XCODE= 5_IA32_CC_FLAGS   =3D -arch i386 -c -g -Os    &nbs= p;  -Wall -Werror -include AutoGen.h -funsigned-char -fno-stack-p= rotector -fno-builtin -fshort-wchar -fasm-blocks -mdynamic-no-pic -mno-impl= icit-float -mms-bitfields -msoft-float -Wno-unused-parameter -Wno-missing-b= races -Wno-missing-field-initializers -Wno-tautological-compare -Wno-sign-c= ompare -Wno-varargs -ftrap-function=3Dundefined_behavior_has_been_optimized= _away_by_clang $(PLATFORM_FLAGS)

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

 = NOOPT_XCODE5_X64_ASM_FLAGS  =3D -arch x86_64 -g

RELEASE_XCODE5_X64_ASM_FLAGS  =3D -arch x86_64
-      *_XCODE5_X64_NASM_FLAGS =3D -f= macho64

+      *_XCO= DE5_X64_NASM_FLAGS =3D -f macho64 -DRODATA_SECTION_NAME=3D.rodata

*_XCODE5_*_PP_FLAGS      &nbs= p;  =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=_65F43E33-64C3-49E0-8F3D-FDB710A91332--