From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from ma1-aaemail-dr-lapp01.apple.com (ma1-aaemail-dr-lapp01.apple.com [17.171.2.60]) by mx.groups.io with SMTP id smtpd.web09.1490.1628632467984894273 for ; Tue, 10 Aug 2021 14:54:28 -0700 Authentication-Results: mx.groups.io; dkim=pass header.i=@apple.com header.s=20180706 header.b=Tn5RlUjg; spf=pass (domain: apple.com, ip: 17.171.2.60, mailfrom: afish@apple.com) Received: from pps.filterd (ma1-aaemail-dr-lapp01.apple.com [127.0.0.1]) by ma1-aaemail-dr-lapp01.apple.com (8.16.0.42/8.16.0.42) with SMTP id 17ALsJTJ020931; Tue, 10 Aug 2021 14:54:22 -0700 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=apple.com; h=content-type : mime-version : subject : from : in-reply-to : date : cc : content-transfer-encoding : message-id : references : to; s=20180706; bh=QpD0cOg2yGFhjN/kvnWQd+YrYEfTFTgPc2we5TxnIcQ=; b=Tn5RlUjg6bzhNkDGawhf5YvoSCrW0FqxjHGwqyXPXJOZdjZANKbdnZ1K86x+hmIahSN1 Z+eXz5MsprOsc7sXDolO4daCZGIA46JLe7YDnM5YjZ+7OeonRoATJlzph+1xAH0Cxa4H 203386sKsvTZvtOV3Pnu0NvvxbmBN45vcf0ppvUD0rSChDmLSjl5ejVxg6JvGIZ0RZny CrJjJto4pwJc/8UHio+Cy9TS3tlR3eZwMMtxiA51gMz5J2VOV81a15NWQ58R1Ua6mfXK nwGdBaBJkeE7kmpqSP1hc5Y10g6U2YxkPUxu3SE86wMnMdixL47I20FW/dAvKSNoWgtO bw== Received: from rn-mailsvcp-mta-lapp04.rno.apple.com (rn-mailsvcp-mta-lapp04.rno.apple.com [10.225.203.152]) by ma1-aaemail-dr-lapp01.apple.com with ESMTP id 3a9ru44ktx-7 (version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128 verify=NO); Tue, 10 Aug 2021 14:54:21 -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-lapp04.rno.apple.com (Oracle Communications Messaging Server 8.1.0.9.20210415 64bit (built Apr 15 2021)) with ESMTPS id <0QXN0075V8UKRL60@rn-mailsvcp-mta-lapp04.rno.apple.com>; Tue, 10 Aug 2021 14:54:20 -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 <0QXN00H008PSFH00@rn-mailsvcp-mmp-lapp03.rno.apple.com>; Tue, 10 Aug 2021 14:54:20 -0700 (PDT) X-Va-A: X-Va-T-CD: cc354bcf01ea39de908abab4e73c9ec0 X-Va-E-CD: f4d0bb655782ab825c7a9328fb164ddf X-Va-R-CD: c72241e6c7ad74ea4fd9f173994aebfa X-Va-CD: 0 X-Va-ID: 0f4fdd9e-58a5-4f98-a30f-d9b76161d671 X-V-A: X-V-T-CD: cc354bcf01ea39de908abab4e73c9ec0 X-V-E-CD: f4d0bb655782ab825c7a9328fb164ddf X-V-R-CD: c72241e6c7ad74ea4fd9f173994aebfa X-V-CD: 0 X-V-ID: c18a5351-eaa6-4d81-8333-e2afd860a1a6 X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10434:6.0.391,18.0.790 definitions=2021-08-10_08:2021-08-10,2021-08-10 signatures=0 Received: from [17.235.63.152] (unknown [17.235.63.152]) by rn-mailsvcp-mmp-lapp03.rno.apple.com (Oracle Communications Messaging Server 8.1.0.9.20210415 64bit (built Apr 15 2021)) with ESMTPSA id <0QXN00F6O8UE2X00@rn-mailsvcp-mmp-lapp03.rno.apple.com>; Tue, 10 Aug 2021 14:54:19 -0700 (PDT) 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 From: "Andrew Fish" In-reply-to: Date: Tue, 10 Aug 2021 14:54:14 -0700 Cc: Bob Feng , Liming Gao , Yuwei Chen , Vitaly Cheptsov Message-id: References: <252525969122e83d9fb9b83edc95c4f6dfd233b4.1628502434.git.mhaeuser@posteo.de> <7787F470-EEE0-4E13-93C1-508844167749@apple.com> <169A090BBBBE12C1.15606@groups.io> <1C6A8E17-9B0E-4C61-B043-0DC67248AF22@apple.com> To: devel@edk2.groups.io, mhaeuser@posteo.de X-Mailer: Apple Mail (2.3654.20.0.2.1) X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10434:6.0.391,18.0.790 definitions=2021-08-10_08:2021-08-10,2021-08-10 signatures=0 Content-type: text/plain; charset=utf-8 Content-transfer-encoding: quoted-printable > On Aug 10, 2021, at 2:24 PM, Marvin H=C3=A4user wrot= e: >=20 > On 10/08/2021 21:49, Andrew Fish wrote: >> I forgot I have an Ubuntu VM so we can take a look at an ELF to PE/COFF = toolchain example =E2=80=A6. >>=20 >> So it looks like nasm[1] =E2=80=9Cdoes the right thing=E2=80=9D(tm) and = places a .rodata section in the object file=E2=80=A6. >>=20 >> But it looks like GenFw[2] smashed the .rodata section into .data sectio= n when it translated to PE/COFF. This was the issue I was worried about=E2= =80=A6. >>=20 >> Actually I should probably look at the ELF executable too[3]. Yikes no .= rodata in the ELF. So it looks likely that the linker scripts are smashing = .rodata into .data. >=20 > They smash it into .text, as linked in the other mail [1]. Sorry I get way to much email=E2=80=A6.. > This is fine honestly, just I want some toggle that decides consistently = for all toolchains what to do (merge into .text or let it live as a separat= e section). But that'd be a task for another patch. >=20 I=E2=80=99m still trying to wrap my head around the definition of the nasm = RODATA_SECTION_NAME. Do we want it to track what ends up in the object file= , the native executable, or the PE/COFF? It seems like it is tracking the object file. If that is the case we can ju= st fix the XCODE changes to use `__TEXT,__const`and all the toolchains wou= ld be consistent.=20 I=E2=80=99d like to see the commit message reworked to better define what i= s going on. RODATA_SECTION_NAME tracks what end up object file, and PE/COFF= results are controlled by the linker script/GenFw or mtoc.=20 Thanks, Andrew Fish > Best regards, > Marvin >=20 >=20 > [1] https://github.com/tianocore/edk2/blob/d02dbb53cd78de799e6afaa237e987= 71fb5148db/BaseTools/Scripts/GccBase.lds#L25 >=20 >> So there may be multiple issues with ELF toolchains that need to change = to end up with a .rodata in the PE/COFF. >>=20 >> [1]$ objdump -fh Build/OvmfX64/DEBUG_GCC5/X64/UefiCpuPkg/Library/BaseUe= fiCpuLib/BaseUefiCpuLib/OUTPUT/X64/InitializeFpu.obj >>=20 >> Build/OvmfX64/DEBUG_GCC5/X64/UefiCpuPkg/Library/BaseUefiCpuLib/BaseUefiC= puLib/OUTPUT/X64/InitializeFpu.obj: file format elf64-x86-64 >> architecture: i386:x86-64, flags 0x00000011: >> HAS_RELOC, HAS_SYMS >> start address 0x0000000000000000 >>=20 >> Sections: >> Idx Name Size VMA LMA File off Algn >> 0 .rodata 00000006 0000000000000000 0000000000000000 00000200= 2**2 >> CONTENTS, ALLOC, LOAD, READONLY, DATA >> 1 .text 0000001d 0000000000000000 0000000000000000 00000210= 2**4 >> CONTENTS, ALLOC, LOAD, RELOC, READONLY, CODE >>=20 >>=20 >>=20 >> [2]$ objdump -fh Build/OvmfX64/DEBUG_GCC5/X64/UefiCpuPkg/CpuDxe/CpuDxe/D= EBUG/CpuDxe.efi >>=20 >> Build/OvmfX64/DEBUG_GCC5/X64/UefiCpuPkg/CpuDxe/CpuDxe/DEBUG/CpuDxe.efi: = file format pei-x86-64 >> architecture: i386:x86-64, flags 0x0000010b: >> HAS_RELOC, EXEC_P, HAS_DEBUG, D_PAGED >> start address 0x0000000000008eb1 >>=20 >> Sections: >> Idx Name Size VMA LMA File off Algn >> 0 .text 0000ff80 0000000000000240 0000000000000240 00000240= 2**4 >> CONTENTS, ALLOC, LOAD, READONLY, CODE >> 1 .data 00000540 00000000000101c0 00000000000101c0 000101c0= 2**4 >> CONTENTS, ALLOC, LOAD, DATA >> 2 .reloc 00000080 0000000000010700 0000000000010700 00010700= 2**2 >> CONTENTS, ALLOC, LOAD, READONLY, DATA >>=20 >> [3] $ objdump -fh Build/OvmfX64/DEBUG_GCC5/X64/UefiCpuPkg/CpuDxe/CpuDxe/= DEBUG/CpuDxe.dll >>=20 >> Build/OvmfX64/DEBUG_GCC5/X64/UefiCpuPkg/CpuDxe/CpuDxe/DEBUG/CpuDxe.dll: = file format elf64-x86-64 >> architecture: i386:x86-64, flags 0x00000013: >> HAS_RELOC, EXEC_P, HAS_SYMS >> start address 0x0000000000008eb1 >>=20 >> Sections: >> Idx Name Size VMA LMA File off Algn >> 0 .text 0000ff46 0000000000000240 0000000000000240 000000c0= 2**6 >> CONTENTS, ALLOC, LOAD, RELOC, READONLY, CODE >> 1 .data 00000490 00000000000101c0 00000000000101c0 00010040= 2**6 >> CONTENTS, ALLOC, LOAD, RELOC, DATA >> 2 .rela 000004f8 0000000000010680 0000000000010680 000104d0= 2**3 >> CONTENTS, READONLY >> 3 .build-id 00000024 0000000000010b78 0000000000010b78 000109c8= 2**2 >> CONTENTS, READONLY >> 4 .gnu_debuglink 00000014 0000000000000000 0000000000000000 000109e= c 2**2 >> CONTENTS, READONLY >>=20 >>=20 >>=20 >> Thanks, >>=20 >> Andrew Fish >>=20 >>> On Aug 10, 2021, at 12:35 PM, Andrew Fish via groups.io > wrot= e: >>>=20 >>>=20 >>>=20 >>>> On Aug 10, 2021, at 1:27 AM, Marvin H=C3=A4user > wrote: >>>>=20 >>>> On 10/08/2021 06:19, Andrew Fish via groups.io wro= te: >>>>>=20 >>>>>=20 >>>>>> On Aug 9, 2021, at 2:51 AM, Marvin H=C3=A4user >> wrote: >>>>>>=20 >>>>>> REF: https://bugzilla.tianocore.org/show_bug.cgi?id=3D3318 > >>>>>>=20 >>>>>> Different toolchains of the EDK II build system may generate ELF or >>>>>> Mach-O files, which use the ".rodata" naming convention, or PE/COFF >>>>>> files, which use the ".rdata" naming convention. Section permissions >>>>>> are chosen based on this name per file format by NASM. To harden >>>>>> image permission security, and to save space by avoiding both >>>>>> ".rdata" and ".rodata" sections being emitted, expose the appropriat= e >>>>>> name as a preprocessor constant. >>>>>>=20 >>>>>> Cc: Bob Feng >> >>>>>> Cc: Liming Gao >> >>>>>> Cc: Yuwei Chen <= mailto:yuwei.chen@intel.com >> >>>>>> Cc: Vitaly Cheptsov >> >>>>>> Signed-off-by: Marvin H=C3=A4user >> >>>>>> --- >>>>>> BaseTools/Conf/tools_def.template | 172 ++++++++++---------- >>>>>> 1 file changed, 86 insertions(+), 86 deletions(-) >>>>>>=20 >>>>>> diff --git a/BaseTools/Conf/tools_def.template b/BaseTools/Conf/tool= s_def.template >>>>>> index 2e6b382ab623..84d464916c4d 100755 >>>>>> --- a/BaseTools/Conf/tools_def.template >>>>>> +++ b/BaseTools/Conf/tools_def.template >>>>>> @@ -463,9 +463,9 @@ NOOPT_VS2008_IA32_CC_FLAGS =3D /nologo /c= /WX /GS- /W4 /Gs32768 /D UNICODE >>>>>> RELEASE_VS2008_IA32_ASM_FLAGS =3D /nologo /c /WX /W3 /Cx /coff /= Zd >>>>>>=20 >>>>>> NOOPT_VS2008_IA32_ASM_FLAGS =3D /nologo /c /WX /W3 /Cx /coff /= Zd /Zi >>>>>>=20 >>>>>>=20 >>>>>>=20 >>>>>> - DEBUG_VS2008_IA32_NASM_FLAGS =3D -Ox -f win32 -g >>>>>>=20 >>>>>> -RELEASE_VS2008_IA32_NASM_FLAGS =3D -Ox -f win32 >>>>>>=20 >>>>>> -NOOPT_VS2008_IA32_NASM_FLAGS =3D -O0 -f win32 -g >>>>>>=20 >>>>>> + DEBUG_VS2008_IA32_NASM_FLAGS =3D -Ox -f win32 -g -DRODATA_SECT= ION_NAME=3D.rdata >>>>>>=20 >>>>>> +RELEASE_VS2008_IA32_NASM_FLAGS =3D -Ox -f win32 -DRODATA_SECTION= _NAME=3D.rdata >>>>>>=20 >>>>>> +NOOPT_VS2008_IA32_NASM_FLAGS =3D -O0 -f win32 -g -DRODATA_SECT= ION_NAME=3D.rdata >>>>>>=20 >>>>>>=20 >>>>>>=20 >>>>>> DEBUG_VS2008_IA32_DLINK_FLAGS =3D /NOLOGO /NODEFAULTLIB /IGNORE:= 4001 /OPT:REF /OPT:ICF=3D10 /MAP /ALIGN:32 /SECTION:.xdata,D /SECTION:.pdat= a,D /MACHINE:X86 /LTCG /DLL /ENTRY:$(IMAGE_ENTRY_POINT) /SUBSYSTEM:EFI_BOOT= _SERVICE_DRIVER /SAFESEH:NO /BASE:0 /DRIVER /DEBUG >>>>>>=20 >>>>>> RELEASE_VS2008_IA32_DLINK_FLAGS =3D /NOLOGO /NODEFAULTLIB /IGNORE:= 4001 /IGNORE:4254 /OPT:REF /OPT:ICF=3D10 /MAP /ALIGN:32 /SECTION:.xdata,D /= SECTION:.pdata,D /MACHINE:X86 /LTCG /DLL /ENTRY:$(IMAGE_ENTRY_POINT) /SUBSY= STEM:EFI_BOOT_SERVICE_DRIVER /SAFESEH:NO /BASE:0 /DRIVER /MERGE:.rdata=3D.d= ata >>>>>>=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_SECTIO= N_NAME=3D.rdata >>>>>>=20 >>>>>> +RELEASE_VS2008_X64_NASM_FLAGS =3D -Ox -f win64 -DRODATA_SECTION_N= AME=3D.rdata >>>>>>=20 >>>>>> +NOOPT_VS2008_X64_NASM_FLAGS =3D -O0 -f win64 -g -DRODATA_SECTIO= N_NAME=3D.rdata >>>>>>=20 >>>>>>=20 >>>>>>=20 >>>>>> DEBUG_VS2008_X64_DLINK_FLAGS =3D /NOLOGO /NODEFAULTLIB /IGNORE:40= 01 /OPT:REF /OPT:ICF=3D10 /MAP /ALIGN:32 /SECTION:.xdata,D /SECTION:.pdata,= D /Machine:X64 /LTCG /DLL /ENTRY:$(IMAGE_ENTRY_POINT) /SUBSYSTEM:EFI_BOOT_S= ERVICE_DRIVER /SAFESEH:NO /BASE:0 /DRIVER /DEBUG >>>>>>=20 >>>>>> RELEASE_VS2008_X64_DLINK_FLAGS =3D /NOLOGO /NODEFAULTLIB /IGNORE:40= 01 /IGNORE:4254 /OPT:REF /OPT:ICF=3D10 /MAP /ALIGN:32 /SECTION:.xdata,D /SE= CTION:.pdata,D /Machine:X64 /LTCG /DLL /ENTRY:$(IMAGE_ENTRY_POINT) /SUBSYST= EM:EFI_BOOT_SERVICE_DRIVER /SAFESEH:NO /BASE:0 /DRIVER /MERGE:.rdata=3D.dat= a >>>>>>=20 >>>>>> @@ -574,9 +574,9 @@ NOOPT_VS2008x86_IA32_CC_FLAGS =3D /nologo /= c /WX /GS- /W4 /Gs32768 /D UNICODE >>>>>> RELEASE_VS2008x86_IA32_ASM_FLAGS =3D /nologo /c /WX /W3 /Cx /coff = /Zd >>>>>>=20 >>>>>> NOOPT_VS2008x86_IA32_ASM_FLAGS =3D /nologo /c /WX /W3 /Cx /coff = /Zd /Zi >>>>>>=20 >>>>>>=20 >>>>>>=20 >>>>>> - DEBUG_VS2008x86_IA32_NASM_FLAGS =3D -Ox -f win32 -g >>>>>>=20 >>>>>> -RELEASE_VS2008x86_IA32_NASM_FLAGS =3D -Ox -f win32 >>>>>>=20 >>>>>> -NOOPT_VS2008x86_IA32_NASM_FLAGS =3D -O0 -f win32 -g >>>>>>=20 >>>>>> + DEBUG_VS2008x86_IA32_NASM_FLAGS =3D -Ox -f win32 -g -DRODATA_SEC= TION_NAME=3D.rdata >>>>>>=20 >>>>>> +RELEASE_VS2008x86_IA32_NASM_FLAGS =3D -Ox -f win32 -DRODATA_SECTIO= N_NAME=3D.rdata >>>>>>=20 >>>>>> +NOOPT_VS2008x86_IA32_NASM_FLAGS =3D -O0 -f win32 -g -DRODATA_SEC= TION_NAME=3D.rdata >>>>>>=20 >>>>>>=20 >>>>>>=20 >>>>>> DEBUG_VS2008x86_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_VS2008x86_IA32_DLINK_FLAGS =3D /NOLOGO /NODEFAULTLIB /IGNORE= :4001 /IGNORE:4254 /OPT:REF /OPT:ICF=3D10 /MAP /ALIGN:32 /SECTION:.xdata,D = /SECTION:.pdata,D /MACHINE:X86 /LTCG /DLL /ENTRY:$(IMAGE_ENTRY_POINT) /SUBS= YSTEM:EFI_BOOT_SERVICE_DRIVER /SAFESEH:NO /BASE:0 /DRIVER /MERGE:.rdata=3D.= data >>>>>>=20 >>>>>> @@ -605,9 +605,9 @@ NOOPT_VS2008x86_X64_CC_FLAGS =3D /nologo /= c /WX /GS- /W4 /Gs32768 /D UNICODE >>>>>> RELEASE_VS2008x86_X64_ASM_FLAGS =3D /nologo /c /WX /W3 /Cx /Zd >>>>>>=20 >>>>>> NOOPT_VS2008x86_X64_ASM_FLAGS =3D /nologo /c /WX /W3 /Cx /Zd /Z= i >>>>>>=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_SEC= TION_NAME=3D.rdata >>>>>>=20 >>>>>> +RELEASE_VS2008x86_X64_NASM_FLAGS =3D -Ox -f win64 -DRODATA_SECTIO= N_NAME=3D.rdata >>>>>>=20 >>>>>> +NOOPT_VS2008x86_X64_NASM_FLAGS =3D -O0 -f win64 -g -DRODATA_SEC= TION_NAME=3D.rdata >>>>>>=20 >>>>>>=20 >>>>>>=20 >>>>>> DEBUG_VS2008x86_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_VS2008x86_X64_DLINK_FLAGS =3D /NOLOGO /NODEFAULTLIB /IGNORE= :4001 /IGNORE:4254 /OPT:REF /OPT:ICF=3D10 /MAP /ALIGN:32 /SECTION:.xdata,D = /SECTION:.pdata,D /Machine:X64 /LTCG /DLL /ENTRY:$(IMAGE_ENTRY_POINT) /SUBS= YSTEM:EFI_BOOT_SERVICE_DRIVER /SAFESEH:NO /BASE:0 /DRIVER /MERGE:.rdata=3D.= data >>>>>>=20 >>>>>> @@ -688,9 +688,9 @@ NOOPT_VS2010_IA32_CC_FLAGS =3D /nologo /c= /WX /GS- /W4 /Gs32768 /D UNICODE >>>>>> RELEASE_VS2010_IA32_ASM_FLAGS =3D /nologo /c /WX /W3 /Cx /coff /= Zd >>>>>>=20 >>>>>> NOOPT_VS2010_IA32_ASM_FLAGS =3D /nologo /c /WX /W3 /Cx /coff /= Zd /Zi >>>>>>=20 >>>>>>=20 >>>>>>=20 >>>>>> - DEBUG_VS2010_IA32_NASM_FLAGS =3D -Ox -f win32 -g >>>>>>=20 >>>>>> -RELEASE_VS2010_IA32_NASM_FLAGS =3D -Ox -f win32 >>>>>>=20 >>>>>> -NOOPT_VS2010_IA32_NASM_FLAGS =3D -O0 -f win32 -g >>>>>>=20 >>>>>> + DEBUG_VS2010_IA32_NASM_FLAGS =3D -Ox -f win32 -g -DRODATA_SECT= ION_NAME=3D.rdata >>>>>>=20 >>>>>> +RELEASE_VS2010_IA32_NASM_FLAGS =3D -Ox -f win32 -DRODATA_SECTION= _NAME=3D.rdata >>>>>>=20 >>>>>> +NOOPT_VS2010_IA32_NASM_FLAGS =3D -O0 -f win32 -g -DRODATA_SECT= ION_NAME=3D.rdata >>>>>>=20 >>>>>>=20 >>>>>>=20 >>>>>> DEBUG_VS2010_IA32_DLINK_FLAGS =3D /NOLOGO /NODEFAULTLIB /IGNORE:= 4001 /OPT:REF /OPT:ICF=3D10 /MAP /ALIGN:32 /SECTION:.xdata,D /SECTION:.pdat= a,D /MACHINE:X86 /LTCG /DLL /ENTRY:$(IMAGE_ENTRY_POINT) /SUBSYSTEM:EFI_BOOT= _SERVICE_DRIVER /SAFESEH:NO /BASE:0 /DRIVER /DEBUG >>>>>>=20 >>>>>> RELEASE_VS2010_IA32_DLINK_FLAGS =3D /NOLOGO /NODEFAULTLIB /IGNORE:= 4001 /IGNORE:4254 /OPT:REF /OPT:ICF=3D10 /MAP /ALIGN:32 /SECTION:.xdata,D /= SECTION:.pdata,D /MACHINE:X86 /LTCG /DLL /ENTRY:$(IMAGE_ENTRY_POINT) /SUBSY= STEM:EFI_BOOT_SERVICE_DRIVER /SAFESEH:NO /BASE:0 /DRIVER /MERGE:.rdata=3D.d= ata >>>>>>=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_SECTIO= N_NAME=3D.rdata >>>>>>=20 >>>>>> +RELEASE_VS2010_X64_NASM_FLAGS =3D -Ox -f win64 -DRODATA_SECTION_N= AME=3D.rdata >>>>>>=20 >>>>>> +NOOPT_VS2010_X64_NASM_FLAGS =3D -O0 -f win64 -g -DRODATA_SECTIO= N_NAME=3D.rdata >>>>>>=20 >>>>>>=20 >>>>>>=20 >>>>>> DEBUG_VS2010_X64_DLINK_FLAGS =3D /NOLOGO /NODEFAULTLIB /IGNORE:40= 01 /OPT:REF /OPT:ICF=3D10 /MAP /ALIGN:32 /SECTION:.xdata,D /SECTION:.pdata,= D /Machine:X64 /LTCG /DLL /ENTRY:$(IMAGE_ENTRY_POINT) /SUBSYSTEM:EFI_BOOT_S= ERVICE_DRIVER /SAFESEH:NO /BASE:0 /DRIVER /DEBUG >>>>>>=20 >>>>>> RELEASE_VS2010_X64_DLINK_FLAGS =3D /NOLOGO /NODEFAULTLIB /IGNORE:40= 01 /IGNORE:4254 /OPT:REF /OPT:ICF=3D10 /MAP /ALIGN:32 /SECTION:.xdata,D /SE= CTION:.pdata,D /Machine:X64 /LTCG /DLL /ENTRY:$(IMAGE_ENTRY_POINT) /SUBSYST= EM:EFI_BOOT_SERVICE_DRIVER /SAFESEH:NO /BASE:0 /DRIVER /MERGE:.rdata=3D.dat= a >>>>>>=20 >>>>>> @@ -799,9 +799,9 @@ NOOPT_VS2010x86_IA32_CC_FLAGS =3D /nologo /= c /WX /GS- /W4 /Gs32768 /D UNICODE >>>>>> RELEASE_VS2010x86_IA32_ASM_FLAGS =3D /nologo /c /WX /W3 /Cx /coff = /Zd >>>>>>=20 >>>>>> NOOPT_VS2010x86_IA32_ASM_FLAGS =3D /nologo /c /WX /W3 /Cx /coff = /Zd /Zi >>>>>>=20 >>>>>>=20 >>>>>>=20 >>>>>> - DEBUG_VS2010x86_IA32_NASM_FLAGS =3D -Ox -f win32 -g >>>>>>=20 >>>>>> -RELEASE_VS2010x86_IA32_NASM_FLAGS =3D -Ox -f win32 >>>>>>=20 >>>>>> -NOOPT_VS2010x86_IA32_NASM_FLAGS =3D -O0 -f win32 -g >>>>>>=20 >>>>>> + DEBUG_VS2010x86_IA32_NASM_FLAGS =3D -Ox -f win32 -g -DRODATA_SEC= TION_NAME=3D.rdata >>>>>>=20 >>>>>> +RELEASE_VS2010x86_IA32_NASM_FLAGS =3D -Ox -f win32 -DRODATA_SECTIO= N_NAME=3D.rdata >>>>>>=20 >>>>>> +NOOPT_VS2010x86_IA32_NASM_FLAGS =3D -O0 -f win32 -g -DRODATA_SEC= TION_NAME=3D.rdata >>>>>>=20 >>>>>>=20 >>>>>>=20 >>>>>> DEBUG_VS2010x86_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_VS2010x86_IA32_DLINK_FLAGS =3D /NOLOGO /NODEFAULTLIB /IGNORE= :4001 /IGNORE:4254 /OPT:REF /OPT:ICF=3D10 /MAP /ALIGN:32 /SECTION:.xdata,D = /SECTION:.pdata,D /MACHINE:X86 /LTCG /DLL /ENTRY:$(IMAGE_ENTRY_POINT) /SUBS= YSTEM:EFI_BOOT_SERVICE_DRIVER /SAFESEH:NO /BASE:0 /DRIVER /MERGE:.rdata=3D.= data >>>>>>=20 >>>>>> @@ -831,9 +831,9 @@ NOOPT_VS2010x86_X64_CC_FLAGS =3D /nologo /= c /WX /GS- /W4 /Gs32768 /D UNICODE >>>>>> RELEASE_VS2010x86_X64_ASM_FLAGS =3D /nologo /c /WX /W3 /Cx /Zd >>>>>>=20 >>>>>> NOOPT_VS2010x86_X64_ASM_FLAGS =3D /nologo /c /WX /W3 /Cx /Zd /Z= i >>>>>>=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_SEC= TION_NAME=3D.rdata >>>>>>=20 >>>>>> +RELEASE_VS2010x86_X64_NASM_FLAGS =3D -Ox -f win64 -DRODATA_SECTIO= N_NAME=3D.rdata >>>>>>=20 >>>>>> +NOOPT_VS2010x86_X64_NASM_FLAGS =3D -O0 -f win64 -g -DRODATA_SEC= TION_NAME=3D.rdata >>>>>>=20 >>>>>>=20 >>>>>>=20 >>>>>> DEBUG_VS2010x86_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_VS2010x86_X64_DLINK_FLAGS =3D /NOLOGO /NODEFAULTLIB /IGNORE= :4001 /IGNORE:4254 /OPT:REF /OPT:ICF=3D10 /MAP /ALIGN:32 /SECTION:.xdata,D = /SECTION:.pdata,D /Machine:X64 /LTCG /DLL /ENTRY:$(IMAGE_ENTRY_POINT) /SUBS= YSTEM:EFI_BOOT_SERVICE_DRIVER /SAFESEH:NO /BASE:0 /DRIVER /MERGE:.rdata=3D.= data >>>>>>=20 >>>>>> @@ -913,9 +913,9 @@ NOOPT_VS2012_IA32_CC_FLAGS =3D /nologo /a= rch:IA32 /c /WX /GS- /W4 /Gs32768 >>>>>> RELEASE_VS2012_IA32_ASM_FLAGS =3D /nologo /c /WX /W3 /Cx /coff /= Zd >>>>>>=20 >>>>>> NOOPT_VS2012_IA32_ASM_FLAGS =3D /nologo /c /WX /W3 /Cx /coff /= Zd /Zi >>>>>>=20 >>>>>>=20 >>>>>>=20 >>>>>> - DEBUG_VS2012_IA32_NASM_FLAGS =3D -Ox -f win32 -g >>>>>>=20 >>>>>> -RELEASE_VS2012_IA32_NASM_FLAGS =3D -Ox -f win32 >>>>>>=20 >>>>>> -NOOPT_VS2012_IA32_NASM_FLAGS =3D -O0 -f win32 -g >>>>>>=20 >>>>>> + DEBUG_VS2012_IA32_NASM_FLAGS =3D -Ox -f win32 -g -DRODATA_SECT= ION_NAME=3D.rdata >>>>>>=20 >>>>>> +RELEASE_VS2012_IA32_NASM_FLAGS =3D -Ox -f win32 -DRODATA_SECTION= _NAME=3D.rdata >>>>>>=20 >>>>>> +NOOPT_VS2012_IA32_NASM_FLAGS =3D -O0 -f win32 -g -DRODATA_SECT= ION_NAME=3D.rdata >>>>>>=20 >>>>>>=20 >>>>>>=20 >>>>>> DEBUG_VS2012_IA32_DLINK_FLAGS =3D /NOLOGO /NODEFAULTLIB /IGNORE:= 4001 /OPT:REF /OPT:ICF=3D10 /MAP /ALIGN:32 /SECTION:.xdata,D /SECTION:.pdat= a,D /MACHINE:X86 /LTCG /DLL /ENTRY:$(IMAGE_ENTRY_POINT) /SUBSYSTEM:EFI_BOOT= _SERVICE_DRIVER /SAFESEH:NO /BASE:0 /DRIVER /DEBUG >>>>>>=20 >>>>>> RELEASE_VS2012_IA32_DLINK_FLAGS =3D /NOLOGO /NODEFAULTLIB /IGNORE:= 4001 /IGNORE:4254 /OPT:REF /OPT:ICF=3D10 /MAP /ALIGN:32 /SECTION:.xdata,D /= SECTION:.pdata,D /MACHINE:X86 /LTCG /DLL /ENTRY:$(IMAGE_ENTRY_POINT) /SUBSY= STEM:EFI_BOOT_SERVICE_DRIVER /SAFESEH:NO /BASE:0 /DRIVER /MERGE:.rdata=3D.d= ata >>>>>>=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_SECTIO= N_NAME=3D.rdata >>>>>>=20 >>>>>> +RELEASE_VS2012_X64_NASM_FLAGS =3D -Ox -f win64 -DRODATA_SECTION_N= AME=3D.rdata >>>>>>=20 >>>>>> +NOOPT_VS2012_X64_NASM_FLAGS =3D -O0 -f win64 -g -DRODATA_SECTIO= N_NAME=3D.rdata >>>>>>=20 >>>>>>=20 >>>>>>=20 >>>>>> DEBUG_VS2012_X64_DLINK_FLAGS =3D /NOLOGO /NODEFAULTLIB /IGNORE:40= 01 /OPT:REF /OPT:ICF=3D10 /MAP /ALIGN:32 /SECTION:.xdata,D /SECTION:.pdata,= D /Machine:X64 /LTCG /DLL /ENTRY:$(IMAGE_ENTRY_POINT) /SUBSYSTEM:EFI_BOOT_S= ERVICE_DRIVER /SAFESEH:NO /BASE:0 /DRIVER /DEBUG >>>>>>=20 >>>>>> RELEASE_VS2012_X64_DLINK_FLAGS =3D /NOLOGO /NODEFAULTLIB /IGNORE:40= 01 /IGNORE:4254 /OPT:REF /OPT:ICF=3D10 /MAP /ALIGN:32 /SECTION:.xdata,D /SE= CTION:.pdata,D /Machine:X64 /LTCG /DLL /ENTRY:$(IMAGE_ENTRY_POINT) /SUBSYST= EM:EFI_BOOT_SERVICE_DRIVER /SAFESEH:NO /BASE:0 /DRIVER /MERGE:.rdata=3D.dat= a >>>>>>=20 >>>>>> @@ -1024,9 +1024,9 @@ NOOPT_VS2012x86_IA32_CC_FLAGS =3D /nologo= /arch:IA32 /c /WX /GS- /W4 /Gs32768 >>>>>> RELEASE_VS2012x86_IA32_ASM_FLAGS =3D /nologo /c /WX /W3 /Cx /coff = /Zd >>>>>>=20 >>>>>> NOOPT_VS2012x86_IA32_ASM_FLAGS =3D /nologo /c /WX /W3 /Cx /coff = /Zd /Zi >>>>>>=20 >>>>>>=20 >>>>>>=20 >>>>>> - DEBUG_VS2012x86_IA32_NASM_FLAGS =3D -Ox -f win32 -g >>>>>>=20 >>>>>> -RELEASE_VS2012x86_IA32_NASM_FLAGS =3D -Ox -f win32 >>>>>>=20 >>>>>> -NOOPT_VS2012x86_IA32_NASM_FLAGS =3D -O0 -f win32 -g >>>>>>=20 >>>>>> + DEBUG_VS2012x86_IA32_NASM_FLAGS =3D -Ox -f win32 -g -DRODATA_SEC= TION_NAME=3D.rdata >>>>>>=20 >>>>>> +RELEASE_VS2012x86_IA32_NASM_FLAGS =3D -Ox -f win32 -DRODATA_SECTIO= N_NAME=3D.rdata >>>>>>=20 >>>>>> +NOOPT_VS2012x86_IA32_NASM_FLAGS =3D -O0 -f win32 -g -DRODATA_SEC= TION_NAME=3D.rdata >>>>>>=20 >>>>>>=20 >>>>>>=20 >>>>>> DEBUG_VS2012x86_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_VS2012x86_IA32_DLINK_FLAGS =3D /NOLOGO /NODEFAULTLIB /IGNORE= :4001 /IGNORE:4254 /OPT:REF /OPT:ICF=3D10 /MAP /ALIGN:32 /SECTION:.xdata,D = /SECTION:.pdata,D /MACHINE:X86 /LTCG /DLL /ENTRY:$(IMAGE_ENTRY_POINT) /SUBS= YSTEM:EFI_BOOT_SERVICE_DRIVER /SAFESEH:NO /BASE:0 /DRIVER /MERGE:.rdata=3D.= data >>>>>>=20 >>>>>> @@ -1056,9 +1056,9 @@ NOOPT_VS2012x86_X64_CC_FLAGS =3D /nologo= /c /WX /GS- /W4 /Gs32768 /D UNICODE >>>>>> RELEASE_VS2012x86_X64_ASM_FLAGS =3D /nologo /c /WX /W3 /Cx /Zd >>>>>>=20 >>>>>> NOOPT_VS2012x86_X64_ASM_FLAGS =3D /nologo /c /WX /W3 /Cx /Zd /Z= i >>>>>>=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_SEC= TION_NAME=3D.rdata >>>>>>=20 >>>>>> +RELEASE_VS2012x86_X64_NASM_FLAGS =3D -Ox -f win64 -DRODATA_SECTIO= N_NAME=3D.rdata >>>>>>=20 >>>>>> +NOOPT_VS2012x86_X64_NASM_FLAGS =3D -O0 -f win64 -g -DRODATA_SEC= TION_NAME=3D.rdata >>>>>>=20 >>>>>>=20 >>>>>>=20 >>>>>> DEBUG_VS2012x86_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_VS2012x86_X64_DLINK_FLAGS =3D /NOLOGO /NODEFAULTLIB /IGNORE= :4001 /IGNORE:4254 /OPT:REF /OPT:ICF=3D10 /MAP /ALIGN:32 /SECTION:.xdata,D = /SECTION:.pdata,D /Machine:X64 /LTCG /DLL /ENTRY:$(IMAGE_ENTRY_POINT) /SUBS= YSTEM:EFI_BOOT_SERVICE_DRIVER /SAFESEH:NO /BASE:0 /DRIVER /MERGE:.rdata=3D.= data >>>>>>=20 >>>>>> @@ -1138,9 +1138,9 @@ NOOPT_VS2013_IA32_CC_FLAGS =3D /nologo = /arch:IA32 /c /WX /GS- /W4 /Gs32768 >>>>>> RELEASE_VS2013_IA32_ASM_FLAGS =3D /nologo /c /WX /W3 /Cx /coff /= Zd >>>>>>=20 >>>>>> NOOPT_VS2013_IA32_ASM_FLAGS =3D /nologo /c /WX /W3 /Cx /coff /= Zd /Zi >>>>>>=20 >>>>>>=20 >>>>>>=20 >>>>>> - DEBUG_VS2013_IA32_NASM_FLAGS =3D -Ox -f win32 -g >>>>>>=20 >>>>>> -RELEASE_VS2013_IA32_NASM_FLAGS =3D -Ox -f win32 >>>>>>=20 >>>>>> -NOOPT_VS2013_IA32_NASM_FLAGS =3D -O0 -f win32 -g >>>>>>=20 >>>>>> + DEBUG_VS2013_IA32_NASM_FLAGS =3D -Ox -f win32 -g -DRODATA_SECT= ION_NAME=3D.rdata >>>>>>=20 >>>>>> +RELEASE_VS2013_IA32_NASM_FLAGS =3D -Ox -f win32 -DRODATA_SECTION= _NAME=3D.rdata >>>>>>=20 >>>>>> +NOOPT_VS2013_IA32_NASM_FLAGS =3D -O0 -f win32 -g -DRODATA_SECT= ION_NAME=3D.rdata >>>>>>=20 >>>>>>=20 >>>>>>=20 >>>>>> DEBUG_VS2013_IA32_DLINK_FLAGS =3D /NOLOGO /NODEFAULTLIB /IGNORE:= 4001 /OPT:REF /OPT:ICF=3D10 /MAP /ALIGN:32 /SECTION:.xdata,D /SECTION:.pdat= a,D /MACHINE:X86 /LTCG /DLL /ENTRY:$(IMAGE_ENTRY_POINT) /SUBSYSTEM:EFI_BOOT= _SERVICE_DRIVER /SAFESEH:NO /BASE:0 /DRIVER /DEBUG >>>>>>=20 >>>>>> RELEASE_VS2013_IA32_DLINK_FLAGS =3D /NOLOGO /NODEFAULTLIB /IGNORE:= 4001 /IGNORE:4254 /OPT:REF /OPT:ICF=3D10 /MAP /ALIGN:32 /SECTION:.xdata,D /= SECTION:.pdata,D /MACHINE:X86 /LTCG /DLL /ENTRY:$(IMAGE_ENTRY_POINT) /SUBSY= STEM:EFI_BOOT_SERVICE_DRIVER /SAFESEH:NO /BASE:0 /DRIVER /MERGE:.rdata=3D.d= ata >>>>>>=20 >>>>>> @@ -1170,9 +1170,9 @@ NOOPT_VS2013_X64_CC_FLAGS =3D /nologo /c= /WX /GS- /W4 /Gs32768 /D UNICODE /G >>>>>> RELEASE_VS2013_X64_ASM_FLAGS =3D /nologo /c /WX /W3 /Cx /Zd >>>>>>=20 >>>>>> NOOPT_VS2013_X64_ASM_FLAGS =3D /nologo /c /WX /W3 /Cx /Zd /Zi >>>>>>=20 >>>>>>=20 >>>>>>=20 >>>>>> - DEBUG_VS2013_X64_NASM_FLAGS =3D -Ox -f win64 -g >>>>>>=20 >>>>>> -RELEASE_VS2013_X64_NASM_FLAGS =3D -Ox -f win64 >>>>>>=20 >>>>>> -NOOPT_VS2013_X64_NASM_FLAGS =3D -O0 -f win64 -g >>>>>>=20 >>>>>> + DEBUG_VS2013_X64_NASM_FLAGS =3D -Ox -f win64 -g -DRODATA_SECTIO= N_NAME=3D.rdata >>>>>>=20 >>>>>> +RELEASE_VS2013_X64_NASM_FLAGS =3D -Ox -f win64 -DRODATA_SECTION_N= AME=3D.rdata >>>>>>=20 >>>>>> +NOOPT_VS2013_X64_NASM_FLAGS =3D -O0 -f win64 -g -DRODATA_SECTIO= N_NAME=3D.rdata >>>>>>=20 >>>>>>=20 >>>>>>=20 >>>>>> DEBUG_VS2013_X64_DLINK_FLAGS =3D /NOLOGO /NODEFAULTLIB /IGNORE:40= 01 /OPT:REF /OPT:ICF=3D10 /MAP /ALIGN:32 /SECTION:.xdata,D /SECTION:.pdata,= D /Machine:X64 /LTCG /DLL /ENTRY:$(IMAGE_ENTRY_POINT) /SUBSYSTEM:EFI_BOOT_S= ERVICE_DRIVER /SAFESEH:NO /BASE:0 /DRIVER /DEBUG >>>>>>=20 >>>>>> RELEASE_VS2013_X64_DLINK_FLAGS =3D /NOLOGO /NODEFAULTLIB /IGNORE:40= 01 /IGNORE:4254 /OPT:REF /OPT:ICF=3D10 /MAP /ALIGN:32 /SECTION:.xdata,D /SE= CTION:.pdata,D /Machine:X64 /LTCG /DLL /ENTRY:$(IMAGE_ENTRY_POINT) /SUBSYST= EM:EFI_BOOT_SERVICE_DRIVER /SAFESEH:NO /BASE:0 /DRIVER /MERGE:.rdata=3D.dat= a >>>>>>=20 >>>>>> @@ -1249,9 +1249,9 @@ NOOPT_VS2013x86_IA32_CC_FLAGS =3D /nologo= /arch:IA32 /c /WX /GS- /W4 /Gs32768 >>>>>> RELEASE_VS2013x86_IA32_ASM_FLAGS =3D /nologo /c /WX /W3 /Cx /coff = /Zd >>>>>>=20 >>>>>> NOOPT_VS2013x86_IA32_ASM_FLAGS =3D /nologo /c /WX /W3 /Cx /coff = /Zd /Zi >>>>>>=20 >>>>>>=20 >>>>>>=20 >>>>>> - DEBUG_VS2013x86_IA32_NASM_FLAGS =3D -Ox -f win32 -g >>>>>>=20 >>>>>> -RELEASE_VS2013x86_IA32_NASM_FLAGS =3D -Ox -f win32 >>>>>>=20 >>>>>> -NOOPT_VS2013x86_IA32_NASM_FLAGS =3D -O0 -f win32 -g >>>>>>=20 >>>>>> + DEBUG_VS2013x86_IA32_NASM_FLAGS =3D -Ox -f win32 -g -DRODATA_SEC= TION_NAME=3D.rdata >>>>>>=20 >>>>>> +RELEASE_VS2013x86_IA32_NASM_FLAGS =3D -Ox -f win32 -DRODATA_SECTIO= N_NAME=3D.rdata >>>>>>=20 >>>>>> +NOOPT_VS2013x86_IA32_NASM_FLAGS =3D -O0 -f win32 -g -DRODATA_SEC= TION_NAME=3D.rdata >>>>>>=20 >>>>>>=20 >>>>>>=20 >>>>>> DEBUG_VS2013x86_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_VS2013x86_IA32_DLINK_FLAGS =3D /NOLOGO /NODEFAULTLIB /IGNORE= :4001 /IGNORE:4254 /OPT:REF /OPT:ICF=3D10 /MAP /ALIGN:32 /SECTION:.xdata,D = /SECTION:.pdata,D /MACHINE:X86 /LTCG /DLL /ENTRY:$(IMAGE_ENTRY_POINT) /SUBS= YSTEM:EFI_BOOT_SERVICE_DRIVER /SAFESEH:NO /BASE:0 /DRIVER /MERGE:.rdata=3D.= data >>>>>>=20 >>>>>> @@ -1281,9 +1281,9 @@ NOOPT_VS2013x86_X64_CC_FLAGS =3D /nologo= /c /WX /GS- /W4 /Gs32768 /D UNICODE >>>>>> RELEASE_VS2013x86_X64_ASM_FLAGS =3D /nologo /c /WX /W3 /Cx /Zd >>>>>>=20 >>>>>> NOOPT_VS2013x86_X64_ASM_FLAGS =3D /nologo /c /WX /W3 /Cx /Zd /Z= i >>>>>>=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_SEC= TION_NAME=3D.rdata >>>>>>=20 >>>>>> +RELEASE_VS2013x86_X64_NASM_FLAGS =3D -Ox -f win64 -DRODATA_SECTIO= N_NAME=3D.rdata >>>>>>=20 >>>>>> +NOOPT_VS2013x86_X64_NASM_FLAGS =3D -O0 -f win64 -g -DRODATA_SEC= TION_NAME=3D.rdata >>>>>>=20 >>>>>>=20 >>>>>>=20 >>>>>> DEBUG_VS2013x86_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_VS2013x86_X64_DLINK_FLAGS =3D /NOLOGO /NODEFAULTLIB /IGNORE= :4001 /IGNORE:4254 /OPT:REF /OPT:ICF=3D10 /MAP /ALIGN:32 /SECTION:.xdata,D = /SECTION:.pdata,D /Machine:X64 /LTCG /DLL /ENTRY:$(IMAGE_ENTRY_POINT) /SUBS= YSTEM:EFI_BOOT_SERVICE_DRIVER /SAFESEH:NO /BASE:0 /DRIVER /MERGE:.rdata=3D.= data >>>>>>=20 >>>>>> @@ -1364,9 +1364,9 @@ NOOPT_VS2015_IA32_CC_FLAGS =3D /nologo = /arch:IA32 /c /WX /GS- /W4 /Gs32768 >>>>>> RELEASE_VS2015_IA32_ASM_FLAGS =3D /nologo /c /WX /W3 /Cx /coff /= Zd >>>>>>=20 >>>>>> NOOPT_VS2015_IA32_ASM_FLAGS =3D /nologo /c /WX /W3 /Cx /coff /= Zd /Zi >>>>>>=20 >>>>>>=20 >>>>>>=20 >>>>>> - DEBUG_VS2015_IA32_NASM_FLAGS =3D -Ox -f win32 -g >>>>>>=20 >>>>>> -RELEASE_VS2015_IA32_NASM_FLAGS =3D -Ox -f win32 >>>>>>=20 >>>>>> -NOOPT_VS2015_IA32_NASM_FLAGS =3D -O0 -f win32 -g >>>>>>=20 >>>>>> + DEBUG_VS2015_IA32_NASM_FLAGS =3D -Ox -f win32 -g -DRODATA_SECT= ION_NAME=3D.rdata >>>>>>=20 >>>>>> +RELEASE_VS2015_IA32_NASM_FLAGS =3D -Ox -f win32 -DRODATA_SECTION= _NAME=3D.rdata >>>>>>=20 >>>>>> +NOOPT_VS2015_IA32_NASM_FLAGS =3D -O0 -f win32 -g -DRODATA_SECT= ION_NAME=3D.rdata >>>>>>=20 >>>>>>=20 >>>>>>=20 >>>>>> DEBUG_VS2015_IA32_DLINK_FLAGS =3D /NOLOGO /NODEFAULTLIB /IGNORE:= 4001 /OPT:REF /OPT:ICF=3D10 /MAP /ALIGN:32 /SECTION:.xdata,D /SECTION:.pdat= a,D /MACHINE:X86 /LTCG /DLL /ENTRY:$(IMAGE_ENTRY_POINT) /SUBSYSTEM:EFI_BOOT= _SERVICE_DRIVER /SAFESEH:NO /BASE:0 /DRIVER /DEBUG >>>>>>=20 >>>>>> RELEASE_VS2015_IA32_DLINK_FLAGS =3D /NOLOGO /NODEFAULTLIB /IGNORE:= 4001 /IGNORE:4254 /OPT:REF /OPT:ICF=3D10 /MAP /ALIGN:32 /SECTION:.xdata,D /= SECTION:.pdata,D /MACHINE:X86 /LTCG /DLL /ENTRY:$(IMAGE_ENTRY_POINT) /SUBSY= STEM:EFI_BOOT_SERVICE_DRIVER /SAFESEH:NO /BASE:0 /DRIVER /MERGE:.rdata=3D.d= ata >>>>>>=20 >>>>>> @@ -1396,9 +1396,9 @@ NOOPT_VS2015_X64_CC_FLAGS =3D /nologo /c= /WX /GS- /W4 /Gs32768 /D UNICODE /G >>>>>> RELEASE_VS2015_X64_ASM_FLAGS =3D /nologo /c /WX /W3 /Cx /Zd >>>>>>=20 >>>>>> NOOPT_VS2015_X64_ASM_FLAGS =3D /nologo /c /WX /W3 /Cx /Zd /Zi >>>>>>=20 >>>>>>=20 >>>>>>=20 >>>>>> - DEBUG_VS2015_X64_NASM_FLAGS =3D -Ox -f win64 -g >>>>>>=20 >>>>>> -RELEASE_VS2015_X64_NASM_FLAGS =3D -Ox -f win64 >>>>>>=20 >>>>>> -NOOPT_VS2015_X64_NASM_FLAGS =3D -O0 -f win64 -g >>>>>>=20 >>>>>> + DEBUG_VS2015_X64_NASM_FLAGS =3D -Ox -f win64 -g -DRODATA_SECTIO= N_NAME=3D.rdata >>>>>>=20 >>>>>> +RELEASE_VS2015_X64_NASM_FLAGS =3D -Ox -f win64 -DRODATA_SECTION_N= AME=3D.rdata >>>>>>=20 >>>>>> +NOOPT_VS2015_X64_NASM_FLAGS =3D -O0 -f win64 -g -DRODATA_SECTIO= N_NAME=3D.rdata >>>>>>=20 >>>>>>=20 >>>>>>=20 >>>>>> DEBUG_VS2015_X64_DLINK_FLAGS =3D /NOLOGO /NODEFAULTLIB /IGNORE:40= 01 /OPT:REF /OPT:ICF=3D10 /MAP /ALIGN:32 /SECTION:.xdata,D /SECTION:.pdata,= D /Machine:X64 /LTCG /DLL /ENTRY:$(IMAGE_ENTRY_POINT) /SUBSYSTEM:EFI_BOOT_S= ERVICE_DRIVER /SAFESEH:NO /BASE:0 /DRIVER /DEBUG >>>>>>=20 >>>>>> RELEASE_VS2015_X64_DLINK_FLAGS =3D /NOLOGO /NODEFAULTLIB /IGNORE:40= 01 /IGNORE:4254 /OPT:REF /OPT:ICF=3D10 /MAP /ALIGN:32 /SECTION:.xdata,D /SE= CTION:.pdata,D /Machine:X64 /LTCG /DLL /ENTRY:$(IMAGE_ENTRY_POINT) /SUBSYST= EM:EFI_BOOT_SERVICE_DRIVER /SAFESEH:NO /BASE:0 /DRIVER /MERGE:.rdata=3D.dat= a >>>>>>=20 >>>>>> @@ -1476,9 +1476,9 @@ NOOPT_VS2015x86_IA32_CC_FLAGS =3D /nologo= /arch:IA32 /c /WX /GS- /W4 /Gs32768 >>>>>> RELEASE_VS2015x86_IA32_ASM_FLAGS =3D /nologo /c /WX /W3 /Cx /coff = /Zd >>>>>>=20 >>>>>> NOOPT_VS2015x86_IA32_ASM_FLAGS =3D /nologo /c /WX /W3 /Cx /coff = /Zd /Zi >>>>>>=20 >>>>>>=20 >>>>>>=20 >>>>>> - DEBUG_VS2015x86_IA32_NASM_FLAGS =3D -Ox -f win32 -g >>>>>>=20 >>>>>> -RELEASE_VS2015x86_IA32_NASM_FLAGS =3D -Ox -f win32 >>>>>>=20 >>>>>> -NOOPT_VS2015x86_IA32_NASM_FLAGS =3D -O0 -f win32 -g >>>>>>=20 >>>>>> + DEBUG_VS2015x86_IA32_NASM_FLAGS =3D -Ox -f win32 -g -DRODATA_SEC= TION_NAME=3D.rdata >>>>>>=20 >>>>>> +RELEASE_VS2015x86_IA32_NASM_FLAGS =3D -Ox -f win32 -DRODATA_SECTIO= N_NAME=3D.rdata >>>>>>=20 >>>>>> +NOOPT_VS2015x86_IA32_NASM_FLAGS =3D -O0 -f win32 -g -DRODATA_SEC= TION_NAME=3D.rdata >>>>>>=20 >>>>>>=20 >>>>>>=20 >>>>>> DEBUG_VS2015x86_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_VS2015x86_IA32_DLINK_FLAGS =3D /NOLOGO /NODEFAULTLIB /IGNORE= :4001 /IGNORE:4254 /OPT:REF /OPT:ICF=3D10 /MAP /ALIGN:32 /SECTION:.xdata,D = /SECTION:.pdata,D /MACHINE:X86 /LTCG /DLL /ENTRY:$(IMAGE_ENTRY_POINT) /SUBS= YSTEM:EFI_BOOT_SERVICE_DRIVER /SAFESEH:NO /BASE:0 /DRIVER /MERGE:.rdata=3D.= data >>>>>>=20 >>>>>> @@ -1508,9 +1508,9 @@ NOOPT_VS2015x86_X64_CC_FLAGS =3D /nologo= /c /WX /GS- /W4 /Gs32768 /D UNICODE >>>>>> RELEASE_VS2015x86_X64_ASM_FLAGS =3D /nologo /c /WX /W3 /Cx /Zd >>>>>>=20 >>>>>> NOOPT_VS2015x86_X64_ASM_FLAGS =3D /nologo /c /WX /W3 /Cx /Zd /Z= i >>>>>>=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_SEC= TION_NAME=3D.rdata >>>>>>=20 >>>>>> +RELEASE_VS2015x86_X64_NASM_FLAGS =3D -Ox -f win64 -DRODATA_SECTIO= N_NAME=3D.rdata >>>>>>=20 >>>>>> +NOOPT_VS2015x86_X64_NASM_FLAGS =3D -O0 -f win64 -g -DRODATA_SEC= TION_NAME=3D.rdata >>>>>>=20 >>>>>>=20 >>>>>>=20 >>>>>> DEBUG_VS2015x86_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_VS2015x86_X64_DLINK_FLAGS =3D /NOLOGO /NODEFAULTLIB /IGNORE= :4001 /IGNORE:4254 /OPT:REF /OPT:ICF=3D10 /MAP /ALIGN:32 /SECTION:.xdata,D = /SECTION:.pdata,D /Machine:X64 /LTCG /DLL /ENTRY:$(IMAGE_ENTRY_POINT) /SUBS= YSTEM:EFI_BOOT_SERVICE_DRIVER /SAFESEH:NO /BASE:0 /DRIVER /MERGE:.rdata=3D.= data >>>>>>=20 >>>>>> @@ -1586,9 +1586,9 @@ NOOPT_VS2017_IA32_CC_FLAGS =3D /nologo /a= rch: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_SECTIO= N_NAME=3D.rdata >>>>>>=20 >>>>>> +RELEASE_VS2017_IA32_NASM_FLAGS =3D -Ox -f win32 -DRODATA_SECTION_N= AME=3D.rdata >>>>>>=20 >>>>>> +NOOPT_VS2017_IA32_NASM_FLAGS =3D -O0 -f win32 -g -DRODATA_SECTIO= N_NAME=3D.rdata >>>>>>=20 >>>>>>=20 >>>>>>=20 >>>>>> DEBUG_VS2017_IA32_DLINK_FLAGS =3D /NOLOGO /NODEFAULTLIB /IGNORE:40= 01 /OPT:REF /OPT:ICF=3D10 /MAP /ALIGN:32 /SECTION:.xdata,D /SECTION:.pdata,= D /MACHINE:X86 /LTCG /DLL /ENTRY:$(IMAGE_ENTRY_POINT) /SUBSYSTEM:EFI_BOOT_S= ERVICE_DRIVER /SAFESEH:NO /BASE:0 /DRIVER /DEBUG >>>>>>=20 >>>>>> RELEASE_VS2017_IA32_DLINK_FLAGS =3D /NOLOGO /NODEFAULTLIB /IGNORE:40= 01 /IGNORE:4254 /OPT:REF /OPT:ICF=3D10 /MAP /ALIGN:32 /SECTION:.xdata,D /SE= CTION:.pdata,D /MACHINE:X86 /LTCG /DLL /ENTRY:$(IMAGE_ENTRY_POINT) /SUBSYST= EM:EFI_BOOT_SERVICE_DRIVER /SAFESEH:NO /BASE:0 /DRIVER /MERGE:.rdata=3D.dat= a >>>>>>=20 >>>>>> @@ -1616,9 +1616,9 @@ NOOPT_VS2017_X64_CC_FLAGS =3D /nologo /c= /WX /GS- /W4 /Gs32768 /D UNICODE /G >>>>>> RELEASE_VS2017_X64_ASM_FLAGS =3D /nologo /c /WX /W3 /Cx /Zd >>>>>>=20 >>>>>> NOOPT_VS2017_X64_ASM_FLAGS =3D /nologo /c /WX /W3 /Cx /Zd /Zi >>>>>>=20 >>>>>>=20 >>>>>>=20 >>>>>> - DEBUG_VS2017_X64_NASM_FLAGS =3D -Ox -f win64 -g >>>>>>=20 >>>>>> -RELEASE_VS2017_X64_NASM_FLAGS =3D -Ox -f win64 >>>>>>=20 >>>>>> -NOOPT_VS2017_X64_NASM_FLAGS =3D -O0 -f win64 -g >>>>>>=20 >>>>>> + DEBUG_VS2017_X64_NASM_FLAGS =3D -Ox -f win64 -g -DRODATA_SECTIO= N_NAME=3D.rdata >>>>>>=20 >>>>>> +RELEASE_VS2017_X64_NASM_FLAGS =3D -Ox -f win64 -DRODATA_SECTION_N= AME=3D.rdata >>>>>>=20 >>>>>> +NOOPT_VS2017_X64_NASM_FLAGS =3D -O0 -f win64 -g -DRODATA_SECTIO= N_NAME=3D.rdata >>>>>>=20 >>>>>>=20 >>>>>>=20 >>>>>> DEBUG_VS2017_X64_DLINK_FLAGS =3D /NOLOGO /NODEFAULTLIB /IGNORE:40= 01 /IGNORE:4281 /OPT:REF /OPT:ICF=3D10 /MAP /ALIGN:32 /SECTION:.xdata,D /SE= CTION:.pdata,D /Machine:X64 /LTCG /DLL /ENTRY:$(IMAGE_ENTRY_POINT) /SUBSYST= EM:EFI_BOOT_SERVICE_DRIVER /SAFESEH:NO /BASE:0 /DRIVER /DEBUG >>>>>>=20 >>>>>> RELEASE_VS2017_X64_DLINK_FLAGS =3D /NOLOGO /NODEFAULTLIB /IGNORE:40= 01 /IGNORE:4281 /IGNORE:4254 /OPT:REF /OPT:ICF=3D10 /MAP /ALIGN:32 /SECTION= :.xdata,D /SECTION:.pdata,D /Machine:X64 /LTCG /DLL /ENTRY:$(IMAGE_ENTRY_PO= INT) /SUBSYSTEM:EFI_BOOT_SERVICE_DRIVER /SAFESEH:NO /BASE:0 /DRIVER /MERGE:= .rdata=3D.data >>>>>>=20 >>>>>> @@ -1744,9 +1744,9 @@ NOOPT_VS2019_IA32_CC_FLAGS =3D /nologo /a= rch: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_SECTIO= N_NAME=3D.rdata >>>>>>=20 >>>>>> +RELEASE_VS2019_IA32_NASM_FLAGS =3D -Ox -f win32 -DRODATA_SECTION_N= AME=3D.rdata >>>>>>=20 >>>>>> +NOOPT_VS2019_IA32_NASM_FLAGS =3D -O0 -f win32 -g -DRODATA_SECTIO= N_NAME=3D.rdata >>>>>>=20 >>>>>>=20 >>>>>>=20 >>>>>> DEBUG_VS2019_IA32_DLINK_FLAGS =3D /NOLOGO /NODEFAULTLIB /IGNORE:40= 01 /OPT:REF /OPT:ICF=3D10 /MAP /ALIGN:32 /SECTION:.xdata,D /SECTION:.pdata,= D /MACHINE:X86 /LTCG /DLL /ENTRY:$(IMAGE_ENTRY_POINT) /SUBSYSTEM:EFI_BOOT_S= ERVICE_DRIVER /SAFESEH:NO /BASE:0 /DRIVER /DEBUG >>>>>>=20 >>>>>> RELEASE_VS2019_IA32_DLINK_FLAGS =3D /NOLOGO /NODEFAULTLIB /IGNORE:40= 01 /IGNORE:4254 /OPT:REF /OPT:ICF=3D10 /MAP /ALIGN:32 /SECTION:.xdata,D /SE= CTION:.pdata,D /MACHINE:X86 /LTCG /DLL /ENTRY:$(IMAGE_ENTRY_POINT) /SUBSYST= EM:EFI_BOOT_SERVICE_DRIVER /SAFESEH:NO /BASE:0 /DRIVER /MERGE:.rdata=3D.dat= a >>>>>>=20 >>>>>> @@ -1774,9 +1774,9 @@ NOOPT_VS2019_X64_CC_FLAGS =3D /nologo /c= /WX /GS- /W4 /Gs32768 /D UNICODE /G >>>>>> RELEASE_VS2019_X64_ASM_FLAGS =3D /nologo /c /WX /W3 /Cx /Zd >>>>>>=20 >>>>>> NOOPT_VS2019_X64_ASM_FLAGS =3D /nologo /c /WX /W3 /Cx /Zd /Zi >>>>>>=20 >>>>>>=20 >>>>>>=20 >>>>>> - DEBUG_VS2019_X64_NASM_FLAGS =3D -Ox -f win64 -g >>>>>>=20 >>>>>> -RELEASE_VS2019_X64_NASM_FLAGS =3D -Ox -f win64 >>>>>>=20 >>>>>> -NOOPT_VS2019_X64_NASM_FLAGS =3D -O0 -f win64 -g >>>>>>=20 >>>>>> + DEBUG_VS2019_X64_NASM_FLAGS =3D -Ox -f win64 -g -DRODATA_SECTIO= N_NAME=3D.rdata >>>>>>=20 >>>>>> +RELEASE_VS2019_X64_NASM_FLAGS =3D -Ox -f win64 -DRODATA_SECTION_N= AME=3D.rdata >>>>>>=20 >>>>>> +NOOPT_VS2019_X64_NASM_FLAGS =3D -O0 -f win64 -g -DRODATA_SECTIO= N_NAME=3D.rdata >>>>>>=20 >>>>>>=20 >>>>>>=20 >>>>>> DEBUG_VS2019_X64_DLINK_FLAGS =3D /NOLOGO /NODEFAULTLIB /IGNORE:40= 01 /IGNORE:4281 /OPT:REF /OPT:ICF=3D10 /MAP /ALIGN:32 /SECTION:.xdata,D /SE= CTION:.pdata,D /Machine:X64 /LTCG /DLL /ENTRY:$(IMAGE_ENTRY_POINT) /SUBSYST= EM:EFI_BOOT_SERVICE_DRIVER /SAFESEH:NO /BASE:0 /DRIVER /DEBUG >>>>>>=20 >>>>>> RELEASE_VS2019_X64_DLINK_FLAGS =3D /NOLOGO /NODEFAULTLIB /IGNORE:40= 01 /IGNORE:4281 /IGNORE:4254 /OPT:REF /OPT:ICF=3D10 /MAP /ALIGN:32 /SECTION= :.xdata,D /SECTION:.pdata,D /Machine:X64 /LTCG /DLL /ENTRY:$(IMAGE_ENTRY_PO= INT) /SUBSYSTEM:EFI_BOOT_SERVICE_DRIVER /SAFESEH:NO /BASE:0 /DRIVER /MERGE:= .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_FLAGS) >>>>>>=20 >>>>>> *_GCC48_IA32_RC_FLAGS =3D DEF(GCC_IA32_RC_FLAGS) >>>>>>=20 >>>>>> *_GCC48_IA32_OBJCOPY_FLAGS =3D >>>>>>=20 >>>>>> -*_GCC48_IA32_NASM_FLAGS =3D -f elf32 >>>>>>=20 >>>>>> +*_GCC48_IA32_NASM_FLAGS =3D -f elf32 -DRODATA_SECTION_NAM= E=3D.rodata >>>>>>=20 >>>>>>=20 >>>>>>=20 >>>>>> DEBUG_GCC48_IA32_CC_FLAGS =3D DEF(GCC48_IA32_CC_FLAGS) -Os >>>>>>=20 >>>>>> RELEASE_GCC48_IA32_CC_FLAGS =3D DEF(GCC48_IA32_CC_FLAGS) -Os -= Wno-unused-but-set-variable >>>>>>=20 >>>>>> @@ -2058,7 +2058,7 @@ RELEASE_GCC48_IA32_CC_FLAGS =3D DEF(GCC4= 8_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 -Wn= o-unused-but-set-variable >>>>>>=20 >>>>>> @@ -2170,7 +2170,7 @@ RELEASE_GCC48_AARCH64_CC_FLAGS =3D DEF(GCC48= _AARCH64_CC_FLAGS) -Wno-unused-but-s >>>>>> *_GCC49_IA32_DLINK2_FLAGS =3D DEF(GCC49_IA32_DLINK2_FLAGS) >>>>>>=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_NAM= E=3D.rodata >>>>>>=20 >>>>>>=20 >>>>>>=20 >>>>>> DEBUG_GCC49_IA32_CC_FLAGS =3D DEF(GCC49_IA32_CC_FLAGS) -Os >>>>>>=20 >>>>>> RELEASE_GCC49_IA32_CC_FLAGS =3D DEF(GCC49_IA32_CC_FLAGS) -Os -= Wno-unused-but-set-variable -Wno-unused-const-variable >>>>>>=20 >>>>>> @@ -2198,7 +2198,7 @@ RELEASE_GCC49_IA32_CC_FLAGS =3D DEF(GCC4= 9_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 -Wn= o-unused-but-set-variable -Wno-unused-const-variable >>>>>>=20 >>>>>> @@ -2316,7 +2316,7 @@ RELEASE_GCC49_AARCH64_DLINK_XIPFLAGS =3D -z co= mmon-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) -flto -= Os >>>>>>=20 >>>>>> DEBUG_GCC5_IA32_DLINK_FLAGS =3D DEF(GCC5_IA32_X64_DLINK_FLAGS) = -flto -Os -Wl,-m,elf_i386,--oformat=3Delf32-i386 >>>>>>=20 >>>>>> @@ -2348,7 +2348,7 @@ RELEASE_GCC5_IA32_DLINK_FLAGS =3D DEF(GCC5_= IA32_X64_DLINK_FLAGS) -flto -Os -Wl, >>>>>> *_GCC5_X64_DLINK2_FLAGS =3D DEF(GCC5_X64_DLINK2_FLAGS) >>>>>>=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 -D= USING_LTO -Os >>>>>>=20 >>>>>> DEBUG_GCC5_X64_DLINK_FLAGS =3D DEF(GCC5_X64_DLINK_FLAGS) -flto= -Os >>>>>>=20 >>>>>> @@ -2589,7 +2589,7 @@ DEFINE CLANG38_ALL_CC_FLAGS =3D DEF(GC= C48_ALL_CC_FLAGS) DEF(CLANG38_WARNIN >>>>>> *_CLANG38_IA32_ASM_FLAGS =3D DEF(GCC5_ASM_FLAGS) -m32 -ma= rch=3Di386 DEF(CLANG38_IA32_TARGET) >>>>>>=20 >>>>>> *_CLANG38_IA32_RC_FLAGS =3D DEF(GCC_IA32_RC_FLAGS) >>>>>>=20 >>>>>> *_CLANG38_IA32_OBJCOPY_FLAGS =3D >>>>>>=20 >>>>>> -*_CLANG38_IA32_NASM_FLAGS =3D -f elf32 >>>>>>=20 >>>>>> +*_CLANG38_IA32_NASM_FLAGS =3D -f elf32 -DRODATA_SECTION_N= AME=3D.rodata >>>>>>=20 >>>>>> *_CLANG38_IA32_PP_FLAGS =3D DEF(GCC_PP_FLAGS) DEF(CLANG3= 8_IA32_TARGET) >>>>>>=20 >>>>>> *_CLANG38_IA32_ASLPP_FLAGS =3D DEF(GCC_ASLPP_FLAGS) DEF(CLA= NG38_IA32_TARGET) >>>>>>=20 >>>>>> *_CLANG38_IA32_VFRPP_FLAGS =3D DEF(GCC_VFRPP_FLAGS) DEF(CLA= NG38_IA32_TARGET) >>>>>>=20 >>>>>> @@ -2626,7 +2626,7 @@ NOOPT_CLANG38_IA32_DLINK2_FLAGS =3D DEF(GC= C5_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_SECTION_NA= ME=3D.rodata >>>>>>=20 >>>>>> *_CLANG38_X64_PP_FLAGS =3D DEF(GCC_PP_FLAGS) DEF(CLANG38= _X64_TARGET) >>>>>>=20 >>>>>> *_CLANG38_X64_ASLPP_FLAGS =3D DEF(GCC_ASLPP_FLAGS) DEF(CLAN= G38_X64_TARGET) >>>>>>=20 >>>>>> *_CLANG38_X64_VFRPP_FLAGS =3D DEF(GCC_VFRPP_FLAGS) DEF(CLAN= G38_X64_TARGET) >>>>>>=20 >>>>>> @@ -2777,7 +2777,7 @@ DEFINE CLANGPDB_ALL_CC_FLAGS =3D DEF(G= CC48_ALL_CC_FLAGS) DEF(CLANGPDB_WARN >>>>>> *_CLANGPDB_IA32_ASLCC_FLAGS =3D DEF(GCC_ASLCC_FLAGS) -m32 -= fno-lto DEF(CLANGPDB_IA32_TARGET) >>>>>>=20 >>>>>> *_CLANGPDB_IA32_ASM_FLAGS =3D DEF(GCC_ASM_FLAGS) -m32 -ma= rch=3Di386 DEF(CLANGPDB_IA32_TARGET) >>>>>>=20 >>>>>> *_CLANGPDB_IA32_OBJCOPY_FLAGS =3D >>>>>>=20 >>>>>> -*_CLANGPDB_IA32_NASM_FLAGS =3D -f win32 >>>>>>=20 >>>>>> +*_CLANGPDB_IA32_NASM_FLAGS =3D -f win32 -DRODATA_SECTION_= NAME=3D.rdata >>>>>>=20 >>>>>> *_CLANGPDB_IA32_PP_FLAGS =3D DEF(GCC_PP_FLAGS) DEF(CLANG= PDB_IA32_TARGET) >>>>>>=20 >>>>>> *_CLANGPDB_IA32_ASLPP_FLAGS =3D DEF(GCC_ASLPP_FLAGS) DEF(CL= ANGPDB_IA32_TARGET) >>>>>>=20 >>>>>> *_CLANGPDB_IA32_VFRPP_FLAGS =3D DEF(GCC_VFRPP_FLAGS) DEF(CL= ANGPDB_IA32_TARGET) >>>>>>=20 >>>>>> @@ -2811,7 +2811,7 @@ NOOPT_CLANGPDB_IA32_DLINK2_FLAGS =3D >>>>>> *_CLANGPDB_X64_ASLCC_FLAGS =3D DEF(GCC_ASLCC_FLAGS) -m64 -f= no-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_SECTION_N= AME=3D.rdata >>>>>>=20 >>>>>> *_CLANGPDB_X64_PP_FLAGS =3D DEF(GCC_PP_FLAGS) DEF(CLANGP= DB_X64_TARGET) >>>>>>=20 >>>>>> *_CLANGPDB_X64_ASLPP_FLAGS =3D DEF(GCC_ASLPP_FLAGS) DEF(CLA= NGPDB_X64_TARGET) >>>>>>=20 >>>>>> *_CLANGPDB_X64_VFRPP_FLAGS =3D DEF(GCC_VFRPP_FLAGS) DEF(CLA= NGPDB_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_SECTIO= N_NAME=3D.rodata >>>>>>=20 >>>>>> *_CLANGDWARF_IA32_PP_FLAGS =3D DEF(GCC_PP_FLAGS) DEF(CLA= NG38_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) -m64 D= EF(CLANG38_X64_TARGET) >>>>>>=20 >>>>>> *_CLANGDWARF_X64_RC_FLAGS =3D DEF(GCC_X64_RC_FLAGS) >>>>>>=20 >>>>>> *_CLANGDWARF_X64_OBJCOPY_FLAGS =3D >>>>>>=20 >>>>>> -*_CLANGDWARF_X64_NASM_FLAGS =3D -f elf64 >>>>>>=20 >>>>>> +*_CLANGDWARF_X64_NASM_FLAGS =3D -f elf64 -DRODATA_SECTION= _NAME=3D.rodata >>>>>>=20 >>>>>> *_CLANGDWARF_X64_PP_FLAGS =3D DEF(GCC_PP_FLAGS) DEF(CLAN= G38_X64_TARGET) >>>>>>=20 >>>>>> *_CLANGDWARF_X64_ASLPP_FLAGS =3D DEF(GCC_ASLPP_FLAGS) DEF(C= LANG38_X64_TARGET) >>>>>>=20 >>>>>> *_CLANGDWARF_X64_VFRPP_FLAGS =3D DEF(GCC_VFRPP_FLAGS) DEF(C= LANG38_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 >>>>>=20 >>>>> An EFI Mach-O file does not contain a .rodata section. A Mach-O conta= ins a __DATA segment that is broken up into sections. For a typical EFI ima= ge there are __const, __data, __bss sections in the __DATA segment [1]. >>>>=20 >>>> Yes, and ".rodata" is almost a synonym for "__DATA,__const", with a sm= all exception [1]. Maybe it'd be clearer if the macro was renamed to "NASM_= RODATA_SECTION_NAME", to indicate this is not just a "raw" name, but NASM g= ives it a semantic meaning? >>>>=20 >>>>>=20 >>>>> The mtoc [2] tool used to convert mach-O to PE/COFF converts the enti= re __DATA segment (__const, __data, and __bss) into the .data section. Thus= adding any kind of new data section is a no-op at best. >>>>=20 >>>> This is a part I missed, because I do not have an Xcode toolchain at h= and, so thanks for investigating. However this, in my opinion, is a flaw wi= th Mach-O/mtoc and not with my patch. It seems like the only difference bet= ween __TEXT,__const and __DATA,__const is whether the data is targeted by a= relocation or not. Such a concept does not exist for PE/COFF (and I think = not even for ELF, but I'm not too familiar with it), thus the logical PE/CO= FF section __DATA,__const should be merged into is .rdata (and .rdata may o= r may not be merged into .text in an earlier step, I assume transitivity). = I could change the macro definition to explicitly declare __TEXT,__const, b= ut that would still put the compiler-emitted data in the wrong section. Doe= s Xcode provide anything remotely similar to GNU linker scripts which we ca= n use to move the section? >>>>=20 >>>> Please also note that .rodata is used for Xcode-based toolchains alrea= dy (in fact, all toolchains, and this is the issue), I'm not regressing any= thing. I just expected it to work fine as-is. This patch mainly fixed PE/CO= FF-based toolchains, which get both .rdata from the compiler and .rodata wi= th RX permissions from NASM, because ".rodata" only has a semantic meaning = for ELF and Mach-O outputs, but not for PE/COFF. >>>>=20 >>>>>=20 >>>>> If you want something to be read only for Xcode/clang you are better = off putting it in the __TEXT section [3]. The __TEXT section is read only a= nd for X64 can not even contain relocations. >>>>=20 >>>> Well, this kind of is an issue. We would need to introduce an arbitrar= y constraint on the relocation part that holds only for Xcode-based toolcha= ins. Does the compiler emit an error when data in __TEXT,__const is targete= d by a relocation? >>>=20 >>> The Xcode linker emits a fatal error on X64 for a relocation in the __T= EXT section, everything needs to be RIP relative and the compiler does that= for free. We generally only run into this for hand coded assembler and the= fix is to use RIP relative addressing in the assembly. >>>=20 >>>> Also see above regarding compiler-emitted __DATA,__const. >>>>=20 >>>=20 >>> OK so the current nasm `SECTION .rodata`[1] gets mapped to __TEXT,__co= nst[2] for Xcode clang, and this is done by nasm (I dumped the object file)= . GenFw and mtoc only run on executables, also they tend to be conservative= as they need to keep the layout the same and the relative layout between s= ections the same, but in this case it is nasm placing the data in the text = section. >>>=20 >>> So what I=E2=80=99d like to see in the patch is to define RODATA_SECTIO= N_NAME to match what is actually happening. So for XCODE that would be `__T= EXT,__const` not `.rodata`. We should double check what is happening for EL= F on x86, ARM, RiskV, etc. and do the same thing. I assume all the tools th= at generate PE/COFF directly are good with .rodata? I think it is likely as= simple as dumping the EFL object file in objdump or gdb for the given tool= chain (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 capture t= hose in the new NASM_RODATA_SECTION_NAME. If some one is doing a security r= eview having NASM_RODATA_SECTION_NAME is going to imply that a .rodata sect= ion is being used by that specific toolchain, and I think that is much wors= e than the current =E2=80=9Cmagic=E2=80=9D behavior in nasm. We are much be= tter off explaining what is really happening, since it is not very obvious. >>>=20 >>> [1] https://github.com/tianocore/edk2/blob/master/UefiCpuPkg/Library/Ba= seUefiCpuLib/X64/InitializeFpu.nasm#L14 >>>=20 >>> [2] $otool -V -s __TEXT __constBuild/OvmfX64/DEBUG_XCODE5/X64/UefiCpuPk= g/Library/BaseUefiCpuLib/BaseUefiCpuLib/OUTPUT/X64/InitializeFpu.obj >>> Build//OvmfX64/DEBUG_XCODE5/X64/UefiCpuPkg/Library/BaseUefiCpuLib/BaseU= efiCpuLib/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/BaseUefiC= puLib/BaseUefiCpuLib/OUTPUT/X64/InitializeFpu.obj >>> Build/OvmfX64/DEBUG_XCODE5/X64/UefiCpuPkg/Library/BaseUefiCpuLib/BaseUe= fiCpuLib/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 standard n= ames 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 specified = explicitly." >>>> https://www.nasm.us/xdoc/2.13.01/html/nasmdoc7.html >>>>=20 >>>>>=20 >>>>> [1] otool -lh DxeCore.dll >>>>> ... >>>>> Load command 1 >>>>> cmd LC_SEGMENT_64 >>>>> cmdsize 312 >>>>> segname __DATA >>>>> vmaddr 0x000000000002b000 >>>>> vmsize 0x0000000000147000 >>>>> fileoff 180224 >>>>> filesize 8192 >>>>> maxprot 0x00000003 >>>>> initprot 0x00000003 >>>>> nsects 3 >>>>> flags 0x0 >>>>> Section >>>>> sectname __const >>>>> segname __DATA >>>>> addr 0x000000000002b000 >>>>> size 0x0000000000000718 >>>>> offset 180224 >>>>> align 2^4 (16) >>>>> reloff 0 >>>>> nreloc 0 >>>>> flags 0x00000000 >>>>> reserved1 0 >>>>> reserved2 0 >>>>> Section >>>>> sectname __data >>>>> segname __DATA >>>>> addr 0x000000000002b720 >>>>> size 0x00000000000014f0 >>>>> offset 182048 >>>>> align 2^4 (16) >>>>> reloff 0 >>>>> nreloc 0 >>>>> flags 0x00000000 >>>>> reserved1 0 >>>>> reserved2 0 >>>>> Section >>>>> sectname __bss >>>>> segname __DATA >>>>> addr 0x000000000002cc10 >>>>> size 0x0000000000144e11 >>>>> offset 0 >>>>> align 2^4 (16) >>>>> reloff 0 >>>>> nreloc 0 >>>>> flags 0x00000001 >>>>> reserved1 0 >>>>> reserved2 0 >>>>> =E2=80=A6 >>>>>=20 >>>>> [2] https://opensource.apple.com/source/cctools/cctools-698/efitools/= mtoc.c.auto.html >=20 >>>>>=20 >>>>> [3] otool more output=E2=80=A6 >>>>> Load command 0 >>>>> cmd LC_SEGMENT_64 >>>>> cmdsize 392 >>>>> segname __TEXT >>>>> vmaddr 0x0000000000000240 >>>>> vmsize 0x00000000000296c0 >>>>> fileoff 1184 >>>>> filesize 169664 >>>>> maxprot 0x00000005 >>>>> initprot 0x00000005 >>>>> nsects 4 >>>>> flags 0x0 >>>>> Section >>>>> sectname __text >>>>> segname __TEXT >>>>> addr 0x0000000000000240 >>>>> size 0x000000000002489f >>>>> offset 1184 >>>>> align 2^3 (8) >>>>> reloff 0 >>>>> nreloc 0 >>>>> flags 0x80000400 >>>>> reserved1 0 >>>>> reserved2 0 >>>>> Section >>>>> sectname __cstring >>>>> segname __TEXT >>>>> addr 0x0000000000024ae0 >>>>> size 0x000000000000496d >>>>> offset 150848 >>>>> align 2^4 (16) >>>>> reloff 0 >>>>> nreloc 0 >>>>> flags 0x00000002 >>>>> reserved1 0 >>>>> reserved2 0 >>>>> Section >>>>> sectname __ustring >>>>> segname __TEXT >>>>> addr 0x000000000002944e >>>>> size 0x0000000000000048 >>>>> offset 169646 >>>>> align 2^1 (2) >>>>> reloff 0 >>>>> nreloc 0 >>>>> flags 0x00000000 >>>>> reserved1 0 >>>>> reserved2 0 >>>>> Section >>>>> sectname __const >>>>> segname __TEXT >>>>> addr 0x00000000000294a0 >>>>> size 0x0000000000000448 >>>>> offset 169728 >>>>> align 2^4 (16) >>>>> reloff 0 >>>>> nreloc 0 >>>>> flags 0x00000000 >>>>> reserved1 0 >>>>> reserved2 0 >>>>>=20 >>>>> Thanks, >>>>>=20 >>>>> Andrew Fish >>>>>=20 >>>>>>=20 >>>>>>=20 >>>>>> DEBUG_XCODE5_IA32_CC_FLAGS =3D -arch i386 -c -g -Os -Wall = -Werror -include AutoGen.h -funsigned-char -fno-stack-protector -fno-builti= n -fshort-wchar -fasm-blocks -mdynamic-no-pic -mno-implicit-float -mms-bitf= ields -msoft-float -Wno-unused-parameter -Wno-missing-braces -Wno-missing-f= ield-initializers -Wno-tautological-compare -Wno-sign-compare -Wno-varargs = -ftrap-function=3Dundefined_behavior_has_been_optimized_away_by_clang $(PLA= TFORM_FLAGS) >>>>>>=20 >>>>>> @@ -3003,7 +3003,7 @@ RELEASE_XCODE5_X64_DLINK_FLAGS =3D -arch = x86_64 -u _$(IMAGE_ENTRY_POINT) -e _ >>>>>> DEBUG_XCODE5_X64_ASM_FLAGS =3D -arch x86_64 -g >>>>>>=20 >>>>>> NOOPT_XCODE5_X64_ASM_FLAGS =3D -arch x86_64 -g >>>>>>=20 >>>>>> RELEASE_XCODE5_X64_ASM_FLAGS =3D -arch x86_64 >>>>>>=20 >>>>>> - *_XCODE5_X64_NASM_FLAGS =3D -f macho64 >>>>>>=20 >>>>>> + *_XCODE5_X64_NASM_FLAGS =3D -f macho64 -DRODATA_SECTION_NAME= =3D.rodata >>>>>>=20 >>>>>> *_XCODE5_*_PP_FLAGS =3D -E -x assembler-with-cpp -include Au= toGen.h >>>>>>=20 >>>>>> *_XCODE5_*_VFRPP_FLAGS =3D -x c -E -P -DVFRCOMPILE -include $(M= ODULE_NAME)StrDefs.h >>>>>>=20 >>>>>>=20 >>>>>>=20 >>>>>> --=20 >>>>>> 2.31.1 >>>>>>=20 >>>>>>=20 >>>>>>=20 >>>>>>=20 >>>>>>=20 >>>>>>=20 >>>>>>=20 >>>>=20 >>>=20 >>=20 >=20 >=20 >=20 >=20 >=20 >=20