Index: src/trusted/validator_x86/ncdecode_tests.c |
diff --git a/src/trusted/validator_x86/ncdecode_tests.c b/src/trusted/validator_x86/ncdecode_tests.c |
deleted file mode 100644 |
index 5b57eaa2c06e087fbd13fd2e1a7c9c5bbc1d8b40..0000000000000000000000000000000000000000 |
--- a/src/trusted/validator_x86/ncdecode_tests.c |
+++ /dev/null |
@@ -1,350 +0,0 @@ |
-/* |
- * Copyright (c) 2011 The Native Client Authors. All rights reserved. |
- * Use of this source code is governed by a BSD-style license that can be |
- * found in the LICENSE file. |
- */ |
- |
-/* |
- * ncdecode_tests.c - simple unit tests for NaCl decoder |
- */ |
- |
-#ifndef NACL_TRUSTED_BUT_NOT_TCB |
-#error("This file is not meant for use in the TCB") |
-#endif |
- |
-#include <stdio.h> |
-#include "native_client/src/shared/gio/gio.h" |
-#include "native_client/src/shared/platform/nacl_log.h" |
-#include "native_client/src/trusted/validator/x86/ncval_seg_sfi/ncdecode.h" |
-#include "native_client/src/trusted/validator/x86/ncval_seg_sfi/ncdecode_verbose.h" |
- |
-struct NCDecodeTestCase { |
- char *description; |
- size_t testsize; |
- uint8_t *testbytes; |
-}; |
- |
-struct NCDecodeTestCase NCDecoderTests[] = { |
- { |
- "test 1", |
- 25, |
- (uint8_t *)"\x55" |
- "\x89\xe5" |
- "\x83\xec\x08" |
- "\xe8\x81\x00\x00\x00" |
- "\xe8\xd3\x00\x00\x00" |
- "\xe8\xf3\x04\x00\x00" |
- "\xc9" |
- "\xc3" |
- "\x00\x00", |
- }, |
- { |
- "test2", |
- 341, |
- (uint8_t *)"\x8d\x4c\x24\x04" |
- "\x83\xe4\xf0" |
- "\xff\x71\xfc" |
- "\x55" |
- "\x89\xe5" |
- "\x51" |
- "\x66\x90" |
- "\x83\xec\x24" |
- "\x89\x4d\xe8" |
- "\xc7\x45\xf4\x0a\x00\x00\x00" |
- "\x8b\x45\xe8" |
- "\x83\x38\x01" |
- "\x7f\x2b" |
- "\x8b\x55\xe8" |
- "\x8b\x42\x04" |
- "\x8b\x00" |
- "\x8d\x76\x00" |
- "\x89\x44\x24\x04" |
- "\xc7\x04\x24\x54\x14\x00\x08" |
- "\xe8\xc0\x02\x00\x00" |
- "\xc7\x04\x24\x01\x00\x00\x00" |
- "\x8d\x74\x26\x00" |
- "\xe8\xc0\x01\x00\x00" |
- "\x8b\x55\xe8" |
- "\x8b\x42\x04" |
- "\x83\xc0\x04" |
- "\x8b\x00" |
- "\x89\x04\x24" |
- "\x66\x90" |
- "\x8d\x74\x26\x00" |
- "\x8d\xbc\x27\x00\x00\x00\x00" |
- "\xe8\x90\x09\x00\x00" |
- "\x89\x45\xf8" |
- "\x8b\x45\xe8" |
- "\x83\x38\x02" |
- "\x7e\x25" |
- "\x8b\x55\xe8" |
- "\x66\x90" |
- "\x8b\x42\x04" |
- "\x83\xc0\x08" |
- "\x8b\x00" |
- "\x89\x04\x24" |
- "\xe8\x70\x09\x00\x00" |
- "\x89\x45\xf4" |
- "\x8d\xb6\x00\x00\x00\x00" |
- "\x8d\xbc\x27\x00\x00\x00\x00" |
- "\x8b\x45\xf4" |
- "\xa3\x28\x2f\x00\x08" |
- "\xeb\x26" |
- "\x8d\xb6\x00\x00\x00\x00" |
- "\xc7\x44\x24\x08\x03\x00\x00\x00, " |
- "\xc7\x44\x24\x04\x01\x00\x00\x00, " |
- "\x8b\x45\xf4" |
- "\x89\x04\x24" |
- "\x90" |
- "\x8d\x74\x26\x00" |
- "\xe8\x20\x00\x00\x00" |
- "\x83\x7d\xf8\x00" |
- "\x0f\x9f\xc0" |
- "\x83\x6d\xf8\x01" |
- "\x84\xc0" |
- "\x8d\x76\x00" |
- "\x75\xce" |
- "\xc7\x04\x24\x00\x00\x00\x00" |
- "\x66\x90" |
- "\xe8\x20\x01\x00\x00" |
- "\x55" |
- "\x89\xe5" |
- "\x83\xec\x1c" |
- "\x83\x7d\x08\x01" |
- "\x75\x44" |
- "\x8b\x55\x0c" |
- "\x90" |
- "\x8b\x04\x95\x24\x2f\x00\x08" |
- "\x83\xe8\x01" |
- "\x8d\xb6\x00\x00\x00\x00" |
- "\x89\x04\x95\x24\x2f\x00\x08" |
- "\x8b\x55\x10" |
- "\x8d\xb6\x00\x00\x00\x00" |
- "\x8b\x04\x95\x24\x2f\x00\x08" |
- "\x83\xc0\x01" |
- "\x8d\xb6\x00\x00\x00\x00" |
- "\x89\x04\x95\x24\x2f\x00\x08" |
- "\xeb\x77" |
- "\x8d\xb4\x26\x00\x00\x00\x00" |
- "\x8b\x45\x10" |
- "\x8b\x55\x0c" |
- "\x01\xc2" |
- "\xb8\x06\x00\x00\x00" |
- "\x29\xd0" |
- "\x90" |
- }, |
- { |
- "test 3", |
- 9, |
- (uint8_t *)"\x3c\x25" |
- "\x90\x90\x90\x90\x90\x90\x90" |
- }, |
- { "test4", |
- 13, |
- (uint8_t *)"\xc1\xf9\x1f\x89\x4d\xe4" |
- "\x90\x90\x90\x90\x90\x90\x90" |
- }, |
- { |
- "test5", |
- 12, |
- (uint8_t *)"\xc6\x44\x05\xd6\x00" |
- "\x90\x90\x90\x90\x90\x90\x90" |
- }, |
- { |
- "test6", |
- 14, |
- (uint8_t *)"\xff\x24\x95\xc8\x6e\x05\x08" |
- "\x90\x90\x90\x90\x90\x90\x90" |
- }, |
- { |
- "test7", |
- 15, |
- (uint8_t *)"\x0f\xab\x14\x85\x40\xfb\x27\x08" |
- "\x90\x90\x90\x90\x90\x90\x90" |
- }, |
- { |
- "test8", |
- 11, |
- (uint8_t *)"\x66\xbf\x08\x00" |
- "\x90\x90\x90\x90\x90\x90\x90" |
- }, |
- { |
- "test9", |
- 12, |
- (uint8_t *)"\x66\x0f\xbe\x04\x10" |
- "\x90\x90\x90\x90\x90\x90\x90" |
- }, |
- /* ldmxcsr, stmxcsr */ |
- { |
- "test10", |
- 15, |
- (uint8_t *)"\x90\x0f\xae\x10\x90\x0f\xae\x18" |
- "\x90\x90\x90\x90\x90\x90\x90" |
- }, |
- /* invalid */ |
- { |
- "test11", |
- 11, |
- (uint8_t *)"\x90\x0f\xae\x21" |
- "\x90\x90\x90\x90\x90\x90\x90" |
- }, |
- /* lfence */ |
- { |
- "test12", |
- 11, |
- (uint8_t *)"\x90\x0f\xae\x28" |
- "\x90\x90\x90\x90\x90\x90\x90" |
- }, |
- { |
- "test13", |
- 9, |
- (uint8_t *)"\xf0\x0f\xb1\x8f\xa8\x01\x00\x00" |
- "\x90" |
- }, |
- { |
- "test14", |
- 17, |
- (uint8_t *)"\x84\xd4\x04\x53\xa0\x04\x6a\x5a\x20\xcc\xb8\x48\x03" |
- "\x2b\x96\x11\xf4" |
- }, |
- { |
- "test15", |
- 17, |
- (uint8_t *)"\xb0\xb9\xd8\x3d\x60\xe4\x2c\x15\x43\x61\x4e\x03\x39" |
- "\xfc\x79\x4b\xf4" |
- }, |
- { |
- "test16", |
- 17, |
- (uint8_t *)"\x66\x66\x66\x66\x0f\x1f\x0d\x1a\xed\x25\x37\x27\x0a" |
- "\xff\xc6\x1a\xf4" |
- }, |
- { |
- "test17", |
- 18, |
- (uint8_t *)"\x66\xeb\x1b\x31\x51\x3d\xef\xcc\x2f\x36\x48\x6e\x44" |
- "\x2e\xcc\x14\x00\xf4" |
- }, |
- { |
- "test18", |
- 17, |
- (uint8_t *)"\x67\x8d\x1d\x22\xa0\x05\xe3\x7b\x9c\xdb\x08\x04\xb1" |
- "\x90\xed\x12\xf4" |
- }, |
- { |
- "test 19", |
- 20, |
- (uint8_t *)"\x45\x7f\x89\x58\x94\x04\x24\x1b\xc3\xe2\x6f\x1a\x94\x87\x8f\x0b\x00\x00\x90\xf4", |
- }, |
- { |
- "test 20", |
- 8, |
- (uint8_t *)"\x66\x0f\x3a\x0e\xd0\xc0\x90\xf4" |
- }, |
- { |
- "test 21: palignr (SSSE3)", |
- 8, |
- (uint8_t *)"\x66\x0f\x3a\x0f\xd0\xc0\x90\xf4" |
- }, |
- { |
- "test 22: SSSE3", |
- 8, |
- (uint8_t *)"\x66\x0f\x38\x00\x00\x00\x90\xf4" |
- }, |
- { |
- "test 23: 3DNow", |
- 7, |
- (uint8_t *)"\x0f\x0f\x46\x01\xbf\x90\xf4" |
- }, |
- { |
- "test 24: SSSE3 error", |
- 8, |
- (uint8_t *)"\x66\x0f\x3a\x0e\xd0\xc0\x90\xf4" |
- }, |
- { |
- "test 25: lzcnt", |
- 6, |
- (uint8_t *)"\xf3\x0f\xbd\x00\x90\xf4", |
- }, |
- { |
- "test 26: 3dnow", |
- 6, |
- (uint8_t *)"\x0f\x0f\x01\x0c\x90\xf4", |
- }, |
- { |
- "test 27: addr16 variants", |
- 17, |
- (uint8_t *)"\x67\x01\x00" |
- "\x67\x01\x40\x00" |
- "\x67\x01\x80\x00\x90" |
- "\x67\x01\xc0" |
- "\x90\xf4", |
- }, |
- { |
- "test 28: lock cmpxchg8b", |
- 6, |
- (uint8_t *)"\xf0\x0f\xc7\010\x90\xf4" |
- }, |
- { |
- "test 29: SSE3", |
- 8, |
- (uint8_t *)"\x66\x0f\x7d\x00\x90\x90\x90\xf4" |
- }, |
- { |
- "test 30: MMXSSE2", |
- 10, |
- (uint8_t *)"\x66\x0f\x71\xf6\x00\x90\x90\x90\x90\xf4", |
- }, |
- { |
- "test 31: call %esp", |
- 7, |
- /* 11 100 000 */ |
- (uint8_t *)"\x83\xe4\xf0\xff\xd4\x90\xf4", |
- }, |
- { |
- "test 32: roundss", |
- 9, |
- (uint8_t *)"\x66\x0f\x3a\x0a\xc0\x00" |
- "\x90\x90" |
- "\xf4", |
- }, |
- { |
- "test 33: crc32", |
- 8, |
- (uint8_t *)"\xf2\x0f\x38\xf1\xc3" |
- "\x90\x90" |
- "\xf4", |
- }, |
- { |
- "test 34: SSE4", |
- 8, |
- (uint8_t *)"\x66\x0f\x38\x0a\xd0\x90\x90\xf4" |
- } |
-}; |
- |
-#define sizeofA(array) (sizeof(array)/sizeof(array[0])) |
-void ncdecode_unittests(void) { |
- size_t i; |
- |
- for (i = 0; i < sizeofA(NCDecoderTests); i++) { |
- printf("==========================================================\n"); |
- printf("%s\n", NCDecoderTests[i].description); |
- NCDecodeSegment(NCDecoderTests[i].testbytes, |
- (uint32_t)(NCDecoderTests[i].testbytes), |
- NCDecoderTests[i].testsize); |
- } |
-} |
- |
-int main(void) { |
- struct GioFile gio_out_stream; |
- struct Gio *gout = (struct Gio*) &gio_out_stream; |
- if (!GioFileRefCtor(&gio_out_stream, stdout)) { |
- fprintf(stderr, "Unable to create gio file for stdout!\n"); |
- return 1; |
- } |
- NaClLogModuleInitExtended(LOG_INFO, gout); |
- ncdecode_unittests(); |
- printf("PASSED\n"); |
- GioFileDtor(gout); |
- return 0; |
-} |