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

Reply via email to