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

Unified Diff: src/trusted/validator/x86/ncinstbuffer_inl.c

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
« no previous file with comments | « src/trusted/validator/x86/ncinstbuffer.c ('k') | src/trusted/validator/x86/ncval_reg_sfi/README » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: src/trusted/validator/x86/ncinstbuffer_inl.c
diff --git a/src/trusted/validator/x86/ncinstbuffer_inl.c b/src/trusted/validator/x86/ncinstbuffer_inl.c
deleted file mode 100644
index 78b0019b0bacbbf222a8c6303a312d4c0da81971..0000000000000000000000000000000000000000
--- a/src/trusted/validator/x86/ncinstbuffer_inl.c
+++ /dev/null
@@ -1,209 +0,0 @@
-/*
- * Copyright (c) 2011 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-inl.h - Holds nline functions for commonly used (simple)
- * functions in ncinstbuffer.h. Used to speed up code. Inlineed routines
- * correspond to the following functions in ncinstbuffer.h, but with an
- * 'Inline' suffix:
- *
- * NCRemainingMemoryAdvance
- * NCRemainingMemoryReset
- * NCRemainingMemoryLookahead
- * NCRemainingMemoryRead
- * NCInstBytesPeek
- * NCInstByte
- * NCInstBytesRead
- * NCInstBytesReadBytes
- * NCInstBytesReset
- * NCInstBytesInit
- * NCInstBytesByte
- *
- * See ncinstbuffer.h for comments on how to use the corresponding inline
- * functions.
- */
-
-#ifndef NATIVE_CLIENT_SRC_TRUSTED_VALIDATOR_X86_NCINSTBUFFER_INL_C__
-#define NATIVE_CLIENT_SRC_TRUSTED_VALIDATOR_X86_NCINSTBUFFER_INL_C__
-
-#include "native_client/src/trusted/validator/x86/ncinstbuffer.h"
-
-/* Constant NCBUF_CLEAR_CACHE controls the behaviour of the buffer containing
- * the sequence of parsed bytes. Turn it on (1) to fill unused bytes with the
- * constant zero, and to allow access to all bytes in the sequence of parsed
- * bytes. Turn it off (0) to force access to only include the actual parsed
- * bytes.
- *
- * Note: Ideally, we would like to turn this feature off. However, the current
- * instruction parser (in ncdecode.c) and corresponding printer (in
- * ncdis_util.c) are problematic. The parser allows a partial match of
- * an instruction, without verifying that ALL necessary bytes are there. The
- * corresponding printer, assumes that only complete matches (during parsing)
- * were performed. The result is that the code sometimes assumes that many
- * more bytes were parsed than were actually parsed.
- *
- * To quickly fix the code so that it doesn't do illegal memory accesses, but
- * has consistent behaviour, the flag is currently sets NCBUF_CLEAR_CACHE to 1.
- *
- * To debug this problem, set the flag NCBUF_CLEAR_CACHE to 0.
- *
- * TODO(karl) Fix the parser/printer so that NCBUF_CLEAR_CACHE can be set to 0.
- */
-#define NCBUF_CLEAR_CACHE 1
-
-/* Defines the number of bytes in the buffer. */
-#if NCBUF_CLEAR_CACHE
-#define NCBUF_BYTES_LENGTH(bytes) MAX_INST_LENGTH
-#else
-#define NCBUF_BYTES_LENGTH(bytes) (bytes)->length
-#endif
-
-/* The constant to return if memory overflow occurs. */
-# define NC_MEMORY_OVERFLOW 0
-
-/* Returns the next byte in memory, or 0x00 if there are no more
- * bytes in memory.
- */
-static INLINE uint8_t NCRemainingMemoryPeekInline(NCRemainingMemory* memory) {
- return (memory->cur_pos >= memory->mlimit)
- ? NC_MEMORY_OVERFLOW : *(memory->cur_pos);
-}
-
-/* Starts a new instruction at the current position in the memory
- * segment.
- */
-static INLINE void NCRemainingMemoryAdvanceInline(NCRemainingMemory* memory) {
- memory->mpc = memory->cur_pos;
- memory->read_length = 0;
- memory->overflow_count = 0;
-}
-
-/* Moves back to the beginning of the current instruction in
- * the memory segment.
- */
-static INLINE void NCRemainingMemoryResetInline(NCRemainingMemory* memory) {
- memory->cur_pos = memory->mpc;
- memory->next_byte = NCRemainingMemoryPeekInline(memory);
- memory->read_length = 0;
- memory->overflow_count = 0;
-}
-
-/* Looks ahead N bytes into the memory, and returns the corresponding
- * byte, or 0x00 if at the end of memory. i is zero-based.
- */
-static INLINE uint8_t NCRemainingMemoryLookaheadInline(
- NCRemainingMemory* memory, ssize_t n) {
- if ((memory->cur_pos + n) < memory->mlimit) {
- return memory->cur_pos[n];
- } else {
- return NC_MEMORY_OVERFLOW;
- }
-}
-
-/* Reads and returns the next byte in the memory segment. Returns 0x00 if at
- * the end of the memory segment.
- */
-static INLINE uint8_t NCRemainingMemoryReadInline(NCRemainingMemory* memory) {
- uint8_t byte = memory->next_byte;
- if (memory->cur_pos == memory->mlimit) {
- /* If reached, next_byte already set to 0 by last read. */
- if (0 == memory->overflow_count) {
- memory->error_fn(NCRemainingMemoryOverflow, memory);
- }
- memory->overflow_count++;
- } else {
- memory->read_length++;
- memory->cur_pos++;
- memory->next_byte = NCRemainingMemoryPeekInline(memory);
- }
- return byte;
-}
-
-/* Peek ahead and return the nth (zero based) byte from the current position
- * in the sequence of bytes being parsed.
- */
-static INLINE uint8_t NCInstBytesPeekInline(NCInstBytes* bytes, ssize_t n) {
- return NCRemainingMemoryLookaheadInline(bytes->memory, n);
-}
-
-/* Peek at the nth character in the sequence of bytes being parsed (independent
- * of the current position).
- */
-static INLINE uint8_t NCInstByteInline(NCInstBytes* bytes, ssize_t n) {
- if (n < bytes->length) {
- return bytes->byte[n];
- } else {
- return NCRemainingMemoryLookaheadInline(bytes->memory, n - bytes->length);
- }
-}
-
-/* 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.
- */
-static INLINE uint8_t NCInstBytesReadInline(NCInstBytes* bytes) {
- uint8_t byte = NCRemainingMemoryReadInline(bytes->memory);
- if (bytes->length < MAX_INST_LENGTH) {
- bytes->byte[bytes->length++] = byte;
- } else {
- bytes->memory->error_fn(NCInstBufferOverflow, bytes->memory);
- }
- return byte;
-}
-
-/* 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.
- */
-static INLINE void NCInstBytesReadBytesInline(ssize_t n, NCInstBytes* bytes) {
- ssize_t i;
- for (i = 0; i < n; ++i) {
- NCInstBytesReadInline(bytes);
- }
-}
-
-/* Resets bytes back to the beginning of the current instruction. */
-static INLINE void NCInstBytesResetInline(NCInstBytes* buffer) {
-#if NCBUF_CLEAR_CACHE
- int i;
- for (i = 0; i < MAX_INST_LENGTH; ++i) {
- buffer->byte[i] = 0;
- }
-#endif
- NCRemainingMemoryResetInline(buffer->memory);
- buffer->length = 0;
-}
-
-/* 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.
- */
-static INLINE void NCInstBytesInitInline(NCInstBytes* buffer) {
-#if NCBUF_CLEAR_CACHE
- int i;
- for (i = 0; i < MAX_INST_LENGTH; ++i) {
- buffer->byte[i] = 0;
- }
-#endif
- NCRemainingMemoryAdvanceInline(buffer->memory);
- buffer->length = 0;
-}
-
-/* Returns the indexed byte pointed to by the instruction buffer pointer. */
-static INLINE uint8_t NCInstBytesByteInline(const NCInstBytesPtr* ptr, int n) {
- int index = ptr->pos + n;
- if (index < NCBUF_BYTES_LENGTH(ptr->bytes)) {
- return ptr->bytes->byte[index];
- } else {
- ptr->bytes->memory->error_fn(NCInstBufferOverflow, ptr->bytes->memory);
- return 0;
- }
-}
-
-#endif /* NATIVE_CLIENT_SRC_TRUSTED_VALIDATOR_X86_NCINSTBUFFER_INL_C__ */
« no previous file with comments | « src/trusted/validator/x86/ncinstbuffer.c ('k') | src/trusted/validator/x86/ncval_reg_sfi/README » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698