#! /bin/sh SED="sed" if [ `which gsed 2> /dev/null` ] ; then SED="gsed" fi TEST_NAME=$1 TEST_VALIDITY=$2 TEST_RET_TYPE1=$3 TEST_RET_TYPE2=$4 TEST_PARAM_TYPE1=$5 TEST_PARAM_TYPE2=$6 TEST_CCONV1=$7 TEST_CCONV2=$8 TEST_USE_NATIVE=$9 TCONV_1="default" TCONV_2="" if [ "$TEST_CCONV1" != "" ]; then TCONV_1=$TEST_CCONV1 TCONV_2=$TEST_CCONV2 fi RET_2_LOCAL="$TEST_RET_TYPE2" RET_2_OP="ldloc 0" if [ "$TEST_RET_TYPE2" == "void" ]; then RET_2_LOCAL="int32" RET_2_OP="nop" fi LDFTN="ldftn $TCONV_2 ${TEST_RET_TYPE2} Driver::Method(${TEST_PARAM_TYPE2})" CALLVIRT="callvirt instance $TCONV_1 ${TEST_RET_TYPE1} TargetDelegate::Invoke (${TEST_PARAM_TYPE1})" LOCAL_PARAM_1="${TEST_PARAM_TYPE1}" MANAGED_METHOD=" .method public static $TCONV_2 RET_2 Method(PARAM_2 V_0) cil managed { .maxstack 2 .locals init ($RET_2_LOCAL ARG) $RET_2_OP ret } " if [ "$TEST_USE_NATIVE" == "pinvoke" ]; then LDFTN="ldftn $TCONV_2 ${TEST_RET_TYPE2} Driver::NativeMethod(${TEST_PARAM_TYPE2})" CALLVIRT="nop" MANAGED_METHOD="" LOCAL_PARAM_1="native int" fi TEST_NAME=${TEST_VALIDITY}_${TEST_NAME} TEST_FILE=${TEST_NAME}_generated.il echo $TEST_FILE $SED -e "s/VALIDITY/${TEST_VALIDITY}/g" -e "s/RET_1/${TEST_RET_TYPE1}/g" -e "s/RET_2/${TEST_RET_TYPE2}/g" -e "s/PARAM_1/${TEST_PARAM_TYPE1}/g" -e "s/PARAM_2/${TEST_PARAM_TYPE2}/g"> $TEST_FILE <