| Index: src/trusted/validator/x86/ncinstbuffer.h
|
| diff --git a/src/trusted/validator/x86/ncinstbuffer.h b/src/trusted/validator/x86/ncinstbuffer.h
|
| deleted file mode 100644
|
| index 8b07b43f630bfb33c75ef969b449470447a4d1bb..0000000000000000000000000000000000000000
|
| --- a/src/trusted/validator/x86/ncinstbuffer.h
|
| +++ /dev/null
|
| @@ -1,242 +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 can be
|
| - * found in the LICENSE file.
|
| - */
|
| -
|
| -/*
|
| - * ncinstbuffer.h - Models bytes of matched instruction.
|
| - *
|
| - * Separates memory into two parts. The first is a block
|
| - * of memory corresponding to the code segment, that needs
|
| - * to be parsed to find instructions. The second is a copy
|
| - * of the bytes read that corresponds to the current parsed
|
| - * instruction.
|
| - *
|
| - * Note: We intentionally create a copy of the instruction bytes,
|
| - * since the parsed instruction may be longer than the actual
|
| - * code segment. In such cases, the memory segment reader automatically
|
| - * fills in any extra reads with a zero byte value.
|
| - */
|
| -#ifndef NATIVE_CLIENT_SRC_TRUSTED_VALIDATOR_X86_NCINSTBUFFER_H_
|
| -#define NATIVE_CLIENT_SRC_TRUSTED_VALIDATOR_X86_NCINSTBUFFER_H_
|
| -
|
| -#include "native_client/src/include/portability.h"
|
| -#include "native_client/src/trusted/validator/types_memory_model.h"
|
| -
|
| -EXTERN_C_BEGIN
|
| -
|
| -struct NCValidatorState;
|
| -
|
| -/* Types of errors that can occur while parsing the memory segment. */
|
| -typedef enum {
|
| - /* Read past the end of the memory segment. Note: this problem will also
|
| - * be noted by byte overflow_count > 0 in the NCRemainingMemory structure.
|
| - */
|
| - NCRemainingMemoryOverflow,
|
| - /* Too many bytes in an instruction, and can't fit in instruction buffer. */
|
| - NCInstBufferOverflow,
|
| - /* An unknown error occurred while parsing the memory segment. */
|
| - NCUnknownMemoryError
|
| -} NCRemainingMemoryError;
|
| -
|
| -struct NCRemainingMemory;
|
| -
|
| -/* Type of routine to call if an error occurs parsing the memory segment
|
| - * into an instruction buffer. Note: memory handling code will apply
|
| - * recovery rules if the corresponding error function returns.
|
| - */
|
| -typedef void (*NCRemainingMemoryErrorFn)(NCRemainingMemoryError error,
|
| - struct NCRemainingMemory* memory);
|
| -
|
| -/* Structure holding the memory segment to be parsed.
|
| - * Note: In general, unless doing a post mortem on what happened,
|
| - * you should not access fields. Rather use the API functions below.
|
| - */
|
| -typedef struct NCRemainingMemory {
|
| - /* The next byte in memory, or 0x00 if the memory segment has been
|
| - * completely parsed.
|
| - */
|
| - uint8_t next_byte;
|
| - /* Pointer to the next character to read from the memory segment. */
|
| - uint8_t* cur_pos;
|
| - /* Pointer to the byte after the end of the memory segment. */
|
| - uint8_t* mlimit;
|
| - /* Pointer to the beginning of the current instruction in memory
|
| - * segment being parsed.
|
| - */
|
| - uint8_t* mpc;
|
| - /* The actual number of bytes read from the memory segment for the
|
| - * current instruction being parsed.
|
| - */
|
| - uint8_t read_length;
|
| - /* The number of additional (0x00) bytes added, so that we could parse
|
| - * the instruction.
|
| - */
|
| - uint8_t overflow_count;
|
| - /* The error reporting function to use. Defaults to
|
| - * NCRemainingMemoryReportError. Caller should set this immediately
|
| - * after calling NCRemainingMemoryInit, if a different error reporting
|
| - * function should be used.
|
| - */
|
| - NCRemainingMemoryErrorFn error_fn;
|
| - /* Additional state associated with the memory segment.
|
| - * Caller should set this immdiately after calling NCRemainingMemoryInit.
|
| - * Used to communicate additional state to the validator error function.
|
| - * Initialized to NULL in NCRemainingMemoryInit.
|
| - * Note: The type is not specified since the notion of state is
|
| - * decoder/validator specific, and corresponds to additional state
|
| - * that may be needed by field error_fn. This field, by default is set
|
| - * to NULL. When setting field error_fn, one can also set this field to
|
| - * a corresponding structure that holds additional information for reporting
|
| - * errors.
|
| - */
|
| - void* error_fn_state;
|
| -} NCRemainingMemory;
|
| -
|
| -/* Initialize the (remaining) memory to the memory segment beginning
|
| - * at memory_base, and containing size bytes.
|
| - */
|
| -void NCRemainingMemoryInit(uint8_t* memory_base, NaClMemorySize size,
|
| - NCRemainingMemory* memory);
|
| -
|
| -/* Returns the next byte in the memory segment, or 0x00 if at the
|
| - * end of the memory segment.
|
| - * Note: Same as NCRemainingMemoryLookahead(m, 0). Written as macro
|
| - * for performance (using a cached field next_byte).
|
| - */
|
| -#define NCRemainingMemoryGetNext(m) ((m)->next_byte)
|
| -
|
| -/* Looks ahead N bytes into the memory, and returns the corresponding
|
| - * byte, or 0x00 if at the end of memory. i is zero-based.
|
| - */
|
| -uint8_t NCRemainingMemoryLookahead(NCRemainingMemory* memory, ssize_t n);
|
| -
|
| -/* Reads and returns the next byte in the memory segment. Returns 0x00 if at
|
| - * the end of the memory segment.
|
| - */
|
| -uint8_t NCRemainingMemoryRead(NCRemainingMemory* memory);
|
| -
|
| -/* Moves back to the beginning of the current instruction in
|
| - * the memory segment.
|
| - */
|
| -void NCRemainingMemoryReset(NCRemainingMemory* memory);
|
| -
|
| -/* Starts a new instruction at the current position in the memory
|
| - * segment.
|
| - */
|
| -void NCRemainingMemoryAdvance(NCRemainingMemory* memory);
|
| -
|
| -/* Default error message for type of error. */
|
| -const char* NCRemainingMemoryErrorMessage(NCRemainingMemoryError error);
|
| -
|
| -/* Default memory segment reader error function. Prints out
|
| - * string defined by NCRemainingMemoryErrorMessage to stdout.
|
| - */
|
| -void NCRemainingMemoryReportError(NCRemainingMemoryError error,
|
| - NCRemainingMemory* memory);
|
| -
|
| -/* The maximum number of bytes to be recognized as an instruction. */
|
| -#define MAX_INST_LENGTH 15
|
| -
|
| -/* Structure holding buffered bytes of a nacl instruction. This
|
| - * structure is filled as the memory segment is parsed to recognize
|
| - * the current instruction.
|
| - */
|
| -typedef struct NCInstBytes {
|
| - /* The sequence of bytes defining the instruction. */
|
| - uint8_t byte[MAX_INST_LENGTH];
|
| - /* The number of bytes (in buffer) defining the instruction. */
|
| - uint8_t length;
|
| - /* The memory associated with the bytes. Used to report
|
| - * buffer overflows through the corresponding error function.
|
| - */
|
| - NCRemainingMemory* memory;
|
| -} NCInstBytes;
|
| -
|
| -/* Associate memory with the corresponding instruction bytes. */
|
| -void NCInstBytesInitMemory(NCInstBytes* bytes, NCRemainingMemory* memory);
|
| -
|
| -/* Resets bytes back to the beginning of the current instruction. */
|
| -void NCInstBytesReset(NCInstBytes* bytes);
|
| -
|
| -/* Initializes the instruction buffer as the empty buffer, and
|
| - * advances the memory segment so that one is beginning the
|
| - * parsing of the current instruction at the current position
|
| - * in the memory segment.
|
| - * Note: Assumes that NCInstBytesInitMemory has already been called to associate
|
| - * memory.
|
| - */
|
| -void NCInstBytesInit(NCInstBytes* bytes);
|
| -
|
| -/* Peek ahead and return the nth (zero based) byte from the current position
|
| - * in the sequence of bytes being parsed.
|
| - */
|
| -uint8_t NCInstBytesPeek(NCInstBytes* bytes, ssize_t n);
|
| -
|
| -/* Peek at the nth character in the sequence of bytes being parsed (independent
|
| - * of the current position).
|
| - */
|
| -uint8_t NCInstByte(NCInstBytes* bytes, ssize_t n);
|
| -
|
| -/* Reads a byte from the memory segment and adds it to the instruction buffer.
|
| - * Returns the read byte.
|
| - * Note: Assumes that NCInstBytesInitMemory has already been called to associate
|
| - * memory.
|
| - */
|
| -uint8_t NCInstBytesRead(NCInstBytes* bytes);
|
| -
|
| -/* Reads n bytes from the memory segment and adds it to the instruction buffer.
|
| - * Note: Assumes that NCInstBytesInitMemory has already been called to associate
|
| - * memory.
|
| - */
|
| -void NCInstBytesReadBytes(ssize_t n, NCInstBytes* bytes);
|
| -
|
| -/* Structure holding pointer into bufferred bytes of a parsed instruction. */
|
| -typedef struct NCInstBytesPtr {
|
| - /* The bytes the pointer is in. */
|
| - const NCInstBytes* bytes;
|
| - /* The index into bytes associated with the pointer. */
|
| - uint8_t pos;
|
| -} NCInstBytesPtr;
|
| -
|
| -/* Initializes the instruction bytes pointer to the given index in
|
| - * the buffered bytes of a nacl instruction.
|
| - */
|
| -void NCInstBytesPtrInit(NCInstBytesPtr* ptr, const NCInstBytes* bytes);
|
| -
|
| -/* Initializes the instruction bytes pointer to the position of base, advanced
|
| - * the given number of positions.
|
| - */
|
| -void NCInstBytesPtrInitInc(NCInstBytesPtr* ptr, const NCInstBytesPtr* base,
|
| - int pos);
|
| -
|
| -/* Returns the index position of the given bytes ptr in the instruction
|
| - * bytes.
|
| - */
|
| -uint8_t NCInstBytesPos(const NCInstBytesPtr* ptr);
|
| -
|
| -/* Sign extends the given number of bytes, generating a corresponding 32-bit
|
| - * integer. Valid values for num_bytes is 1, 2, and 4.
|
| - */
|
| -int32_t NCInstBytesInt32(const NCInstBytesPtr* ptr, int num_bytes);
|
| -
|
| -/* Sign extends the given number of bytes, generating a corresponding 64-bit
|
| - * integer. Valid values for num_bytes is 1, 2, 4, and 8.
|
| - */
|
| -int64_t NCInstBytesInt64(const NCInstBytesPtr* ptr, int num_bytes);
|
| -
|
| -/* Returns the indexed byte pointed to by the instruction buffer pointer. */
|
| -uint8_t NCInstBytesByte(const NCInstBytesPtr* ptr, int n);
|
| -
|
| -/* Advances the instruction buffer pointer by the number of bytes. */
|
| -void NCInstBytesAdvance(NCInstBytesPtr* ptr, int n);
|
| -
|
| -/* Returns the number of bytes left in the instruction buffer, based
|
| - * on the pointer postiion.
|
| - */
|
| -int NCInstBytesLength(const NCInstBytesPtr* ptr);
|
| -
|
| -EXTERN_C_END
|
| -
|
| -#endif /* NATIVE_CLIENT_SRC_TRUSTED_VALIDATOR_X86_NCINSTBUFFER_H_ */
|
|
|