| OLD | NEW |
| (Empty) |
| 1 /* | |
| 2 * Copyright (c) 2011 The Native Client Authors. All rights reserved. | |
| 3 * Use of this source code is governed by a BSD-style license that can be | |
| 4 * found in the LICENSE file. | |
| 5 */ | |
| 6 | |
| 7 /* | |
| 8 * ncdis_segments.h - Common routine for disassembling a block of code. | |
| 9 */ | |
| 10 | |
| 11 #ifndef NATIVE_CLIENT_SRC_TRUSTED_VALIDATOR_X86_NCDIS_SEGMENTS_H_ | |
| 12 #define NATIVE_CLIENT_SRC_TRUSTED_VALIDATOR_X86_NCDIS_SEGMENTS_H_ | |
| 13 | |
| 14 #ifndef NACL_TRUSTED_BUT_NOT_TCB | |
| 15 #error("This file is not meant for use in the TCB") | |
| 16 #endif | |
| 17 | |
| 18 #include "native_client/src/shared/utils/types.h" | |
| 19 #include "native_client/src/trusted/validator/types_memory_model.h" | |
| 20 | |
| 21 /* Flags that can be passed to the disassembler */ | |
| 22 typedef enum NaClDisassembleFlag { | |
| 23 /* Use the full decoder to disassemble the instruction. */ | |
| 24 NaClDisassembleFull, | |
| 25 /* Use the dissassembler associated with the corresponding decoder. */ | |
| 26 NaClDisassembleValidatorDecoder, | |
| 27 /* If additional internal information is available about the disassembled | |
| 28 * instruction, print it also. | |
| 29 */ | |
| 30 NaClDisassembleAddInternals, | |
| 31 } NaClDisassembleFlag; | |
| 32 | |
| 33 /* Defines an integer to represent sets of possible disassembler flags. */ | |
| 34 typedef uint8_t NaClDisassembleFlags; | |
| 35 | |
| 36 /* Converts a NaClDisssembleFlag to the corresponding bit in | |
| 37 * NaClDisassembleFlags. | |
| 38 */ | |
| 39 #define NACL_DISASSEMBLE_FLAG(x) (((NaClDisassembleFlags) 1) << (x)) | |
| 40 | |
| 41 /* Returns Bool flag defining if given flag is in the set of | |
| 42 * disassemble flags. | |
| 43 */ | |
| 44 Bool NaClContainsDisassembleFlag(NaClDisassembleFlags flags, | |
| 45 NaClDisassembleFlag flag); | |
| 46 | |
| 47 /* Disassemble the code segment, following the rules specified by | |
| 48 * the given set of flags. | |
| 49 * | |
| 50 * Parameters: | |
| 51 * mbase - Memory region containing code segment. | |
| 52 * vbase - PC address associated with first byte of memory region. | |
| 53 * size - Number of bytes in memory region. | |
| 54 * flags - Flags to use when decoding. | |
| 55 */ | |
| 56 void NaClDisassembleSegment(uint8_t* mbase, NaClPcAddress vbase, | |
| 57 NaClMemorySize size, NaClDisassembleFlags flags); | |
| 58 | |
| 59 #endif /* NATIVE_CLIENT_SRC_TRUSTED_VALIDATOR_X86_NCDIS_SEGMENTS_H_ */ | |
| OLD | NEW |