Re: [edk2] [PATCH] MdePkg/BaseStackCheckLib: add MSFT toolchain support
Mike, Since we're pending on the documentation of those APIs and it seems it won't be solved soon, I'd suggest to drop this feature from the coming release event. https://github.com/tianocore/tianocore.github.io/wiki/EDK-II-Release-Planning Regards, Jian > -Original Message- > From: Kinney, Michael D > Sent: Friday, October 19, 2018 7:17 AM > To: Wang, Jian J ; Gao, Liming ; > edk2-devel@lists.01.org; Kinney, Michael D > Cc: Yao, Jiewen ; Andrew Fish > Subject: RE: [edk2] [PATCH] MdePkg/BaseStackCheckLib: add MSFT toolchain > support > > Jian, > > I do not see a description of the parameters, return > values or required behavior for those APIs in the header > files. How do you know if they are implemented correctly? > > How would we write tests for these APIs? > > Mike > > > -Original Message- > > From: Wang, Jian J > > Sent: Wednesday, October 17, 2018 7:16 PM > > To: Kinney, Michael D ; Gao, > > Liming ; edk2-devel > boun...@lists.01.org>; edk2-devel@lists.01.org > > Cc: Yao, Jiewen ; Andrew Fish > > > > Subject: RE: [edk2] [PATCH] MdePkg/BaseStackCheckLib: add > > MSFT toolchain support > > > > Mike, > > > > All those functions are declared in source files in > > Visual Studio except to > > __GSHandlerCheck(). But I can't find there's online link > > or document to those files > > and APIs. Is it ok to just list the file names? > > > > VC\INCLUDE\vcruntime.h: > > __security_check_cookie > > __report_gsfailure > > > > VC\INCLUDE\rtcapi.h: > > _RTC_CheckEsp > > _RTC_CheckStackVars > > _RTC_Shutdown > > _RTC_InitBase > > > > VC\crt\src\vcruntime\gs_report.c > > __report_rangecheckfailure > > > > I built the lib with all supported VS toolchains and all > > passed, but only tested > > with VS2015. I think I need to do more tests. Thanks for > > pointing it out. > > > > Regards, > > Jian > > > > > > > -Original Message----- > > > From: Kinney, Michael D > > > Sent: Thursday, October 18, 2018 9:36 AM > > > To: Gao, Liming ; Wang, Jian J > > ; > > > edk2-devel ; edk2- > > de...@lists.01.org; > > > Kinney, Michael D > > > Cc: Yao, Jiewen ; Andrew Fish > > > > > Subject: RE: [edk2] [PATCH] MdePkg/BaseStackCheckLib: > > add MSFT toolchain > > > support > > > > > > Jian, > > > > > > Is there a link to the documentation for these new > > > functions? We should put the link in the file > > > headers. > > > > > > The link to docs should also be added to the BZ. > > > > > > Also, which VS compilers was this tested with? Are > > > different implementations required for different VS > > > compilers? > > > > > > Mike > > > > > > > -Original Message- > > > > From: Gao, Liming > > > > Sent: Wednesday, October 17, 2018 6:22 PM > > > > To: Wang, Jian J ; edk2-devel > > > > ; edk2- > > > > de...@lists.01.org > > > > Cc: Kinney, Michael D ; > > Yao, > > > > Jiewen ; Andrew Fish > > > > > > > > Subject: RE: [edk2] [PATCH] MdePkg/BaseStackCheckLib: > > add > > > > MSFT toolchain support > > > > > > > > Jian: > > > > The patch is good to me. Reviewed-by: Liming Gao > > > > > > > > > > > > Thanks > > > > Liming > > > > >-Original Message- > > > > >From: Wang, Jian J > > > > >Sent: Thursday, October 18, 2018 9:19 AM > > > > >To: edk2-devel ; > > edk2- > > > > de...@lists.01.org > > > > >Cc: Kinney, Michael D ; > > Yao, > > > > Jiewen > > > > >; Andrew Fish > > ; > > > > Gao, Liming > > > > > > > > > >Subject: RE: [edk2] [PATCH] > > MdePkg/BaseStackCheckLib: > > > > add MSFT toolchain > > > > >support > > > > > > > > > >Ping ... :) > > > > > > > > > >Regards, > > > > >Jian > > > > > > > > > > > > > > >> -Original Message- > > > > >> From: edk2-devel [mailto:edk2-devel- > > > > boun...@lists.01.org] > > > > >> Sent: Tuesday, October 16, 2018 8:59 AM > > > > >> To: edk2-devel ; > > &g
Re: [edk2] [PATCH] MdePkg/BaseStackCheckLib: add MSFT toolchain support
Mike, The code originate from Jiewen's work done years before. I think he validated related implementation. In addition, I also used following ways to verify those APIs: a. Use debugger to verify the parameters passed in is as expected. b. Disassemble the efi image to see if the calling convention is correct c. Update existing drivers (one for PEI and one for DXE) to overwrite local variable to see if it can catch the stack corruption. d. Write a driver which has local buffer overflow issue (write array variable cross boundary) and load it in shell I validated above with /GS, /RTCs and /GS + /RTCs separately. I think as long as we make sure the parameters are correct, we can decide how to implement them. Those APIs in VC's lib are meant for OS. We can't follow them with no changes for UEFI environment, right? Regards, Jian > -Original Message- > From: Kinney, Michael D > Sent: Friday, October 19, 2018 7:17 AM > To: Wang, Jian J ; Gao, Liming ; > edk2-devel@lists.01.org; Kinney, Michael D > Cc: Yao, Jiewen ; Andrew Fish > Subject: RE: [edk2] [PATCH] MdePkg/BaseStackCheckLib: add MSFT toolchain > support > > Jian, > > I do not see a description of the parameters, return > values or required behavior for those APIs in the header > files. How do you know if they are implemented correctly? > > How would we write tests for these APIs? > > Mike > > > -Original Message- > > From: Wang, Jian J > > Sent: Wednesday, October 17, 2018 7:16 PM > > To: Kinney, Michael D ; Gao, > > Liming ; edk2-devel > boun...@lists.01.org>; edk2-devel@lists.01.org > > Cc: Yao, Jiewen ; Andrew Fish > > > > Subject: RE: [edk2] [PATCH] MdePkg/BaseStackCheckLib: add > > MSFT toolchain support > > > > Mike, > > > > All those functions are declared in source files in > > Visual Studio except to > > __GSHandlerCheck(). But I can't find there's online link > > or document to those files > > and APIs. Is it ok to just list the file names? > > > > VC\INCLUDE\vcruntime.h: > > __security_check_cookie > > __report_gsfailure > > > > VC\INCLUDE\rtcapi.h: > > _RTC_CheckEsp > > _RTC_CheckStackVars > > _RTC_Shutdown > > _RTC_InitBase > > > > VC\crt\src\vcruntime\gs_report.c > > __report_rangecheckfailure > > > > I built the lib with all supported VS toolchains and all > > passed, but only tested > > with VS2015. I think I need to do more tests. Thanks for > > pointing it out. > > > > Regards, > > Jian > > > > > > > -Original Message----- > > > From: Kinney, Michael D > > > Sent: Thursday, October 18, 2018 9:36 AM > > > To: Gao, Liming ; Wang, Jian J > > ; > > > edk2-devel ; edk2- > > de...@lists.01.org; > > > Kinney, Michael D > > > Cc: Yao, Jiewen ; Andrew Fish > > > > > Subject: RE: [edk2] [PATCH] MdePkg/BaseStackCheckLib: > > add MSFT toolchain > > > support > > > > > > Jian, > > > > > > Is there a link to the documentation for these new > > > functions? We should put the link in the file > > > headers. > > > > > > The link to docs should also be added to the BZ. > > > > > > Also, which VS compilers was this tested with? Are > > > different implementations required for different VS > > > compilers? > > > > > > Mike > > > > > > > -Original Message- > > > > From: Gao, Liming > > > > Sent: Wednesday, October 17, 2018 6:22 PM > > > > To: Wang, Jian J ; edk2-devel > > > > ; edk2- > > > > de...@lists.01.org > > > > Cc: Kinney, Michael D ; > > Yao, > > > > Jiewen ; Andrew Fish > > > > > > > > Subject: RE: [edk2] [PATCH] MdePkg/BaseStackCheckLib: > > add > > > > MSFT toolchain support > > > > > > > > Jian: > > > > The patch is good to me. Reviewed-by: Liming Gao > > > > > > > > > > > > Thanks > > > > Liming > > > > >-Original Message- > > > > >From: Wang, Jian J > > > > >Sent: Thursday, October 18, 2018 9:19 AM > > > > >To: edk2-devel ; > > edk2- > > > > de...@lists.01.org > > > > >Cc: Kinney, Michael D ; > > Yao, > > > > Jiewen > > > > >; Andrew Fish > > ; > > > > Gao, Liming > > > > > > > > > >Subject: RE: [edk2] [PATCH
Re: [edk2] [PATCH] MdePkg/BaseStackCheckLib: add MSFT toolchain support
Jian, Please add the list of VSxxx tool chain tags you tested with in the commit message. Mike > -Original Message- > From: Wang, Jian J > Sent: Wednesday, October 17, 2018 11:36 PM > To: Kinney, Michael D ; Gao, > Liming ; edk2-devel boun...@lists.01.org>; edk2-devel@lists.01.org > Cc: Yao, Jiewen ; Andrew Fish > > Subject: RE: [edk2] [PATCH] MdePkg/BaseStackCheckLib: add > MSFT toolchain support > > Mike, > > I tested the lib with all supported MSFT toolchains. No > difference found so far. > > Regards, > Jian > > > > -Original Message- > > From: Kinney, Michael D > > Sent: Thursday, October 18, 2018 9:36 AM > > To: Gao, Liming ; Wang, Jian J > ; > > edk2-devel ; edk2- > de...@lists.01.org; > > Kinney, Michael D > > Cc: Yao, Jiewen ; Andrew Fish > > > Subject: RE: [edk2] [PATCH] MdePkg/BaseStackCheckLib: > add MSFT toolchain > > support > > > > Jian, > > > > Is there a link to the documentation for these new > > functions? We should put the link in the file > > headers. > > > > The link to docs should also be added to the BZ. > > > > Also, which VS compilers was this tested with? Are > > different implementations required for different VS > > compilers? > > > > Mike > > > > > -Original Message- > > > From: Gao, Liming > > > Sent: Wednesday, October 17, 2018 6:22 PM > > > To: Wang, Jian J ; edk2-devel > > > ; edk2- > > > de...@lists.01.org > > > Cc: Kinney, Michael D ; > Yao, > > > Jiewen ; Andrew Fish > > > > > > Subject: RE: [edk2] [PATCH] MdePkg/BaseStackCheckLib: > add > > > MSFT toolchain support > > > > > > Jian: > > > The patch is good to me. Reviewed-by: Liming Gao > > > > > > > > > Thanks > > > Liming > > > >-Original Message- > > > >From: Wang, Jian J > > > >Sent: Thursday, October 18, 2018 9:19 AM > > > >To: edk2-devel ; > edk2- > > > de...@lists.01.org > > > >Cc: Kinney, Michael D ; > Yao, > > > Jiewen > > > >; Andrew Fish > ; > > > Gao, Liming > > > > > > > >Subject: RE: [edk2] [PATCH] > MdePkg/BaseStackCheckLib: > > > add MSFT toolchain > > > >support > > > > > > > >Ping ... :) > > > > > > > >Regards, > > > >Jian > > > > > > > > > > > >> -Original Message- > > > >> From: edk2-devel [mailto:edk2-devel- > > > boun...@lists.01.org] > > > >> Sent: Tuesday, October 16, 2018 8:59 AM > > > >> To: edk2-devel ; > > > edk2- > > > >de...@lists.01.org > > > >> Cc: Kinney, Michael D > ; > > > Yao, Jiewen > > > >> ; Andrew Fish > ; > > > Gao, Liming > > > >> > > > >> Subject: Re: [edk2] [PATCH] > MdePkg/BaseStackCheckLib: > > > add MSFT > > > >toolchain > > > >> support > > > >> > > > >> REF: > > > https://bugzilla.tianocore.org/show_bug.cgi?id=1239 > > > >> > > > >> Regards, > > > >> Jian > > > >> > > > >> > > > >> > -Original Message- > > > >> > From: edk2-devel [mailto:edk2-devel- > > > boun...@lists.01.org] > > > >> > Sent: Tuesday, October 16, 2018 8:55 AM > > > >> > To: edk2-devel@lists.01.org > > > >> > Cc: Kinney, Michael D > ; > > > Yao, Jiewen > > > >> > ; Andrew Fish > > > ; Gao, Liming > > > >> > > > > >> > Subject: [edk2] [PATCH] > MdePkg/BaseStackCheckLib: > > > add MSFT toolchain > > > >> > support > > > >> > > > > >> > This patch adds stack check support for MSFT > > > toolchain, with > > > >> > compiler option /GS and /RTCs. This > functionality is > > > similar > > > >> > to the original ones supported by GCC toolchain. > > > >> > > > > >> > Usage example: > > > >> > This is a NULL library instance. Add it under a > > > [LibraryClasses] > > > >> > section in dsc file to let it be built into all > > > modules employed > > > >> > in a platform. > > > >> > > > > >
Re: [edk2] [PATCH] MdePkg/BaseStackCheckLib: add MSFT toolchain support
Jian, I do not see a description of the parameters, return values or required behavior for those APIs in the header files. How do you know if they are implemented correctly? How would we write tests for these APIs? Mike > -Original Message- > From: Wang, Jian J > Sent: Wednesday, October 17, 2018 7:16 PM > To: Kinney, Michael D ; Gao, > Liming ; edk2-devel boun...@lists.01.org>; edk2-devel@lists.01.org > Cc: Yao, Jiewen ; Andrew Fish > > Subject: RE: [edk2] [PATCH] MdePkg/BaseStackCheckLib: add > MSFT toolchain support > > Mike, > > All those functions are declared in source files in > Visual Studio except to > __GSHandlerCheck(). But I can't find there's online link > or document to those files > and APIs. Is it ok to just list the file names? > > VC\INCLUDE\vcruntime.h: > __security_check_cookie > __report_gsfailure > > VC\INCLUDE\rtcapi.h: > _RTC_CheckEsp > _RTC_CheckStackVars > _RTC_Shutdown > _RTC_InitBase > > VC\crt\src\vcruntime\gs_report.c > __report_rangecheckfailure > > I built the lib with all supported VS toolchains and all > passed, but only tested > with VS2015. I think I need to do more tests. Thanks for > pointing it out. > > Regards, > Jian > > > > -Original Message- > > From: Kinney, Michael D > > Sent: Thursday, October 18, 2018 9:36 AM > > To: Gao, Liming ; Wang, Jian J > ; > > edk2-devel ; edk2- > de...@lists.01.org; > > Kinney, Michael D > > Cc: Yao, Jiewen ; Andrew Fish > > > Subject: RE: [edk2] [PATCH] MdePkg/BaseStackCheckLib: > add MSFT toolchain > > support > > > > Jian, > > > > Is there a link to the documentation for these new > > functions? We should put the link in the file > > headers. > > > > The link to docs should also be added to the BZ. > > > > Also, which VS compilers was this tested with? Are > > different implementations required for different VS > > compilers? > > > > Mike > > > > > -Original Message- > > > From: Gao, Liming > > > Sent: Wednesday, October 17, 2018 6:22 PM > > > To: Wang, Jian J ; edk2-devel > > > ; edk2- > > > de...@lists.01.org > > > Cc: Kinney, Michael D ; > Yao, > > > Jiewen ; Andrew Fish > > > > > > Subject: RE: [edk2] [PATCH] MdePkg/BaseStackCheckLib: > add > > > MSFT toolchain support > > > > > > Jian: > > > The patch is good to me. Reviewed-by: Liming Gao > > > > > > > > > Thanks > > > Liming > > > >-Original Message- > > > >From: Wang, Jian J > > > >Sent: Thursday, October 18, 2018 9:19 AM > > > >To: edk2-devel ; > edk2- > > > de...@lists.01.org > > > >Cc: Kinney, Michael D ; > Yao, > > > Jiewen > > > >; Andrew Fish > ; > > > Gao, Liming > > > > > > > >Subject: RE: [edk2] [PATCH] > MdePkg/BaseStackCheckLib: > > > add MSFT toolchain > > > >support > > > > > > > >Ping ... :) > > > > > > > >Regards, > > > >Jian > > > > > > > > > > > >> -Original Message- > > > >> From: edk2-devel [mailto:edk2-devel- > > > boun...@lists.01.org] > > > >> Sent: Tuesday, October 16, 2018 8:59 AM > > > >> To: edk2-devel ; > > > edk2- > > > >de...@lists.01.org > > > >> Cc: Kinney, Michael D > ; > > > Yao, Jiewen > > > >> ; Andrew Fish > ; > > > Gao, Liming > > > >> > > > >> Subject: Re: [edk2] [PATCH] > MdePkg/BaseStackCheckLib: > > > add MSFT > > > >toolchain > > > >> support > > > >> > > > >> REF: > > > https://bugzilla.tianocore.org/show_bug.cgi?id=1239 > > > >> > > > >> Regards, > > > >> Jian > > > >> > > > >> > > > >> > -Original Message- > > > >> > From: edk2-devel [mailto:edk2-devel- > > > boun...@lists.01.org] > > > >> > Sent: Tuesday, October 16, 2018 8:55 AM > > > >> > To: edk2-devel@lists.01.org > > > >> > Cc: Kinney, Michael D > ; > > > Yao, Jiewen > > > >> > ; Andrew Fish > > > ; Gao, Liming > > > >> > > > > >> > Subject: [edk2] [PATCH] > MdePkg/BaseStackCheckLib: > > >
Re: [edk2] [PATCH] MdePkg/BaseStackCheckLib: add MSFT toolchain support
Mike, I tested the lib with all supported MSFT toolchains. No difference found so far. Regards, Jian > -Original Message- > From: Kinney, Michael D > Sent: Thursday, October 18, 2018 9:36 AM > To: Gao, Liming ; Wang, Jian J ; > edk2-devel ; edk2-devel@lists.01.org; > Kinney, Michael D > Cc: Yao, Jiewen ; Andrew Fish > Subject: RE: [edk2] [PATCH] MdePkg/BaseStackCheckLib: add MSFT toolchain > support > > Jian, > > Is there a link to the documentation for these new > functions? We should put the link in the file > headers. > > The link to docs should also be added to the BZ. > > Also, which VS compilers was this tested with? Are > different implementations required for different VS > compilers? > > Mike > > > -Original Message- > > From: Gao, Liming > > Sent: Wednesday, October 17, 2018 6:22 PM > > To: Wang, Jian J ; edk2-devel > > ; edk2- > > de...@lists.01.org > > Cc: Kinney, Michael D ; Yao, > > Jiewen ; Andrew Fish > > > > Subject: RE: [edk2] [PATCH] MdePkg/BaseStackCheckLib: add > > MSFT toolchain support > > > > Jian: > > The patch is good to me. Reviewed-by: Liming Gao > > > > > > Thanks > > Liming > > >-Original Message- > > >From: Wang, Jian J > > >Sent: Thursday, October 18, 2018 9:19 AM > > >To: edk2-devel ; edk2- > > de...@lists.01.org > > >Cc: Kinney, Michael D ; Yao, > > Jiewen > > >; Andrew Fish ; > > Gao, Liming > > > > > >Subject: RE: [edk2] [PATCH] MdePkg/BaseStackCheckLib: > > add MSFT toolchain > > >support > > > > > >Ping ... :) > > > > > >Regards, > > >Jian > > > > > > > > >> -----Original Message----- > > >> From: edk2-devel [mailto:edk2-devel- > > boun...@lists.01.org] > > >> Sent: Tuesday, October 16, 2018 8:59 AM > > >> To: edk2-devel ; > > edk2- > > >de...@lists.01.org > > >> Cc: Kinney, Michael D ; > > Yao, Jiewen > > >> ; Andrew Fish ; > > Gao, Liming > > >> > > >> Subject: Re: [edk2] [PATCH] MdePkg/BaseStackCheckLib: > > add MSFT > > >toolchain > > >> support > > >> > > >> REF: > > https://bugzilla.tianocore.org/show_bug.cgi?id=1239 > > >> > > >> Regards, > > >> Jian > > >> > > >> > > >> > -Original Message- > > >> > From: edk2-devel [mailto:edk2-devel- > > boun...@lists.01.org] > > >> > Sent: Tuesday, October 16, 2018 8:55 AM > > >> > To: edk2-devel@lists.01.org > > >> > Cc: Kinney, Michael D ; > > Yao, Jiewen > > >> > ; Andrew Fish > > ; Gao, Liming > > >> > > > >> > Subject: [edk2] [PATCH] MdePkg/BaseStackCheckLib: > > add MSFT toolchain > > >> > support > > >> > > > >> > This patch adds stack check support for MSFT > > toolchain, with > > >> > compiler option /GS and /RTCs. This functionality is > > similar > > >> > to the original ones supported by GCC toolchain. > > >> > > > >> > Usage example: > > >> > This is a NULL library instance. Add it under a > > [LibraryClasses] > > >> > section in dsc file to let it be built into all > > modules employed > > >> > in a platform. > > >> > > > >> > [LibraryClasses] > > >> > > > NULL|MdePkg/Library/BaseStackCheckLib/BaseStackCheckLib.i > > nf > > >> > > > >> > Please note all not modules can be built against > > this library. Most > > >> > of them are SEC type of modules, such as > > >> > > > >> > OvmfPkg/ResetVector/ResetVector.inf > > >> > > > >> > In this case, this library should not be added to a > > common > > >> > [LibraryClasses] section but to specific ones, like > > >> > [LibraryClasses.common.PEI_CORE/PEIM/...]. > > >> > > > >> > In addition, /GS and/or /RTCs should be added to > > compiler command line. > > >> > This can be done by adding something like below > > under [BuildOptions] > > >> > section in dsc file. > > >> > > > >> > [BuildOptions] > > >> > MSFT:DEBUG_*_*_CC_FLAGS = /GS /GL- > > >> > MSFT:DEBUG_*_*_CC_
Re: [edk2] [PATCH] MdePkg/BaseStackCheckLib: add MSFT toolchain support
Mike, All those functions are declared in source files in Visual Studio except to __GSHandlerCheck(). But I can't find there's online link or document to those files and APIs. Is it ok to just list the file names? VC\INCLUDE\vcruntime.h: __security_check_cookie __report_gsfailure VC\INCLUDE\rtcapi.h: _RTC_CheckEsp _RTC_CheckStackVars _RTC_Shutdown _RTC_InitBase VC\crt\src\vcruntime\gs_report.c __report_rangecheckfailure I built the lib with all supported VS toolchains and all passed, but only tested with VS2015. I think I need to do more tests. Thanks for pointing it out. Regards, Jian > -Original Message- > From: Kinney, Michael D > Sent: Thursday, October 18, 2018 9:36 AM > To: Gao, Liming ; Wang, Jian J ; > edk2-devel ; edk2-devel@lists.01.org; > Kinney, Michael D > Cc: Yao, Jiewen ; Andrew Fish > Subject: RE: [edk2] [PATCH] MdePkg/BaseStackCheckLib: add MSFT toolchain > support > > Jian, > > Is there a link to the documentation for these new > functions? We should put the link in the file > headers. > > The link to docs should also be added to the BZ. > > Also, which VS compilers was this tested with? Are > different implementations required for different VS > compilers? > > Mike > > > -Original Message- > > From: Gao, Liming > > Sent: Wednesday, October 17, 2018 6:22 PM > > To: Wang, Jian J ; edk2-devel > > ; edk2- > > de...@lists.01.org > > Cc: Kinney, Michael D ; Yao, > > Jiewen ; Andrew Fish > > > > Subject: RE: [edk2] [PATCH] MdePkg/BaseStackCheckLib: add > > MSFT toolchain support > > > > Jian: > > The patch is good to me. Reviewed-by: Liming Gao > > > > > > Thanks > > Liming > > >-Original Message- > > >From: Wang, Jian J > > >Sent: Thursday, October 18, 2018 9:19 AM > > >To: edk2-devel ; edk2- > > de...@lists.01.org > > >Cc: Kinney, Michael D ; Yao, > > Jiewen > > >; Andrew Fish ; > > Gao, Liming > > > > > >Subject: RE: [edk2] [PATCH] MdePkg/BaseStackCheckLib: > > add MSFT toolchain > > >support > > > > > >Ping ... :) > > > > > >Regards, > > >Jian > > > > > > > > >> -----Original Message----- > > >> From: edk2-devel [mailto:edk2-devel- > > boun...@lists.01.org] > > >> Sent: Tuesday, October 16, 2018 8:59 AM > > >> To: edk2-devel ; > > edk2- > > >de...@lists.01.org > > >> Cc: Kinney, Michael D ; > > Yao, Jiewen > > >> ; Andrew Fish ; > > Gao, Liming > > >> > > >> Subject: Re: [edk2] [PATCH] MdePkg/BaseStackCheckLib: > > add MSFT > > >toolchain > > >> support > > >> > > >> REF: > > https://bugzilla.tianocore.org/show_bug.cgi?id=1239 > > >> > > >> Regards, > > >> Jian > > >> > > >> > > >> > -Original Message- > > >> > From: edk2-devel [mailto:edk2-devel- > > boun...@lists.01.org] > > >> > Sent: Tuesday, October 16, 2018 8:55 AM > > >> > To: edk2-devel@lists.01.org > > >> > Cc: Kinney, Michael D ; > > Yao, Jiewen > > >> > ; Andrew Fish > > ; Gao, Liming > > >> > > > >> > Subject: [edk2] [PATCH] MdePkg/BaseStackCheckLib: > > add MSFT toolchain > > >> > support > > >> > > > >> > This patch adds stack check support for MSFT > > toolchain, with > > >> > compiler option /GS and /RTCs. This functionality is > > similar > > >> > to the original ones supported by GCC toolchain. > > >> > > > >> > Usage example: > > >> > This is a NULL library instance. Add it under a > > [LibraryClasses] > > >> > section in dsc file to let it be built into all > > modules employed > > >> > in a platform. > > >> > > > >> > [LibraryClasses] > > >> > > > NULL|MdePkg/Library/BaseStackCheckLib/BaseStackCheckLib.i > > nf > > >> > > > >> > Please note all not modules can be built against > > this library. Most > > >> > of them are SEC type of modules, such as > > >> > > > >> > OvmfPkg/ResetVector/ResetVector.inf > > >> > > > >> > In this case, this library should not be added to a > > common > > >> > [LibraryClasses] section but to specific ones, like &g
Re: [edk2] [PATCH] MdePkg/BaseStackCheckLib: add MSFT toolchain support
Jian, Is there a link to the documentation for these new functions? We should put the link in the file headers. The link to docs should also be added to the BZ. Also, which VS compilers was this tested with? Are different implementations required for different VS compilers? Mike > -Original Message- > From: Gao, Liming > Sent: Wednesday, October 17, 2018 6:22 PM > To: Wang, Jian J ; edk2-devel > ; edk2- > de...@lists.01.org > Cc: Kinney, Michael D ; Yao, > Jiewen ; Andrew Fish > > Subject: RE: [edk2] [PATCH] MdePkg/BaseStackCheckLib: add > MSFT toolchain support > > Jian: > The patch is good to me. Reviewed-by: Liming Gao > > > Thanks > Liming > >-Original Message- > >From: Wang, Jian J > >Sent: Thursday, October 18, 2018 9:19 AM > >To: edk2-devel ; edk2- > de...@lists.01.org > >Cc: Kinney, Michael D ; Yao, > Jiewen > >; Andrew Fish ; > Gao, Liming > > > >Subject: RE: [edk2] [PATCH] MdePkg/BaseStackCheckLib: > add MSFT toolchain > >support > > > >Ping ... :) > > > >Regards, > >Jian > > > > > >> -Original Message- > >> From: edk2-devel [mailto:edk2-devel- > boun...@lists.01.org] > >> Sent: Tuesday, October 16, 2018 8:59 AM > >> To: edk2-devel ; > edk2- > >de...@lists.01.org > >> Cc: Kinney, Michael D ; > Yao, Jiewen > >> ; Andrew Fish ; > Gao, Liming > >> > >> Subject: Re: [edk2] [PATCH] MdePkg/BaseStackCheckLib: > add MSFT > >toolchain > >> support > >> > >> REF: > https://bugzilla.tianocore.org/show_bug.cgi?id=1239 > >> > >> Regards, > >> Jian > >> > >> > >> > -Original Message- > >> > From: edk2-devel [mailto:edk2-devel- > boun...@lists.01.org] > >> > Sent: Tuesday, October 16, 2018 8:55 AM > >> > To: edk2-devel@lists.01.org > >> > Cc: Kinney, Michael D ; > Yao, Jiewen > >> > ; Andrew Fish > ; Gao, Liming > >> > > >> > Subject: [edk2] [PATCH] MdePkg/BaseStackCheckLib: > add MSFT toolchain > >> > support > >> > > >> > This patch adds stack check support for MSFT > toolchain, with > >> > compiler option /GS and /RTCs. This functionality is > similar > >> > to the original ones supported by GCC toolchain. > >> > > >> > Usage example: > >> > This is a NULL library instance. Add it under a > [LibraryClasses] > >> > section in dsc file to let it be built into all > modules employed > >> > in a platform. > >> > > >> > [LibraryClasses] > >> > > NULL|MdePkg/Library/BaseStackCheckLib/BaseStackCheckLib.i > nf > >> > > >> > Please note all not modules can be built against > this library. Most > >> > of them are SEC type of modules, such as > >> > > >> > OvmfPkg/ResetVector/ResetVector.inf > >> > > >> > In this case, this library should not be added to a > common > >> > [LibraryClasses] section but to specific ones, like > >> > [LibraryClasses.common.PEI_CORE/PEIM/...]. > >> > > >> > In addition, /GS and/or /RTCs should be added to > compiler command line. > >> > This can be done by adding something like below > under [BuildOptions] > >> > section in dsc file. > >> > > >> > [BuildOptions] > >> > MSFT:DEBUG_*_*_CC_FLAGS = /GS /GL- > >> > MSFT:DEBUG_*_*_CC_FLAGS = /RTCs /Od > >> > > >> > Note: /GL- is required for /GS, and /Od is required > for /RTCs. > >> > Note: The flash layout might be needed to update to > accommodate larger > >> > image size due to /Od is enforced. > >> > > >> > Pass tests: > >> > a. Overwrite a local buffer variable (in a 32-bit > and 64-bit driver)and > >> >check if it's caught by new code (on both real > platform and virtual > >> >platform) > >> > b. Boot Windows 10 and Ubuntu 18.04 on real platform > with this > >> >lib built-in > >> > > >> > Cc: Michael D Kinney > >> > Cc: Liming Gao > >> > Cc: Jiewen Yao > >> > Cc: Andrew Fish > >> > Contributed-under: TianoCore Contribution Agreement > 1.1 > >> > Signed-off-by: Jian J Wang > >> > --- > >> > .../BaseStackCheckLib/BaseStackCheckLib.inf > | 11 +- > >> > ...
Re: [edk2] [PATCH] MdePkg/BaseStackCheckLib: add MSFT toolchain support
Jian: The patch is good to me. Reviewed-by: Liming Gao Thanks Liming >-Original Message- >From: Wang, Jian J >Sent: Thursday, October 18, 2018 9:19 AM >To: edk2-devel ; edk2-devel@lists.01.org >Cc: Kinney, Michael D ; Yao, Jiewen >; Andrew Fish ; Gao, Liming > >Subject: RE: [edk2] [PATCH] MdePkg/BaseStackCheckLib: add MSFT toolchain >support > >Ping ... :) > >Regards, >Jian > > >> -Original Message- >> From: edk2-devel [mailto:edk2-devel-boun...@lists.01.org] >> Sent: Tuesday, October 16, 2018 8:59 AM >> To: edk2-devel ; edk2- >de...@lists.01.org >> Cc: Kinney, Michael D ; Yao, Jiewen >> ; Andrew Fish ; Gao, Liming >> >> Subject: Re: [edk2] [PATCH] MdePkg/BaseStackCheckLib: add MSFT >toolchain >> support >> >> REF: https://bugzilla.tianocore.org/show_bug.cgi?id=1239 >> >> Regards, >> Jian >> >> >> > -Original Message- >> > From: edk2-devel [mailto:edk2-devel-boun...@lists.01.org] >> > Sent: Tuesday, October 16, 2018 8:55 AM >> > To: edk2-devel@lists.01.org >> > Cc: Kinney, Michael D ; Yao, Jiewen >> > ; Andrew Fish ; Gao, Liming >> > >> > Subject: [edk2] [PATCH] MdePkg/BaseStackCheckLib: add MSFT toolchain >> > support >> > >> > This patch adds stack check support for MSFT toolchain, with >> > compiler option /GS and /RTCs. This functionality is similar >> > to the original ones supported by GCC toolchain. >> > >> > Usage example: >> > This is a NULL library instance. Add it under a [LibraryClasses] >> > section in dsc file to let it be built into all modules employed >> > in a platform. >> > >> > [LibraryClasses] >> > NULL|MdePkg/Library/BaseStackCheckLib/BaseStackCheckLib.inf >> > >> > Please note all not modules can be built against this library. Most >> > of them are SEC type of modules, such as >> > >> > OvmfPkg/ResetVector/ResetVector.inf >> > >> > In this case, this library should not be added to a common >> > [LibraryClasses] section but to specific ones, like >> > [LibraryClasses.common.PEI_CORE/PEIM/...]. >> > >> > In addition, /GS and/or /RTCs should be added to compiler command line. >> > This can be done by adding something like below under [BuildOptions] >> > section in dsc file. >> > >> > [BuildOptions] >> > MSFT:DEBUG_*_*_CC_FLAGS = /GS /GL- >> > MSFT:DEBUG_*_*_CC_FLAGS = /RTCs /Od >> > >> > Note: /GL- is required for /GS, and /Od is required for /RTCs. >> > Note: The flash layout might be needed to update to accommodate larger >> > image size due to /Od is enforced. >> > >> > Pass tests: >> > a. Overwrite a local buffer variable (in a 32-bit and 64-bit driver)and >> >check if it's caught by new code (on both real platform and virtual >> >platform) >> > b. Boot Windows 10 and Ubuntu 18.04 on real platform with this >> >lib built-in >> > >> > Cc: Michael D Kinney >> > Cc: Liming Gao >> > Cc: Jiewen Yao >> > Cc: Andrew Fish >> > Contributed-under: TianoCore Contribution Agreement 1.1 >> > Signed-off-by: Jian J Wang >> > --- >> > .../BaseStackCheckLib/BaseStackCheckLib.inf| 11 +- >> > .../Library/BaseStackCheckLib/BaseStackCheckMsft.c | 221 >> > + >> > .../Library/BaseStackCheckLib/BaseStackCheckNull.c | 15 -- >> > .../BaseStackCheckLib/Ia32/StackCheckStubAsm.nasm | 76 +++ >> > .../BaseStackCheckLib/X64/StackCheckStubAsm.nasm | 54 + >> > 5 files changed, 360 insertions(+), 17 deletions(-) >> > create mode 100644 >> > MdePkg/Library/BaseStackCheckLib/BaseStackCheckMsft.c >> > delete mode 100644 >> MdePkg/Library/BaseStackCheckLib/BaseStackCheckNull.c >> > create mode 100644 >> > MdePkg/Library/BaseStackCheckLib/Ia32/StackCheckStubAsm.nasm >> > create mode 100644 >> > MdePkg/Library/BaseStackCheckLib/X64/StackCheckStubAsm.nasm >> > >> > diff --git a/MdePkg/Library/BaseStackCheckLib/BaseStackCheckLib.inf >> > b/MdePkg/Library/BaseStackCheckLib/BaseStackCheckLib.inf >> > index e280651b11..1c9e6710c6 100644 >> > --- a/MdePkg/Library/BaseStackCheckLib/BaseStackCheckLib.inf >> > +++ b/MdePkg/Library/BaseStackCheckLib/BaseStackCheckLib.inf >> > @@ -4,6 +4,7 @@ >> > # Stack Check Library >> > # >&g
Re: [edk2] [PATCH] MdePkg/BaseStackCheckLib: add MSFT toolchain support
Ping ... :) Regards, Jian > -Original Message- > From: edk2-devel [mailto:edk2-devel-boun...@lists.01.org] > Sent: Tuesday, October 16, 2018 8:59 AM > To: edk2-devel ; edk2-devel@lists.01.org > Cc: Kinney, Michael D ; Yao, Jiewen > ; Andrew Fish ; Gao, Liming > > Subject: Re: [edk2] [PATCH] MdePkg/BaseStackCheckLib: add MSFT toolchain > support > > REF: https://bugzilla.tianocore.org/show_bug.cgi?id=1239 > > Regards, > Jian > > > > -Original Message- > > From: edk2-devel [mailto:edk2-devel-boun...@lists.01.org] > > Sent: Tuesday, October 16, 2018 8:55 AM > > To: edk2-devel@lists.01.org > > Cc: Kinney, Michael D ; Yao, Jiewen > > ; Andrew Fish ; Gao, Liming > > > > Subject: [edk2] [PATCH] MdePkg/BaseStackCheckLib: add MSFT toolchain > > support > > > > This patch adds stack check support for MSFT toolchain, with > > compiler option /GS and /RTCs. This functionality is similar > > to the original ones supported by GCC toolchain. > > > > Usage example: > > This is a NULL library instance. Add it under a [LibraryClasses] > > section in dsc file to let it be built into all modules employed > > in a platform. > > > > [LibraryClasses] > > NULL|MdePkg/Library/BaseStackCheckLib/BaseStackCheckLib.inf > > > > Please note all not modules can be built against this library. Most > > of them are SEC type of modules, such as > > > > OvmfPkg/ResetVector/ResetVector.inf > > > > In this case, this library should not be added to a common > > [LibraryClasses] section but to specific ones, like > > [LibraryClasses.common.PEI_CORE/PEIM/...]. > > > > In addition, /GS and/or /RTCs should be added to compiler command line. > > This can be done by adding something like below under [BuildOptions] > > section in dsc file. > > > > [BuildOptions] > > MSFT:DEBUG_*_*_CC_FLAGS = /GS /GL- > > MSFT:DEBUG_*_*_CC_FLAGS = /RTCs /Od > > > > Note: /GL- is required for /GS, and /Od is required for /RTCs. > > Note: The flash layout might be needed to update to accommodate larger > > image size due to /Od is enforced. > > > > Pass tests: > > a. Overwrite a local buffer variable (in a 32-bit and 64-bit driver)and > >check if it's caught by new code (on both real platform and virtual > >platform) > > b. Boot Windows 10 and Ubuntu 18.04 on real platform with this > >lib built-in > > > > Cc: Michael D Kinney > > Cc: Liming Gao > > Cc: Jiewen Yao > > Cc: Andrew Fish > > Contributed-under: TianoCore Contribution Agreement 1.1 > > Signed-off-by: Jian J Wang > > --- > > .../BaseStackCheckLib/BaseStackCheckLib.inf| 11 +- > > .../Library/BaseStackCheckLib/BaseStackCheckMsft.c | 221 > > + > > .../Library/BaseStackCheckLib/BaseStackCheckNull.c | 15 -- > > .../BaseStackCheckLib/Ia32/StackCheckStubAsm.nasm | 76 +++ > > .../BaseStackCheckLib/X64/StackCheckStubAsm.nasm | 54 + > > 5 files changed, 360 insertions(+), 17 deletions(-) > > create mode 100644 > > MdePkg/Library/BaseStackCheckLib/BaseStackCheckMsft.c > > delete mode 100644 > MdePkg/Library/BaseStackCheckLib/BaseStackCheckNull.c > > create mode 100644 > > MdePkg/Library/BaseStackCheckLib/Ia32/StackCheckStubAsm.nasm > > create mode 100644 > > MdePkg/Library/BaseStackCheckLib/X64/StackCheckStubAsm.nasm > > > > diff --git a/MdePkg/Library/BaseStackCheckLib/BaseStackCheckLib.inf > > b/MdePkg/Library/BaseStackCheckLib/BaseStackCheckLib.inf > > index e280651b11..1c9e6710c6 100644 > > --- a/MdePkg/Library/BaseStackCheckLib/BaseStackCheckLib.inf > > +++ b/MdePkg/Library/BaseStackCheckLib/BaseStackCheckLib.inf > > @@ -4,6 +4,7 @@ > > # Stack Check Library > > # > > # Copyright (c) 2014, ARM Ltd. All rights reserved. > > +# Copyright (c) 2018, Intel Corporation. All rights reserved. > > # > > # This program and the accompanying materials > > # are licensed and made available under the terms and conditions of the > > BSD > > License > > @@ -26,13 +27,19 @@ > > > > > > # > > -# VALID_ARCHITECTURES = ARM AARCH64 > > +# VALID_ARCHITECTURES = ARM AARCH64 IA32 X64 > > # > > > > [Sources] > >BaseStackCheckGcc.c | GCC > >BaseStackCheckGcc.c | RVCT > > - BaseStackCheckNull.c | MSFT > > + BaseStackCheckMsft.c | MSFT > > + > > +[Sources.IA32] > > + Ia32/StackCheckStubAsm.nasm | MSFT > >
Re: [edk2] [PATCH] MdePkg/BaseStackCheckLib: add MSFT toolchain support
REF: https://bugzilla.tianocore.org/show_bug.cgi?id=1239 Regards, Jian > -Original Message- > From: edk2-devel [mailto:edk2-devel-boun...@lists.01.org] > Sent: Tuesday, October 16, 2018 8:55 AM > To: edk2-devel@lists.01.org > Cc: Kinney, Michael D ; Yao, Jiewen > ; Andrew Fish ; Gao, Liming > > Subject: [edk2] [PATCH] MdePkg/BaseStackCheckLib: add MSFT toolchain > support > > This patch adds stack check support for MSFT toolchain, with > compiler option /GS and /RTCs. This functionality is similar > to the original ones supported by GCC toolchain. > > Usage example: > This is a NULL library instance. Add it under a [LibraryClasses] > section in dsc file to let it be built into all modules employed > in a platform. > > [LibraryClasses] > NULL|MdePkg/Library/BaseStackCheckLib/BaseStackCheckLib.inf > > Please note all not modules can be built against this library. Most > of them are SEC type of modules, such as > > OvmfPkg/ResetVector/ResetVector.inf > > In this case, this library should not be added to a common > [LibraryClasses] section but to specific ones, like > [LibraryClasses.common.PEI_CORE/PEIM/...]. > > In addition, /GS and/or /RTCs should be added to compiler command line. > This can be done by adding something like below under [BuildOptions] > section in dsc file. > > [BuildOptions] > MSFT:DEBUG_*_*_CC_FLAGS = /GS /GL- > MSFT:DEBUG_*_*_CC_FLAGS = /RTCs /Od > > Note: /GL- is required for /GS, and /Od is required for /RTCs. > Note: The flash layout might be needed to update to accommodate larger > image size due to /Od is enforced. > > Pass tests: > a. Overwrite a local buffer variable (in a 32-bit and 64-bit driver)and >check if it's caught by new code (on both real platform and virtual >platform) > b. Boot Windows 10 and Ubuntu 18.04 on real platform with this >lib built-in > > Cc: Michael D Kinney > Cc: Liming Gao > Cc: Jiewen Yao > Cc: Andrew Fish > Contributed-under: TianoCore Contribution Agreement 1.1 > Signed-off-by: Jian J Wang > --- > .../BaseStackCheckLib/BaseStackCheckLib.inf| 11 +- > .../Library/BaseStackCheckLib/BaseStackCheckMsft.c | 221 > + > .../Library/BaseStackCheckLib/BaseStackCheckNull.c | 15 -- > .../BaseStackCheckLib/Ia32/StackCheckStubAsm.nasm | 76 +++ > .../BaseStackCheckLib/X64/StackCheckStubAsm.nasm | 54 + > 5 files changed, 360 insertions(+), 17 deletions(-) > create mode 100644 > MdePkg/Library/BaseStackCheckLib/BaseStackCheckMsft.c > delete mode 100644 MdePkg/Library/BaseStackCheckLib/BaseStackCheckNull.c > create mode 100644 > MdePkg/Library/BaseStackCheckLib/Ia32/StackCheckStubAsm.nasm > create mode 100644 > MdePkg/Library/BaseStackCheckLib/X64/StackCheckStubAsm.nasm > > diff --git a/MdePkg/Library/BaseStackCheckLib/BaseStackCheckLib.inf > b/MdePkg/Library/BaseStackCheckLib/BaseStackCheckLib.inf > index e280651b11..1c9e6710c6 100644 > --- a/MdePkg/Library/BaseStackCheckLib/BaseStackCheckLib.inf > +++ b/MdePkg/Library/BaseStackCheckLib/BaseStackCheckLib.inf > @@ -4,6 +4,7 @@ > # Stack Check Library > # > # Copyright (c) 2014, ARM Ltd. All rights reserved. > +# Copyright (c) 2018, Intel Corporation. All rights reserved. > # > # This program and the accompanying materials > # are licensed and made available under the terms and conditions of the BSD > License > @@ -26,13 +27,19 @@ > > > # > -# VALID_ARCHITECTURES = ARM AARCH64 > +# VALID_ARCHITECTURES = ARM AARCH64 IA32 X64 > # > > [Sources] >BaseStackCheckGcc.c | GCC >BaseStackCheckGcc.c | RVCT > - BaseStackCheckNull.c | MSFT > + BaseStackCheckMsft.c | MSFT > + > +[Sources.IA32] > + Ia32/StackCheckStubAsm.nasm | MSFT > + > +[Sources.X64] > + X64/StackCheckStubAsm.nasm | MSFT > > [Packages] >MdePkg/MdePkg.dec > diff --git a/MdePkg/Library/BaseStackCheckLib/BaseStackCheckMsft.c > b/MdePkg/Library/BaseStackCheckLib/BaseStackCheckMsft.c > new file mode 100644 > index 00..951154f0cd > --- /dev/null > +++ b/MdePkg/Library/BaseStackCheckLib/BaseStackCheckMsft.c > @@ -0,0 +1,221 @@ > +/** @file > + Base Stack Check library for MSFT toolchains compiler options: /GS, RTCs. > + > +Copyright (c) 2018, Intel Corporation. All rights reserved. > +This program and the accompanying materials are licensed and made available > under > +the terms and conditions of the BSD License that accompanies this > distribution. > +The full text of the license may be found at > +http://opensource.org/licenses/bsd-license.php. > + > +THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE O
[edk2] [PATCH] MdePkg/BaseStackCheckLib: add MSFT toolchain support
This patch adds stack check support for MSFT toolchain, with compiler option /GS and /RTCs. This functionality is similar to the original ones supported by GCC toolchain. Usage example: This is a NULL library instance. Add it under a [LibraryClasses] section in dsc file to let it be built into all modules employed in a platform. [LibraryClasses] NULL|MdePkg/Library/BaseStackCheckLib/BaseStackCheckLib.inf Please note all not modules can be built against this library. Most of them are SEC type of modules, such as OvmfPkg/ResetVector/ResetVector.inf In this case, this library should not be added to a common [LibraryClasses] section but to specific ones, like [LibraryClasses.common.PEI_CORE/PEIM/...]. In addition, /GS and/or /RTCs should be added to compiler command line. This can be done by adding something like below under [BuildOptions] section in dsc file. [BuildOptions] MSFT:DEBUG_*_*_CC_FLAGS = /GS /GL- MSFT:DEBUG_*_*_CC_FLAGS = /RTCs /Od Note: /GL- is required for /GS, and /Od is required for /RTCs. Note: The flash layout might be needed to update to accommodate larger image size due to /Od is enforced. Pass tests: a. Overwrite a local buffer variable (in a 32-bit and 64-bit driver)and check if it's caught by new code (on both real platform and virtual platform) b. Boot Windows 10 and Ubuntu 18.04 on real platform with this lib built-in Cc: Michael D Kinney Cc: Liming Gao Cc: Jiewen Yao Cc: Andrew Fish Contributed-under: TianoCore Contribution Agreement 1.1 Signed-off-by: Jian J Wang --- .../BaseStackCheckLib/BaseStackCheckLib.inf| 11 +- .../Library/BaseStackCheckLib/BaseStackCheckMsft.c | 221 + .../Library/BaseStackCheckLib/BaseStackCheckNull.c | 15 -- .../BaseStackCheckLib/Ia32/StackCheckStubAsm.nasm | 76 +++ .../BaseStackCheckLib/X64/StackCheckStubAsm.nasm | 54 + 5 files changed, 360 insertions(+), 17 deletions(-) create mode 100644 MdePkg/Library/BaseStackCheckLib/BaseStackCheckMsft.c delete mode 100644 MdePkg/Library/BaseStackCheckLib/BaseStackCheckNull.c create mode 100644 MdePkg/Library/BaseStackCheckLib/Ia32/StackCheckStubAsm.nasm create mode 100644 MdePkg/Library/BaseStackCheckLib/X64/StackCheckStubAsm.nasm diff --git a/MdePkg/Library/BaseStackCheckLib/BaseStackCheckLib.inf b/MdePkg/Library/BaseStackCheckLib/BaseStackCheckLib.inf index e280651b11..1c9e6710c6 100644 --- a/MdePkg/Library/BaseStackCheckLib/BaseStackCheckLib.inf +++ b/MdePkg/Library/BaseStackCheckLib/BaseStackCheckLib.inf @@ -4,6 +4,7 @@ # Stack Check Library # # Copyright (c) 2014, ARM Ltd. All rights reserved. +# Copyright (c) 2018, Intel Corporation. All rights reserved. # # This program and the accompanying materials # are licensed and made available under the terms and conditions of the BSD License @@ -26,13 +27,19 @@ # -# VALID_ARCHITECTURES = ARM AARCH64 +# VALID_ARCHITECTURES = ARM AARCH64 IA32 X64 # [Sources] BaseStackCheckGcc.c | GCC BaseStackCheckGcc.c | RVCT - BaseStackCheckNull.c | MSFT + BaseStackCheckMsft.c | MSFT + +[Sources.IA32] + Ia32/StackCheckStubAsm.nasm | MSFT + +[Sources.X64] + X64/StackCheckStubAsm.nasm | MSFT [Packages] MdePkg/MdePkg.dec diff --git a/MdePkg/Library/BaseStackCheckLib/BaseStackCheckMsft.c b/MdePkg/Library/BaseStackCheckLib/BaseStackCheckMsft.c new file mode 100644 index 00..951154f0cd --- /dev/null +++ b/MdePkg/Library/BaseStackCheckLib/BaseStackCheckMsft.c @@ -0,0 +1,221 @@ +/** @file + Base Stack Check library for MSFT toolchains compiler options: /GS, RTCs. + +Copyright (c) 2018, Intel Corporation. All rights reserved. +This program and the accompanying materials are licensed and made available under +the terms and conditions of the BSD License that accompanies this distribution. +The full text of the license may be found at +http://opensource.org/licenses/bsd-license.php. + +THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, +WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. + +**/ + +#include + +#include +#include +#include + +// +// cookie value that is inserted by the MSFT compiler into the stack frame. +// +extern UINTN __security_cookie; + +// +// Data structure used by MSFT compiler to record local variable information. +// + +typedef struct _RTC_vardesc { + int Addr; + int Size; + char *Name; +} _RTC_vardesc; + +typedef struct _RTC_framedesc { + int VarCount; + _RTC_vardesc *Variables; +} _RTC_framedesc; + +#define RTC_STACK_CHECK_COOKIE 0x + +/** + Function called upon unexpected stack pointer change. + + @param Ip Instruction address where the check happened. + +**/ +VOID +__cdecl +_RTC_Failure ( + VOID*Ip + ) +{ + DEBUG ((DEBUG_ERROR, "\nSTACK FAULT: Suspicious stack pointer (IP:%p).\n\n", Ip)); + + // + // Generate a Breakpoint, DeadLoop, or NOP based on PCD settings even if + //