OpenCores
URL https://opencores.org/ocsvn/open8_urisc/open8_urisc/trunk

Subversion Repositories open8_urisc

[/] [open8_urisc/] [trunk/] [gnu/] [binutils/] [gas/] [dw2gencfi.h] - Blame information for rev 218

Go to most recent revision | Details | Compare with Previous | View Log

Line No. Rev Author Line
1 147 khays
/* dw2gencfi.h - Support for generating Dwarf2 CFI information.
2
   Copyright 2003, 2004, 2005, 2007, 2009 Free Software Foundation, Inc.
3
   Contributed by Michal Ludvig <mludvig@suse.cz>
4
 
5
   This file is part of GAS, the GNU Assembler.
6
 
7
   GAS is free software; you can redistribute it and/or modify
8
   it under the terms of the GNU General Public License as published by
9
   the Free Software Foundation; either version 3, or (at your option)
10
   any later version.
11
 
12
   GAS is distributed in the hope that it will be useful,
13
   but WITHOUT ANY WARRANTY; without even the implied warranty of
14
   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
15
   GNU General Public License for more details.
16
 
17
   You should have received a copy of the GNU General Public License
18
   along with GAS; see the file COPYING.  If not, write to the Free
19
   Software Foundation, 51 Franklin Street - Fifth Floor, Boston, MA
20
   02110-1301, USA.  */
21
 
22
#ifndef DW2GENCFI_H
23
#define DW2GENCFI_H
24
 
25
#include "dwarf2.h"
26
 
27
struct symbol;
28
 
29
extern const pseudo_typeS cfi_pseudo_table[];
30
 
31
/* cfi_finish() is called at the end of file. It will complain if
32
   the last CFI wasn't properly closed by .cfi_endproc.  */
33
extern void cfi_finish (void);
34
 
35
/* Entry points for backends to add unwind information.  */
36
extern void cfi_new_fde (struct symbol *);
37
extern void cfi_end_fde (struct symbol *);
38
extern void cfi_set_return_column (unsigned);
39
extern void cfi_add_advance_loc (struct symbol *);
40
 
41
extern void cfi_add_CFA_offset (unsigned, offsetT);
42
extern void cfi_add_CFA_def_cfa (unsigned, offsetT);
43
extern void cfi_add_CFA_register (unsigned, unsigned);
44
extern void cfi_add_CFA_def_cfa_register (unsigned);
45
extern void cfi_add_CFA_def_cfa_offset (offsetT);
46
extern void cfi_add_CFA_restore (unsigned);
47
extern void cfi_add_CFA_undefined (unsigned);
48
extern void cfi_add_CFA_same_value (unsigned);
49
extern void cfi_add_CFA_remember_state (void);
50
extern void cfi_add_CFA_restore_state (void);
51
 
52
/* Structures for md_cfi_end.  */
53
 
54
#if defined (TE_PE) || defined (TE_PEP)
55
#define SUPPORT_FRAME_LINKONCE 1
56
#else
57
#define SUPPORT_FRAME_LINKONCE 0
58
#endif
59
 
60
struct cfi_insn_data
61
{
62
  struct cfi_insn_data *next;
63
#if SUPPORT_FRAME_LINKONCE
64
  segT cur_seg;
65
#endif
66
  int insn;
67
  union
68
  {
69
    struct
70
    {
71
      unsigned reg;
72
      offsetT offset;
73
    } ri;
74
 
75
    struct
76
    {
77
      unsigned reg1;
78
      unsigned reg2;
79
    } rr;
80
 
81
    unsigned r;
82
    offsetT i;
83
 
84
    struct
85
    {
86
      symbolS *lab1;
87
      symbolS *lab2;
88
    } ll;
89
 
90
    struct cfi_escape_data *esc;
91
 
92
    struct
93
    {
94
      unsigned reg, encoding;
95
      expressionS exp;
96
    } ea;
97
  } u;
98
};
99
 
100
struct fde_entry
101
{
102
  struct fde_entry *next;
103
#if SUPPORT_FRAME_LINKONCE
104
  segT cur_seg;
105
#endif
106
  symbolS *start_address;
107
  symbolS *end_address;
108
  struct cfi_insn_data *data;
109
  struct cfi_insn_data **last;
110
  unsigned char per_encoding;
111
  unsigned char lsda_encoding;
112
  expressionS personality;
113
  expressionS lsda;
114
  unsigned int return_column;
115
  unsigned int signal_frame;
116
#if SUPPORT_FRAME_LINKONCE
117
  int handled;
118
#endif
119
};
120
 
121 160 khays
/* The list of all FDEs that have been collected.  */
122
extern struct fde_entry *all_fde_data;
123
 
124 147 khays
/* Fake CFI type; outside the byte range of any real CFI insn.  */
125
#define CFI_adjust_cfa_offset   0x100
126
#define CFI_return_column       0x101
127
#define CFI_rel_offset          0x102
128
#define CFI_escape              0x103
129
#define CFI_signal_frame        0x104
130
#define CFI_val_encoded_addr    0x105
131
 
132
#endif /* DW2GENCFI_H */

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.