Proyectos de Subversion Iphone Microlearning

Rev

| Ultima modificación | Ver Log |

Rev Autor Línea Nro. Línea
1 efrain 1
// Copyright 2019 Google
2
//
3
// Licensed under the Apache License, Version 2.0 (the "License");
4
// you may not use this file except in compliance with the License.
5
// You may obtain a copy of the License at
6
//
7
//      http://www.apache.org/licenses/LICENSE-2.0
8
//
9
// Unless required by applicable law or agreed to in writing, software
10
// distributed under the License is distributed on an "AS IS" BASIS,
11
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
// See the License for the specific language governing permissions and
13
// limitations under the License.
14
 
15
#pragma once
16
 
17
#include <stdbool.h>
18
#include <stdint.h>
19
 
20
#include "Crashlytics/Crashlytics/Helpers/FIRCLSFeatures.h"
21
#include "Crashlytics/Crashlytics/Helpers/FIRCLSThreadState.h"
22
 
23
#define CLS_DWARF_EXPRESSION_STACK_SIZE (100)
24
 
25
#if CLS_DWARF_UNWINDING_SUPPORTED
26
 
27
typedef struct {
28
  intptr_t buffer[CLS_DWARF_EXPRESSION_STACK_SIZE];
29
  intptr_t *pointer;
30
} FIRCLSDwarfExpressionStack;
31
 
32
typedef struct {
33
  FIRCLSDwarfExpressionStack stack;
34
  const void *dataCursor;
35
  const void *endAddress;
36
  const FIRCLSThreadContext *registers;
37
} FIRCLSDwarfExpressionMachine;
38
 
39
void FIRCLSDwarfExpressionStackInit(FIRCLSDwarfExpressionStack *stack);
40
bool FIRCLSDwarfExpressionStackIsValid(FIRCLSDwarfExpressionStack *stack);
41
bool FIRCLSDwarfExpressionStackPush(FIRCLSDwarfExpressionStack *stack, intptr_t value);
42
intptr_t FIRCLSDwarfExpressionStackPeek(FIRCLSDwarfExpressionStack *stack);
43
intptr_t FIRCLSDwarfExpressionStackPop(FIRCLSDwarfExpressionStack *stack);
44
 
45
bool FIRCLSDwarfExpressionMachineInit(FIRCLSDwarfExpressionMachine *machine,
46
                                      const void *cursor,
47
                                      const FIRCLSThreadContext *registers,
48
                                      intptr_t stackValue);
49
bool FIRCLSDwarfExpressionMachinePrepareForExecution(FIRCLSDwarfExpressionMachine *machine);
50
bool FIRCLSDwarfExpressionMachineIsFinished(FIRCLSDwarfExpressionMachine *machine);
51
bool FIRCLSDwarfExpressionMachineGetResult(FIRCLSDwarfExpressionMachine *machine, intptr_t *result);
52
 
53
bool FIRCLSDwarfExpressionMachineExecuteNextOpcode(FIRCLSDwarfExpressionMachine *machine);
54
 
55
#endif