Hi Austin,

Peverify is telling you that the semantic of the code is wrong.

Can you pastebin the entire IL of the method?

Jb


On Fri, Nov 13, 2015 at 10:43 AM, Austin Brkich <[email protected]> wrote:
> This is what I get when running peverify
>
> [IL]: Error: [C:\Program Files
> (x86)\Steam\SteamApps\common\Planetbase\Planetbase_Data\Managed\Assembly-CSharp.dll
> : Planetbase.ConstructionComponent::canProduce][offset 0x0000000A][found
> value 'System.Nullable`1[System.Boolean]'][expected address of value
> 'System.Nullable`1[System.Boolean]'] Unexpected type on the stack.
>
> [IL]: Error: [C:\Program Files
> (x86)\Steam\SteamApps\common\Planetbase\Planetbase_Data\Managed\Assembly-CSharp.dll
> : Planetbase.ConstructionComponent::canProduce][offset 0x00000013][found
> value 'System.Nullable`1[System.Boolean]'][expected address of value
> 'System.Nullable`1[System.Boolean]'] Unexpected type on the stack.
>
> 2 Error(s) Verifying Assembly-CSharp.dll
>
> On Friday, November 13, 2015 at 12:26:12 PM UTC-6, Jb Evain wrote:
>>
>> Hi,
>>
>> I'm not going to be able to debug your entire program I'm afraid.
>>
>> What happens if you run peverify on your modified binary?
>>
>> Thanks,
>> Jb
>>
>> On Fri, Nov 13, 2015 at 6:15 AM, Austin Brkich <[email protected]>
>> wrote:
>> > Somewhat related to this issue is that I am having issued making a call
>> > now
>> > to Nullable<Boolean>.HasValue but I am only able to replicate this in my
>> > actual program. The program is an attempt to add a Modding API to a game
>> > and
>> > it does this by parsing an XML file to figure out what needs to be
>> > inserted
>> > and where.
>> >
>> > This file represents how Call OpCodes are handled.
>> >
>> > https://github.com/7H3LaughingMan/PhiScript/blob/master/PhiPatcher/Instructions/Call.cs
>> >
>> >
>> > This is the actual XML file with all the modifications. I will include
>> > the
>> > part that I am having issues with.
>> >
>> > https://github.com/7H3LaughingMan/PhiScript/blob/master/PhiPatcher/Modifications.xml
>> >
>> > <Instruction OpCode="Call" Assembly="CoreLibrary"
>> > Type="System.Nullable`1"
>> > Method="get_HasValue">
>> > <GenericParameter Assembly="CoreLibrary" Type="System.Boolean" />
>> > </Instruction>
>> >
>> > This is the exception I am getting.
>> > InvalidProgramException: Invalid IL code in
>> > Planetbase.ConstructionComponent:canProduce (): IL_000a: call
>> > 0x0a0001bc
>> >
>> > And using ILSpy this is the resulting IL code.
>> > IL_000a: call instance bool valuetype
>> > [mscorlib]System.Nullable`1<bool>::get_HasValue()
>> >
>> >
>> > On Sunday, November 8, 2015 at 11:59:50 AM UTC-6, Jb Evain wrote:
>> >>
>> >> Hi Austin,
>> >>
>> >> Yeah dealing with generics is not always a pleasant experience right
>> >> now.
>> >>
>> >> Here's code that works:
>> >>
>> >> http://paste2.org/YeD09NEI
>> >>
>> >> Always work with definitions until you need to create references in
>> >> your module, it's much easier. In this case, retrieve the definition
>> >> from get_Value, up until the point where you create a reference.
>> >>
>> >> And then there's the MakeGeneric method that should be in
>> >> Mono.Cecil.Rocks but isn't.
>> >>
>> >> Jb
>> >>
>> >> On Sat, Nov 7, 2015 at 6:59 AM, Austin Brkich <[email protected]>
>> >> wrote:
>> >> > I am having issues trying to create a instruction to call
>> >> > Nullable<Boolean>.Value
>> >> >
>> >> > The closest I have come is by using the following code as it will
>> >> > generate
>> >> > ILCode that appears to be almost identical to what it was originally.
>> >> > I
>> >> > have
>> >> > also included the Test.exe that I am modifying, In this example I am
>> >> > replacing a call to Nullable<Boolean>.Value that was generated from
>> >> > the
>> >> > compiler with one generated by Mono.Cecil, but I am getting the
>> >> > following
>> >> > error when trying to run the modified executable.
>> >> >
>> >> > https://gist.github.com/7H3LaughingMan/311662c07b8bf8f8d2c6
>> >> > https://dl.dropboxusercontent.com/u/7231478/Test.exe
>> >> >
>> >> > Unhandled Exception: System.TypeLoadException: Could not load type
>> >> > 'System.Nullable`1' from assembly 'Test, Version=1.0.0.0,
>> >> > Culture=neutral,
>> >> > PublicKeyToken=null' due to value type mismatch.
>> >> >    at Test.Program.Main(String[] args)
>> >> >
>> >> > --
>> >> > --
>> >> > --
>> >> > mono-cecil
>> >> > ---
>> >> > You received this message because you are subscribed to the Google
>> >> > Groups
>> >> > "mono-cecil" group.
>> >> > To unsubscribe from this group and stop receiving emails from it,
>> >> > send
>> >> > an
>> >> > email to [email protected].
>> >> > For more options, visit https://groups.google.com/d/optout.
>> >
>> > --
>> > --
>> > --
>> > mono-cecil
>> > ---
>> > You received this message because you are subscribed to the Google
>> > Groups
>> > "mono-cecil" group.
>> > To unsubscribe from this group and stop receiving emails from it, send
>> > an
>> > email to [email protected].
>> > For more options, visit https://groups.google.com/d/optout.
>
> --
> --
> --
> mono-cecil
> ---
> You received this message because you are subscribed to the Google Groups
> "mono-cecil" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to [email protected].
> For more options, visit https://groups.google.com/d/optout.

-- 
-- 
--
mono-cecil
--- 
You received this message because you are subscribed to the Google Groups 
"mono-cecil" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
For more options, visit https://groups.google.com/d/optout.

Reply via email to