- Removed oso_readonly and oso_noload section options, it is enough to have just oso_write and oso_load to express possible section states.

git-svn-id: trunk@21825 -
This commit is contained in:
sergei 2012-07-09 12:58:37 +00:00
parent 2638bc01d9
commit 712f5d1c26
3 changed files with 20 additions and 33 deletions

View File

@ -120,11 +120,7 @@ interface
oso_Data,
{ Is loaded into memory }
oso_load,
{ Not loaded into memory }
oso_noload,
{ Read only }
oso_readonly,
{ Read/Write }
{ Writable }
oso_write,
{ Contains executable instructions }
oso_executable,
@ -908,7 +904,7 @@ implementation
const
secoptions : array[TAsmSectiontype] of TObjSectionOptions = ([],
{user} [oso_Data,oso_load,oso_write,oso_keep],
{code} [oso_Data,oso_load,oso_readonly,oso_executable,oso_keep],
{code} [oso_Data,oso_load,oso_executable,oso_keep],
{Data} [oso_Data,oso_load,oso_write,oso_keep],
{ TODO: Fix sec_rodata be read-only-with-relocs}
{roData} [oso_Data,oso_load,oso_write,oso_keep],
@ -920,29 +916,29 @@ implementation
,oso_keep
{$endif FPC_USE_TLS_DIRECTORY}
],
{pdata} [oso_data,oso_load,oso_readonly {$ifndef x86_64},oso_keep{$endif}],
{stub} [oso_Data,oso_load,oso_readonly,oso_executable],
{pdata} [oso_data,oso_load {$ifndef x86_64},oso_keep{$endif}],
{stub} [oso_Data,oso_load,oso_executable],
{data_nonlazy} [oso_Data,oso_load,oso_write],
{data_lazy} [oso_Data,oso_load,oso_write],
{init_func} [oso_Data,oso_load],
{term_func} [oso_Data,oso_load],
{stab} [oso_Data,oso_noload,oso_debug],
{stabstr} [oso_Data,oso_noload,oso_strings,oso_debug],
{stab} [oso_Data,oso_debug],
{stabstr} [oso_Data,oso_strings,oso_debug],
{iData2} [oso_Data,oso_load,oso_write],
{iData4} [oso_Data,oso_load,oso_write],
{iData5} [oso_Data,oso_load,oso_write],
{iData6} [oso_Data,oso_load,oso_write],
{iData7} [oso_Data,oso_load,oso_write],
{eData} [oso_Data,oso_load,oso_readonly],
{eh_frame} [oso_Data,oso_load,oso_readonly],
{debug_frame} [oso_Data,oso_noload,oso_debug],
{debug_info} [oso_Data,oso_noload,oso_debug],
{debug_line} [oso_Data,oso_noload,oso_debug],
{debug_abbrev} [oso_Data,oso_noload,oso_debug],
{eData} [oso_Data,oso_load],
{eh_frame} [oso_Data,oso_load],
{debug_frame} [oso_Data,oso_debug],
{debug_info} [oso_Data,oso_debug],
{debug_line} [oso_Data,oso_debug],
{debug_abbrev} [oso_Data,oso_debug],
{fpc} [oso_Data,oso_load,oso_write,oso_keep],
{toc} [oso_Data,oso_load,oso_readonly],
{init} [oso_Data,oso_load,oso_readonly,oso_executable,oso_keep],
{fini} [oso_Data,oso_load,oso_readonly,oso_executable,oso_keep],
{toc} [oso_Data,oso_load],
{init} [oso_Data,oso_load,oso_executable,oso_keep],
{fini} [oso_Data,oso_load,oso_executable,oso_keep],
{objc_class} [oso_data,oso_load],
{objc_meta_class} [oso_data,oso_load],
{objc_cat_cls_meth} [oso_data,oso_load],

View File

@ -769,16 +769,11 @@ const pemagic : array[0..3] of byte = (
include(aoptions,oso_debug);
if flags and PE_SCN_CNT_UNINITIALIZED_DATA=0 then
include(aoptions,oso_data);
if (flags and PE_SCN_LNK_REMOVE<>0) or
(flags and PE_SCN_MEM_DISCARDABLE<>0) then
include(aoptions,oso_noload)
else
if (flags and (PE_SCN_LNK_REMOVE or PE_SCN_MEM_DISCARDABLE)=0) then
include(aoptions,oso_load);
{ read/write }
if flags and PE_SCN_MEM_WRITE<>0 then
include(aoptions,oso_write)
else
include(aoptions,oso_readonly);
include(aoptions,oso_write);
{ alignment }
alignflag:=flags and PE_SCN_ALIGN_MASK;
if alignflag=PE_SCN_ALIGN_64BYTES then
@ -2336,7 +2331,7 @@ const pemagic : array[0..3] of byte = (
begin
idataExeSec:=FindExeSection('.idata');
if idataExeSec<>nil then
idataExeSec.SecOptions:=idataExeSec.SecOptions - [oso_write] + [oso_readonly];
idataExeSec.SecOptions:=idataExeSec.SecOptions - [oso_write];
end;
{ Section headers }

View File

@ -677,13 +677,9 @@ implementation
include(aoptions,oso_strings);
{ Section Flags }
if Ashflags and SHF_ALLOC<>0 then
include(aoptions,oso_load)
else
include(aoptions,oso_noload);
include(aoptions,oso_load);
if Ashflags and SHF_WRITE<>0 then
include(aoptions,oso_write)
else
include(aoptions,oso_readonly);
include(aoptions,oso_write);
if Ashflags and SHF_EXECINSTR<>0 then
include(aoptions,oso_executable);
end;