Hi I found it is using "STATIC" not "CONST". Does a compiler put "STATIC" data to READ-ONLY section?
Thank you Yao Jiewen From: af...@apple.com [mailto:af...@apple.com] Sent: Friday, December 9, 2016 8:37 AM To: Kurt Kennett <kurt.kenn...@microsoft.com> Cc: Yao, Jiewen <jiewen....@intel.com>; Bi, Dandan <dandan...@intel.com>; edk2-devel@lists.01.org; Ni, Ruiyu <ruiyu...@intel.com> Subject: Re: [edk2] [patch 2/8] FatPkg\EnhancedFatDxe: Initialize variable after declaration > On Dec 8, 2016, at 4:26 PM, Kurt Kennett > <kurt.kenn...@microsoft.com<mailto:kurt.kenn...@microsoft.com>> wrote: > > Is the data 'variable'? i.e does it ever change? > > A normal compiler should put this data into a section marked read-only if it > is marked as const, and a loader could read-protect the region after load. > K2, Did you mean write-protoect? FYI in my example in this thread from a macOS clang compiler the constant date ends up in a const TEXT section, as the text section in general is const. That is why the compiler emitted a PC relative access. This only ever becomes an issue when hand writing assemble code for X64. Thanks, Andrew Fish > K2 > > -----Original Message----- > From: Yao, Jiewen [mailto:jiewen....@intel.com] > Sent: Thursday, December 8, 2016 3:47 PM > To: Kurt Kennett > <kurt.kenn...@microsoft.com<mailto:kurt.kenn...@microsoft.com>>; Bi, Dandan > <dandan...@intel.com<mailto:dandan...@intel.com>>; > edk2-devel@lists.01.org<mailto:edk2-devel@lists.01.org> > Cc: Ni, Ruiyu <ruiyu...@intel.com<mailto:ruiyu...@intel.com>> > Subject: RE: [edk2] [patch 2/8] FatPkg\EnhancedFatDxe: Initialize variable > after declaration > > Agree. Maybe we can move it to be a global variable ? > > Thank you > Yao Jiewen > >> -----Original Message----- >> From: edk2-devel [mailto:edk2-devel-boun...@lists.01.org] On Behalf Of >> Kurt Kennett >> Sent: Friday, December 9, 2016 1:28 AM >> To: Bi, Dandan <dandan...@intel.com<mailto:dandan...@intel.com>>; >> edk2-devel@lists.01.org<mailto:edk2-devel@lists.01.org> >> Cc: Ni, Ruiyu <ruiyu...@intel.com<mailto:ruiyu...@intel.com>> >> Subject: Re: [edk2] [patch 2/8] FatPkg\EnhancedFatDxe: Initialize >> variable after declaration >> >> This seems kind of silly. >> Why isn't this just const data? This adds code and memory accesses >> that are worthless and happen on every call to the function. >> >> K2 >> >> -----Original Message----- >> From: edk2-devel [mailto:edk2-devel-boun...@lists.01.org] On Behalf Of >> Dandan Bi >> Sent: Thursday, December 8, 2016 2:54 AM >> To: edk2-devel@lists.01.org<mailto:edk2-devel@lists.01.org> >> Cc: Ruiyu Ni <ruiyu...@intel.com<mailto:ruiyu...@intel.com>> >> Subject: [edk2] [patch 2/8] FatPkg\EnhancedFatDxe: Initialize variable >> after declaration >> >> Cc: Ruiyu Ni <ruiyu...@intel.com<mailto:ruiyu...@intel.com>> >> Contributed-under: TianoCore Contribution Agreement 1.0 >> Signed-off-by: Dandan Bi <dandan...@intel.com<mailto:dandan...@intel.com>> >> --- >> FatPkg/EnhancedFatDxe/Misc.c | 14 +++++++++++++- >> 1 file changed, 13 insertions(+), 1 deletion(-) >> >> diff --git a/FatPkg/EnhancedFatDxe/Misc.c >> b/FatPkg/EnhancedFatDxe/Misc.c index f91759c..6ad688c 100644 >> --- a/FatPkg/EnhancedFatDxe/Misc.c >> +++ b/FatPkg/EnhancedFatDxe/Misc.c >> @@ -696,15 +696,27 @@ Returns: >> TRUE - The time is valid. >> FALSE - The time is not valid. >> >> --*/ >> { >> - static UINT8 MonthDays[] = { 31, 28, 31, 30, 31, 30, 31, 31, 30, >> 31, 30, 31 }; >> + STATIC UINT8 MonthDays[12]; >> UINTN Day; >> BOOLEAN ValidTime; >> >> ValidTime = TRUE; >> + MonthDays[0] = 31; >> + MonthDays[1] = 28; >> + MonthDays[2] = 31; >> + MonthDays[3] = 30; >> + MonthDays[4] = 31; >> + MonthDays[5] = 30; >> + MonthDays[6] = 31; >> + MonthDays[7] = 31; >> + MonthDays[8] = 30; >> + MonthDays[9] = 31; >> + MonthDays[10] = 30; >> + MonthDays[11] = 31; >> >> // >> // Check the fields for range problems >> // Fat can only support from 1980 >> // >> -- >> 1.9.5.msysgit.1 >> >> _______________________________________________ >> edk2-devel mailing list >> edk2-devel@lists.01.org<mailto:edk2-devel@lists.01.org> >> https://lists.01.org/mailman/listinfo/edk2-devel >> _______________________________________________ >> edk2-devel mailing list >> edk2-devel@lists.01.org<mailto:edk2-devel@lists.01.org> >> https://lists.01.org/mailman/listinfo/edk2-devel > _______________________________________________ > edk2-devel mailing list > edk2-devel@lists.01.org<mailto:edk2-devel@lists.01.org> > https://lists.01.org/mailman/listinfo/edk2-devel _______________________________________________ edk2-devel mailing list edk2-devel@lists.01.org https://lists.01.org/mailman/listinfo/edk2-devel