This directory contains the code for the native client verifier (ncv) which checks whether binaries adhere to certain control flow and instruction set restrictions. It assumes that segment registers are used to control memory accesses. Note: Although the current builds generate 64-bit versions, they do not make any sense, since segment registers have little effect in x86-64. Debugging --------- Many of the source files contain #define DEBUGGING flags. When DEBUGGING is set to 1, additional debugging print messages are compiled into the code. Unfortunately, by default, these message frequently call routines that are not compiled into corresponding executables (such as ncval and ncdis). To add the additional routines, edit file native_client/site_scons/site_tools/library_deps.py For x86-32, edit lines # When turning on the DEBUGGING flag in the x86-32 validator # or decoder, add the following: #'nc_opcode_modeling_verbose_x86_32', to # When turning on the DEBUGGING flag in the x86-32 validator # or decoder, add the following: 'nc_opcode_modeling_verbose_x86_32', For x86-64, edit lines # When turning on the DEBUGGING flag in the x86-64 validator # or decoder, add the following: # 'nc_opcode_modeling_verbose_x86_64', to # When turning on the DEBUGGING flag in the x86-64 validator # or decoder, add the following: 'nc_opcode_modeling_verbose_x86_64', These changes will make sure that the corresponding print routines are added to the executables during link time.