Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(122)

Unified Diff: src/trusted/validator/x86/testing/enuminsts/nacl_tester.c

Issue 9861030: Modify enuminsts to be able to communicate matched instructions accross (Closed) Base URL: svn://svn.chromium.org/native_client/trunk/src/native_client/
Patch Set: Created 8 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: src/trusted/validator/x86/testing/enuminsts/nacl_tester.c
===================================================================
--- src/trusted/validator/x86/testing/enuminsts/nacl_tester.c (revision 8125)
+++ src/trusted/validator/x86/testing/enuminsts/nacl_tester.c (working copy)
@@ -49,7 +49,7 @@
Bool _ignore_instructions_not_xed_implemented;
} nacl_decoder;
-static Bool IsInstLegal(NaClEnumerator *enumerator) {
+static Bool IsInstLegal(const NaClEnumerator *enumerator) {
return !nacl_decoder._ignore_instruction &&
NaClInstDecodesCorrectly(nacl_decoder._inst);
}
@@ -57,7 +57,7 @@
/* Instructions we assume that the NaCl validator accept and are valid, but
* are not legal according to xed.
*/
-static Bool NaClIsntXedImplemented(NaClEnumerator *enumerator) {
+static Bool NaClIsntXedImplemented(const NaClEnumerator *enumerator) {
static const char* nacl_but_not_xed[] = {
"Pf2iw",
"Pf2id"
@@ -73,7 +73,8 @@
}
/* Defines the funcdtion to parse the first instruction. */
-static void ParseInst(NaClEnumerator* enumerator, int pc_address) {
+static void ParseInst(const NaClEnumerator* enumerator,
+ const int pc_address) {
nacl_decoder._inst = NULL;
nacl_decoder._ignore_instruction = FALSE;
nacl_decoder._pc_address = pc_address;
@@ -83,7 +84,8 @@
nacl_decoder._mnemonic_lower[0] = 0;
nacl_decoder._operands[0] = 0;
nacl_decoder._inst =
- NaClParseInst(enumerator->_itext, enumerator->_num_bytes, pc_address);
+ NaClParseInst((char*) enumerator->_itext,
+ enumerator->_num_bytes, pc_address);
if (nacl_decoder._ignore_instructions_not_xed_implemented &&
IsInstLegal(enumerator)) {
nacl_decoder._ignore_instruction = NaClIsntXedImplemented(enumerator);
@@ -92,7 +94,7 @@
/* Returns the disassembled instruction. */
-static const char* Disassemble(NaClEnumerator* enumerator) {
+static const char* Disassemble(const NaClEnumerator* enumerator) {
char* stmp;
/* First see if we have cached it. If so, return it. */
@@ -105,7 +107,7 @@
}
/* Returns the lower case name of the instruction. */
-static const char* GetInstMnemonicLower(NaClEnumerator* enumerator) {
+static const char* GetInstMnemonicLower(const NaClEnumerator* enumerator) {
char mnemonic[kBufferSize];
size_t i;
@@ -129,7 +131,7 @@
/* Returns the disassembled instruction with the opcode byte sequence
* removed.
*/
-static const char* SimplifiedDisassembly(NaClEnumerator *enumerator) {
+static const char* SimplifiedDisassembly(const NaClEnumerator *enumerator) {
const char* disassembly;
const char* mnemonic;
const char* start;
@@ -181,7 +183,7 @@
}
/* Returns the mnemonic name for the disassembled instruction. */
-static const char* GetInstMnemonic(NaClEnumerator* enumerator) {
+static const char* GetInstMnemonic(const NaClEnumerator* enumerator) {
char mnemonic[kBufferSize];
const char* disassembly;
@@ -224,7 +226,7 @@
/* Returns the text for the operands. To be used by the driver
* to compare accross decoders.
*/
-static const char* GetInstOperandsText(NaClEnumerator* enumerator) {
+static const char* GetInstOperandsText(const NaClEnumerator* enumerator) {
char sbuf[kBufferSize];
char operands[kBufferSize];
const char* disassembly;
@@ -244,54 +246,37 @@
}
/* Prints out the disassembled instruction. */
-static void PrintInst(NaClEnumerator* enumerator) {
- int i;
- uint8_t length = NaClInstLength(nacl_decoder._inst);
- if (enumerator->_print_opcode_bytes_only) {
- for (i = 0; i < length; ++i) {
- printf("%02x", enumerator->_itext[i]);
- }
- printf("\n");
- } else {
- if (enumerator->_print_enumerated_instruction) {
- for (i = 0; i < length; ++i) {
- printf("%02x ", enumerator->_itext[i]);
- }
- printf("#%s %s\n", GetInstMnemonic(enumerator),
- GetInstOperandsText(enumerator));
- } else {
- printf(" NaCl: %s", Disassemble(enumerator));
- }
- }
+static void PrintInst(const NaClEnumerator* enumerator) {
+ printf(" NaCl: %s", Disassemble(enumerator));
}
/* Returns the number of bytes in the disassembled instruction. */
-static size_t InstLength(NaClEnumerator* enumerator) {
+static size_t InstLength(const NaClEnumerator* enumerator) {
return (size_t) NaClInstLength(nacl_decoder._inst);
}
/* Returns true if the instruction decodes, and static (single instruction)
* validator tests pass.
*/
-static Bool MaybeInstValidates(NaClEnumerator *enumerator) {
- return NaClInstValidates(enumerator->_itext,
+static Bool MaybeInstValidates(const NaClEnumerator *enumerator) {
+ return NaClInstValidates((char*) enumerator->_itext,
NaClInstLength(nacl_decoder._inst),
nacl_decoder._pc_address,
nacl_decoder._inst);
}
/* Runs the validator on the given code segment. */
-static Bool SegmentValidates(NaClEnumerator *enumerator,
- uint8_t* segment,
- size_t size,
- int pc_address) {
- return NaClSegmentValidates(segment, size, pc_address);
+static Bool SegmentValidates(const NaClEnumerator *enumerator,
+ const uint8_t* segment,
+ const size_t size,
+ const int pc_address) {
+ return NaClSegmentValidates((uint8_t*) segment, size, pc_address);
}
/* Installs NaCl-specific flags. */
-static void InstallFlag(NaClEnumerator* enumerator,
+static void InstallFlag(const NaClEnumerator* enumerator,
const char* flag_name,
- void* flag_address) {
+ const void* flag_address) {
if (0 == strcmp(flag_name, "--nops")) {
nacl_decoder._translate_to_xed_nops = *((Bool*) flag_address);
} else if (0 == strcmp(flag_name, "--xedimplemented")) {
@@ -303,8 +288,6 @@
/* Generates a decoder for the (sel_ldr) nacl validator. */
NaClEnumeratorDecoder* RegisterNaClDecoder() {
nacl_decoder._base._id_name = "nacl";
- nacl_decoder._base._legal_only = TRUE;
- nacl_decoder._base._print_only = FALSE;
nacl_decoder._base._parse_inst_fn = ParseInst;
nacl_decoder._base._inst_length_fn = InstLength;
nacl_decoder._base._print_inst_fn = PrintInst;
« no previous file with comments | « src/trusted/validator/x86/testing/enuminsts/input_tester.c ('k') | src/trusted/validator/x86/testing/enuminsts/str_utils.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698