// Licensed to the .NET Foundation under one or more agreements.
// The .NET Foundation licenses this file to you under the MIT license.
// See the LICENSE file in the project root for more information.
using System;
namespace ILCompiler.DependencyAnalysis
{
public enum SectionType
{
ReadOnly,
Writeable,
Executable
}
///
/// Specifies the object file section a node will be placed in; ie "text" or "data"
///
public class ObjectNodeSection
{
public string Name { get; }
public SectionType Type { get; }
public string ComdatName { get; }
public ObjectNodeSection(string name, SectionType type, string comdatName)
{
Name = name;
Type = type;
ComdatName = comdatName;
}
public ObjectNodeSection(string name, SectionType type) : this(name, type, null)
{ }
///
/// Returns true if the section is a standard one (defined as text, data, or rdata currently)
///
public bool IsStandardSection
{
get
{
return this == DataSection || this == ReadOnlyDataSection || this == FoldableReadOnlyDataSection || this == TextSection || this == XDataSection;
}
}
public static readonly ObjectNodeSection XDataSection = new ObjectNodeSection("xdata", SectionType.ReadOnly);
public static readonly ObjectNodeSection DataSection = new ObjectNodeSection("data", SectionType.Writeable);
public static readonly ObjectNodeSection ReadOnlyDataSection = new ObjectNodeSection("rdata", SectionType.ReadOnly);
public static readonly ObjectNodeSection FoldableReadOnlyDataSection = new ObjectNodeSection("rdata$F", SectionType.ReadOnly);
public static readonly ObjectNodeSection TextSection = new ObjectNodeSection("text", SectionType.Executable);
public static readonly ObjectNodeSection TLSSection = new ObjectNodeSection("TLS", SectionType.Writeable);
}
}