diff --git a/test/178-app-image-native-method/native_methods.cc b/test/178-app-image-native-method/native_methods.cc
index 794a78a..becda81 100644
--- a/test/178-app-image-native-method/native_methods.cc
+++ b/test/178-app-image-native-method/native_methods.cc
@@ -127,4 +127,486 @@
   return ok ? 42 : -1;
 }
 
+extern "C" JNIEXPORT jint JNICALL Java_CriticalSignatures_nativeILFFFFD(
+    jint i,
+    jlong l,
+    jfloat f1,
+    jfloat f2,
+    jfloat f3,
+    jfloat f4,
+    jdouble d) {
+  if (i != 1) return -1;
+  if (l != INT64_C(0xf00000002)) return -2;
+  if (f1 != 3.0f) return -3;
+  if (f2 != 4.0f) return -4;
+  if (f3 != 5.0f) return -5;
+  if (f4 != 6.0f) return -6;
+  if (d != 7.0) return -7;
+  return 42;
+}
+
+extern "C" JNIEXPORT jint JNICALL Java_CriticalSignatures_nativeLIFFFFD(
+    jlong l,
+    jint i,
+    jfloat f1,
+    jfloat f2,
+    jfloat f3,
+    jfloat f4,
+    jdouble d) {
+  if (l != INT64_C(0xf00000007)) return -1;
+  if (i != 6) return -2;
+  if (f1 != 5.0f) return -3;
+  if (f2 != 4.0f) return -4;
+  if (f3 != 3.0f) return -5;
+  if (f4 != 2.0f) return -6;
+  if (d != 1.0) return -7;
+  return 42;
+}
+
+extern "C" JNIEXPORT jint JNICALL Java_CriticalSignatures_nativeFLIFFFD(
+    jfloat f1,
+    jlong l,
+    jint i,
+    jfloat f2,
+    jfloat f3,
+    jfloat f4,
+    jdouble d) {
+  if (f1 != 1.0f) return -3;
+  if (l != INT64_C(0xf00000002)) return -1;
+  if (i != 3) return -2;
+  if (f2 != 4.0f) return -4;
+  if (f3 != 5.0f) return -5;
+  if (f4 != 6.0f) return -6;
+  if (d != 7.0) return -7;
+  return 42;
+}
+
+extern "C" JNIEXPORT jint JNICALL Java_CriticalSignatures_nativeDDIIIIII(
+    jdouble d1,
+    jdouble d2,
+    jint i1,
+    jint i2,
+    jint i3,
+    jint i4,
+    jint i5,
+    jint i6) {
+  if (d1 != 8.0) return -1;
+  if (d2 != 7.0) return -2;
+  if (i1 != 6) return -3;
+  if (i2 != 5) return -4;
+  if (i3 != 4) return -5;
+  if (i4 != 3) return -6;
+  if (i5 != 2) return -7;
+  if (i6 != 1) return -8;
+  return 42;
+}
+
+extern "C" JNIEXPORT jint JNICALL Java_CriticalSignatures_nativeDFFILIII(
+    jdouble d,
+    jfloat f1,
+    jfloat f2,
+    jint i1,
+    jlong l,
+    jint i2,
+    jint i3,
+    jint i4) {
+  if (d != 1.0) return -1;
+  if (f1 != 2.0f) return -2;
+  if (f2 != 3.0f) return -3;
+  if (i1 != 4) return -4;
+  if (l != INT64_C(0xf00000005)) return -5;
+  if (i2 != 6) return -6;
+  if (i3 != 7) return -7;
+  if (i4 != 8) return -8;
+  return 42;
+}
+
+extern "C" JNIEXPORT jint JNICALL Java_CriticalSignatures_nativeDDFILIII(
+    jdouble d1,
+    jdouble d2,
+    jfloat f,
+    jint i1,
+    jlong l,
+    jint i2,
+    jint i3,
+    jint i4) {
+  if (d1 != 8.0) return -1;
+  if (d2 != 7.0) return -2;
+  if (f != 6.0f) return -3;
+  if (i1 != 5) return -4;
+  if (l != INT64_C(0xf00000004)) return -5;
+  if (i2 != 3) return -6;
+  if (i3 != 2) return -7;
+  if (i4 != 1) return -8;
+  return 42;
+}
+
+extern "C" JNIEXPORT jint JNICALL Java_CriticalSignatures_nativeDDIFII(
+    jdouble d1,
+    jdouble d2,
+    jint i1,
+    jfloat f,
+    jint i2,
+    jint i3) {
+  if (d1 != 1.0) return -1;
+  if (d2 != 2.0) return -2;
+  if (i1 != 3) return -3;
+  if (f != 4.0f) return -4;
+  if (i2 != 5) return -5;
+  if (i3 != 6) return -6;
+  return 42;
+}
+
+extern "C" JNIEXPORT jint JNICALL Java_CriticalSignatures_nativeFullArgs(
+    // Generated by script (then modified to close argument list):
+    //   for i in {0..84}; do echo "    jlong l$((i*3)),"; echo "    jint i$((i*3+2)),"; done
+    jlong l0,
+    jint i2,
+    jlong l3,
+    jint i5,
+    jlong l6,
+    jint i8,
+    jlong l9,
+    jint i11,
+    jlong l12,
+    jint i14,
+    jlong l15,
+    jint i17,
+    jlong l18,
+    jint i20,
+    jlong l21,
+    jint i23,
+    jlong l24,
+    jint i26,
+    jlong l27,
+    jint i29,
+    jlong l30,
+    jint i32,
+    jlong l33,
+    jint i35,
+    jlong l36,
+    jint i38,
+    jlong l39,
+    jint i41,
+    jlong l42,
+    jint i44,
+    jlong l45,
+    jint i47,
+    jlong l48,
+    jint i50,
+    jlong l51,
+    jint i53,
+    jlong l54,
+    jint i56,
+    jlong l57,
+    jint i59,
+    jlong l60,
+    jint i62,
+    jlong l63,
+    jint i65,
+    jlong l66,
+    jint i68,
+    jlong l69,
+    jint i71,
+    jlong l72,
+    jint i74,
+    jlong l75,
+    jint i77,
+    jlong l78,
+    jint i80,
+    jlong l81,
+    jint i83,
+    jlong l84,
+    jint i86,
+    jlong l87,
+    jint i89,
+    jlong l90,
+    jint i92,
+    jlong l93,
+    jint i95,
+    jlong l96,
+    jint i98,
+    jlong l99,
+    jint i101,
+    jlong l102,
+    jint i104,
+    jlong l105,
+    jint i107,
+    jlong l108,
+    jint i110,
+    jlong l111,
+    jint i113,
+    jlong l114,
+    jint i116,
+    jlong l117,
+    jint i119,
+    jlong l120,
+    jint i122,
+    jlong l123,
+    jint i125,
+    jlong l126,
+    jint i128,
+    jlong l129,
+    jint i131,
+    jlong l132,
+    jint i134,
+    jlong l135,
+    jint i137,
+    jlong l138,
+    jint i140,
+    jlong l141,
+    jint i143,
+    jlong l144,
+    jint i146,
+    jlong l147,
+    jint i149,
+    jlong l150,
+    jint i152,
+    jlong l153,
+    jint i155,
+    jlong l156,
+    jint i158,
+    jlong l159,
+    jint i161,
+    jlong l162,
+    jint i164,
+    jlong l165,
+    jint i167,
+    jlong l168,
+    jint i170,
+    jlong l171,
+    jint i173,
+    jlong l174,
+    jint i176,
+    jlong l177,
+    jint i179,
+    jlong l180,
+    jint i182,
+    jlong l183,
+    jint i185,
+    jlong l186,
+    jint i188,
+    jlong l189,
+    jint i191,
+    jlong l192,
+    jint i194,
+    jlong l195,
+    jint i197,
+    jlong l198,
+    jint i200,
+    jlong l201,
+    jint i203,
+    jlong l204,
+    jint i206,
+    jlong l207,
+    jint i209,
+    jlong l210,
+    jint i212,
+    jlong l213,
+    jint i215,
+    jlong l216,
+    jint i218,
+    jlong l219,
+    jint i221,
+    jlong l222,
+    jint i224,
+    jlong l225,
+    jint i227,
+    jlong l228,
+    jint i230,
+    jlong l231,
+    jint i233,
+    jlong l234,
+    jint i236,
+    jlong l237,
+    jint i239,
+    jlong l240,
+    jint i242,
+    jlong l243,
+    jint i245,
+    jlong l246,
+    jint i248,
+    jlong l249,
+    jint i251,
+    jlong l252,
+    jint i254) {
+  jlong l = INT64_C(0xf00000000);
+  // Generated by script (then modified to close argument list):
+  //   for i in {0..84}; do \
+  //     echo "  if (l$((i*3)) != l + $(($i*3))) return -$(($i*3));"; \
+  //     echo "  if (i$(($i*3+2)) != $(($i*3+2))) return -$(($i*3+2));"; \
+  //  done
+  if (l0 != l + 0) return -0;
+  if (i2 != 2) return -2;
+  if (l3 != l + 3) return -3;
+  if (i5 != 5) return -5;
+  if (l6 != l + 6) return -6;
+  if (i8 != 8) return -8;
+  if (l9 != l + 9) return -9;
+  if (i11 != 11) return -11;
+  if (l12 != l + 12) return -12;
+  if (i14 != 14) return -14;
+  if (l15 != l + 15) return -15;
+  if (i17 != 17) return -17;
+  if (l18 != l + 18) return -18;
+  if (i20 != 20) return -20;
+  if (l21 != l + 21) return -21;
+  if (i23 != 23) return -23;
+  if (l24 != l + 24) return -24;
+  if (i26 != 26) return -26;
+  if (l27 != l + 27) return -27;
+  if (i29 != 29) return -29;
+  if (l30 != l + 30) return -30;
+  if (i32 != 32) return -32;
+  if (l33 != l + 33) return -33;
+  if (i35 != 35) return -35;
+  if (l36 != l + 36) return -36;
+  if (i38 != 38) return -38;
+  if (l39 != l + 39) return -39;
+  if (i41 != 41) return -41;
+  if (l42 != l + 42) return -42;
+  if (i44 != 44) return -44;
+  if (l45 != l + 45) return -45;
+  if (i47 != 47) return -47;
+  if (l48 != l + 48) return -48;
+  if (i50 != 50) return -50;
+  if (l51 != l + 51) return -51;
+  if (i53 != 53) return -53;
+  if (l54 != l + 54) return -54;
+  if (i56 != 56) return -56;
+  if (l57 != l + 57) return -57;
+  if (i59 != 59) return -59;
+  if (l60 != l + 60) return -60;
+  if (i62 != 62) return -62;
+  if (l63 != l + 63) return -63;
+  if (i65 != 65) return -65;
+  if (l66 != l + 66) return -66;
+  if (i68 != 68) return -68;
+  if (l69 != l + 69) return -69;
+  if (i71 != 71) return -71;
+  if (l72 != l + 72) return -72;
+  if (i74 != 74) return -74;
+  if (l75 != l + 75) return -75;
+  if (i77 != 77) return -77;
+  if (l78 != l + 78) return -78;
+  if (i80 != 80) return -80;
+  if (l81 != l + 81) return -81;
+  if (i83 != 83) return -83;
+  if (l84 != l + 84) return -84;
+  if (i86 != 86) return -86;
+  if (l87 != l + 87) return -87;
+  if (i89 != 89) return -89;
+  if (l90 != l + 90) return -90;
+  if (i92 != 92) return -92;
+  if (l93 != l + 93) return -93;
+  if (i95 != 95) return -95;
+  if (l96 != l + 96) return -96;
+  if (i98 != 98) return -98;
+  if (l99 != l + 99) return -99;
+  if (i101 != 101) return -101;
+  if (l102 != l + 102) return -102;
+  if (i104 != 104) return -104;
+  if (l105 != l + 105) return -105;
+  if (i107 != 107) return -107;
+  if (l108 != l + 108) return -108;
+  if (i110 != 110) return -110;
+  if (l111 != l + 111) return -111;
+  if (i113 != 113) return -113;
+  if (l114 != l + 114) return -114;
+  if (i116 != 116) return -116;
+  if (l117 != l + 117) return -117;
+  if (i119 != 119) return -119;
+  if (l120 != l + 120) return -120;
+  if (i122 != 122) return -122;
+  if (l123 != l + 123) return -123;
+  if (i125 != 125) return -125;
+  if (l126 != l + 126) return -126;
+  if (i128 != 128) return -128;
+  if (l129 != l + 129) return -129;
+  if (i131 != 131) return -131;
+  if (l132 != l + 132) return -132;
+  if (i134 != 134) return -134;
+  if (l135 != l + 135) return -135;
+  if (i137 != 137) return -137;
+  if (l138 != l + 138) return -138;
+  if (i140 != 140) return -140;
+  if (l141 != l + 141) return -141;
+  if (i143 != 143) return -143;
+  if (l144 != l + 144) return -144;
+  if (i146 != 146) return -146;
+  if (l147 != l + 147) return -147;
+  if (i149 != 149) return -149;
+  if (l150 != l + 150) return -150;
+  if (i152 != 152) return -152;
+  if (l153 != l + 153) return -153;
+  if (i155 != 155) return -155;
+  if (l156 != l + 156) return -156;
+  if (i158 != 158) return -158;
+  if (l159 != l + 159) return -159;
+  if (i161 != 161) return -161;
+  if (l162 != l + 162) return -162;
+  if (i164 != 164) return -164;
+  if (l165 != l + 165) return -165;
+  if (i167 != 167) return -167;
+  if (l168 != l + 168) return -168;
+  if (i170 != 170) return -170;
+  if (l171 != l + 171) return -171;
+  if (i173 != 173) return -173;
+  if (l174 != l + 174) return -174;
+  if (i176 != 176) return -176;
+  if (l177 != l + 177) return -177;
+  if (i179 != 179) return -179;
+  if (l180 != l + 180) return -180;
+  if (i182 != 182) return -182;
+  if (l183 != l + 183) return -183;
+  if (i185 != 185) return -185;
+  if (l186 != l + 186) return -186;
+  if (i188 != 188) return -188;
+  if (l189 != l + 189) return -189;
+  if (i191 != 191) return -191;
+  if (l192 != l + 192) return -192;
+  if (i194 != 194) return -194;
+  if (l195 != l + 195) return -195;
+  if (i197 != 197) return -197;
+  if (l198 != l + 198) return -198;
+  if (i200 != 200) return -200;
+  if (l201 != l + 201) return -201;
+  if (i203 != 203) return -203;
+  if (l204 != l + 204) return -204;
+  if (i206 != 206) return -206;
+  if (l207 != l + 207) return -207;
+  if (i209 != 209) return -209;
+  if (l210 != l + 210) return -210;
+  if (i212 != 212) return -212;
+  if (l213 != l + 213) return -213;
+  if (i215 != 215) return -215;
+  if (l216 != l + 216) return -216;
+  if (i218 != 218) return -218;
+  if (l219 != l + 219) return -219;
+  if (i221 != 221) return -221;
+  if (l222 != l + 222) return -222;
+  if (i224 != 224) return -224;
+  if (l225 != l + 225) return -225;
+  if (i227 != 227) return -227;
+  if (l228 != l + 228) return -228;
+  if (i230 != 230) return -230;
+  if (l231 != l + 231) return -231;
+  if (i233 != 233) return -233;
+  if (l234 != l + 234) return -234;
+  if (i236 != 236) return -236;
+  if (l237 != l + 237) return -237;
+  if (i239 != 239) return -239;
+  if (l240 != l + 240) return -240;
+  if (i242 != 242) return -242;
+  if (l243 != l + 243) return -243;
+  if (i245 != 245) return -245;
+  if (l246 != l + 246) return -246;
+  if (i248 != 248) return -248;
+  if (l249 != l + 249) return -249;
+  if (i251 != 251) return -251;
+  if (l252 != l + 252) return -252;
+  if (i254 != 254) return -254;
+  return 42;
+}
+
 }  // namespace art
