Acked-by: Jiewen Yao <jiewen....@intel.com> I hope GCC expert can review this and double confirm.
Thank you Yao Jiewen > -----Original Message----- > From: devel@edk2.groups.io <devel@edk2.groups.io> On Behalf Of Ard > Biesheuvel > Sent: Wednesday, June 10, 2020 4:18 PM > To: devel@edk2.groups.io > Cc: Ard Biesheuvel <ard.biesheu...@arm.com>; Kinney, Michael D > <michael.d.kin...@intel.com>; Gao, Liming <liming....@intel.com>; Yao, > Jiewen <jiewen....@intel.com>; Sami Mujawar <sami.muja...@arm.com>; > Ilias Apalodimas <ilias.apalodi...@linaro.org> > Subject: [edk2-devel] [PATCH 4/5] StandaloneMmPkg: generate position > independent code for StMM core > > The standalone MM core runs in a restricted environment that is set > up by a higher privilege level, and which may not allow memory regions > to be writable and executable at the same time. > > This means that making the StMM core self-relocatable requires that > all the targets of the relocation fixups are outside of the executable > region of the image, given that we cannot remap the executable code > writable from the executable code itself without losing those execute > permissions. > > So instead, use the existing toolchain support to ensure that position > independent code is used where possible, and that all the remaining > relocated quantities are emitted into the data section. (Note that > staticallly initialized const pointers will be emitted into the > .data.rel.ro section, which gets pulled into the .data section by > our linker script) > > To ensure that we don't pick up any absolute references in executable > code inadvertently (e.g., in assembler code), add the '-z text' linker > option which will force the build to fail in this case. > > Signed-off-by: Ard Biesheuvel <ard.biesheu...@arm.com> > --- > StandaloneMmPkg/Core/StandaloneMmCore.inf > | 4 ++++ > > StandaloneMmPkg/Library/StandaloneMmCoreEntryPoint/StandaloneMmCoreE > ntryPoint.inf | 3 +++ > 2 files changed, 7 insertions(+) > > diff --git a/StandaloneMmPkg/Core/StandaloneMmCore.inf > b/StandaloneMmPkg/Core/StandaloneMmCore.inf > index d17ff9965bdc..87bf6e9440a7 100644 > --- a/StandaloneMmPkg/Core/StandaloneMmCore.inf > +++ b/StandaloneMmPkg/Core/StandaloneMmCore.inf > @@ -75,3 +75,7 @@ [Guids] > gEfiEventLegacyBootGuid > > gEfiEventExitBootServicesGuid > > gEfiEventReadyToBootGuid > > + > > +[BuildOptions] > > + GCC:*_*_*_CC_FLAGS = -fpie > > + GCC:*_*_*_DLINK_FLAGS = -Wl,-z,text,-Bsymbolic,-pie > > diff --git > a/StandaloneMmPkg/Library/StandaloneMmCoreEntryPoint/StandaloneMmCor > eEntryPoint.inf > b/StandaloneMmPkg/Library/StandaloneMmCoreEntryPoint/StandaloneMmCor > eEntryPoint.inf > index 891c292e92f8..7d6ee4e08ecb 100644 > --- > a/StandaloneMmPkg/Library/StandaloneMmCoreEntryPoint/StandaloneMmCor > eEntryPoint.inf > +++ > b/StandaloneMmPkg/Library/StandaloneMmCoreEntryPoint/StandaloneMmCor > eEntryPoint.inf > @@ -48,3 +48,6 @@ [Guids] > gEfiMmPeiMmramMemoryReserveGuid > > gEfiStandaloneMmNonSecureBufferGuid > > gEfiArmTfCpuDriverEpDescriptorGuid > > + > > +[BuildOptions] > > + GCC:*_*_*_CC_FLAGS = -fpie > > -- > 2.26.2 > > > -=-=-=-=-=-= > Groups.io Links: You receive all messages sent to this group. > > View/Reply Online (#61042): https://edk2.groups.io/g/devel/message/61042 > Mute This Topic: https://groups.io/mt/74792291/1772286 > Group Owner: devel+ow...@edk2.groups.io > Unsubscribe: https://edk2.groups.io/g/devel/unsub [jiewen....@intel.com] > -=-=-=-=-=-= -=-=-=-=-=-=-=-=-=-=-=- Groups.io Links: You receive all messages sent to this group. View/Reply Online (#61242): https://edk2.groups.io/g/devel/message/61242 Mute This Topic: https://groups.io/mt/74792291/21656 Group Owner: devel+ow...@edk2.groups.io Unsubscribe: https://edk2.groups.io/g/devel/unsub [arch...@mail-archive.com] -=-=-=-=-=-=-=-=-=-=-=-