<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="Generator" content="Microsoft Word 15 (filtered medium)">
<style><!--
/* Font Definitions */
@font-face
        {font-family:"Cambria Math";
        panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
        {font-family:DengXian;
        panose-1:2 1 6 0 3 1 1 1 1 1;}
@font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}
@font-face
        {font-family:"\@DengXian";
        panose-1:2 1 6 0 3 1 1 1 1 1;}
/* Style Definitions */
p.MsoPlainText, li.MsoPlainText, div.MsoPlainText
        {mso-style-priority:99;
        mso-style-link:"Plain Text Char";
        margin:0in;
        font-size:11.0pt;
        font-family:"Calibri",sans-serif;}
span.PlainTextChar
        {mso-style-name:"Plain Text Char";
        mso-style-priority:99;
        mso-style-link:"Plain Text";
        font-family:"Calibri",sans-serif;}
.MsoChpDefault
        {mso-style-type:export-only;
        font-family:"Calibri",sans-serif;}
@page WordSection1
        {size:8.5in 11.0in;
        margin:1.0in 129.75pt 1.0in 129.7pt;}
div.WordSection1
        {page:WordSection1;}
--></style><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1" />
</o:shapelayout></xml><![endif]-->
</head>
<body lang="EN-US" link="#0563C1" vlink="#954F72" style="word-wrap:break-word">
<div class="WordSection1">
<p class="MsoPlainText">Hi Marvin,<o:p></o:p></p>
<p class="MsoPlainText">How about we limit the -fno-pie option only apply on IA32 and X64 like below?<o:p></o:p></p>
<p class="MsoPlainText"><o:p> </o:p></p>
<p class="MsoPlainText">diff --git a/StandaloneMmPkg/Core/StandaloneMmCore.inf b/StandaloneMmPkg/Core/StandaloneMmCore.inf<o:p></o:p></p>
<p class="MsoPlainText">[BuildOptions]<o:p></o:p></p>
<p class="MsoPlainText">   GCC:*_*_*_CC_FLAGS = -fpie<o:p></o:p></p>
<p class="MsoPlainText">   GCC:*_*_*_DLINK_FLAGS = -Wl,-z,text,-Bsymbolic,-pie<o:p></o:p></p>
<p class="MsoPlainText">+  CLANGPDB:*_*_ <b><span style="color:red">IA32</span></b>_CC_FLAGS= -fno-pie<o:p></o:p></p>
<p class="MsoPlainText">+  CLANGPDB:*_*_ <b><span style="color:red">X64</span></b>_CC_FLAGS= -fno-pie<o:p></o:p></p>
<p class="MsoPlainText"><o:p> </o:p></p>
<p class="MsoPlainText">diff --git a/StandaloneMmPkg/Library/StandaloneMmCoreEntryPoint/StandaloneMmCoreEntryPoint.inf b/StandaloneMmPkg/Library/StandaloneMmCoreEntryPoint/StandaloneMmCoreEntryPoint.inf<o:p></o:p></p>
<p class="MsoPlainText">[BuildOptions]<o:p></o:p></p>
<p class="MsoPlainText">   GCC:*_*_*_CC_FLAGS = -fpie<o:p></o:p></p>
<p class="MsoPlainText">+  CLANGPDB:*_*_ <b><span style="color:red">IA32</span></b>_CC_FLAGS= -fno-pie<o:p></o:p></p>
<p class="MsoPlainText">+  CLANGPDB:*_*_ <b><span style="color:red">X64</span></b>_CC_FLAGS= -fno-pie<o:p></o:p></p>
<p class="MsoPlainText"><o:p> </o:p></p>
<p class="MsoPlainText"><o:p> </o:p></p>
<p class="MsoPlainText">Thanks<o:p></o:p></p>
<p class="MsoPlainText">Steven Shi<o:p></o:p></p>
<p class="MsoPlainText"><o:p> </o:p></p>
<p class="MsoPlainText"><o:p> </o:p></p>
<p class="MsoPlainText">> -----Original Message-----</p>
<p class="MsoPlainText">> From: devel@edk2.groups.io <devel@edk2.groups.io> On Behalf Of Marvin</p>
<p class="MsoPlainText">> Häuser</p>
<p class="MsoPlainText">> Sent: Thursday, October 14, 2021 4:05 PM</p>
<p class="MsoPlainText">> To: Yang, JiyangX <jiyangx.yang@intel.com>; devel@edk2.groups.io</p>
<p class="MsoPlainText">> Cc: Ard Biesheuvel <ardb+tianocore@kernel.org>; Sami Mujawar</p>
<p class="MsoPlainText">> <sami.mujawar@arm.com>; Yao, Jiewen <jiewen.yao@intel.com>; Supreeth</p>
<p class="MsoPlainText">> Venkatesh <supreeth.venkatesh@arm.com>; Vitaly Cheptsov</p>
<p class="MsoPlainText">> <vit9696@protonmail.com>; Shi, Steven <steven.shi@intel.com></p>
<p class="MsoPlainText">> Subject: Re: [edk2-devel] [PATCH v1 1/1] StandaloneMmPkg: To support</p>
<p class="MsoPlainText">> CLANGPDB build</p>
<p class="MsoPlainText">> </p>
<p class="MsoPlainText">> Hey Jiyang,</p>
<p class="MsoPlainText">> </p>
<p class="MsoPlainText">> NO! Please do not. :)</p>
<p class="MsoPlainText">> Yes, this fixes build, but the AARCH64 core (I did not check ARM)</p>
<p class="MsoPlainText">> depends on self-relocation as it is loaded in-place at a location</p>
<p class="MsoPlainText">> unknown at compile-time. PIE helps ensure there are no relocations in</p>
<p class="MsoPlainText">> .text among other things. I know CLANGPDB does not support</p>
<p class="MsoPlainText">> ARM/AARCH64</p>
<p class="MsoPlainText">> yet, but if it is added, this may generate binaries with more dangerous</p>
<p class="MsoPlainText">> relocations, which means the chance of executing an instruction that</p>
<p class="MsoPlainText">> requires relocation without relocating first (relocation is done in C</p>
<p class="MsoPlainText">> code now!) is significantly higher. We do not need PIE for IA32 or X64</p>
<p class="MsoPlainText">> at all (or more specifically, we only need it for ARM-based</p>
<p class="MsoPlainText">> architectures as of now), so I prefer my patch which makes that</p>
<p class="MsoPlainText">> explicit. Though we can theoretically use your solution when limited to</p>
<p class="MsoPlainText">> non-ARM architectures if you really dislike my patch that much.</p>
<p class="MsoPlainText">> </p>
<p class="MsoPlainText">> I'd prefer to hear from the ARM core maintainers before making any move.</p>
<p class="MsoPlainText">> </p>
<p class="MsoPlainText">> Best regards,</p>
<p class="MsoPlainText">> Marvin</p>
<p class="MsoPlainText">> </p>
<p class="MsoPlainText">> On 14.10.21 05:12, Jiyang Yang wrote:</p>
<p class="MsoPlainText">> > the flag "-fpie" is passed for all builds with a GCC family toolchain,</p>
<p class="MsoPlainText">> > including CLANGPDB, but CLANGPDB does not support this flag, it will</p>
<p class="MsoPlainText">> > report "clang: error: unsupported option '-fpie' for target</p>
<p class="MsoPlainText">> > 'x86_64-unknown-windows-gnu'". So we add the CLANGPDB option "-fno-</p>
<p class="MsoPlainText">> pie"</p>
<p class="MsoPlainText">> > later to overwrite it.</p>
<p class="MsoPlainText">> ></p>
<p class="MsoPlainText">> > Cc: Ard Biesheuvel <<a href="mailto:ardb+tianocore@kernel.org"><span style="color:windowtext;text-decoration:none">ardb+tianocore@kernel.org</span></a>></p>
<p class="MsoPlainText">> > Cc: Sami Mujawar <<a href="mailto:sami.mujawar@arm.com"><span style="color:windowtext;text-decoration:none">sami.mujawar@arm.com</span></a>></p>
<p class="MsoPlainText">> > Cc: Jiewen Yao <<a href="mailto:jiewen.yao@intel.com"><span style="color:windowtext;text-decoration:none">jiewen.yao@intel.com</span></a>></p>
<p class="MsoPlainText">> > Cc: Supreeth Venkatesh <<a href="mailto:supreeth.venkatesh@arm.com"><span style="color:windowtext;text-decoration:none">supreeth.venkatesh@arm.com</span></a>></p>
<p class="MsoPlainText">> > Cc: Vitaly Cheptsov <<a href="mailto:vit9696@protonmail.com"><span style="color:windowtext;text-decoration:none">vit9696@protonmail.com</span></a>></p>
<p class="MsoPlainText">> > Cc: Marvin Häuser <<a href="mailto:mhaeuser@posteo.de"><span style="color:windowtext;text-decoration:none">mhaeuser@posteo.de</span></a>></p>
<p class="MsoPlainText">> > Cc: Steven Shi <<a href="mailto:steven.shi@intel.com"><span style="color:windowtext;text-decoration:none">steven.shi@intel.com</span></a>></p>
<p class="MsoPlainText">> > Signed-off-by: Jiyang Yang <<a href="mailto:jiyangx.yang@intel.com"><span style="color:windowtext;text-decoration:none">jiyangx.yang@intel.com</span></a>></p>
<p class="MsoPlainText">> > ---</p>
<p class="MsoPlainText">> >   StandaloneMmPkg/Core/StandaloneMmCore.inf                                         | 2</p>
<p class="MsoPlainText">> ++</p>
<p class="MsoPlainText">> ></p>
<p class="MsoPlainText">> StandaloneMmPkg/Library/StandaloneMmCoreEntryPoint/StandaloneMmC</p>
<p class="MsoPlainText">> oreEntryPoint.inf | 1 +</p>
<p class="MsoPlainText">> >   2 files changed, 3 insertions(+)</p>
<p class="MsoPlainText">> ></p>
<p class="MsoPlainText">> > diff --git a/StandaloneMmPkg/Core/StandaloneMmCore.inf</p>
<p class="MsoPlainText">> b/StandaloneMmPkg/Core/StandaloneMmCore.inf</p>
<p class="MsoPlainText">> > index 56042b7b39f4..3213142523f4 100644</p>
<p class="MsoPlainText">> > --- a/StandaloneMmPkg/Core/StandaloneMmCore.inf</p>
<p class="MsoPlainText">> > +++ b/StandaloneMmPkg/Core/StandaloneMmCore.inf</p>
<p class="MsoPlainText">> > @@ -79,3 +79,5 @@</p>
<p class="MsoPlainText">> >   [BuildOptions]</p>
<p class="MsoPlainText">> >     GCC:*_*_*_CC_FLAGS = -fpie</p>
<p class="MsoPlainText">> >     GCC:*_*_*_DLINK_FLAGS = -Wl,-z,text,-Bsymbolic,-pie</p>
<p class="MsoPlainText">> > +  CLANGPDB:*_*_*_CC_FLAGS = -fno-pie</p>
<p class="MsoPlainText">> > +  CLANGPDB:*_*_*_DLINK_FLAGS =</p>
<p class="MsoPlainText">> > diff --git</p>
<p class="MsoPlainText">> a/StandaloneMmPkg/Library/StandaloneMmCoreEntryPoint/StandaloneMm</p>
<p class="MsoPlainText">> CoreEntryPoint.inf</p>
<p class="MsoPlainText">> b/StandaloneMmPkg/Library/StandaloneMmCoreEntryPoint/StandaloneMm</p>
<p class="MsoPlainText">> CoreEntryPoint.inf</p>
<p class="MsoPlainText">> > index 1762586cfa02..ef69e07d2c07 100644</p>
<p class="MsoPlainText">> > ---</p>
<p class="MsoPlainText">> a/StandaloneMmPkg/Library/StandaloneMmCoreEntryPoint/StandaloneMm</p>
<p class="MsoPlainText">> CoreEntryPoint.inf</p>
<p class="MsoPlainText">> > +++</p>
<p class="MsoPlainText">> b/StandaloneMmPkg/Library/StandaloneMmCoreEntryPoint/StandaloneMm</p>
<p class="MsoPlainText">> CoreEntryPoint.inf</p>
<p class="MsoPlainText">> > @@ -56,3 +56,4 @@</p>
<p class="MsoPlainText">> ></p>
<p class="MsoPlainText">> >   [BuildOptions]</p>
<p class="MsoPlainText">> >     GCC:*_*_*_CC_FLAGS = -fpie</p>
<p class="MsoPlainText">> > +  CLANGPDB:*_*_*_CC_FLAGS = -fno-pie</p>
<p class="MsoPlainText">> </p>
<p class="MsoPlainText">> </p>
<p class="MsoPlainText">> </p>
<p class="MsoPlainText">> </p>
<p class="MsoPlainText">> </p>
<p class="MsoPlainText"><o:p> </o:p></p>
</div>
</body>
</html>


 <div width="1" style="color:white;clear:both">_._,_._,_</div> <hr>   Groups.io Links:<p>   You receive all messages sent to this group.    <p> <a target="_blank" href="https://edk2.groups.io/g/devel/message/82006">View/Reply Online (#82006)</a> |    |  <a target="_blank" href="https://groups.io/mt/86305054/1813853">Mute This Topic</a>  | <a href="https://edk2.groups.io/g/devel/post">New Topic</a><br>    <a href="https://edk2.groups.io/g/devel/editsub/1813853">Your Subscription</a> | <a href="mailto:devel+owner@edk2.groups.io">Contact Group Owner</a> |  <a href="https://edk2.groups.io/g/devel/unsub">Unsubscribe</a>  [edk2-devel-archive@redhat.com]<br> <div width="1" style="color:white;clear:both">_._,_._,_</div>