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

Unified Diff: src/trusted/validator/x86/testing/enuminsts/README.txt

Issue 625923004: Delete old x86 validator. (Closed) Base URL: svn://svn.chromium.org/native_client/trunk/src/native_client
Patch Set: rebase master Created 6 years, 2 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/README.txt
diff --git a/src/trusted/validator/x86/testing/enuminsts/README.txt b/src/trusted/validator/x86/testing/enuminsts/README.txt
deleted file mode 100644
index 2e489a8500f6d845d7ed66d8e3565a4a7066fca6..0000000000000000000000000000000000000000
--- a/src/trusted/validator/x86/testing/enuminsts/README.txt
+++ /dev/null
@@ -1,175 +0,0 @@
-Copyright (c) 2012 The Native Client Authors. All rights reserved.
-Use of this source code is governed by a BSD-style license that be
-found in the LICENSE file.
-
-************************************************************************
- NOTE: The Scons version of enuminst is documented in README_scons.txt.
- It has less functionality than the Makefile version.
-************************************************************************
-
-Exhaustive instruction enumeration test for x86 Native Client decoder.
-Limited testing of validator.
-
-This test performs an exhaustive enumeration of x86 instructions,
-comparing two or more decoders. Specific decoders it can compare are:
- * the old Native Client production decoders (both 32- and 64-bit)
- * the new ragel-based Native Client decoders
- * the XED decoder from Intel
-
-For each instruction enuminst can compare:
- * instruction validity (still being worked on in x86-32)
- * instruction length
- * opcodes (64-bit only)
-
-
-Building enuminsts-32 and enuminsts-64
-
-Enuminsts can be built in 32- and 64-bit variants using:
- % make BITS=32 clean enuminsts-64
- % make BITS=64 clean enuminsts-32
-To build for Ragel use:
- % make BITS=64 RAGEL=1 clean enuminsts-64
-The Makefile does not do proper dependency checking, so please use
-a clean build. The build will fail if the required NaCl libraries
-are not already built.
-
-By default, the build assumes that you have downloaded a (Pin) version of
-xed. See variable PINV in Makefile to see the version assumed. You can
-specify the xed on the command line, allowing use other versions of xed.
-
-Running enuminsts
---------------------
-The instructions that follow are for enuminsts-64; the same identical
-instructions should work for enuminsts-32 as well.
-
-Enuminsts requires that you specify one or more filters to indicate how
-to process instructions produced by the enumeration. For example:
- % enuminsts-64 --legal=nacl --illegal=xed --print=xed
-will filter instructions that decode for NaCl but don't decode for Xed,
-and then uses Xed to print the instructions. You can induce additional
-NaCl validation checking with the --nacllegal flag:
- % enuminsts-64 --nacllegal --illegal=nacl --legal=ragel --print=ragel
-This causes enuminsts to apply limited validator checks (instruction
-type) in addition to decoder problems.
-
-Enuminsts-64 supports a --help option to see all command-line options:
- % ./enuminsts-32 --help
-
-
-Testing against the NaCl baseline
----------------------------------
-TODO(kschimpf): rewrite this section. It seems incorrect.
-
-Included in this directory is (one or more) frozen versions of the
-enumerator, named "enuminsts-XX-NNNNN" where XX in {32, 64}, and NNNNN
-is the nacl revision number used to generate the executable.
-
-The (shell) file "enuminsts-64-baseline" is a canned script that pipes
-a run of "enuminsts-XX-NNNNN" into "enuminsts-64", using the input
-decoder on the output generated by "enuminsts-XX-NNNNN". The command
-line arguments to "enuminsts-64-baseline" are passed to the latter
-executable "enuminsts-64".
-
-To see possible (valid) arguments, run:
-
- .> ./enuminsts-64-baseline --help
-
-The purpose of this run is that the baseline has been defined so that
-it generates a large, valid set of x86-64 instructions, and then
-(though enuminsts-64) allows you to run these instructions on any of
-the valid decoders.
-
-To run a decoder DDD on the set of (legal) baseline instructions, run:
-
- .> ./enuminsts-64-baseline --DDD
-
-Note: you can add additional command line arguments. To see them, add
-the "--Help" option to the command line.
-
-Building enuminsts with a XED decoder
--------------------------------------
-
-Before building enuminsts with a xed decoder, you must download
-Intel's xed decoder, distributed as part of PIN. It is available for
-free from
-
- http://www.pintool.org.
-
-The default for the Makefile is PIN version 2.10-45467. However, any
-version can be used if you specify "PINV=VVVVVVVVVVV" (where
-VVVVVVVVVV is the PIN version you downloaded). To build enuminsts
-with xed, run
-
- .> make BITS=XX PINV=VVVVVVVVVVV XED=1
-
-where BITS in {32, 64} and VVVVVVVVVV is the PIN version you
-downloaded. This will build the executable enuminsts-XX-xed.
-
-Building a new baseline
------------------------
-
-To build a new baseline, you need to build a frozen executable
-of the form enuminsts-XX-NNNNN by running the command:
-
- .> make BITS=64 NACLV=NNNNN
-
-where NNNNN is the revision number of the corresponding generated NaCl
-(scons) libraries. This will build executable
-"enuminsts-64-NNNNN". You also need to build a copy of enuminsts with
-a xed decoder (see "Building enuminsts with a xed decoder").
-
-Once both executables have been built, edit shell file
-enuminsts-64-legal to define the command line arguments you believe
-will generate legal instructions, and pipe the corresponding opcode
-sequences to the output (i.e. use options --opcode_bytes or
---opcode_bytes_plus_dec).
-
-To test that you have generated the correct command line arguments,
-run:
-TODO(kschimpf): check this; looks wrong.
- .> ./enuminsts-64-baseline-test
-
-This shell file will perform two runs of enuminsts-64-legal. The first
-will compare the set of generated instructions against the xed decoder
-to find instructions that are legal in both. The second will then
-compare the set of generated instructions against the xed decoder to
-find instructions that are not understood by xed. If you have your
-arguments right, no error messages will be reported in either step.
-
-If enuminsts-64-baseline-test doesn't generate any errors, you have
-found an acceptable new baseline, and you can install it. If you get
-errors, but are only generated in the first pass, you can still use
-enuminsts-64-baseline for the baseline. However, any instruction for
-which an error is reported in the first pass, will not be generated by
-the baseline.
-
-If you get errors in the second pass (which tests if the generated
-instructions are invalid according to xed), you need to change your
-parameters in enuminsts-64-legal. These errors represent bad
-instruction opcodes that will be generated by the baseline.
-
-Brad's Notes on testing Ragel:
-------------------------------
-enuminsts-64 --legal=nacl --legal=ragel
- Compare lengths of instructions that decode for both nacl and ragel.
- As of April 2012 there were a lot of these.
-
-enuminsts-64 --illegal=nacl --legal=ragel --print=ragel
- Identifies instructions decoded by ragel but not by nacl
-
-enuminsts-64 --legal=nacl --illegal=ragel --print=nacl
- Identifies instructions decoded by nacl but not by ragel
-
-When Ragel supports a partial-validation mode, checking if a single
-instruction might be legal (ignoring inter-instruction rules) these
-tests should be useful:
-
-enuminsts-64 --nacllegal --legal=nacl --illegal=ragel --print=ragel
- Print's instructions accepted by NaCl but not Ragel
-
-enuminsts-64 --nacllegal --legal=ragel --illegal=nacl print=nacl
- Print's instructions legal for Ragel but not NaCl.
- Currently, no problems!
-
-enuminsts-64 --nacl --ragel
- Compares instruction length only.

Powered by Google App Engine
This is Rietveld 408576698