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

Side by Side Diff: src/trusted/validator/x86/ncval_reg_sfi/nc_protect_base.h

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 unified diff | Download patch | Annotate | Revision Log
OLDNEW
(Empty)
1 /*
2 * Copyright (c) 2012 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 #ifndef NATIVE_CLIENT_SRC_TRUSTED_VALIDATOR_X86_NCVAL_REG_SFI_NC_PROTECT_BASE_H_ _
8 #define NATIVE_CLIENT_SRC_TRUSTED_VALIDATOR_X86_NCVAL_REG_SFI_NC_PROTECT_BASE_H_ _
9
10 #include "native_client/src/shared/utils/types.h"
11 #include "native_client/src/trusted/validator/x86/decoder/gen/ncopcode_operand_k ind.h"
12
13 /* nc_protect_base.h - For 64-bit mode, verifies that no instruction
14 * changes the value of the base register.
15 */
16
17 /*
18 * Note: The function BaseRegisterValidator is used as a validator
19 * function to be applied to a validated segment, as defined in
20 * ncvalidate_iter.h.
21 */
22
23 /* The model of a validator state. */
24 struct NaClValidatorState;
25
26 /* The state associated with a decoded instruction. */
27 struct NaClInstState;
28
29 /* Defines locals used by the NaClBaseRegisterValidator to
30 * record registers set in the current instruction, that are
31 * a problem if not used correctly in the next instruction.
32 */
33 typedef struct NaClRegisterLocals {
34 /* Points to an instruction that contains an assignment to register ESP,
35 * or NULL if the instruction doesn't set ESP. This is done so that we
36 * can check if the next instruction uses the value of ESP to update RSP
37 * (if not, we need to report that ESP is incorrectly assigned).
38 */
39 struct NaClInstState* esp_set_inst;
40 /* Points to the instruction that contains an assignment to register EBP,
41 * or NULL if the instruction doesn't set EBP. This is done so that we
42 * can check if the next instruciton uses the value of EBP to update RBP
43 * (if not, we need to report that EBP is incorrectly assigned).
44 */
45 struct NaClInstState* ebp_set_inst;
46 } NaClRegisterLocals;
47
48 /* Ths size of the circular buffer, used to keep track of registers
49 * assigned in the previous instruction, that must be correctly used
50 * in the current instruction, or reported as an error.
51 */
52 #define NACL_REGISTER_LOCALS_BUFFER_SIZE 2
53
54 /* A circular buffer of two elements, used to keep track of the
55 * current/previous instruction.
56 */
57 typedef struct NaClBaseRegisterLocals {
58 NaClRegisterLocals buffer[NACL_REGISTER_LOCALS_BUFFER_SIZE];
59 int previous_index;
60 int current_index;
61 } NaClBaseRegisterLocals;
62
63 /* Initializes memory to hold local information for validator
64 * NaClBaseRegisterValidator. Returns true if successful.
65 */
66 void NaClBaseRegisterMemoryInitialize(struct NaClValidatorState* state);
67
68 /* Validator function to check that the base register is never set. */
69 void NaClBaseRegisterValidator(struct NaClValidatorState* state);
70
71
72 /* Post iteration validator summarization function. */
73 void NaClBaseRegisterSummarize(struct NaClValidatorState* state);
74
75 /* Checks for pattern
76 * op %reg32), ...
77 * lea %reg64, [%reg64+%rbase*1]
78 *
79 * where reg64 is the passed 64-bit register, reg32 is the
80 * corresponding 32-bit register, and op is a 32-bit zero-extending
81 * operation (such as mov).
82 */
83 Bool NaClAcceptLeaWithMoveLea32To64(struct NaClValidatorState* state,
84 NaClOpKind reg);
85
86 #endif /* NATIVE_CLIENT_SRC_TRUSTED_VALIDATOR_X86_NCVAL_REG_SFI_NC_PROTECT_BASE _H__ */
OLDNEW
« no previous file with comments | « src/trusted/validator/x86/ncval_reg_sfi/nc_postconds.c ('k') | src/trusted/validator/x86/ncval_reg_sfi/nc_protect_base.c » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698