Added API extension __ImageBase to Module.

This commit is contained in:
jfrijters 2011-03-08 06:14:22 +00:00
Родитель a86c81919a
Коммит 1c8b1c0cd5
7 изменённых файлов: 38 добавлений и 1 удалений

Просмотреть файл

@ -740,5 +740,10 @@ namespace IKVM.Reflection.Emit
{
throw new InvalidOperationException();
}
protected override long GetImageBaseImpl()
{
throw new InvalidOperationException();
}
}
}

Просмотреть файл

@ -1167,12 +1167,17 @@ namespace IKVM.Reflection.Emit
}
// non-standard API
public long __ImageBase
public new long __ImageBase
{
get { return imageBaseAddress; }
set { imageBaseAddress = value; }
}
protected override long GetImageBaseImpl()
{
return imageBaseAddress;
}
public override int MDStreamVersion
{
get { return asm.mdStreamVersion; }

Просмотреть файл

@ -338,6 +338,11 @@ namespace IKVM.Reflection
{
throw new MissingModuleException(this);
}
protected override long GetImageBaseImpl()
{
throw new MissingModuleException(this);
}
}
sealed class MissingType : Type

Просмотреть файл

@ -410,6 +410,13 @@ namespace IKVM.Reflection
get { return false; }
}
public long __ImageBase
{
get { return GetImageBaseImpl(); }
}
protected abstract long GetImageBaseImpl();
internal Type CanonicalizeType(Type type)
{
Type canon;

Просмотреть файл

@ -205,6 +205,11 @@ namespace IKVM.Reflection.Reader
{
throw new InvalidOperationException();
}
protected override long GetImageBaseImpl()
{
throw new InvalidOperationException();
}
}
internal static Type Make(int position)

Просмотреть файл

@ -1050,5 +1050,10 @@ namespace IKVM.Reflection.Reader
PopulateTypeDef();
manifestModule.ExportTypes(typeDefs, fileToken);
}
protected override long GetImageBaseImpl()
{
return (long)peFile.OptionalHeader.ImageBase;
}
}
}

Просмотреть файл

@ -115,6 +115,11 @@ namespace IKVM.Reflection.Reader
throw new NotSupportedException();
}
protected override long GetImageBaseImpl()
{
throw new NotSupportedException();
}
internal override Type FindType(TypeName typeName)
{
return null;