[Mono-dev] The State Of Mono Assembly Verification?

Jim Purbrick jimpurbrick at yahoo.co.uk
Fri Feb 17 14:19:49 EST 2006


Hi Paolo/All,

--- Paolo Molaro <lupus at ximian.com> wrote:
> I'd like this to be done a bit differently. Take the
> existing tests you made and change (for example for 
> the 3.1 ones) add with <BINARY_NUM_OP>. Then a
little
> script will copy and replace and create tests for 
> each of a list of opcodes.
> This way, we only have to check N test case + the
> list of opcodes (+ the script, of course;-), 
> instead of checking N * numopcodes tests.

OK, I've uploaded a new set here:

http://homepage.ntlworld.com/james.purbrick/VerifierTests2.tar

Which includes a number of scripts:
create_templates.sh creates a template from examplars
create_test_sets.sh creates test sets from templates

I think they do what you're after. Eventually we can
get rid of the examplar tests and just use the
templates, create_test_set scripts and individual
tests where they make sense.

Up to 593 tests now :-D

> This pattern should be used as much as possible:
> there are many tests that look the same but apply 
> to a number of similar opcodes and we want the test 
> to check all the cases for all the opcodes
> while keeping the test source readable.

Yes I agree.

I have a few questions regarding the remaining tests:

1) Should the 1.8.1.3 tests to check that illegal
stack merge failures are caught use the "Verification
Type (in stack state)" types along with the 1.8.1.2.3
rules for type compatibility? It looks like object
values should always merge as System.Object is always
a supertype of both?

2) Should shift op tests be based on "Table 6: Shift
Operations" (which makes sense) or "Table 5: Integer
Operations" (which 3.58 and 3.59 refer to under
"Correctness and Verifiability").

3) How do I test that boxing byref, byref-like and
void types fails verification.

4) What are overlapped object reference fields and how
do I define one for the ldfld and ldflda tests?

5) Which stack types can be stored in valuetype
fields? 1.6 seems to suggest that all stack parameter
types should fail when stored in a field using stfld.

6) How do i generate by-ref and ref any fields in CIL
for the 1.6 coercion tests for stfld?

7) When does coercion happen? Just for stfld and
method calls? Stloc and starg check the type on the
stack and type of slot match using the 1.8.1.2.3 rules
and the "Verfication Type" set of types from
1.8.1.2.1?

Cheers,

Jim/Babbage.


		
___________________________________________________________ 
Win a BlackBerry device from O2 with Yahoo!. Enter now. http://www.yahoo.co.uk/blackberry



More information about the Mono-devel-list mailing list