gdb/
[deliverable/binutils-gdb.git] / gdb / wrapper.c
... / ...
CommitLineData
1/* Longjump free calls to GDB internal routines.
2
3 Copyright (C) 1999, 2000, 2005, 2007, 2008, 2009
4 Free Software Foundation, Inc.
5
6 This program is free software; you can redistribute it and/or modify
7 it under the terms of the GNU General Public License as published by
8 the Free Software Foundation; either version 3 of the License, or
9 (at your option) any later version.
10
11 This program is distributed in the hope that it will be useful,
12 but WITHOUT ANY WARRANTY; without even the implied warranty of
13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 GNU General Public License for more details.
15
16 You should have received a copy of the GNU General Public License
17 along with this program. If not, see <http://www.gnu.org/licenses/>. */
18
19#include "defs.h"
20#include "value.h"
21#include "exceptions.h"
22#include "wrapper.h"
23#include "ui-out.h"
24
25int
26gdb_parse_exp_1 (char **stringptr, struct block *block, int comma,
27 struct expression **expression)
28{
29 volatile struct gdb_exception except;
30
31 TRY_CATCH (except, RETURN_MASK_ERROR)
32 {
33 *expression = parse_exp_1 (stringptr, block, comma);
34 }
35
36 if (except.reason < 0)
37 return 0;
38 return 1;
39}
40
41int
42gdb_evaluate_expression (struct expression *exp, struct value **value)
43{
44 volatile struct gdb_exception except;
45
46 TRY_CATCH (except, RETURN_MASK_ERROR)
47 {
48 *value = evaluate_expression(exp);
49 }
50
51 if (except.reason < 0)
52 return 0;
53 return 1;
54}
55
56int
57gdb_value_fetch_lazy (struct value *val)
58{
59 volatile struct gdb_exception except;
60
61 TRY_CATCH (except, RETURN_MASK_ERROR)
62 {
63 value_fetch_lazy (val);
64 }
65
66 if (except.reason < 0)
67 return 0;
68 return 1;
69}
70
71int
72gdb_value_equal (struct value *val1, struct value *val2, int *result)
73{
74 volatile struct gdb_exception except;
75
76 TRY_CATCH (except, RETURN_MASK_ERROR)
77 {
78 *result = value_equal (val1, val2);
79 }
80
81 if (except.reason < 0)
82 return 0;
83 return 1;
84}
85
86int
87gdb_value_assign (struct value *val1, struct value *val2,
88 struct value **result)
89{
90 volatile struct gdb_exception except;
91
92 TRY_CATCH (except, RETURN_MASK_ERROR)
93 {
94 *result = value_assign (val1, val2);
95 }
96
97 if (except.reason < 0)
98 return 0;
99 return 1;
100}
101
102int
103gdb_value_subscript (struct value *val, LONGEST index,
104 struct value **result)
105{
106 volatile struct gdb_exception except;
107
108 TRY_CATCH (except, RETURN_MASK_ERROR)
109 {
110 *result = value_subscript (val, index);
111 }
112
113 if (except.reason < 0)
114 return 0;
115 return 1;
116}
117
118int
119gdb_value_ind (struct value *val, struct value **result)
120{
121 volatile struct gdb_exception except;
122
123 TRY_CATCH (except, RETURN_MASK_ERROR)
124 {
125 *result = value_ind (val);
126 }
127
128 if (except.reason < 0)
129 return 0;
130 return 1;
131}
132
133int
134gdb_parse_and_eval_type (char *p, int length, struct type **type)
135{
136 volatile struct gdb_exception except;
137
138 TRY_CATCH (except, RETURN_MASK_ERROR)
139 {
140 *type = parse_and_eval_type (p, length);
141 }
142
143 if (except.reason < 0)
144 return 0;
145 return 1;
146}
147
148enum gdb_rc
149gdb_value_struct_elt (struct ui_out *uiout, struct value **result,
150 struct value **argp, struct value **args, char *name,
151 int *static_memfuncp, char *err)
152{
153 volatile struct gdb_exception except;
154
155 TRY_CATCH (except, RETURN_MASK_ERROR)
156 {
157 *result = value_struct_elt (argp, args, name, static_memfuncp, err);
158 }
159
160 if (except.reason < 0)
161 return GDB_RC_FAIL;
162 return GDB_RC_OK;
163}
This page took 0.022521 seconds and 4 git commands to generate.