// // ExecutableSectionCharacteristics.cs - indicates attributes for a section in an executable file // // Author: // Michael Becker // // Copyright (c) 2011-2020 Mike Becker's Software // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation, either version 3 of the License, or // (at your option) any later version. // // This program is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // // You should have received a copy of the GNU General Public License // along with this program. If not, see . using System; namespace UniversalEditor.ObjectModels.Executable { /// /// Indicates attributes for a section in an executable file. /// [Flags()] public enum ExecutableSectionCharacteristics : uint { None = 0x00000000, /// /// Reserved. /// TypeNoPad = 0x00000008, /// /// Section contains code. /// ContainsCode = 0x00000020, /// /// Section contains initialized data. /// ContainsInitializedData = 0x00000040, /// /// Section contains uninitialized data. /// ContainsUninitializedData = 0x00000080, /// /// Reserved. /// LinkOther = 0x00000100, /// /// Section contains comments or some other type of information. /// LinkInformation = 0x00000200, /// /// Section contents will not become part of image. /// LinkRemove = 0x00000800, /// /// Section contents comdat. /// LinkComdat = 0x00001000, /// /// Reset speculative exceptions handling bits in the TLB entries for this section. /// ResetSpeculativeExceptions = 0x00004000, /// /// Section content can be accessed relative to GP /// GPRelative = 0x00008000, MemoryFarData = 0x00008000, MemoryPurgeable = 0x00020000, Memory16Bit = 0x00020000, MemoryLocked = 0x00040000, MemoryPreload = 0x00080000, Align1Byte = 0x00100000, Align2Bytes = 0x00200000, Align4Bytes = 0x00300000, Align8Bytes = 0x00400000, /// /// Default alignment if no others are specified. /// Align16Bytes = 0x00500000, Align32Bytes = 0x00600000, Align64Bytes = 0x00700000, Align128Bytes = 0x00800000, Align256Bytes = 0x00900000, Align512Bytes = 0x00A00000, Align1024Bytes = 0x00B00000, Align2048Bytes = 0x00C00000, Align4096Bytes = 0x00D00000, Align8192Bytes = 0x00E00000, AlignMask = 0x00F00000, /// /// Section contains extended relocations. /// LinkExtendedRelocations = 0x01000000, /// /// Section can be discarded. /// MemoryDiscardable = 0x02000000, /// /// Section is not cachable. /// MemoryNotCached = 0x04000000, /// /// Section is not pageable. /// MemoryNotPaged = 0x08000000, /// /// Section is shareable. /// MemoryShared = 0x10000000, /// /// Section is executable. /// MemoryExecutable = 0x20000000, /// /// Section is readable. /// MemoryReadable = 0x40000000, /// /// Section is writeable. /// MemoryWritable = 0x80000000 } }