Index: sandbox/linux/seccomp-bpf/codegen.h |
diff --git a/sandbox/linux/seccomp-bpf/codegen.h b/sandbox/linux/seccomp-bpf/codegen.h |
index 88521c2b52dd20fa303cb46ea0a6aca4594e9634..6ef76037e2899541a63c00799220d03dcaba559d 100644 |
--- a/sandbox/linux/seccomp-bpf/codegen.h |
+++ b/sandbox/linux/seccomp-bpf/codegen.h |
@@ -13,14 +13,13 @@ |
#include "sandbox/linux/seccomp-bpf/instruction.h" |
#include "sandbox/linux/seccomp-bpf/sandbox_bpf.h" |
- |
namespace playground2 { |
-typedef std::vector<Instruction *> Instructions; |
-typedef std::vector<BasicBlock *> BasicBlocks; |
-typedef std::map<const Instruction *, int> BranchTargets; |
-typedef std::map<const Instruction *, BasicBlock *> TargetsToBlocks; |
-typedef std::map<const BasicBlock *, int> IncomingBranches; |
+typedef std::vector<Instruction*> Instructions; |
+typedef std::vector<BasicBlock*> BasicBlocks; |
+typedef std::map<const Instruction*, int> BranchTargets; |
+typedef std::map<const Instruction*, BasicBlock*> TargetsToBlocks; |
+typedef std::map<const BasicBlock*, int> IncomingBranches; |
// The code generator instantiates a basic compiler that can convert a |
// graph of BPF instructions into a well-formed stream of BPF instructions. |
@@ -66,16 +65,19 @@ class CodeGen { |
// are owned by the CodeGen object. They do not need to be explicitly |
// deleted. |
// For details on the possible parameters refer to <linux/filter.h> |
- Instruction *MakeInstruction(uint16_t code, uint32_t k, |
- Instruction *next = NULL); |
- Instruction *MakeInstruction(uint16_t code, const ErrorCode& err); |
- Instruction *MakeInstruction(uint16_t code, uint32_t k, |
- Instruction *jt, Instruction *jf); |
+ Instruction* MakeInstruction(uint16_t code, |
+ uint32_t k, |
+ Instruction* next = NULL); |
+ Instruction* MakeInstruction(uint16_t code, const ErrorCode& err); |
+ Instruction* MakeInstruction(uint16_t code, |
+ uint32_t k, |
+ Instruction* jt, |
+ Instruction* jf); |
// Join two (sequences of) instructions. This is useful, if the "next" |
// parameter had not originally been given in the call to MakeInstruction(), |
// or if a (conditional) jump still has an unsatisfied target. |
- void JoinInstructions(Instruction *head, Instruction *tail); |
+ void JoinInstructions(Instruction* head, Instruction* tail); |
// Traverse the graph of instructions and visit each instruction once. |
// Traversal order is implementation-defined. It is acceptable to make |
@@ -83,68 +85,69 @@ class CodeGen { |
// do not affect traversal. |
// The "fnc" function gets called with both the instruction and the opaque |
// "aux" pointer. |
- void Traverse(Instruction *, void (*fnc)(Instruction *, void *aux), |
- void *aux); |
+ void Traverse(Instruction*, void (*fnc)(Instruction*, void* aux), void* aux); |
// Compiles the graph of instructions into a BPF program that can be passed |
// to the kernel. Please note that this function modifies the graph in place |
// and must therefore only be called once per graph. |
- void Compile(Instruction *instructions, Sandbox::Program *program); |
+ void Compile(Instruction* instructions, Sandbox::Program* program); |
private: |
friend class CodeGenUnittestHelper; |
// Find all the instructions that are the target of BPF_JMPs. |
void FindBranchTargets(const Instruction& instructions, |
- BranchTargets *branch_targets); |
+ BranchTargets* branch_targets); |
// Combine instructions between "head" and "tail" into a new basic block. |
// Basic blocks are defined as sequences of instructions whose only branch |
// target is the very first instruction; furthermore, any BPF_JMP or BPF_RET |
// instruction must be at the very end of the basic block. |
- BasicBlock *MakeBasicBlock(Instruction *head, Instruction *tail); |
+ BasicBlock* MakeBasicBlock(Instruction* head, Instruction* tail); |
// Creates a basic block and adds it to "basic_blocks"; sets "first_block" |
// if it is still NULL. |
- void AddBasicBlock(Instruction *head, Instruction *tail, |
+ void AddBasicBlock(Instruction* head, |
+ Instruction* tail, |
const BranchTargets& branch_targets, |
- TargetsToBlocks *basic_blocks, BasicBlock **first_block); |
+ TargetsToBlocks* basic_blocks, |
+ BasicBlock** first_block); |
// Cuts the DAG of instructions into basic blocks. |
- BasicBlock *CutGraphIntoBasicBlocks(Instruction *instructions, |
+ BasicBlock* CutGraphIntoBasicBlocks(Instruction* instructions, |
const BranchTargets& branch_targets, |
- TargetsToBlocks *blocks); |
+ TargetsToBlocks* blocks); |
// Find common tail sequences of basic blocks and coalesce them. |
- void MergeTails(TargetsToBlocks *blocks); |
+ void MergeTails(TargetsToBlocks* blocks); |
// For each basic block, compute the number of incoming branches. |
- void ComputeIncomingBranches(BasicBlock *block, |
+ void ComputeIncomingBranches(BasicBlock* block, |
const TargetsToBlocks& targets_to_blocks, |
- IncomingBranches *incoming_branches); |
+ IncomingBranches* incoming_branches); |
// Topologically sort the basic blocks so that all jumps are forward jumps. |
// This is a requirement for any well-formed BPF program. |
- void TopoSortBasicBlocks(BasicBlock *first_block, |
+ void TopoSortBasicBlocks(BasicBlock* first_block, |
const TargetsToBlocks& blocks, |
- BasicBlocks *basic_blocks); |
+ BasicBlocks* basic_blocks); |
// Convert jt_ptr_ and jf_ptr_ fields in BPF_JMP instructions to valid |
// jt_ and jf_ jump offsets. This can result in BPF_JA instructions being |
// inserted, if we need to jump over more than 256 instructions. |
- void ComputeRelativeJumps(BasicBlocks *basic_blocks, |
+ void ComputeRelativeJumps(BasicBlocks* basic_blocks, |
const TargetsToBlocks& targets_to_blocks); |
// Concatenate instructions from all basic blocks into a BPF program that |
// can be passed to the kernel. |
- void ConcatenateBasicBlocks(const BasicBlocks&, Sandbox::Program *program); |
+ void ConcatenateBasicBlocks(const BasicBlocks&, Sandbox::Program* program); |
// We stick all instructions and basic blocks into pools that get destroyed |
// when the CodeGen object is destroyed. This way, we neither need to worry |
// about explicitly managing ownership, nor do we need to worry about using |
// smart pointers in the presence of circular references. |
Instructions instructions_; |
- BasicBlocks basic_blocks_; |
+ BasicBlocks basic_blocks_; |
// Compile() must only ever be called once as it makes destructive changes |
// to the DAG. |